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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-27 13:23 编辑
4 s3 p; F! w# D& `. }( F. Y; \% a4 ~. o- q6 U$ A9 a4 h7 p
本游戏采用了CEGUI,该组件能采用directx和opengl。
: r8 \# L- s, Z6 l" C& v6 z经过我的小方块测试,游戏屏幕显示了小方块,因此确认是directx9的游戏。) [3 V- C6 u3 L$ {" O8 a
游戏自带一个EngineSetup.exe程序,设置为窗口模式后就能用cheatengine调式。4 W# ^" {8 M% _: a  ^3 l  l
(由于游戏窗口较大,我将游戏屏幕和cheatengine分别显示到2个显示器上即可。)
% p* t# V+ f1 `. `) l
2 D( ~9 o% `! l9 B
, L& N7 f1 M" {在游戏中找一个字幕,在以下地方断下。
& v5 p/ M# K  _4 \8 o由于该游戏基本都是显示在屏幕固定位置(上或者下,居中),: U: N3 t, c' X, V8 S" M' I  r& `
因此暂时认为此处就是游戏的字幕函数,该函数被20处左右地方调用。* ]0 R( {, E8 _2 i% a, ~7 @& P
9 f1 P% X( u  F
  1. NextLife.exe+11C5 - 42                    - inc edx' |3 ]9 E3 D8 h- d, o5 }5 t  `% w
  2. 004011C5
复制代码
) d1 S" s5 e/ j1 D  O0 J

# ?6 n) M3 h6 [( i该地方的伪代码. f1 N3 ]9 G* l5 B6 J5 y
  1. void __thiscall sub_401160(char **this, const char *a2)
    $ c  Q. c% _& Y( p+ u
  2. {( [1 ]8 U* I4 I+ {
  3.   char **v2; // esi/ l9 I7 p1 O1 B& T
  4.   char *v3; // eax
    / @" g- w5 F* [% F
  5.   char *v4; // eax% X7 |, M! [2 D4 T

  6. % M" D- {4 O. |' K
  7.   v2 = this;
    ) N9 i( J1 L& s* Y4 X2 J3 N
  8.   if ( a2 ): l# q& O# O6 C1 t& v2 ^/ e  h
  9.   {
    ' ?% Y% s' I1 g9 L9 V: w
  10.     v3 = *this;( C  h) Q' Y# d% ]
  11.     if ( a2 != *this )2 P( P: }0 k7 ?3 W
  12.     {. {) i/ e' y- U% R
  13.       if ( *a2 )/ w6 ], _4 [* [4 f5 y" Q2 r3 S
  14.       {/ M0 A# S7 E8 ^6 ~; f
  15.         sub_401030(strlen(a2));" _* r* Q1 K! |8 P* d# z! d9 r
  16.         strcpy(*v2, a2);' j6 {. H+ r( g! e# A- _
  17.       }
    , _5 P  T; l/ u( h( K) Z& I
  18.       else
    ! B& y6 D5 z/ X  A3 [2 R5 X2 b
  19.       {/ ?# p+ ^- V& d( d, v
  20.         this[1] = (char *)1;
    ) n% d( T* s( }" j$ W
  21.         if ( v3 )" O3 A: ^1 E/ T4 T
  22.           operator delete[](v3);
    6 v" p4 {4 h2 [0 e% ~1 k3 u& n0 D  o
  23.         v4 = (char *)operator new(6u);' `5 f$ N2 ]1 _/ D# v' {% p
  24.         *v2 = v4;
    / ^- a) r1 z8 R* w9 S
  25.         *(_DWORD *)v4 = 0;8 Q/ `" |3 _/ R
  26.       }" g) W8 R9 H/ y" _; J: C8 M
  27.     }8 D. Y0 q( n. Y7 w3 A3 L
  28.   }
    ' O! z5 E( U9 g. e0 x8 v2 v
  29. }
复制代码
0 b% Z" g4 }/ q+ M5 a. U, k  N
汇编代码- ]' D- T% v1 Y  k$ y; x
  1. .text:004010F0
    " ~) T, Z0 g+ Y& g' }8 p& t  H
  2. .text:004010F0 ; =============== S U B R O U T I N E =======================================
    1 C- ]* f: e! {
  3. .text:004010F0
    3 L$ R; @, N8 }, n. F2 J1 Q
  4. .text:004010F0
    - c$ d% ^+ _7 @0 o  f" q7 D8 k& [
  5. .text:004010F0 sub_4010F0      proc near               ; CODE XREF: _main+139↓p# p9 r* B# @3 l# j' t) k
  6. .text:004010F0                                         ; sub_403240+97E↓p ...
    # m; m" w1 d2 D+ r/ _0 h0 w3 P7 N
  7. .text:004010F02 u) c7 @; r) S. Z! V6 S4 P/ z
  8. .text:004010F0 arg_0           = dword ptr  4" A: V+ j- j, E' T5 n! o% X
  9. .text:004010F0' J1 T7 J; P" v0 s/ Q; h
  10. .text:004010F0                 mov     eax, [ecx]7 b& N0 O0 q5 q# w
  11. .text:004010F2                 test    eax, eax4 T% n( \$ u$ [0 K1 ]! a
  12. .text:004010F4                 mov     edx, [esp+arg_0]2 \/ T  I* }" x/ P% P
  13. .text:004010F8                 jz      short loc_401147% V: y% C3 E$ L$ M% g9 i( K
  14. .text:004010FA                 test    edx, edx
    8 b  r  E! T- U6 ]& Z4 Y
  15. .text:004010FC                 jz      short loc_401147
    ) w3 I  G8 T: C8 q* g5 e! ^# Q
  16. .text:004010FE                 mov     cl, [eax]  M& Z; V; T/ a* |
  17. .text:00401100                 test    cl, cl
    8 v! K' T. s' ~6 @, Y2 L. P8 G4 r. |
  18. .text:00401102                 jnz     short loc_401116
    * [/ i* {9 X2 F3 J( Q0 z) f$ s
  19. .text:00401104                 cmp     byte ptr [edx], 06 k4 I6 _, c" l0 Z4 B
  20. .text:00401107                 setz    al
    ( A3 t8 t! x$ H8 o4 X0 W+ r. @
  21. .text:0040110A                 xor     edx, edx
    " ]5 |0 ^' S7 j8 e; f4 L# y3 P( N! M
  22. .text:0040110C                 test    al, al) W# I0 c4 ]6 _5 j5 v
  23. .text:0040110E                 setz    dl
    , Z0 C# g' I9 \5 G
  24. .text:00401111                 mov     al, dl: q0 O' n; ?( p" Q8 _+ u/ b( w( A
  25. .text:00401113                 retn    4$ C; S1 K! ?) K, V8 h
  26. .text:00401116 ; ---------------------------------------------------------------------------& G/ w' @7 ^8 k4 {4 Z5 V
  27. .text:004011167 \4 [2 |2 F2 s: J
  28. .text:00401116 loc_401116:                             ; CODE XREF: sub_4010F0+12↑j" s) y6 j/ F6 x6 c6 j7 N
  29. .text:00401116                 cmp     byte ptr [edx], 0
    , `8 p# h- E4 v; y7 X
  30. .text:00401119                 jz      short loc_401147
    ! Y1 T  s/ M! u, ?& o. f
  31. .text:0040111B                 jmp     short loc_401120
    : s/ p$ G/ n4 `2 m1 t
  32. .text:0040111B ; ---------------------------------------------------------------------------: x  }5 F( Q# D2 ^. i* D$ n
  33. .text:0040111D                 align 10h
    9 Y! x" K3 b/ E( Y+ s( n" \1 h6 `
  34. .text:004011200 U: ?! U+ }0 r! m+ j3 {3 A! y+ j; h
  35. .text:00401120 loc_401120:                             ; CODE XREF: sub_4010F0+2B↑j
    " E  Q; y8 }& M
  36. .text:00401120                                         ; sub_4010F0+3B↓j7 U- n# C8 d* W2 }) J" k
  37. .text:00401120                 cmp     cl, [edx]
    0 L8 _0 i- z- a: U5 l; h. x
  38. .text:00401122                 jnz     short loc_40112D5 @7 c/ ~* o; H( X0 ^
  39. .text:00401124                 mov     cl, [eax+1]6 W6 {8 j, }" R5 d5 S* }
  40. .text:00401127                 inc     eax& A, b7 N) P$ e0 ^
  41. .text:00401128                 inc     edx
    5 M: {/ A( l% Q  Q# u9 w' G
  42. .text:00401129                 test    cl, cl/ r- D$ L: l. o
  43. .text:0040112B                 jnz     short loc_401120
    % Z% S& i9 u. d) S( R
  44. .text:0040112D
    * a& H3 m* Y. h  B" \0 a
  45. .text:0040112D loc_40112D:                             ; CODE XREF: sub_4010F0+32↑j& N( O& q+ s5 p/ A, H3 E1 |: m
  46. .text:0040112D                 movzx   eax, byte ptr [eax]
    ' }0 T3 p' F1 d9 ^1 D5 o
  47. .text:00401130                 movzx   ecx, byte ptr [edx]
    4 |, S* y, W3 y1 A" n
  48. .text:00401133                 sub     eax, ecx1 D' y; {6 a" Q9 W7 |9 u: K; a, {
  49. .text:00401135                 neg     eax
    4 H- d1 t2 V' x- q; Y* @* D0 G
  50. .text:00401137                 sbb     al, al4 K! X. ^: ^  P2 A# m5 I6 c% }
  51. .text:00401139                 inc     al) p1 q4 k6 g+ Q& v
  52. .text:0040113B                 xor     edx, edx$ }( L& y3 q) u  M; r2 m
  53. .text:0040113D                 test    al, al2 L( n) {6 A' p* ^' B
  54. .text:0040113F                 setz    dl
    ' C, q/ W$ R7 ]4 e( Y: m
  55. .text:00401142                 mov     al, dl
    : Y7 |) @+ o. U
  56. .text:00401144                 retn    45 o' O! @  p$ Y: K- m  e. a
  57. .text:00401147 ; ---------------------------------------------------------------------------
    / M) ]5 Z% ~- o& h! k
  58. .text:004011475 S( ?' y# j9 _3 ^4 K
  59. .text:00401147 loc_401147:                             ; CODE XREF: sub_4010F0+8↑j
    3 Q/ E8 o7 o  `. b- S9 ~# R0 e- x
  60. .text:00401147                                         ; sub_4010F0+C↑j .../ j* _2 }' R! n7 V! _) b
  61. .text:00401147                 xor     al, al3 e" ^& K( e9 O. J/ j( Z
  62. .text:00401149                 xor     edx, edx
    : Z) O* c+ G; T# r0 f$ J, }
  63. .text:0040114B                 test    al, al
    7 @0 |* p0 B4 s4 H4 q0 M2 i
  64. .text:0040114D                 setz    dl7 f+ i9 P* R8 ~9 {' I8 L
  65. .text:00401150                 mov     al, dl1 X1 N/ q8 m: d. {
  66. .text:00401152                 retn    4
    ! g4 h7 R; k( y& I6 Y0 w  J) t
  67. .text:00401152 sub_4010F0      endp
    ; Z: r0 |; H+ T* c# J! A# R3 O
  68. .text:00401152
    - c$ s4 a; e+ c1 |$ Y. D
  69. .text:00401152 ; ---------------------------------------------------------------------------
    - f) i! P. E, O% ~6 B8 ]" h8 ]1 v3 _
  70. .text:00401155                 align 10h% W3 [0 @( ]$ _
  71. .text:00401160: f8 z' W! w1 V, v
  72. .text:00401160 ; =============== S U B R O U T I N E =======================================
    & m1 r4 P9 Q' Y  }& `1 h. S" O
  73. .text:00401160* V, U2 g  y1 l
  74. .text:00401160' Z' b5 V! `; c# E
  75. .text:00401160 sub_401160      proc near               ; CODE XREF: sub_4013D0+15↓p
    , g' A3 Z, W& h+ g* E1 Q) q9 Z9 R
  76. .text:00401160                                         ; sub_4013F0+C↓p ...
    7 O1 o. V# E) \" @2 K2 _
  77. .text:00401160/ I8 H( f! U" {' ?9 b
  78. .text:00401160 arg_0           = dword ptr  4: t# N% T/ ?, ?9 Q0 ?
  79. .text:00401160* J( ~' e2 Q& G$ S6 o, G: F4 \( b
  80. .text:00401160                 push    esi
    5 u# Y% H3 f- m; \+ D
  81. .text:00401161                 push    edi
    : \) g* z1 @# i) i% w! O% y
  82. .text:00401162                 mov     edi, [esp+8+arg_0]; x* q' Q$ ]" F3 r% B" n: H8 n
  83. .text:00401166                 test    edi, edi1 W+ F8 c; g& C9 m9 [: o
  84. .text:00401168                 mov     esi, ecx. g' n/ V2 }; h# F) c/ o% Z9 v) b  n
  85. .text:0040116A                 jz      short loc_4011CA
    + B7 z9 y' H' c
  86. .text:0040116C                 mov     eax, [esi]/ D" K1 Q6 o1 U4 [4 F
  87. .text:0040116E                 cmp     edi, eax
    # S- }* V. s' f9 ^
  88. .text:00401170                 jz      short loc_4011CA
    + h  }" @& X8 e& C5 i+ j
  89. .text:00401172                 cmp     byte ptr [edi], 0
    & H( w4 j) S6 ]. h. `/ u
  90. .text:00401175                 jnz     short loc_4011A2$ k) i7 {6 j% V5 I' [7 H# g
  91. .text:00401177                 test    eax, eax" f, s. y( g) X
  92. .text:00401179                 mov     dword ptr [esi+4], 1
    " t6 R( c( v5 b( P- {, ?
  93. .text:00401180                 jz      short loc_40118B
    3 C4 Q+ t3 ]' J. Q% S4 W
  94. .text:00401182                 push    eax             ; void *5 i, b  P" r0 m- J6 C7 J
  95. .text:00401183                 call    ??_V@YAXPAX@Z   ; operator delete[](void *)4 R3 U$ ~7 j$ {; m# U7 m1 o4 A2 T, e
  96. .text:00401188                 add     esp, 47 j2 ~! X  U. h1 t+ _
  97. .text:0040118B
      ?7 h% b' ]$ p4 o! P+ F
  98. .text:0040118B loc_40118B:                             ; CODE XREF: sub_401160+20↑j
    ! w$ M; L! P. m( N8 h
  99. .text:0040118B                 push    6               ; Size
    4 C+ \. |1 i8 i4 T: c( x6 h
  100. .text:0040118D                 call    j_??2@YAPAXI@Z  ; operator new(uint)! |+ M! K* ?# ~
  101. .text:00401192                 add     esp, 4
    & u; y4 _# j# S
  102. .text:00401195                 mov     [esi], eax+ S- @& [& I& W3 J' {% a
  103. .text:00401197                 pop     edi
      A4 k, Y) Q) q; @8 O: c1 r
  104. .text:00401198                 mov     dword ptr [eax], 0
    " k5 x3 \# a8 u
  105. .text:0040119E                 pop     esi
    5 ^" e3 M- T& e$ H' ^' A+ E
  106. .text:0040119F                 retn    4
    2 D, q6 L2 a9 r+ |4 a
  107. .text:004011A2 ; ---------------------------------------------------------------------------
    8 L. D, {) P1 o- z) U8 v
  108. .text:004011A2( T& |, ~0 l' w
  109. .text:004011A2 loc_4011A2:                             ; CODE XREF: sub_401160+15↑j8 w/ J" E) c7 B. X( a* F0 X
  110. .text:004011A2                 mov     eax, edi
    + B0 e9 I& w3 u+ M; B4 l- A% q/ e
  111. .text:004011A4                 lea     edx, [eax+1]
    ! y: U" ^5 {4 k9 ^
  112. .text:004011A7
    4 h6 F! c# R. |2 B3 ?. c$ E: u& W
  113. .text:004011A7 loc_4011A7:                             ; CODE XREF: sub_401160+4C↓j8 r  ^8 ?$ y: U  p7 S5 U. M& _
  114. .text:004011A7                 mov     cl, [eax]% x; @" V  v3 o% V4 t
  115. .text:004011A9                 inc     eax; _- \' g' o; w8 ^: U
  116. .text:004011AA                 test    cl, cl: ]  G. T% D5 D1 ]9 E4 W( D
  117. .text:004011AC                 jnz     short loc_4011A7
    0 [! s; c& `9 q! p/ |! L. L
  118. .text:004011AE                 sub     eax, edx
    . d' j7 i$ b* m  [0 O8 {* w
  119. .text:004011B0                 push    eax
    & [( P& ^" B/ J5 A, F$ u
  120. .text:004011B1                 mov     ecx, esi
    + ~! v1 ?! s- g  P4 [
  121. .text:004011B3                 call    sub_401030' K3 F! g' ]/ A( j1 s
  122. .text:004011B8                 mov     edx, [esi]
    ( ^2 R7 |$ I; G9 C9 c
  123. .text:004011BA                 mov     ecx, edi, i6 D7 g1 x& F5 B2 }! T
  124. .text:004011BC                 lea     esp, [esp+0]
    - U1 B1 z9 @# B# h) G+ K6 O: i
  125. .text:004011C0
    ! n. C) y" u6 d* V3 q& l+ o
  126. .text:004011C0 loc_4011C0:                             ; CODE XREF: sub_401160+68↓j
    " R& o! ^! e- C. y$ Y+ w- V  M
  127. .text:004011C0                 mov     al, [ecx]4 m; q3 D. k6 l  i6 M8 I8 {
  128. .text:004011C2                 inc     ecx  ]# {" p' k+ E1 P3 s* W: p
  129. .text:004011C3                 mov     [edx], al' O6 |7 M) {2 G" L0 R
  130. .text:004011C5                 inc     edx
    8 P! q1 r% y6 C8 f) p' {* `8 o
  131. .text:004011C6                 test    al, al& A! g# c% O% ]3 A$ J/ r
  132. .text:004011C8                 jnz     short loc_4011C0
    ; B$ L+ p: }. u6 U
  133. .text:004011CA  b) J9 k5 N4 d% Z1 I
  134. .text:004011CA loc_4011CA:                             ; CODE XREF: sub_401160+A↑j
      i1 r1 v$ o% v8 m; q  \8 a+ f, D
  135. .text:004011CA                                         ; sub_401160+10↑j: t! D' p/ H6 N, Q+ ]/ e# I
  136. .text:004011CA                 pop     edi
    ; J: ^, J% n5 I5 o
  137. .text:004011CB                 pop     esi
    6 Q& _% B, I% X* s% }$ F% Y: A
  138. .text:004011CC                 retn    4) D2 F9 S' f9 U" w0 d: g2 v8 N
  139. .text:004011CC sub_401160      endp: U" x* `5 J* L, s) ^* Y
  140. .text:004011CC
    " W+ W4 H4 U; _( h$ g- n" V& I, W
  141. .text:004011CC ; ---------------------------------------------------------------------------
复制代码
$ n0 ?% S2 y7 X  L3 D# ]

5 v  [0 @6 x4 j  p3 N
7 z1 H8 Y+ G7 ~8 m  T" x  W
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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