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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑
3 }. ~6 q0 y8 u
% m9 X( U$ z- j6 e* z5 Y! x$ F3 F这个游戏以前分析过,这次再写仔细些,
- H4 ?6 E, T4 p3 y2 u/ p$ h" YCreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。
! u- p+ A: R$ @- p* ]这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。
; O& D1 c1 W1 I( f, Y8 t4 p
" ^; l8 @+ u9 e- ?4 B! w
  1. .text:0041641A                 push    ecx
    # H1 _; X/ @  M8 q& s" c
  2. .text:0041641B                 mov     [esi+90Dh], dl: Q+ }# x/ i* m
  3. .text:00416421                 mov     ecx, hWnd
    ( W/ h8 y2 S0 q/ D# V6 g
  4. .text:00416427                 mov     edx, [eax]
    4 a. ?" X% x7 R0 V5 a, R1 d: Z& Z
  5. .text:00416429                 mov     edx, [edx+40h]
    ! z: e  u& w* j1 k" @
  6. .text:0041642C                 push    40h0 I, Z, b9 e3 [" ]5 Q
  7. .text:0041642E                 push    ecx
      n3 N; h# O1 F) y* F
  8. .text:0041642F                 push    1
    " v( @3 O3 \9 Z1 d3 m
  9. .text:00416431                 push    ebx, T6 r5 {. R: m( X
  10. .text:00416432                 push    eax
    9 k! s, k; r1 O% w# j" q
  11. .text:00416433                 call    edx
复制代码

  1. 3 }% R$ V1 G# O6 Y4 H! s5 h7 w
  2. int __thiscall sub_415FF0(char *this)7 Q/ n" D+ s! e( P; G
  3. {
    4 b; }5 b! b, v) I
  4.   char *v1; // esi
    4 p/ s: F7 [9 g
  5.   FILE *v2; // eax
    & [/ j: g% e8 U8 X
  6.   IDirect3D9 *v3; // eax7 S6 ]' z9 o: ], H
  7.   const char *v4; // ecx
    ) r" ^* U" H' d. x. V
  8.   const char *v5; // edi. @) W; h! Y9 h4 g: z6 H
  9.   const char *v6; // edx, Z. M1 n4 p1 e4 ^* C% B
  10.   const char *v7; // eax$ L& \% d( z9 g' h0 r
  11.   FILE *v8; // eax
    7 F) Q, M, A  N& A+ B4 w/ m
  12.   signed int v9; // ebp5 \3 b6 z; H: p3 A2 k6 H0 F
  13.   const char **v10; // eax' p% i+ b& ~. Z) n7 m5 p6 @/ s
  14.   double v11; // st7# A/ n  Y0 g! ]
  15.   double v12; // st6. g" Y8 M/ y0 t. }! n; [3 B
  16.   const char *v13; // ecx
    & _5 O8 S* ~1 s0 s
  17.   FILE *v14; // eax$ y; K; A$ q- G" Q, }: e6 o
  18.   unsigned int v15; // eax
    & z; u- Y; Q2 u/ k: w  a
  19.   int v16; // ecx5 l+ K3 d- |' i, V$ G) G
  20.   FILE *v17; // eax
    * e, E% J8 U7 _' K$ B+ g% D# ~
  21.   int v18; // eax% R1 f, n4 Z$ a3 B) T
  22.   bool v19; // zf
    " U. ~* N9 w. t& x6 a0 i$ V' p. R
  23.   int v20; // eax/ U+ O, J$ c% @; i1 ]
  24.   unsigned int v21; // edx, Y2 {2 d9 L4 x" v; f$ H' \
  25.   bool v22; // sf- R8 }* A1 ~; n7 v4 V! J8 l
  26.   int v23; // eax
    ' P2 H! _9 l4 N) }1 k0 M
  27.   int v24; // eax( S1 J0 l5 G5 a- e; n" J% y! p: ?
  28.   int v25; // ecx
    9 J7 W0 M5 W6 K( C( F
  29.   int v26; // eax
    8 {: |  {/ T$ J$ `" B  C* o
  30.   int v27; // ecx. [, P4 b! }5 V4 z+ D
  31.   const char *v28; // eax
    " }$ r# L- w6 J$ R# b/ _
  32.   const char *v29; // edx' X4 S' k& E& O' C7 Y* m! C$ v8 `
  33.   FILE *v30; // eax- @# X* P; G8 c4 m" Y$ @6 @& a
  34.   void *v31; // eax
    5 w9 ^( v6 h2 v; h* q. J
  35.   double v32; // st7# I+ E, k  Z5 }+ [
  36.   _DWORD *v33; // esi: \5 n. B3 N$ {6 }7 C
  37.   float *v34; // eax9 o$ i) k9 a$ [' e7 v: V
  38.   float v35; // ecx4 W3 _/ Y  s7 F& o' k
  39.   float v36; // edx
    7 g) a$ b/ a3 H5 r
  40.   float v37; // ecx3 H3 w3 M: H- Y: i8 y+ J
  41.   float v38; // edx
    : w- z& F' J( K/ z
  42.   float v39; // ecx  N. [; Q/ {1 I) @0 T4 L2 g5 X
  43.   float *v40; // eax& o  S4 [% N/ @! Z6 p; q
  44.   float v41; // edx$ F2 k5 C9 X/ B' f  O% h
  45.   float v42; // ecx  w" S2 |3 V3 I7 ^/ W; K
  46.   float v43; // edx+ ]$ o: f% u- C2 D
  47.   float *v44; // eax4 z: h9 M: L( H' K: C
  48.   float v45; // ecx
    7 V" k0 M8 W- I0 L8 ~- K
  49.   const char *v47; // ecx  r  ~7 Z& u* i* ?+ D
  50.   const char *v48; // ecx7 v( P- n, d  p9 W0 l" p
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]
    " l+ A- P. O/ m" v8 E" C! W/ c* c# o
  52.   const char *v50; // [esp+A4h] [ebp-58h]0 p6 O& X( v) P1 \8 m) B7 d
  53.   const char *v51; // [esp+A8h] [ebp-54h]
    1 B3 F- |$ n9 v1 Z( s
  54.   const char *v52; // [esp+ACh] [ebp-50h]1 o  M! f4 |1 |0 Q! }# Q2 T
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]
    " H3 X6 K1 i; P) g3 e' m8 x+ c2 m
  56.   const char **v54; // [esp+C8h] [ebp-34h]
    : _3 f2 J0 N7 d- D3 l
  57.   float v55; // [esp+CCh] [ebp-30h], `2 [* O8 |/ O6 V( R5 O& m
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]
    $ u# a  Q0 m8 k
  59.   float v57; // [esp+D4h] [ebp-28h]
    & |9 a" V- ?# q7 ^1 Z0 Y% R! m) w
  60.   float v58; // [esp+D8h] [ebp-24h]
    6 x" g5 Y  W- M: l
  61.   float v59; // [esp+DCh] [ebp-20h]
    ' R1 R$ r5 V7 l! d6 g7 p0 L
  62.   char v60; // [esp+E0h] [ebp-1Ch]! k2 d  Q* Q8 n- Y/ _. T9 V8 x- p" O
  63.   int v61; // [esp+ECh] [ebp-10h]
    . {6 E. c" b6 n$ s' @( K  }
  64.   int v62; // [esp+F8h] [ebp-4h]" F; l# l9 _4 p
  65. ( l- P- @! U! W% ]3 C! Q* o. |
  66.   v1 = this;+ r6 I# G2 D* D  x+ ^) {
  67.   v2 = (FILE *)sub_4D7E8F("Initializing graphics...\n");. d* N$ p! n4 p) c5 _# @
  68.   fprintf(v2 + 1, v52);
    $ T. B; u- D3 E- g# m4 I
  69.   *((_DWORD *)v1 + 492) = 0;
    1 d3 g6 `* M2 c* x& a
  70.   *((_DWORD *)v1 + 609) = 0;( b/ x# ~3 o' a8 d) B  W
  71.   *((_DWORD *)v1 + 611) = 0;3 O" b! H/ R! E$ g* A2 R
  72.   *((_DWORD *)v1 + 610) = 0;
    5 E) t5 P/ W9 P* ^, V, L
  73.   *((_DWORD *)v1 + 613) = 0;) A5 M. A  h5 P% O$ k( V% M) r
  74.   *((_DWORD *)v1 + 612) = 0;  G5 H" H' U7 \' H( G, F
  75.   *((_DWORD *)v1 + 614) = 0;% q8 `7 y2 a9 K
  76.   *((_DWORD *)v1 + 601) = 0;( d2 B* ^' U. O  z0 O# `
  77.   *((_DWORD *)v1 + 600) = 0;- A& Q7 A1 @2 P( i" r# e9 `" P2 `; `
  78.   *((_DWORD *)v1 + 615) = 0;" f# T1 I. v9 B0 Q. @
  79.   *((_DWORD *)v1 + 395) = 0;
    5 ?, }: ~7 h- ?+ ?
  80.   *((_DWORD *)v1 + 488) = 0;1 ~* h% \' f  a' H6 [+ r6 z% L
  81.   *((_DWORD *)v1 + 486) = 0;9 s+ A) }4 E; ]9 H9 K5 n: Y4 O" l
  82.   *((_DWORD *)v1 + 487) = 0;  j& [( t8 E0 o! F' R! @
  83.   *((_DWORD *)v1 + 489) = 0;3 q2 F$ v* ~( E! x
  84.   *((_DWORD *)v1 + 491) = 0;
    9 M2 r( T( R. x4 k6 n8 L  v
  85.   *((_DWORD *)v1 + 514) = 0;
    4 w6 r" D2 B  r$ |! N8 w- ^
  86.   *((_DWORD *)v1 + 597) = 0;
    9 [( L4 L$ u; A  j
  87.   v53 = v1 + 1968;
    / y. X8 V# K! Q) @
  88.   *((_DWORD *)v1 + 498) = 0;
      o+ e- o8 T: t3 S
  89.   *((_DWORD *)v1 + 499) = 0;
    5 r( ?* B9 f6 e% R+ K* E
  90.   *((_DWORD *)v1 + 500) = 0;
    5 _0 x* z' b2 q# K& l. Y: U
  91.   *((_DWORD *)v1 + 501) = 0;5 J8 q( T7 q0 a$ B& d: ?( A+ [3 V
  92.   *((_DWORD *)v1 + 502) = 0;' D& x* [" D  w( D3 w4 O% L2 R
  93.   v52 = (const char *)32;
    3 N$ w1 B1 e5 z' w1 `
  94.   *((_DWORD *)v1 + 578) = 0;+ e) z3 x' u4 X4 S: L- D# m  P
  95.   v1[2316] = 1;
    1 w! o: m( P# ~& ]# }
  96.   v1[2476] = 0;9 {1 ?5 G1 R" n4 Z. ]' G
  97.   v3 = Direct3DCreate9((UINT)v52);4 N& Q' q, T1 H: j" s3 e
  98.   *((_DWORD *)v1 + 384) = v3;; {) ~. A8 y& H" l/ C* G" y. R9 ~
  99.   if ( !v3 )
    % {- b, N- U3 |+ }
  100.   {: V9 L' b1 T% I+ B
  101.     v5 = v56;
    - G- v7 E( {- ^" W. G9 o4 W
  102.     goto LABEL_27;
    : }% n' V: P4 F4 m7 }
  103.   }
    4 {: l) a5 _/ h$ a: U1 O
  104.   v5 = (const char *)v3->lpVtbl->GetAdapterDisplayMode(v3, 0, (D3DDISPLAYMODE *)&v60);
    / B& ~& E, Y8 O( I; K+ z) y9 s, h) D
  105.   if ( (signed int)v5 < 0 )
    0 u; ^( H) k2 x7 }. [& t
  106.     goto LABEL_27;' o5 |, \) _) d- J- R' ~- A
  107.   (*(void (__stdcall **)(_DWORD, _DWORD, signed int, char *))(**((_DWORD **)v1 + 384) + 56))(: B! S$ X  f, U# S( h7 E2 @
  108.     *((_DWORD *)v1 + 384),
    , M2 u9 H" G7 d1 u" [% _
  109.     0,8 J7 e) t2 M, ]' ?! X
  110.     1,. L9 C; V* J9 _
  111.     v1 + 1640);
    2 d/ p; V; w. {) |. D
  112.   memset(v1 + 1584, 0, 0x38u);
    , m9 x# b' N* A5 C6 }7 h
  113.   *((_DWORD *)v1 + 404) = 0;
    , H: S! J# f2 _; Z
  114.   *((_DWORD *)v1 + 402) = 1;- \& \6 Y& g! T
  115.   *((_DWORD *)v1 + 403) = hWnd;
    2 Y: c; e3 [7 R, b3 \
  116.   *((_DWORD *)v1 + 407) = 0;
    2 O- L- Z/ N& E
  117.   *((_DWORD *)v1 + 399) = 1;
    ' e& A# Z7 k$ I. s. U" U% k
  118.   *((_DWORD *)v1 + 398) = 21;
    0 H( a2 U, Q  X" k; U1 A
  119.   *((_DWORD *)v1 + 405) = 0;
    . k( O9 r0 d9 }& z  e
  120.   *((_DWORD *)v1 + 522) = (unsigned __int16)word_558176;
    " V3 R4 S" `1 o6 P( h2 X0 d
  121.   v6 = (const char *)word_558174;2 [5 x& B# h& m' a; @1 v
  122.   *((_DWORD *)v1 + 523) = word_558174;
    2 C4 l3 r6 M) i+ F: I, I# r/ \
  123.   v7 = (const char *)*((_DWORD *)v1 + 522);
    8 e6 v# y5 D! @0 R, q3 ~' i3 @
  124.   v52 = v6;
    ) g  O" ~7 s; [- @2 T, o$ h6 g+ h
  125.   v51 = v7;
    , X6 G, s# a( n5 w' T
  126.   v50 = "Screen resolution is %d x %d.\n";1 M: r- m; g0 U) ^2 p  w4 F! }
  127.   v1[2076] = *(_DWORD *)&word_558174 == 67109632;
    % g- J& d* `5 e- d1 {: W5 b! U. o! ~( {
  128.   v8 = (FILE *)sub_4D7E8F(v50);
    3 f! [& e% E# J* B3 J: j
  129.   fprintf(v8 + 1, v50);
    + }2 i8 l' _1 Y& Y* v
  130.   v9 = *((_DWORD *)v1 + 522);3 z) i( V  C2 D0 K2 B$ d9 _' ^
  131.   v54 = (const char **)*((_DWORD *)v1 + 523);
    ! P) V6 h8 B6 a( l" q4 w2 I
  132.   v10 = v54;
    8 T& N" Q  I% V3 p5 A! Q4 I
  133.   *((_DWORD *)v1 + 396) = v9;4 a1 [( k* ?" s. S1 O0 O
  134.   *((_DWORD *)v1 + 397) = v10;: N- ]# U; Q+ u2 B
  135.   v55 = (double)v9 * 0.0009765625;
    2 Z. R* L  {, c7 n* u+ G( E
  136.   v11 = v55;
    - e; q: T% {+ ~7 U' x
  137.   *((float *)v1 + 520) = v55;- Y" B0 u" c( {( E( z
  138.   v55 = (double)(signed int)v54 / 768.0;% l( E5 g) |; z# ?# O& W4 J! n
  139.   v12 = v55;! C0 B& J" J0 \2 I
  140.   *((float *)v1 + 521) = v55;
    % {9 m/ _9 h5 L5 _  m
  141.   *((_DWORD *)v1 + 524) = (signed int)(v11 * 1024.0);7 n6 s) v: O  @: @& E1 A
  142.   v52 = (const char *)1;, B3 z2 w1 M1 d
  143.   v51 = (const char *)(v54 + 11);
    ' @3 {5 C' i# U* P6 |4 w, r
  144.   v50 = (const char *)(v9 + 6);
    ' _9 W/ E; B- r3 w0 m
  145.   *((_DWORD *)v1 + 525) = (signed int)(v12 * 512.0);
    : p; G1 S2 L. O  {- ?
  146.   *((_DWORD *)v1 + 515) = 0;
    ( E5 r) a/ e3 ~  j* z9 f
  147.   *((_DWORD *)v1 + 517) = 1024;: G, P" L, H. K' D; T0 b1 \/ J7 }, m
  148.   *((_DWORD *)v1 + 516) = 128;  I+ h2 K; K* z* l& i. K" g# p
  149.   *((_DWORD *)v1 + 518) = 640;. {" j+ \* L- z" G
  150.   MoveWindow(hWnd, 0, 0, (int)v50, (int)v51, (BOOL)v52);
    % Q- u; o8 f% B3 G. R  z/ P
  151.   if ( (*(int (__stdcall **)(_DWORD, _DWORD, signed int, int, signed int, signed int))(**((_DWORD **)v1 + 384) + 48))(
    8 X, w  M, V5 d: r% S) N8 G" S0 `7 ?
  152.          *((_DWORD *)v1 + 384),
    $ S, F9 y- p+ ~+ D% r7 J
  153.          0,
    + Q/ e" H$ H7 u4 B! x! [
  154.          1,' e5 ^) e  i$ ]* l6 B0 e5 O+ m) p
  155.          v61,
    : e8 K  w) D# X3 T6 ^! |( M- q) E
  156.          21,9 f: f* @! p. w9 U
  157.          75) < 0 )
    9 {8 _3 x" ^- c! ?6 ]% P
  158.   {
    ( Y7 b! Q4 s1 U# ?
  159.     v52 = v5;
    0 e5 p- E5 Z- P; ^% @8 l! Y6 P0 l5 ]
  160.     v51 = v13;9 N7 P. T* @9 e4 H* l1 b" w
  161.     v55 = COERCE_FLOAT(&v51);
    4 `" a0 q$ Z3 p" Z! i* ]
  162.     sub_456DD0("Direct3D initialization failed. No appropriate Depth/Stencil-Buffer-Format found.");# y$ M$ M; J2 y' g
  163.     v50 = v47;- t! q% b; U# d) P7 |2 B4 E
  164.     v54 = &v50;
    ; g, m  d5 X" r9 g
  165.     v62 = 0;7 z" m0 l! S* [7 h  x
  166.     sub_456DD0("cCougarGraphics::cCougarGraphics");
    " w4 D$ R/ F" b
  167.     v49 = 118;
    & m0 f$ X  d! L3 A6 s4 b( ~. V7 n
  168.     goto LABEL_28;. J' T# o4 B1 n4 k: }$ i0 F2 p
  169.   }
    , z! V) I, ^$ {0 g; G5 g7 t9 s9 S
  170.   v52 = "Depth/Stencil Buffer is D24S8.\n";% q! B% W# ^/ j
  171.   *((_DWORD *)v1 + 576) = 24;5 `; V3 i/ q0 N2 ?/ |$ ^
  172.   *((_DWORD *)v1 + 577) = 8;
    , v8 i) O: M, j7 o. ]& l0 r
  173.   *((_DWORD *)v1 + 406) = 75;7 ]! @  b) G1 R; h! b9 [
  174.   v14 = (FILE *)sub_4D7E8F(v52);+ `. s  _$ L1 _
  175.   fprintf(v14 + 1, v52);/ `& v6 p. X! S3 Q, t
  176.   *((_DWORD *)v1 + 409) = 1;
    ' c" d' A. a- B5 t  p( k  R; @; t
  177.   if ( dword_558178 != 4
    , y. k$ l* H1 D0 I8 K
  178.     || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)
    9 X: w1 z; D# }: N. C1 H0 d0 h! s
  179.                                                                                                 + 44))(
    6 W, r9 S& W% P
  180.          *((_DWORD *)v1 + 384),
    - T  M" V5 H& G- j& c9 H
  181.          0,8 H% f) \5 S$ d  a; B" c' n' T) B
  182.          1,
    - x2 X1 E, [7 ?4 n, }$ ^# O- y4 ~
  183.          21,
    " n& Q7 c5 j' g4 s  K
  184.          *((_DWORD *)v1 + 404),
    ! [2 c* |. b; u; V- J
  185.          4,
    9 s4 g! ]# b1 v- S0 I
  186.          0) )
    1 _% Q6 h6 r5 o( }! u
  187.   {
    ) `- v. b, e: Z8 j7 E
  188.     if ( dword_558178 != 2
    - s) A2 X7 m7 f# {1 Q
  189.       || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)
    / s& o8 A* q$ {& q" B7 N! Y% T
  190.                                                                                                   + 44))($ \1 i& g$ ]& Y% V" ?1 F' h
  191.            *((_DWORD *)v1 + 384),
    9 q/ x6 d- p4 r/ N" X$ u
  192.            0,
    * B& O+ |) C7 H+ K/ S
  193.            1,0 ?0 H0 y* D: h
  194.            21,& N. ~" [' m! \5 W5 k
  195.            *((_DWORD *)v1 + 404),
    . U* N% F& V* t/ V2 k( E9 h
  196.            2,
    : _6 _# ?& e8 p$ y! N3 G, c
  197.            0) )5 i; h$ D  }& L7 x& U: W, e
  198.     {1 p6 N% q  o8 n1 `, y# S
  199.       if ( (unsigned int)dword_558178 > 0
    % `8 M( t9 x) L6 F' M
  200.         && !(*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, const char **))(**((_DWORD **)v1 + 384) + 44))(
      w# y8 g, F3 g$ v, W+ N
  201.               *((_DWORD *)v1 + 384),
    2 D$ Y. n; S2 r4 w) k
  202.               0,
    + J  h7 \. T; w' t/ G
  203.               1,' G( `2 B: t0 J0 Y, ]2 W. v8 y* f
  204.               21,
    8 g, l1 C9 y7 j& b7 X: G4 L$ G* Q
  205.               *((_DWORD *)v1 + 404),, l; x1 u/ T3 |2 Y: R
  206.               1,
    $ h; s: ~; w  e
  207.               &v56) )
    ( M: q; T+ h5 R; ], D& S
  208.       {
    4 [) `. m6 ?1 p+ z" ]9 j
  209.         v15 = (unsigned int)v56;0 U6 U2 d0 x; N, s
  210.         *((_DWORD *)v1 + 400) = 1;
    % h, m. g5 ?; j. t% d. q+ o/ T
  211.         v16 = dword_558178;
    8 J; B. J# ]/ K: d
  212.         if ( dword_558178 >= v15 )
    % T+ S" G3 A4 u$ |9 ]
  213.           v16 = v15;; b' w6 R8 N2 y" p: `
  214.         *((_DWORD *)v1 + 401) = v16 - 1;
    % Y6 ]+ N/ x' h* c  I; l7 W
  215.         if ( dword_558178 < v15 )
    * R) {) b- i) ^3 k" J
  216.           v15 = dword_558178;
      `4 j' U! L$ }' o
  217.         *((_DWORD *)v1 + 578) = v15;
    9 }) I' C3 t5 Q, o- N( \$ A
  218.       }
    5 I- ?8 ^0 D+ o; a" \* i! `
  219.     }
    : ^* J) [9 q* b6 g2 h' V# d! M, y
  220.     else( @! v, f6 {/ D9 |: x  K5 Y( @
  221.     {
    8 X5 I: H& l1 t
  222.       *((_DWORD *)v1 + 400) = 2;* |5 D, G. u6 q" {& ]" `+ H  Y
  223.       *((_DWORD *)v1 + 578) = 2;
    ' ]# U$ ~% M# x# m6 W
  224.     }( E( r) v! O4 s+ E( Q$ M
  225.   }# W- a* h* p3 E, A% j
  226.   else
    6 q- p" z' Z) f0 a) E
  227.   {+ x7 d7 ]! T% O4 @3 q
  228.     *((_DWORD *)v1 + 400) = 4;
    9 y; k3 K6 F  A* D( `: k
  229.     *((_DWORD *)v1 + 578) = 4;6 H; c+ p6 N7 K8 ^7 K( A7 i* Q! j
  230.   }
    5 k, z! q/ k/ e% p4 a; d
  231.   v52 = (const char *)*((_DWORD *)v1 + 578);
    & t; C9 M# U, H* ~" g; x
  232.   v17 = (FILE *)sub_4D7E8F("AntiAliasing is %d.\n");) q, t, j( L4 ]/ G7 W
  233.   fprintf(v17 + 1, v51);$ h( [' A) F" b5 I: O2 d
  234.   v18 = *((_DWORD *)v1 + 384);6 u" W  p. v& Y# u7 Z
  235.   v19 = *((_DWORD *)v1 + 578) == 0;9 m4 V& _6 ^7 p! A0 [# O
  236.   v52 = (const char *)827611204;" V8 \7 d% W- U2 z) j  _/ n5 s
  237.   v51 = (const char *)3;
    + T. l1 l" Q- L. v2 i+ A
  238.   v50 = 0;2 w" l9 r3 A. `. F% ]' Z' R
  239.   *((_DWORD *)v1 + 402) = 2 * v19 + 1;
    7 \& P" c  F, ]# L: D
  240.   v20 = (*(int (__stdcall **)(int, _DWORD, signed int, int, const char *, const char *, const char *))(*(_DWORD *)v18 + 40))(* J5 }% b, Y% z5 m. N# D* b
  241.           v18,
    + V. o/ K( c; V8 X8 R
  242.           0,
    . K+ M' f( h: u/ g8 w
  243.           1,  {. R1 x: P. n9 W
  244.           v61,
    6 N8 t0 P& i; b, d9 l# x
  245.           v50,1 j4 r2 l  ?% a/ m2 S
  246.           v51,
    5 R; I) K8 H4 n2 `" K( E0 @9 p
  247.           v52);+ [& Y* D& [( j6 ]3 E
  248.   v21 = *((_DWORD *)v1 + 425);  s( d- S$ l6 d+ {0 W
  249.   v22 = v20 < 0;  ~0 P0 f9 ~5 \& g8 W
  250.   v23 = *((_DWORD *)v1 + 384);
    / z9 N. h& j$ D. A. ^# j) z* x
  251.   v1[2316] = !v22;
    " _4 Q; ~: x8 m8 l8 k$ i& u
  252.   v52 = v1 + 1540;6 K! ~; N4 ]( F+ R3 J
  253.   v51 = v1 + 1584;. p. [/ O1 m+ Q+ S9 l
  254.   v1[2317] = (v21 >> 14) & 1;+ S& U. I; N( J; r
  255.   v5 = (const char *)(*(int (__stdcall **)(int, _DWORD, signed int, HWND, signed int, const char *, const char *))(*(_DWORD *)v23 + 64))(- u2 p  P9 f5 O) F
  256.                        v23,! j3 y$ S- t; i. j  u, S' X* t
  257.                        0,
    2 r6 P6 _% T/ J6 \/ C. z- Q: H' u
  258.                        1,
    3 X. g/ U1 e, l% P
  259.                        hWnd,
    2 a+ ^; R5 q/ z8 W
  260.                        64,
    - \4 r! x! p5 ]
  261.                        v51,8 t* K8 Z2 l2 M9 s9 t
  262.                        v52);* {* L/ K& \( s  z- ^
  263.   if ( (signed int)v5 < 0 )
      Y3 C" A% c; d5 I% k' k
  264.     goto LABEL_27;5 y/ X" w4 S4 [' t. P. U, d- [
  265.   if ( dword_558180 && ((v24 = *((_DWORD *)v1 + 425), v24 & 2) || v24 & 0x100) )1 B9 g7 [3 `  i; U( S& I2 R/ s! u6 }
  266.   {
    # ~5 l$ U' f  y, m6 ]! z
  267.     v25 = *((_DWORD *)v1 + 609);
    5 \8 R8 B& t. t' c' ?7 M
  268.     v26 = sub_418670(*((_DWORD *)v1 + 522));1 g' O$ d, C: ?- N3 O+ }
  269.     v52 = (const char *)*((_DWORD *)v1 + 523);1 |7 U. w7 c$ ?& e" }. O2 Z. e
  270.     v27 = *((_DWORD *)v1 + 609);8 |" Z+ O, G) t9 u( r- e
  271.     *((_DWORD *)v1 + 496) = v26;
    * K3 j6 \" f/ f2 @3 M8 G2 E. E3 R
  272.     v28 = (const char *)sub_418670(v52);  {3 @) T# O$ f7 V6 F$ \; D# K
  273.   }
    + {' L3 ?2 A2 O$ E- p" t2 ^1 K
  274.   else9 b/ f9 L. I: H' ?0 {5 }5 d! N
  275.   {) @$ Q5 K/ A5 j, n- w
  276.     v28 = (const char *)*((_DWORD *)v1 + 523);
    - ^' w  h" g4 Q% v
  277.     *((_DWORD *)v1 + 496) = *((_DWORD *)v1 + 522);
    $ X2 k* W2 y. _% a9 B8 `
  278.   }; j; }  z8 o. {5 n# H  l3 `2 K# H
  279.   v29 = (const char *)*((_DWORD *)v1 + 496);
    ( f; [$ `3 J- \
  280.   v52 = v28;
    6 c. U5 \: `3 T9 ~! F! o& Z
  281.   v51 = v29;# O! x) x. a0 K+ @- g$ H. n
  282.   v50 = "PostProcess Surface is %d x %d.\n";& J1 d) S  Y3 e9 E/ d! }  W
  283.   *((_DWORD *)v1 + 497) = v28;
    . N. I, B; a$ @
  284.   v30 = (FILE *)sub_4D7E8F(v50);; [6 ]" {( g  g6 K
  285.   fprintf(v30 + 1, v50);
    0 z& w# k6 T3 Q. F0 y, T
  286.   (*(void (__stdcall **)(_DWORD, _DWORD, char *))(**((_DWORD **)v1 + 385) + 88))(*((_DWORD *)v1 + 385), 0, v1);
    : A% I' E2 y: u9 u
  287.   sub_413100(v1);
    % `8 O7 T) K( P
  288.   sub_411D60(v1);
    ' k' _' X! b1 {; o7 E: M' t; Q
  289.   v31 = malloc(0x78u);
    2 J/ }6 [" R; A: P3 N
  290.   v32 = -0.5 / (double)*((signed int *)v1 + 522);
    1 G# V' c5 ?( h' Z/ a: n# ^( \
  291.   *((_DWORD *)v1 + 599) = v31;" @- I7 C. P% F5 B. r4 d
  292.   *((_DWORD *)v1 + 600) = 0;
    $ a) S3 |. P7 I+ [# p* O& S
  293.   *((float *)v1 + 526) = v32;
    * Z/ D; \) M8 A. g* N
  294.   *((float *)v1 + 527) = -0.5 / (double)*((signed int *)v1 + 523);
    ) _) J- f1 p( K3 W, D; G0 v, r5 L4 M
  295.   sub_411CC0(v1);
    ; X; `: X! x! e9 ^8 o4 v1 ~
  296.   v33 = v53;7 b! w1 u6 y2 B) p6 y* T# G9 E
  297.   v5 = (const char *)(*(int (__stdcall **)(int, signed int, signed int, signed int, signed int, _DWORD *, _DWORD))(*(_DWORD *)dword_559B7C + 104))(
    3 G* `1 b3 S/ L" j9 x3 d4 A
  298.                        dword_559B7C,
    - K' `3 M. ]! o' q
  299.                        80,9 q& d3 j" H$ O0 |
  300.                        8,
    ! V% K) z9 X. }% b
  301.                        258,% |4 p( X! A# ~) H# n5 H- H% y! [# t
  302.                        1,+ f( M: z* q, N, W7 g0 U, T
  303.                        v53,3 \4 Y, L7 z: F; Z- F
  304.                        0);! w$ i( L, m$ t: [* H, ]
  305.   if ( (signed int)v5 < 0 )+ J6 U7 o! x+ K' |' W
  306.   {
    5 e* q0 k/ h# V- g7 h7 B
  307. LABEL_27:
    # N% l- x( X  I# g
  308.     v52 = v5;
    3 N3 ?' y0 X6 C
  309.     v51 = v4;
    ; u" [& o# X9 E/ c+ H9 A
  310.     v55 = COERCE_FLOAT(&v51);6 L1 A1 a: X# `5 p. r2 t
  311.     sub_456DD0("Direct3D initialization failed.");
    ) ^2 h7 M% }) @+ w7 U% ^
  312.     v50 = v48;- s" n& g5 ^( s! p! K
  313.     v54 = &v50;% Q4 z  [& Y. q2 F
  314.     v62 = 1;- F! U& j1 x2 C! I
  315.     sub_456DD0("cCougarGraphics::cCougarGraphics");0 R7 [6 Y4 `2 X) i* Y! M& t) |- N3 [
  316.     v49 = 205;$ @" i+ Q$ N1 U# d9 f
  317. LABEL_28:0 c. q: S  `% R3 u% e9 A
  318.     v62 = -1;: H' I; _. ~  Y8 U; l) g7 _
  319.     sub_40CB30(1, ".\\source\\class_graphics.cpp", v49, (char)v50, (char)v51, v52);
    1 y" Z& @7 p0 a& @( Y
  320.   }* Z4 Z- m: m* I; N
  321.   (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD **, _DWORD))(*(_DWORD *)*v53 + 44))(*v53, 0, 0, &v53, 0);3 L' A9 p: ^9 Z+ {" w7 F
  322.   v58 = -1.0;
    7 H7 K; z* e0 f4 x! T
  323.   *(float *)v53 = -1.0;" F. g8 c) U& a9 l
  324.   v59 = 1.0;  v% t( e: U- K
  325.   *((float *)v53 + 1) = v58;2 I+ b6 f2 s6 ~0 N4 o# ^) l8 r
  326.   v57 = -1.0;
    # Z5 o. O7 {) D  j/ K
  327.   v58 = 1.0;
    # M4 b; f  j' O, O6 ^1 I
  328.   *((float *)v53 + 2) = v59;
    ; z8 E3 y, E4 f- B7 g4 q& @
  329.   v59 = 1.0;
    " `/ j/ {, w" Q: M. H: B9 }
  330.   v34 = (float *)v53;. r3 E) V: ?- s! M7 d( F
  331.   v35 = v57;
    - e+ d' `( N1 @" B/ j
  332.   v57 = 1.0;
    5 u1 E3 x8 \% p8 X! X1 h
  333.   v36 = v58;
    . @7 l- J) Q2 P5 O
  334.   *((float *)v53 + 5) = v35;" J& q* g4 e0 K, E$ ^2 n/ N
  335.   v37 = v59;9 _8 s0 _) ^5 q7 n
  336.   v59 = 1.0;
    1 O6 b1 `1 a* i6 ?
  337.   v34[6] = v36;$ x0 {5 P/ A, c3 B" z# q
  338.   v38 = v57;4 L- X7 W2 Q4 x& U! v" a5 S+ M# L8 m
  339.   v58 = -1.0;9 \( s4 I' c0 ?8 A; y5 N
  340.   v34[7] = v37;* h9 ?1 {" U+ u3 N; _
  341.   v39 = v58;4 V& `" w8 X) D+ {
  342.   v57 = 1.0;: l/ A2 g* E% A
  343.   v58 = 1.0;
    & N6 ~0 g9 d5 Y; |3 u& o. R
  344.   v40 = (float *)v53;0 N7 x$ }9 D: M, c+ m+ ~
  345.   *((float *)v53 + 10) = v38;
    & ?) h! o+ }1 Q; i$ R7 B' R1 |  C5 Q& ~
  346.   v41 = v59;( i' {: `! S. h* T  l+ O. {
  347.   v59 = 1.0;
    * d; m4 [4 ^6 o
  348.   v40[11] = v39;2 [, a; J, k: U& G5 H
  349.   v42 = v57;( u2 W! x9 f4 Y9 t0 G- m( |' [& b
  350.   v40[12] = v41;
    3 X& H$ J7 i( s) r, g1 W$ ?
  351.   v43 = v58;
    ; ]1 x6 J- ~9 t, r
  352.   v44 = (float *)v53;
    ' ~! j. }! e0 O# `; a% F, c" e# A
  353.   *((float *)v53 + 15) = v42;
    ! p3 J! X6 k+ `1 o- N) t* }
  354.   v45 = v59;. `0 N" m8 Z9 c7 y7 B! [, @
  355.   v44[16] = v43;* ~! G; \: S5 b6 e
  356.   v44[17] = v45;
    " Q5 _# \  U' V) |$ d9 P
  357.   *((float *)v53 + 3) = 0.000099999997;
    ( j' D, w2 d( y. _6 X
  358.   *((float *)v53 + 4) = 1.0001;: P/ U" \+ A- D" {5 W
  359.   *((float *)v53 + 8) = 0.000099999997;
    . A7 s1 f: r* K$ q7 L- p
  360.   *((float *)v53 + 9) = 0.000099999997;
    3 i9 P1 ?2 z: h7 |1 b
  361.   *((float *)v53 + 13) = 1.0001;+ [' ]; h2 H; a* t, w) d. A- k: O( x7 g  u
  362.   *((float *)v53 + 14) = 1.0001;
    5 B- M% |* K3 s
  363.   *((float *)v53 + 18) = 1.0001;
    8 m( C; \8 J. y
  364.   *((float *)v53 + 19) = 0.000099999997;
    % w/ C9 J, C; a1 h$ Q9 [! X! _
  365.   (*(void (__stdcall **)(_DWORD))(*(_DWORD *)*v33 + 48))(*v33);
    9 X5 g! y+ D$ o. o2 [# r
  366.   return 0;( u; g; _6 X; n# s0 [7 @2 K0 V
  367. }
复制代码

( z5 o6 Q# D1 }- p; ~用Cheatengin寻找一个字幕之后,在以下地方断下
) w" _" j6 @( L7 L) b9 e
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码
4 V& d- q, l. t( Z0 ^

; \$ Z- V. I2 c( x5 r在ida pro下查看,是这个函数,从代码看a2字符像是索引号。
' C: _8 ?* u+ c稍后需要仔细分析。字幕显示函数应该在本函数上下。% j5 ^( F$ R: O
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码
/ d! E5 s- i2 `+ p) C: }

9 @* J$ G; U) w% h- H
" Z3 G$ s. K; }% I9 u
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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