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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-27 13:23 编辑 % j3 X* B) G) Q1 M

7 q9 Y, o& t6 r0 \: Z) H6 o本游戏采用了CEGUI,该组件能采用directx和opengl。  d$ ?& v$ ~" C& v$ d: ^
经过我的小方块测试,游戏屏幕显示了小方块,因此确认是directx9的游戏。7 M8 B9 J1 s& P- w
游戏自带一个EngineSetup.exe程序,设置为窗口模式后就能用cheatengine调式。& C, ]! G4 \# [6 d9 j+ E( j
(由于游戏窗口较大,我将游戏屏幕和cheatengine分别显示到2个显示器上即可。)
, h0 S5 H% b7 a/ f* N# z
1 h4 t. i% l* j. \9 O: T# w: z: Z: X& n
在游戏中找一个字幕,在以下地方断下。* H5 S  i+ m  c; O
由于该游戏基本都是显示在屏幕固定位置(上或者下,居中),
/ H. V" R3 l1 o" ?因此暂时认为此处就是游戏的字幕函数,该函数被20处左右地方调用。3 g" a4 c1 I  S4 [
& j, ~5 l! b4 g# A
  1. NextLife.exe+11C5 - 42                    - inc edx2 ], y, z( \- |# Y, E* }
  2. 004011C5
复制代码

/ H/ x  s' H  A7 A, H% ?  ?; }
) g# l, v4 ?! U* \' i$ q- [7 ?; F该地方的伪代码6 h% J% `9 R5 \  w
  1. void __thiscall sub_401160(char **this, const char *a2)
    0 c8 m/ y9 i5 I6 c
  2. {
    / m4 C( x" G! b% G; ~
  3.   char **v2; // esi
    $ m: R1 w' Q8 ]# i
  4.   char *v3; // eax( E, ]$ G- ^  ]2 D5 _& Y
  5.   char *v4; // eax. a  D) t6 I6 y9 h- N& f9 ]. a

  6. * a6 |( c0 W* J) J3 U+ k! I
  7.   v2 = this;4 S: ~6 [# V* X
  8.   if ( a2 )& J8 u6 t' f4 S/ W: E
  9.   {: a& U* C' d3 b( D  G$ ~
  10.     v3 = *this;6 {8 @0 y4 _/ q
  11.     if ( a2 != *this )
    / ~% z% N" q/ |$ q5 f* f0 P6 F: a
  12.     {
    0 E" k) T: a2 P0 s+ a1 T3 i
  13.       if ( *a2 )
    , A- I. A0 T9 N
  14.       {" F, d2 r  F( b; h2 j* |
  15.         sub_401030(strlen(a2));4 c# i. h: r. C1 l7 W5 o
  16.         strcpy(*v2, a2);
      c1 l% P$ v* U' Z. p7 [
  17.       }* o' k  v  j) a4 E- d
  18.       else
    ; v) S/ t5 d* J# l7 m
  19.       {
    % x; j6 P* z& }# x
  20.         this[1] = (char *)1;
    ) @9 X2 B) F7 k% Y6 v7 s0 D9 z
  21.         if ( v3 ), k. m  r+ f. Q5 ~2 j- G# Z1 W! o
  22.           operator delete[](v3);
    # |" ]4 b) T$ ]2 n$ l' b
  23.         v4 = (char *)operator new(6u);# Z$ D( M7 z# s- Q( c+ R' F% O9 j
  24.         *v2 = v4;
    $ x1 o* e# l2 ~9 D
  25.         *(_DWORD *)v4 = 0;1 a  t/ I8 @: E/ H
  26.       }) u% Z5 E6 i! S1 d' w& U9 b
  27.     }
    # u4 s! n) n" r# ]& n) n! ]1 e% z
  28.   }
    4 L8 }' B6 G$ \- d  M
  29. }
