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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑
" A8 L. \% O5 O% U, t+ G9 m, V' l4 q4 g) {) @
这个游戏以前分析过,这次再写仔细些,
% s1 @( [2 L2 |CreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。
9 n" `, }8 X! b6 e- l/ g' c% r2 M7 A2 E这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。1 h) F+ c& a! N+ _1 D

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

( n- \& s6 D2 _1 K: d, O7 u
- F" H/ Q' V, V  x* V在ida pro下查看,是这个函数,从代码看a2字符像是索引号。# S) N/ [" q) A9 E5 _
稍后需要仔细分析。字幕显示函数应该在本函数上下。& J) B7 f6 _7 S
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码

( `; {  F) {+ l2 n0 b+ |; s6 R+ Y1 o

. v. ^6 E5 \; m" C% J: b$ o+ F5 g3 b
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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