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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑
6 x' C0 \4 ~2 m/ ?9 [$ M# O+ L& ^  @  V- h) A# S% r
这个游戏以前分析过,这次再写仔细些,
$ ]5 z3 B6 _; z5 Y2 ?' hCreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。
+ |9 J7 M% f$ w% T: y5 r! B: a这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。
  C1 S" A& h, y
) S$ y+ \. Q/ ^6 J9 t
  1. .text:0041641A                 push    ecx
    : X) P! _& _9 ^% N9 @$ q, F
  2. .text:0041641B                 mov     [esi+90Dh], dl$ w% B% [; a; s/ z
  3. .text:00416421                 mov     ecx, hWnd5 j* D' k! p2 e- X: H5 ~; m9 ^
  4. .text:00416427                 mov     edx, [eax]
    ; `( b- E# ]5 X
  5. .text:00416429                 mov     edx, [edx+40h]
      T. d4 }1 U0 p# \
  6. .text:0041642C                 push    40h
    % f8 `8 @' ^' o1 S( ?9 c
  7. .text:0041642E                 push    ecx* c+ G  r: V0 o/ o# I+ N$ ~+ K: Z
  8. .text:0041642F                 push    1
      g% R; ?4 l! {* w. c* u
  9. .text:00416431                 push    ebx
    % \: L4 ~" y/ E2 U+ w* G, l  [% r
  10. .text:00416432                 push    eax
    + p# P9 I, z( @* a
  11. .text:00416433                 call    edx
复制代码
  1. ( g6 _* m8 A' z
  2. int __thiscall sub_415FF0(char *this), N/ q5 W  Z# M* D: ]$ j
  3. {/ V$ S* k: N: O3 q/ k% z/ o
  4.   char *v1; // esi, ~7 t5 M, S# N) m
  5.   FILE *v2; // eax$ x! E: L9 a- |7 s- O. Q
  6.   IDirect3D9 *v3; // eax
    0 i, v+ \3 U" ]: s' [6 Z
  7.   const char *v4; // ecx
    6 ~- ^8 D- M3 w1 U, D3 t
  8.   const char *v5; // edi( q8 O0 F, n9 S- B( D% z
  9.   const char *v6; // edx: Z* G* m3 F, `# L1 b
  10.   const char *v7; // eax/ ?/ M  j; e/ R' N2 M
  11.   FILE *v8; // eax
    & s/ A$ T! W( |6 `
  12.   signed int v9; // ebp
    3 n# ^* i! z- [# }
  13.   const char **v10; // eax2 O, }5 y! ^4 X9 B; I
  14.   double v11; // st7
    ! q7 K- B% I' t7 Z8 |7 M( q
  15.   double v12; // st6
    7 ^. ]% x1 K$ r' V  `+ a0 K
  16.   const char *v13; // ecx
      e$ z4 Y! x: |$ H0 a
  17.   FILE *v14; // eax" g, Y& a' i9 u- l, k. J+ `; C
  18.   unsigned int v15; // eax% U$ @0 f2 @9 G8 ]& g! i" D
  19.   int v16; // ecx1 H  h" i$ y7 V2 J+ K% K
  20.   FILE *v17; // eax% n$ j+ b; g0 B  a8 S
  21.   int v18; // eax5 g5 C1 }4 F- h, Z$ V8 X" W0 [  q
  22.   bool v19; // zf9 e* ]  |( O# u- ]# J2 ^* z6 x' H
  23.   int v20; // eax
    % R& t- @" T# D% j. ?( e
  24.   unsigned int v21; // edx, N& T( d# O  A3 @
  25.   bool v22; // sf$ [. I2 H! ~% o& A" e" W& D
  26.   int v23; // eax7 J, F/ b9 u7 n, ]3 M
  27.   int v24; // eax
    , G: U) L+ V* K3 j5 k2 X
  28.   int v25; // ecx# J- u1 ]) W$ o. v; c/ |9 m& d
  29.   int v26; // eax
    1 S. s; S. n5 m1 ^
  30.   int v27; // ecx3 D. M1 r/ M4 Z( U. O( f* ?
  31.   const char *v28; // eax
    . s: |# R( K% a  A! g& u+ H
  32.   const char *v29; // edx- \, y% [' ^& }* e1 I+ T+ y
  33.   FILE *v30; // eax( {/ i$ n; c9 g
  34.   void *v31; // eax
    5 c- J8 U5 p; O& x+ @( v
  35.   double v32; // st7
    9 ]4 H' a8 _) e+ d7 H* @3 Z
  36.   _DWORD *v33; // esi+ a+ E/ ~  e( _& ~! _
  37.   float *v34; // eax1 p3 m& j& R, m9 J( A( ^
  38.   float v35; // ecx+ x; r7 d. z! d$ p9 B) G! t# S
  39.   float v36; // edx
    ( s9 y3 N) L5 k8 ?, g& f& B9 m
  40.   float v37; // ecx
    $ u& o+ H  o" Y7 Y3 O1 D
  41.   float v38; // edx- r# T$ i- b& Q$ R( i+ X
  42.   float v39; // ecx7 `9 w8 o" J; G4 B9 v6 h) C' a
  43.   float *v40; // eax
    1 S5 x/ P' P) E. f0 z8 T
  44.   float v41; // edx6 [/ V5 |0 X6 O$ E5 ^% n
  45.   float v42; // ecx0 p. j' T- a1 W" B) \( g# Q
  46.   float v43; // edx# J% r. A: A! h, U+ ^4 f
  47.   float *v44; // eax
    7 D, _5 m, V) r, _- g4 w6 O6 m( s
  48.   float v45; // ecx9 h" J/ _. ~( p" i
  49.   const char *v47; // ecx
    % p4 S% d' ?: y5 J6 l
  50.   const char *v48; // ecx8 E! ~, L; z' t/ V# \
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]
      s+ X7 ?6 P/ {( P2 Y# U
  52.   const char *v50; // [esp+A4h] [ebp-58h]
    ! t4 e6 {/ m7 D- V0 E
  53.   const char *v51; // [esp+A8h] [ebp-54h]! H- f# q$ p4 A3 L4 q
  54.   const char *v52; // [esp+ACh] [ebp-50h]: A& X/ g# \  W5 v2 [6 ]
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]+ k+ U. N' N% v) ~. F* J% V
  56.   const char **v54; // [esp+C8h] [ebp-34h]5 S3 ~% K6 X* u7 c: ^
  57.   float v55; // [esp+CCh] [ebp-30h]. Y2 ~  U; U0 p& b
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]
    ( ~5 Y2 X" k+ @
  59.   float v57; // [esp+D4h] [ebp-28h]8 Z# U  j2 F% r6 u1 l9 f
  60.   float v58; // [esp+D8h] [ebp-24h]
    % R3 A; I. Y8 L3 U
  61.   float v59; // [esp+DCh] [ebp-20h]
    5 u8 r8 R: n5 ^0 n/ K
  62.   char v60; // [esp+E0h] [ebp-1Ch]
    : i8 y' S/ x# M2 l6 `2 I
  63.   int v61; // [esp+ECh] [ebp-10h]
    $ o* k* e  [9 z) w* O
  64.   int v62; // [esp+F8h] [ebp-4h]
    : `: n* M2 l: K3 ]" R: b" c

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

. l5 |) J" b' g. B用Cheatengin寻找一个字幕之后,在以下地方断下. Z9 Q  u' O- u
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码
$ u. u$ J8 z4 w9 X3 B& q$ |8 N

. C# Z6 g2 Y  k$ ?在ida pro下查看,是这个函数,从代码看a2字符像是索引号。# d$ ~, z" R- i9 B4 r3 @
稍后需要仔细分析。字幕显示函数应该在本函数上下。( k& t$ Q1 Z! m. E- O! s+ {* T7 I) g
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码
% j- q# \+ r, N4 ?# h5 x
6 I/ r8 d) ]* p0 Y! K8 t3 l7 X
- F- ?+ g6 _+ @
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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