复制代码
( H0 H1 {" N, _+ W4 Z# P6 A
汇编代码
8 c9 p( R6 l# C1 z0 S
  1. .text:004010F0
    , C0 j$ X' u1 A0 ?
  2. .text:004010F0 ; =============== S U B R O U T I N E =======================================9 X) s2 N. J9 v5 r  R& U. ]$ b
  3. .text:004010F0
    % Y, ~2 i% o8 k8 \" ^) V
  4. .text:004010F0
    7 [+ ?& X6 d- s8 r
  5. .text:004010F0 sub_4010F0      proc near               ; CODE XREF: _main+139↓p7 d$ J( ~3 Q" X) D  D
  6. .text:004010F0                                         ; sub_403240+97E↓p ...
    # @8 [. f( H5 v* o' S$ n
  7. .text:004010F0
    4 |* G' c  s; |% I* o" R
  8. .text:004010F0 arg_0           = dword ptr  4' @( i9 V- S+ f3 n
  9. .text:004010F0
    & R; r( H8 X  V2 c2 c) K2 ?1 ?
  10. .text:004010F0                 mov     eax, [ecx]7 Q( t: _: V  Y# f+ j9 O
  11. .text:004010F2                 test    eax, eax
    - o* Q! \3 W' t8 D2 u! B
  12. .text:004010F4                 mov     edx, [esp+arg_0]
    , z; D' S& ^3 ?& V' c9 E& t* J# i; b
  13. .text:004010F8                 jz      short loc_401147
    + Q2 i+ t8 B) p: S
  14. .text:004010FA                 test    edx, edx1 {& `4 u' H' I# f& }1 i7 U- G: Z
  15. .text:004010FC                 jz      short loc_4011472 P  y5 Z* e7 ?9 c8 e, m! [
  16. .text:004010FE                 mov     cl, [eax]/ R- o) A/ N) \. n, K! b
  17. .text:00401100                 test    cl, cl3 U0 `* N. Y# ^. H+ r* M: V) F
  18. .text:00401102                 jnz     short loc_401116
    1 W, b) U* x* B! r
  19. .text:00401104                 cmp     byte ptr [edx], 04 Z4 H  f% \# h. ?5 F
  20. .text:00401107                 setz    al& [; r. {9 {( \( A8 a
  21. .text:0040110A                 xor     edx, edx3 j- R# y. y' x7 p: h4 ]
  22. .text:0040110C                 test    al, al& l$ C8 O$ ]2 s0 P( M
  23. .text:0040110E                 setz    dl1 w/ j8 U1 u/ ~5 |! v2 |( l
  24. .text:00401111                 mov     al, dl
    ; t0 ~$ b+ R6 a; X* {( u! o* X
  25. .text:00401113                 retn    4
    7 H8 @3 X% y0 j& R
  26. .text:00401116 ; ---------------------------------------------------------------------------3 B6 e/ H$ _  E0 L: e7 z
  27. .text:00401116
    . B- W/ G' Y. k
  28. .text:00401116 loc_401116:                             ; CODE XREF: sub_4010F0+12↑j
    : o! T$ p2 K, r8 L
  29. .text:00401116                 cmp     byte ptr [edx], 0
    7 A7 ^, G. i5 S# L
  30. .text:00401119                 jz      short loc_401147. n1 M9 h: ^. I3 S- j9 m: c- R
  31. .text:0040111B                 jmp     short loc_401120
    ) x7 a; }( p+ \2 e& P' U* y
  32. .text:0040111B ; ---------------------------------------------------------------------------; P/ ]) V' x8 k' k4 M9 B
  33. .text:0040111D                 align 10h
    ! {' q  s5 a$ |, B! L, ^
  34. .text:00401120
    / e2 `* A7 {& _% L* s" ^
  35. .text:00401120 loc_401120:                             ; CODE XREF: sub_4010F0+2B↑j
      ^  a$ T* q  S" ^% p
  36. .text:00401120                                         ; sub_4010F0+3B↓j
    * f" ~6 L- w- q+ u* L, S
  37. .text:00401120                 cmp     cl, [edx]
    8 Z" R1 l$ l2 _, w& Q( x
  38. .text:00401122                 jnz     short loc_40112D
    1 K# \# \. x/ y1 r
  39. .text:00401124                 mov     cl, [eax+1]8 r# |' v( g6 X
  40. .text:00401127                 inc     eax3 v9 Z+ c% E. i* z0 T/ |
  41. .text:00401128                 inc     edx
    ( r. o" C6 l( j$ f4 G# {2 p
  42. .text:00401129                 test    cl, cl% u# ?8 E, Z2 z& N/ ?
  43. .text:0040112B                 jnz     short loc_401120$ j9 Z0 O) P& R! j/ P7 r9 r
  44. .text:0040112D) s, S5 r$ _3 c2 g& r# B1 k
  45. .text:0040112D loc_40112D:                             ; CODE XREF: sub_4010F0+32↑j
    ' n) R2 D3 e4 C" @" z5 f' D. u4 D
  46. .text:0040112D                 movzx   eax, byte ptr [eax]( K$ T& z$ e# j0 z' I$ L3 \$ L
  47. .text:00401130                 movzx   ecx, byte ptr [edx]1 r0 D$ Y  E  Q9 Q0 s: d! N' Z" D
  48. .text:00401133                 sub     eax, ecx) s; V4 m: H  }, ?: }2 \
  49. .text:00401135                 neg     eax
    7 \. x. G$ R/ }" _: d" Y( O
  50. .text:00401137                 sbb     al, al
    + y( p" K$ e9 K! m5 u# ]% K: i1 n
  51. .text:00401139                 inc     al5 q5 y$ H' z1 y7 `4 y8 q2 ]
  52. .text:0040113B                 xor     edx, edx! g0 H! d+ ~; J3 V- Y0 U( N
  53. .text:0040113D                 test    al, al
    . c2 H# z* W9 p; y' A2 f
  54. .text:0040113F                 setz    dl7 c" V5 n- h% Y9 S' ?6 x$ O6 k) g/ f
  55. .text:00401142                 mov     al, dl- b, L3 N9 Q9 z
  56. .text:00401144                 retn    49 \0 F. L# C" B  a4 Z% s
  57. .text:00401147 ; ---------------------------------------------------------------------------. z/ H5 W- h% y3 e0 i. o8 ]
  58. .text:00401147
    % b3 T) V2 p- l2 w$ j9 H
  59. .text:00401147 loc_401147:                             ; CODE XREF: sub_4010F0+8↑j2 \* ]) j1 e+ U
  60. .text:00401147                                         ; sub_4010F0+C↑j ...
    $ G: `- D) y2 g2 n  ^
  61. .text:00401147                 xor     al, al& Y. `" w! e# {
  62. .text:00401149                 xor     edx, edx9 Q( E% U( i" Z
  63. .text:0040114B                 test    al, al2 T$ A; ^; k; m+ u8 @+ l
  64. .text:0040114D                 setz    dl% e: Z$ K% G0 j
  65. .text:00401150                 mov     al, dl- ^2 h. l) C8 o% x. F- J% [' h, @
  66. .text:00401152                 retn    4
    & I5 s4 B8 ]$ {. w
  67. .text:00401152 sub_4010F0      endp) Z6 Z; K+ G- L; X# h% \
  68. .text:00401152
    ! V: t0 e1 }+ h9 s
  69. .text:00401152 ; ---------------------------------------------------------------------------
    % e' t8 o0 ]3 ?' N% y
  70. .text:00401155                 align 10h
    " ~, C7 G! Z  ~  U9 W- f
  71. .text:00401160
    ! i) ?$ c6 x3 J
  72. .text:00401160 ; =============== S U B R O U T I N E =======================================, b5 ^8 V7 U: I& O# g
  73. .text:00401160/ f$ {& ?/ X( p! x7 h; b  {
  74. .text:00401160
    , w) i  _9 p1 ~% V& g
  75. .text:00401160 sub_401160      proc near               ; CODE XREF: sub_4013D0+15↓p6 R" y& v2 b* ]8 @/ _, J; V
  76. .text:00401160                                         ; sub_4013F0+C↓p ...& l$ H; S9 w4 A
  77. .text:004011608 w6 L8 B  K/ M' V
  78. .text:00401160 arg_0           = dword ptr  42 \, l" D' P: i* d8 H( o4 j) b, O
  79. .text:00401160
    & Y5 C; r! P$ p; L
  80. .text:00401160                 push    esi
    3 u' x0 S  a0 {& S( v# B: [& b
  81. .text:00401161                 push    edi& a  ~  e+ e5 K3 Q3 q9 H& t
  82. .text:00401162                 mov     edi, [esp+8+arg_0]7 `  I0 Y/ \/ M  X: z
  83. .text:00401166                 test    edi, edi# F$ L+ l. P& e6 b$ v/ r& {
  84. .text:00401168                 mov     esi, ecx( g% F; a  Q0 s) G- Y
  85. .text:0040116A                 jz      short loc_4011CA5 N9 `% {& g8 A  g! t/ Y
  86. .text:0040116C                 mov     eax, [esi]% i: K# U1 d" ^- C* u: R& j
  87. .text:0040116E                 cmp     edi, eax0 J% l1 {2 U9 |$ G1 z
  88. .text:00401170                 jz      short loc_4011CA# E$ ]* F! s8 B  e+ ]" F) X+ @
  89. .text:00401172                 cmp     byte ptr [edi], 0
    - W8 i6 R2 J3 O. N
  90. .text:00401175                 jnz     short loc_4011A2' `* `* z3 m7 u: w
  91. .text:00401177                 test    eax, eax- t, U6 V7 R1 a3 r1 k8 \) d: x% M
  92. .text:00401179                 mov     dword ptr [esi+4], 1
    ! c. W; g0 Q! W# \7 i% Q# E
  93. .text:00401180                 jz      short loc_40118B' ?  ^& W8 ~# ^5 c( B3 e
  94. .text:00401182                 push    eax             ; void *1 i/ n5 g" H) g" ]
  95. .text:00401183                 call    ??_V@YAXPAX@Z   ; operator delete[](void *)
    1 Q1 v. h* a( u
  96. .text:00401188                 add     esp, 4% ?" E6 r/ ]/ P) u
  97. .text:0040118B& [2 {9 f# }1 m& [0 \% z; l
  98. .text:0040118B loc_40118B:                             ; CODE XREF: sub_401160+20↑j! R/ c6 a1 N8 z" H
  99. .text:0040118B                 push    6               ; Size, [' T  Q& ^, N/ @5 h& W
  100. .text:0040118D                 call    j_??2@YAPAXI@Z  ; operator new(uint), s0 B- z* X. x5 p$ d
  101. .text:00401192                 add     esp, 4
    3 t9 `) i0 Z. C) }1 E
  102. .text:00401195                 mov     [esi], eax
    / b! ]- ?# r6 n$ Z  f
  103. .text:00401197                 pop     edi
    . Z# ~! ^! e& v( J+ z
  104. .text:00401198                 mov     dword ptr [eax], 0' O* [; v3 W% l# P& Q3 i6 ]0 _
  105. .text:0040119E                 pop     esi( h% J) H3 O2 V- i) U; x% i
  106. .text:0040119F                 retn    4
    " c+ E7 {% l/ |% I  e1 ^/ N1 u. d
  107. .text:004011A2 ; ---------------------------------------------------------------------------+ Q% i0 o8 e" S1 H% V" ]8 m
  108. .text:004011A2
    * s) B# i% v* X( @/ |  N
  109. .text:004011A2 loc_4011A2:                             ; CODE XREF: sub_401160+15↑j
    ( T# L3 h5 h" u+ s. v6 ~! n
  110. .text:004011A2                 mov     eax, edi8 z+ y) {6 b& J- F/ A  [+ ~
  111. .text:004011A4                 lea     edx, [eax+1]% _5 ~: e# t6 m. q, g
  112. .text:004011A7
    ( Z; d9 X. F/ g5 H! p
  113. .text:004011A7 loc_4011A7:                             ; CODE XREF: sub_401160+4C↓j  |7 |3 @* s% u9 b' {+ {; G$ l
  114. .text:004011A7                 mov     cl, [eax]
    / O2 a8 c2 F0 q! l, Z/ _. A' }
  115. .text:004011A9                 inc     eax% G9 |, W! m4 j9 S6 q& ^
  116. .text:004011AA                 test    cl, cl
    % X. P( x$ d1 ~) O
  117. .text:004011AC                 jnz     short loc_4011A7
    ; z( z9 g; c/ X1 F; z
  118. .text:004011AE                 sub     eax, edx- |5 q4 ^8 d% U  Q
  119. .text:004011B0                 push    eax9 X, C, ^( d: s3 `) H( X; B6 D
  120. .text:004011B1                 mov     ecx, esi3 _0 n) ]3 Q4 |: R& d
  121. .text:004011B3                 call    sub_401030
    5 T4 {) O3 N3 Y# e* @
  122. .text:004011B8                 mov     edx, [esi]! J6 Q2 C' s/ y( g: Z
  123. .text:004011BA                 mov     ecx, edi
    - |# f# `$ ~1 }% {3 n- T3 ]: p
  124. .text:004011BC                 lea     esp, [esp+0]
    2 q& g( C% @- c8 q
  125. .text:004011C0
    ' w  |5 D  \1 }6 v$ Q: [5 `/ j
  126. .text:004011C0 loc_4011C0:                             ; CODE XREF: sub_401160+68↓j
    ; E# H0 @2 [2 w9 G, S* c2 M  {
  127. .text:004011C0                 mov     al, [ecx], K  e. I  u5 l- N9 Z& Q
  128. .text:004011C2                 inc     ecx. c+ P! {* L) g: c7 R4 `
  129. .text:004011C3                 mov     [edx], al) N" A1 ~5 K3 `$ J
  130. .text:004011C5                 inc     edx+ k4 b; ~' e- ~* @
  131. .text:004011C6                 test    al, al
    ; B( c, A. v- n$ d6 o  o& M- a
  132. .text:004011C8                 jnz     short loc_4011C0
    ; L( C& ~: X+ U, P) N# O
  133. .text:004011CA7 j' S( N! J& j3 v6 C
  134. .text:004011CA loc_4011CA:                             ; CODE XREF: sub_401160+A↑j- p( I+ J& V- @! t  Q
  135. .text:004011CA                                         ; sub_401160+10↑j
    ! r9 Z) n* s$ F
  136. .text:004011CA                 pop     edi
    6 s% B  N9 [) ]9 G' L* f# `; U0 a( P
  137. .text:004011CB                 pop     esi  ?# f- |3 q5 J7 o- P. X
  138. .text:004011CC                 retn    45 ^& H" w, ^7 i3 @2 E' z
  139. .text:004011CC sub_401160      endp) ?6 P5 g& g; N, j
  140. .text:004011CC4 }! U" C& e5 C( O/ p: O4 ?$ }! r
  141. .text:004011CC ; ---------------------------------------------------------------------------
复制代码

- B. [$ c, L% T! F7 q4 ~3 M
7 |4 ~- |% r0 u5 {2 \5 Y5 Q/ q" \* b) c
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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