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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑 # v0 I8 ]% W& ^3 @& d* A
2 o5 r$ C3 m3 ^7 E2 a# F' x- v
这个游戏以前分析过,这次再写仔细些,
4 j$ G$ ]' a) Y( |2 BCreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。
3 R/ t8 `, l  D" b这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。2 z9 K6 T+ c, ~/ d
( J- P9 ]6 r8 J: l+ @$ V) i6 u
  1. .text:0041641A                 push    ecx
    + C& p/ A& J8 Z; c8 w' {2 i
  2. .text:0041641B                 mov     [esi+90Dh], dl
    * a& Y# \' _3 I+ O/ q
  3. .text:00416421                 mov     ecx, hWnd
    ! Q) Q2 S$ z* r2 I- r( j+ b* f
  4. .text:00416427                 mov     edx, [eax]
    4 r- z$ a: g# Y2 t: `9 r% ?
  5. .text:00416429                 mov     edx, [edx+40h]
    8 c; w+ D6 ~" j. w
  6. .text:0041642C                 push    40h& q" [; V& I' L/ L& v/ O
  7. .text:0041642E                 push    ecx
    3 b% Q4 H) {# M& X: M
  8. .text:0041642F                 push    1# C) u$ e% P% u" w
  9. .text:00416431                 push    ebx
    " y7 n+ @1 x+ ~1 R2 c, |3 X% j1 F
  10. .text:00416432                 push    eax
    + y5 k: |0 d# [/ g5 z
  11. .text:00416433                 call    edx
复制代码
  1. 4 r; a# Z4 Z+ o/ [0 }$ s( w2 C
  2. int __thiscall sub_415FF0(char *this)
    ; @. _" r) m8 T3 J
  3. {9 V& K7 m4 V5 P3 _; u9 K) z- O
  4.   char *v1; // esi, T! u7 A* O" K$ ]$ G
  5.   FILE *v2; // eax5 X# h! S9 X" p( K- S1 r' Q
  6.   IDirect3D9 *v3; // eax
    - G) |5 T3 G: g# n/ m6 D
  7.   const char *v4; // ecx: O, ~' ~0 T" t& z
  8.   const char *v5; // edi
    % L2 P4 W+ A+ T, {. X8 B# Q
  9.   const char *v6; // edx
    1 d% ?8 a2 c- e( i! x( X2 l
  10.   const char *v7; // eax% o( r/ ~5 p  G, P0 N6 i- w5 P
  11.   FILE *v8; // eax
    * P3 c2 I6 @8 M
  12.   signed int v9; // ebp
    9 S# `# X: o  Q
  13.   const char **v10; // eax3 N% b& s1 g# {/ d  X" ^
  14.   double v11; // st74 N5 H5 i* A( @
  15.   double v12; // st6) o1 C2 m( b, K
  16.   const char *v13; // ecx
    , `1 Y4 ]! d7 C' b5 {$ l+ E
  17.   FILE *v14; // eax
    + ?6 h+ d$ u2 a5 `0 _' C0 P5 J6 X( Z
  18.   unsigned int v15; // eax
    ; k, K: B9 {6 y0 i# f
  19.   int v16; // ecx
    * L1 ~% ?6 c) t4 F1 v$ k- Y- w2 @
  20.   FILE *v17; // eax2 I  E. ]: v% D4 _3 _+ j
  21.   int v18; // eax2 v2 k, I; o/ |! m3 T
  22.   bool v19; // zf6 b; r2 h# j* E/ |
  23.   int v20; // eax- A7 [3 }: a1 ]9 q/ \- m3 G) {
  24.   unsigned int v21; // edx
    ) q# k+ P: b7 z2 P# y7 Q4 {
  25.   bool v22; // sf' Y2 Y  o& _1 h3 b
  26.   int v23; // eax
    ( M: V" s7 _, Y- A& W! |
  27.   int v24; // eax
    . J8 O9 w% }3 e
  28.   int v25; // ecx
    # l! F9 D( p$ v9 y% }; y7 d
  29.   int v26; // eax* [; t, L7 m9 T3 v
  30.   int v27; // ecx
    ) o( g& Y0 u  J; J# V% ~
  31.   const char *v28; // eax! ^3 H7 O2 Q0 n. P, t: [+ Y
  32.   const char *v29; // edx
    % d: t4 H* g* D5 o9 n" M' E
  33.   FILE *v30; // eax
    : x4 u7 O/ h$ L' o3 Z- W2 k( T, [
  34.   void *v31; // eax1 F# o4 t7 m" m2 Y! X* H# y' j7 k
  35.   double v32; // st7" C/ N# \. m6 W$ B0 P
  36.   _DWORD *v33; // esi
    2 g! I8 ?. i2 }. K
  37.   float *v34; // eax
    ) D" Y& B/ g" a& m& b2 a9 g
  38.   float v35; // ecx
    3 e/ `( f. f( I* g7 X! Z1 h
  39.   float v36; // edx: ^* n5 G- A9 b& Y  q
  40.   float v37; // ecx
    $ g4 O/ H( W$ u6 m& V1 P. N' X
  41.   float v38; // edx
    ! ?/ {& e% T7 @9 w
  42.   float v39; // ecx
    ( ]) x8 C$ D* V' `! {+ W
  43.   float *v40; // eax
    2 C  F' h& N# z2 G' y
  44.   float v41; // edx
    2 l6 o1 j4 q) k4 r
  45.   float v42; // ecx2 s# S. O" N$ u2 |* c
  46.   float v43; // edx! \( x3 F  b" |6 H4 `8 N
  47.   float *v44; // eax3 P/ ~5 M* Z$ {6 l
  48.   float v45; // ecx8 C/ D8 S; D# b. ?7 c7 T  g
  49.   const char *v47; // ecx
    . @( I9 z! }0 x( k4 @5 l
  50.   const char *v48; // ecx
    8 z7 q7 |! g+ a( b7 w& r! E/ t% r
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]
    6 n" T# s- ]3 }% a8 g3 ]1 u
  52.   const char *v50; // [esp+A4h] [ebp-58h]
    . d$ d" q+ X7 [) |) B! K0 z
  53.   const char *v51; // [esp+A8h] [ebp-54h]2 t# Y4 V( O. i- A* w
  54.   const char *v52; // [esp+ACh] [ebp-50h]2 o6 V" n0 q$ K
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]3 u0 Z. Q% a. U  b% n6 T
  56.   const char **v54; // [esp+C8h] [ebp-34h]. P5 n' j/ ~2 K& `4 H" _" p1 `
  57.   float v55; // [esp+CCh] [ebp-30h]
    6 l6 y# {' p+ T$ q3 r
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]1 `9 u8 Y3 q& z8 R& p  }) I" m+ Z
  59.   float v57; // [esp+D4h] [ebp-28h]; Y3 U2 J" p# @) Z
  60.   float v58; // [esp+D8h] [ebp-24h]2 Y1 V7 H9 J  U  V
  61.   float v59; // [esp+DCh] [ebp-20h]
    ) x6 A! f8 K( I7 D' o0 G3 i/ ^
  62.   char v60; // [esp+E0h] [ebp-1Ch]
    : b! f2 y: @6 _2 Z# `& C
  63.   int v61; // [esp+ECh] [ebp-10h]
    * ]; A" W3 L7 Z9 e
  64.   int v62; // [esp+F8h] [ebp-4h]
    + b* j* s0 L. _( @5 d9 l4 c/ l, d
  65. ) `7 u7 R8 z1 a& s# D
  66.   v1 = this;8 q0 M% h+ y0 W2 {
  67.   v2 = (FILE *)sub_4D7E8F("Initializing graphics...\n");, H+ v, t- V$ |& s! c4 A
  68.   fprintf(v2 + 1, v52);/ i( n3 w: ?, u" v
  69.   *((_DWORD *)v1 + 492) = 0;; O$ ^: N5 O) \
  70.   *((_DWORD *)v1 + 609) = 0;
    ( f0 [' x/ S( A9 C. i2 z3 L
  71.   *((_DWORD *)v1 + 611) = 0;# D' ?# t) g7 a
  72.   *((_DWORD *)v1 + 610) = 0;
    * [1 z3 e* Z" r' b/ Y
  73.   *((_DWORD *)v1 + 613) = 0;
    + i0 t1 V2 x. d( h, ~' W) n# i
  74.   *((_DWORD *)v1 + 612) = 0;# a" x+ D# U& o- [1 f  Y* P* \
  75.   *((_DWORD *)v1 + 614) = 0;
      t4 \+ }$ p1 L9 l0 A0 |2 \7 `
  76.   *((_DWORD *)v1 + 601) = 0;
    9 w& B4 x7 X0 F- y* H- n7 k8 c
  77.   *((_DWORD *)v1 + 600) = 0;
    9 Z  p, l1 m( Q' m
  78.   *((_DWORD *)v1 + 615) = 0;
    - s% M/ }9 ]# R4 E' p1 f! x
  79.   *((_DWORD *)v1 + 395) = 0;
    2 g9 N0 Z/ U8 `; d2 V: r, p+ e( Y
  80.   *((_DWORD *)v1 + 488) = 0;
    . O8 {. m' L" `# \, l
  81.   *((_DWORD *)v1 + 486) = 0;
    1 X9 D1 e/ ]4 k( E* F1 b& j  ?
  82.   *((_DWORD *)v1 + 487) = 0;2 u" d1 z: c" J7 e2 U1 m) E: T
  83.   *((_DWORD *)v1 + 489) = 0;
      X1 ~; t/ [- i8 s
  84.   *((_DWORD *)v1 + 491) = 0;
    ( }3 Q$ }# {- O: \7 L8 o
  85.   *((_DWORD *)v1 + 514) = 0;: N6 L- C/ ^: j
  86.   *((_DWORD *)v1 + 597) = 0;7 v0 D7 K- G1 N/ S7 Z$ ^1 C$ o
  87.   v53 = v1 + 1968;
    & E5 b9 r  [: J- g0 P- h! r
  88.   *((_DWORD *)v1 + 498) = 0;
    * t2 U- a8 B$ i7 {7 ?
  89.   *((_DWORD *)v1 + 499) = 0;
    ! ~# ^; k2 ?) u9 J# C0 F; N5 z0 C: a
  90.   *((_DWORD *)v1 + 500) = 0;! @9 U. T' {+ X. w* I
  91.   *((_DWORD *)v1 + 501) = 0;
    8 A- Q7 C1 M% m7 D% ^" ^# D6 m) o
  92.   *((_DWORD *)v1 + 502) = 0;
    : p6 W% b4 h8 x4 K( s: C% H
  93.   v52 = (const char *)32;+ U" }! K$ ~( {7 _& r
  94.   *((_DWORD *)v1 + 578) = 0;9 u8 b8 T0 N+ |
  95.   v1[2316] = 1;
    , F" Y" P. j! \& t1 J# C) X( G
  96.   v1[2476] = 0;! Q6 B: k9 l9 g; k( X9 d/ \# w, R: H
  97.   v3 = Direct3DCreate9((UINT)v52);: B2 f5 O+ K$ L- d0 f
  98.   *((_DWORD *)v1 + 384) = v3;1 R6 B/ Y4 h$ ~- L* i: ?; ?
  99.   if ( !v3 )8 j6 i" C, C4 ]( L4 F
  100.   {
    * L% J: n; _" T9 ]$ d) M
  101.     v5 = v56;/ q0 o# P. Q* ~/ j, @
  102.     goto LABEL_27;- ~* C( n6 E# ~2 [9 p6 |5 m
  103.   }: ~. Z) t) Q- Q2 q' _
  104.   v5 = (const char *)v3->lpVtbl->GetAdapterDisplayMode(v3, 0, (D3DDISPLAYMODE *)&v60);
    ) P8 {1 h7 Y& t; e$ u: W, l
  105.   if ( (signed int)v5 < 0 )5 g! ]9 p1 }' r* l. I1 W6 S
  106.     goto LABEL_27;
    % H8 q; b4 `: v" }3 z
  107.   (*(void (__stdcall **)(_DWORD, _DWORD, signed int, char *))(**((_DWORD **)v1 + 384) + 56))(- U$ L' c* ]- r" F# p9 S. j
  108.     *((_DWORD *)v1 + 384),- E+ p; R6 A1 f) ^7 t
  109.     0,
    3 \" R5 o0 F' m6 G
  110.     1,6 l9 G1 T( X6 h1 B; Y
  111.     v1 + 1640);9 B6 U6 o% Q+ m
  112.   memset(v1 + 1584, 0, 0x38u);! m* J. ~; A5 U  S4 S! I
  113.   *((_DWORD *)v1 + 404) = 0;
      E" V0 U" ^5 ]7 e7 H% @/ `( I; A
  114.   *((_DWORD *)v1 + 402) = 1;5 g$ ~" ~9 P9 ], k7 i: Z! z/ G' _/ N6 L; J
  115.   *((_DWORD *)v1 + 403) = hWnd;$ ?6 h) G" O8 L  }6 e% q# t
  116.   *((_DWORD *)v1 + 407) = 0;* y5 f, U# N3 p
  117.   *((_DWORD *)v1 + 399) = 1;8 j) T2 g2 s1 o. v' B9 u. B0 m
  118.   *((_DWORD *)v1 + 398) = 21;5 a+ m" Q$ S. q5 d3 z
  119.   *((_DWORD *)v1 + 405) = 0;/ f  k6 g4 E3 h& v+ l' z5 r# \
  120.   *((_DWORD *)v1 + 522) = (unsigned __int16)word_558176;
    1 D# Y/ U2 y% r) F' E7 Q* \  R% c
  121.   v6 = (const char *)word_558174;
    5 b% F7 ?% K4 k) |3 R
  122.   *((_DWORD *)v1 + 523) = word_558174;
    1 I1 f* I1 T! [' W9 C' o- m
  123.   v7 = (const char *)*((_DWORD *)v1 + 522);5 R$ F6 s* N' R+ K
  124.   v52 = v6;
    / V/ G. r" x' C1 K* h
  125.   v51 = v7;
    0 W% ~* X2 b0 k8 o9 }: I
  126.   v50 = "Screen resolution is %d x %d.\n";& q, n6 k2 w4 C1 @. \. Q5 K+ O
  127.   v1[2076] = *(_DWORD *)&word_558174 == 67109632;  V% F+ X2 Y. ?
  128.   v8 = (FILE *)sub_4D7E8F(v50);
    " M) y$ V. L: k) h" W& [' m5 W' g
  129.   fprintf(v8 + 1, v50);
    3 B, A) f' ^# O5 N
  130.   v9 = *((_DWORD *)v1 + 522);5 a& p- I/ ^* f" v8 b
  131.   v54 = (const char **)*((_DWORD *)v1 + 523);4 }% M) O! ^& G' y9 f
  132.   v10 = v54;
    , U& \/ @: ?) B
  133.   *((_DWORD *)v1 + 396) = v9;2 N1 @( o' z! S2 o. p7 f" r
  134.   *((_DWORD *)v1 + 397) = v10;
    ; B' l1 n& O  a9 C( R2 P% x
  135.   v55 = (double)v9 * 0.0009765625;1 n9 b9 V) p1 ]$ |  e
  136.   v11 = v55;( L: R1 t: _, Y5 c5 i# e0 M
  137.   *((float *)v1 + 520) = v55;
    ) x  p; T/ ]& p" ^
  138.   v55 = (double)(signed int)v54 / 768.0;  t! O* t+ ~  A  h
  139.   v12 = v55;
    % O( M3 K% ]! @% H! G8 Z1 p! B9 H/ e
  140.   *((float *)v1 + 521) = v55;
    9 B/ [# n2 \1 S, y
  141.   *((_DWORD *)v1 + 524) = (signed int)(v11 * 1024.0);
    3 b& O. Q6 w" R8 s$ o
  142.   v52 = (const char *)1;
    6 K) Y' p* ]. X1 r, m9 n* n
  143.   v51 = (const char *)(v54 + 11);
    : Z0 c7 r3 m* I$ P
  144.   v50 = (const char *)(v9 + 6);
    & s- q6 y9 T/ a5 n2 ~
  145.   *((_DWORD *)v1 + 525) = (signed int)(v12 * 512.0);
    5 `% _' `0 h; ?/ F7 o
  146.   *((_DWORD *)v1 + 515) = 0;
    ( A$ G. u! L; W3 h% C
  147.   *((_DWORD *)v1 + 517) = 1024;: _( O: z9 U- K& n' g
  148.   *((_DWORD *)v1 + 516) = 128;
    " O! d! O7 z. R( m
  149.   *((_DWORD *)v1 + 518) = 640;1 Z' Q7 ?2 n2 d
  150.   MoveWindow(hWnd, 0, 0, (int)v50, (int)v51, (BOOL)v52);
    / T8 g# V9 B( G7 P0 s. O" y6 _
  151.   if ( (*(int (__stdcall **)(_DWORD, _DWORD, signed int, int, signed int, signed int))(**((_DWORD **)v1 + 384) + 48))(" h' h- x/ g6 v9 V+ b6 L, n/ `/ A8 O
  152.          *((_DWORD *)v1 + 384),
    , _" G0 `8 l- V
  153.          0,
    5 K+ `4 h  ]3 V7 X. _
  154.          1,  ^: Y/ L5 o, f, c6 N9 u' y4 J( |8 J! I
  155.          v61,3 E, |/ E; b9 m5 x9 x
  156.          21,8 @1 l7 N: U' w% ]8 D# S
  157.          75) < 0 )0 J8 s2 ?) C% j9 g7 X
  158.   {
    8 _/ P; W8 q0 W5 q: Z9 R0 d
  159.     v52 = v5;
    8 y* h$ C9 f# ^; W) M
  160.     v51 = v13;
    4 h) H; [( g% D. {+ O4 J
  161.     v55 = COERCE_FLOAT(&v51);( M2 G7 Q$ h, h/ `: x
  162.     sub_456DD0("Direct3D initialization failed. No appropriate Depth/Stencil-Buffer-Format found.");
    4 B3 E; t, |4 l1 |6 q
  163.     v50 = v47;
    9 H) J1 c5 {: T9 I
  164.     v54 = &v50;
    7 J3 w) ?0 r+ S4 ~+ h+ k, d6 t
  165.     v62 = 0;
    9 X$ B+ C) S' X. d+ r" S+ d
  166.     sub_456DD0("cCougarGraphics::cCougarGraphics");0 d! {" C' s1 p
  167.     v49 = 118;" J' q# S7 i, h; F. V
  168.     goto LABEL_28;5 j& Z" N) O, r2 b  ^
  169.   }
    2 g  y" _2 Z1 p% z' d% C
  170.   v52 = "Depth/Stencil Buffer is D24S8.\n";9 R: G7 l# m% t" m% R; b
  171.   *((_DWORD *)v1 + 576) = 24;  ?  ~  V0 _' w" Y
  172.   *((_DWORD *)v1 + 577) = 8;
    ! s1 Y& O# b! N
  173.   *((_DWORD *)v1 + 406) = 75;' @) y* }8 [6 G$ D/ b1 ~! d% u
  174.   v14 = (FILE *)sub_4D7E8F(v52);
    : J: w3 r: n# Z4 B" H
  175.   fprintf(v14 + 1, v52);
    % K$ ^% N3 P' F: A, @3 i7 H8 s
  176.   *((_DWORD *)v1 + 409) = 1;/ e) f2 j8 a  R
  177.   if ( dword_558178 != 4
    ) ^7 {+ ], k: B# W
  178.     || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)+ x) a. I$ G/ o/ r' u& c
  179.                                                                                                 + 44))(
    % m6 ]/ I+ n+ k  {, b2 k' \- _
  180.          *((_DWORD *)v1 + 384),5 A' B$ B  o. V( W( x
  181.          0,: ?  e7 A5 E' \; @, F) E
  182.          1,7 f/ E0 R8 D* Q5 M- `
  183.          21,5 t  |4 \2 _/ w  v1 q
  184.          *((_DWORD *)v1 + 404),
    4 B9 V: ~( D  ?8 F3 w
  185.          4,
    $ ]9 C& K; z% U/ R
  186.          0) )
    ( h9 U* ~2 p; k
  187.   {
    - ?* i; _+ ]' w+ u5 v
  188.     if ( dword_558178 != 2
    % S/ f6 C* S  \- u4 g& w9 S
  189.       || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)+ |6 q/ h9 d( a
  190.                                                                                                   + 44))(8 }, l2 E  p8 _7 c& V
  191.            *((_DWORD *)v1 + 384),  p4 K* e0 t" K2 v
  192.            0,2 e. q7 u; ?8 R) j& j
  193.            1," }/ |0 }- T, S0 b7 D* N) r8 i
  194.            21,- ~* ?' ~& S5 f5 Y! J# K
  195.            *((_DWORD *)v1 + 404),
    , {) G' P, X! U: Z
  196.            2,/ a: `9 q# u/ t0 w
  197.            0) )! T) T% Y5 o. J' o& T9 @% @
  198.     {* K2 k* Q; a  g- X2 ~! n/ N9 }
  199.       if ( (unsigned int)dword_558178 > 05 |- h' e2 ?. `2 g! f' }, l7 }
  200.         && !(*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, const char **))(**((_DWORD **)v1 + 384) + 44))(
    6 J! A( u, R3 {! ~
  201.               *((_DWORD *)v1 + 384),# c; D2 \( w+ D& i* F/ @8 ?
  202.               0,) R$ H/ U4 G3 B0 K5 O; ]7 n5 g1 J
  203.               1,% }+ S  Q  _) \
  204.               21,
    6 u) r  m( l' L+ a0 B+ V# n5 Q
  205.               *((_DWORD *)v1 + 404),+ T* \0 J/ ^9 F7 W/ J' Y4 p
  206.               1,( ^7 K% s3 w) I9 c, a/ J# h: s! z
  207.               &v56) )2 O# [+ W) p6 d) [$ `/ k
  208.       {
      s! a# v: I2 h4 q: u. q
  209.         v15 = (unsigned int)v56;" F5 W0 N+ {& T. X
  210.         *((_DWORD *)v1 + 400) = 1;% w) O& |# u" Q3 o  Y: K. p
  211.         v16 = dword_558178;
    % b6 g+ `" g" u. f8 c: t; h5 z+ k
  212.         if ( dword_558178 >= v15 )" Y4 F& q( n# c; U/ c
  213.           v16 = v15;
    ' Q' K' Y' n, ^$ b- v3 a
  214.         *((_DWORD *)v1 + 401) = v16 - 1;
    8 r! n- j: V7 L) U6 D0 M
  215.         if ( dword_558178 < v15 )
    ( z) l* g# E- b0 Q6 A: T; W
  216.           v15 = dword_558178;5 A5 B4 I. u6 @* L& @$ l
  217.         *((_DWORD *)v1 + 578) = v15;: e+ y# ]. c) ~6 U# u
  218.       }
    - g1 @. y. F5 o# N8 l
  219.     }
    ) {: @; h  f6 j# w9 s
  220.     else
    $ [$ k; [, h- q7 z% T
  221.     {
    & k5 t- Q1 G, G. c$ x, e$ O
  222.       *((_DWORD *)v1 + 400) = 2;
    . a0 k2 H. m- s
  223.       *((_DWORD *)v1 + 578) = 2;) f6 c+ z$ F2 u  R! h. @, o
  224.     }: _" N6 L' r9 S2 |% S( A
  225.   }
    " @) H0 U8 D8 k  \
  226.   else7 w! Z' b9 x1 t
  227.   {5 n0 t! M/ v7 L  g! H' A' k
  228.     *((_DWORD *)v1 + 400) = 4;
    . w, g: D: d% P$ i. p7 H
  229.     *((_DWORD *)v1 + 578) = 4;
    $ z1 o: P1 d# Q
  230.   }
    2 K. v- w: g; R2 w* u5 q
  231.   v52 = (const char *)*((_DWORD *)v1 + 578);9 k9 B+ J- I6 Y; A1 n( P' C
  232.   v17 = (FILE *)sub_4D7E8F("AntiAliasing is %d.\n");
    8 @1 L1 A# }) o. f2 F, m5 Z
  233.   fprintf(v17 + 1, v51);
    ' _0 h; c6 G/ }8 x
  234.   v18 = *((_DWORD *)v1 + 384);1 |4 e7 ]; l6 g  g
  235.   v19 = *((_DWORD *)v1 + 578) == 0;- V9 j7 y# K0 i) p) c
  236.   v52 = (const char *)827611204;- t) ]  z4 S6 d3 B; t
  237.   v51 = (const char *)3;
    ! m& g% j9 _7 k; M
  238.   v50 = 0;& R5 O( B6 t$ X4 ?
  239.   *((_DWORD *)v1 + 402) = 2 * v19 + 1;
    " G+ c& U  K# s* C" Q. R- P% Q1 j
  240.   v20 = (*(int (__stdcall **)(int, _DWORD, signed int, int, const char *, const char *, const char *))(*(_DWORD *)v18 + 40))(
    8 |) r4 J" o% F6 z6 s- {4 S/ \
  241.           v18,
    8 t' f6 k+ h% s' S" D
  242.           0,
    8 H+ Z! J5 ~# q) N# R
  243.           1,2 H: s. L- C% B# ^
  244.           v61,6 n; W8 s' Y0 s" C2 L
  245.           v50,. [. M+ u' s7 A, t3 S
  246.           v51,# T4 y, a0 f( E* v+ |
  247.           v52);- A' g+ D: ^  k+ K' L
  248.   v21 = *((_DWORD *)v1 + 425);
    / R& b! z+ a/ n0 M) x" B1 [/ R( l
  249.   v22 = v20 < 0;
    & t- C- g# E$ b( w' G0 X( ~+ r' W
  250.   v23 = *((_DWORD *)v1 + 384);
    ' o& J  z1 @2 }1 Z- k
  251.   v1[2316] = !v22;/ z3 j' Z6 n; _: S
  252.   v52 = v1 + 1540;' ^3 X- u; X! Q0 m
  253.   v51 = v1 + 1584;6 V' `9 p" |  F4 B3 x
  254.   v1[2317] = (v21 >> 14) & 1;9 z" z) f! t$ S
  255.   v5 = (const char *)(*(int (__stdcall **)(int, _DWORD, signed int, HWND, signed int, const char *, const char *))(*(_DWORD *)v23 + 64))(
    6 F7 d5 w7 J. c/ H9 n5 G
  256.                        v23,! a1 v% U* h4 ^# l2 Q% o
  257.                        0,) s) s" r7 ?7 K: x
  258.                        1,; _5 W$ S0 V2 C' U
  259.                        hWnd,
    7 r- N6 S2 x6 l
  260.                        64,
    4 q7 f+ o- }  G3 S# H+ S" S  `" {
  261.                        v51,5 T5 F& D0 f) i% H5 U4 f( [* q
  262.                        v52);
    8 j4 Z9 l( G2 C2 }2 s. [
  263.   if ( (signed int)v5 < 0 )
    % U8 u2 G! J' m* v0 k6 I0 r
  264.     goto LABEL_27;3 p! G# E" d+ W6 T
  265.   if ( dword_558180 && ((v24 = *((_DWORD *)v1 + 425), v24 & 2) || v24 & 0x100) )9 l6 r) R$ J& @, I2 l
  266.   {
    : g6 Y0 \3 {7 C
  267.     v25 = *((_DWORD *)v1 + 609);
    9 L2 }  v3 r4 q& |: k
  268.     v26 = sub_418670(*((_DWORD *)v1 + 522));
    / B! S8 @( s% |3 O- r
  269.     v52 = (const char *)*((_DWORD *)v1 + 523);
    . h, P9 X$ a) Q2 G
  270.     v27 = *((_DWORD *)v1 + 609);0 x& _0 b' W; M0 W2 J
  271.     *((_DWORD *)v1 + 496) = v26;* @: u4 _* b: J9 |. I$ n# n  f
  272.     v28 = (const char *)sub_418670(v52);
    ' q$ m- O7 }5 A$ ?
  273.   }
    ; \' `0 k/ X2 n" X
  274.   else6 f$ T& q$ s' v9 @/ R0 J
  275.   {2 K3 N% `( m  d1 G2 s7 O. s
  276.     v28 = (const char *)*((_DWORD *)v1 + 523);
    9 p8 b6 o1 b3 w2 K( v
  277.     *((_DWORD *)v1 + 496) = *((_DWORD *)v1 + 522);
    # q; ^; B9 d6 j- h
  278.   }5 |; L- c" E6 \
  279.   v29 = (const char *)*((_DWORD *)v1 + 496);
    1 D1 ~5 K$ e# f0 _  V
  280.   v52 = v28;5 [' z* b) I( l  o: E/ j& a
  281.   v51 = v29;
    : }+ l4 a8 E8 ~$ e% R2 L
  282.   v50 = "PostProcess Surface is %d x %d.\n";
    8 K% y3 T1 U4 y3 q) |/ q( b. J
  283.   *((_DWORD *)v1 + 497) = v28;
    " Z% s$ X1 U  N2 V4 i
  284.   v30 = (FILE *)sub_4D7E8F(v50);1 d3 D  L5 V8 Z# ]2 r: t0 Y
  285.   fprintf(v30 + 1, v50);
    ) m  j- h% p! Z) Y  G0 i
  286.   (*(void (__stdcall **)(_DWORD, _DWORD, char *))(**((_DWORD **)v1 + 385) + 88))(*((_DWORD *)v1 + 385), 0, v1);
    + c! P5 N2 L5 c( e! W
  287.   sub_413100(v1);
    ! `: n$ s" ^. M: `
  288.   sub_411D60(v1);& f; N& M) C5 Z; s3 N
  289.   v31 = malloc(0x78u);
    0 `; T% t0 G0 V* Y, e4 A: ?# N. H5 b
  290.   v32 = -0.5 / (double)*((signed int *)v1 + 522);2 f1 ~6 \& \7 Q5 p, R
  291.   *((_DWORD *)v1 + 599) = v31;
    ! p+ |. C6 [5 T; f# y8 R, q8 D
  292.   *((_DWORD *)v1 + 600) = 0;% n* ]$ H; X7 @
  293.   *((float *)v1 + 526) = v32;1 f2 C7 T. D8 c  m
  294.   *((float *)v1 + 527) = -0.5 / (double)*((signed int *)v1 + 523);
    9 {4 A! p1 O1 W; ^# `$ h
  295.   sub_411CC0(v1);/ [& d  P/ o2 N% p0 o% k6 M
  296.   v33 = v53;1 f( ~1 i+ m- s3 O7 Z+ c
  297.   v5 = (const char *)(*(int (__stdcall **)(int, signed int, signed int, signed int, signed int, _DWORD *, _DWORD))(*(_DWORD *)dword_559B7C + 104))(2 \4 J0 q) S7 E; [. c0 i# E
  298.                        dword_559B7C,
    ! S+ D# i+ h1 k8 n
  299.                        80,
    6 \- j/ h2 X) b  J1 ~2 ~6 g6 @
  300.                        8,4 j0 I# u$ ^1 y! t% O: G
  301.                        258,
    ; I. e, s( R9 a7 z9 K$ m
  302.                        1,
    * {4 @3 |! u, b2 n
  303.                        v53,
    8 `# B/ h) i7 U  n
  304.                        0);7 G5 J" w8 W8 }. N  v$ {3 X/ s0 O
  305.   if ( (signed int)v5 < 0 )2 T/ M9 e# ]; g0 S6 Z
  306.   {
    # e/ R. j" t% U8 v4 {+ N- v
  307. LABEL_27:
    # M8 |) L' y; ^8 F
  308.     v52 = v5;
    / d# F4 ^7 A' _5 F, c5 _
  309.     v51 = v4;
    ' L/ A, v# M- S
  310.     v55 = COERCE_FLOAT(&v51);
    ' s3 W# v$ r1 u. ]
  311.     sub_456DD0("Direct3D initialization failed.");
    ' o- b: v4 |" M5 c8 T7 o  J6 y
  312.     v50 = v48;: t0 w: `! u) u5 t5 A0 m7 t
  313.     v54 = &v50;' ^# d  e# H8 e5 C. Y0 |2 C
  314.     v62 = 1;8 {% G  f# k  d
  315.     sub_456DD0("cCougarGraphics::cCougarGraphics");
    & R% ~. q( J) j! v. i
  316.     v49 = 205;2 C: z! v; ?8 O9 M2 X9 T
  317. LABEL_28:
    8 k7 Y! S4 i# o$ }/ _+ ~/ ?$ B! o/ K& A+ h9 ^
  318.     v62 = -1;
    7 `; e( x% A9 I6 f$ |
  319.     sub_40CB30(1, ".\\source\\class_graphics.cpp", v49, (char)v50, (char)v51, v52);
    " V* T2 h' X  L
  320.   }
      r5 r# V9 {1 g; `+ g
  321.   (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD **, _DWORD))(*(_DWORD *)*v53 + 44))(*v53, 0, 0, &v53, 0);, ~9 ]* @3 p- _! {7 D
  322.   v58 = -1.0;! I& X2 j; t4 I& ]& V: A6 T' X
  323.   *(float *)v53 = -1.0;- \7 t" J; g2 M* a
  324.   v59 = 1.0;
    # l4 e3 P/ x' l3 n
  325.   *((float *)v53 + 1) = v58;" F: N/ f% E4 d
  326.   v57 = -1.0;
    , ?5 c9 _' Q- [3 m; A
  327.   v58 = 1.0;
    7 O$ ?' {, T7 m; ]. j4 r
  328.   *((float *)v53 + 2) = v59;
    # R  j7 i  Z# J5 z/ |2 b- T
  329.   v59 = 1.0;8 y3 {3 v2 n/ c$ H) A  l3 t/ R
  330.   v34 = (float *)v53;
    1 x5 ]$ U3 j* {& Z$ j
  331.   v35 = v57;
    " w- C& V. `4 C( s4 |
  332.   v57 = 1.0;- a  M5 B( @0 f2 x! D
  333.   v36 = v58;
    ! F. {# D. q5 t4 H
  334.   *((float *)v53 + 5) = v35;
    & z0 `" F: k" T
  335.   v37 = v59;
    2 A; x( n! |; O& S$ t* G
  336.   v59 = 1.0;
    ; }9 s) |$ k& E; o6 f' M
  337.   v34[6] = v36;
    1 r1 f' M  P) L2 y; Y# W
  338.   v38 = v57;
    4 K% m- n, Y3 u0 n9 b' ?7 f0 c- g" a
  339.   v58 = -1.0;, [( L* e5 {' A: y6 F: i0 G! a
  340.   v34[7] = v37;+ \# H9 L9 \3 {7 x0 z; f& D' T
  341.   v39 = v58;
    & q8 g# Y1 |1 x
  342.   v57 = 1.0;
    5 G3 h! l" P3 p+ t! V
  343.   v58 = 1.0;* h& v/ X! n% z8 G( Z4 O( j0 e
  344.   v40 = (float *)v53;, e1 E" f- C# W' ]& l
  345.   *((float *)v53 + 10) = v38;
      M  d  |$ r8 z  E$ G* ]
  346.   v41 = v59;3 k  ^/ {8 u$ x# k+ O$ n7 `
  347.   v59 = 1.0;! o( w/ X2 ~9 s5 G
  348.   v40[11] = v39;" v& L2 K; S% e) C: f
  349.   v42 = v57;
    5 w" F( j8 A1 _7 Y$ i. `! m6 z
  350.   v40[12] = v41;
    * C7 R3 V( g) j$ t6 s0 l
  351.   v43 = v58;  z* j3 _3 C+ j) y
  352.   v44 = (float *)v53;
    * w8 X& Z# o6 e  o
  353.   *((float *)v53 + 15) = v42;# S- s" w# W8 ^  g% G
  354.   v45 = v59;
    " u6 O3 G* f" e
  355.   v44[16] = v43;8 b% N6 N) s4 s( q; \
  356.   v44[17] = v45;4 l& e( O+ w" a3 J- Z- ?6 p" g
  357.   *((float *)v53 + 3) = 0.000099999997;9 J/ Q" r1 N! u6 E- ]1 K* |' t3 S
  358.   *((float *)v53 + 4) = 1.0001;
    3 F6 B- t  y4 K! z
  359.   *((float *)v53 + 8) = 0.000099999997;* R) q, Y4 @+ h4 g: Q% w
  360.   *((float *)v53 + 9) = 0.000099999997;
    * P4 o9 Z+ Z3 O: |0 K1 s5 |' g
  361.   *((float *)v53 + 13) = 1.0001;' l$ m* |! e; Y# E* J
  362.   *((float *)v53 + 14) = 1.0001;8 h8 k, J7 l0 _5 r, f" i
  363.   *((float *)v53 + 18) = 1.0001;% q/ v, S. z" w' c/ y! n1 O( f
  364.   *((float *)v53 + 19) = 0.000099999997;5 |. y9 Z' |  ^2 o( Q0 q8 z
  365.   (*(void (__stdcall **)(_DWORD))(*(_DWORD *)*v33 + 48))(*v33);
    ' f! N4 H/ V! @: `
  366.   return 0;( c' d* L( p7 j& y4 t8 A) G! ]6 ?
  367. }
复制代码

7 ?. Y, N' y# S; F2 n! \用Cheatengin寻找一个字幕之后,在以下地方断下4 V+ e' L1 U* @
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码

3 @. \' }/ {7 @% _7 l' {" P" p" ?* f9 z2 I8 L: G: \
在ida pro下查看,是这个函数,从代码看a2字符像是索引号。
, ^; a4 A# }8 k稍后需要仔细分析。字幕显示函数应该在本函数上下。2 f+ S% m, h3 l
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码

5 \/ _8 [2 G/ ], k* C0 Q
6 L/ ^$ \4 @5 A( h, t; S2 R) x. ~4 P& k8 I
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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