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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑 ) Y" x, I/ ^& G* S8 {

6 X7 m$ q+ D) t" h! D" @这个游戏以前分析过,这次再写仔细些,6 Q/ x8 M# s8 F* j/ D
CreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。
4 ]4 w$ z& G# }- N( V$ b2 q  R这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。
, f( M0 z4 @+ i4 }( T$ g+ Y. W1 @
7 u3 d) H0 ]' s# R
  1. .text:0041641A                 push    ecx. F$ d' y, i+ Q% |1 d5 T' _
  2. .text:0041641B                 mov     [esi+90Dh], dl
    9 Z) S& t: C9 ^
  3. .text:00416421                 mov     ecx, hWnd; a+ Q- g6 |9 Z! c: ^
  4. .text:00416427                 mov     edx, [eax]
    ; r& ?3 i: |( ], |
  5. .text:00416429                 mov     edx, [edx+40h]
    / c! h; k6 V* S+ i2 C
  6. .text:0041642C                 push    40h
    4 _  B* k" w  d+ m
  7. .text:0041642E                 push    ecx( P- U% I5 C5 }% j7 H6 ~1 i' Z
  8. .text:0041642F                 push    1+ h6 w8 q- F" S- {2 @" Q
  9. .text:00416431                 push    ebx( D2 m- y1 L* M4 D& V/ f! J
  10. .text:00416432                 push    eax
    3 P! o1 b2 l/ K6 P
  11. .text:00416433                 call    edx
复制代码
  1. . }7 L( E4 r& i/ L( `$ i8 |9 b+ V! W
  2. int __thiscall sub_415FF0(char *this)+ X% [$ a( d- y4 j' P* _# N
  3. {. O: v# d$ u! n, c7 K; G
  4.   char *v1; // esi
    ; Y+ G5 U  _7 m' ?, j, {7 d
  5.   FILE *v2; // eax3 v/ T( w- S% A$ M+ i7 I
  6.   IDirect3D9 *v3; // eax" N% G2 x6 _: D9 C3 A
  7.   const char *v4; // ecx% {6 F) E  s5 K
  8.   const char *v5; // edi
    8 z! p+ A  u- O8 ^) u' G' `( t- K
  9.   const char *v6; // edx
    / v7 A4 T# j# v% X$ z
  10.   const char *v7; // eax
    ( C4 l! F  _( `. G4 x
  11.   FILE *v8; // eax
    - {  B8 {- a& w0 i* u9 P# x8 {% K
  12.   signed int v9; // ebp- d7 J/ ^* ?; k1 I0 g5 a5 ?. N7 [
  13.   const char **v10; // eax! m" C' ]& w( w) }% ?+ v- ]
  14.   double v11; // st7
    + ~1 q0 [2 \. X# I2 {0 j. u
  15.   double v12; // st6
    ! b$ [' @  b) P; A
  16.   const char *v13; // ecx4 a0 Z" g9 T* N  v' g) t$ M+ x( B
  17.   FILE *v14; // eax: E0 o1 \# b# Z2 I6 O3 O
  18.   unsigned int v15; // eax+ Z. f' b: ~8 e. m: I$ J: g
  19.   int v16; // ecx# {8 G7 i0 r5 \6 M. s
  20.   FILE *v17; // eax# F+ B/ V1 r& z) O
  21.   int v18; // eax; E7 {# D# p+ L! V9 H8 d" x
  22.   bool v19; // zf
    ( c. u5 ]9 N8 `& u) `( o
  23.   int v20; // eax
    ! w7 P  E$ D) @% X9 ~0 R
  24.   unsigned int v21; // edx
    " h3 ~! z& G% Z9 Z/ m
  25.   bool v22; // sf; C4 F9 V7 \! p8 K8 V
  26.   int v23; // eax
    2 U9 A1 j; i" G
  27.   int v24; // eax
    ) p" D/ P, N7 c) }; g- Z  L" t0 z
  28.   int v25; // ecx
    2 f; s" p# G, W% R# Z
  29.   int v26; // eax
    " P3 A' d# `. s' T# m1 o+ [9 `
  30.   int v27; // ecx
    2 k* @( p- T' S0 v/ h0 P# P
  31.   const char *v28; // eax7 t4 W) g3 G0 Q4 Q) N8 G2 ?  p  k
  32.   const char *v29; // edx* O' }* O7 G2 J3 B$ k, N$ T
  33.   FILE *v30; // eax
    # u. [* p7 j) E9 j
  34.   void *v31; // eax3 P2 _9 J' l' k. B
  35.   double v32; // st7- a% j8 u7 |; f2 d/ m
  36.   _DWORD *v33; // esi
    ' T2 z. g3 D0 @& i, }! U" H5 o
  37.   float *v34; // eax
    3 ]" }% \' Z: }( m4 ?) ?% B
  38.   float v35; // ecx
    7 [' F: C3 y: L
  39.   float v36; // edx
    * t) s8 D$ c/ _$ Q
  40.   float v37; // ecx  x3 p) w* v+ [! W# B/ v
  41.   float v38; // edx
      D( P& U+ S" q+ n9 I) K) q
  42.   float v39; // ecx9 z: ^: u# Z" Z8 @4 l
  43.   float *v40; // eax
    ( }. Y2 s! I* U# D- d
  44.   float v41; // edx+ V- T& B" e; Q
  45.   float v42; // ecx1 c5 C' `( A9 P
  46.   float v43; // edx, v! V3 {! `7 a+ ]/ R6 }* p
  47.   float *v44; // eax
    ; G# e0 T4 O* M3 h% t
  48.   float v45; // ecx$ E3 R# j5 k- b& T# f5 `
  49.   const char *v47; // ecx) N. P  e  l0 O6 M
  50.   const char *v48; // ecx2 c, Y  O4 }, M. s
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]
    1 E/ e5 i. f$ r1 _
  52.   const char *v50; // [esp+A4h] [ebp-58h]
    # @4 w3 ]! k: }1 E
  53.   const char *v51; // [esp+A8h] [ebp-54h]; R% a6 D, g7 U/ {8 z& @' M+ e
  54.   const char *v52; // [esp+ACh] [ebp-50h]
    9 w+ ?& g4 L/ f  ^
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]- b( I, U7 s7 ?5 z5 F8 |
  56.   const char **v54; // [esp+C8h] [ebp-34h]5 d' i! V+ Q& \7 a4 r
  57.   float v55; // [esp+CCh] [ebp-30h]( A0 }1 }1 e) u4 G  c6 _
  58.   const char *v56; // [esp+D0h] [ebp-2Ch], R9 K  v" Y6 C& h! D9 _
  59.   float v57; // [esp+D4h] [ebp-28h]
    + x6 Z$ P+ N9 p/ }8 o
  60.   float v58; // [esp+D8h] [ebp-24h]; s" Y# u% c7 Q' ~. V( v% s" r7 k
  61.   float v59; // [esp+DCh] [ebp-20h]: t9 [; P. |: Y$ d7 ~
  62.   char v60; // [esp+E0h] [ebp-1Ch]" t6 I, |9 Y" y8 n  D: ~: b9 H
  63.   int v61; // [esp+ECh] [ebp-10h]
      d/ m3 d) W# }3 |' m" N- Z
  64.   int v62; // [esp+F8h] [ebp-4h]
    3 D9 @, r% _) p5 {/ @7 ^5 t8 J' x

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

1 i- U" ]8 a6 l( b0 h
( t/ U) I+ l2 D" u0 k在ida pro下查看,是这个函数,从代码看a2字符像是索引号。; X# q. |# X2 a+ O# ?) c% v
稍后需要仔细分析。字幕显示函数应该在本函数上下。
7 K- K: u! b5 z/ d4 J
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码
* g; {' _7 R* d  X* r

( R  p; B9 M% b; x2 I4 v0 w
$ V: W5 r7 _" E* S7 H/ Z
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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