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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑 6 A" W% @' l& V/ d, \$ ]6 }
" s8 ?+ I" |! j  O8 u8 `- `; T
这个游戏以前分析过,这次再写仔细些,- D) A! Z% S; J
CreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。/ d" g9 b, P2 d2 M$ C( Y1 q1 y
这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。
% y6 B) X0 ^* R$ }9 k/ W
* r( P# ^6 s) }6 T* P2 l
  1. .text:0041641A                 push    ecx) W$ ]& j0 y& _9 i3 t
  2. .text:0041641B                 mov     [esi+90Dh], dl; H4 M. N3 {* K- J( T  |4 P+ _
  3. .text:00416421                 mov     ecx, hWnd9 G4 ?+ g! r9 O/ i( ]- e
  4. .text:00416427                 mov     edx, [eax]
    ' L5 E: u* N. M
  5. .text:00416429                 mov     edx, [edx+40h]  g- N) D, U: I9 W4 n6 x! k. e
  6. .text:0041642C                 push    40h% y7 ?8 F0 D% i/ X
  7. .text:0041642E                 push    ecx
    % U" {2 f3 W' G! C; f# t$ ^$ F
  8. .text:0041642F                 push    1
    * S+ J! n5 O, p% q' @: [
  9. .text:00416431                 push    ebx8 B/ G. \0 M* x$ `2 H
  10. .text:00416432                 push    eax
    0 x4 `4 c* b  j0 ~
  11. .text:00416433                 call    edx
复制代码

  1. / c; B8 j- Q4 s3 B* s% {
  2. int __thiscall sub_415FF0(char *this)
    . g+ n1 k# }, t( C* `
  3. {( i# Q( e# \" k  S! `+ e. S
  4.   char *v1; // esi
      g; i# e1 ]  Y- f9 O
  5.   FILE *v2; // eax  {9 [. @: ~( o
  6.   IDirect3D9 *v3; // eax
    ( T* r$ G3 u% [# F9 ~3 t
  7.   const char *v4; // ecx: j+ ^6 a& Y$ C: n; B* k7 J) w
  8.   const char *v5; // edi5 h1 Z. o# l! f# a
  9.   const char *v6; // edx) W* C! e- ]5 {( @0 q. e3 @
  10.   const char *v7; // eax
    9 w) A9 ]7 |8 x4 k/ l; K* D
  11.   FILE *v8; // eax# I8 N" ~' G% [
  12.   signed int v9; // ebp
    / p! A5 U: t# O$ O- s- E" ~
  13.   const char **v10; // eax& W6 }3 F2 g0 J+ E
  14.   double v11; // st7
    0 T8 l1 D+ f; F4 j9 ^& k+ E9 p
  15.   double v12; // st6
      Y5 I1 N/ W6 c9 e4 U% _4 z
  16.   const char *v13; // ecx, @2 R+ e  \4 ?1 ?* A  I6 j# _
  17.   FILE *v14; // eax
    ! w7 \2 z  {3 {7 R' e
  18.   unsigned int v15; // eax
    + w3 O5 c4 j. U6 o
  19.   int v16; // ecx
    " v( E5 Y. ~" X3 O. T* a
  20.   FILE *v17; // eax
    , @; W# f" O# |9 D
  21.   int v18; // eax2 Q1 P2 ?7 e$ L: |. Z8 G2 P
  22.   bool v19; // zf' i6 _4 v( i! _, u
  23.   int v20; // eax* j3 ~5 i4 R1 X. B4 b4 S
  24.   unsigned int v21; // edx$ z3 k. _; x& @) |
  25.   bool v22; // sf
    , D6 `! G# E# s1 a( }
  26.   int v23; // eax
    % X* M0 R- \8 ?) V+ V+ I5 j# P
  27.   int v24; // eax; l  }) {& l  P* k6 c
  28.   int v25; // ecx
    3 K6 ~$ H+ H8 j8 z* s
  29.   int v26; // eax
    ' c' C; O8 }. X* h- q4 `/ |
  30.   int v27; // ecx
    # r7 j9 u& O2 Q+ n' M' G
  31.   const char *v28; // eax
    , G1 @4 S6 v' ~
  32.   const char *v29; // edx
    . E# e/ i. v' X) B2 \
  33.   FILE *v30; // eax+ {  B& @; i' M+ Q2 `! |2 d
  34.   void *v31; // eax! `0 t* h( F5 U1 O
  35.   double v32; // st7
    9 h7 c: s+ i2 L- F. W
  36.   _DWORD *v33; // esi
      S- p3 M( K6 K; U" c, T
  37.   float *v34; // eax
    $ I3 d/ C9 X! [# _2 o, g
  38.   float v35; // ecx
    ; y. V8 x5 D. T: k
  39.   float v36; // edx) f& s3 S/ x; c$ v% X
  40.   float v37; // ecx
    2 K2 z! y$ c; |9 X
  41.   float v38; // edx) y, d) x' y" p: C
  42.   float v39; // ecx
    ) k1 E" l' c. f: ^2 [2 F5 Y- w
  43.   float *v40; // eax5 L9 ?6 Y, a+ z3 `8 j7 Y7 @
  44.   float v41; // edx/ U9 N' B- ?5 r( G
  45.   float v42; // ecx7 _6 F  `* S9 A% T, R4 u  C
  46.   float v43; // edx& p) L: L5 w4 L1 `0 g
  47.   float *v44; // eax# @2 I, q$ B( G# J' |3 w. `
  48.   float v45; // ecx
    , K; s& m/ W3 Y
  49.   const char *v47; // ecx! M" o7 L7 E2 M# _7 v
  50.   const char *v48; // ecx. |9 `/ R# p6 p1 y
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]2 _) \$ z* s2 D
  52.   const char *v50; // [esp+A4h] [ebp-58h]
    * Y9 D/ A, P3 D. {3 L
  53.   const char *v51; // [esp+A8h] [ebp-54h]
    * U! w0 x- R9 r" l5 Q6 \
  54.   const char *v52; // [esp+ACh] [ebp-50h]" r4 ~: V+ _, G% B+ P; t. b
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]7 |- n' E# K! t/ o( s/ t- k
  56.   const char **v54; // [esp+C8h] [ebp-34h]
    5 H! Q# b) y6 c) [0 j
  57.   float v55; // [esp+CCh] [ebp-30h]
    & d7 ~  x  i$ o* {* i! Z
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]
    5 q4 D9 k0 }  I- Y$ x, p' A
  59.   float v57; // [esp+D4h] [ebp-28h]! D9 B/ N" D4 M3 ?" V
  60.   float v58; // [esp+D8h] [ebp-24h]: X- G8 V+ U) W7 |
  61.   float v59; // [esp+DCh] [ebp-20h]
    6 H. Z7 |! V4 p& x" R
  62.   char v60; // [esp+E0h] [ebp-1Ch]: s, \, j& {% m: u+ b
  63.   int v61; // [esp+ECh] [ebp-10h]& h% W0 h/ m% G3 U* c6 {( r
  64.   int v62; // [esp+F8h] [ebp-4h]% |- O* m2 ~6 q) |8 \7 J" I% X

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

+ e7 p$ D* m+ {. \0 z. N
& S6 _  u; Q; |( `) y: T; P! S: e在ida pro下查看,是这个函数,从代码看a2字符像是索引号。3 F$ Q, L# z) {
稍后需要仔细分析。字幕显示函数应该在本函数上下。& Y9 H7 `3 l2 H* V" R
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码

5 j- `! }: h5 B5 }+ T8 E$ z* g3 C$ j+ U( z$ X8 J& h2 L

# f0 X+ E+ L; s
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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