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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑 4 @" a6 C" Q- a) {/ L6 Z0 J3 d# g

: E9 f2 W7 R# h  d$ b这个游戏以前分析过,这次再写仔细些,6 f$ l5 Q3 w/ r
CreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。) r! u3 T2 p/ {) w* X
这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。
4 R6 g5 q0 H. B8 G2 p# J) r) T$ C6 y. x: i
  1. .text:0041641A                 push    ecx
    / \* N! A/ r# m+ @( m- k7 z4 C
  2. .text:0041641B                 mov     [esi+90Dh], dl
    ) b3 m% S9 h( a2 k
  3. .text:00416421                 mov     ecx, hWnd( G& W8 p, L4 B* h3 ], L1 T; B6 ?4 _
  4. .text:00416427                 mov     edx, [eax]+ @& d# {+ e. i/ A
  5. .text:00416429                 mov     edx, [edx+40h]( e1 D- B4 f) K- N7 S
  6. .text:0041642C                 push    40h
    5 ]' w+ O! {; w. I' w
  7. .text:0041642E                 push    ecx1 u' s4 j0 ?$ |% L* a
  8. .text:0041642F                 push    1
    5 Z% m& M% J9 q1 b
  9. .text:00416431                 push    ebx: `$ Y9 Q5 F0 {2 F
  10. .text:00416432                 push    eax
    " u- i( B! Q1 w% z
  11. .text:00416433                 call    edx
复制代码
  1.   J4 z) }5 F8 g: w
  2. int __thiscall sub_415FF0(char *this)
    + i! H  F  K: I6 @% z: f$ r" w- f) p
  3. {
    # N) N7 l4 Q! H3 a
  4.   char *v1; // esi0 q8 ?5 t% @( X3 c4 u
  5.   FILE *v2; // eax9 d* r% w- ]' ^# B) x
  6.   IDirect3D9 *v3; // eax
    7 W2 \$ w7 m$ K1 O9 }7 i/ D
  7.   const char *v4; // ecx) g- R5 W- m7 a/ v( e" ]
  8.   const char *v5; // edi1 m5 L/ l' F4 Y; M! [4 _
  9.   const char *v6; // edx1 J! E: T. Y; x1 }, u
  10.   const char *v7; // eax
    / k. `3 z5 l9 m
  11.   FILE *v8; // eax
    ; u4 U- T5 \: H# H8 ?
  12.   signed int v9; // ebp
    / h+ g3 X% t8 b& j) z4 ?
  13.   const char **v10; // eax
    / b) _% U# m+ `% d$ D( r/ W  i
  14.   double v11; // st76 t# y, v) @6 ~: L1 S
  15.   double v12; // st6
    3 x3 ?: q7 D) v# {
  16.   const char *v13; // ecx
    ! r: f3 |% p' ~0 K, l5 d% D
  17.   FILE *v14; // eax
    - {. U4 D% l* f3 H7 B3 e
  18.   unsigned int v15; // eax) Q  q# @! v# [1 ^
  19.   int v16; // ecx
    0 M" K% P: k# [0 X& U5 k2 O
  20.   FILE *v17; // eax
    " ~1 G& T* D" _- W$ G3 W
  21.   int v18; // eax
    ; J2 v( A4 k! D! `8 H  J: c
  22.   bool v19; // zf
    * j2 c2 p! \. h2 O2 z2 A: g
  23.   int v20; // eax
    : T$ a# S8 d2 }
  24.   unsigned int v21; // edx7 x4 Y2 v- }0 c
  25.   bool v22; // sf
    ' D/ d* B. l3 M. `
  26.   int v23; // eax
    ; _) v' i9 A# }9 T! C
  27.   int v24; // eax% a. h/ @8 _0 ^  h+ d4 ^  h! ]
  28.   int v25; // ecx( g, L6 C9 Q' ?( a: n
  29.   int v26; // eax  Y  i) @% g: T+ }# w7 V' z" ^
  30.   int v27; // ecx/ W, q$ S# w7 L( ^9 ^9 n
  31.   const char *v28; // eax( \' x$ m; k+ S* F6 k
  32.   const char *v29; // edx
    4 J* f) Y( X( Y3 U
  33.   FILE *v30; // eax
    ! ~1 k; U( g: F4 a4 s* X
  34.   void *v31; // eax
    5 Z: a" |& A( L0 ~& H8 Y1 N
  35.   double v32; // st7
    ! K! B% Y0 H6 _$ M  K' r6 ~
  36.   _DWORD *v33; // esi
    " P* k" d6 ?5 \# n
  37.   float *v34; // eax) m" r& w- U" h8 y+ B7 o- U0 R* v
  38.   float v35; // ecx5 V) ?9 Z* o' l. W9 T/ U# L
  39.   float v36; // edx; I! [% X* W' G! z# J
  40.   float v37; // ecx
    ( \/ l, K1 h: r
  41.   float v38; // edx
    9 a+ @8 w; E* g$ {2 K
  42.   float v39; // ecx. {- [  _$ v& n. d" ?& k
  43.   float *v40; // eax/ S! m9 ^# x+ X- G1 S$ \2 V
  44.   float v41; // edx
    + F: c! Z- N, f2 O7 }( h6 K
  45.   float v42; // ecx
    0 _  R# F0 E5 W  E
  46.   float v43; // edx
    + h& C2 w4 w/ m3 n& a
  47.   float *v44; // eax/ t! L$ t& H  a' w
  48.   float v45; // ecx
      E& V+ n/ p" C4 u; x8 V
  49.   const char *v47; // ecx1 a; B) e8 b5 {9 Z  A3 c
  50.   const char *v48; // ecx; N: {: Y! ]: Y1 N- h: G
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]8 X$ J" p; d' p- Y# Z( [5 i2 U
  52.   const char *v50; // [esp+A4h] [ebp-58h]9 k* t( {$ z9 z7 w( @: W8 O9 Y
  53.   const char *v51; // [esp+A8h] [ebp-54h]' L/ ?3 x9 V5 _8 Q! N4 y
  54.   const char *v52; // [esp+ACh] [ebp-50h]
      k+ j) {0 m% F1 O' i
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]/ h) ^& X2 h' u+ z" b
  56.   const char **v54; // [esp+C8h] [ebp-34h]
    4 k8 I+ A' h  a& C& w
  57.   float v55; // [esp+CCh] [ebp-30h]( I/ C0 G% _# X- q- }
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]
    ) Q7 ]3 T; o2 O9 q; ^* W; ]
  59.   float v57; // [esp+D4h] [ebp-28h]* i/ J5 ^8 p7 u
  60.   float v58; // [esp+D8h] [ebp-24h]0 Q- k6 G3 p; w! U# q2 R! R2 p
  61.   float v59; // [esp+DCh] [ebp-20h]
    + W8 o4 A0 A+ l( l
  62.   char v60; // [esp+E0h] [ebp-1Ch]
    & t+ d4 V5 z- Z. n, `# n
  63.   int v61; // [esp+ECh] [ebp-10h]
    6 y* l9 l4 e) Y  }6 P
  64.   int v62; // [esp+F8h] [ebp-4h]# x" Y$ h: p6 Z$ [

  65. 9 z. y/ J% v- e) }; g" c4 H1 t
  66.   v1 = this;- ]0 n9 k( s4 x8 s* p: c' W9 r
  67.   v2 = (FILE *)sub_4D7E8F("Initializing graphics...\n");
    - {8 U7 w4 T: p: H
  68.   fprintf(v2 + 1, v52);
    - y3 e: z) Y5 T# M3 m- ^& p
  69.   *((_DWORD *)v1 + 492) = 0;6 ^% Q- R" E6 w) Y
  70.   *((_DWORD *)v1 + 609) = 0;
    ) K. d- [) j. r7 c# K# T1 Y
  71.   *((_DWORD *)v1 + 611) = 0;3 Y0 h; m9 d4 t  N, j- \2 W
  72.   *((_DWORD *)v1 + 610) = 0;  V- F# _2 ?% n2 z  P! v
  73.   *((_DWORD *)v1 + 613) = 0;
    & Y0 Q9 q+ {9 M9 k7 l& B! J3 i/ K
  74.   *((_DWORD *)v1 + 612) = 0;
    " ^7 y, L! {4 d3 x& l
  75.   *((_DWORD *)v1 + 614) = 0;
    . v" p4 [; \0 ]  E) z+ U3 _
  76.   *((_DWORD *)v1 + 601) = 0;
    ! n% O5 y- T) O5 i
  77.   *((_DWORD *)v1 + 600) = 0;1 [3 w) W4 t& q/ L( ?" g
  78.   *((_DWORD *)v1 + 615) = 0;( x  Q4 @! S1 ^5 a+ X/ j; H" q
  79.   *((_DWORD *)v1 + 395) = 0;
      k+ {: H6 z% X( d, R2 b5 o
  80.   *((_DWORD *)v1 + 488) = 0;
    + l- O6 g% D/ [7 P# M4 r" ^
  81.   *((_DWORD *)v1 + 486) = 0;  C( _/ Z1 j& `9 a0 y8 o
  82.   *((_DWORD *)v1 + 487) = 0;: ]7 Q5 V/ N$ z5 u3 Y
  83.   *((_DWORD *)v1 + 489) = 0;
    0 A; o- T4 {1 f- {
  84.   *((_DWORD *)v1 + 491) = 0;8 E3 f4 y: {1 U5 m# _. O1 u
  85.   *((_DWORD *)v1 + 514) = 0;
    8 a: i3 k0 Q" a" G
  86.   *((_DWORD *)v1 + 597) = 0;1 @8 o9 x9 b( p+ ~+ l
  87.   v53 = v1 + 1968;
    * i8 o# \9 F% M, @
  88.   *((_DWORD *)v1 + 498) = 0;, D6 t1 p( {" l0 T8 y  C( m' G
  89.   *((_DWORD *)v1 + 499) = 0;
    9 Q7 j$ r1 ]4 ~: g
  90.   *((_DWORD *)v1 + 500) = 0;
    ( ^3 F" R- N( H/ [; r. @! |4 e
  91.   *((_DWORD *)v1 + 501) = 0;
    7 b: F# `/ e( A, }- X5 S
  92.   *((_DWORD *)v1 + 502) = 0;4 U% V( s- o7 q( L# M# @
  93.   v52 = (const char *)32;
    3 _8 y6 J! m+ W; [; ^, o: K: k
  94.   *((_DWORD *)v1 + 578) = 0;
    6 a# P; o/ N# D  }
  95.   v1[2316] = 1;
      _- v! O5 x8 g8 K6 y
  96.   v1[2476] = 0;
    6 T' W! }; K& C. {, w. W, Z) ~
  97.   v3 = Direct3DCreate9((UINT)v52);
    7 t. l# r9 @) b' l0 _, j
  98.   *((_DWORD *)v1 + 384) = v3;
    7 D8 p8 K2 y' V2 `4 W
  99.   if ( !v3 )
    0 N) E/ k! O& j1 r% `1 @
  100.   {/ i* y- a% ~" {& o8 G' F" r
  101.     v5 = v56;( m# w) P' f+ k" _! E1 G
  102.     goto LABEL_27;
    / S5 O: s/ v1 A: i2 F& v2 E, r
  103.   }
    $ L1 h) W0 a' I$ o5 `" E
  104.   v5 = (const char *)v3->lpVtbl->GetAdapterDisplayMode(v3, 0, (D3DDISPLAYMODE *)&v60);% f8 R; b4 `5 n
  105.   if ( (signed int)v5 < 0 )
    % A8 K) ^$ W$ l  E9 p3 ]" h  F8 p5 v; H
  106.     goto LABEL_27;! q9 k1 z, I4 ~5 z, R% {! Z* ?
  107.   (*(void (__stdcall **)(_DWORD, _DWORD, signed int, char *))(**((_DWORD **)v1 + 384) + 56))(
    * A  ]9 C# c2 S
  108.     *((_DWORD *)v1 + 384),
    ( Z# X5 i5 X% w4 ]. B
  109.     0,
    & f6 m# V! E1 t% D1 t
  110.     1,
    & p% c6 v5 l, ~. ~3 m1 P
  111.     v1 + 1640);
    1 F- S( z# B8 C; k9 _* R( M9 A
  112.   memset(v1 + 1584, 0, 0x38u);
    + t- _' V0 q; w9 a3 K# M
  113.   *((_DWORD *)v1 + 404) = 0;6 n' X/ C3 O" m
  114.   *((_DWORD *)v1 + 402) = 1;
    $ Z6 F* E0 _# O' W! U4 O. N
  115.   *((_DWORD *)v1 + 403) = hWnd;
    ! X! T* I* _& A. d( n4 w$ j* W
  116.   *((_DWORD *)v1 + 407) = 0;
    : ?* m2 Q: `. @$ g8 g' H
  117.   *((_DWORD *)v1 + 399) = 1;
    + N. k; K  f$ ~( S: @2 q
  118.   *((_DWORD *)v1 + 398) = 21;
    % t( p2 _& G& w/ t8 F9 Y2 l
  119.   *((_DWORD *)v1 + 405) = 0;
    - V, H1 x4 \8 N/ J  C$ @
  120.   *((_DWORD *)v1 + 522) = (unsigned __int16)word_558176;) R" m* q/ v2 I7 w/ l( W( F
  121.   v6 = (const char *)word_558174;
    ) S  @# ?; X* `2 P% B6 `- ^; L
  122.   *((_DWORD *)v1 + 523) = word_558174;
    ) Y. n/ w; V& X9 w) N
  123.   v7 = (const char *)*((_DWORD *)v1 + 522);) }- `5 E' m" [
  124.   v52 = v6;
    ; |( F3 ?: f0 `0 n9 z; U$ }
  125.   v51 = v7;, V8 P3 h9 Q) o! \, \" c! o
  126.   v50 = "Screen resolution is %d x %d.\n";# f5 [0 u0 u9 C- t  U5 a( }
  127.   v1[2076] = *(_DWORD *)&word_558174 == 67109632;, R, V+ k. ^  ~8 K7 }$ Z/ M- d
  128.   v8 = (FILE *)sub_4D7E8F(v50);
    ( l" |- C1 F8 U7 Z; Z
  129.   fprintf(v8 + 1, v50);
      p0 l1 K2 X2 y* j; i. s
  130.   v9 = *((_DWORD *)v1 + 522);
    # d) s" ]$ J4 w5 B) ?6 L
  131.   v54 = (const char **)*((_DWORD *)v1 + 523);
    ! u! I; w  X+ y+ x
  132.   v10 = v54;
    ' e7 _# c! d; I
  133.   *((_DWORD *)v1 + 396) = v9;
    , t* {0 t9 @9 ?' u
  134.   *((_DWORD *)v1 + 397) = v10;
    ( x- v+ g6 V) N5 d" M
  135.   v55 = (double)v9 * 0.0009765625;
    7 v) ]( k8 B  l1 H7 P
  136.   v11 = v55;8 W1 j% _1 i2 ~4 q4 j0 f; \, R# V
  137.   *((float *)v1 + 520) = v55;$ R$ U0 R6 y9 I! l1 M5 E! N
  138.   v55 = (double)(signed int)v54 / 768.0;7 X4 x; ~( C3 ^9 G* V
  139.   v12 = v55;9 M/ d1 @. c8 W+ Q# R6 N
  140.   *((float *)v1 + 521) = v55;5 k2 A0 W; ]1 o7 z
  141.   *((_DWORD *)v1 + 524) = (signed int)(v11 * 1024.0);
    ! H( p. r" D9 U
  142.   v52 = (const char *)1;/ e- z6 O; p8 q8 n
  143.   v51 = (const char *)(v54 + 11);, \  \2 b1 f9 j7 I6 U5 l$ j- K
  144.   v50 = (const char *)(v9 + 6);* r- T; G5 w7 u+ @( u) C. q
  145.   *((_DWORD *)v1 + 525) = (signed int)(v12 * 512.0);" b3 U$ w/ g' v& D8 X  I
  146.   *((_DWORD *)v1 + 515) = 0;! h3 Z" O9 z9 ^* U
  147.   *((_DWORD *)v1 + 517) = 1024;; ]. f* Q; `% q. |8 C/ r- P
  148.   *((_DWORD *)v1 + 516) = 128;
    + s0 t* g6 H+ L7 x$ X- W
  149.   *((_DWORD *)v1 + 518) = 640;5 u" R9 B, Q, {5 Q, N' `
  150.   MoveWindow(hWnd, 0, 0, (int)v50, (int)v51, (BOOL)v52);$ b* v7 w6 |  \  T9 F1 z
  151.   if ( (*(int (__stdcall **)(_DWORD, _DWORD, signed int, int, signed int, signed int))(**((_DWORD **)v1 + 384) + 48))(. u, `, ^- H/ X6 a/ f$ c( U0 P
  152.          *((_DWORD *)v1 + 384),
    6 y( v8 S1 s1 S
  153.          0,
    ! ]! x# E# t/ w# w# H9 s
  154.          1,
    : X7 _, o% |! p- k0 I+ d- w+ v( G
  155.          v61,9 R2 e4 T" p& N. |( k" ]$ U& y+ ^
  156.          21,5 Q6 p" P( s" U
  157.          75) < 0 )! H% j- X2 ?# I3 V
  158.   {4 Q1 S1 V3 H& g# ^) N$ m
  159.     v52 = v5;
    0 {/ t9 H& h6 W
  160.     v51 = v13;
    $ R# R1 ~5 @7 I( i5 }$ ~! v
  161.     v55 = COERCE_FLOAT(&v51);
    . t" J0 G' b- m
  162.     sub_456DD0("Direct3D initialization failed. No appropriate Depth/Stencil-Buffer-Format found.");+ }% p* T# R3 n+ u) i* B
  163.     v50 = v47;
    % x+ J! V) J/ T  F5 d
  164.     v54 = &v50;
      j: w8 A. Q! Z6 I# e* P
  165.     v62 = 0;7 d7 N3 u( `6 \
  166.     sub_456DD0("cCougarGraphics::cCougarGraphics");! ^! j0 t+ E. C1 W" @
  167.     v49 = 118;
    " w+ h! Y$ e. \
  168.     goto LABEL_28;
    , I$ S! z( @7 Z8 [- n
  169.   }+ P3 |5 x+ q; E# i# Y
  170.   v52 = "Depth/Stencil Buffer is D24S8.\n";" i, b) J" s9 ~0 X, D- B9 V, p7 p
  171.   *((_DWORD *)v1 + 576) = 24;
    " J% J8 z! m+ h/ g% P
  172.   *((_DWORD *)v1 + 577) = 8;
    ) Y8 M+ @7 q; t5 l8 l2 L+ [. P" A
  173.   *((_DWORD *)v1 + 406) = 75;
    3 f7 K! t2 g! n* Q( \- j
  174.   v14 = (FILE *)sub_4D7E8F(v52);+ S# ]( G( z3 ]1 y4 z. ]
  175.   fprintf(v14 + 1, v52);
    6 ?9 Q5 k9 y# J: V4 H7 e4 O, f% b
  176.   *((_DWORD *)v1 + 409) = 1;
    ( B4 A2 ]" [* Q; M9 A
  177.   if ( dword_558178 != 4& x/ C6 U& W# \* l
  178.     || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)
    1 F8 p# J+ t, f# H: s
  179.                                                                                                 + 44))(# J# D% O9 k! i: w
  180.          *((_DWORD *)v1 + 384),
    6 {1 n1 l. y( E( P/ @2 a7 R& G
  181.          0,
    / m$ M4 ?, H5 a. S; z
  182.          1,
    - R9 [* ?# {* r! N( X: ~# z9 o$ o
  183.          21," p2 `, `3 l9 z4 l( a
  184.          *((_DWORD *)v1 + 404),* Q$ g; _. x; Z) J
  185.          4,
    6 s6 ~) d  K% @7 n  E1 x" ]
  186.          0) )
    + a- g9 `3 C& D9 J# C6 G; O/ H
  187.   {, M4 c& X7 f- @1 b3 `8 P
  188.     if ( dword_558178 != 2
    ' ~8 I) d1 C" R1 A: L
  189.       || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)
    / ^- B, k, V0 L- t9 P0 Y( Q
  190.                                                                                                   + 44))(0 m- x3 W: T9 a% t' C( x6 w  e
  191.            *((_DWORD *)v1 + 384),
    $ m+ j, ^- a0 H
  192.            0,
    4 \$ C$ k) Y+ S
  193.            1,
    + h' C1 ?3 T7 a& E
  194.            21,7 h2 T2 n- a! l% R" Q3 r7 N, [. e5 `
  195.            *((_DWORD *)v1 + 404),
    , \& g' n3 a, c% g) J6 l' J1 q
  196.            2,. R" [* W# t& _' O2 u
  197.            0) ); o7 N, \4 E7 {
  198.     {# L$ s. ]( I- r: j4 Y
  199.       if ( (unsigned int)dword_558178 > 0
    7 C) A1 [# ~( g0 {4 v# A
  200.         && !(*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, const char **))(**((_DWORD **)v1 + 384) + 44))(
    * c4 n. P5 r/ E2 {% j
  201.               *((_DWORD *)v1 + 384),
    0 R* ~* L) g+ d2 @. Y
  202.               0,
      Z! L2 Q/ G/ S" X  `; v5 W& t
  203.               1,2 `1 `0 _8 P7 |! X
  204.               21,6 N3 t& U* i1 x) J( p
  205.               *((_DWORD *)v1 + 404),. q/ w/ N) \9 u& R( D( N! @7 ^% c
  206.               1,  j- r: E& t5 |" w( K
  207.               &v56) )4 Z' r' ?; B# \$ h9 m0 z, E; r
  208.       {
    $ O, I' |) y  y1 V6 L
  209.         v15 = (unsigned int)v56;
    3 g( W& E8 E7 L% [; W; U
  210.         *((_DWORD *)v1 + 400) = 1;- T8 G  x6 D" [% z5 t( V
  211.         v16 = dword_558178;. U4 T: y% \& f/ n) Z/ a
  212.         if ( dword_558178 >= v15 )% W- O5 C0 N& Z2 D
  213.           v16 = v15;
      [2 _( y3 V4 c2 Y: ~4 C" s
  214.         *((_DWORD *)v1 + 401) = v16 - 1;7 m% g, H1 Q5 C* @0 S2 G/ `
  215.         if ( dword_558178 < v15 )
    ; K. |: [' u8 Z' C7 r) v* f
  216.           v15 = dword_558178;
    ! |4 M* Z3 G9 v
  217.         *((_DWORD *)v1 + 578) = v15;) L2 k3 H3 A' W( G8 w0 H
  218.       }& ]1 D! r& |1 a# u2 I: n8 ]
  219.     }
    2 K1 m% [+ c$ o) D1 W6 S6 x0 i9 {
  220.     else* B$ `. L* ~4 e% R1 G
  221.     {! I! H6 b- e  K" _: U( j
  222.       *((_DWORD *)v1 + 400) = 2;
    : I5 F- w+ A" h# H0 L
  223.       *((_DWORD *)v1 + 578) = 2;
    - y1 b1 a, K- F+ M4 X6 w
  224.     }
    3 }/ C0 X/ \3 A' a8 x1 W0 K6 f
  225.   }4 @3 u( ^* O0 [: S
  226.   else* C7 u0 q6 Z, ^$ n
  227.   {
    5 }$ [5 w5 Z, a- }* F
  228.     *((_DWORD *)v1 + 400) = 4;9 n6 w* y8 f5 M" q
  229.     *((_DWORD *)v1 + 578) = 4;
      _* y- P2 _- d# c* O- `! s- a
  230.   }7 U) K( p6 v/ `( h
  231.   v52 = (const char *)*((_DWORD *)v1 + 578);+ A8 n/ Y5 Y* ~8 p! w% C: {  _
  232.   v17 = (FILE *)sub_4D7E8F("AntiAliasing is %d.\n");
    6 z" o! ], V" V
  233.   fprintf(v17 + 1, v51);
    " Z9 B& e3 t9 D9 z
  234.   v18 = *((_DWORD *)v1 + 384);4 I. M8 [- L" x! }4 }3 r8 S
  235.   v19 = *((_DWORD *)v1 + 578) == 0;
    6 F8 j# u+ k' x% K, Y5 ^
  236.   v52 = (const char *)827611204;
    . ?& n, t* w! q$ F) ?. R% K6 r( W
  237.   v51 = (const char *)3;8 |; g, v1 I: J+ [+ S
  238.   v50 = 0;) Q& e- f; |0 L! r* p# j
  239.   *((_DWORD *)v1 + 402) = 2 * v19 + 1;
    * X: v' l; e6 P/ F: i
  240.   v20 = (*(int (__stdcall **)(int, _DWORD, signed int, int, const char *, const char *, const char *))(*(_DWORD *)v18 + 40))(
    5 t$ ]3 z  ~* a6 M, J0 D
  241.           v18,' ?; A) ^: G# I2 `. Z: i* C/ i4 |2 t
  242.           0,5 j* E/ m& |/ u! b' U8 a& p
  243.           1,2 `7 ]' Z& L8 f0 D
  244.           v61,
    & @3 S4 n) A4 M$ J9 a- i
  245.           v50,
    , U& }$ ]  ^9 [( E# X7 f
  246.           v51," p- [& ]6 ]3 |. h; `0 ?3 a
  247.           v52);" j' ?8 Z4 n' y& @( S! x
  248.   v21 = *((_DWORD *)v1 + 425);$ K( m" ?  N8 f
  249.   v22 = v20 < 0;% L) M" G9 ?$ U
  250.   v23 = *((_DWORD *)v1 + 384);
    8 G+ A* L  |* G/ }. u
  251.   v1[2316] = !v22;
    , Q" T2 f9 t0 z8 w/ Y  m
  252.   v52 = v1 + 1540;
    1 p* n3 Q# E  c0 @5 o" w8 b
  253.   v51 = v1 + 1584;: S$ ^* n+ V$ r, E6 J; s3 ~
  254.   v1[2317] = (v21 >> 14) & 1;: X+ K: g. D. F! j
  255.   v5 = (const char *)(*(int (__stdcall **)(int, _DWORD, signed int, HWND, signed int, const char *, const char *))(*(_DWORD *)v23 + 64))(
    2 q3 x, z9 R5 S0 ~& u: J
  256.                        v23,
    1 D( }- P0 {" ^( M3 B+ [
  257.                        0,
    % l2 O2 f/ @) J/ e- Q6 c+ |
  258.                        1,- z- e9 ~0 [. x9 y# |2 t6 y
  259.                        hWnd," i) ^/ t6 B+ `+ n7 R
  260.                        64,
    2 X2 M2 D2 m2 N% E0 i
  261.                        v51,
    $ n! X+ @) |- ~& P3 V+ p
  262.                        v52);+ _8 n7 Y0 B+ D
  263.   if ( (signed int)v5 < 0 ). V9 G  l) m! B+ c) i' @8 j7 `
  264.     goto LABEL_27;
    $ h) \' C- J* q
  265.   if ( dword_558180 && ((v24 = *((_DWORD *)v1 + 425), v24 & 2) || v24 & 0x100) )3 y0 d. a' m- v$ v# C% l
  266.   {, H9 f  ~; p$ ]
  267.     v25 = *((_DWORD *)v1 + 609);
    8 v. W5 ~- L8 {4 p* U) i/ K; i
  268.     v26 = sub_418670(*((_DWORD *)v1 + 522));! p$ b$ _9 K4 z* b7 \! V4 V2 `
  269.     v52 = (const char *)*((_DWORD *)v1 + 523);7 ^$ F' c; ~) K) w3 f
  270.     v27 = *((_DWORD *)v1 + 609);
    : j# S7 p- B# U& C+ O" f9 K+ \6 F$ w
  271.     *((_DWORD *)v1 + 496) = v26;
    ; m$ t7 N  ^  w3 R
  272.     v28 = (const char *)sub_418670(v52);" M0 P8 @- l; T- C( M
  273.   }- a" b: |- F. [- X) d) i& \9 f
  274.   else; ?: D% f2 a( X9 p2 r# C9 ~$ Z
  275.   {9 v5 c$ M7 @: S( ~2 N3 R8 L
  276.     v28 = (const char *)*((_DWORD *)v1 + 523);/ L+ U7 n' `3 N6 b. @
  277.     *((_DWORD *)v1 + 496) = *((_DWORD *)v1 + 522);5 k) _; G9 v8 {$ `" X& c" M
  278.   }
    " b6 P6 c( L% S/ P1 Q8 e
  279.   v29 = (const char *)*((_DWORD *)v1 + 496);
    9 E4 c. ?1 v+ r! b& F
  280.   v52 = v28;
    2 Q+ X, x5 a0 W# n; I6 B7 L' o& j
  281.   v51 = v29;$ h! h' x* N; O" }+ }9 \3 O
  282.   v50 = "PostProcess Surface is %d x %d.\n";4 b  B% G+ A$ {, t4 G0 S( H
  283.   *((_DWORD *)v1 + 497) = v28;
    4 ]  z5 n3 W* @9 x0 q8 P
  284.   v30 = (FILE *)sub_4D7E8F(v50);
    9 j* ^+ s. F# Y8 t6 c, k
  285.   fprintf(v30 + 1, v50);
    5 b$ d2 ~! n* d& R( X9 _; t
  286.   (*(void (__stdcall **)(_DWORD, _DWORD, char *))(**((_DWORD **)v1 + 385) + 88))(*((_DWORD *)v1 + 385), 0, v1);% L! s9 Z; W1 h6 g
  287.   sub_413100(v1);
    1 y5 W" t$ Q+ F, R& C2 `
  288.   sub_411D60(v1);% z9 F; Q( i$ j
  289.   v31 = malloc(0x78u);
    % n& i! c9 S, R# n
  290.   v32 = -0.5 / (double)*((signed int *)v1 + 522);( _  F* @! k7 M) T3 t, y
  291.   *((_DWORD *)v1 + 599) = v31;: G; c% P1 I; ?1 X1 I$ c
  292.   *((_DWORD *)v1 + 600) = 0;
    ! \# D! ]/ @  x7 i. I$ B
  293.   *((float *)v1 + 526) = v32;+ H8 y, P# l+ \6 e
  294.   *((float *)v1 + 527) = -0.5 / (double)*((signed int *)v1 + 523);
    7 S7 e6 C3 e/ k" W0 x3 X6 N3 S0 b
  295.   sub_411CC0(v1);
    0 c% [) Y/ N3 K4 b" X+ Q
  296.   v33 = v53;1 e' c$ R. _1 a* C
  297.   v5 = (const char *)(*(int (__stdcall **)(int, signed int, signed int, signed int, signed int, _DWORD *, _DWORD))(*(_DWORD *)dword_559B7C + 104))($ l- n! b' D5 H6 y6 b5 d, v! [) o5 g
  298.                        dword_559B7C,7 D' I+ k  s( l. B
  299.                        80,
    0 t3 M$ s) w6 n) N: v2 M8 S
  300.                        8,
    ! u9 O& b; V) l# j4 h
  301.                        258,9 y2 v& k3 s  E) J' q
  302.                        1,
    2 b% j+ m0 Z2 l$ T$ j1 i
  303.                        v53,
    : m& V& k  h9 V* n( y% d( R
  304.                        0);, _( Z7 J6 |3 x- V+ c
  305.   if ( (signed int)v5 < 0 )+ |7 h+ X& @; V# Z
  306.   {
    ! z5 Q7 S2 m" @. Y* z4 R0 Y
  307. LABEL_27:! p/ C' V9 f: q0 [% l+ Q, y3 ?
  308.     v52 = v5;
    0 e' I' J( N- e( d2 |
  309.     v51 = v4;- I) G4 D/ s! F
  310.     v55 = COERCE_FLOAT(&v51);+ }6 ^) Q; Q( ^1 A4 O! p2 C
  311.     sub_456DD0("Direct3D initialization failed.");
    # \/ @& J+ Y9 U! ]6 A$ Z1 ^
  312.     v50 = v48;. M2 z( C$ i; O/ y' k  _# ?1 X: ?8 ?/ o
  313.     v54 = &v50;
    ' M  ]3 C/ x3 Q/ i: Q9 g
  314.     v62 = 1;
    5 S7 a1 H, w4 i, `
  315.     sub_456DD0("cCougarGraphics::cCougarGraphics");
    : \1 a; u( N' A
  316.     v49 = 205;4 O8 U; T* `: i9 Y, E& Y
  317. LABEL_28:% \5 t2 G# l; s: p% f6 n: u
  318.     v62 = -1;
    + z$ U. }9 X0 C
  319.     sub_40CB30(1, ".\\source\\class_graphics.cpp", v49, (char)v50, (char)v51, v52);
    ) O9 ?& |  m: \- z- Z
  320.   }4 b* h6 t& P# l; n+ L5 ?
  321.   (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD **, _DWORD))(*(_DWORD *)*v53 + 44))(*v53, 0, 0, &v53, 0);
    0 T6 d5 k" h+ \
  322.   v58 = -1.0;" }( h1 r7 U6 t) F" ^2 J8 P# U
  323.   *(float *)v53 = -1.0;
    2 v9 H( R2 A9 u# q
  324.   v59 = 1.0;0 Z! q9 d" Y5 J1 Z' [3 h% s
  325.   *((float *)v53 + 1) = v58;
    4 e/ |8 k( ~) W+ H! W* @
  326.   v57 = -1.0;
    0 s  G( t: [4 P) I0 s' Y
  327.   v58 = 1.0;2 ]1 H: o4 @0 _  Y
  328.   *((float *)v53 + 2) = v59;
    * L+ D- f" @7 _" K2 A* r# B
  329.   v59 = 1.0;; L/ e" A* R; N0 G! i
  330.   v34 = (float *)v53;4 W( R+ f/ a! m! m
  331.   v35 = v57;$ D; w1 ~# i/ ~' X  |
  332.   v57 = 1.0;
    4 z2 a* q* J# t+ Z0 q
  333.   v36 = v58;
    ! {- w* ?3 t$ z
  334.   *((float *)v53 + 5) = v35;
    5 l: W1 H+ f6 b9 S- s; g+ ?1 h
  335.   v37 = v59;1 c5 {4 W; X+ S! t) {* T
  336.   v59 = 1.0;
    " M, w0 `6 p) Q8 u8 v" A) x
  337.   v34[6] = v36;
    . O2 g# I! j0 K  t* m1 T
  338.   v38 = v57;
    + B- a& S0 N, D3 y9 b" Z5 |/ P; k% T
  339.   v58 = -1.0;
    + i' B$ b0 `/ G8 N) ^* V! u4 i" Y
  340.   v34[7] = v37;
    : |1 `3 y6 W8 B1 s3 r$ G3 F
  341.   v39 = v58;* z+ l  {) z. W1 ]& {6 i; u, c
  342.   v57 = 1.0;
    + H2 ~4 B: H, C9 l0 ^
  343.   v58 = 1.0;" i( k  G! R5 g; g; q& x! T
  344.   v40 = (float *)v53;1 Q, O. g# I3 J% X
  345.   *((float *)v53 + 10) = v38;3 e! U9 W% X# P, l* m& \' J6 G
  346.   v41 = v59;3 |5 e% Y; @  V7 O
  347.   v59 = 1.0;
    7 n  Z' t) W6 }; A" U
  348.   v40[11] = v39;
    / }6 U7 L; g' _9 Y
  349.   v42 = v57;
    ! t9 I' P; {: ], {
  350.   v40[12] = v41;
      B" ]& K6 D; X# N: p  b7 c) P
  351.   v43 = v58;
    + y( }% Z9 D% J0 w
  352.   v44 = (float *)v53;1 J; w+ a$ |. [9 z9 U
  353.   *((float *)v53 + 15) = v42;" o$ f( g" z3 w' i- m: ~
  354.   v45 = v59;2 J) n; \/ z# ^1 [
  355.   v44[16] = v43;4 [3 w/ C3 l  Z, f: C9 I9 W
  356.   v44[17] = v45;. V' r3 M( u' W7 A( R" B4 R! {0 t
  357.   *((float *)v53 + 3) = 0.000099999997;
      U8 `9 D! t  a
  358.   *((float *)v53 + 4) = 1.0001;7 z! v2 I- m4 R8 E" p6 L- L
  359.   *((float *)v53 + 8) = 0.000099999997;5 ^8 n/ h9 v; E$ R. [4 a% L4 ]
  360.   *((float *)v53 + 9) = 0.000099999997;+ e: ]% U7 R  K4 @5 G. r
  361.   *((float *)v53 + 13) = 1.0001;0 `0 L! N( |( M9 j5 w% @. n- ?
  362.   *((float *)v53 + 14) = 1.0001;
    4 i1 p2 V" H# v/ K
  363.   *((float *)v53 + 18) = 1.0001;
    4 F+ m+ q1 L9 S; U3 u
  364.   *((float *)v53 + 19) = 0.000099999997;
    + g6 y) f3 N# l% F  g* l1 \
  365.   (*(void (__stdcall **)(_DWORD))(*(_DWORD *)*v33 + 48))(*v33);  W7 p8 c8 j$ r2 G
  366.   return 0;5 C0 k+ S. B6 V; ?: [4 h. o1 T
  367. }
复制代码
3 a& y+ j1 x3 \3 r% r; x* w- u
用Cheatengin寻找一个字幕之后,在以下地方断下$ ~2 k3 T* _. c& i: U+ ]7 P
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码

# j4 V8 U3 _+ j$ p: Q, L5 h6 O! ]; r3 l/ ]2 B* X0 V2 q
在ida pro下查看,是这个函数,从代码看a2字符像是索引号。
! ]0 _) D5 ]6 ]6 G9 L& r稍后需要仔细分析。字幕显示函数应该在本函数上下。
5 }+ U7 ~' h6 V3 d5 Z
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码
& }6 @9 \0 D) n+ v- M

4 S; i. E( L" R
& r$ D3 L' i; T
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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