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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-27 13:23 编辑 ; p* V" A8 {" e: X+ s- l- f, y
3 e4 ^/ q+ p6 D4 p# {/ M
本游戏采用了CEGUI,该组件能采用directx和opengl。: R4 ]0 M) ~  ]
经过我的小方块测试,游戏屏幕显示了小方块,因此确认是directx9的游戏。: A/ E$ p/ u6 r0 S% }
游戏自带一个EngineSetup.exe程序,设置为窗口模式后就能用cheatengine调式。
9 ~: O! J, i% f! U. |6 U) D(由于游戏窗口较大,我将游戏屏幕和cheatengine分别显示到2个显示器上即可。)
& }/ {9 ]7 t4 `; H* o' n. s
7 W5 I" i) R' n9 D3 k8 ]" F4 v
  G: o7 t' I0 p9 R; k& V2 ?0 o" |9 j在游戏中找一个字幕,在以下地方断下。
1 g9 S' s1 {1 x( g由于该游戏基本都是显示在屏幕固定位置(上或者下,居中),
: P5 E( W+ H0 n  x: p因此暂时认为此处就是游戏的字幕函数,该函数被20处左右地方调用。& X; g' `" E2 |; i9 F  z

; G5 i' h) o' H
  1. NextLife.exe+11C5 - 42                    - inc edx# x+ p& Y  z0 }6 {+ u8 U. _6 s, Z: R
  2. 004011C5
复制代码
( A- R2 X0 y) M9 S) R( d$ W

8 q6 C) k( U# V' W* h$ Y该地方的伪代码
! _6 z2 x0 r6 ?
  1. void __thiscall sub_401160(char **this, const char *a2)& o: @6 Y: C) v) g
  2. {) s& K( L7 U9 k% T: Q+ N' j4 |3 X* ~
  3.   char **v2; // esi
    0 f2 t* y/ |/ C5 j1 B/ @
  4.   char *v3; // eax
    4 w! j7 ?8 e' o/ I
  5.   char *v4; // eax7 I% I! q; V. Z$ e

  6. ( g; ?3 t  _; ^, l7 J
  7.   v2 = this;" }3 `! n" h* A$ }+ L' o2 U
  8.   if ( a2 )
    1 ~/ ~, M# g7 G0 ?0 o* \, |
  9.   {2 D$ `1 U, ]3 T4 d/ T
  10.     v3 = *this;
    . n6 F& X4 G5 x" I+ K! t+ ^( L
  11.     if ( a2 != *this )" T7 ~( }" Q% Y+ v! O4 `
  12.     {% H7 r! z2 E5 E% P
  13.       if ( *a2 )
    & j$ v9 C5 R, y4 c  V1 _& x7 Z0 }! \
  14.       {+ n7 a9 E8 M+ P$ s
  15.         sub_401030(strlen(a2));
    2 o$ }" V$ U" r! V
  16.         strcpy(*v2, a2);
    # v) `& {7 U* B, C
  17.       }
    6 D6 b; y" W& w; v# a
  18.       else6 H" v# U& h  E7 h' c8 g6 i+ U
  19.       {  F" @% n4 B6 Q( I1 _2 b
  20.         this[1] = (char *)1;' `& \3 I1 X5 a% R! F" U! g
  21.         if ( v3 )2 R3 X  P- R6 _
  22.           operator delete[](v3);6 l% q# O, W8 \
  23.         v4 = (char *)operator new(6u);! [4 U  i- V, X+ Z
  24.         *v2 = v4;
    6 q- u; a& G8 k9 R1 k
  25.         *(_DWORD *)v4 = 0;. U& ^1 S. O" Y
  26.       }- e1 r, _" Z4 l2 ~  i
  27.     }
    / w( N: d+ S6 G) _5 B0 S" K# d5 l
  28.   }
    9 K9 P/ j% y/ S" W
  29. }
复制代码

