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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑 / P1 M7 P1 c2 y( @. O/ Z

' \0 a" `, x. ~这个游戏以前分析过,这次再写仔细些,4 M" y3 t5 G- g* g; w
CreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。
( a8 l5 F! P% l5 q4 e/ L9 I这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。8 L+ K( u1 B4 j% d6 B
/ M# u* |. J4 R$ k, S- X. }
  1. .text:0041641A                 push    ecx9 i6 @( Q1 D/ F7 x
  2. .text:0041641B                 mov     [esi+90Dh], dl
    * q" e+ U* n5 Q: a0 f  j1 O
  3. .text:00416421                 mov     ecx, hWnd
    ; @: d+ v) _6 s9 S7 g" B1 p
  4. .text:00416427                 mov     edx, [eax]) K: m5 |" e4 _- z! j
  5. .text:00416429                 mov     edx, [edx+40h]
    ! F% C- v6 h& G+ G$ {
  6. .text:0041642C                 push    40h3 L+ y5 X7 L' {
  7. .text:0041642E                 push    ecx/ v) n- K( x9 a0 }6 m8 h1 `
  8. .text:0041642F                 push    1: V/ w5 P/ ~) ~: p+ ?+ M) j
  9. .text:00416431                 push    ebx$ z7 {# a2 P, s0 v/ Y" _
  10. .text:00416432                 push    eax3 g* U; S8 U7 Z& @1 z5 F
  11. .text:00416433                 call    edx
复制代码
  1. 8 {8 X, X0 M5 l  P" h, ?
  2. int __thiscall sub_415FF0(char *this)$ u- m& f. ^7 k0 T' J8 M
  3. {" O' ]) W: T$ W$ @
  4.   char *v1; // esi
    6 ]$ _# @) O. n, J1 y+ ^: j$ ?# X
  5.   FILE *v2; // eax+ S) J8 i8 y" t
  6.   IDirect3D9 *v3; // eax
    * V( y5 l! S# E$ W1 F. _
  7.   const char *v4; // ecx
    9 W$ k- n: ~- \
  8.   const char *v5; // edi& O- O$ S$ W- |2 ^  t
  9.   const char *v6; // edx
    ; o, Y7 \* S/ n0 F  N- e; o; q) e
  10.   const char *v7; // eax. r% q6 M. Y; c( l! R# b
  11.   FILE *v8; // eax) l/ c, t1 g& W( ?9 u, e
  12.   signed int v9; // ebp
    " k* I1 R6 y9 O1 z/ |
  13.   const char **v10; // eax/ r3 p: s/ ]! p8 V3 r
  14.   double v11; // st7
    ; B! M1 k# |/ `" \' d
  15.   double v12; // st6! g3 ]% V1 T! d( }" f& g
  16.   const char *v13; // ecx
    7 T9 n3 V$ B5 @  C1 Z1 D3 M; `9 C
  17.   FILE *v14; // eax
    & k4 D) \9 r3 I1 b# S& g5 z/ A
  18.   unsigned int v15; // eax
    4 ~. w$ l  M9 {) F- z
  19.   int v16; // ecx3 ?- Y% g, I1 ~4 q* x+ n/ k( t7 [8 s8 L
  20.   FILE *v17; // eax; m( v* o' `8 e
  21.   int v18; // eax
    8 h, j7 M# P6 e& u
  22.   bool v19; // zf
    . M" H! |3 J* K3 Q$ T2 |; @
  23.   int v20; // eax! h0 d0 i! H$ T) M
  24.   unsigned int v21; // edx( p( C* A$ l+ |- ]; Z  [+ Q
  25.   bool v22; // sf
    / }: S; ]: x& @; @: t
  26.   int v23; // eax
    + Q# L- x) n3 B5 U5 J% R9 M: I7 w
  27.   int v24; // eax" V) h( [) X) R% y! V
  28.   int v25; // ecx
    # P1 }' N) ?7 T% ?8 m8 R
  29.   int v26; // eax: H' D/ w" Y7 b+ {
  30.   int v27; // ecx, P. F1 L* c; s& y$ }4 g% M! d
  31.   const char *v28; // eax, c& ?8 d1 v9 Q: B
  32.   const char *v29; // edx
    + L, r# {2 y+ V  k% e9 u: H
  33.   FILE *v30; // eax% u1 [& s2 |; s9 ^
  34.   void *v31; // eax2 d0 O/ i) e: U$ N# ^9 h" ^
  35.   double v32; // st7
    % t; I0 w7 m3 z6 ^  x
  36.   _DWORD *v33; // esi- Q5 f% \+ b2 o, ]- w0 H( N/ p/ h& n
  37.   float *v34; // eax
    - b6 J! n# y; d0 x3 D
  38.   float v35; // ecx6 m7 F% [6 ~: g: O8 t1 J
  39.   float v36; // edx* N; S& i: m# ?7 `% N3 h4 F
  40.   float v37; // ecx. o' g: a5 g& y8 \- r
  41.   float v38; // edx: A# |# }& z1 y/ j! }; x. {
  42.   float v39; // ecx. `2 X7 X& l2 f6 ~( m
  43.   float *v40; // eax
    8 g- @% L1 d6 ^6 R
  44.   float v41; // edx* P+ l7 O3 m& S/ t6 A  w) b8 G
  45.   float v42; // ecx
    4 `7 m8 b) \) V' `
  46.   float v43; // edx& B- A8 Y! c8 w* q* L0 z; s, U8 o
  47.   float *v44; // eax
    9 ]" L% M. {; x6 m3 `4 O1 Q8 }
  48.   float v45; // ecx
    1 ?2 P0 {  S: U  b# d7 ^+ ^4 Y- \
  49.   const char *v47; // ecx* B' l( y: t. O- g
  50.   const char *v48; // ecx
    9 a  k" J/ q! T1 b2 ~( b& h5 R
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]8 T/ Z, f, g4 R$ Q1 d9 b' u, z
  52.   const char *v50; // [esp+A4h] [ebp-58h]
    5 M" D4 }5 r3 P9 z
  53.   const char *v51; // [esp+A8h] [ebp-54h]
    ; I  l4 s. U& Y4 r; e! l3 R8 R
  54.   const char *v52; // [esp+ACh] [ebp-50h]
    1 ^: V! a6 u8 s; v9 z
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]
    9 S8 X4 k" o: W6 j$ M( L- T7 m
  56.   const char **v54; // [esp+C8h] [ebp-34h]: z: ?2 W* t+ B) o3 U2 N: @
  57.   float v55; // [esp+CCh] [ebp-30h]
    . N: h+ x' i* l) v/ F
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]  C/ j! X6 C1 v2 |5 q7 u. R
  59.   float v57; // [esp+D4h] [ebp-28h]* |+ O8 z: D$ u2 z2 z
  60.   float v58; // [esp+D8h] [ebp-24h]0 g' k1 [, ~. G' i$ P7 J
  61.   float v59; // [esp+DCh] [ebp-20h], e0 f' R& s/ u  _
  62.   char v60; // [esp+E0h] [ebp-1Ch]
    ) q0 p/ V+ y- k2 ?: T; `  \
  63.   int v61; // [esp+ECh] [ebp-10h]
    $ K0 M1 ~) P8 s9 R; h
  64.   int v62; // [esp+F8h] [ebp-4h]  Q) z$ D% E- P/ @3 X/ I

  65. 6 g" n+ q' g1 {: O, @
  66.   v1 = this;+ P& \! }6 d# S- L+ ~4 `
  67.   v2 = (FILE *)sub_4D7E8F("Initializing graphics...\n");* H! P" U' ?" h5 D4 H* G2 K: d  K
  68.   fprintf(v2 + 1, v52);
    8 ^0 d  ]: g; p5 b
  69.   *((_DWORD *)v1 + 492) = 0;# i+ [  t8 k' F" [9 P4 V
  70.   *((_DWORD *)v1 + 609) = 0;
    0 D9 d5 S1 ], F/ W! z
  71.   *((_DWORD *)v1 + 611) = 0;0 r# s8 W5 ~, V
  72.   *((_DWORD *)v1 + 610) = 0;4 l5 ]- i/ i1 v, x( E4 U+ n
  73.   *((_DWORD *)v1 + 613) = 0;
    % G5 f% n' a4 W8 T
  74.   *((_DWORD *)v1 + 612) = 0;9 W9 m& K8 q5 T. d. Q' G
  75.   *((_DWORD *)v1 + 614) = 0;; \8 c' G, W& T4 A
  76.   *((_DWORD *)v1 + 601) = 0;6 v9 N: m: l6 B: Z  T6 L7 f2 b
  77.   *((_DWORD *)v1 + 600) = 0;7 b7 _- O2 n4 \+ |/ f! {
  78.   *((_DWORD *)v1 + 615) = 0;# B1 a9 v, H8 q
  79.   *((_DWORD *)v1 + 395) = 0;% j, Y: {4 _+ g5 Y3 B6 `
  80.   *((_DWORD *)v1 + 488) = 0;7 x, Y# K% _$ p, v" ?' c: g6 S0 [
  81.   *((_DWORD *)v1 + 486) = 0;  x! X, B' X0 W0 Y9 o& a! g
  82.   *((_DWORD *)v1 + 487) = 0;
    4 s- b. `8 D6 m0 [: p
  83.   *((_DWORD *)v1 + 489) = 0;
    + v6 K- U3 @: j+ F4 }
  84.   *((_DWORD *)v1 + 491) = 0;
    / w9 H0 c, \% w' ~, K$ }+ Y/ n
  85.   *((_DWORD *)v1 + 514) = 0;
    % M- G. k/ V7 ]* ?8 O6 A; G. U3 }4 o& y
  86.   *((_DWORD *)v1 + 597) = 0;, A: E6 c. C5 e, a
  87.   v53 = v1 + 1968;
    5 n$ x7 m3 }4 o5 O$ ]
  88.   *((_DWORD *)v1 + 498) = 0;
    $ a: l6 w3 T& g. T$ u4 ?
  89.   *((_DWORD *)v1 + 499) = 0;7 U9 @5 B4 ?5 D, q! r
  90.   *((_DWORD *)v1 + 500) = 0;4 X! p5 j' r2 g2 Q
  91.   *((_DWORD *)v1 + 501) = 0;
    . F8 q& u% `) G
  92.   *((_DWORD *)v1 + 502) = 0;
    / h2 P0 w. S4 y( w# d# @
  93.   v52 = (const char *)32;
    6 i; W: M$ @' Y7 s5 a! u. |* J* A
  94.   *((_DWORD *)v1 + 578) = 0;2 J4 ^$ J. B4 w# X, Y+ d
  95.   v1[2316] = 1;- N( w/ i: |) C; ?. m( b4 [
  96.   v1[2476] = 0;
    : C& u4 E5 R  b, L
  97.   v3 = Direct3DCreate9((UINT)v52);
    $ y. k  k, W% e6 U; R' s5 U+ {; K$ s
  98.   *((_DWORD *)v1 + 384) = v3;
    # b7 Q7 Y. M$ J4 c
  99.   if ( !v3 )# }& |: `4 i. W/ R5 \+ s- u/ `
  100.   {0 G2 U0 D2 z) ?# D9 g* Z
  101.     v5 = v56;
    5 w* b9 H& ]( @  \/ J
  102.     goto LABEL_27;0 Y8 c! R; F( e3 B$ `* x6 t
  103.   }
    . b9 l3 L5 p  R( T. J( _0 f1 L
  104.   v5 = (const char *)v3->lpVtbl->GetAdapterDisplayMode(v3, 0, (D3DDISPLAYMODE *)&v60);+ R! U% f; G( s9 \9 x4 d( x
  105.   if ( (signed int)v5 < 0 )4 s$ b5 C* `8 g2 n( Z+ H! P  H0 J; s
  106.     goto LABEL_27;6 O, M, \0 }  c3 I9 ~
  107.   (*(void (__stdcall **)(_DWORD, _DWORD, signed int, char *))(**((_DWORD **)v1 + 384) + 56))(+ b. W7 c6 {' h# \2 E
  108.     *((_DWORD *)v1 + 384),
    1 W+ M3 D' ^" h4 E. m# a
  109.     0,
    - \0 w& K0 l3 R5 |( b# P# r* w
  110.     1,
    % `% _/ r% L! X* \# S( V
  111.     v1 + 1640);
    % F: @$ d$ O: I' r" R1 z" r
  112.   memset(v1 + 1584, 0, 0x38u);
    ! m7 K6 }+ J: H* r0 h
  113.   *((_DWORD *)v1 + 404) = 0;9 n: @5 m2 q/ p
  114.   *((_DWORD *)v1 + 402) = 1;
    + q7 X. I7 Y: N% w
  115.   *((_DWORD *)v1 + 403) = hWnd;. W! U- n9 e% E) `/ w0 n/ |
  116.   *((_DWORD *)v1 + 407) = 0;7 G- \5 K# l4 |/ X/ A: _, Y
  117.   *((_DWORD *)v1 + 399) = 1;
    ; _$ r  L6 b- F! C; X
  118.   *((_DWORD *)v1 + 398) = 21;
    ! z" ^$ v7 l8 f6 k
  119.   *((_DWORD *)v1 + 405) = 0;
    7 @( _" m2 {1 u8 `
  120.   *((_DWORD *)v1 + 522) = (unsigned __int16)word_558176;9 v& {7 j' m6 N' r
  121.   v6 = (const char *)word_558174;9 A# E  f4 E4 J, P! V
  122.   *((_DWORD *)v1 + 523) = word_558174;
    0 @& Q1 H. P  }9 A3 @
  123.   v7 = (const char *)*((_DWORD *)v1 + 522);
    5 _" b9 }7 v( J7 c8 A3 G! O/ h* \
  124.   v52 = v6;/ m0 `7 S4 x6 c$ j$ ~: q
  125.   v51 = v7;
    / t/ P1 ^. `% K0 }/ `: {; p8 G
  126.   v50 = "Screen resolution is %d x %d.\n";% O8 t6 `% K# H/ Q( I7 w: A
  127.   v1[2076] = *(_DWORD *)&word_558174 == 67109632;
    $ P. q( C- P5 K' Z4 A
  128.   v8 = (FILE *)sub_4D7E8F(v50);
    0 x! u. k' m- b+ ]) _/ t/ t3 D5 i! X
  129.   fprintf(v8 + 1, v50);! x/ G1 I! g- B
  130.   v9 = *((_DWORD *)v1 + 522);
      N: l' t" _$ h: q1 I- U
  131.   v54 = (const char **)*((_DWORD *)v1 + 523);! L" Z; B% c. }& y
  132.   v10 = v54;( h6 g+ ~- W0 i  x  L/ D
  133.   *((_DWORD *)v1 + 396) = v9;* p% ]$ }0 x& Q# _" Z0 W0 a3 Z
  134.   *((_DWORD *)v1 + 397) = v10;& N% W) w* V+ S9 t5 h+ ?; M
  135.   v55 = (double)v9 * 0.0009765625;
    & F% q; }  b/ \- C3 P
  136.   v11 = v55;
    # g5 m  p! n, M  W5 i  N6 B& L' h' n8 K
  137.   *((float *)v1 + 520) = v55;
    7 n) P: B# P2 u* c0 [
  138.   v55 = (double)(signed int)v54 / 768.0;
    6 m6 h3 `5 y9 N- Z, e1 Y# d. X# D9 W
  139.   v12 = v55;
    " @! l) D0 x) Z% K; D7 R
  140.   *((float *)v1 + 521) = v55;" D! u7 r' I- B- }9 Y, U4 M- H9 {0 w
  141.   *((_DWORD *)v1 + 524) = (signed int)(v11 * 1024.0);
    * D; ^9 W0 o: ]6 P7 `  s2 H
  142.   v52 = (const char *)1;2 a1 Y1 u7 v+ Y; B" f5 f+ c! g) u
  143.   v51 = (const char *)(v54 + 11);
    " K! h1 p6 H2 S
  144.   v50 = (const char *)(v9 + 6);
    , U. |9 F- H6 F0 _. x. r
  145.   *((_DWORD *)v1 + 525) = (signed int)(v12 * 512.0);
    ! H6 I( n6 a; Z
  146.   *((_DWORD *)v1 + 515) = 0;4 ^/ O% T9 s* j/ w& w# k4 Q
  147.   *((_DWORD *)v1 + 517) = 1024;- r+ y) U7 L4 }2 d
  148.   *((_DWORD *)v1 + 516) = 128;6 K0 f9 b9 }" x( B' @$ g
  149.   *((_DWORD *)v1 + 518) = 640;" ~, ]/ j# Q$ J/ H) ^! {/ J
  150.   MoveWindow(hWnd, 0, 0, (int)v50, (int)v51, (BOOL)v52);* K- @3 F, h' ]0 I
  151.   if ( (*(int (__stdcall **)(_DWORD, _DWORD, signed int, int, signed int, signed int))(**((_DWORD **)v1 + 384) + 48))(
    4 s5 F& r4 l+ u0 }" j# R8 U" M
  152.          *((_DWORD *)v1 + 384),
    ) m" k% Z# _2 g
  153.          0,
    * r2 x" b% t% r  v: z
  154.          1,  @4 a8 K+ j* `. m5 u  d3 |
  155.          v61,
    4 r, n# |8 |; J$ o9 f$ V
  156.          21,. k  X7 f3 H& u$ G6 x, O
  157.          75) < 0 )
    , _1 I0 g, d5 A4 F# P8 H: l
  158.   {
    6 {% g* W: O3 u
  159.     v52 = v5;, C- @, {9 _6 [+ m
  160.     v51 = v13;
    0 r& V0 {! l* g5 c2 P9 I
  161.     v55 = COERCE_FLOAT(&v51);, @3 ]; G4 F% j( ^9 u
  162.     sub_456DD0("Direct3D initialization failed. No appropriate Depth/Stencil-Buffer-Format found.");, Z+ ^0 y& n# D$ t* k4 X# \3 o- R% G
  163.     v50 = v47;) E6 j0 c1 r4 m' u
  164.     v54 = &v50;
    4 p; i6 h8 H& b: K1 z+ q, a' y) E  ?
  165.     v62 = 0;
    ( ~- L+ p5 [; g
  166.     sub_456DD0("cCougarGraphics::cCougarGraphics");
    + u, x, A; }) R& L- ]; L( |7 h
  167.     v49 = 118;
    6 K; I, `' [1 H+ {: L/ P
  168.     goto LABEL_28;
    ( Z% Y6 c7 U% x: c: I
  169.   }1 |1 X- k7 a! f7 G$ t( ?4 q
  170.   v52 = "Depth/Stencil Buffer is D24S8.\n";
    + s7 u3 v( @+ P4 x! R; f( I9 ]
  171.   *((_DWORD *)v1 + 576) = 24;
    - t* |  n# p7 o: j9 l, s7 k- F
  172.   *((_DWORD *)v1 + 577) = 8;% @# T& R! V* C# k  v9 X
  173.   *((_DWORD *)v1 + 406) = 75;
    3 N+ w' X$ B) G  A! _& V$ F  P
  174.   v14 = (FILE *)sub_4D7E8F(v52);0 N* p& b0 U8 d8 K7 w! n
  175.   fprintf(v14 + 1, v52);, t: o) d) N+ ]" d& r& S
  176.   *((_DWORD *)v1 + 409) = 1;; Y! `# K; I$ y, A
  177.   if ( dword_558178 != 4* @. J% E9 S4 a) ?, q
  178.     || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)
    & R; O' F9 _$ a: P' O# l
  179.                                                                                                 + 44))(
    0 N) h4 `' ]8 v) C4 F
  180.          *((_DWORD *)v1 + 384),
    - ], `) C/ C' j* Z& E8 y  X
  181.          0,
    + ~6 C' u. R+ T+ X0 H8 l) _+ ]
  182.          1,
      P5 P  R2 H5 s8 m
  183.          21,9 n; D6 r7 g$ o
  184.          *((_DWORD *)v1 + 404),
    & ~) `% Z+ S  |
  185.          4,
    * }$ g% p6 C) w( b
  186.          0) )% T' N' \/ t3 w( l* `
  187.   {
    % b* N$ j( B8 z* a0 E
  188.     if ( dword_558178 != 2
    % r6 E2 ]. @0 O- Q8 ?+ K3 a, R3 i
  189.       || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)
    4 o0 r9 j* f5 m
  190.                                                                                                   + 44))(
    + u. v  S: b" v6 N
  191.            *((_DWORD *)v1 + 384),
    " C# ^0 V$ |  s; e" G
  192.            0,
      R7 s( N5 b/ B3 p0 L& e
  193.            1,* w4 j+ E2 n5 {  ^% K/ Q/ b! U
  194.            21,% i1 g/ V/ @0 t4 l& M
  195.            *((_DWORD *)v1 + 404),
    4 j* Q0 F4 {* @" m4 B' V
  196.            2,
      E. z& J/ N) c0 l
  197.            0) )
    - U7 T1 @  ^5 g/ \) M
  198.     {& O" T- e' B5 w0 q+ y5 t' o; K
  199.       if ( (unsigned int)dword_558178 > 0
    , F, t! l7 Z- t3 v" R# ]
  200.         && !(*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, const char **))(**((_DWORD **)v1 + 384) + 44))(& I! g$ x$ _9 N0 q9 c  `, H
  201.               *((_DWORD *)v1 + 384),1 Q5 ]8 l) \6 {7 c8 p* V: T
  202.               0,% {- ^& n3 R' q% I2 H
  203.               1,
    $ ^" j% ?3 J9 @) X
  204.               21,+ J' B* b0 @. i! m. x5 Z0 _
  205.               *((_DWORD *)v1 + 404),
    ; k) s7 e; m1 g5 I# d
  206.               1,. Z' a. n3 I; [. a8 \: G
  207.               &v56) )
    : F3 o4 ^: n, R  q
  208.       {
    3 Q' l# e8 T$ a3 u% L* g7 ^
  209.         v15 = (unsigned int)v56;$ [5 F8 I# |: r7 j) f! U
  210.         *((_DWORD *)v1 + 400) = 1;
    3 X/ u% ], F* D, `' m& ~
  211.         v16 = dword_558178;
    - d/ B  E% Y" w+ R8 j# g
  212.         if ( dword_558178 >= v15 )  e0 T* g! _! x+ P4 f3 h' D
  213.           v16 = v15;" d# Z5 l" }% `- ~7 R: I% H
  214.         *((_DWORD *)v1 + 401) = v16 - 1;! Y& H' P1 D7 p" g
  215.         if ( dword_558178 < v15 )* c; G- n% ?8 U2 \! D
  216.           v15 = dword_558178;, K0 a6 D, I, F# R1 ]
  217.         *((_DWORD *)v1 + 578) = v15;; d" S' T1 ]% F# H. H* q7 L
  218.       }& e: m" z8 @. |1 M
  219.     }# m1 r- z8 r( o/ r1 i8 J
  220.     else
    ! d! W. _9 W* S
  221.     {5 w* a6 D) \% X; u0 J% U3 e
  222.       *((_DWORD *)v1 + 400) = 2;
    # f$ T% r, r, x- \
  223.       *((_DWORD *)v1 + 578) = 2;
    ! N  t# S- Z/ A0 t" T( b" {, Q
  224.     }4 X$ D! K5 ~; z/ u( P( h
  225.   }+ k! N$ O, V/ c/ g% _7 p
  226.   else, @5 g  a- E3 l) a
  227.   {
    0 `$ }% B9 E7 B; B5 O
  228.     *((_DWORD *)v1 + 400) = 4;  Q9 ]! a* ?9 ^& Z& ?: T
  229.     *((_DWORD *)v1 + 578) = 4;
    $ t- h) I) b2 x( u! O5 z; N# q2 F
  230.   }* }4 B% I" ?! w, [
  231.   v52 = (const char *)*((_DWORD *)v1 + 578);
    % A1 \# g' v, d1 r0 Y+ k+ E- q
  232.   v17 = (FILE *)sub_4D7E8F("AntiAliasing is %d.\n");
    7 O* l, ^4 B4 f) d3 ^1 B( K* c
  233.   fprintf(v17 + 1, v51);
    - I3 e6 g' }" H5 e8 Q# @
  234.   v18 = *((_DWORD *)v1 + 384);9 }/ u! r9 A7 ~2 ?& G: K& _1 A
  235.   v19 = *((_DWORD *)v1 + 578) == 0;
    ) S/ d3 N" r) ~" M% p. H/ y
  236.   v52 = (const char *)827611204;1 J: B# y: j- }: }/ @! Q
  237.   v51 = (const char *)3;
      F6 d3 e2 a+ |
  238.   v50 = 0;) [# K$ f' c$ b6 i( a' T
  239.   *((_DWORD *)v1 + 402) = 2 * v19 + 1;
    & C: t& I3 t& E+ @0 g6 M
  240.   v20 = (*(int (__stdcall **)(int, _DWORD, signed int, int, const char *, const char *, const char *))(*(_DWORD *)v18 + 40))(
    6 J4 q6 x8 S% z" I9 f6 j1 I
  241.           v18,
    ' P; t+ D: _" z( F, A- A! S7 N
  242.           0,
    - d( s+ x1 |# A( I! l" {
  243.           1,
    % {- A$ r$ U+ @) I5 q  J
  244.           v61,
      C" H5 T( e/ \2 h9 A
  245.           v50,' _4 M7 O& B. P* A
  246.           v51,
      w6 ~0 L/ |5 F1 O! d5 D/ w
  247.           v52);  S- ~) a! _1 R; d1 i# N: H
  248.   v21 = *((_DWORD *)v1 + 425);$ O, g% P, h( A7 S
  249.   v22 = v20 < 0;
      R  ]- t# ]' u1 k' m. a5 g. C
  250.   v23 = *((_DWORD *)v1 + 384);
    ; |; E4 i/ x# C. S" _5 w
  251.   v1[2316] = !v22;
      T# J& y5 T9 v6 T) a
  252.   v52 = v1 + 1540;
    $ L) N: x6 E- {9 l/ [2 Y9 r
  253.   v51 = v1 + 1584;$ t& M5 D  [8 C2 S# {; U8 @9 ^
  254.   v1[2317] = (v21 >> 14) & 1;
    0 G3 W$ y! v; d0 C
  255.   v5 = (const char *)(*(int (__stdcall **)(int, _DWORD, signed int, HWND, signed int, const char *, const char *))(*(_DWORD *)v23 + 64))(5 H) N2 y1 u: X! g8 z; A' g  B2 V
  256.                        v23,
    ) D  y* ^+ n* R
  257.                        0,
    ) B2 Z! \: ^5 q
  258.                        1,
    ; m' r% m: u5 M  J: |
  259.                        hWnd,
    + x- }8 R  K4 e+ S# q
  260.                        64,
    7 Y0 P# i  u& u# S5 j
  261.                        v51,$ a7 }1 K6 I) N+ \' z- b
  262.                        v52);! L: A8 G" c' |9 q# I( P3 Y
  263.   if ( (signed int)v5 < 0 )4 v" J4 A4 O2 x7 d, V
  264.     goto LABEL_27;
    1 n9 a& [" E4 S' C: I) ]& }
  265.   if ( dword_558180 && ((v24 = *((_DWORD *)v1 + 425), v24 & 2) || v24 & 0x100) )4 P# I* ~1 W: [3 n3 F( g/ X
  266.   {
    # |2 J6 M* o5 p- m
  267.     v25 = *((_DWORD *)v1 + 609);+ ?. z1 ~! z+ \* k; F+ g" l1 [
  268.     v26 = sub_418670(*((_DWORD *)v1 + 522));
    & n+ q; m3 f3 w" J
  269.     v52 = (const char *)*((_DWORD *)v1 + 523);4 q/ M1 m5 N: g7 p' ^& ?+ M
  270.     v27 = *((_DWORD *)v1 + 609);6 `; r( Q0 B2 p8 ]7 T9 E
  271.     *((_DWORD *)v1 + 496) = v26;
    1 f. I& Q8 b6 j- `* L
  272.     v28 = (const char *)sub_418670(v52);) y/ h4 W3 f7 ^, ^$ s
  273.   }& Q2 L+ [$ L/ I$ m8 A
  274.   else$ j5 S2 z" z8 S( ?% `
  275.   {# a& r4 D8 s* K( ^3 {/ _
  276.     v28 = (const char *)*((_DWORD *)v1 + 523);
    ! d# ^& Z$ F2 h) v) n2 g2 Q& m
  277.     *((_DWORD *)v1 + 496) = *((_DWORD *)v1 + 522);
    9 U; W* O! X* i, L1 l2 O" g
  278.   }
    2 A, h* G8 Z1 p& Q. \1 r0 u% u6 a) l% X
  279.   v29 = (const char *)*((_DWORD *)v1 + 496);$ \3 A. ]- \+ q: i
  280.   v52 = v28;2 s/ u4 _$ J! |
  281.   v51 = v29;
    $ _  V- V4 t: F% p. e" Z: r3 F
  282.   v50 = "PostProcess Surface is %d x %d.\n";3 |- j. t$ N& c# c( r; C
  283.   *((_DWORD *)v1 + 497) = v28;
    3 \$ N; A! `& @9 n1 h: g" ?
  284.   v30 = (FILE *)sub_4D7E8F(v50);! Q6 S1 [7 B, A) W2 E
  285.   fprintf(v30 + 1, v50);
    + w- P6 h. a! T$ r
  286.   (*(void (__stdcall **)(_DWORD, _DWORD, char *))(**((_DWORD **)v1 + 385) + 88))(*((_DWORD *)v1 + 385), 0, v1);0 n) m: y1 L8 e
  287.   sub_413100(v1);
    5 C/ z7 m; c5 R" v4 o( e4 S
  288.   sub_411D60(v1);
    : e( @6 g2 Q, Z
  289.   v31 = malloc(0x78u);
    8 ~6 D) |5 H0 i! E# W3 }
  290.   v32 = -0.5 / (double)*((signed int *)v1 + 522);0 ~/ y  i1 p4 J6 ?  ^* _
  291.   *((_DWORD *)v1 + 599) = v31;3 ~1 D# O+ j4 V$ `+ H
  292.   *((_DWORD *)v1 + 600) = 0;
    $ A8 F( ]! @) q) ]/ p) d% [4 {( n
  293.   *((float *)v1 + 526) = v32;
    + D% b2 M/ W" q5 c$ F) h( t& t
  294.   *((float *)v1 + 527) = -0.5 / (double)*((signed int *)v1 + 523);5 i) F7 {1 h5 I+ ^3 X( F3 C
  295.   sub_411CC0(v1);) O" U3 ?: m7 Y* J; q0 {  d
  296.   v33 = v53;+ d7 V0 U$ n6 k' w1 S, @3 [
  297.   v5 = (const char *)(*(int (__stdcall **)(int, signed int, signed int, signed int, signed int, _DWORD *, _DWORD))(*(_DWORD *)dword_559B7C + 104))(
    , ^4 s5 E, E4 \* w
  298.                        dword_559B7C,( r+ R+ E# C8 M. V, ?! y
  299.                        80,% b3 {* g# d1 l8 V! C: A' W
  300.                        8,
    7 G+ S9 |- ^8 t6 ]
  301.                        258,3 D0 ~1 H6 a& V: M0 \$ i# `
  302.                        1,1 }" H3 a7 E# P3 i( L& s: u
  303.                        v53,0 R0 ~) D! n/ T: S0 s4 d% g( G3 Z
  304.                        0);, e$ M9 c0 ~' R0 E4 L9 j
  305.   if ( (signed int)v5 < 0 ): _# q, K* [# ?# C/ A5 t
  306.   {
    3 I1 [! S5 T$ N
  307. LABEL_27:% ]( q' ~: k3 T* a6 N. A
  308.     v52 = v5;) W/ e# Q3 n4 Q% y4 a
  309.     v51 = v4;" b; k0 ]) p9 p  [
  310.     v55 = COERCE_FLOAT(&v51);
    : E2 e8 L- t) q  x4 [- U" l
  311.     sub_456DD0("Direct3D initialization failed.");" U) V; F0 T( W- {( `
  312.     v50 = v48;
    * T! t1 |3 I) k0 s2 {5 O
  313.     v54 = &v50;
    , q5 M! g# U( [
  314.     v62 = 1;
    $ {6 `5 I, V7 o1 i/ L! c; V7 m
  315.     sub_456DD0("cCougarGraphics::cCougarGraphics");* }4 u; t/ X# U2 u5 h
  316.     v49 = 205;$ C3 M" W: e( L6 G. [1 d9 q2 `6 N
  317. LABEL_28:
    4 ?7 g$ A& }2 r" J
  318.     v62 = -1;' q: D# V  ]! r. t6 h9 ^
  319.     sub_40CB30(1, ".\\source\\class_graphics.cpp", v49, (char)v50, (char)v51, v52);
    9 f( u! N5 q+ \5 ?
  320.   }
    1 s4 P& i( S9 ^6 @. K2 I
  321.   (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD **, _DWORD))(*(_DWORD *)*v53 + 44))(*v53, 0, 0, &v53, 0);6 L0 T8 Y! O4 B" P
  322.   v58 = -1.0;
    7 E: \0 X$ V1 ^4 j' c; m
  323.   *(float *)v53 = -1.0;; @+ q1 e" {. A* {" h- J% p
  324.   v59 = 1.0;
    % G: I! R  P; I. v& j
  325.   *((float *)v53 + 1) = v58;
    % @0 Q4 ?8 w, W, C( _
  326.   v57 = -1.0;
    - e5 q# L/ I. S8 ?# x
  327.   v58 = 1.0;
      O5 z- I2 V- _8 J5 Y: V
  328.   *((float *)v53 + 2) = v59;  P- {1 s) j  g4 D! @
  329.   v59 = 1.0;" J8 K4 I+ ^/ \$ A" v* d8 z. _
  330.   v34 = (float *)v53;
    * O+ r2 ]! Z$ V  Q3 I
  331.   v35 = v57;9 e' X+ F1 M# v! h& S6 G! c& z
  332.   v57 = 1.0;
    4 {7 L0 l% ~+ I7 Q5 _  s+ U) E" K
  333.   v36 = v58;
    % d, m4 ?* G8 o
  334.   *((float *)v53 + 5) = v35;
    1 F  s6 v$ q8 Y2 e1 k/ I
  335.   v37 = v59;
    " ?: R* K5 }( I. G8 Q/ e
  336.   v59 = 1.0;" v7 \. t, \6 ?- r
  337.   v34[6] = v36;
    # k1 c& [1 a) E7 B* Q. l0 I
  338.   v38 = v57;
    & F+ i8 i$ s$ N7 E. H' v. b
  339.   v58 = -1.0;" g- ]7 `, u8 ~8 F% f" E
  340.   v34[7] = v37;
    & z( m# O& b" ^9 T6 ~# b
  341.   v39 = v58;( d! B% j4 R# X( Q4 L
  342.   v57 = 1.0;
    - F* Q+ T0 M/ D% E2 G; c; i$ |* a
  343.   v58 = 1.0;
    0 e! ~7 b' G) o3 r. B4 s5 u* G
  344.   v40 = (float *)v53;  I1 _; n0 K$ A/ N( _) G
  345.   *((float *)v53 + 10) = v38;
    4 e" g; C% _1 h  y
  346.   v41 = v59;
    / W8 Z0 @- c' C: X2 O
  347.   v59 = 1.0;
    7 l# P  J" d8 G
  348.   v40[11] = v39;, |$ H/ U- @+ C6 r& G
  349.   v42 = v57;
    % s2 `! }6 g5 A+ I
  350.   v40[12] = v41;
    & U; t6 g6 O8 c' p
  351.   v43 = v58;
    9 N0 l  A) x) ^2 o* J2 [
  352.   v44 = (float *)v53;
    & g2 j7 I! r5 K
  353.   *((float *)v53 + 15) = v42;
    . H% L5 ]1 `5 R4 X6 ~) r/ {! n
  354.   v45 = v59;
    1 O) q5 a9 `- V
  355.   v44[16] = v43;# M6 U) K; f0 l
  356.   v44[17] = v45;. m8 S5 u. G' N* M
  357.   *((float *)v53 + 3) = 0.000099999997;1 S6 L9 K9 I  a$ B/ I
  358.   *((float *)v53 + 4) = 1.0001;
    3 m: `7 K: ~! V' {
  359.   *((float *)v53 + 8) = 0.000099999997;  p( _$ d; r& g
  360.   *((float *)v53 + 9) = 0.000099999997;9 v! D: G  z( i0 }/ @6 O
  361.   *((float *)v53 + 13) = 1.0001;1 ~6 W6 ~  J% ]7 n. F9 N
  362.   *((float *)v53 + 14) = 1.0001;# O0 W! ?% t+ A, Z% x8 @" r
  363.   *((float *)v53 + 18) = 1.0001;3 I4 q# Z! i7 Z: A2 m: w( h
  364.   *((float *)v53 + 19) = 0.000099999997;
    . [+ j; L) C' a% M- a
  365.   (*(void (__stdcall **)(_DWORD))(*(_DWORD *)*v33 + 48))(*v33);/ Z3 r% Z" }2 w7 Y# D
  366.   return 0;) r0 _' t  G1 i  L+ b% l
  367. }
复制代码

. c0 V' d) y+ L9 Q: p  y2 k用Cheatengin寻找一个字幕之后,在以下地方断下" K9 v' W7 U3 H+ n3 v
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码
) }# \: p( c) {
' N. I7 S; _* `7 G5 S4 O& Y
在ida pro下查看,是这个函数,从代码看a2字符像是索引号。
) Q. w3 A/ t! D- j稍后需要仔细分析。字幕显示函数应该在本函数上下。$ N$ A. P3 J; |
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码
+ ^( v8 e+ U* J3 ?) e; B

* v0 W+ [+ H9 ^" J# i. j9 X; e! _# `0 O& M; ]$ Q
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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