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

建议 【Directx9游戏汉化 #4】 记忆过载 (Overclocked) 寻找CreateDevice

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

[建议] 【Directx9游戏汉化 #4】 记忆过载 (Overclocked) 寻找CreateDevice

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

【Directx9游戏汉化 #4】 记忆过载 (Overclocked) 寻找CreateDevice

本帖最后由 shane007 于 2023-8-26 16:32 编辑 ) }! |8 [1 I, `! C7 l, E2 ?# V
' k6 d3 n: c8 @1 [" Z3 ]
这个游戏以前分析过,这次再写仔细些,+ A5 A8 ]/ w8 T4 L& _
CreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。3 d5 q' f" p% N9 Q
这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。
2 v0 J- I! J6 J7 k* H1 L4 v
0 V# k! Z! m. I$ E% \* ]: l
  1. .text:0041641A                 push    ecx
    ! s0 W6 m: Y" o7 D
  2. .text:0041641B                 mov     [esi+90Dh], dl7 J$ ?3 X4 \% c% e" T3 X
  3. .text:00416421                 mov     ecx, hWnd
    : R, d% p4 T6 e! H9 w- J: x- ]
  4. .text:00416427                 mov     edx, [eax]- E" J( m' T" [; N1 m0 s. F4 F. [
  5. .text:00416429                 mov     edx, [edx+40h]
    , G4 u+ x# i8 |- V0 p' Z) h: W% d# i
  6. .text:0041642C                 push    40h3 Z" f: i; U5 \6 r! g
  7. .text:0041642E                 push    ecx3 k9 N. r0 D' l5 J% o
  8. .text:0041642F                 push    1  `$ j7 e1 r* g# a2 S
  9. .text:00416431                 push    ebx8 w' g. h8 b' B5 d* L. C+ u
  10. .text:00416432                 push    eax# H. }8 f* I6 N! R1 \' p
  11. .text:00416433                 call    edx
复制代码

  1. " O( t( q  s% [: y; |& B# [8 y7 |
  2. int __thiscall sub_415FF0(char *this)% k& @+ W; ^+ |* L" a  A0 y* P: r
  3. {, G8 {+ q4 e# `7 ~2 B4 d+ w6 Z3 B
  4.   char *v1; // esi
    5 O" V5 S- J7 n) l6 R# }5 J
  5.   FILE *v2; // eax
    % P- y) W% ], q% W) V$ A
  6.   IDirect3D9 *v3; // eax
    ; e" z4 O1 ]1 a5 w( J7 E- `9 t
  7.   const char *v4; // ecx
    . G+ L, q. h% q& i
  8.   const char *v5; // edi) |! E+ Z. \+ P' r
  9.   const char *v6; // edx" O! n) R/ T/ @, s
  10.   const char *v7; // eax
    $ T/ X; G3 Z. U7 y" a
  11.   FILE *v8; // eax8 E* X! f+ b* \+ _
  12.   signed int v9; // ebp
    1 m9 f4 u: j# J0 B4 e
  13.   const char **v10; // eax% ^$ j+ m; n- H  p
  14.   double v11; // st7* g/ z% \3 W; ~4 l  n2 u
  15.   double v12; // st6
    $ D7 P6 D) L* O# K, v
  16.   const char *v13; // ecx" Y: S; Y% d5 Y1 V
  17.   FILE *v14; // eax
    4 z' B' K5 E" o0 P8 d  K. ?
  18.   unsigned int v15; // eax
    . o, F( G2 g' u
  19.   int v16; // ecx, N8 S0 F2 H: y. @6 m
  20.   FILE *v17; // eax0 U2 E$ O+ k- W0 l1 _, j) A
  21.   int v18; // eax
    0 W( s+ ?- R0 `7 u" g
  22.   bool v19; // zf
    ' \- \4 R+ u& L0 ~5 J
  23.   int v20; // eax- r( ]$ O/ W4 i3 j
  24.   unsigned int v21; // edx! Z& I9 c7 C$ n/ |
  25.   bool v22; // sf/ ?) ^, ~- v, @# B' d/ W
  26.   int v23; // eax
    1 n* H/ N) R6 }3 K
  27.   int v24; // eax# G& H  p1 w# I% g$ t: w( x/ @% R  U
  28.   int v25; // ecx; Q1 A5 ^5 @9 U) p, k4 _4 w' a
  29.   int v26; // eax
    5 @/ }3 B) _  z( Y/ a
  30.   int v27; // ecx
    , j( l& A. o" S* I1 l- x
  31.   const char *v28; // eax
    ( F0 X/ B" I% P+ I
  32.   const char *v29; // edx
    ( Z! E# e3 Y: U5 R4 ~
  33.   FILE *v30; // eax
    9 m8 j7 J, b( i2 A8 m
  34.   void *v31; // eax- m( U9 K+ {0 R
  35.   double v32; // st70 p" ?3 E, k0 h0 K
  36.   _DWORD *v33; // esi! ]+ |5 O# G) p/ f0 @
  37.   float *v34; // eax
    7 ~( q2 i* S8 D( F
  38.   float v35; // ecx) L: K! B$ @/ u, d0 u0 [/ Z
  39.   float v36; // edx( [4 `/ R& i( _$ x
  40.   float v37; // ecx4 S5 [2 g6 Y) A/ W# O
  41.   float v38; // edx
    & B, \# e" ]$ k* h8 i
  42.   float v39; // ecx
    3 E7 l1 j9 h8 y
  43.   float *v40; // eax/ S; C8 z5 V! {2 `
  44.   float v41; // edx
    * Q* r3 M3 y1 R3 t8 Q. y/ b. T" @
  45.   float v42; // ecx
    ; d9 d: w' j. H: ~7 Z
  46.   float v43; // edx
    + v% o: W1 v6 {' \
  47.   float *v44; // eax* M# a0 U4 w! @- ^
  48.   float v45; // ecx* Y& B' ]1 R% {$ F" M+ o- [' C) C; l
  49.   const char *v47; // ecx
    ( m3 e+ D7 X# k1 B" O; C
  50.   const char *v48; // ecx
    9 c  O" _) O8 C2 |
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]: {. K, [+ ~' ?  L2 M' c! |1 `
  52.   const char *v50; // [esp+A4h] [ebp-58h]- w7 S3 A+ j! f0 {; y0 k" ~
  53.   const char *v51; // [esp+A8h] [ebp-54h]
    & P0 N0 @: [/ ?8 w1 l! C* I4 k
  54.   const char *v52; // [esp+ACh] [ebp-50h]2 ^% R6 X: n0 S& t; M7 S
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]  _$ [- l) p! F- ^! O- J
  56.   const char **v54; // [esp+C8h] [ebp-34h]
    : Y. d4 N) \! l5 w3 N* o7 B+ G
  57.   float v55; // [esp+CCh] [ebp-30h]
    / k! m+ |( ]2 M3 I; b
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]. E0 H/ m1 F- |0 j, G% C
  59.   float v57; // [esp+D4h] [ebp-28h]
    $ w8 o$ {/ K) Q6 x
  60.   float v58; // [esp+D8h] [ebp-24h]6 m. n; \" o/ H$ F- [% h# i
  61.   float v59; // [esp+DCh] [ebp-20h]
    + G2 b1 r( f9 W
  62.   char v60; // [esp+E0h] [ebp-1Ch]4 i- ^) n( e& e3 i$ c* _
  63.   int v61; // [esp+ECh] [ebp-10h]
    6 ^+ D, B% ~$ `( P) P. i2 q2 k
  64.   int v62; // [esp+F8h] [ebp-4h]0 R3 o! ]: b7 F; t5 N" _2 J4 o, V
  65. * }( [: V$ w7 ]; v% {* S. Z8 G
  66.   v1 = this;+ T7 e+ i' E' o6 {  n
  67.   v2 = (FILE *)sub_4D7E8F("Initializing graphics...\n");
    3 B- K/ E$ T8 M4 P5 d% i* C
  68.   fprintf(v2 + 1, v52);
    * u; N* _& Y# {9 t$ `2 q+ h+ B% y
  69.   *((_DWORD *)v1 + 492) = 0;# L/ q1 j8 Z; `8 i2 X; L8 B2 P
  70.   *((_DWORD *)v1 + 609) = 0;9 J: `% j: {; D7 c' |' }
  71.   *((_DWORD *)v1 + 611) = 0;
      b! S, O4 y" F1 |7 q/ r/ ^9 B
  72.   *((_DWORD *)v1 + 610) = 0;
    % Q- \3 O. k$ v7 h" E9 O
  73.   *((_DWORD *)v1 + 613) = 0;
    ( i. O7 G) x8 H# ]2 L* y- h
  74.   *((_DWORD *)v1 + 612) = 0;
    : P3 u$ f  J: H! [8 l1 D/ I% G; W2 B
  75.   *((_DWORD *)v1 + 614) = 0;
    ( v7 n. d9 P2 C- J) M2 i& n
  76.   *((_DWORD *)v1 + 601) = 0;
    4 g/ R7 g2 m! J* P8 ]; }/ D
  77.   *((_DWORD *)v1 + 600) = 0;- J0 b$ g7 S3 z; C4 ]" D% K
  78.   *((_DWORD *)v1 + 615) = 0;
    - G. e# i- L/ ?0 S+ D' B( r1 H
  79.   *((_DWORD *)v1 + 395) = 0;
    9 g! \9 G6 _8 o
  80.   *((_DWORD *)v1 + 488) = 0;! d6 y1 R0 J! g8 E# T$ v: Q% W. m
  81.   *((_DWORD *)v1 + 486) = 0;
    $ ~! Y! B3 x, Z) u, a
  82.   *((_DWORD *)v1 + 487) = 0;
    2 E) d% d* [- B$ |: f( P
  83.   *((_DWORD *)v1 + 489) = 0;
    9 }/ {+ |% ?5 q0 @, R9 y
  84.   *((_DWORD *)v1 + 491) = 0;
    3 F# A9 A* i+ h. ^- O2 I4 r% D+ ^
  85.   *((_DWORD *)v1 + 514) = 0;+ O, K, Q, z6 t5 i7 |  I
  86.   *((_DWORD *)v1 + 597) = 0;
    * K4 C* m7 U  V" S+ r. ]5 e
  87.   v53 = v1 + 1968;
    ) y) z- q+ h+ _9 m# ^1 [1 D
  88.   *((_DWORD *)v1 + 498) = 0;
    3 |& X8 i5 N6 R+ ?  T
  89.   *((_DWORD *)v1 + 499) = 0;+ x& D6 H& X3 j5 }; {% e$ D
  90.   *((_DWORD *)v1 + 500) = 0;" \6 J6 V( W+ P
  91.   *((_DWORD *)v1 + 501) = 0;2 O: |1 Q% y; o
  92.   *((_DWORD *)v1 + 502) = 0;
    2 {  J( |" `' ]2 n0 R; q4 a  |5 O
  93.   v52 = (const char *)32;
    - t3 f+ T3 S+ v3 k0 \5 X- z
  94.   *((_DWORD *)v1 + 578) = 0;
    # b( _& J* M) r5 N- F8 |8 P* W3 e
  95.   v1[2316] = 1;8 C8 M, ]7 I- [, J0 o. y
  96.   v1[2476] = 0;+ s8 o! p! M5 i. U2 _
  97.   v3 = Direct3DCreate9((UINT)v52);
    # ]+ g5 w8 C% y, z! ]
  98.   *((_DWORD *)v1 + 384) = v3;0 v6 f3 M2 t& J  K8 @9 l  T
  99.   if ( !v3 )7 ^* u8 A0 I: ^$ `( @4 Y
  100.   {2 ?: v5 d2 p' |9 [
  101.     v5 = v56;+ h" Z% ]$ U: T
  102.     goto LABEL_27;
    % _, N2 c& {7 K$ }0 q
  103.   }, e, w3 S& J( F* D3 O) W2 {
  104.   v5 = (const char *)v3->lpVtbl->GetAdapterDisplayMode(v3, 0, (D3DDISPLAYMODE *)&v60);5 k! {& r3 Q9 o9 `5 I! D
  105.   if ( (signed int)v5 < 0 )3 E$ N" e3 q8 Q& J2 c1 r  G2 h
  106.     goto LABEL_27;
    6 ^/ O! Y' Z$ A; V# _5 P' F
  107.   (*(void (__stdcall **)(_DWORD, _DWORD, signed int, char *))(**((_DWORD **)v1 + 384) + 56))(
    8 K$ f% d4 p9 U
  108.     *((_DWORD *)v1 + 384),( j2 |; Q, m6 D! s$ v. a$ c; K
  109.     0,: A! J2 i8 y. t
  110.     1,- q! h) ]/ f( o  I/ Z) T' D
  111.     v1 + 1640);
    5 X* S4 `! {1 H+ C# S6 U0 N) S# u, a7 ?
  112.   memset(v1 + 1584, 0, 0x38u);9 ^$ U) K( ]7 |# _
  113.   *((_DWORD *)v1 + 404) = 0;
    7 y  `% C' J# @4 }; I" q
  114.   *((_DWORD *)v1 + 402) = 1;9 _5 f0 k) ], `( J" p7 n
  115.   *((_DWORD *)v1 + 403) = hWnd;
    1 @7 Z; P0 I  j
  116.   *((_DWORD *)v1 + 407) = 0;! q  V' Q0 t, v
  117.   *((_DWORD *)v1 + 399) = 1;% u  T/ g! p* h! Y
  118.   *((_DWORD *)v1 + 398) = 21;
    & e6 @7 S* J2 K1 E
  119.   *((_DWORD *)v1 + 405) = 0;1 N* b0 S3 r4 i, _9 m6 V
  120.   *((_DWORD *)v1 + 522) = (unsigned __int16)word_558176;
    . c& w3 O1 D" U* Q" C! C
  121.   v6 = (const char *)word_558174;
    3 R9 \5 a( l5 c6 ~, s# v) G. ~: m
  122.   *((_DWORD *)v1 + 523) = word_558174;$ x! ?( r2 L1 ~
  123.   v7 = (const char *)*((_DWORD *)v1 + 522);
    $ n+ z. h8 c% ?  E
  124.   v52 = v6;
    9 I8 A% C4 t. J+ R: U
  125.   v51 = v7;! j. B( |) r3 X  ~1 X! ?, S
  126.   v50 = "Screen resolution is %d x %d.\n";
    / P" t1 \* {, C' O5 d& N
  127.   v1[2076] = *(_DWORD *)&word_558174 == 67109632;2 e# R/ [4 _/ Z6 d" }
  128.   v8 = (FILE *)sub_4D7E8F(v50);
    / ]$ v# ^4 r3 h) ~8 T6 L2 u( P
  129.   fprintf(v8 + 1, v50);- C( ~8 }6 c1 D! v* {
  130.   v9 = *((_DWORD *)v1 + 522);+ @$ E: _, l, n( w, f' G% t$ u. ]) d% R
  131.   v54 = (const char **)*((_DWORD *)v1 + 523);) O" c6 J/ D$ b  u5 O1 P) K# }. Y3 Z
  132.   v10 = v54;
    ( r4 w) a: r4 X' u3 _# g
  133.   *((_DWORD *)v1 + 396) = v9;
    3 f. h3 B( v) R5 C2 X9 a) o& g
  134.   *((_DWORD *)v1 + 397) = v10;+ k3 {( g% {  s& U9 N
  135.   v55 = (double)v9 * 0.0009765625;
    0 O- u4 }3 @7 O; [
  136.   v11 = v55;
    1 c5 F- E( W1 r( `% k  T
  137.   *((float *)v1 + 520) = v55;
    $ l7 O  r% r5 A9 n% s0 F4 b
  138.   v55 = (double)(signed int)v54 / 768.0;8 ^. x( q9 h- @8 M7 q
  139.   v12 = v55;
    4 Z6 m7 C7 Z1 x1 r: s' r% ~
  140.   *((float *)v1 + 521) = v55;0 }/ b0 \. x6 ^  u7 _) o
  141.   *((_DWORD *)v1 + 524) = (signed int)(v11 * 1024.0);
    , U, ?4 L5 j0 @8 |  @
  142.   v52 = (const char *)1;
    9 d# L( q5 w* B4 w
  143.   v51 = (const char *)(v54 + 11);0 O+ ]% }4 e3 R
  144.   v50 = (const char *)(v9 + 6);
    ) m7 F" m+ p: ~' w  l$ q. a+ K
  145.   *((_DWORD *)v1 + 525) = (signed int)(v12 * 512.0);
    ) v2 j) }* ~( _, x
  146.   *((_DWORD *)v1 + 515) = 0;4 @# ^) D* k& D
  147.   *((_DWORD *)v1 + 517) = 1024;& \- K7 |0 e9 m0 `5 q' Z
  148.   *((_DWORD *)v1 + 516) = 128;
    9 P2 p6 J9 p2 M6 d. R0 f
  149.   *((_DWORD *)v1 + 518) = 640;
    6 A: l% K' E4 t7 B
  150.   MoveWindow(hWnd, 0, 0, (int)v50, (int)v51, (BOOL)v52);
    $ b# b( X  `- A7 k
  151.   if ( (*(int (__stdcall **)(_DWORD, _DWORD, signed int, int, signed int, signed int))(**((_DWORD **)v1 + 384) + 48))(* S9 o8 D0 X# Y( \( Q
  152.          *((_DWORD *)v1 + 384),
    5 b6 x# \; g3 ]" W. J  d
  153.          0,+ b4 y4 p, C8 V
  154.          1,
    ' R/ ]: H0 r# l- {
  155.          v61,8 Z! s9 l. J  [
  156.          21,
    3 u2 I! I/ r+ i' D# Y# O" L, E
  157.          75) < 0 )" l  z& ]: j2 _" q2 U1 p; J, E
  158.   {
    ( b" L6 F* z  f! S% H- q$ ~6 g
  159.     v52 = v5;
    ' Y- F; ~* o+ u
  160.     v51 = v13;
    8 V+ f- U( q; m. F! z- K  L* M8 z
  161.     v55 = COERCE_FLOAT(&v51);! a' M) m7 S2 Z1 Y* B8 U
  162.     sub_456DD0("Direct3D initialization failed. No appropriate Depth/Stencil-Buffer-Format found.");
    8 ?  v$ h0 ^5 V9 h0 U  r) Y5 }
  163.     v50 = v47;4 v7 U1 Y" ?- z& i* `
  164.     v54 = &v50;; j7 a5 Q( b# R4 N7 h
  165.     v62 = 0;
    # c2 ^1 v. b3 T4 \: B4 P: |$ I3 K
  166.     sub_456DD0("cCougarGraphics::cCougarGraphics");/ S/ W: y7 y* z" [7 I" h4 @
  167.     v49 = 118;9 r  V( F/ j3 O0 J) F4 D
  168.     goto LABEL_28;
    5 p9 {8 D; B1 y2 U% |: N5 Y
  169.   }& d7 C( S4 n5 _6 L
  170.   v52 = "Depth/Stencil Buffer is D24S8.\n";. I  d! C( y! Y  \: b. O2 z: K2 j
  171.   *((_DWORD *)v1 + 576) = 24;
    " y( L& {2 x$ @$ W3 B* e* i
  172.   *((_DWORD *)v1 + 577) = 8;
    # \' E) ^0 E6 c9 \9 i' u1 b( U
  173.   *((_DWORD *)v1 + 406) = 75;
    7 ?/ g! o7 ]1 u0 y. O% Z
  174.   v14 = (FILE *)sub_4D7E8F(v52);# P7 H0 Z; u1 Z/ _* j  n
  175.   fprintf(v14 + 1, v52);; o, `2 t% r. e$ e! ^0 t$ B
  176.   *((_DWORD *)v1 + 409) = 1;- {, c* T* A- P
  177.   if ( dword_558178 != 4) @! k/ j* N& P. ^- s1 x
  178.     || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)
    + p. n, ~# j* f: }" K
  179.                                                                                                 + 44))(! Z/ }0 L0 k# T# r0 y1 l* l( c
  180.          *((_DWORD *)v1 + 384),- ~, C5 |* K# o* }/ u+ B2 ~1 i4 a
  181.          0,9 k! S" P4 p* Z
  182.          1,# ?2 p. s/ ]1 |) B* @+ u) }
  183.          21,4 N* i! \* d1 K, t0 ~
  184.          *((_DWORD *)v1 + 404),
      p4 k! z7 {& h9 x; z! E3 A1 m5 I
  185.          4,8 X6 }' r& T  s+ ~  X! S/ t2 F% a
  186.          0) )
      y0 Z4 w- q; U3 y1 L) Z4 P
  187.   {: L/ a4 t8 U* x! j
  188.     if ( dword_558178 != 2
    & K2 }  k7 a5 V8 I' V4 @
  189.       || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)
    $ `2 G5 v' O0 ?
  190.                                                                                                   + 44))(
    ' a8 W( R0 s2 Y' o* E& A
  191.            *((_DWORD *)v1 + 384),
    : C% e/ e" E0 O; {2 a  X* S( L% @
  192.            0,
    2 |1 F, A$ v9 \+ i- |- L) E
  193.            1,3 C, r. s) v) i4 \" S! Y
  194.            21,
    - U3 G7 O4 z% Q8 U
  195.            *((_DWORD *)v1 + 404),
    4 k1 e9 Q" V1 ], q9 U! \0 P+ X
  196.            2,
    : r. r  |/ Z9 Q$ G
  197.            0) )
    , B& \0 G' Y: t" t: O
  198.     {
    3 Z3 g' d! Q. B4 S) A
  199.       if ( (unsigned int)dword_558178 > 0
    $ X$ u, m' Q; b  G
  200.         && !(*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, const char **))(**((_DWORD **)v1 + 384) + 44))(* z/ {% c; _' f" Q
  201.               *((_DWORD *)v1 + 384),
    0 J8 ]# J6 ]% a0 z) q0 k. r
  202.               0,
    6 ^, J& x6 g3 u& s/ N- H
  203.               1,# a* l( i* i" G
  204.               21,* g1 w8 W' Q: `- E9 K& H# \+ h
  205.               *((_DWORD *)v1 + 404),
    9 Q3 O! f& Y7 H% g4 f; n. u. ^* T: c
  206.               1,
    , V7 A2 ?* A6 {- W# Z
  207.               &v56) )
    % j; I# U/ H" W, x% A  P
  208.       {
    ! L6 ]- p, m* ?3 m- ^' J
  209.         v15 = (unsigned int)v56;+ C  l% V/ X! L# m
  210.         *((_DWORD *)v1 + 400) = 1;, p) F) L; w, m& {& m# G
  211.         v16 = dword_558178;7 j: V5 T. W3 i! a/ E/ s9 w
  212.         if ( dword_558178 >= v15 )
    " Y8 g- y! \0 i% o: F( R
  213.           v16 = v15;- O" |; n8 r5 W0 {# o2 z
  214.         *((_DWORD *)v1 + 401) = v16 - 1;- U0 i" H, o% M; K1 ?
  215.         if ( dword_558178 < v15 )
      J& X5 r2 d4 W# ]- Q* q1 x
  216.           v15 = dword_558178;# T7 j" d0 b  L5 h& Z1 `
  217.         *((_DWORD *)v1 + 578) = v15;7 A) @, T) i( I+ s8 l! h
  218.       }+ E, S0 W6 u7 @
  219.     }  A  y. Y9 C2 M" p
  220.     else
    / }! W7 V! l9 p& t5 ~6 J5 g# f
  221.     {
    $ g8 J  N- Y2 \( g" U; W
  222.       *((_DWORD *)v1 + 400) = 2;' G. |0 ]- o: T- F9 o
  223.       *((_DWORD *)v1 + 578) = 2;- s; e* h* z: u. y& Q/ {
  224.     }! p; ^6 k" o+ E1 f3 ^; I2 F
  225.   }
    " f5 v' T6 D; J# t5 J7 Q
  226.   else
    ) e2 Z- s9 v8 {5 m
  227.   {$ m* }2 y% E' U8 d3 s2 V
  228.     *((_DWORD *)v1 + 400) = 4;4 ]/ B$ J* ~, e( N
  229.     *((_DWORD *)v1 + 578) = 4;3 T7 {1 q9 k' N  H- J+ V2 ~( e( e" G
  230.   }  k% s3 c& S* s" Y. J& ~7 F. u
  231.   v52 = (const char *)*((_DWORD *)v1 + 578);
    9 k, v5 X# K, F9 ?. u' _4 w! z
  232.   v17 = (FILE *)sub_4D7E8F("AntiAliasing is %d.\n");
    ; T3 j1 \$ T4 N6 L: G
  233.   fprintf(v17 + 1, v51);; {1 m+ C! h; v1 z* |
  234.   v18 = *((_DWORD *)v1 + 384);/ h' U+ I3 X* |  P
  235.   v19 = *((_DWORD *)v1 + 578) == 0;2 g- B: ]9 o; q7 W# o1 a; F/ `
  236.   v52 = (const char *)827611204;5 b: i- o0 x" K$ f/ u
  237.   v51 = (const char *)3;
    ' ^7 U3 x; s, ]3 \6 m, _$ c4 B
  238.   v50 = 0;" l; @6 b- \. K; s/ ]  W( y
  239.   *((_DWORD *)v1 + 402) = 2 * v19 + 1;, Q, ~$ v$ m+ F: H
  240.   v20 = (*(int (__stdcall **)(int, _DWORD, signed int, int, const char *, const char *, const char *))(*(_DWORD *)v18 + 40))(% j2 g8 [' q; `! u
  241.           v18,4 l* ?$ t1 W9 k# E
  242.           0,
    ; ~" y! q" ?" N; [( j3 I, P
  243.           1,, l* [. I: i+ k* @  W% @
  244.           v61,
    : G3 E3 F. g7 y9 b
  245.           v50,6 x+ e, K8 G4 }( x& H9 c
  246.           v51,0 h7 i0 m' ~) I# F
  247.           v52);  Q" U7 g% ]" I( ^
  248.   v21 = *((_DWORD *)v1 + 425);' y( b+ `( A8 h2 t* ]
  249.   v22 = v20 < 0;
    , K( D4 D7 @; v4 t; }
  250.   v23 = *((_DWORD *)v1 + 384);
    # L4 N# l7 ~' Q( u( _% \' v. Q+ e
  251.   v1[2316] = !v22;( d, d- Q( B9 @9 p0 z
  252.   v52 = v1 + 1540;
    & b# U! P- O' a1 t( W7 I& m& N
  253.   v51 = v1 + 1584;
    7 i# C& \9 _0 j+ Q# L
  254.   v1[2317] = (v21 >> 14) & 1;
    3 U3 n7 B. ^6 V: ]. o: Y0 _
  255.   v5 = (const char *)(*(int (__stdcall **)(int, _DWORD, signed int, HWND, signed int, const char *, const char *))(*(_DWORD *)v23 + 64))(
    ! p9 |3 z2 m9 }. s
  256.                        v23,' m/ Z: _6 \: {! y: e4 `% A+ C1 `
  257.                        0,4 D3 m% ~1 j+ o2 a/ o+ n; b% n
  258.                        1,6 [; `: N- Z9 ]  W2 Q& M! h  q
  259.                        hWnd,
    6 F6 x9 R& {0 U: p8 M6 ?
  260.                        64,, G/ j0 u$ z" k+ d( F+ h2 s
  261.                        v51,
    8 V' \" r4 }( d. M( X: S
  262.                        v52);4 ^: v! Q5 E# _  Y9 W7 H
  263.   if ( (signed int)v5 < 0 )! q. _' Z) h6 Q/ h, e0 D' H) z+ K6 F, u
  264.     goto LABEL_27;
    1 B) s. W0 u8 v# u
  265.   if ( dword_558180 && ((v24 = *((_DWORD *)v1 + 425), v24 & 2) || v24 & 0x100) ); S% i- q; N4 j) c; P
  266.   {
    0 ^: o9 I) I9 A& _& }6 r
  267.     v25 = *((_DWORD *)v1 + 609);
    & }( ^+ h4 j& [4 [1 ?
  268.     v26 = sub_418670(*((_DWORD *)v1 + 522));4 p+ d7 L7 W/ L; Q
  269.     v52 = (const char *)*((_DWORD *)v1 + 523);
    ; J# {/ _9 F- e3 E" w1 n( g, R
  270.     v27 = *((_DWORD *)v1 + 609);
    4 f. w/ \$ G2 I1 A
  271.     *((_DWORD *)v1 + 496) = v26;
    4 J2 X! j5 q/ a4 N: ^
  272.     v28 = (const char *)sub_418670(v52);1 b. W1 [7 K, p' s& s+ d) N
  273.   }
    + b( ~% A" Q! h7 C. d! ^
  274.   else
    - u2 m' w& ?& _4 X
  275.   {
    3 {3 I$ e% G% E/ M2 X) I3 b4 E; j
  276.     v28 = (const char *)*((_DWORD *)v1 + 523);
    0 R; H$ v" j7 E: j+ \
  277.     *((_DWORD *)v1 + 496) = *((_DWORD *)v1 + 522);
    ; x& g1 Q4 Q1 ]
  278.   }
    ) r: a$ V+ C. w0 y! k; |" p, @( t
  279.   v29 = (const char *)*((_DWORD *)v1 + 496);! j8 O; g) G; n( z6 w
  280.   v52 = v28;; q+ K! b, Q& X& ?" ]. ^  X! u, p
  281.   v51 = v29;- g/ ]+ c3 A- m# O3 J3 v8 S- ^
  282.   v50 = "PostProcess Surface is %d x %d.\n";
    7 A0 k4 c3 Q8 R+ s$ q/ k
  283.   *((_DWORD *)v1 + 497) = v28;
    1 Y2 ~5 m* s5 @# J  X
  284.   v30 = (FILE *)sub_4D7E8F(v50);. t( c' B6 `8 F6 M
  285.   fprintf(v30 + 1, v50);, h& f7 o/ B" I, P$ `) h1 D1 {, N6 k
  286.   (*(void (__stdcall **)(_DWORD, _DWORD, char *))(**((_DWORD **)v1 + 385) + 88))(*((_DWORD *)v1 + 385), 0, v1);
    1 l# J- ?% v! C" m  p2 @
  287.   sub_413100(v1);
      B# I7 N+ d7 ]. b+ S# a# [2 n2 r
  288.   sub_411D60(v1);; T) B% n9 f+ v3 N& l
  289.   v31 = malloc(0x78u);
    5 N% p. F! D. _% Y
  290.   v32 = -0.5 / (double)*((signed int *)v1 + 522);
    ! A" k* G7 V) `5 B3 F" X
  291.   *((_DWORD *)v1 + 599) = v31;
    % K  j' f7 K5 u
  292.   *((_DWORD *)v1 + 600) = 0;
    & {) `2 n/ O1 N* R1 D: ~
  293.   *((float *)v1 + 526) = v32;* E8 q/ V  d  a, Y0 @$ {5 m6 [  K
  294.   *((float *)v1 + 527) = -0.5 / (double)*((signed int *)v1 + 523);
    4 o0 ]1 \8 {; G: v
  295.   sub_411CC0(v1);) B! L9 t  Z, w2 }- p$ M
  296.   v33 = v53;
    ( R! {7 B* |! j, Z  c3 N( N
  297.   v5 = (const char *)(*(int (__stdcall **)(int, signed int, signed int, signed int, signed int, _DWORD *, _DWORD))(*(_DWORD *)dword_559B7C + 104))(
    * U9 {! Y- Q( r- v) s
  298.                        dword_559B7C,
    & l. ^/ c* a' u. ]0 L
  299.                        80,; P; T! P, Y) N$ F0 i% d% X
  300.                        8,
    * B* M3 X- P: U6 }: ^
  301.                        258,
    " a7 }6 F& }" u" N, V
  302.                        1,6 ~% p& h% l) V6 {. S0 q; a8 Q
  303.                        v53,1 }( T) N% i$ C! y+ c' T
  304.                        0);
    4 x) O: @$ Q! \
  305.   if ( (signed int)v5 < 0 )
    2 z! q& ?! r5 W& c5 T$ k
  306.   {6 X% N7 I4 \  X8 g7 U1 u
  307. LABEL_27:& d! W" K( O- b8 O6 P2 M' e
  308.     v52 = v5;- K0 @' V6 B' D) g' C- n6 Z
  309.     v51 = v4;
    4 N. z2 G# C- s; _
  310.     v55 = COERCE_FLOAT(&v51);
    " w& U' o5 H: W! G6 C9 w3 g: E
  311.     sub_456DD0("Direct3D initialization failed.");
    . ?) W# L) E. S' S
  312.     v50 = v48;% }. R) I) o  N" `6 F
  313.     v54 = &v50;* I: |. T' ]3 j- Y( F6 N
  314.     v62 = 1;
    . c3 r8 F4 a' u+ |7 Q
  315.     sub_456DD0("cCougarGraphics::cCougarGraphics");$ j7 K) u  ]0 J: U$ e
  316.     v49 = 205;
    + r1 J% v7 H) p7 m* w7 _
  317. LABEL_28:9 |7 r. X0 ]% [, i6 A# ]
  318.     v62 = -1;0 N- f/ t2 ~5 p5 y
  319.     sub_40CB30(1, ".\\source\\class_graphics.cpp", v49, (char)v50, (char)v51, v52);
    # G3 y5 e, }% U0 ?* h6 E# p
  320.   }8 P/ n8 O( S3 l+ J; C( {
  321.   (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD **, _DWORD))(*(_DWORD *)*v53 + 44))(*v53, 0, 0, &v53, 0);
    5 m8 \& d- a4 @) B. `4 }
  322.   v58 = -1.0;
    ) _3 M4 U0 p: w0 Y# g
  323.   *(float *)v53 = -1.0;
    % ^  _0 e9 t6 `8 z4 L9 Z) p& G7 v
  324.   v59 = 1.0;
    3 `; k- d0 L8 d% z4 U* |
  325.   *((float *)v53 + 1) = v58;
    - ~- z+ K* r- Z' }
  326.   v57 = -1.0;+ a! O$ Q9 ?6 z. F. C
  327.   v58 = 1.0;
    6 F0 y7 d9 o2 H  X1 j3 ]+ n1 D* `
  328.   *((float *)v53 + 2) = v59;  [* A) a7 S0 }( M* h
  329.   v59 = 1.0;
    % D6 B7 b9 @5 V' _1 Y
  330.   v34 = (float *)v53;
    ) T: X% @' Z+ m- s
  331.   v35 = v57;
    ! @2 y7 \9 c* [6 B7 u( {5 I& i" o
  332.   v57 = 1.0;
    . Q% f. C$ \8 y  ~9 U4 L0 @5 n& g4 o# K
  333.   v36 = v58;
    4 P% e0 \& W7 R# d/ O6 T0 i
  334.   *((float *)v53 + 5) = v35;- L8 j; y+ w, U* z1 L
  335.   v37 = v59;' E$ w' T7 A  L
  336.   v59 = 1.0;& N$ ]" M4 k6 O8 e8 |- `
  337.   v34[6] = v36;
    , a& J+ i$ Y3 u. g' g* U# i+ E
  338.   v38 = v57;
    " @* ?9 J" Q# M5 R/ Q9 w' P0 e
  339.   v58 = -1.0;
    . ], Y4 L% }$ S7 a9 L; D5 Z, r, n
  340.   v34[7] = v37;0 R& }2 w4 a4 G
  341.   v39 = v58;
    # w9 V4 c9 }$ S* p  C$ B, g1 _
  342.   v57 = 1.0;
    3 w" e7 d, A* R' A
  343.   v58 = 1.0;
    6 |0 l9 h2 D2 Y' H" N
  344.   v40 = (float *)v53;
    7 h. u. B" P2 p& s+ Q( a
  345.   *((float *)v53 + 10) = v38;$ |/ a# N. s; j- n( j' N0 b9 Z8 z' d
  346.   v41 = v59;
    1 O) S; ]& `! k- B8 p; A# d7 m
  347.   v59 = 1.0;" f4 t9 }& k* M7 q
  348.   v40[11] = v39;
    $ ?# ^4 d/ r) M: g
  349.   v42 = v57;
    ! u1 ]. E& I/ d. O& r4 L$ v
  350.   v40[12] = v41;
    9 C5 i$ c6 b+ ?# P  \
  351.   v43 = v58;
      E2 L  a( |( @* q, Y# {
  352.   v44 = (float *)v53;
    , F: Y& m2 |8 ^' O) h% U
  353.   *((float *)v53 + 15) = v42;
    " E& `8 I+ j2 D: F* T
  354.   v45 = v59;
      b3 r' K! c3 _3 W1 e
  355.   v44[16] = v43;% s  B0 H; b; t; n9 g3 P
  356.   v44[17] = v45;
    ( Y( B- V, |& G% s/ j! _
  357.   *((float *)v53 + 3) = 0.000099999997;
    ' {; ~" V, r# S9 X9 R
  358.   *((float *)v53 + 4) = 1.0001;, O5 x3 w1 B) o. Z
  359.   *((float *)v53 + 8) = 0.000099999997;" c: v8 c6 \# Z" E
  360.   *((float *)v53 + 9) = 0.000099999997;6 k. _# N) d8 h/ m: w( N3 m
  361.   *((float *)v53 + 13) = 1.0001;, u- Q/ T/ p( P+ j: C) ~* T* [
  362.   *((float *)v53 + 14) = 1.0001;
    1 K. d2 G6 t- V; y. q
  363.   *((float *)v53 + 18) = 1.0001;5 {7 }! H- ?& h0 {; _$ o
  364.   *((float *)v53 + 19) = 0.000099999997;
    6 O, S! j; }" B' T0 q
  365.   (*(void (__stdcall **)(_DWORD))(*(_DWORD *)*v33 + 48))(*v33);* Z" ~" k* h$ J: p" e. l) @% l
  366.   return 0;
    3 m9 y/ w, J- P) \! w7 a
  367. }
复制代码

5 v# _4 g0 U2 \用Cheatengin寻找一个字幕之后,在以下地方断下  Z7 H5 y* I" v1 P) l6 c' k
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码

0 {; w. {& E1 e+ K0 f: d3 |
5 u& R+ D5 I! @在ida pro下查看,是这个函数,从代码看a2字符像是索引号。' Y! g5 ]. i$ ]% c) V
稍后需要仔细分析。字幕显示函数应该在本函数上下。
: \' F$ n2 q8 |0 N
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码

: O5 M0 X0 N, L6 b0 B/ |+ j5 F9 r1 b" R' @" T3 P4 l

9 \, a0 N& Q( c8 {) i. K9 M8 D3 O" o
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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