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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑
8 G& W; g6 O6 W' ~& J+ |8 U% u4 ^" v4 W
这个游戏以前分析过,这次再写仔细些,
8 I9 P% U0 s2 |# R7 o' k# PCreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。6 l( K, D0 W# I+ ~9 N$ Y' e
这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。
! L. A# c) H& l9 A. W
$ P  L+ {" |$ f3 H
  1. .text:0041641A                 push    ecx
    % I! G1 t% X( I) U
  2. .text:0041641B                 mov     [esi+90Dh], dl
    8 Z: Z8 j! t6 q2 K1 b+ e
  3. .text:00416421                 mov     ecx, hWnd. T, A0 A3 Y0 x( I, e7 L
  4. .text:00416427                 mov     edx, [eax]
    . _, a2 f9 H" O# D, r. o: \# k+ Y% L
  5. .text:00416429                 mov     edx, [edx+40h]( h" N1 h, Y& ~1 F
  6. .text:0041642C                 push    40h6 O, _9 Y9 D4 u( J+ j* b
  7. .text:0041642E                 push    ecx
    ; x/ y2 o( ]( u) V( m- n
  8. .text:0041642F                 push    1
    5 i% G- A( k/ r4 O1 n- Z3 e! g
  9. .text:00416431                 push    ebx  G# _2 E6 C- X) @( P* j& x
  10. .text:00416432                 push    eax
    8 W+ J  p( l* H
  11. .text:00416433                 call    edx
复制代码
  1. * r. N. n* O+ z
  2. int __thiscall sub_415FF0(char *this)
    6 U6 x& e3 A+ [" D: c7 _$ w
  3. {
    . A3 S* j9 n2 a  e: {1 Q. S
  4.   char *v1; // esi
    # Z+ _) o1 t( N% j6 j& G
  5.   FILE *v2; // eax
    6 a  M: k5 i! f2 Y7 j
  6.   IDirect3D9 *v3; // eax( w1 b! {5 S2 j2 J# V. s
  7.   const char *v4; // ecx) T- h& {( u3 N8 {. \; G/ J
  8.   const char *v5; // edi5 Q0 r+ W  _5 v: e9 y
  9.   const char *v6; // edx/ |9 B- }+ L2 P) Z
  10.   const char *v7; // eax# h; [, N) t! N; c8 `
  11.   FILE *v8; // eax
    - l; D, t0 R  W& y$ g  w
  12.   signed int v9; // ebp. K3 ]# O; r% Y9 M0 Q" l6 }- ^
  13.   const char **v10; // eax
    1 I' v3 }" I$ s- n
  14.   double v11; // st7/ m/ P$ e7 y- q9 D9 }. k* A
  15.   double v12; // st6
    ' O" P4 a, i9 K* j9 F# D
  16.   const char *v13; // ecx* U! ^7 X3 g9 k
  17.   FILE *v14; // eax  {- B" n  x7 @; I
  18.   unsigned int v15; // eax
    - v, a1 s2 Y' Y8 @/ Y4 u
  19.   int v16; // ecx
    & n4 u& r$ `% n8 P' b* V
  20.   FILE *v17; // eax
    ; ~) }3 Z* W$ \" ^. a, k; v
  21.   int v18; // eax
    + j4 b* n% N+ a
  22.   bool v19; // zf
    4 Y4 b: m5 g" M& W  n9 t
  23.   int v20; // eax
    $ m* i9 q0 E8 o
  24.   unsigned int v21; // edx$ {& W5 j$ A6 Q+ W( U) Z; Y- E
  25.   bool v22; // sf
    6 r, E2 k9 T% H  B1 T, g1 r
  26.   int v23; // eax
    & G1 Y( Q% I( ?) z% L
  27.   int v24; // eax/ K1 J4 g  ?3 _
  28.   int v25; // ecx
    : ?' K2 @7 L' L9 n4 Q' V6 R$ r. j
  29.   int v26; // eax
    * `, G' q- u3 j% @7 H+ t
  30.   int v27; // ecx- [# X: ^5 o" X" h
  31.   const char *v28; // eax+ T, a# \4 }. E
  32.   const char *v29; // edx8 x2 `5 e/ D+ d7 M# j
  33.   FILE *v30; // eax7 k# S/ \9 x! L
  34.   void *v31; // eax9 C$ B2 o4 o2 z9 X( R
  35.   double v32; // st7: q" `2 e0 h: r/ Q' J( F, Z
  36.   _DWORD *v33; // esi
    4 s' |7 U8 w+ X3 s& `' j2 k3 O
  37.   float *v34; // eax
    * c3 W' Q! V6 F
  38.   float v35; // ecx' P" q; n* A2 p3 D- n7 x
  39.   float v36; // edx! l4 U3 j# Z9 q% l$ N2 L& G
  40.   float v37; // ecx
    4 D% d- C+ j2 @+ Q
  41.   float v38; // edx4 \# H& j# L4 o6 I1 C( g; X  F
  42.   float v39; // ecx
    , |7 N- j+ `2 t2 v! m1 `, Z
  43.   float *v40; // eax
    7 P4 q( p3 N- B5 [
  44.   float v41; // edx: _: w" D1 {. ]: f% ]
  45.   float v42; // ecx% ?! |1 C' W' f
  46.   float v43; // edx
    , U- Z9 V/ y# w) d9 O
  47.   float *v44; // eax+ m, |5 }/ z2 X8 k$ `: c/ T: [6 R8 m
  48.   float v45; // ecx
    # I' m, K3 d5 P
  49.   const char *v47; // ecx
    * Y- O, m8 L+ R: B) V  F4 c, ^
  50.   const char *v48; // ecx
    2 ]5 E7 d' ~% |/ R0 x
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]
    2 K, Z! |' g$ }
  52.   const char *v50; // [esp+A4h] [ebp-58h]8 O3 {7 u( a+ O& m, q
  53.   const char *v51; // [esp+A8h] [ebp-54h]  S. ^6 C; F5 H7 z' l
  54.   const char *v52; // [esp+ACh] [ebp-50h]
    3 m" w1 Q  l7 L. ~" l- E2 A
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]
    : P- s- l+ M& D2 q, `
  56.   const char **v54; // [esp+C8h] [ebp-34h]
    0 K9 Q8 Y$ b9 \* }6 g" H
  57.   float v55; // [esp+CCh] [ebp-30h]
    1 Q# j" K( i0 }3 ^" g" J5 o
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]9 G5 A( I6 U1 S
  59.   float v57; // [esp+D4h] [ebp-28h]. b8 }5 o- P" g
  60.   float v58; // [esp+D8h] [ebp-24h]% Z5 H+ f& M* t' ^/ I8 n: Y4 F# l
  61.   float v59; // [esp+DCh] [ebp-20h]% h. x) J6 q- J5 n. @
  62.   char v60; // [esp+E0h] [ebp-1Ch]6 @0 f$ V& {5 M
  63.   int v61; // [esp+ECh] [ebp-10h]# C) F; K* U( p" D( a: r
  64.   int v62; // [esp+F8h] [ebp-4h]3 `* T9 _  H( a3 y; L" Q2 G

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

9 H! w# Y# _$ J7 u6 H7 o用Cheatengin寻找一个字幕之后,在以下地方断下
/ Q" `, i8 ]4 c; b; M2 \
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码
: a1 ?, W" q% w& Z4 {' P% f* i+ D

% |- }3 x+ A( `) K$ t$ I在ida pro下查看,是这个函数,从代码看a2字符像是索引号。  g2 H# u2 _2 Q/ o( H% Y
稍后需要仔细分析。字幕显示函数应该在本函数上下。4 K# I% C( X1 `; V4 V7 ^- y3 ~% m) [" }
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码
- ]; X; q3 b" r: g2 w$ n

$ A% r% U% q/ b9 W  B5 ~8 i* i6 s* j& U6 h. G
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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