$ v5 t1 @+ s* X8 M# t汇编代码
4 n; V# k6 K: z, ?$ p+ a
  1. .text:004010F02 S# n( ^* }  |. x* _; Y1 M2 c5 B
  2. .text:004010F0 ; =============== S U B R O U T I N E =======================================- u% p& s0 [1 Q0 u% U
  3. .text:004010F0' \) z6 }: \0 n6 _
  4. .text:004010F0& L0 O: n4 W1 l+ P6 V8 ~
  5. .text:004010F0 sub_4010F0      proc near               ; CODE XREF: _main+139↓p
      Z" k" Z8 {$ C7 z4 t  ?# o
  6. .text:004010F0                                         ; sub_403240+97E↓p ...
    0 Y* K/ X* F2 [" ]% `+ t
  7. .text:004010F0- W" ^9 G0 G) L1 e& c8 e
  8. .text:004010F0 arg_0           = dword ptr  4
    2 D7 g6 l1 {% o0 T' {
  9. .text:004010F06 r9 o3 P( @$ H
  10. .text:004010F0                 mov     eax, [ecx]* J8 d7 u7 d  m3 a1 W+ a
  11. .text:004010F2                 test    eax, eax
    ) R+ t" C- g4 O2 l6 u: W& u( n
  12. .text:004010F4                 mov     edx, [esp+arg_0]
    ; ^& u8 w) i0 `8 X7 D: P
  13. .text:004010F8                 jz      short loc_401147
    & t0 s# ~& {. [" \( o) W0 n
  14. .text:004010FA                 test    edx, edx3 m& Y* i5 F. f! k" r- T6 \( c) X
  15. .text:004010FC                 jz      short loc_401147
    9 d9 R/ u% D! e# ~
  16. .text:004010FE                 mov     cl, [eax]
    0 w1 C5 s  {* L5 w. N2 f
  17. .text:00401100                 test    cl, cl: x# v- T: ?' `" ]- p
  18. .text:00401102                 jnz     short loc_401116  l& v; u" O. Z0 h
  19. .text:00401104                 cmp     byte ptr [edx], 0
    ' C( A: }8 S( n
  20. .text:00401107                 setz    al, \4 u( o/ h9 O# n* T4 f
  21. .text:0040110A                 xor     edx, edx& J& a2 M# R- o2 }- U
  22. .text:0040110C                 test    al, al% S3 l+ ~6 c+ o9 H+ S6 {
  23. .text:0040110E                 setz    dl/ a5 u; {' E3 q% i. n) i2 _, `
  24. .text:00401111                 mov     al, dl9 r2 j. X) l5 Y7 b! m; V1 p" F' a
  25. .text:00401113                 retn    4
    ! v: R) m- V6 w
  26. .text:00401116 ; ---------------------------------------------------------------------------6 ]# R& P2 a+ _* V& x1 b1 Y. y
  27. .text:00401116
    3 D4 j# V! v" A
  28. .text:00401116 loc_401116:                             ; CODE XREF: sub_4010F0+12↑j
    3 I6 T2 [9 r+ z  O5 R$ }
  29. .text:00401116                 cmp     byte ptr [edx], 0- X: ~- x' ~1 i1 O
  30. .text:00401119                 jz      short loc_401147. e  B0 l, o6 n( v5 u0 G2 |2 H
  31. .text:0040111B                 jmp     short loc_401120
    " G( a1 n7 W" W# e0 _
  32. .text:0040111B ; ---------------------------------------------------------------------------
    * K* l" _) K+ a0 a. r& X
  33. .text:0040111D                 align 10h4 o3 g, H* j+ s& h0 G6 B  C3 Y. A
  34. .text:00401120+ `/ t2 e. I7 B( {# W% j8 R
  35. .text:00401120 loc_401120:                             ; CODE XREF: sub_4010F0+2B↑j& u& O6 U: I) ^) G9 I7 h
  36. .text:00401120                                         ; sub_4010F0+3B↓j3 k8 [* d; q- z, r9 p
  37. .text:00401120                 cmp     cl, [edx]
    ! Q0 K3 j* {- f
  38. .text:00401122                 jnz     short loc_40112D8 [: ]0 g8 u0 \! x" C- E
  39. .text:00401124                 mov     cl, [eax+1]5 i# T% K1 f7 _0 G9 ^0 ]
  40. .text:00401127                 inc     eax
    . W, Q5 q8 l* Y8 q9 k6 j/ M; E
  41. .text:00401128                 inc     edx
    9 C. }$ ~, U4 k) S# }8 c, @
  42. .text:00401129                 test    cl, cl
    9 r& L& m/ Y% x% L
  43. .text:0040112B                 jnz     short loc_401120
    - y6 x9 ]+ v2 ~
  44. .text:0040112D
    ; p2 a1 d7 A# A$ ?4 i) d# F
  45. .text:0040112D loc_40112D:                             ; CODE XREF: sub_4010F0+32↑j# z$ G6 h2 |5 h4 y6 w
  46. .text:0040112D                 movzx   eax, byte ptr [eax]
    6 L6 m- U9 G' ]0 o" Z
  47. .text:00401130                 movzx   ecx, byte ptr [edx]+ E; F7 Y% W: h* E# z
  48. .text:00401133                 sub     eax, ecx( w: t+ p. E' S" U% L3 n; U6 \
  49. .text:00401135                 neg     eax
    # K: _* ^" C0 u1 [3 P& `
  50. .text:00401137                 sbb     al, al' i$ T: H+ @! ~4 l& Y0 Q
  51. .text:00401139                 inc     al, w8 _5 n/ c! g; C, q
  52. .text:0040113B                 xor     edx, edx
    : h- b1 B6 N' D/ q. b* Q  Z+ i( D
  53. .text:0040113D                 test    al, al
    ; {8 `7 p" O9 Y/ D' e
  54. .text:0040113F                 setz    dl" h! D3 g2 I- y3 \2 [
  55. .text:00401142                 mov     al, dl0 |- C& t5 b# t' S( n+ a% E1 X3 t
  56. .text:00401144                 retn    4
    # H0 B6 h+ p1 L1 P7 s+ i$ u
  57. .text:00401147 ; ---------------------------------------------------------------------------
    / w% J) z2 B7 i1 |% f
  58. .text:00401147, [8 F4 U7 J- {% @# a
  59. .text:00401147 loc_401147:                             ; CODE XREF: sub_4010F0+8↑j
    : E* ]. m- {3 I5 x
  60. .text:00401147                                         ; sub_4010F0+C↑j ...
    " F4 A6 r2 F; t. i' Z6 Q+ l
  61. .text:00401147                 xor     al, al% a2 e8 `6 l5 l! G, ]
  62. .text:00401149                 xor     edx, edx
    / F7 a. X& B% b! y) q
  63. .text:0040114B                 test    al, al6 Y+ ?6 r  r7 y& @5 y' B
  64. .text:0040114D                 setz    dl% z% J5 h$ \" g7 N
  65. .text:00401150                 mov     al, dl
    9 Y* G: F; w+ |* Y! [% Z$ D) e
  66. .text:00401152                 retn    4" _7 e* h/ L6 y2 N3 a* |
  67. .text:00401152 sub_4010F0      endp* ^* U7 S+ Z7 [9 E7 {+ G0 T' c
  68. .text:00401152
    * q1 B$ i' S8 Y4 \6 ^/ V$ U
  69. .text:00401152 ; ---------------------------------------------------------------------------. n1 e( z: |6 X7 K/ }6 I
  70. .text:00401155                 align 10h5 t2 ~  w0 @0 J6 a
  71. .text:00401160
    2 i; K, Z+ H* O: A" {5 U$ d- R1 ^
  72. .text:00401160 ; =============== S U B R O U T I N E =======================================
    4 W3 W  I( a( J3 `. N; ~# y
  73. .text:00401160
    & }- {0 w$ o% _
  74. .text:00401160! g$ E" c. l0 a3 a% f) Y. u7 }
  75. .text:00401160 sub_401160      proc near               ; CODE XREF: sub_4013D0+15↓p1 f6 X! a3 k! k) e$ Z
  76. .text:00401160                                         ; sub_4013F0+C↓p .../ i2 G3 R/ k3 `6 I1 d' E9 n
  77. .text:004011602 ]0 m/ b: ?6 I6 h6 m0 k8 C
  78. .text:00401160 arg_0           = dword ptr  4
    9 z6 x5 ?2 i3 L* U" z6 }0 L
  79. .text:00401160
    " q, Y$ A7 l# M; i* ^1 i1 |
  80. .text:00401160                 push    esi) B+ ]' U/ v/ @7 k6 W
  81. .text:00401161                 push    edi
    % v6 j( B! Q1 L4 V  |  ~5 _3 W8 Y
  82. .text:00401162                 mov     edi, [esp+8+arg_0]" H5 s/ }+ M) i' ~- O
  83. .text:00401166                 test    edi, edi# s! D6 O% x. s  B# `
  84. .text:00401168                 mov     esi, ecx
    % v- Z7 V: n$ U+ K0 Y, @
  85. .text:0040116A                 jz      short loc_4011CA
    & Q% j6 `: _! \# @2 o7 O
  86. .text:0040116C                 mov     eax, [esi]
    # k& g; g6 a& ^/ v
  87. .text:0040116E                 cmp     edi, eax* k* i  p# X; F! q
  88. .text:00401170                 jz      short loc_4011CA( E; _: t( o$ e; f( P8 A+ I7 @
  89. .text:00401172                 cmp     byte ptr [edi], 0% [3 w5 @6 \8 |7 d2 G" y7 h
  90. .text:00401175                 jnz     short loc_4011A2
    0 m$ W. G) |5 ?1 }9 r, ?
  91. .text:00401177                 test    eax, eax
    6 p3 T- s; r- t9 S; X8 x; w
  92. .text:00401179                 mov     dword ptr [esi+4], 1& Y/ }  c7 ^" P4 V
  93. .text:00401180                 jz      short loc_40118B
    5 I5 l! Y: p3 O- ~$ Y! M
  94. .text:00401182                 push    eax             ; void *
    , S  E/ P( }+ @3 i0 \
  95. .text:00401183                 call    ??_V@YAXPAX@Z   ; operator delete[](void *)$ O/ Q5 k8 m7 l! B1 I6 r5 [
  96. .text:00401188                 add     esp, 4
    * T0 P7 U- S2 q* f+ B( W+ G4 ^8 ^" t
  97. .text:0040118B
      I" W! N. Z0 j; z- Z' z
  98. .text:0040118B loc_40118B:                             ; CODE XREF: sub_401160+20↑j
    9 [7 Z' b+ S9 s* k) L
  99. .text:0040118B                 push    6               ; Size9 y5 Y# }! t: B7 s
  100. .text:0040118D                 call    j_??2@YAPAXI@Z  ; operator new(uint)" ]- G8 t) x1 U% A% E8 ~
  101. .text:00401192                 add     esp, 4
    ' q" L0 y- |: [0 A
  102. .text:00401195                 mov     [esi], eax
    5 S" i: A; u) O6 i4 g
  103. .text:00401197                 pop     edi
    ; X* Q- K9 V/ [+ u9 n
  104. .text:00401198                 mov     dword ptr [eax], 0: c5 Z9 K5 D8 x5 v/ B; l: f& ^! X
  105. .text:0040119E                 pop     esi+ Q; v; N, j2 b
  106. .text:0040119F                 retn    46 z& H8 ~8 A  x
  107. .text:004011A2 ; ---------------------------------------------------------------------------
    ) M3 ]; b1 S/ W( c* t# K; P1 h8 ^
  108. .text:004011A20 Z" ^4 f5 n1 W- F$ c5 N
  109. .text:004011A2 loc_4011A2:                             ; CODE XREF: sub_401160+15↑j
    / K/ S& m1 q) w) m3 U% N4 A8 _
  110. .text:004011A2                 mov     eax, edi
    0 ?) _+ v" q4 |6 C+ c; n) c; I
  111. .text:004011A4                 lea     edx, [eax+1]+ ^  r: N* G* Y  |% B0 e
  112. .text:004011A7
    & Q* f3 ]/ C$ @3 u9 ]
  113. .text:004011A7 loc_4011A7:                             ; CODE XREF: sub_401160+4C↓j
    0 X+ e2 y2 f% l& a$ [# e
  114. .text:004011A7                 mov     cl, [eax]: f. q2 N) a: H# H8 i1 ]. ]
  115. .text:004011A9                 inc     eax
    # @5 Z# }! \5 G; N
  116. .text:004011AA                 test    cl, cl% O2 l$ z6 [. P  M- n: h# _3 }
  117. .text:004011AC                 jnz     short loc_4011A73 Q( M; h! r6 f8 R* S* o, ^
  118. .text:004011AE                 sub     eax, edx
    7 \; c% ]1 V) @4 @
  119. .text:004011B0                 push    eax
    5 Y. P) N) \0 [5 @% |
  120. .text:004011B1                 mov     ecx, esi
    9 k/ n; `2 B0 W( I& Y* ?% R1 J
  121. .text:004011B3                 call    sub_401030- Z' ^/ e" v' ]) a) x" ^( Z% Q; Y
  122. .text:004011B8                 mov     edx, [esi]- p% Q9 f' c/ S6 K* e1 m
  123. .text:004011BA                 mov     ecx, edi/ `; ]5 H# P" y9 b* L, z
  124. .text:004011BC                 lea     esp, [esp+0]
    ) N. y: ~% ^- I% @7 N$ |) [
  125. .text:004011C04 O; r, f. e1 y( o2 n- z, ?  p
  126. .text:004011C0 loc_4011C0:                             ; CODE XREF: sub_401160+68↓j5 t1 D7 }' `9 {: i; U4 O9 s
  127. .text:004011C0                 mov     al, [ecx]( q- Y" D" S0 \3 K6 R4 z2 k) _
  128. .text:004011C2                 inc     ecx, _7 y7 k) {8 I0 d# X9 \4 L' \
  129. .text:004011C3                 mov     [edx], al' o& e8 L  u; k
  130. .text:004011C5                 inc     edx
      }5 p. w  t8 l: Z3 \3 m
  131. .text:004011C6                 test    al, al
    # _1 H8 p2 u6 }+ T! b5 d, e( j
  132. .text:004011C8                 jnz     short loc_4011C0
    6 _& \8 f  o) K( A
  133. .text:004011CA. @6 ^1 N9 J; o* l. D
  134. .text:004011CA loc_4011CA:                             ; CODE XREF: sub_401160+A↑j" A: {$ p8 B+ I
  135. .text:004011CA                                         ; sub_401160+10↑j
    0 `8 T2 B/ W9 c2 p- \8 n5 _
  136. .text:004011CA                 pop     edi
    0 I0 P, H+ Q6 P* i( Z+ _1 J
  137. .text:004011CB                 pop     esi" ^- Q* o8 f" T5 f
  138. .text:004011CC                 retn    4
    * G$ ^4 I2 M+ ]! ]' L$ a  q
  139. .text:004011CC sub_401160      endp+ S* m. _# z6 M- P5 K7 ?- q* d) s
  140. .text:004011CC- S' V1 `  X# o) g7 @+ X
  141. .text:004011CC ; ---------------------------------------------------------------------------
复制代码
) S  `# O( f# b( `, R* c0 S9 r

4 T! z$ s# s8 Z: L$ v! y  T6 k5 j! y" O7 g. N7 C7 y
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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