设为首页收藏本站官方微博

建议 【Directx9游戏汉化 #9】来世(nextlife) 字幕显示函数

[复制链接]
查看: 323|回复: 0
打印 上一主题 下一主题

[建议] 【Directx9游戏汉化 #9】来世(nextlife) 字幕显示函数

跳转到指定楼层
楼主
发表于 2023-8-27 13:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

【Directx9游戏汉化 #9】来世(nextlife) 字幕显示函数

本帖最后由 shane007 于 2023-8-27 13:23 编辑 6 l) b2 I7 g, O) D6 |
6 s' i5 D9 [7 C" v1 S+ g9 `
本游戏采用了CEGUI,该组件能采用directx和opengl。
: a( m; t- w' \0 T经过我的小方块测试,游戏屏幕显示了小方块,因此确认是directx9的游戏。
* A( D8 }! ?2 `# v* \  `游戏自带一个EngineSetup.exe程序,设置为窗口模式后就能用cheatengine调式。: W  I* A% d' u, K2 F- {
(由于游戏窗口较大,我将游戏屏幕和cheatengine分别显示到2个显示器上即可。)
" \3 D$ e2 S4 v" {% a$ }& u) a8 @/ K2 ?' _1 ^# y7 [
7 z2 x8 h+ R8 X: j! Y
在游戏中找一个字幕,在以下地方断下。
9 x* c; P5 F* Z- s! `由于该游戏基本都是显示在屏幕固定位置(上或者下,居中),
0 `- {9 A& v, p' r) l7 r. Y; e3 Q( M因此暂时认为此处就是游戏的字幕函数,该函数被20处左右地方调用。
4 J( @5 [$ s2 U7 X9 a6 c+ u
3 m* a/ R( J& t' j, U
  1. NextLife.exe+11C5 - 42                    - inc edx
    " j6 x/ r, A0 C; Q0 n
  2. 004011C5
复制代码

4 E- E: w& h! D! \3 [+ G
8 U3 d  Y  Z  K1 C4 ]7 ^( k6 ]该地方的伪代码
. \7 X4 F( [2 W% _& u
  1. void __thiscall sub_401160(char **this, const char *a2)
    / m8 |. g" v+ p
  2. {
    4 p# Z( x, e( A$ K7 B9 ^; C
  3.   char **v2; // esi; B+ v& g4 {% t* p; Q# X5 W% N
  4.   char *v3; // eax2 l3 n4 E8 p& U! @+ q. \! G4 {
  5.   char *v4; // eax
    + f, r: P8 [( c- A, y

  6. 4 p: M( N8 @7 y, G# {9 k5 o  m
  7.   v2 = this;8 J$ I% A5 o3 b$ J3 b1 B7 C( T# A
  8.   if ( a2 )6 ?; D4 g, Z. B
  9.   {4 x. ^/ p6 J7 C5 U$ V0 H
  10.     v3 = *this;' R) H1 }6 w/ D4 F% J0 W
  11.     if ( a2 != *this )' ]5 r' T  d% T0 A$ Z3 P3 d
  12.     {
    $ I5 B, s, K: I: m% p  s0 J# O' G
  13.       if ( *a2 )
    ) ~+ r& A# `. d  U+ Y& z
  14.       {
    7 n0 m9 A5 R- q. k/ V" ?
  15.         sub_401030(strlen(a2));/ g0 ^4 j9 t4 O/ e
  16.         strcpy(*v2, a2);
    & ~, R% j( i! P$ p* f
  17.       }" R) D0 ~3 [. A1 N- O* h
  18.       else+ [  b' M2 y5 u- h# q' U  w6 \
  19.       {' d& U2 y) m/ z& I; M* I6 O& X
  20.         this[1] = (char *)1;5 Z5 i7 w% w  R3 @; G
  21.         if ( v3 )* z! o) n9 W$ p) V2 T" M$ t
  22.           operator delete[](v3);- J7 T. S( j6 f# `; _1 H
  23.         v4 = (char *)operator new(6u);: @1 y/ C8 P* W# {$ X, N3 I0 h
  24.         *v2 = v4;
    2 i! U% m9 ^& D9 |% p& F" t' u1 V
  25.         *(_DWORD *)v4 = 0;; F7 `  G- {) q
  26.       }
    # Y6 v- W. A2 D: ~8 [) M, a
  27.     }* V  e8 ^) ]5 U* I& R+ O0 ]
  28.   }
    % M2 P' W6 u+ ?' L: P/ q" ]0 M  |
  29. }
复制代码
8 w" M  E" j/ L* I3 d
汇编代码/ ^1 `- o: C5 p6 Q) p# S# E
  1. .text:004010F06 ~5 a( F2 \3 x3 K( W
  2. .text:004010F0 ; =============== S U B R O U T I N E =======================================
    % g  C0 `' G' w; J7 E8 u
  3. .text:004010F0
    : V( Z1 c) W5 C8 A0 r" f
  4. .text:004010F0
    $ H% `6 Z6 \/ v. B
  5. .text:004010F0 sub_4010F0      proc near               ; CODE XREF: _main+139↓p+ I9 K+ s  @; t, K5 D8 [
  6. .text:004010F0                                         ; sub_403240+97E↓p ...; F: u; h/ s- p$ x7 }0 B, V. \1 M
  7. .text:004010F0
    ; J: d% h& X) w% r/ }% i. s4 U
  8. .text:004010F0 arg_0           = dword ptr  4
    - n# k; r$ [$ n' w
  9. .text:004010F0% S& G9 o7 }8 W% v; u  T. G
  10. .text:004010F0                 mov     eax, [ecx]) l8 R5 u& N8 q
  11. .text:004010F2                 test    eax, eax  \" P" c" k3 U: U0 G( j
  12. .text:004010F4                 mov     edx, [esp+arg_0]/ W/ J8 l$ |  E
  13. .text:004010F8                 jz      short loc_4011475 }- L+ Y5 D% j2 k! i
  14. .text:004010FA                 test    edx, edx
    4 N$ h6 _3 U- o4 h9 t6 B
  15. .text:004010FC                 jz      short loc_401147- `  W0 `  b. Y. M7 ]
  16. .text:004010FE                 mov     cl, [eax]$ {% a" P0 Q8 a( z* V
  17. .text:00401100                 test    cl, cl8 E# b" ^: q$ s7 X' b+ U3 A$ S. r/ {3 X7 W
  18. .text:00401102                 jnz     short loc_401116& I! f* _0 ?& S. L. E7 v$ |# a. i
  19. .text:00401104                 cmp     byte ptr [edx], 0
    : ?  f0 a, _/ p6 O, ?3 s5 H3 k
  20. .text:00401107                 setz    al
    , q, P6 \, V/ K/ r
  21. .text:0040110A                 xor     edx, edx  ^# e; f' k( h. |1 H
  22. .text:0040110C                 test    al, al
    % c5 m! t; Y9 f' z( L1 T
  23. .text:0040110E                 setz    dl' y' L1 x/ K4 |6 Y% e
  24. .text:00401111                 mov     al, dl
    . V4 \' }( B% h
  25. .text:00401113                 retn    4
    . P! `; ]/ l4 I; K
  26. .text:00401116 ; ---------------------------------------------------------------------------2 a) \5 x3 ]7 Z# W+ k+ f
  27. .text:00401116  T. g8 v$ F8 I# X9 G! O
  28. .text:00401116 loc_401116:                             ; CODE XREF: sub_4010F0+12↑j9 N9 k+ L' }1 \7 L
  29. .text:00401116                 cmp     byte ptr [edx], 0$ `4 _( A' K: @  B/ e
  30. .text:00401119                 jz      short loc_401147; a; V. ^3 v+ _  `3 m7 R8 d
  31. .text:0040111B                 jmp     short loc_401120
    : ]8 S  F8 X1 T# Y* Y6 T4 c
  32. .text:0040111B ; ---------------------------------------------------------------------------
    * H' w# c0 G+ h
  33. .text:0040111D                 align 10h
    1 _! B* l; B8 N0 E
  34. .text:00401120$ V7 O7 O6 |$ i
  35. .text:00401120 loc_401120:                             ; CODE XREF: sub_4010F0+2B↑j
    & p1 [) g' C& l6 K; }4 j
  36. .text:00401120                                         ; sub_4010F0+3B↓j
      z1 [8 d; H4 {  U1 ]/ [  v
  37. .text:00401120                 cmp     cl, [edx]! T3 Q* p: S1 N
  38. .text:00401122                 jnz     short loc_40112D
    % l4 ~0 `" s' E4 X$ b
  39. .text:00401124                 mov     cl, [eax+1]& N! w! j0 t  A3 h5 h
  40. .text:00401127                 inc     eax; f  Y" a3 ]4 w& w: S  L
  41. .text:00401128                 inc     edx
    - S; J: M1 {& t' H# q: \% G
  42. .text:00401129                 test    cl, cl, F$ o% N- m- S4 J
  43. .text:0040112B                 jnz     short loc_401120
    : F, e! y' n) p
  44. .text:0040112D
    7 m, y8 y2 q) a
  45. .text:0040112D loc_40112D:                             ; CODE XREF: sub_4010F0+32↑j
    * u4 _0 ^' ?; P" [  q+ Y' D1 K+ r
  46. .text:0040112D                 movzx   eax, byte ptr [eax]  E( |0 g6 T! i1 @" J; u% T* t
  47. .text:00401130                 movzx   ecx, byte ptr [edx]$ x6 K9 {% {9 U, A$ _3 ~+ b# `, Y
  48. .text:00401133                 sub     eax, ecx
    5 ]1 Q3 P- I* f* W0 g6 Z$ G4 L
  49. .text:00401135                 neg     eax& ]3 c0 _+ d3 u: d! D6 @; a
  50. .text:00401137                 sbb     al, al
    ( _$ |7 W+ ?6 p6 ?5 f+ k3 [/ Y! u) h
  51. .text:00401139                 inc     al5 ~: V. l4 o$ H- a. i
  52. .text:0040113B                 xor     edx, edx
    5 F8 \6 [9 U" b  n0 N8 f& z
  53. .text:0040113D                 test    al, al" b- n; V) q: T! H" Z0 g
  54. .text:0040113F                 setz    dl
      Z! x  X' t! N, V
  55. .text:00401142                 mov     al, dl
    - C* b6 A2 _& b, @! D
  56. .text:00401144                 retn    47 k5 A* d8 ~4 q
  57. .text:00401147 ; ---------------------------------------------------------------------------1 k6 s7 L+ c7 E7 x9 K
  58. .text:00401147
    6 b8 j7 Y& O3 \' b8 C: m/ x
  59. .text:00401147 loc_401147:                             ; CODE XREF: sub_4010F0+8↑j
    . v- a! G8 P9 u) a7 m  b2 M6 d
  60. .text:00401147                                         ; sub_4010F0+C↑j ..., O. Y) w: H% L6 ]/ \
  61. .text:00401147                 xor     al, al' |9 u4 F, [8 N6 ^; c* x8 r3 g
  62. .text:00401149                 xor     edx, edx0 Y1 `4 f0 a2 G  C* r. Q
  63. .text:0040114B                 test    al, al$ U; v2 t/ ^& m: f$ p
  64. .text:0040114D                 setz    dl# u# O1 r- P! k8 }
  65. .text:00401150                 mov     al, dl
    + w8 R7 N5 j/ I& c. j& s0 g( R& ]7 n, I
  66. .text:00401152                 retn    4
    # K9 i$ z8 z2 u
  67. .text:00401152 sub_4010F0      endp8 Q( \) R; y, m5 d( a1 b% o
  68. .text:00401152
    0 I( f# _5 H  K, f
  69. .text:00401152 ; ---------------------------------------------------------------------------7 ~1 M6 J( D5 c9 f% l7 G+ M
  70. .text:00401155                 align 10h! Q* S" `) F1 {2 I5 b
  71. .text:00401160
      b8 a0 g  `# `
  72. .text:00401160 ; =============== S U B R O U T I N E =======================================9 s; |0 X4 i5 J: A& K  ?7 z* ^
  73. .text:004011601 J( G# b+ |/ r0 X  v5 }8 J
  74. .text:004011603 A9 G. U2 n3 c7 }
  75. .text:00401160 sub_401160      proc near               ; CODE XREF: sub_4013D0+15↓p6 g2 N" O3 c0 Y$ o
  76. .text:00401160                                         ; sub_4013F0+C↓p ...
    % [6 ]% L- G3 o4 D" z
  77. .text:00401160
    0 e* ]! m3 C6 L5 S* I. N1 p7 ?
  78. .text:00401160 arg_0           = dword ptr  4
    % X# p5 e1 N& ^+ V' B
  79. .text:00401160
    1 A5 _4 R* @% [$ B
  80. .text:00401160                 push    esi
    . M6 ^8 y: K& B, t
  81. .text:00401161                 push    edi0 K2 B( n% G% y) A2 _4 i
  82. .text:00401162                 mov     edi, [esp+8+arg_0]" B" b# T; Z7 V% {" G0 C
  83. .text:00401166                 test    edi, edi
    5 C& {% k. a% |5 w
  84. .text:00401168                 mov     esi, ecx
    " e  l6 r4 {$ X3 B, V
  85. .text:0040116A                 jz      short loc_4011CA- b9 y, W) K. Q' V7 W$ D  L
  86. .text:0040116C                 mov     eax, [esi]( P9 f* d0 p9 k) y1 d
  87. .text:0040116E                 cmp     edi, eax* M2 x$ t3 Q* z8 b
  88. .text:00401170                 jz      short loc_4011CA' G7 o8 E7 ~8 S2 f
  89. .text:00401172                 cmp     byte ptr [edi], 0
    6 P6 u( p) ]& s$ p3 M* n) ?
  90. .text:00401175                 jnz     short loc_4011A23 t. A1 e5 g& I) d( c" M) |! Z+ z1 x
  91. .text:00401177                 test    eax, eax& A  j4 y4 n5 z
  92. .text:00401179                 mov     dword ptr [esi+4], 1
    * B# A+ J- Y2 d; K+ m6 r( o
  93. .text:00401180                 jz      short loc_40118B
    . s  m7 E4 ?( G, P
  94. .text:00401182                 push    eax             ; void *  @! t/ ]# o0 y7 f
  95. .text:00401183                 call    ??_V@YAXPAX@Z   ; operator delete[](void *)
    + g9 a1 R% P7 X
  96. .text:00401188                 add     esp, 4
    4 x1 g! a- N2 s0 M8 n1 n& u
  97. .text:0040118B, k7 t9 q0 Y6 V; y- d+ Z! ?
  98. .text:0040118B loc_40118B:                             ; CODE XREF: sub_401160+20↑j
    8 j# ^. s& [+ o2 s5 ]0 ?6 n
  99. .text:0040118B                 push    6               ; Size
    5 }3 r  ]; c: z. }* {& _
  100. .text:0040118D                 call    j_??2@YAPAXI@Z  ; operator new(uint). U; f9 h' P0 c$ w: K3 K
  101. .text:00401192                 add     esp, 4; G! v( d3 |' w; \
  102. .text:00401195                 mov     [esi], eax
    ( z! M& Q* K$ U$ f2 G; S
  103. .text:00401197                 pop     edi
    & c; P3 E) n/ `1 D
  104. .text:00401198                 mov     dword ptr [eax], 0
    4 _3 ~7 k8 n2 `0 a* i) w5 H
  105. .text:0040119E                 pop     esi
    3 v- j8 O# A$ z! L
  106. .text:0040119F                 retn    4
    ; R4 k4 W4 S/ d, T- H) {! ~
  107. .text:004011A2 ; ---------------------------------------------------------------------------5 ~% B. ^. L" Z, d9 w# p8 \4 @
  108. .text:004011A2( p9 {  E7 _* f0 `0 D, n9 |
  109. .text:004011A2 loc_4011A2:                             ; CODE XREF: sub_401160+15↑j' R2 C/ D. u& F: K
  110. .text:004011A2                 mov     eax, edi
    0 s: M0 e5 p) [+ }. ]* [
  111. .text:004011A4                 lea     edx, [eax+1]' x, l6 P2 ?1 ?, U  n: Z
  112. .text:004011A7. i5 W: P. l  i) w+ s4 b: r
  113. .text:004011A7 loc_4011A7:                             ; CODE XREF: sub_401160+4C↓j- K( t9 L9 w. L) Z% g$ p/ q
  114. .text:004011A7                 mov     cl, [eax]1 c8 h# [8 T5 Z2 m: k" F
  115. .text:004011A9                 inc     eax3 t3 Y1 X% I% o# V
  116. .text:004011AA                 test    cl, cl
    ' y9 s% \6 @% Z5 {9 N$ ~
  117. .text:004011AC                 jnz     short loc_4011A70 c, @! H+ i4 E' g9 n/ {0 ?
  118. .text:004011AE                 sub     eax, edx. F6 V8 E2 k3 ~9 q1 i& ^0 \
  119. .text:004011B0                 push    eax6 W% |* G) Z5 o. _' ]$ u4 }
  120. .text:004011B1                 mov     ecx, esi
    , l9 ]8 d* Z0 u- O
  121. .text:004011B3                 call    sub_401030) q) G' q( y4 X# L5 ?: P& H
  122. .text:004011B8                 mov     edx, [esi]% C' W+ ~0 m7 ?$ g6 h( }
  123. .text:004011BA                 mov     ecx, edi7 `$ L7 ?0 V, W9 h1 `
  124. .text:004011BC                 lea     esp, [esp+0]$ d1 h1 l# Q! h4 v% `
  125. .text:004011C0; I7 }% ~3 n2 N: \; b/ P( Y
  126. .text:004011C0 loc_4011C0:                             ; CODE XREF: sub_401160+68↓j. H& y' P6 u$ J4 _& x
  127. .text:004011C0                 mov     al, [ecx], m) |$ [9 M) D+ p
  128. .text:004011C2                 inc     ecx  Z- a9 |3 S! C
  129. .text:004011C3                 mov     [edx], al
    9 {1 G7 v6 Q) [9 L# t! o
  130. .text:004011C5                 inc     edx; t& a+ ]( z5 ~$ t
  131. .text:004011C6                 test    al, al8 o8 N4 {' M% ?8 K
  132. .text:004011C8                 jnz     short loc_4011C03 U. [- b5 {! }. M
  133. .text:004011CA
    4 p" g( u" |8 M' Y$ }1 W- [2 L0 Q
  134. .text:004011CA loc_4011CA:                             ; CODE XREF: sub_401160+A↑j, c- ^! ^3 \$ Y9 ~* k; d) `; ^# Y3 E
  135. .text:004011CA                                         ; sub_401160+10↑j
    : h% E' K2 w/ v: Y6 A9 W) o
  136. .text:004011CA                 pop     edi: U& u' o8 [' R# c: z2 _
  137. .text:004011CB                 pop     esi
    6 V2 T, x0 U. l5 I5 n
  138. .text:004011CC                 retn    4
    , m9 `* m9 A$ F# I  \; n$ G
  139. .text:004011CC sub_401160      endp0 d+ V! y% S5 ]0 a+ c+ T2 y/ }
  140. .text:004011CC" j: n4 f. L; u. |! ~3 v) i
  141. .text:004011CC ; ---------------------------------------------------------------------------
复制代码
% E! ~) n# W" ~! {5 o% J; l* {! k

8 B/ {2 k% ^1 n6 ]$ \; H' T
7 T7 t' n1 m- a; d1 s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表