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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-27 13:23 编辑
: M' R. g( h; |) n  \* F! ~4 P% i. p' P  b
本游戏采用了CEGUI,该组件能采用directx和opengl。9 U2 i: N. c& x+ h. d
经过我的小方块测试,游戏屏幕显示了小方块,因此确认是directx9的游戏。
- Q" n3 q( g0 b* i/ y游戏自带一个EngineSetup.exe程序,设置为窗口模式后就能用cheatengine调式。
7 z/ K7 J9 h$ d" W! d(由于游戏窗口较大,我将游戏屏幕和cheatengine分别显示到2个显示器上即可。)
8 \1 r2 M0 b. z. N3 p9 {) |
8 T: E* g- [/ |1 k1 t
/ t3 T2 O0 X; p; t* v' C在游戏中找一个字幕,在以下地方断下。- r! G8 n* l0 J, @% f+ \4 ^
由于该游戏基本都是显示在屏幕固定位置(上或者下,居中),9 c8 l1 T' B9 J* c, K. |
因此暂时认为此处就是游戏的字幕函数,该函数被20处左右地方调用。
! x- S& m; J, T+ {  [) }. w5 [1 w0 j' R7 Q0 U+ b4 p. K
  1. NextLife.exe+11C5 - 42                    - inc edx
    3 b! T6 B7 C% N, Q+ O
  2. 004011C5
复制代码
; W9 b. W2 v' l* N9 S3 T1 O
7 p8 V5 ^2 b/ y' K
该地方的伪代码1 E# V1 G8 k* H4 g% D
  1. void __thiscall sub_401160(char **this, const char *a2)
    7 ^# ^6 E3 r9 L* ~' y) `+ j0 c8 B
  2. {
    1 A: K8 J; |; Q$ X1 {" u
  3.   char **v2; // esi
    4 n& y7 j/ Q3 a# M1 K
  4.   char *v3; // eax
    % ?# X6 j, G7 ^5 i; c
  5.   char *v4; // eax0 Y- A+ A* ]' _% W5 K8 P% O5 B+ ^

  6. 4 ]+ [0 H1 Y' O- ?2 m
  7.   v2 = this;- _% G) J$ M  s) q
  8.   if ( a2 ): [% h8 ]& K5 {
  9.   {5 s% ~: |4 _, r8 V$ Q
  10.     v3 = *this;
    4 A+ E, R- d7 h2 o+ ~
  11.     if ( a2 != *this )9 K0 H0 `7 X3 d  P- G
  12.     {
    1 @& o! i- E1 c, {; a% }7 |9 J
  13.       if ( *a2 )
    , j9 A' q5 Z; I( D5 C
  14.       {
    / m9 W5 y+ s/ W. x* g8 I
  15.         sub_401030(strlen(a2));; W7 @/ F$ n" X3 Q& p
  16.         strcpy(*v2, a2);
    ! l7 b6 a9 B& _
  17.       }2 P! ~' j0 H: b% W; K
  18.       else
    $ ~0 N% N% b5 n1 n3 [5 B/ Y
  19.       {1 j4 x. u" E: f( j- v
  20.         this[1] = (char *)1;) R* n( |+ r8 m2 \+ {/ Y
  21.         if ( v3 )) @1 p' \( Y9 ?9 W) F, D3 X- |
  22.           operator delete[](v3);
    : |7 m  }# N! l& j( Z+ y
  23.         v4 = (char *)operator new(6u);
    : i$ J4 R/ u8 L8 M3 l) c
  24.         *v2 = v4;3 A6 D* z3 K6 z8 S7 J: T
  25.         *(_DWORD *)v4 = 0;1 a0 M1 Q$ m$ F; s9 I
  26.       }
    " P0 k" P& r. Y% m8 k0 |
  27.     }
    + c) p  N& T% T# Z1 k1 U4 j) W
  28.   }
    / @, M+ ?$ `5 X- M8 @: Q* N& m
  29. }
复制代码

: C" S2 e  p; `: i( [% `- Y汇编代码2 D" L$ x4 @& L. |1 `( w5 T, r9 f
  1. .text:004010F0. s; P# d  Y* Z9 ~# {! g. s' G
  2. .text:004010F0 ; =============== S U B R O U T I N E =======================================
    ) E% f0 c& f* s5 {2 f" h& ?
  3. .text:004010F0
    : k" @. S3 @& f& D% o; b: A
  4. .text:004010F0
    ( o4 A8 a  B6 ^, S; h3 {1 G
  5. .text:004010F0 sub_4010F0      proc near               ; CODE XREF: _main+139↓p
    + a3 r0 K$ e9 g" t& N
  6. .text:004010F0                                         ; sub_403240+97E↓p ...
    " h  g$ X; a2 E$ L
  7. .text:004010F0! g( y  u& O1 ?  M" Z9 [
  8. .text:004010F0 arg_0           = dword ptr  4) D  M3 N# G8 h& R
  9. .text:004010F0
    5 A4 D; X& K3 T$ V/ x% {' x
  10. .text:004010F0                 mov     eax, [ecx]4 C( P& C8 l; b* O' A
  11. .text:004010F2                 test    eax, eax9 b# C! `2 l  [- ]: e
  12. .text:004010F4                 mov     edx, [esp+arg_0]# k& m+ a' S2 w$ l# E5 v* `5 F$ \
  13. .text:004010F8                 jz      short loc_401147% J+ \& S7 q: b2 S; F; v
  14. .text:004010FA                 test    edx, edx
    . s& j) e" c+ l) ^& H9 }- X
  15. .text:004010FC                 jz      short loc_401147) I( g9 C" d/ T
  16. .text:004010FE                 mov     cl, [eax]3 k/ Z0 {+ b1 r" A
  17. .text:00401100                 test    cl, cl
    / h8 `7 J3 y! c. c
  18. .text:00401102                 jnz     short loc_401116
    9 L' [+ ~) o3 L& P
  19. .text:00401104                 cmp     byte ptr [edx], 0
    # T0 a3 \' [: O- i$ Q. L0 P
  20. .text:00401107                 setz    al
    ( U4 G; ^6 K1 y4 }
  21. .text:0040110A                 xor     edx, edx
    7 v( A) U7 _- ~& c* E3 m
  22. .text:0040110C                 test    al, al
    6 u( p' Y6 b/ B2 w% u5 Z
  23. .text:0040110E                 setz    dl0 X) q/ g  ^% y: @
  24. .text:00401111                 mov     al, dl
      H+ f: y1 R3 i7 }" t3 C
  25. .text:00401113                 retn    4$ |, t, O) V3 |5 M5 N. d
  26. .text:00401116 ; ---------------------------------------------------------------------------) d$ ~  w: T0 k1 x8 w% J
  27. .text:004011167 x& i! E4 \) B- u/ c
  28. .text:00401116 loc_401116:                             ; CODE XREF: sub_4010F0+12↑j
    , }1 q! b, R. g, X# F. f
  29. .text:00401116                 cmp     byte ptr [edx], 08 {# W! [" V3 o- }
  30. .text:00401119                 jz      short loc_4011478 V. I& k2 I8 a& P0 s7 ]3 h$ z4 W
  31. .text:0040111B                 jmp     short loc_4011204 r$ Q; @/ A% ?* [8 B4 f0 F
  32. .text:0040111B ; ---------------------------------------------------------------------------
    & C' w+ b. X8 n9 [8 Y
  33. .text:0040111D                 align 10h
    ! T" T1 A) J* ^1 h9 G& @/ ~
  34. .text:00401120
    - ^5 Z/ i" H' F2 H
  35. .text:00401120 loc_401120:                             ; CODE XREF: sub_4010F0+2B↑j
    $ I9 U" m( U. R  I
  36. .text:00401120                                         ; sub_4010F0+3B↓j: _* U" ^% c- y* g; Z
  37. .text:00401120                 cmp     cl, [edx]
    / u+ Q0 A3 V) W
  38. .text:00401122                 jnz     short loc_40112D3 m. E- u2 e6 |( D" U" C' S
  39. .text:00401124                 mov     cl, [eax+1], t: r3 l  m5 t; r/ b2 G7 C& \
  40. .text:00401127                 inc     eax4 U4 B8 s' A' b6 y
  41. .text:00401128                 inc     edx
    ) y( r, Y1 r7 S3 M2 |6 i* J
  42. .text:00401129                 test    cl, cl
    $ @9 \! L, s6 v* M) [$ \6 m  ^* K
  43. .text:0040112B                 jnz     short loc_401120
    ; ^) |3 V1 G/ T6 K
  44. .text:0040112D
    " P% R: G$ e: d% l; }; u9 W
  45. .text:0040112D loc_40112D:                             ; CODE XREF: sub_4010F0+32↑j
    ! Z* z! o! z* U+ k7 d% S
  46. .text:0040112D                 movzx   eax, byte ptr [eax]0 W  g$ O/ N, a7 {' v% m) b$ e
  47. .text:00401130                 movzx   ecx, byte ptr [edx]
    ' Y  X: X2 C9 @9 O3 H" j8 E
  48. .text:00401133                 sub     eax, ecx6 ~/ i7 P8 D( q7 Z+ p- [5 }8 B0 Y
  49. .text:00401135                 neg     eax& m) {! Y; v" E' V$ Q( O/ t: K: c
  50. .text:00401137                 sbb     al, al
    ! K, D$ W: o2 [. D, l7 p/ V
  51. .text:00401139                 inc     al
    . }' m0 C5 f. l
  52. .text:0040113B                 xor     edx, edx6 i, |) R/ Q6 P# u
  53. .text:0040113D                 test    al, al0 m5 |3 T: ?8 G9 T
  54. .text:0040113F                 setz    dl- o" p, ~# S# o, `: P0 v
  55. .text:00401142                 mov     al, dl5 U6 g8 D$ j* \( ^# O; R) \
  56. .text:00401144                 retn    49 Y* Z' s! ^$ U( Z' {
  57. .text:00401147 ; ---------------------------------------------------------------------------1 B* U% l2 A9 ]8 \8 k0 N: O1 d; u
  58. .text:00401147
    , q5 p% m9 E5 I+ y: E. e; @! y0 o6 r; e
  59. .text:00401147 loc_401147:                             ; CODE XREF: sub_4010F0+8↑j; O+ Q0 K  t- f3 }1 E" H
  60. .text:00401147                                         ; sub_4010F0+C↑j ...
    , ~. I  `3 d: b" T; k
  61. .text:00401147                 xor     al, al
    " E, d% u2 I# W
  62. .text:00401149                 xor     edx, edx* ]: O7 V# Q. K$ O
  63. .text:0040114B                 test    al, al
      I; k3 u  ]2 g# D4 c, r& X9 |
  64. .text:0040114D                 setz    dl
    9 Y2 W# x" \4 i% y# J$ _0 w
  65. .text:00401150                 mov     al, dl
    * A2 t' X/ S, x* J) [
  66. .text:00401152                 retn    4( E( Y* k- [5 F
  67. .text:00401152 sub_4010F0      endp
    5 j+ w) x' ]7 K4 u
  68. .text:00401152
    % m5 s- j# O- j) z8 ^) S* s
  69. .text:00401152 ; ---------------------------------------------------------------------------
    : H6 T3 _5 Z7 U# V6 J
  70. .text:00401155                 align 10h
    # M" F$ P) j2 n4 F. I; @3 a7 E
  71. .text:004011602 a6 b8 r, y! q* e5 C( X/ C" Y! [4 O
  72. .text:00401160 ; =============== S U B R O U T I N E =======================================
    7 l8 }2 S% I1 K6 e0 h. b! o
  73. .text:00401160
    , H0 k' |/ b( V' R
  74. .text:004011605 S! I: K2 K* d- [+ Q+ f9 \# y- m
  75. .text:00401160 sub_401160      proc near               ; CODE XREF: sub_4013D0+15↓p" ^9 I! o' l, K: X. }$ M
  76. .text:00401160                                         ; sub_4013F0+C↓p ...
    ( ^$ h1 E. M' y8 j* ~
  77. .text:004011604 \4 N9 ~4 U! T6 X7 F
  78. .text:00401160 arg_0           = dword ptr  4
    7 ~6 A4 i2 ?- Y1 I5 m6 s0 x
  79. .text:00401160. q. Y( i9 x  F/ [$ ~8 ^0 v
  80. .text:00401160                 push    esi/ @: K! S+ i5 C1 K  Z: g/ J
  81. .text:00401161                 push    edi; ?/ u0 J1 [' O5 W) W
  82. .text:00401162                 mov     edi, [esp+8+arg_0]
    , C4 N1 k( q, ]8 M
  83. .text:00401166                 test    edi, edi2 Y; a( k3 b7 O9 w/ D9 Z( J+ c6 G
  84. .text:00401168                 mov     esi, ecx
    : r& [7 J% L( Z" Y
  85. .text:0040116A                 jz      short loc_4011CA: J4 \7 m$ V% a7 y; q
  86. .text:0040116C                 mov     eax, [esi]( L% M1 g4 P$ C. V
  87. .text:0040116E                 cmp     edi, eax
    3 s1 ^$ n  I! F9 j, t, U
  88. .text:00401170                 jz      short loc_4011CA% v, A& w! w$ j) U; s9 e7 p6 W
  89. .text:00401172                 cmp     byte ptr [edi], 0
    7 _/ D7 I1 j8 S4 s/ \5 _6 a
  90. .text:00401175                 jnz     short loc_4011A2
    ' u5 g& @" q: Q0 ^  e9 ^
  91. .text:00401177                 test    eax, eax
    - Y2 W& Q$ F" o
  92. .text:00401179                 mov     dword ptr [esi+4], 1* {2 Q6 L+ S/ q4 `5 T# w  z
  93. .text:00401180                 jz      short loc_40118B
    / W# v& p" z5 d, [' C, P. P
  94. .text:00401182                 push    eax             ; void *
    ( _1 p& i8 g; X* n& ^) Z: L; `
  95. .text:00401183                 call    ??_V@YAXPAX@Z   ; operator delete[](void *)
    + S: w8 G4 u2 {$ ~) ]& C; N2 C( G
  96. .text:00401188                 add     esp, 4$ O8 z3 d$ ~+ I* g  D' v3 f2 a- Z
  97. .text:0040118B, _9 X; ?4 }; j
  98. .text:0040118B loc_40118B:                             ; CODE XREF: sub_401160+20↑j) u7 S) B9 E' S- x
  99. .text:0040118B                 push    6               ; Size
    % b& q" o4 j6 b: _* Q
  100. .text:0040118D                 call    j_??2@YAPAXI@Z  ; operator new(uint)
    ; {9 e) ]$ Z1 g% q0 [9 a
  101. .text:00401192                 add     esp, 43 h' F2 s) _6 s5 H
  102. .text:00401195                 mov     [esi], eax- v/ E$ S: L6 n- _  `
  103. .text:00401197                 pop     edi, s( X1 i' k2 B1 t: a
  104. .text:00401198                 mov     dword ptr [eax], 0
    / ]; \3 c0 b% f7 [* p5 z/ M
  105. .text:0040119E                 pop     esi
    : u) c# y% d( \( N
  106. .text:0040119F                 retn    4  J) o9 w  R" b% \, R
  107. .text:004011A2 ; ---------------------------------------------------------------------------
    0 v0 k+ m* _5 Z1 J
  108. .text:004011A29 w8 h9 U- a3 P5 x
  109. .text:004011A2 loc_4011A2:                             ; CODE XREF: sub_401160+15↑j
    / O: Y: ]% u7 T! h
  110. .text:004011A2                 mov     eax, edi( U, @0 K6 F/ d+ b
  111. .text:004011A4                 lea     edx, [eax+1]/ x) I3 v- ]# [* y& p" k
  112. .text:004011A7
    ( b# i0 Q0 e1 d
  113. .text:004011A7 loc_4011A7:                             ; CODE XREF: sub_401160+4C↓j, d+ H( |" ^5 s0 F2 [" [4 T
  114. .text:004011A7                 mov     cl, [eax]
    , U) }( d) x! k$ D
  115. .text:004011A9                 inc     eax
    ' o  W0 Q  G8 C- z6 t/ ]- t
  116. .text:004011AA                 test    cl, cl% b5 a# J' `5 S- M/ T0 c
  117. .text:004011AC                 jnz     short loc_4011A7
    8 `* _  Q" G) t$ U% L$ |
  118. .text:004011AE                 sub     eax, edx( y% y+ C' f0 h# a9 f. |
  119. .text:004011B0                 push    eax
    4 q6 r7 j  X$ N
  120. .text:004011B1                 mov     ecx, esi4 _6 W% o1 Z, I
  121. .text:004011B3                 call    sub_4010306 a( s: p0 i8 X0 r
  122. .text:004011B8                 mov     edx, [esi]; H7 J" T1 @- |
  123. .text:004011BA                 mov     ecx, edi
    9 V5 s3 I; k0 z# J# p/ q
  124. .text:004011BC                 lea     esp, [esp+0]
    % {5 Z0 j# [* z" F
  125. .text:004011C09 O- L: B6 s" X8 v9 W
  126. .text:004011C0 loc_4011C0:                             ; CODE XREF: sub_401160+68↓j6 Z/ L1 v$ |4 L& Y  @: q
  127. .text:004011C0                 mov     al, [ecx]
    3 U& w3 n/ X& V- C3 C% V8 S2 P
  128. .text:004011C2                 inc     ecx6 u4 J2 [# \. b7 ^7 c; k
  129. .text:004011C3                 mov     [edx], al
    ; a- c! C2 r% @  K  Q! D+ d
  130. .text:004011C5                 inc     edx; Q! i7 D; ]+ s* [  x4 P! d
  131. .text:004011C6                 test    al, al
    ( x% t+ s' `$ L$ ~* O6 F
  132. .text:004011C8                 jnz     short loc_4011C0
    ) {9 m8 R/ M6 h7 I1 }9 y
  133. .text:004011CA4 G9 n- |& {& @+ x
  134. .text:004011CA loc_4011CA:                             ; CODE XREF: sub_401160+A↑j
    " g: @( \1 r9 c4 k6 i' v6 V3 j
  135. .text:004011CA                                         ; sub_401160+10↑j( Q. j  a. {* m7 `, \8 `! a
  136. .text:004011CA                 pop     edi$ m+ f' n- c2 D. E% T, m
  137. .text:004011CB                 pop     esi; ?1 q# M4 y/ \; b* G/ w
  138. .text:004011CC                 retn    4
    & G1 {7 u3 y. Y) C- r$ J) M
  139. .text:004011CC sub_401160      endp
    + |$ A4 Z0 U; T/ ~
  140. .text:004011CC2 h- r4 A6 V6 D7 [) q
  141. .text:004011CC ; ---------------------------------------------------------------------------
复制代码
. `* ]7 q  L6 i0 Z
: _1 [. }" {% o; L( X7 W
) K9 [4 s1 s; W, ]; |3 |( X4 q# W/ z
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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