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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-27 13:23 编辑
7 w9 N9 y6 q! Q1 w0 p6 |
  k+ y1 X" z" M& x' d本游戏采用了CEGUI,该组件能采用directx和opengl。! p; v0 V3 {4 D) _, q4 q
经过我的小方块测试,游戏屏幕显示了小方块,因此确认是directx9的游戏。
/ h2 j) g1 K6 b6 t1 t  h游戏自带一个EngineSetup.exe程序,设置为窗口模式后就能用cheatengine调式。
/ a1 ~' P2 b1 v# r(由于游戏窗口较大,我将游戏屏幕和cheatengine分别显示到2个显示器上即可。). \1 s1 d! t: O4 [, w; Q' w' I  s( J
' k8 r6 o4 }* O# O

6 Q' C  \7 @9 y$ j$ D9 [& |在游戏中找一个字幕,在以下地方断下。
) y9 |) u8 A* Z' o* ?由于该游戏基本都是显示在屏幕固定位置(上或者下,居中),' x/ D% E* B' _8 p3 y4 o7 @
因此暂时认为此处就是游戏的字幕函数,该函数被20处左右地方调用。% V4 \$ i& S1 X
1 k' v* W2 G$ P* V( N, B
  1. NextLife.exe+11C5 - 42                    - inc edx( h2 v; j, S! ?2 U" B  E
  2. 004011C5
复制代码
2 \1 S4 d) o+ o2 t# E( o" q
( J' i- d0 I2 V8 {
该地方的伪代码
6 b: ?1 `7 C- J- w" X0 L! Y
  1. void __thiscall sub_401160(char **this, const char *a2)
    # ^* L# H* d5 Q0 a! I8 q, g
  2. {
    ! k+ {7 }1 y1 b6 z3 I- d
  3.   char **v2; // esi
    ) {$ x/ u' h" o' O+ }: K
  4.   char *v3; // eax( L- i, b  j7 p  r# S3 e
  5.   char *v4; // eax
      w7 e5 _8 [* |- N

  6. 1 Q/ O# |  R0 O5 |; @, K. t
  7.   v2 = this;/ `, F, l$ T4 G1 h( E
  8.   if ( a2 )0 z$ b. `7 z- |+ w: F
  9.   {* z+ t; t# S/ w) y* a1 J! i0 ~' l0 i
  10.     v3 = *this;: n8 ^/ `  [! y. Z2 B
  11.     if ( a2 != *this )
    7 H# b+ Y6 Q1 g; M" B( v
  12.     {
    % p9 p3 _% p* h0 C9 p: B  u
  13.       if ( *a2 )
    ) U( T( U) R; P
  14.       {
    & q' ?2 W, A: y1 s4 x
  15.         sub_401030(strlen(a2));! o+ s) W9 K* `7 w8 `# t- Q
  16.         strcpy(*v2, a2);
    " z1 k# p! Y5 Z, ?$ x: [
  17.       }$ y$ B5 w0 }! q  l+ Y
  18.       else5 n7 f! P6 g& f) H! W( B
  19.       {% z# l/ B  S6 h- i5 c5 l
  20.         this[1] = (char *)1;
    3 t" l( g, _; c, s$ V  V2 T/ [$ W
  21.         if ( v3 )" E5 p9 J$ U3 n
  22.           operator delete[](v3);/ M0 t# N3 [4 N- A/ u! L' }* A
  23.         v4 = (char *)operator new(6u);. N- p6 P2 p9 \
  24.         *v2 = v4;( p* J2 C9 ]. }7 d5 g
  25.         *(_DWORD *)v4 = 0;! B0 A/ i2 `( p
  26.       }# \6 V: b6 J( m! Z; c% ~
  27.     }7 s5 A8 Z, i* d+ n" |
  28.   }
    1 F$ @  a7 A( G
  29. }
复制代码
; M; b/ k! h: J; s7 a$ q/ B
汇编代码
7 e* @+ g8 S5 p; b
  1. .text:004010F0
    : k2 y5 f/ O  |
  2. .text:004010F0 ; =============== S U B R O U T I N E =======================================
    6 d# H" N3 h$ ^6 L
  3. .text:004010F0
    2 T! g/ ]* a  N7 Z$ Q
  4. .text:004010F0) j+ m6 P& Q+ ?, V. ?' S; X. w+ z
  5. .text:004010F0 sub_4010F0      proc near               ; CODE XREF: _main+139↓p3 S$ `0 E: P- {
  6. .text:004010F0                                         ; sub_403240+97E↓p ...8 ]% I- y2 H- s  x
  7. .text:004010F01 l- V) W8 \, w
  8. .text:004010F0 arg_0           = dword ptr  4
    6 d9 N. M  e% y! s7 ~! _
  9. .text:004010F02 b& f" O1 \+ d6 A+ k* c+ [$ ~6 E" J' }
  10. .text:004010F0                 mov     eax, [ecx]
    ) g4 f! q, t1 z0 ]8 d4 V, z
  11. .text:004010F2                 test    eax, eax" x/ x2 D# f6 G3 K6 c2 _/ T
  12. .text:004010F4                 mov     edx, [esp+arg_0]
    . y6 q4 E* t) T; ]+ v* k
  13. .text:004010F8                 jz      short loc_401147
    + m3 k  S2 g& {- I
  14. .text:004010FA                 test    edx, edx
    ' e/ h9 o4 e* n  l
  15. .text:004010FC                 jz      short loc_401147
    * F- ~$ g* Q, s
  16. .text:004010FE                 mov     cl, [eax], v8 a# q: G6 z4 A7 ?, c: Y# r
  17. .text:00401100                 test    cl, cl* |! i/ N3 a+ y' A( l% J
  18. .text:00401102                 jnz     short loc_401116
    " B9 i& a0 p% d* B, j
  19. .text:00401104                 cmp     byte ptr [edx], 0
    ( o+ a1 y5 p( t: V
  20. .text:00401107                 setz    al
    " t$ Q( ]1 z- ~
  21. .text:0040110A                 xor     edx, edx! u' A+ ^* v! `2 _3 ]
  22. .text:0040110C                 test    al, al; ^) ?( ?" y$ c; W: z. ~6 L
  23. .text:0040110E                 setz    dl$ m7 D* \0 ?' z' k
  24. .text:00401111                 mov     al, dl" G. O% Z% d  K; ]+ e0 [9 x  p
  25. .text:00401113                 retn    4
    % q- ?8 U9 l3 y" C1 k5 N$ D
  26. .text:00401116 ; ---------------------------------------------------------------------------
    ( R" [! _; y: ?8 B6 w8 p
  27. .text:00401116
    7 C2 O$ N' o4 F/ O" @; v
  28. .text:00401116 loc_401116:                             ; CODE XREF: sub_4010F0+12↑j; w, C1 s. e4 O; O0 B6 M# H
  29. .text:00401116                 cmp     byte ptr [edx], 05 {1 a) z; l- Z( C2 A8 g
  30. .text:00401119                 jz      short loc_401147; u8 W1 V3 O) h4 t" P
  31. .text:0040111B                 jmp     short loc_401120: d$ l- i, }% ?/ q  S% \  N
  32. .text:0040111B ; ---------------------------------------------------------------------------
    1 C' O$ t0 h& R5 }
  33. .text:0040111D                 align 10h$ K4 w  Z, C8 J# [; M
  34. .text:00401120
    . y* F/ T* P, g. D! V
  35. .text:00401120 loc_401120:                             ; CODE XREF: sub_4010F0+2B↑j$ P6 Q  B$ Q$ W8 h5 j* D* q# q$ P
  36. .text:00401120                                         ; sub_4010F0+3B↓j
    $ D$ t0 V1 J4 H! b3 A: _5 c
  37. .text:00401120                 cmp     cl, [edx]7 x! A- x& q6 k" V  ]# v) c
  38. .text:00401122                 jnz     short loc_40112D
    . x. [* R, c) Z! J% |* k
  39. .text:00401124                 mov     cl, [eax+1]6 F- T' }/ l' S5 b: v% b
  40. .text:00401127                 inc     eax
    ; e6 m' S  q& u# D' `' s, u4 u0 P- [
  41. .text:00401128                 inc     edx6 L8 L/ O  c, _- k. R. _( r' V) t
  42. .text:00401129                 test    cl, cl/ [5 N3 s. v3 w/ W: F
  43. .text:0040112B                 jnz     short loc_401120! n/ C, `$ D! l- L7 i
  44. .text:0040112D
    - N% `% |4 x$ N# ?& W0 v7 Q& U
  45. .text:0040112D loc_40112D:                             ; CODE XREF: sub_4010F0+32↑j' ]. v' |  j! P  S
  46. .text:0040112D                 movzx   eax, byte ptr [eax]8 c3 Y( F2 V; P+ a) t" S) Y
  47. .text:00401130                 movzx   ecx, byte ptr [edx]
    + \7 ?1 ^& n3 u5 h/ ?
  48. .text:00401133                 sub     eax, ecx
      R7 u, x+ T$ f2 ]
  49. .text:00401135                 neg     eax! f, v2 p+ B* u/ {6 J8 x
  50. .text:00401137                 sbb     al, al
    5 K& k$ Z; w8 f* Y
  51. .text:00401139                 inc     al
    : H: h2 X- U8 Q9 U
  52. .text:0040113B                 xor     edx, edx
    * p! H. ^% p& y6 _" I
  53. .text:0040113D                 test    al, al
    6 \  r3 e/ B% |9 o% l3 G
  54. .text:0040113F                 setz    dl
    * F( y) }8 H3 L6 Z2 ^
  55. .text:00401142                 mov     al, dl
    2 q8 p4 ]( |. n6 \" C8 i
  56. .text:00401144                 retn    4$ T2 d1 F- f7 \1 U. [* P
  57. .text:00401147 ; ---------------------------------------------------------------------------6 T# O6 W9 o% B, @. p
  58. .text:00401147
    & O: J( j( t9 H
  59. .text:00401147 loc_401147:                             ; CODE XREF: sub_4010F0+8↑j
    3 x- P, Y( o) V$ p! K7 z9 a
  60. .text:00401147                                         ; sub_4010F0+C↑j ...+ X1 W! m* `$ S' Y3 }, n
  61. .text:00401147                 xor     al, al
    0 U" m/ d& F; u0 g' \4 `, x
  62. .text:00401149                 xor     edx, edx4 K, q: H2 D& N0 B; ~
  63. .text:0040114B                 test    al, al% [1 s" y2 G* ?  \$ {9 `
  64. .text:0040114D                 setz    dl
    " l6 y; r- |8 V: B- f& p
  65. .text:00401150                 mov     al, dl+ d- o; Z9 v+ L+ y
  66. .text:00401152                 retn    4: Z5 \6 }! H1 m( T+ ^; P
  67. .text:00401152 sub_4010F0      endp, M* `' w5 N: q! J2 T
  68. .text:00401152/ _/ x3 D% E3 O% p" D0 a  m
  69. .text:00401152 ; ---------------------------------------------------------------------------1 g, a. @; h! ^3 K, B; o
  70. .text:00401155                 align 10h
    - q. z: c( j, h4 _9 X
  71. .text:00401160( a1 \. i6 \- n( K4 l6 i. |
  72. .text:00401160 ; =============== S U B R O U T I N E =======================================
    2 ^: A+ G4 `2 m6 k
  73. .text:00401160
    : H4 a* h  t2 Q0 F4 I
  74. .text:00401160, w1 t( r* _: C
  75. .text:00401160 sub_401160      proc near               ; CODE XREF: sub_4013D0+15↓p
    ) B$ J( n! X8 n! E! o
  76. .text:00401160                                         ; sub_4013F0+C↓p ...7 J0 \* \' E) B$ h& K& I2 D- b
  77. .text:00401160
    3 q8 U) P2 [- I4 P/ @2 y
  78. .text:00401160 arg_0           = dword ptr  4
    7 b5 s6 Y8 g* l
  79. .text:00401160; d' ?* b3 |7 A3 z" A+ n6 c
  80. .text:00401160                 push    esi
    ; `! h1 v1 A+ m0 _8 |! T3 W  J, q
  81. .text:00401161                 push    edi
    % V* K6 G6 N5 F
  82. .text:00401162                 mov     edi, [esp+8+arg_0]
    3 v; E' {- c! U. N# F- @9 \
  83. .text:00401166                 test    edi, edi
    * C- C' p( M2 S
  84. .text:00401168                 mov     esi, ecx
    # S! v: S5 P) P) s: T4 E
  85. .text:0040116A                 jz      short loc_4011CA
    + ^, H. I: D  E6 t% L
  86. .text:0040116C                 mov     eax, [esi]
    5 q* x7 h: S$ s$ G9 `, d6 d, F4 B
  87. .text:0040116E                 cmp     edi, eax9 P9 y$ ]  p% o: L$ R( H8 W
  88. .text:00401170                 jz      short loc_4011CA: L- i( q% S# E4 N
  89. .text:00401172                 cmp     byte ptr [edi], 0  B5 M  a) l/ ]7 p( @. ~- m
  90. .text:00401175                 jnz     short loc_4011A2
    : `1 x' Q$ {3 S$ e7 U0 X
  91. .text:00401177                 test    eax, eax! g8 t: [6 E8 B: l3 g( l: Q
  92. .text:00401179                 mov     dword ptr [esi+4], 1
    # j$ ]/ R$ k7 N: @$ O
  93. .text:00401180                 jz      short loc_40118B5 @! Y) R) ~7 }+ P! N  \
  94. .text:00401182                 push    eax             ; void *! c9 p! W3 V) q! i0 S/ p3 S
  95. .text:00401183                 call    ??_V@YAXPAX@Z   ; operator delete[](void *)
      A4 d$ M) _9 L5 h% q; l
  96. .text:00401188                 add     esp, 4
    % G+ l" ~; f0 d* @( J9 A/ K
  97. .text:0040118B
    6 A& N/ {! z& I8 q8 x- s: Y. W
  98. .text:0040118B loc_40118B:                             ; CODE XREF: sub_401160+20↑j8 g" Q. @& z$ A' y
  99. .text:0040118B                 push    6               ; Size) R1 z5 E  }( D9 F1 P
  100. .text:0040118D                 call    j_??2@YAPAXI@Z  ; operator new(uint)
    1 F2 Y. r4 W6 k4 e: a
  101. .text:00401192                 add     esp, 4
    : P! c/ Y8 |5 Y) T9 t
  102. .text:00401195                 mov     [esi], eax/ m! n7 R! J, C4 y. A6 ^$ E4 o
  103. .text:00401197                 pop     edi
    # d# G' s& S7 I9 y6 N* K
  104. .text:00401198                 mov     dword ptr [eax], 0
    ( t5 Y# O3 B) F, d$ I9 Y
  105. .text:0040119E                 pop     esi
    9 T7 ~' u! y0 T, q
  106. .text:0040119F                 retn    4* z8 @& I( M! f0 P0 _
  107. .text:004011A2 ; ---------------------------------------------------------------------------
    * F+ ^+ o& j% }9 }
  108. .text:004011A2# e. W6 B9 E# m4 b* r
  109. .text:004011A2 loc_4011A2:                             ; CODE XREF: sub_401160+15↑j, X! X' F4 ]; g5 w1 K
  110. .text:004011A2                 mov     eax, edi1 @. V% Q. G8 L4 X  f7 p( {
  111. .text:004011A4                 lea     edx, [eax+1]
    . V# V1 p0 u' w7 E' T
  112. .text:004011A7
    ! N) a& y& _1 g- s" o) O
  113. .text:004011A7 loc_4011A7:                             ; CODE XREF: sub_401160+4C↓j
    $ j# n; ?& v7 N$ O  d1 S
  114. .text:004011A7                 mov     cl, [eax]9 j9 Q  s6 z: M' ^+ F# _4 k5 B
  115. .text:004011A9                 inc     eax
    & s3 U1 \; o1 h" D$ e+ ~
  116. .text:004011AA                 test    cl, cl
    6 d% V0 _# H- Z3 D5 V
  117. .text:004011AC                 jnz     short loc_4011A7
    " e' H3 y- X9 A$ j' ?8 @( _
  118. .text:004011AE                 sub     eax, edx
    $ C% T; [5 C& u2 e
  119. .text:004011B0                 push    eax% @. d1 p( l9 F
  120. .text:004011B1                 mov     ecx, esi
    + E! S/ I* J! q: l7 {' V
  121. .text:004011B3                 call    sub_401030
    - q: Q3 @: V7 p7 `* G0 p# x
  122. .text:004011B8                 mov     edx, [esi]
    8 R8 c9 G0 V! B; R4 `
  123. .text:004011BA                 mov     ecx, edi
    6 y: ?7 F8 {/ S% S3 A3 G  }
  124. .text:004011BC                 lea     esp, [esp+0]
    / d7 h3 G, g: D* W: e0 ~
  125. .text:004011C02 P- a2 s$ e6 ~2 q: h0 y
  126. .text:004011C0 loc_4011C0:                             ; CODE XREF: sub_401160+68↓j
    7 B- d. Y8 ^3 B
  127. .text:004011C0                 mov     al, [ecx]
    # n$ x* k) A6 {9 z
  128. .text:004011C2                 inc     ecx$ b7 e* M: u( x! j0 d
  129. .text:004011C3                 mov     [edx], al
    ! y& M$ A' ^4 M+ l- `
  130. .text:004011C5                 inc     edx  k# t4 s" \  |% v/ B2 U! l
  131. .text:004011C6                 test    al, al
    , q0 D+ _- \" m; n
  132. .text:004011C8                 jnz     short loc_4011C0+ t) k9 i$ _6 t, O
  133. .text:004011CA. j  F- S/ l8 P9 w
  134. .text:004011CA loc_4011CA:                             ; CODE XREF: sub_401160+A↑j
    ' q& d, _; M9 [  [- H* i
  135. .text:004011CA                                         ; sub_401160+10↑j
    . N5 s- p% J) B: x: W
  136. .text:004011CA                 pop     edi
    9 J* e& X2 x) m
  137. .text:004011CB                 pop     esi# e8 q' u& ~. o* [( W
  138. .text:004011CC                 retn    4
    2 G+ u7 W* d5 l) b- d7 Y
  139. .text:004011CC sub_401160      endp& s* |# ]4 E! |) F
  140. .text:004011CC$ s& |# r6 N" m/ O
  141. .text:004011CC ; ---------------------------------------------------------------------------
复制代码

) B) D# ^" c  a% g
; ]3 R( L6 ?- Z+ A- Y0 F" x! n7 c& Z/ 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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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