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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑 2 v# m. J8 F- c. R) n# Q
5 e% }; j' F, G  C/ w, R
这个游戏以前分析过,这次再写仔细些,. p- S& M* p: V# [
CreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。$ P' e2 y2 f4 w* m
这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。
+ z1 D* C: S# M! ~: a. G; V1 d9 \
% E" [! |4 `. n. }$ X. ^
  1. .text:0041641A                 push    ecx
      p5 d9 }" q, r$ P$ W4 `6 w
  2. .text:0041641B                 mov     [esi+90Dh], dl/ Z9 X4 k$ o% L7 |* I( O6 r% O+ L
  3. .text:00416421                 mov     ecx, hWnd+ f% J' h. w* E& B7 V, C" o4 o
  4. .text:00416427                 mov     edx, [eax]
    5 G8 o2 l0 X' c4 y: _$ ]
  5. .text:00416429                 mov     edx, [edx+40h]
    2 Q' I, @; F% x+ d5 ~7 r& I2 F6 h9 ]
  6. .text:0041642C                 push    40h+ J: L! i) f6 R' T  d
  7. .text:0041642E                 push    ecx5 Q  |+ _" _) O& j# z$ W7 F
  8. .text:0041642F                 push    1* R* ?! b" |5 T5 ]
  9. .text:00416431                 push    ebx
    . c; O4 @. m- L" P/ C$ k4 P
  10. .text:00416432                 push    eax
    " j" E3 H8 N: A3 a
  11. .text:00416433                 call    edx
