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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑
' u  k9 K- P0 N" o5 f. V3 G$ S' n6 f$ z: r7 Q0 k
这个游戏以前分析过,这次再写仔细些,
6 n+ n6 F3 {$ t+ v$ b* KCreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。
, z7 I: \$ n" {3 ?2 m- t这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。
) F! x: l4 X2 a+ W; G7 v* S7 s: r9 @* y
  1. .text:0041641A                 push    ecx
    5 ~' i" X$ |' J) p8 ~' v6 e9 V
  2. .text:0041641B                 mov     [esi+90Dh], dl
    0 k0 R- n! A9 H9 g5 W6 T* R
  3. .text:00416421                 mov     ecx, hWnd
    ! ?) \" |) A/ n# X4 h
  4. .text:00416427                 mov     edx, [eax]
    / B- c2 [7 p, D, v( i- V7 i
  5. .text:00416429                 mov     edx, [edx+40h]3 A/ [7 x' o1 G5 i6 g: z! s
  6. .text:0041642C                 push    40h2 i" ?+ ^" B) p* i' S/ K. K7 D
  7. .text:0041642E                 push    ecx
    7 U! A1 U# M/ Y4 U- r
  8. .text:0041642F                 push    1' j% h4 u+ S6 F0 ]
  9. .text:00416431                 push    ebx
    / [5 c8 J" b4 \8 E( E# v
  10. .text:00416432                 push    eax! s( D- v4 Y1 c; J! E
  11. .text:00416433                 call    edx
复制代码

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

- j* f8 m+ s! A5 e! W* ?9 ?
: ^, E& Q5 R" Y8 I
% Z4 l( N& T; I/ A5 M
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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