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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑 / b% G/ H+ I+ ~6 b
% ]3 Z. A8 X% ?- O, ^5 E0 D
这个游戏以前分析过,这次再写仔细些,
4 C1 u0 n  L& l$ fCreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。" @% m4 x) \0 v  A8 ?% }
这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。; w4 ~, L: J# R; ^% }8 h% _7 d- C
! ]; r& t/ j) ~$ C2 `  h) s# p
  1. .text:0041641A                 push    ecx
    ! O* |7 ?' {; C- I% ^2 y+ E
  2. .text:0041641B                 mov     [esi+90Dh], dl6 D4 o) R( r" ]! \, n- C5 V$ |
  3. .text:00416421                 mov     ecx, hWnd
    ) I& ]' c/ k1 Y6 U: Z6 j# P8 _7 C
  4. .text:00416427                 mov     edx, [eax]7 Z: R0 l* Q. j4 q( v* @
  5. .text:00416429                 mov     edx, [edx+40h]1 h$ }, }( r! x3 x
  6. .text:0041642C                 push    40h. l' @4 Y4 p! i; {  _
  7. .text:0041642E                 push    ecx
    , C. v9 q! v% y3 g3 C
  8. .text:0041642F                 push    19 a. T" ~! N; n$ s6 @6 J
  9. .text:00416431                 push    ebx
    & M" o4 l+ m8 U: r* V. N
  10. .text:00416432                 push    eax
    . D' P1 L) Y3 A+ F7 t
  11. .text:00416433                 call    edx
复制代码
  1. # X$ p8 f! Q6 f; \/ {: }
  2. int __thiscall sub_415FF0(char *this)
    * D6 m, h) j" X. x4 |! R9 I
  3. {7 @$ g4 c: G" [
  4.   char *v1; // esi
    : k6 K+ w( u. Z$ j' e
  5.   FILE *v2; // eax
      ?( w* c4 z6 Z! X2 N; @$ I
  6.   IDirect3D9 *v3; // eax
    " O  f2 S7 l  T) E2 L3 [
  7.   const char *v4; // ecx
    1 l( L) ]5 K4 a( W" D' ~+ C
  8.   const char *v5; // edi
    8 |! ?; p  S: v/ T2 f$ i% Y) c
  9.   const char *v6; // edx) R( d- {1 g+ ?/ n# M
  10.   const char *v7; // eax
    & f) X/ c6 V( h( P$ O4 d
  11.   FILE *v8; // eax; A: R+ J4 V1 ~6 ~
  12.   signed int v9; // ebp
    " B! ?7 a2 I0 }; j
  13.   const char **v10; // eax
    0 r  k# @: ]' @) V0 V. ]; W" G
  14.   double v11; // st7
    7 B& ^3 I# V6 e# h# O
  15.   double v12; // st6
    ! T6 H- U5 {4 v3 i
  16.   const char *v13; // ecx
    5 C6 y( ^1 ~, W1 Z$ }6 b9 s+ o
  17.   FILE *v14; // eax
    0 r' u! L' R1 q! Y2 q6 Y, L
  18.   unsigned int v15; // eax& ?9 V' {% c, C0 h- H$ B8 q$ B
  19.   int v16; // ecx
    4 t0 }. W6 @" J2 P3 V- |$ K
  20.   FILE *v17; // eax
    ! P: n3 e1 ]' j9 M/ y
  21.   int v18; // eax& L0 v" s6 l) X/ Y2 c% j: Y! P
  22.   bool v19; // zf
    % B# `; c3 H! P& D  o
  23.   int v20; // eax# n. j) X9 h6 H* I$ Y
  24.   unsigned int v21; // edx
    ' Q. s3 A2 U5 u8 ?" ]$ k
  25.   bool v22; // sf) n* D7 g6 P* ~( E% O7 _4 t  X# B
  26.   int v23; // eax4 {& X8 D3 e9 v3 m) m- q! T
  27.   int v24; // eax
    : X2 w9 W0 \6 x: k
  28.   int v25; // ecx
    - X. I$ J4 U9 |
  29.   int v26; // eax6 Y( z, t3 R( I
  30.   int v27; // ecx
    " a7 ?3 z) a) s% F
  31.   const char *v28; // eax
    , H+ V. ^5 ]/ O9 D$ P  i
  32.   const char *v29; // edx
      p# j* l2 h3 S
  33.   FILE *v30; // eax
    0 `' l* X% H! e' U( i
  34.   void *v31; // eax/ u0 ?# L8 u& q2 P0 h
  35.   double v32; // st7  b- h; f* U! `
  36.   _DWORD *v33; // esi" |3 i. E" R" n2 f1 ~5 c" ?$ G, {: o
  37.   float *v34; // eax6 P+ A1 @- a8 \
  38.   float v35; // ecx$ p- \8 i. E6 x4 t- e$ V
  39.   float v36; // edx( M6 _* j. C+ _. }* v
  40.   float v37; // ecx$ ?' I! ~* t, M8 P( y) N( ~7 H
  41.   float v38; // edx+ n9 E) S* G  d
  42.   float v39; // ecx
    + x2 |. a7 f' Z
  43.   float *v40; // eax
    . L& _. s: y! ^: j2 p
  44.   float v41; // edx
    * N, E/ l6 g: Q5 Z, P2 y1 O
  45.   float v42; // ecx* q$ h  K1 C3 h1 x/ r; t
  46.   float v43; // edx
    2 k& i6 z" _: z" Q9 U! }- t
  47.   float *v44; // eax
    2 {5 @( c& V7 {3 Z8 g3 d( P& {6 |
  48.   float v45; // ecx
    * J# I2 i* O( g8 k( d7 E6 F9 C& D
  49.   const char *v47; // ecx
    ' P' [4 M' ]% q" u: S& {
  50.   const char *v48; // ecx; y, L2 D5 @: o8 f. V6 `* \
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]
    & d" n. Q+ D% }9 E, R
  52.   const char *v50; // [esp+A4h] [ebp-58h]
    . x# F) C* v2 S" J2 h
  53.   const char *v51; // [esp+A8h] [ebp-54h]" I$ z! {6 i) n& k0 C! F
  54.   const char *v52; // [esp+ACh] [ebp-50h]
    # m- w2 q. s$ i9 M' H, U
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]
    # x9 m) ?9 q1 W) V4 z* s) q( V' K
  56.   const char **v54; // [esp+C8h] [ebp-34h]* \- V  M# d2 x+ d/ F
  57.   float v55; // [esp+CCh] [ebp-30h]
    2 l1 D; x. N, S& Y/ R
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]" s7 f# R) |, l; K% s5 ~; N
  59.   float v57; // [esp+D4h] [ebp-28h]
    ( Z! B& e- l+ H& ]  I) W' E; R
  60.   float v58; // [esp+D8h] [ebp-24h]
    2 k4 i' G, T+ N7 O6 [
  61.   float v59; // [esp+DCh] [ebp-20h], @0 ]% u1 X+ A  V, V# z( y8 ?2 K
  62.   char v60; // [esp+E0h] [ebp-1Ch]
    3 t" a! a8 ~3 a, Y2 x, a) B1 ^
  63.   int v61; // [esp+ECh] [ebp-10h]4 Q5 P5 O& W2 d- p- ?
  64.   int v62; // [esp+F8h] [ebp-4h]
    6 a- O/ `  @' O2 d7 V  m

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

8 v& U- l' t" h: I用Cheatengin寻找一个字幕之后,在以下地方断下
  Q8 y! F' K) o. U1 Z
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码

/ @6 {- A; O+ S% b
- F3 L2 c9 q, P4 t7 Y; C! W在ida pro下查看,是这个函数,从代码看a2字符像是索引号。( u1 Z7 l2 z" t( q6 D0 \
稍后需要仔细分析。字幕显示函数应该在本函数上下。* `0 `8 j' ^' F( k+ F; \
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码

8 C6 R: q; \  x1 ]/ n" t
# P8 V: V1 z0 G! ^2 F" |1 L
/ V+ e! G0 \! O& X5 ^7 L, u: g2 N
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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