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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑 / p$ T; i; u$ `: G: g
% B! z/ b/ N8 G, Q9 X) G- ^
这个游戏以前分析过,这次再写仔细些,: H8 s5 I- t: m0 U
CreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。
* N( D0 K8 D1 I/ ]0 I这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。
( F4 o/ C2 @. \' G
" o- g7 @; W9 Z: R+ J- U9 ?; T: _
  1. .text:0041641A                 push    ecx
    4 G2 }' l- a7 d
  2. .text:0041641B                 mov     [esi+90Dh], dl
    : M: ?: m& x: d
  3. .text:00416421                 mov     ecx, hWnd
    / J, B0 ]- @2 L- ?  p% j( i$ M" I
  4. .text:00416427                 mov     edx, [eax]/ B6 J! n7 R/ g% D% @
  5. .text:00416429                 mov     edx, [edx+40h]. X* o% |% Z! O- d
  6. .text:0041642C                 push    40h! G( P5 Q1 m+ N4 W' H# U
  7. .text:0041642E                 push    ecx+ F. \. _% d: V' U! P
  8. .text:0041642F                 push    1
      t2 o! i- p' @# n
  9. .text:00416431                 push    ebx# l& ~4 j& _4 q9 r. O
  10. .text:00416432                 push    eax  F+ V1 T0 G1 f2 p/ m: i$ I* W
  11. .text:00416433                 call    edx
复制代码

  1. + x6 y$ E# V4 ^/ y# a$ N7 a! @
  2. int __thiscall sub_415FF0(char *this)- E+ a: t& B6 R# T
  3. {
    1 ]7 L* Q# F) V# r9 F  L
  4.   char *v1; // esi( o. H9 i2 _+ E( G$ J; I0 T% l" o5 s1 J  f
  5.   FILE *v2; // eax0 k# k( j5 \/ ~+ h
  6.   IDirect3D9 *v3; // eax; Y3 s1 I, |$ {4 J, [1 |, r
  7.   const char *v4; // ecx
    # z: I- p+ r# i/ ~' c1 S( n
  8.   const char *v5; // edi
    - F+ j8 \9 T' t2 y. b' J0 M
  9.   const char *v6; // edx6 {6 W' m* W' _7 N$ B
  10.   const char *v7; // eax
    ' w6 H" n9 l' @) ^0 p1 L( p
  11.   FILE *v8; // eax; R0 T$ d1 Y2 q0 r0 i1 P) |
  12.   signed int v9; // ebp
    / A, _: s6 _' e' v9 D- r: m
  13.   const char **v10; // eax0 C, |/ t- ~4 M/ r3 q; j" K
  14.   double v11; // st7
    " H1 V( W: u9 E
  15.   double v12; // st6
    + F5 F; R' U% K4 q8 |9 G# ]$ X) l
  16.   const char *v13; // ecx2 q& X6 f( L8 |" n9 f* B: |
  17.   FILE *v14; // eax# z- e2 P6 t4 v1 f' O
  18.   unsigned int v15; // eax
    4 ~' ]* L- \* r* a5 Z4 y1 b! y% a
  19.   int v16; // ecx
    , M$ L8 V8 x0 k! B, y
  20.   FILE *v17; // eax
    / o; q+ K) O0 j# L" W6 h* W/ ~
  21.   int v18; // eax
    8 [/ \$ O; z& W: s! b6 D
  22.   bool v19; // zf
    , u2 Q1 r+ v( Z! S+ Z0 _8 _' q
  23.   int v20; // eax
      l$ ~: b+ Z! D. S3 Q
  24.   unsigned int v21; // edx
    : ]0 Q. t! n6 V0 t& E- E/ L% P
  25.   bool v22; // sf
    4 ]! M$ ^8 N; q/ w' i9 L0 g8 p
  26.   int v23; // eax4 {. X( \! w& @0 [( _% G* n/ E; G
  27.   int v24; // eax' V0 i3 c4 B. Y( m. s' k
  28.   int v25; // ecx
    5 _& f( a& y0 v4 d5 H2 d8 {
  29.   int v26; // eax
    . L* h+ y* w5 b
  30.   int v27; // ecx( u0 X1 E* C6 \% I1 {& q+ O
  31.   const char *v28; // eax$ l, Z# D- ~, y5 {5 s1 V  J+ R
  32.   const char *v29; // edx
    5 d9 U/ ~! s0 K" @
  33.   FILE *v30; // eax. l, J+ E8 v" d" _0 p
  34.   void *v31; // eax. ~# k( \$ U+ i
  35.   double v32; // st7- n# i9 ?5 w6 K' J+ C
  36.   _DWORD *v33; // esi; w" \6 @* s' Y7 C( o
  37.   float *v34; // eax2 k7 n! O  W5 y. u
  38.   float v35; // ecx
    " V; T0 Q+ d/ i+ U6 J
  39.   float v36; // edx7 M7 o2 n2 q+ B7 S* ~
  40.   float v37; // ecx
    7 C9 K0 {/ u8 x% n
  41.   float v38; // edx; z/ T& d- h# L% h; J
  42.   float v39; // ecx
    5 X( I$ \* L8 \6 \& W; a& H- |2 @7 w
  43.   float *v40; // eax5 W9 ]# m6 J" }' u. A8 [5 Y) B8 a
  44.   float v41; // edx
    - t1 @% {: c  N- _
  45.   float v42; // ecx+ f9 P# h0 N" z  |( X
  46.   float v43; // edx+ b" a$ |0 g" z2 k
  47.   float *v44; // eax* N2 T5 `- p3 X5 `" \' L5 E
  48.   float v45; // ecx
    : w! n- q( R0 [1 h
  49.   const char *v47; // ecx
    ( D8 ?: t# M( ~! c1 y* ~" S
  50.   const char *v48; // ecx
    & `: D& X8 J. B+ ^% t
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]9 B% L; w7 k" a1 K" b
  52.   const char *v50; // [esp+A4h] [ebp-58h]
    ( @$ O! O! _+ s# E8 x; M
  53.   const char *v51; // [esp+A8h] [ebp-54h]2 k9 g) n9 H' z
  54.   const char *v52; // [esp+ACh] [ebp-50h]! @! T' U. S1 q
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]8 {% ^2 w! w! L2 a6 e4 s" z
  56.   const char **v54; // [esp+C8h] [ebp-34h]# q8 T! C2 u& F5 R: p% P6 t8 H4 d
  57.   float v55; // [esp+CCh] [ebp-30h]
    - k/ o, Q. h  k& J2 E+ B- u0 H4 }
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]( P- V8 f6 ]3 I, G& f# A" @. s
  59.   float v57; // [esp+D4h] [ebp-28h]
    5 g0 q& u! [+ z& k( P/ A
  60.   float v58; // [esp+D8h] [ebp-24h]
    ) X2 w2 L8 i0 W
  61.   float v59; // [esp+DCh] [ebp-20h]  h/ E/ _. p; e3 i( U
  62.   char v60; // [esp+E0h] [ebp-1Ch]
    # A3 n" @6 E; }
  63.   int v61; // [esp+ECh] [ebp-10h]
    5 W1 g- r6 I+ S3 P* T/ O8 J
  64.   int v62; // [esp+F8h] [ebp-4h]
    - k4 \  y. E1 P# L

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

" Y8 v, B6 c8 Y4 }! S- J用Cheatengin寻找一个字幕之后,在以下地方断下2 q" \, F3 X- V% I9 R8 c
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码
" \7 Z+ s+ |+ @2 M# N9 T6 {; y
+ V9 C7 ~. v, Y% `) L
在ida pro下查看,是这个函数,从代码看a2字符像是索引号。7 |( y4 @( y$ B0 A
稍后需要仔细分析。字幕显示函数应该在本函数上下。- l6 v6 ?: j7 r+ t# e1 _
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码

; Z# J5 o1 v8 `# P2 y. q7 e: P8 n$ @7 M  ], N8 ^1 ]
% ^* S: s# C; A. _- K
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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