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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-27 13:23 编辑 3 x" w' r. M; e9 E. X2 t

6 g; V1 T7 {# T6 V( R5 |' I2 G本游戏采用了CEGUI,该组件能采用directx和opengl。
- X0 p/ d! y$ v. A/ j. M2 C+ K经过我的小方块测试,游戏屏幕显示了小方块,因此确认是directx9的游戏。" D1 |9 G7 h$ K+ [- I$ E8 r1 X
游戏自带一个EngineSetup.exe程序,设置为窗口模式后就能用cheatengine调式。
1 R$ A+ g- I4 k1 [9 i6 C(由于游戏窗口较大,我将游戏屏幕和cheatengine分别显示到2个显示器上即可。)4 R) l$ M( }9 _% w' r

/ Q* {& s% K  J3 g/ O  `/ B( T. f
在游戏中找一个字幕,在以下地方断下。
9 d$ ^% m% F" o# X' s, g由于该游戏基本都是显示在屏幕固定位置(上或者下,居中),
# n5 G0 k3 k$ V2 }4 j因此暂时认为此处就是游戏的字幕函数,该函数被20处左右地方调用。( P* K$ ?. D, m
' q* W. ~5 T$ r2 o+ {: s& @- c: Q
  1. NextLife.exe+11C5 - 42                    - inc edx2 \* f8 _5 n) e/ l! j& o
  2. 004011C5
复制代码
5 a; k8 e( k$ t  u
: u, ?2 c3 S1 q3 v/ ]' H
该地方的伪代码0 \2 ]4 r8 F; X
  1. void __thiscall sub_401160(char **this, const char *a2)
    3 o& Y* g. Y5 d# X% D; g
  2. {1 N. F- x" J6 i0 d; m
  3.   char **v2; // esi
    $ ?: t+ {4 n9 [2 B- [* g, K! E
  4.   char *v3; // eax3 u% ]6 }6 Q5 F8 b. v" G6 @9 D# w
  5.   char *v4; // eax
    ; g, o" Z( q: t4 D& p" k

  6. % o# d3 K7 W, ^. Q# k5 b" r# I
  7.   v2 = this;
    ' |" K$ X) ?& O( w- O
  8.   if ( a2 )
    / e1 {5 q, j$ l* P& {: p
  9.   {
    ! i: v9 m' W5 N8 \' M: D0 e
  10.     v3 = *this;
    : X0 A3 a  ^3 P: [/ N8 k
  11.     if ( a2 != *this ). J$ t# `8 [3 B* E9 q
  12.     {
    8 f0 w4 B9 v& a4 b2 ^
  13.       if ( *a2 )0 c" c3 V2 [" H. q. u- }! S$ g/ D
  14.       {' G- o% L/ [+ `, f9 U4 n3 V# u
  15.         sub_401030(strlen(a2));9 d/ _1 v7 Y2 y, u# `
  16.         strcpy(*v2, a2);; p+ U" @' v  D  _1 {& T
  17.       }) C! P& W. y8 B- F: _, v
  18.       else7 p$ G2 l9 s: J1 ?: ?
  19.       {+ E8 w% g7 g% u7 Q; Y. y
  20.         this[1] = (char *)1;
    ) G# j" e% g4 M8 y% x% F
  21.         if ( v3 )
    5 E9 C& H# o5 G% N  i5 k1 Z9 J8 g- B
  22.           operator delete[](v3);' h& }: I' w# M
  23.         v4 = (char *)operator new(6u);
    ' |$ o, S" ?  _% p5 Y+ X! ?" V
  24.         *v2 = v4;) p2 @( P- w: C8 [6 Y+ S. m
  25.         *(_DWORD *)v4 = 0;
      E! C0 L5 E& C9 y8 g+ m
  26.       }8 e  L# k4 V/ \, U" C# N
  27.     }9 k4 p# q% U8 P) Q3 D! \6 e
  28.   }6 U: {3 \+ a8 l% `$ Q. }$ r6 M
  29. }
复制代码

0 V1 Q1 ~9 V9 L5 W/ `' {汇编代码
3 Y# n, j) f: C3 m3 Q
  1. .text:004010F0
    # a! o$ o  M; k& P. q* O2 Q
  2. .text:004010F0 ; =============== S U B R O U T I N E =======================================
    1 q3 N% l' U  w! e! P+ H4 G
  3. .text:004010F0
    1 U1 O$ {$ j% L) [
  4. .text:004010F0
    + g$ I0 k  G; X- z0 Q8 d# O/ o- f
  5. .text:004010F0 sub_4010F0      proc near               ; CODE XREF: _main+139↓p6 O- y$ i- `  F' m/ m0 H
  6. .text:004010F0                                         ; sub_403240+97E↓p ...
    7 U! c; _( W  ~# Z( `' J! J6 X
  7. .text:004010F08 t8 K$ ^$ G1 z& b/ q
  8. .text:004010F0 arg_0           = dword ptr  4- c2 x  P& j/ D% k. Z1 ^
  9. .text:004010F0
    $ N5 ^! p6 ^1 v% n
  10. .text:004010F0                 mov     eax, [ecx]
    : T9 N5 @# z( l7 }' O& u
  11. .text:004010F2                 test    eax, eax; B0 H: d+ T. N
  12. .text:004010F4                 mov     edx, [esp+arg_0]- m! y+ w; r  f5 `0 u
  13. .text:004010F8                 jz      short loc_401147
    0 \" U: e3 H) L" G
  14. .text:004010FA                 test    edx, edx
    5 I* G3 x+ V9 X  V% v
  15. .text:004010FC                 jz      short loc_401147
    % H: \: ~' z$ C) Y* d6 m& `
  16. .text:004010FE                 mov     cl, [eax]
    ' t) C- N7 N6 i8 Y  J: t
  17. .text:00401100                 test    cl, cl' u8 i: ~! e# {' `+ l& r- e
  18. .text:00401102                 jnz     short loc_401116
    % v4 J4 @# V- ?/ `- K/ j+ p
  19. .text:00401104                 cmp     byte ptr [edx], 0
    6 y3 M8 [$ Y# z# L# ^0 v
  20. .text:00401107                 setz    al
    6 m3 _6 z% {' t6 w7 J0 G" C
  21. .text:0040110A                 xor     edx, edx1 |' e1 V. s$ b/ P
  22. .text:0040110C                 test    al, al
    9 }3 ^" D7 n2 I7 y
  23. .text:0040110E                 setz    dl
    7 S: y* k) N- U, |# f9 g6 [! ]
  24. .text:00401111                 mov     al, dl  V/ g1 b' @/ f7 n- d/ L
  25. .text:00401113                 retn    4
    4 `, _( n" q0 Y% v0 m3 Y! \8 P
  26. .text:00401116 ; ---------------------------------------------------------------------------
    & u% D! L+ X, ?# k/ L% p2 T- w& N
  27. .text:00401116' F4 K4 c1 t8 C. i  Q' o$ ]7 P
  28. .text:00401116 loc_401116:                             ; CODE XREF: sub_4010F0+12↑j
    . k7 z' Z9 `' x( V+ ?) g3 p# U
  29. .text:00401116                 cmp     byte ptr [edx], 0
    3 g" W1 E8 J$ m3 E# E/ A( Q) k
  30. .text:00401119                 jz      short loc_4011474 [5 G. P# \. O% U2 E
  31. .text:0040111B                 jmp     short loc_401120# A1 Y7 V' c8 Q' g1 l' H+ s3 m0 f
  32. .text:0040111B ; ---------------------------------------------------------------------------
    * Y& L) S" s" W
  33. .text:0040111D                 align 10h
      p$ ^8 x$ q) u8 m
  34. .text:00401120
    ' d  l9 M! Z$ V4 O4 Q; E
  35. .text:00401120 loc_401120:                             ; CODE XREF: sub_4010F0+2B↑j6 `, @3 Z! S& `6 V
  36. .text:00401120                                         ; sub_4010F0+3B↓j1 ]$ ?; J; T! u3 E
  37. .text:00401120                 cmp     cl, [edx]
    / o  R3 r- b( m4 _& E# C
  38. .text:00401122                 jnz     short loc_40112D" c1 J7 _" m  ^3 v2 H
  39. .text:00401124                 mov     cl, [eax+1]
    ; E$ s5 }  D2 H2 z
  40. .text:00401127                 inc     eax( _; p' z5 {; ?4 k! k% l2 X
  41. .text:00401128                 inc     edx- j0 a5 b6 ?4 x5 H! U
  42. .text:00401129                 test    cl, cl
    ' ]8 k; q7 J; |4 t1 j7 t* I5 i$ z  x
  43. .text:0040112B                 jnz     short loc_401120
      E5 z/ Z4 u, O: z3 h
  44. .text:0040112D
    # H( b, E7 P0 n# [' H. t9 \; M
  45. .text:0040112D loc_40112D:                             ; CODE XREF: sub_4010F0+32↑j
    1 O; o/ m: k+ n8 M. M% L$ K. b; H
  46. .text:0040112D                 movzx   eax, byte ptr [eax]/ N5 F  ]9 X3 q* k1 O+ f0 s$ N; L. N
  47. .text:00401130                 movzx   ecx, byte ptr [edx]5 L4 V9 a6 v: x/ Y% R; t0 g& x
  48. .text:00401133                 sub     eax, ecx
    . W$ U, P9 e% a+ o+ D9 K9 U& Z7 q& }
  49. .text:00401135                 neg     eax
    % ^% Y; L, w9 k0 `& t! k
  50. .text:00401137                 sbb     al, al: d. r* F5 a5 Z( z/ f& n: C$ g0 u% g
  51. .text:00401139                 inc     al; p1 Z1 B& R1 C* G. c5 {, C9 a+ W& Z
  52. .text:0040113B                 xor     edx, edx
    ' |: Z& r7 i/ _0 c) y7 o* N
  53. .text:0040113D                 test    al, al  i; [/ S# n! c5 l
  54. .text:0040113F                 setz    dl
    % C' {; D( l  K  T5 I
  55. .text:00401142                 mov     al, dl% Q9 S0 c! ^- M3 u" ~% z+ A: B8 Z
  56. .text:00401144                 retn    4# v- v9 b3 E# b/ i7 ^( D
  57. .text:00401147 ; ---------------------------------------------------------------------------* m4 o9 q6 Q( k4 S
  58. .text:00401147# C% ~: V0 n0 i2 o4 _7 `: b
  59. .text:00401147 loc_401147:                             ; CODE XREF: sub_4010F0+8↑j/ b% U. |6 v6 g5 [5 E1 I/ d4 Q% K
  60. .text:00401147                                         ; sub_4010F0+C↑j ...
    * f% {$ P# J  _, Z$ ]
  61. .text:00401147                 xor     al, al
    ( F9 i. j) Y! k. X
  62. .text:00401149                 xor     edx, edx
    4 j( E0 @# X  C0 B4 I
  63. .text:0040114B                 test    al, al8 F2 U% v2 L2 S# \: T# v3 p" A
  64. .text:0040114D                 setz    dl1 ?+ T5 z$ g" g$ E, n5 [% U8 O+ e
  65. .text:00401150                 mov     al, dl6 M/ s8 }3 Y  d" X5 `) J) E
  66. .text:00401152                 retn    4# V$ _1 _0 g! ?( _& O
  67. .text:00401152 sub_4010F0      endp* p) Q$ z8 K, c; W
  68. .text:00401152* \" L8 N" q6 j' {0 Q4 _
  69. .text:00401152 ; ---------------------------------------------------------------------------
    # {  W( \: h" T6 f, a6 [" \" P
  70. .text:00401155                 align 10h, [' ^  A4 S4 j4 y, _
  71. .text:004011607 y/ m3 S; _1 S2 B
  72. .text:00401160 ; =============== S U B R O U T I N E =======================================
    5 ?# N. P. m1 r; z. A
  73. .text:00401160- x; J- C0 j' R, z* ?
  74. .text:00401160
    2 l& e0 Z( h& |6 N! T
  75. .text:00401160 sub_401160      proc near               ; CODE XREF: sub_4013D0+15↓p9 I6 V$ |8 a7 _
  76. .text:00401160                                         ; sub_4013F0+C↓p ...+ `! q$ p& K& a" c8 d) A/ u; g
  77. .text:00401160* q* z; G2 f! j
  78. .text:00401160 arg_0           = dword ptr  40 A  Q1 }+ u/ s8 P( P& @; j
  79. .text:00401160
    $ q0 O: \: B/ K: n! p' q: G& k
  80. .text:00401160                 push    esi
    * H5 @& u3 j" I# O
  81. .text:00401161                 push    edi  J4 F8 x( a, ]' o5 Q
  82. .text:00401162                 mov     edi, [esp+8+arg_0]
    0 s( s0 C  ]( A5 r+ r
  83. .text:00401166                 test    edi, edi
    9 F; d8 X  u( ?5 Z+ R+ d# ]! V
  84. .text:00401168                 mov     esi, ecx
    ; V5 X/ ?2 P$ {0 L  V: T5 z1 P4 v
  85. .text:0040116A                 jz      short loc_4011CA9 o( @% a; V" t) t1 x9 z3 E
  86. .text:0040116C                 mov     eax, [esi]. b1 c9 L( {1 a5 ^) L
  87. .text:0040116E                 cmp     edi, eax
    " u. ?4 h! F0 j% u9 Y/ R7 r
  88. .text:00401170                 jz      short loc_4011CA$ z8 j: r0 l" {1 L  ?0 ]) R
  89. .text:00401172                 cmp     byte ptr [edi], 0; N2 R9 m9 x! I# `0 [/ P4 n
  90. .text:00401175                 jnz     short loc_4011A2  b2 j8 [$ `* \# i" b
  91. .text:00401177                 test    eax, eax
    - J% k2 G. a# R5 K. S
  92. .text:00401179                 mov     dword ptr [esi+4], 1" e& R( D. f  T- t: ]
  93. .text:00401180                 jz      short loc_40118B
    $ ~9 \& m* z; K8 Q3 R
  94. .text:00401182                 push    eax             ; void *
    8 X; D& J4 S, U3 i- F4 c/ u( D+ O
  95. .text:00401183                 call    ??_V@YAXPAX@Z   ; operator delete[](void *)& K9 f) ?* e' v( @% F6 G/ C
  96. .text:00401188                 add     esp, 4  S+ F7 O! @$ A+ K
  97. .text:0040118B% h+ i- L. \- Z  N
  98. .text:0040118B loc_40118B:                             ; CODE XREF: sub_401160+20↑j2 G+ e6 r* s4 o  s2 ^2 t
  99. .text:0040118B                 push    6               ; Size
    ' D: }3 J- o9 a2 F* X0 f1 V  G
  100. .text:0040118D                 call    j_??2@YAPAXI@Z  ; operator new(uint)
    & g8 `" R9 O" Y# B
  101. .text:00401192                 add     esp, 4
    7 z2 \4 X# |( g' z; E. w0 Z
  102. .text:00401195                 mov     [esi], eax
    ' i# i( t; d7 @8 G  r! D
  103. .text:00401197                 pop     edi' ^6 x# ?) K" c3 x( q( `1 {
  104. .text:00401198                 mov     dword ptr [eax], 0  f1 i& ?5 s* J3 ?; Q
  105. .text:0040119E                 pop     esi
    / d9 [! R2 X( s
  106. .text:0040119F                 retn    4" J+ |' P; T3 B& a1 u! I3 L
  107. .text:004011A2 ; ---------------------------------------------------------------------------* ?" |* N5 ?3 o6 T: D5 f% O& h
  108. .text:004011A22 V, T  U% B. m: p' e6 g- z- n8 T
  109. .text:004011A2 loc_4011A2:                             ; CODE XREF: sub_401160+15↑j4 o) |! o) [+ c5 u+ F
  110. .text:004011A2                 mov     eax, edi  C0 Z4 @/ Z- ?' [! L3 S0 P
  111. .text:004011A4                 lea     edx, [eax+1]
    2 k) K* U% ~6 v6 g
  112. .text:004011A7
    # D' [3 g0 j3 r. ~1 j* ?$ K
  113. .text:004011A7 loc_4011A7:                             ; CODE XREF: sub_401160+4C↓j1 I; i& \/ Z8 f
  114. .text:004011A7                 mov     cl, [eax]* P- ~' z# b! N( W
  115. .text:004011A9                 inc     eax
    ) l$ K  r) e. Z* ~) Z
  116. .text:004011AA                 test    cl, cl+ C, J$ d4 Y* T5 G$ I; v
  117. .text:004011AC                 jnz     short loc_4011A75 ^" }, U- w) C. s/ `& k0 |1 I
  118. .text:004011AE                 sub     eax, edx
    & K0 B0 v& i- E  U
  119. .text:004011B0                 push    eax9 y2 _2 b5 B4 C9 y  @
  120. .text:004011B1                 mov     ecx, esi
    - ^) p: g* R, q8 q" s6 g$ d
  121. .text:004011B3                 call    sub_401030
    8 h* A% U; y3 ?2 g: n, S4 R
  122. .text:004011B8                 mov     edx, [esi]
    # j7 Z) a" J: P' {# |6 w* \
  123. .text:004011BA                 mov     ecx, edi
    : ]+ f1 z1 v9 [' ^" X! f
  124. .text:004011BC                 lea     esp, [esp+0]
    0 j1 V+ J& ~0 u- B* T* _
  125. .text:004011C0
    # [/ \3 C/ @, L: A  p9 g
  126. .text:004011C0 loc_4011C0:                             ; CODE XREF: sub_401160+68↓j
    ; ?: h# {5 L: U8 F0 k7 k+ e6 p
  127. .text:004011C0                 mov     al, [ecx]* c! _, i. D& I- E" e
  128. .text:004011C2                 inc     ecx
    2 M4 N" z" |4 q. F7 P/ h# c2 }
  129. .text:004011C3                 mov     [edx], al, c8 p! ~" X/ L9 P/ ]  U! l
  130. .text:004011C5                 inc     edx
    . y0 n" R2 Z# N- d  e, D
  131. .text:004011C6                 test    al, al
    ( x5 h: F& U) c& t8 \
  132. .text:004011C8                 jnz     short loc_4011C0
    - r5 G7 X- D% h! I  n- a
  133. .text:004011CA
    7 X1 f) h3 |) z
  134. .text:004011CA loc_4011CA:                             ; CODE XREF: sub_401160+A↑j$ A) ^# o' Z% c% s- {$ A
  135. .text:004011CA                                         ; sub_401160+10↑j
    + y' B6 V7 ^8 ?
  136. .text:004011CA                 pop     edi, |/ i& B& c# }- S6 k( R
  137. .text:004011CB                 pop     esi/ F9 C; ~" Q5 Z6 d" N8 n2 p. ~6 E
  138. .text:004011CC                 retn    4: i3 b, e5 R% M) p- A. p: b# j# D
  139. .text:004011CC sub_401160      endp
    : l! n* [( J+ h: p
  140. .text:004011CC
    ; a- K, c, m) E! L+ a7 p
  141. .text:004011CC ; ---------------------------------------------------------------------------
复制代码

# l( D9 j! u& M' k; C  p" \6 |, i- d0 T# v0 h

8 o" l8 e% S" c4 c) y2 h7 n2 L+ 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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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