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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑
- _# i- @% Z7 |6 X- K1 V2 a* R; Y3 S+ x8 {0 U6 y
这个游戏以前分析过,这次再写仔细些,* @: k! i2 ~; L- R/ L* c4 S5 D
CreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。
/ y' ]) l  B0 n5 U1 F0 o这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。4 ^" l; b% }( i+ A! X9 |

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

' f. V" T+ u' i3 Z+ _" v3 {# x. Z用Cheatengin寻找一个字幕之后,在以下地方断下
- Q1 f, n) W* X2 H
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码

" x) b$ p/ i7 y& I' G5 j. s( [7 L+ H. w. {% T6 m! e+ v
在ida pro下查看,是这个函数,从代码看a2字符像是索引号。
& q# L; H7 ^( j0 m稍后需要仔细分析。字幕显示函数应该在本函数上下。
9 C1 p# X4 s  z, e' Y
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码
$ R  K1 C5 b) V6 ~) T4 T
4 D1 n3 b6 T) v) ^4 j# W
. y+ d9 K2 I; B% G; n5 ~+ w
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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