复制代码

  1. 1 R  U2 X$ B8 b0 z
  2. int __thiscall sub_415FF0(char *this)  Q9 ^: M: U. |7 ?
  3. {
    ) O2 W% H0 c  q6 T6 V0 E
  4.   char *v1; // esi0 X2 _. x# |* \# h! ^
  5.   FILE *v2; // eax
    3 e0 W0 N& ]- j- t- r  t0 q
  6.   IDirect3D9 *v3; // eax4 J- X$ f6 a( c
  7.   const char *v4; // ecx- t  o5 J9 @3 O  W2 @% B  x
  8.   const char *v5; // edi% P7 Z( O3 k0 R! k* p* S" f
  9.   const char *v6; // edx
    ) L( J" }& b# ^) g+ U* F0 l
  10.   const char *v7; // eax6 X5 _  }1 u6 M" C  |
  11.   FILE *v8; // eax
    0 S0 a! G4 I( o7 |; Q* O  G5 [
  12.   signed int v9; // ebp1 K. c8 b  |* v- H8 g! t; g% {
  13.   const char **v10; // eax6 \2 a8 V1 C% d
  14.   double v11; // st7% v1 k8 L; Y5 j3 z& V( S4 F3 L
  15.   double v12; // st6
    2 ~! V, W7 B& r) @' v
  16.   const char *v13; // ecx" Y' a- u: w( t% C1 e0 e
  17.   FILE *v14; // eax
    ) x) W/ N3 e* p# o5 h! P6 A: T
  18.   unsigned int v15; // eax
    5 C+ ~9 x6 B+ R
  19.   int v16; // ecx( e/ s+ _! k6 b; B1 d
  20.   FILE *v17; // eax
      @" g* M' n; G, r3 p* h
  21.   int v18; // eax& I( z% f$ ~1 w) e3 v) _# \* o
  22.   bool v19; // zf- V! M4 r$ R% t4 a
  23.   int v20; // eax% j6 u0 d% d$ T: o. G6 w0 Z
  24.   unsigned int v21; // edx
    : I1 `9 p, n# a6 B
  25.   bool v22; // sf
    6 \( Q# r. }& J
  26.   int v23; // eax
    2 C( Y1 z! b4 f9 O" s  {
  27.   int v24; // eax
    8 R% K2 |2 `* u" i, j9 u
  28.   int v25; // ecx
    1 h7 J: x' I5 E( r+ O
  29.   int v26; // eax+ k% @/ @3 D$ Q& e/ |4 b6 x# \2 Y. V
  30.   int v27; // ecx
    - e: U( `8 g- t" [4 V
  31.   const char *v28; // eax
    5 ?! e- b- T. q1 ~1 s% w, m( |3 [
  32.   const char *v29; // edx" i, ]1 u0 Q6 U& _' S; f* }6 l
  33.   FILE *v30; // eax
    7 u! P2 V2 j* W3 [  W
  34.   void *v31; // eax
    0 J2 A2 F6 d- h7 y& r0 q# p
  35.   double v32; // st7& }$ c( x6 k/ R8 G* _! f0 `6 B
  36.   _DWORD *v33; // esi1 G. x& ?: b) q) _
  37.   float *v34; // eax6 Q( F2 i% T5 n  T! J+ m
  38.   float v35; // ecx# Y) g7 T0 K7 o/ v
  39.   float v36; // edx
    2 O. s  O: @. Z) R* X# \7 v5 q5 l
  40.   float v37; // ecx" X  I1 v  Z0 K  {! H/ m3 K
  41.   float v38; // edx, w) t  W) E# X* K) r+ l% e
  42.   float v39; // ecx1 Z! J( G3 U% J  b: q
  43.   float *v40; // eax9 q" ]1 C1 p6 W4 k, \2 V) G+ B2 N; f. S
  44.   float v41; // edx
    / `; }( E; Q' m# t% Y
  45.   float v42; // ecx
    " A- J0 C, j) M  H8 ^3 ~9 u
  46.   float v43; // edx  P3 e6 o/ ^7 J- k% g
  47.   float *v44; // eax3 Y" B. A% y8 F7 `7 E
  48.   float v45; // ecx
    8 f2 n4 G$ R$ Q  H9 w1 t
  49.   const char *v47; // ecx
    - b2 r: r  D& \; A9 X6 P0 s+ b: p0 q
  50.   const char *v48; // ecx
    7 z9 L5 @6 S7 h0 T0 Y! D
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]7 [1 e& A" N; o+ ]4 c1 F" r
  52.   const char *v50; // [esp+A4h] [ebp-58h]) d) ]( W1 x+ x- }6 E+ T, w
  53.   const char *v51; // [esp+A8h] [ebp-54h]
    - |9 b% h: h9 ~1 C3 E+ @
  54.   const char *v52; // [esp+ACh] [ebp-50h]9 [  v' e8 D4 U- G5 k1 [, W5 t
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]& ~' u$ t5 F9 z) U" Q; [' o
  56.   const char **v54; // [esp+C8h] [ebp-34h]
    8 Y+ V9 y/ `4 r- [5 i
  57.   float v55; // [esp+CCh] [ebp-30h]: p1 e7 C. ~1 {# o9 X+ P
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]
    " F! q' O! n, h# b% F
  59.   float v57; // [esp+D4h] [ebp-28h]2 a' i1 f$ U! d5 O
  60.   float v58; // [esp+D8h] [ebp-24h]
    % c' I  q, `. u# [! T
  61.   float v59; // [esp+DCh] [ebp-20h]" Z' a6 Y. G& T6 \
  62.   char v60; // [esp+E0h] [ebp-1Ch], n7 i5 E- ~( F9 ^! f2 Z5 S* b
  63.   int v61; // [esp+ECh] [ebp-10h]
    3 ~; ?$ D4 `8 C( B. V* r  e! n
  64.   int v62; // [esp+F8h] [ebp-4h]0 y! k4 U( U: L( S5 I

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

: H; f6 Q# L0 ]9 d: h. B# Y- f用Cheatengin寻找一个字幕之后,在以下地方断下
- i" k" Y3 s3 _* s$ J9 m
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码

. ]2 w* q9 y5 P6 M
4 v, K  w6 x+ k. o在ida pro下查看,是这个函数,从代码看a2字符像是索引号。" i/ X% n) {; v: m) A* j
稍后需要仔细分析。字幕显示函数应该在本函数上下。
& k$ d' o6 M+ `: o* Z3 Q& @
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码

: h" I5 D" m7 M5 C6 D" ]. i
% X7 U  c/ k4 A. b4 k
* d- K3 R3 B8 f3 q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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