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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-27 13:23 编辑 : ~% p) n2 I: X( N. N) s

2 s: B3 C' N7 L# X3 R本游戏采用了CEGUI,该组件能采用directx和opengl。2 Y) e1 V" [0 {+ z: [! z, G
经过我的小方块测试,游戏屏幕显示了小方块,因此确认是directx9的游戏。1 i/ m8 p8 q1 K3 X/ g
游戏自带一个EngineSetup.exe程序,设置为窗口模式后就能用cheatengine调式。
. m+ K- ~; M" {, F3 @) K(由于游戏窗口较大,我将游戏屏幕和cheatengine分别显示到2个显示器上即可。)
; _4 n$ J' r/ b& N! |
* h$ V0 j/ D( S  x
& W. x0 u: y8 x% R在游戏中找一个字幕,在以下地方断下。
* k$ C# I2 }4 \. g+ D由于该游戏基本都是显示在屏幕固定位置(上或者下,居中),3 i4 B( J2 @" B5 C# r( ?2 T& H9 |
因此暂时认为此处就是游戏的字幕函数,该函数被20处左右地方调用。
8 s& C# E9 u% @6 W
3 I! d& O* B, H: }
  1. NextLife.exe+11C5 - 42                    - inc edx1 X4 B3 d* ~  L3 D1 D+ ]
  2. 004011C5
复制代码

