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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑 + A7 x, y# w1 R
" T& a1 @2 r% Z* C  y, W
这个游戏以前分析过,这次再写仔细些,% g. L: q0 C3 I. R+ c
CreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。9 R2 I  o5 [+ v# o. e6 X; W, M
这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。
/ Y# w% e( N9 L* w
3 i- U$ L; V/ I$ ?: O- X
  1. .text:0041641A                 push    ecx  s5 J/ P' F1 V/ ~% l0 p& ]
  2. .text:0041641B                 mov     [esi+90Dh], dl
    6 v0 X9 p# P3 {
  3. .text:00416421                 mov     ecx, hWnd/ Y8 J" [5 I! t; g9 J( d4 Q! Q: O
  4. .text:00416427                 mov     edx, [eax]9 v& t8 w/ t) w2 W
  5. .text:00416429                 mov     edx, [edx+40h]
    1 [% o' q# s9 |0 o: L. d
  6. .text:0041642C                 push    40h
    6 m4 f( l' ^4 {, ?/ Z
  7. .text:0041642E                 push    ecx3 Q1 T  N: t, K1 f
  8. .text:0041642F                 push    13 C( i2 m2 {. e. b: Y! u. l
  9. .text:00416431                 push    ebx- g& t  X, ]: K$ K" V  X2 ~! i
  10. .text:00416432                 push    eax6 ^4 |9 b8 L0 W7 b0 c. a9 U
  11. .text:00416433                 call    edx
复制代码
  1. , v* s# Y& Y6 T' A
  2. int __thiscall sub_415FF0(char *this)
    ' C% [* ?; U1 m  V2 V2 A4 R1 \
  3. {
    $ E$ l6 q; `5 x- s+ ?# d
  4.   char *v1; // esi
    * `( D, d7 S- P6 H; K' P: V
  5.   FILE *v2; // eax
    , Z5 n8 l' N0 o: `
  6.   IDirect3D9 *v3; // eax
    9 S6 ^) Z  z2 T- b2 x
  7.   const char *v4; // ecx
    6 v( g. {& y' F5 Z2 I8 R% ]) ?
  8.   const char *v5; // edi" `3 W/ ]0 f- R2 E4 T8 o7 b, Z; b* O* O2 v
  9.   const char *v6; // edx
      z/ l7 G2 K" |. S
  10.   const char *v7; // eax; L% i3 M7 |3 T  ?: d
  11.   FILE *v8; // eax
    9 w& g  o+ _5 k! Q, \4 @% U) x2 h
  12.   signed int v9; // ebp: V% X  B6 A% ?- I5 {
  13.   const char **v10; // eax* S0 ]1 R) @/ u0 A3 m" N4 b- j
  14.   double v11; // st7
    4 J+ s$ [* Q# b" \
  15.   double v12; // st6& `: T# K( u! ^
  16.   const char *v13; // ecx1 ?* T- a" a0 {& K7 l9 d4 v. E1 ?
  17.   FILE *v14; // eax1 |1 Z- N+ B5 f, ?' X8 C
  18.   unsigned int v15; // eax
    / I. [1 x& i& l' K4 G7 y: |
  19.   int v16; // ecx; w& l% ?$ Z: L9 `. b8 |& T
  20.   FILE *v17; // eax
    : Q+ E- _- v( H  Y9 U; p$ f  e0 k3 I  c
  21.   int v18; // eax" B: g$ f# [: k! d& d3 h; Q1 Z7 g
  22.   bool v19; // zf
    7 ~. \3 v' z: Q; u) o- K% Q7 q
  23.   int v20; // eax- H  Y- v/ I' B. i2 f
  24.   unsigned int v21; // edx8 c! k1 z; R; Z, Z7 g
  25.   bool v22; // sf
    5 x$ n) F4 p, c1 }( d0 H
  26.   int v23; // eax
    ; f" a" z4 [3 w- t3 x+ v3 h
  27.   int v24; // eax2 v- l5 P: H) z, z9 ?3 M7 O
  28.   int v25; // ecx
      U$ e8 a  {4 L" S# h
  29.   int v26; // eax
    3 }$ ~4 b' i' ^. M* W) R' l
  30.   int v27; // ecx
    : R; {, t& \7 B* o
  31.   const char *v28; // eax
    & E; a+ ]+ B7 m
  32.   const char *v29; // edx
    7 d3 w$ e+ |& z% R; K" A7 r
  33.   FILE *v30; // eax
    7 J" ^- h1 o% k- S
  34.   void *v31; // eax
    7 u$ R% L) M. s* n! h2 \
  35.   double v32; // st7
    3 O  b4 H5 K1 }) P& K
  36.   _DWORD *v33; // esi
    ) @! W/ \5 V4 p% X
  37.   float *v34; // eax. p" A( U% Z. z% r: v+ V" Z
  38.   float v35; // ecx. F* x  P! x. I+ m) Q1 Z
  39.   float v36; // edx8 ~, @: p' F+ V8 b1 g7 h. P
  40.   float v37; // ecx
    6 k+ R2 {1 _* ~; r
  41.   float v38; // edx! \" j" l' z$ T+ d/ g! M2 f
  42.   float v39; // ecx& v! h0 {! @2 _, V6 h
  43.   float *v40; // eax
    % g/ s% f9 s. E) v# K/ x( a" c# m
  44.   float v41; // edx
    5 n5 i0 {& r: V
  45.   float v42; // ecx" |$ E! f# j7 b5 x1 d7 F) `% s/ H
  46.   float v43; // edx
    0 q3 T9 b, T! n; G- p! }) v5 s
  47.   float *v44; // eax
    $ b; ^) \  r8 w- ~0 [& o
  48.   float v45; // ecx0 O  n$ g9 L# @0 g) ]
  49.   const char *v47; // ecx: Y* u! e/ [: E& h  M
  50.   const char *v48; // ecx
    1 i1 B4 G8 R4 |0 `
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]. F' \: v6 c1 W- k
  52.   const char *v50; // [esp+A4h] [ebp-58h]
    / {0 c) a7 Q0 d9 }
  53.   const char *v51; // [esp+A8h] [ebp-54h]2 O: g0 l7 E+ y0 Z9 }
  54.   const char *v52; // [esp+ACh] [ebp-50h]
    ' w( a( p5 f2 {' d( j
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]- y8 f: h! m* J$ J/ W% w
  56.   const char **v54; // [esp+C8h] [ebp-34h]
    5 s3 g/ i) g2 r7 h! f, z/ A
  57.   float v55; // [esp+CCh] [ebp-30h]
    # S+ s3 z  k9 u  `; f0 J
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]
    + b3 j( A# N" H% H, m1 I
  59.   float v57; // [esp+D4h] [ebp-28h]
    6 ^& x& b2 p% v$ E" c
  60.   float v58; // [esp+D8h] [ebp-24h]4 d5 n0 [9 ^" T
  61.   float v59; // [esp+DCh] [ebp-20h]
    " g  _2 J/ u: D, F
  62.   char v60; // [esp+E0h] [ebp-1Ch]
    + Y$ k. p  `0 E% k, C0 \+ L4 x
  63.   int v61; // [esp+ECh] [ebp-10h]' U9 m! J$ @7 l6 z1 v
  64.   int v62; // [esp+F8h] [ebp-4h]7 y; F* ^! f) k# J, u

  65. / i* z, K; ]* ]/ T0 T( k2 t
  66.   v1 = this;6 W/ u9 d7 Q5 A& B
  67.   v2 = (FILE *)sub_4D7E8F("Initializing graphics...\n");6 [6 c( B/ |; z1 _5 Q0 l& u
  68.   fprintf(v2 + 1, v52);- u2 _, C4 S& }  m# U, y
  69.   *((_DWORD *)v1 + 492) = 0;5 T1 L: r( R6 v& z! [- X, E
  70.   *((_DWORD *)v1 + 609) = 0;
    ' q+ R' V, W/ X. O" ]" }
  71.   *((_DWORD *)v1 + 611) = 0;# l' R. J7 e) n( V- g
  72.   *((_DWORD *)v1 + 610) = 0;
    ' j# o. I5 q3 m3 E1 H$ ~0 h, m
  73.   *((_DWORD *)v1 + 613) = 0;2 L/ ^' _& U/ D9 T/ R
  74.   *((_DWORD *)v1 + 612) = 0;* Q* {: \7 _6 j
  75.   *((_DWORD *)v1 + 614) = 0;
    : R" ]+ R+ i" s: ~( x- Y5 t
  76.   *((_DWORD *)v1 + 601) = 0;7 o3 j; g+ V2 p! j( T' Y
  77.   *((_DWORD *)v1 + 600) = 0;, {& c8 M9 V8 }! L7 }4 e* a1 _( A' J
  78.   *((_DWORD *)v1 + 615) = 0;% B- C# y8 Y) V% K% O- k
  79.   *((_DWORD *)v1 + 395) = 0;
    ( w1 K7 D4 M  \, M0 W: G; w
  80.   *((_DWORD *)v1 + 488) = 0;' J) c' V( Y" `
  81.   *((_DWORD *)v1 + 486) = 0;* w- S4 R  l) h
  82.   *((_DWORD *)v1 + 487) = 0;
    / L: g' V0 U3 S7 D
  83.   *((_DWORD *)v1 + 489) = 0;* b0 e- O7 y( v5 V+ H7 J
  84.   *((_DWORD *)v1 + 491) = 0;& d) Q7 x: }7 P  m; N
  85.   *((_DWORD *)v1 + 514) = 0;
    0 m# h& t9 a/ w7 u& \
  86.   *((_DWORD *)v1 + 597) = 0;  S4 n/ g+ S8 f: K) m: e
  87.   v53 = v1 + 1968;
    7 N- ?" t. Q8 R  F/ q* n
  88.   *((_DWORD *)v1 + 498) = 0;
    4 X- L3 H: A) h4 P  T5 l- f8 R
  89.   *((_DWORD *)v1 + 499) = 0;5 P9 c1 B  p2 s* F" N5 V! y5 [* T. {( s
  90.   *((_DWORD *)v1 + 500) = 0;
    $ i) I" ?8 A) U" ~% @! N; W' y1 ]; o
  91.   *((_DWORD *)v1 + 501) = 0;
    7 {) {" R) D3 U0 r. E$ s
  92.   *((_DWORD *)v1 + 502) = 0;7 Y" x$ a1 `% l% N2 R
  93.   v52 = (const char *)32;
    - Z$ X) o5 N2 k" ]( I% @1 ~
  94.   *((_DWORD *)v1 + 578) = 0;
      p4 ^3 X9 c2 O4 G" x  C
  95.   v1[2316] = 1;
    . q% z7 f2 k* w; Q/ K
  96.   v1[2476] = 0;
    $ [& H4 R& S" j# V& y6 h6 m  E
  97.   v3 = Direct3DCreate9((UINT)v52);' g, d( T# n& ^. b) V; l5 l/ n  p
  98.   *((_DWORD *)v1 + 384) = v3;
    9 ^0 c% A, h8 _. |6 |: x& C5 s2 Q  o
  99.   if ( !v3 )
    % Y7 M; |. _: o
  100.   {
    / d/ E# x3 q2 P1 y6 g  C' U5 n
  101.     v5 = v56;
    8 }9 G3 S: r6 }) T* ]
  102.     goto LABEL_27;% d" Q! J3 m& m: x/ v( p
  103.   }
    ; r, s9 W+ G# h, w7 C1 b( h" {- c
  104.   v5 = (const char *)v3->lpVtbl->GetAdapterDisplayMode(v3, 0, (D3DDISPLAYMODE *)&v60);
    ) l7 Q+ j4 J, [, y2 {
  105.   if ( (signed int)v5 < 0 )
    - U" A& E. F+ R/ O
  106.     goto LABEL_27;
    # {0 ^: K. N2 X" Z. W: h0 v+ I! u; ^6 w
  107.   (*(void (__stdcall **)(_DWORD, _DWORD, signed int, char *))(**((_DWORD **)v1 + 384) + 56))(/ W3 c& u8 p6 e, M: k# m2 a
  108.     *((_DWORD *)v1 + 384),
    0 @# b* z7 [* g- `' h
  109.     0,
    3 ]! m5 ^& f: p/ N) u( h
  110.     1,) m  n0 X* W: N: g3 ~( `; |
  111.     v1 + 1640);
    / Q: ^; f0 ~. j9 q$ g' f
  112.   memset(v1 + 1584, 0, 0x38u);$ v# t; B; i2 y# h  m" {. t) f
  113.   *((_DWORD *)v1 + 404) = 0;
    + K" t1 w. O. }5 S
  114.   *((_DWORD *)v1 + 402) = 1;
    1 |- s+ x$ ^2 Y0 J7 U
  115.   *((_DWORD *)v1 + 403) = hWnd;
    $ V9 l7 G& Q6 _. l! F. f
  116.   *((_DWORD *)v1 + 407) = 0;  s, }% ^$ ^1 `" G* @
  117.   *((_DWORD *)v1 + 399) = 1;
    " P# F6 H5 i; w$ y
  118.   *((_DWORD *)v1 + 398) = 21;
    2 C' \. M1 W+ M# d. f$ D
  119.   *((_DWORD *)v1 + 405) = 0;5 r4 P& A! \2 x- n3 w
  120.   *((_DWORD *)v1 + 522) = (unsigned __int16)word_558176;
    $ F: X  G$ L: ?5 g: M
  121.   v6 = (const char *)word_558174;
    0 j$ l: F* W$ F( j" e
  122.   *((_DWORD *)v1 + 523) = word_558174;
    / W8 ?1 S; H- o: d1 u
  123.   v7 = (const char *)*((_DWORD *)v1 + 522);  W8 f: R" U0 x% K: O( v1 P
  124.   v52 = v6;& T' s' ~& ?/ W1 ~3 C. Q  ]: z
  125.   v51 = v7;! V9 ]" C7 M4 M& a! b) y
  126.   v50 = "Screen resolution is %d x %d.\n";
      ~7 g; k) m  b2 C3 M- m  H
  127.   v1[2076] = *(_DWORD *)&word_558174 == 67109632;( x1 c0 r# d& o
  128.   v8 = (FILE *)sub_4D7E8F(v50);
    2 m. D; f5 N  S. h2 z6 w. v
  129.   fprintf(v8 + 1, v50);1 t. V7 I% I. V
  130.   v9 = *((_DWORD *)v1 + 522);* r7 E9 }) z2 H5 x3 E
  131.   v54 = (const char **)*((_DWORD *)v1 + 523);! T1 X& _& x! `: j( y
  132.   v10 = v54;: V: G; G) k. i/ I3 C6 n
  133.   *((_DWORD *)v1 + 396) = v9;
    ' }* `* p, j1 w. W5 ^  C# X
  134.   *((_DWORD *)v1 + 397) = v10;
    ! t# j/ I9 c( I
  135.   v55 = (double)v9 * 0.0009765625;
    ( u" L7 M) a6 ^% R1 D* I* ]- E
  136.   v11 = v55;& C4 l& Y; c! e) Z3 j# A
  137.   *((float *)v1 + 520) = v55;/ `7 W9 C1 e- U. ~& J' \
  138.   v55 = (double)(signed int)v54 / 768.0;
    - h$ H0 \) u, Q, z( t* }, _
  139.   v12 = v55;
    4 e& Q  {/ ]3 _7 J
  140.   *((float *)v1 + 521) = v55;
    4 b- }9 H# U% Y/ r+ M( @
  141.   *((_DWORD *)v1 + 524) = (signed int)(v11 * 1024.0);
    2 k% S" s" ~* T/ D$ y
  142.   v52 = (const char *)1;  m9 d$ [! a9 b8 {) u
  143.   v51 = (const char *)(v54 + 11);8 Y4 X. A4 H; [) Z. T8 [' m9 M
  144.   v50 = (const char *)(v9 + 6);
    # \% f- T# Y7 i4 m
  145.   *((_DWORD *)v1 + 525) = (signed int)(v12 * 512.0);8 ^! _+ Y) n4 ?
  146.   *((_DWORD *)v1 + 515) = 0;
    6 e# K, e+ ?. _! c$ q2 e
  147.   *((_DWORD *)v1 + 517) = 1024;5 M. C7 I! N6 J' J0 y
  148.   *((_DWORD *)v1 + 516) = 128;
    , u6 j) k( C' n6 j  E, f: N
  149.   *((_DWORD *)v1 + 518) = 640;4 K/ S! I  H0 M0 p7 R' V- x4 r: ~
  150.   MoveWindow(hWnd, 0, 0, (int)v50, (int)v51, (BOOL)v52);8 `1 ?9 R8 {4 f  s+ R5 e3 N6 _
  151.   if ( (*(int (__stdcall **)(_DWORD, _DWORD, signed int, int, signed int, signed int))(**((_DWORD **)v1 + 384) + 48))(
    0 {( p% d$ \, h2 u
  152.          *((_DWORD *)v1 + 384),
    % e8 T4 h8 Q" ]: k2 }. K
  153.          0,
    8 S: [# N4 q+ h  o' H
  154.          1,$ X4 X; e/ V4 O  G3 j& j( g
  155.          v61,) y+ g, u% [% w3 ?
  156.          21,
    & Y- b1 a. W5 n8 g
  157.          75) < 0 ), G5 w* \) i6 I& ^4 G: @# e6 c$ ^
  158.   {
    , V; `; _! ~8 F. V) V( P0 i% p
  159.     v52 = v5;  m* R8 |4 d6 _6 L  N
  160.     v51 = v13;8 N+ U# ?$ N& b9 P4 `
  161.     v55 = COERCE_FLOAT(&v51);$ M+ L$ u' M7 n8 B9 r- T
  162.     sub_456DD0("Direct3D initialization failed. No appropriate Depth/Stencil-Buffer-Format found.");
    * e* c" y, z0 U
  163.     v50 = v47;1 f; b7 E  K# Z3 w8 T, b# D
  164.     v54 = &v50;
    & T! ~' w  G! J( w9 J3 v
  165.     v62 = 0;0 d, `& |- M' f5 h5 x
  166.     sub_456DD0("cCougarGraphics::cCougarGraphics");4 n. u& }3 [; W4 i5 O
  167.     v49 = 118;
    - n0 p4 i: ^  |
  168.     goto LABEL_28;
    6 Z3 S8 ~. s" O4 b7 Y4 F5 B+ r
  169.   }
    : h) j7 t$ g. y- N; j  c6 ?* j
  170.   v52 = "Depth/Stencil Buffer is D24S8.\n";  G* S, \& D5 T. l
  171.   *((_DWORD *)v1 + 576) = 24;4 a, A9 N' j5 L4 l7 B- z: \. |6 Z
  172.   *((_DWORD *)v1 + 577) = 8;
    ; W2 [) Q. l3 j
  173.   *((_DWORD *)v1 + 406) = 75;
    $ F# N5 t. m# \& b% Y" ?! H
  174.   v14 = (FILE *)sub_4D7E8F(v52);
    ! n/ j/ j5 }5 i! P0 k3 B
  175.   fprintf(v14 + 1, v52);. Y' a! ?/ i% [0 c1 |7 L) C* V
  176.   *((_DWORD *)v1 + 409) = 1;/ v7 }" I2 M) X- o4 e
  177.   if ( dword_558178 != 4; j3 z, m% B4 z4 c2 `" @' C+ A4 S/ d5 A
  178.     || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)
    0 Q, J0 e( [! M5 |* V% J
  179.                                                                                                 + 44))(( W( _7 E/ I, h& ]& k; U
  180.          *((_DWORD *)v1 + 384),
    4 d4 L  _' e3 K" ]* e5 H
  181.          0,9 F. R9 Q9 t9 B' D
  182.          1,9 M5 Y$ Z# P% `( r
  183.          21,) b; J* g, W- {$ K+ s8 B  A
  184.          *((_DWORD *)v1 + 404),( h' X- W! W. W
  185.          4,5 F: a+ t% r; x* }$ M
  186.          0) )/ p5 s: q2 _, r" u0 c& a
  187.   {
    * y. A9 Q, _# }& N- W
  188.     if ( dword_558178 != 2
    ( N! m1 H* f0 C% I
  189.       || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)4 A, t! V# X* u$ V7 m( u
  190.                                                                                                   + 44))(
    ; |3 B& B2 Q  R: W; m5 J+ I
  191.            *((_DWORD *)v1 + 384),5 a* G/ o6 P) w' c1 Q% O  M
  192.            0,
    + r+ M; p. ]* o# O& s- i( V# v, h- L
  193.            1,
    0 Z& {& G1 {0 ?/ k
  194.            21,
    % c: T, |# e, I) Y
  195.            *((_DWORD *)v1 + 404),/ B: @/ N7 k7 r) _( J! d) u4 N
  196.            2,
    1 A9 j# z  b8 a; F
  197.            0) )
    9 ]% \8 \9 o, v5 ]
  198.     {$ Z6 i; }# d$ s1 Z  D3 s7 F- O
  199.       if ( (unsigned int)dword_558178 > 0: c  W, l: o4 O
  200.         && !(*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, const char **))(**((_DWORD **)v1 + 384) + 44))(
    : {5 D; b4 A7 b9 R7 w& x$ }# }
  201.               *((_DWORD *)v1 + 384),, g+ o9 l- g9 A- t6 w# X- a
  202.               0,2 \, U7 I; |1 c6 N8 d0 r
  203.               1,
    # m; k/ t$ K; b/ t4 U8 [; U) y
  204.               21,
    1 e/ o5 C, Y; @  Y
  205.               *((_DWORD *)v1 + 404),
    # B9 d8 L! H# j7 d% `
  206.               1,- q; }9 D% r5 @! D
  207.               &v56) )
    ) O  C* r; T5 q* d$ [$ f  Q& k
  208.       {
    7 c9 t6 A9 J* Y$ f2 I* x& O% f  G/ h
  209.         v15 = (unsigned int)v56;
    . b5 C1 W6 K1 d- H- Z
  210.         *((_DWORD *)v1 + 400) = 1;( [: S$ w4 l5 I& _" D: o
  211.         v16 = dword_558178;
    . N3 W' X) e: I) I+ X4 D0 A
  212.         if ( dword_558178 >= v15 )
    . B7 f1 t$ i5 b; V
  213.           v16 = v15;
    8 G) s" ?$ v: _7 I/ F- ^
  214.         *((_DWORD *)v1 + 401) = v16 - 1;5 \/ \+ A: C( m# _7 q6 T. ?
  215.         if ( dword_558178 < v15 )4 _& P5 c# L- C& ?
  216.           v15 = dword_558178;
    ' R& k8 v' {  M  j8 N$ {3 T  R
  217.         *((_DWORD *)v1 + 578) = v15;
    ( @6 g& Z: N0 G! D3 n- q
  218.       }
    & [5 j5 `7 Z: }' n  ?3 M
  219.     }! i1 r; {9 v& s( j0 R  M- U7 L: v+ t
  220.     else3 r2 n+ @1 F( F3 p) d, x2 R
  221.     {
    6 C& l2 l5 S1 G
  222.       *((_DWORD *)v1 + 400) = 2;
    ! u) C, i& N; F, x8 m
  223.       *((_DWORD *)v1 + 578) = 2;2 H" T; q  C6 D( Z% g" q
  224.     }
    " i1 U  m1 w. x! a
  225.   }
    8 [& G2 P8 T) o$ |) M0 P2 G
  226.   else$ v' x; G9 o4 n( _
  227.   {) W# P1 Y4 F8 @
  228.     *((_DWORD *)v1 + 400) = 4;
    ; X, e& H+ }3 m4 u- s# d4 [$ J
  229.     *((_DWORD *)v1 + 578) = 4;; x' S. A  Y5 [" H0 `  f
  230.   }
    " x" Z* K" X* H, M4 m) c: K
  231.   v52 = (const char *)*((_DWORD *)v1 + 578);
    ' m' R7 k# E) m1 u( R
  232.   v17 = (FILE *)sub_4D7E8F("AntiAliasing is %d.\n");
    ) F1 Z6 T7 {5 K: o9 y  H6 S
  233.   fprintf(v17 + 1, v51);
    # t$ e3 ?' |) w2 U7 \# u+ L
  234.   v18 = *((_DWORD *)v1 + 384);' v0 ?8 o/ ?. N- C; t
  235.   v19 = *((_DWORD *)v1 + 578) == 0;
    ; m$ ]: v8 N$ A! b3 Z' u
  236.   v52 = (const char *)827611204;7 D% W* H/ t/ v/ ^
  237.   v51 = (const char *)3;8 b+ V, q. ]7 l2 ^3 l" |; q
  238.   v50 = 0;
    ! L5 P6 h8 P% T# r- Y
  239.   *((_DWORD *)v1 + 402) = 2 * v19 + 1;: e4 t, J1 d& ^# K
  240.   v20 = (*(int (__stdcall **)(int, _DWORD, signed int, int, const char *, const char *, const char *))(*(_DWORD *)v18 + 40))(' F# ?* U$ ]- g! r0 G
  241.           v18,
    & D2 x* E$ q( X3 ~
  242.           0,
    8 a* C9 M  N/ O( i
  243.           1,
    & u5 U0 s9 h) d2 y& u" G! R5 z
  244.           v61,
    2 T- a4 \, {9 N* }, T
  245.           v50,
    / v# R- O# v; r$ [4 f% F
  246.           v51,
    ) F' E$ ]% e6 K# p2 {
  247.           v52);
    / |/ ?& _1 w. ^8 L: U
  248.   v21 = *((_DWORD *)v1 + 425);
    + J* j% n) [9 `
  249.   v22 = v20 < 0;% _" B- ?( _+ n3 `9 G9 n* ^
  250.   v23 = *((_DWORD *)v1 + 384);
    : h  u" J) V  P. w- K! d# e
  251.   v1[2316] = !v22;3 M' V% B- M  {" d* Q, X
  252.   v52 = v1 + 1540;
    + S& j4 e% a" a6 g4 R9 c+ \/ D
  253.   v51 = v1 + 1584;
    % n' I5 B5 ^! [  A' E' b7 X
  254.   v1[2317] = (v21 >> 14) & 1;8 A9 t; z" @6 H7 R1 m
  255.   v5 = (const char *)(*(int (__stdcall **)(int, _DWORD, signed int, HWND, signed int, const char *, const char *))(*(_DWORD *)v23 + 64))(
    * G0 b+ O- [$ U2 _  J+ a) D* {% ~
  256.                        v23,
    + \  E" j0 ?' q" H+ Y! K
  257.                        0,
    + q" Q+ V9 i, {; ?
  258.                        1,
    : m" d) L9 M* g6 h2 D& A/ P
  259.                        hWnd,
    * u6 y* Y8 g0 p5 M5 f# A! d. u9 g
  260.                        64,
      m) S$ u7 |" J! k3 K
  261.                        v51,
    ' {' j+ l  J0 E
  262.                        v52);
    , Z$ e) ~) V4 w% k
  263.   if ( (signed int)v5 < 0 )
    4 B# @' V6 I6 A4 f  Y' Y- {, Q$ [
  264.     goto LABEL_27;1 d8 O5 Y; e9 `7 Y5 X& G# F4 G
  265.   if ( dword_558180 && ((v24 = *((_DWORD *)v1 + 425), v24 & 2) || v24 & 0x100) )
    ' \- G& P# F. Q0 |0 \2 q2 a
  266.   {+ Z$ P8 S9 j( }  k% z
  267.     v25 = *((_DWORD *)v1 + 609);
    0 r! L6 d: [% X6 V( s9 |9 s
  268.     v26 = sub_418670(*((_DWORD *)v1 + 522));
    0 A' r; x; c3 p( E: D" t- C
  269.     v52 = (const char *)*((_DWORD *)v1 + 523);
    " g$ H1 c  a! e
  270.     v27 = *((_DWORD *)v1 + 609);
    ' m5 S3 W& T  Z4 X1 r1 T4 C& ~
  271.     *((_DWORD *)v1 + 496) = v26;
    / @4 ?, U1 O9 a0 r# }1 X& B
  272.     v28 = (const char *)sub_418670(v52);% x; m; u+ s+ C8 o# @8 |$ j
  273.   }
      N7 J8 s- z2 v8 c7 A5 N- {6 E+ c3 ]
  274.   else+ X0 e5 \3 m4 ?, V) A
  275.   {  |! J+ X8 K; s/ O6 }: K
  276.     v28 = (const char *)*((_DWORD *)v1 + 523);9 U1 _& G. `. }! [. t) u% d8 q7 \) s
  277.     *((_DWORD *)v1 + 496) = *((_DWORD *)v1 + 522);
    4 e- E' {2 \0 N9 B7 E% [+ z  o
  278.   }
    1 j- Q2 O$ F9 {1 z, E% ~
  279.   v29 = (const char *)*((_DWORD *)v1 + 496);
    2 Z( L5 l  S2 V% E1 \9 _' W
  280.   v52 = v28;  b4 `- h" x% F9 ]' V0 b
  281.   v51 = v29;! N, l  u( b+ m" b
  282.   v50 = "PostProcess Surface is %d x %d.\n";: _/ g8 i" t+ A, v& d7 G& J; w8 _' U
  283.   *((_DWORD *)v1 + 497) = v28;8 q' x- }+ s/ O/ Y
  284.   v30 = (FILE *)sub_4D7E8F(v50);1 B+ m6 z6 Q7 g2 R
  285.   fprintf(v30 + 1, v50);3 h9 ~' d- g& w* v
  286.   (*(void (__stdcall **)(_DWORD, _DWORD, char *))(**((_DWORD **)v1 + 385) + 88))(*((_DWORD *)v1 + 385), 0, v1);' X0 Z2 s# _" \0 s. L  D0 ]
  287.   sub_413100(v1);& j2 J9 @6 u; ]- e" V8 c  g7 g
  288.   sub_411D60(v1);
    , `9 k& D5 o* t, B2 K' a% t, G
  289.   v31 = malloc(0x78u);$ q3 A% @& v7 j1 @) S& c) k! I
  290.   v32 = -0.5 / (double)*((signed int *)v1 + 522);
    8 y- X5 u/ A. b% Q3 j
  291.   *((_DWORD *)v1 + 599) = v31;5 C: x4 P9 U, Q0 Y4 Z
  292.   *((_DWORD *)v1 + 600) = 0;
    + e' i4 e1 p7 r/ w" k8 s- |+ B4 ?
  293.   *((float *)v1 + 526) = v32;
    ! T/ |* F2 P" i0 s* C
  294.   *((float *)v1 + 527) = -0.5 / (double)*((signed int *)v1 + 523);! Y5 G; U  v. {
  295.   sub_411CC0(v1);
    3 I. I. {2 Q/ `. ?
  296.   v33 = v53;/ s8 o+ {9 t% Z3 R
  297.   v5 = (const char *)(*(int (__stdcall **)(int, signed int, signed int, signed int, signed int, _DWORD *, _DWORD))(*(_DWORD *)dword_559B7C + 104))(& O' {; x7 F9 M3 }8 @
  298.                        dword_559B7C,4 A; U7 C$ ~8 T8 J2 E
  299.                        80,* {2 r( r/ I7 `
  300.                        8,
    + }# U8 P7 A; G% M3 u8 n
  301.                        258,6 s: f& n6 Y3 ?( M. c) X
  302.                        1,8 D5 F0 J, {/ E0 E( |% p- @
  303.                        v53,
    / I' f5 A/ i" D6 h- e1 k+ E
  304.                        0);' g6 i1 X3 B7 y7 w# B
  305.   if ( (signed int)v5 < 0 )- `% B6 r) u! Z1 {( f& `  q
  306.   {* x. E# |$ v- Z2 ]3 N9 t
  307. LABEL_27:- Z% t3 J2 t7 b9 w
  308.     v52 = v5;# u( j0 f$ o7 P5 v  s& k3 ^  a& w- o
  309.     v51 = v4;0 B' P+ S; r0 F# H! X( E
  310.     v55 = COERCE_FLOAT(&v51);, E2 N6 ]# ~$ P! g# |2 e7 F  M
  311.     sub_456DD0("Direct3D initialization failed.");
    & o1 x2 C) \0 s4 [: V7 i% ^& j: |
  312.     v50 = v48;
    + D8 A$ \  g* N7 p! B! \
  313.     v54 = &v50;; Z0 T' v! ^; E
  314.     v62 = 1;
    ) j  a2 ?& [& y/ \+ I5 {" B9 `) v1 z. i
  315.     sub_456DD0("cCougarGraphics::cCougarGraphics");* F  A! j7 S% M( F1 q- ?
  316.     v49 = 205;8 h  B: ?0 \6 J# @# ^
  317. LABEL_28:
    $ a; g' p6 J& q6 n  E
  318.     v62 = -1;
    ' {$ K' e3 E7 K
  319.     sub_40CB30(1, ".\\source\\class_graphics.cpp", v49, (char)v50, (char)v51, v52);
    * G: N. M' H8 e! F
  320.   }
      Q3 k4 _, l% l& G" }
  321.   (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD **, _DWORD))(*(_DWORD *)*v53 + 44))(*v53, 0, 0, &v53, 0);. l, h  x  G7 o( L+ U% d6 M
  322.   v58 = -1.0;
    - p/ R; v2 _- ]) E$ w
  323.   *(float *)v53 = -1.0;
    # V/ ^& h3 j& N7 o+ ?/ B4 I
  324.   v59 = 1.0;
    : o$ S4 i3 c5 q
  325.   *((float *)v53 + 1) = v58;) h$ K) ~5 S. }" H# E' _* o: p3 _" B
  326.   v57 = -1.0;7 N: K, @  r' n9 B4 A
  327.   v58 = 1.0;
    . `' _$ F! P5 ^9 S
  328.   *((float *)v53 + 2) = v59;
    ! k* q. }0 M% k; v3 @+ Q
  329.   v59 = 1.0;
    - j; ^1 f( v/ Y( f
  330.   v34 = (float *)v53;
    3 @. j( ]" b/ o
  331.   v35 = v57;  v- `5 v$ a9 `% R8 g% @
  332.   v57 = 1.0;" e: j) v4 v) }  t0 h+ d. I$ @' |
  333.   v36 = v58;
    ' Q2 w) _9 ~% Q! L  R! [  w
  334.   *((float *)v53 + 5) = v35;
    & a9 n1 w& J* E/ I' o4 m2 g6 c2 O
  335.   v37 = v59;
    / i/ g! Q1 @" E
  336.   v59 = 1.0;
    0 L1 P/ O6 q& I5 k) v
  337.   v34[6] = v36;% _; r8 T: o  i2 ?, L8 N. p
  338.   v38 = v57;
    9 \- P0 ~( i1 `
  339.   v58 = -1.0;
    & a3 X  @: B- H9 g( `& N
  340.   v34[7] = v37;
    + [# Z9 q+ {2 ]; |) G. l
  341.   v39 = v58;
    . V! ^! S  e  e
  342.   v57 = 1.0;
    - |6 L  ]4 P/ E2 q
  343.   v58 = 1.0;1 o9 R: G# L2 Y) E
  344.   v40 = (float *)v53;
    : @9 v7 Z5 {1 I+ K" y" Z
  345.   *((float *)v53 + 10) = v38;
    ' J4 l' u- `& f/ [) a+ C8 b, w2 I
  346.   v41 = v59;
    9 ^: |* ^4 s. ?: ^4 j2 k- D$ F  i
  347.   v59 = 1.0;: k7 [3 i! b& t  G
  348.   v40[11] = v39;7 d$ z4 i7 l; _6 j2 f/ P
  349.   v42 = v57;
    ( S1 N+ i. n- i% R! |3 q7 W( S( K1 H
  350.   v40[12] = v41;
    , i2 p! E# \) i
  351.   v43 = v58;8 Q  |' u# y; V1 M8 V. S
  352.   v44 = (float *)v53;- _% k/ p8 Y& X
  353.   *((float *)v53 + 15) = v42;# S5 X/ I+ p& ^
  354.   v45 = v59;' b6 v3 Z, [6 s* b% o+ g- V" l- O8 _
  355.   v44[16] = v43;/ O' {! @# C+ R8 T. P4 @
  356.   v44[17] = v45;
    6 V' T2 T8 `. ~; a5 F: R
  357.   *((float *)v53 + 3) = 0.000099999997;
    9 c1 c3 }; B9 T: Q: A- b
  358.   *((float *)v53 + 4) = 1.0001;' ~1 I- \7 D' q( Q8 P
  359.   *((float *)v53 + 8) = 0.000099999997;
    1 e  v! t$ ?0 `+ r. Y; D! w! }/ Y
  360.   *((float *)v53 + 9) = 0.000099999997;9 m" n( u1 A3 W7 x  K, d3 I& l
  361.   *((float *)v53 + 13) = 1.0001;
    % c" c9 m% l$ }  o
  362.   *((float *)v53 + 14) = 1.0001;
    # [, b" ~; u9 v
  363.   *((float *)v53 + 18) = 1.0001;
    3 I  y/ o3 H+ s! A/ h- M- l
  364.   *((float *)v53 + 19) = 0.000099999997;
    / |% b& `* R$ o7 }9 G
  365.   (*(void (__stdcall **)(_DWORD))(*(_DWORD *)*v33 + 48))(*v33);8 u2 k1 w' Z2 `2 p3 y
  366.   return 0;2 r& ]$ Q- U5 M7 \7 p! z
  367. }
复制代码
* C9 \  C* w) `5 y8 |' n0 J
用Cheatengin寻找一个字幕之后,在以下地方断下$ G( w) f& q4 e" q2 {) L
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码

" u" d, F! F( j' V+ |6 i
- |! [+ m1 V8 x& G* U3 R) k在ida pro下查看,是这个函数,从代码看a2字符像是索引号。
1 H- g- p7 {, a0 E稍后需要仔细分析。字幕显示函数应该在本函数上下。  A2 G. [, P. p$ S4 v/ `
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码

5 t# W4 r% i8 i# c" K
2 [/ C& b. F& O0 q9 f6 @$ D. k
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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