+ U3 @% m& f- ^8 k) P' d9 j$ P7 E/ U  f4 z
该地方的伪代码; g  L3 M. }/ e8 w
  1. void __thiscall sub_401160(char **this, const char *a2)
    * v3 c# y! n& S0 e8 K. C
  2. {
    7 n0 b; E1 e: e. E" W
  3.   char **v2; // esi
    ( ]& y! t- n7 T( F* r2 b& B* d
  4.   char *v3; // eax
    ) x0 ^( ~9 n2 |9 p3 C" n2 R
  5.   char *v4; // eax; X  R7 h8 a: f3 g0 \7 O

  6. " F% G' S! g& a4 N6 R# q' h
  7.   v2 = this;
    ( b: o0 E- n6 q5 Y- N5 R
  8.   if ( a2 )2 z! z8 Q2 k, t4 T
  9.   {
    8 n$ r3 @6 f' D1 F) y" C
  10.     v3 = *this;
    % I* d3 l* M. J
  11.     if ( a2 != *this )) z- k; Y% t5 s1 R
  12.     {) j9 z4 I5 b1 k9 C  r# k( @
  13.       if ( *a2 )
    - l( J$ V/ X' c# v1 s  U& x
  14.       {
    , _7 Y; R% b. |0 o" ?
  15.         sub_401030(strlen(a2));
    . ^0 E/ D9 n* j6 i
  16.         strcpy(*v2, a2);; s: w* E/ j, g& b
  17.       }5 A, O5 M6 R4 l' L4 I
  18.       else
    5 v8 t2 J  h. w8 X8 h% \
  19.       {) p; V1 u7 t5 a
  20.         this[1] = (char *)1;
    - S' M* A3 }& m6 @
  21.         if ( v3 )
    8 `$ D' s( Y4 M$ b6 j
  22.           operator delete[](v3);; |1 V1 r6 K( x6 |7 e0 F, L
  23.         v4 = (char *)operator new(6u);% B' k) w! o1 }" W: @
  24.         *v2 = v4;$ a8 }5 E; ~2 Y8 c9 w
  25.         *(_DWORD *)v4 = 0;
    6 X9 t4 r- {, t. A4 ]
  26.       }
    + b* j" t8 V; K2 q
  27.     }  D+ W% ~6 Y/ v& c, l6 v8 ~# ?
  28.   }) w) k- `5 U' T0 M2 S
  29. }
复制代码

: Q" I: r' K2 I3 R6 F7 G! H6 D汇编代码) t9 b& D. F. Q4 M% m  F8 d
  1. .text:004010F0
    6 D1 Z0 l  H5 q5 i" H" p
  2. .text:004010F0 ; =============== S U B R O U T I N E =======================================
      t2 i0 q* b' E7 i- i7 j' U! m/ n
  3. .text:004010F0  u8 v6 E& V# }( ~
  4. .text:004010F0) J; x! }( @9 o$ g, b
  5. .text:004010F0 sub_4010F0      proc near               ; CODE XREF: _main+139↓p
    9 K+ \) c9 Z% l4 I* W
  6. .text:004010F0                                         ; sub_403240+97E↓p ...* ~3 H  i: r6 L
  7. .text:004010F04 J: d* C7 p2 ?/ Z
  8. .text:004010F0 arg_0           = dword ptr  4  ?5 B; G# h) Q, p4 d' e& W
  9. .text:004010F09 C. [! t/ |  _
  10. .text:004010F0                 mov     eax, [ecx]
    * J, y6 }+ C5 |4 P
  11. .text:004010F2                 test    eax, eax
    # g( |1 V+ L# U% R# A
  12. .text:004010F4                 mov     edx, [esp+arg_0]
    # x6 u' [: w3 z1 p
  13. .text:004010F8                 jz      short loc_401147! S5 v9 M( N; `1 M' p# N3 E! V
  14. .text:004010FA                 test    edx, edx
    * X) `, S' Z% N' f
  15. .text:004010FC                 jz      short loc_4011471 u# N$ W6 N; r1 z" {
  16. .text:004010FE                 mov     cl, [eax]
    8 {% g7 F) b9 I$ y% A# s2 x: @* `
  17. .text:00401100                 test    cl, cl
    4 }% }) h$ f* n: l+ Y2 j+ x
  18. .text:00401102                 jnz     short loc_401116
    7 ~+ u" k# @( b% l$ T% E7 a# k0 Q
  19. .text:00401104                 cmp     byte ptr [edx], 0
    : p. l+ B' f% ~: F. b  s6 |
  20. .text:00401107                 setz    al* r( _, a7 r2 z- z
  21. .text:0040110A                 xor     edx, edx
    2 y% x" y8 q. x3 i, _2 v
  22. .text:0040110C                 test    al, al3 q3 Q4 t+ ]: l5 K% \9 {4 V
  23. .text:0040110E                 setz    dl
    1 l; R" P$ N, t7 h5 p; W
  24. .text:00401111                 mov     al, dl6 c6 h+ G  v$ b. D( g
  25. .text:00401113                 retn    4. P6 _) B8 C$ u0 t; ?. c( K( _, h
  26. .text:00401116 ; ---------------------------------------------------------------------------
    0 f, ?6 f& |& r; A
  27. .text:004011164 x* c: S2 @" M
  28. .text:00401116 loc_401116:                             ; CODE XREF: sub_4010F0+12↑j, {* B0 w  d2 Z3 `+ N
  29. .text:00401116                 cmp     byte ptr [edx], 0
    0 Y' e' D/ H* j- S" I  e3 o% c
  30. .text:00401119                 jz      short loc_4011478 f/ N9 Q+ i- N8 T
  31. .text:0040111B                 jmp     short loc_401120- Z$ ~6 z5 ^" j; O- |
  32. .text:0040111B ; ---------------------------------------------------------------------------! D9 M. S1 C! d/ q6 s! d* V
  33. .text:0040111D                 align 10h
    $ q/ o- r$ l3 L: y
  34. .text:00401120
    - i  [9 N# ~" F" c3 A4 Z2 }( |
  35. .text:00401120 loc_401120:                             ; CODE XREF: sub_4010F0+2B↑j* D9 l$ {2 S% Y+ C( l) L1 ?
  36. .text:00401120                                         ; sub_4010F0+3B↓j" s; a  R$ q" S( [0 k" ?
  37. .text:00401120                 cmp     cl, [edx]
    ! R' }0 `# Y( @* S+ b2 A& T6 Q3 i3 y
  38. .text:00401122                 jnz     short loc_40112D( Z* ~4 G1 U- n' u/ |, g/ I; |
  39. .text:00401124                 mov     cl, [eax+1]
    4 s, R: ~2 i4 L8 g+ D/ `
  40. .text:00401127                 inc     eax8 I( Z0 ?  ?9 I' a
  41. .text:00401128                 inc     edx% V) t, B; f$ V  N+ I
  42. .text:00401129                 test    cl, cl( U9 \: y: R# k  I
  43. .text:0040112B                 jnz     short loc_4011207 K% n9 y6 v  C8 P7 W4 H
  44. .text:0040112D
      z. V1 R* z" g6 @9 R; r
  45. .text:0040112D loc_40112D:                             ; CODE XREF: sub_4010F0+32↑j9 ?8 ?2 j6 R$ ^( u, Y4 I
  46. .text:0040112D                 movzx   eax, byte ptr [eax]+ E7 W" P2 F: x. H8 [
  47. .text:00401130                 movzx   ecx, byte ptr [edx]
    2 O7 p1 o1 w$ ?, f
  48. .text:00401133                 sub     eax, ecx
    9 z& x% M7 L0 y3 @2 a5 m- b
  49. .text:00401135                 neg     eax/ v7 U/ w/ N( A2 J: z0 G
  50. .text:00401137                 sbb     al, al
    : t( Y! c1 v: n1 `: \/ R/ X) i( R5 {
  51. .text:00401139                 inc     al
    & a: d' W1 J0 R5 r
  52. .text:0040113B                 xor     edx, edx/ T8 Y; q6 g0 L. Y2 Y1 e$ }/ y
  53. .text:0040113D                 test    al, al5 C8 ^/ o4 X; `$ j: g6 ~  c
  54. .text:0040113F                 setz    dl
    1 Q" R! R5 N- {: x- l
  55. .text:00401142                 mov     al, dl9 L# j8 u0 |( m+ A2 Q
  56. .text:00401144                 retn    4
    / w+ d% }9 `' E5 E/ L  z4 d2 E
  57. .text:00401147 ; ---------------------------------------------------------------------------; n$ Y7 ?% I# S8 M) i
  58. .text:00401147
    ) W5 E! W5 B6 r: R* I, w( V
  59. .text:00401147 loc_401147:                             ; CODE XREF: sub_4010F0+8↑j
    " t  D9 H% v  {
  60. .text:00401147                                         ; sub_4010F0+C↑j ...4 Y% I. t* v1 H% \
  61. .text:00401147                 xor     al, al9 k8 }5 a8 v0 W) H7 K8 F$ C! q8 N; t
  62. .text:00401149                 xor     edx, edx( a( o8 ^$ b* K
  63. .text:0040114B                 test    al, al
    ; ^" {8 W8 [) A
  64. .text:0040114D                 setz    dl
    # B% P: S; R4 s/ D% w  e& U6 ?
  65. .text:00401150                 mov     al, dl/ @) V5 Z0 d5 f0 g
  66. .text:00401152                 retn    4; B  p* G" u4 Y: j8 P3 F& b
  67. .text:00401152 sub_4010F0      endp
    1 l$ d7 x. A  `* ]1 w3 u5 t" [
  68. .text:00401152
    0 O9 q, p7 E9 o1 D2 J0 w! {1 m9 `
  69. .text:00401152 ; ---------------------------------------------------------------------------# l3 O" l2 G0 v/ g6 Y7 W+ Y; y' q/ _
  70. .text:00401155                 align 10h
    ; n4 F; O1 x4 M- y2 j
  71. .text:00401160
    5 U& I9 ?+ E+ e: g! v
  72. .text:00401160 ; =============== S U B R O U T I N E =======================================; j& Y3 H" }0 D$ K  k
  73. .text:00401160
    6 d; T' I" B6 e, S
  74. .text:00401160  y& V  i0 O+ b/ U1 F  y5 o
  75. .text:00401160 sub_401160      proc near               ; CODE XREF: sub_4013D0+15↓p( H$ Y# z! X( A, t! y
  76. .text:00401160                                         ; sub_4013F0+C↓p ...7 z# G; s# D/ ?! t4 M2 {
  77. .text:00401160: ?, ~0 F5 F# M) M) ^4 l0 {) E/ t
  78. .text:00401160 arg_0           = dword ptr  4
    / A$ [& a0 c) [' F7 T/ k5 v
  79. .text:00401160. j9 c* ~/ N! w
  80. .text:00401160                 push    esi
    . ]/ Z# \% X+ y3 E7 ?0 y
  81. .text:00401161                 push    edi
    : X& T: T# j; b* E( O/ ^
  82. .text:00401162                 mov     edi, [esp+8+arg_0]
    8 ~( o  O0 |" ^5 d( O& b" _
  83. .text:00401166                 test    edi, edi% I# b8 B7 H8 @
  84. .text:00401168                 mov     esi, ecx9 ]+ p9 R; E9 f
  85. .text:0040116A                 jz      short loc_4011CA- K' f. M) k8 R0 W& Z  E2 p4 y$ _
  86. .text:0040116C                 mov     eax, [esi]5 n! @0 E/ r0 L  k1 j
  87. .text:0040116E                 cmp     edi, eax. E3 ?: |, z: y. o2 L* u
  88. .text:00401170                 jz      short loc_4011CA) X. H4 Q! G0 |) U4 v9 {$ u4 S! Y' Q5 J
  89. .text:00401172                 cmp     byte ptr [edi], 0
    3 }7 d  m7 R7 f7 q  ?
  90. .text:00401175                 jnz     short loc_4011A2
    8 @* R: m: @8 C9 Y" W' P
  91. .text:00401177                 test    eax, eax
    * x! {2 k* q1 R. s/ c
  92. .text:00401179                 mov     dword ptr [esi+4], 1* ?, N6 G5 h' {  C8 G
  93. .text:00401180                 jz      short loc_40118B
    0 @. [/ N5 ~) U! w# C
  94. .text:00401182                 push    eax             ; void *
      g' n  [' \6 ?- q" R0 R& v7 X. j' z* N
  95. .text:00401183                 call    ??_V@YAXPAX@Z   ; operator delete[](void *)
    ' M% e2 x  B5 d
  96. .text:00401188                 add     esp, 4
    ! `4 c7 V' M+ E8 q
  97. .text:0040118B
    3 F( ?9 Q' j8 k+ {% z  P; T% l
  98. .text:0040118B loc_40118B:                             ; CODE XREF: sub_401160+20↑j
    1 a  R5 q% I+ ^  Y6 Z% H' t
  99. .text:0040118B                 push    6               ; Size
    ' j8 E  G8 w/ q: \
  100. .text:0040118D                 call    j_??2@YAPAXI@Z  ; operator new(uint)9 [9 u% B% B2 t  S# z
  101. .text:00401192                 add     esp, 41 n" N5 d  [! i2 b6 V& h
  102. .text:00401195                 mov     [esi], eax4 Q+ @- `2 q/ x* F
  103. .text:00401197                 pop     edi
    0 |" Y3 E. e; W$ }, b. c
  104. .text:00401198                 mov     dword ptr [eax], 0
    + V! ]7 q8 A: M- }4 b7 H% F
  105. .text:0040119E                 pop     esi
    ) f7 e# t. E8 S; k1 i* v! e* }+ f
  106. .text:0040119F                 retn    4
    5 [+ v0 m7 s: L- ^
  107. .text:004011A2 ; ---------------------------------------------------------------------------
      k& Q# H+ C' o! M0 z. ?
  108. .text:004011A2
    , k3 [+ Z! R9 F$ [( ?" a+ \0 d
  109. .text:004011A2 loc_4011A2:                             ; CODE XREF: sub_401160+15↑j" q4 H/ E( E2 U  U- v6 p, D$ Q
  110. .text:004011A2                 mov     eax, edi& C3 U0 w) g( u9 T6 p
  111. .text:004011A4                 lea     edx, [eax+1]
    # t3 X; }7 G8 @; H8 T' N
  112. .text:004011A78 x, [) t$ v8 N9 u! l8 D2 ~5 H$ X
  113. .text:004011A7 loc_4011A7:                             ; CODE XREF: sub_401160+4C↓j; E  Z' @: @- d
  114. .text:004011A7                 mov     cl, [eax]& P- f6 u4 T. h
  115. .text:004011A9                 inc     eax
    7 |) D/ _( E$ X
  116. .text:004011AA                 test    cl, cl, c2 `9 L# x8 }* Q. f4 K
  117. .text:004011AC                 jnz     short loc_4011A7' ^, f; Y! H- y+ E+ r# K
  118. .text:004011AE                 sub     eax, edx
    ' Y/ _/ s3 T! r
  119. .text:004011B0                 push    eax
      W. `: H; F+ u' A" f
  120. .text:004011B1                 mov     ecx, esi
    8 p; S) m. K2 I5 E2 G3 H
  121. .text:004011B3                 call    sub_401030! K. j" _% d( t: C4 x% j  ?5 n( X" I
  122. .text:004011B8                 mov     edx, [esi]; f; A+ @: S& P' H9 A' P
  123. .text:004011BA                 mov     ecx, edi
    4 A5 y: k6 p0 v$ G1 W# {
  124. .text:004011BC                 lea     esp, [esp+0]
    & p( ?+ |+ D! B4 `
  125. .text:004011C0
    3 }" ?8 B! X7 d- D% n, @" I/ h+ j: v1 H
  126. .text:004011C0 loc_4011C0:                             ; CODE XREF: sub_401160+68↓j
    ; y1 [+ a- [  r
  127. .text:004011C0                 mov     al, [ecx]
    1 O- v) m) ^+ R* S: O& m7 S, M
  128. .text:004011C2                 inc     ecx
    : P* U: x. L3 W7 c; Z
  129. .text:004011C3                 mov     [edx], al* ^9 p# G$ }% O9 q& q- U
  130. .text:004011C5                 inc     edx; O" d) v5 J3 y, u0 s( G
  131. .text:004011C6                 test    al, al: H5 h( ^. D1 z  f& L0 |; |
  132. .text:004011C8                 jnz     short loc_4011C0
    - d9 Q  u  o; }
  133. .text:004011CA
    7 y' K5 {2 p4 \, k4 j& X3 I, S
  134. .text:004011CA loc_4011CA:                             ; CODE XREF: sub_401160+A↑j
    ! b6 i, ?$ l" U5 w) U- p
  135. .text:004011CA                                         ; sub_401160+10↑j
    ' S1 o( s! p' l% X
  136. .text:004011CA                 pop     edi& v/ L5 ?) c2 @8 v/ k
  137. .text:004011CB                 pop     esi
    ; r* `, N0 S9 o$ P& g5 p" I
  138. .text:004011CC                 retn    47 Q( f  Y, X. G
  139. .text:004011CC sub_401160      endp
    ) R: i! y! g/ b1 t% }, a! c
  140. .text:004011CC
    2 L: q& \4 R$ A+ b3 [% Z' H
  141. .text:004011CC ; ---------------------------------------------------------------------------
复制代码
( Y2 M' h, V! K3 x8 V$ h9 F& ^$ C: c

2 n& F3 {$ X  F# g# R
+ t# H2 C9 L7 v: [# E6 h
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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