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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑
$ S' w$ g8 l4 H6 D( g2 x
* v1 O6 S9 x, o这个游戏以前分析过,这次再写仔细些,0 Z; K  z- a- W4 z+ `+ N' U
CreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。
1 B, Q$ C6 ?' ^6 X这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。
2 l) Q9 J& P7 t* O: X* T/ p
: A* O' Q- J; O2 ]
  1. .text:0041641A                 push    ecx/ V& u, a5 u8 A$ G  n
  2. .text:0041641B                 mov     [esi+90Dh], dl
    5 H! ~3 i% d1 T! ]( H
  3. .text:00416421                 mov     ecx, hWnd, n+ A7 ]2 l2 s
  4. .text:00416427                 mov     edx, [eax]
    ' s% R4 j+ S1 Q7 e. R" @+ h
  5. .text:00416429                 mov     edx, [edx+40h]; R" e8 M) V4 B" g" k
  6. .text:0041642C                 push    40h5 \9 g5 ^  `3 Y& G2 X( O/ u* `/ E
  7. .text:0041642E                 push    ecx/ A0 k; A; u& K6 r2 O
  8. .text:0041642F                 push    1
    ; g( a$ j7 _. H
  9. .text:00416431                 push    ebx: E  |! Q. g! N/ j( V% J
  10. .text:00416432                 push    eax
    9 @" w0 L: V6 s, [: e) m4 K
  11. .text:00416433                 call    edx
复制代码
  1. 2 S$ x( b1 q2 p
  2. int __thiscall sub_415FF0(char *this)/ e, z) w! d& U: y- @
  3. {$ [* {* a! d" s
  4.   char *v1; // esi4 W; V9 r* P2 t/ J
  5.   FILE *v2; // eax/ y, R. q! _# f, A+ \
  6.   IDirect3D9 *v3; // eax
    / @$ M0 V9 X7 l3 G" l) x
  7.   const char *v4; // ecx7 b7 E! B9 u, I& P
  8.   const char *v5; // edi$ r: w. t' t. C! o4 r
  9.   const char *v6; // edx
    $ W3 B* ?& n5 V$ a1 x, k0 q
  10.   const char *v7; // eax3 Q- s( B$ ]( k; O
  11.   FILE *v8; // eax- x  {/ k9 r( L" d" C
  12.   signed int v9; // ebp7 E+ @) F8 E7 P6 W- I
  13.   const char **v10; // eax
    4 F2 y  [0 u$ a9 b8 S
  14.   double v11; // st77 [' B0 N1 h4 R6 c: E
  15.   double v12; // st6
    7 D8 e6 _/ t# J
  16.   const char *v13; // ecx8 L/ U7 ?: h& W' x
  17.   FILE *v14; // eax
    4 `5 V1 V' f5 q5 v! b6 S5 ~
  18.   unsigned int v15; // eax
    ' e9 a  x2 b# x5 Z8 x# r* L: D( o
  19.   int v16; // ecx
    $ \( v. J( e) v7 J
  20.   FILE *v17; // eax3 M6 V: K3 A9 b5 ]
  21.   int v18; // eax
    - K# t' K( K9 c+ C, i
  22.   bool v19; // zf
    2 D, A3 A' D6 \5 ?7 }# s, [
  23.   int v20; // eax
    . T- d5 l, ?- t* _
  24.   unsigned int v21; // edx
    - d. O6 A' N- u* [  e. E
  25.   bool v22; // sf
    $ L9 B0 ]7 u4 D
  26.   int v23; // eax
    6 e0 [9 R  c5 c  @9 d* B
  27.   int v24; // eax
    / a4 ^) h5 u: J
  28.   int v25; // ecx
    0 l$ p; N2 ?) z
  29.   int v26; // eax5 F; {4 M" k4 _  u1 A! q
  30.   int v27; // ecx
    6 S% |- H9 S: V5 R
  31.   const char *v28; // eax( o: J% V0 c9 w9 L
  32.   const char *v29; // edx/ |: h! _' H- C
  33.   FILE *v30; // eax
    ' I$ b& @4 d  y9 Z  n9 }
  34.   void *v31; // eax& ?0 H4 e2 E  d0 u# j% Q
  35.   double v32; // st70 |- Q! g$ g$ s" t' D
  36.   _DWORD *v33; // esi0 e8 f1 B# E7 F- `8 w
  37.   float *v34; // eax- I; y7 c6 x; q* r
  38.   float v35; // ecx
    1 b, \$ F. O+ p& ]# {: ^, k. i, ~
  39.   float v36; // edx
    ) b  o7 Z0 c6 z5 N4 K; ]/ \6 O
  40.   float v37; // ecx$ }4 l2 J! U3 V
  41.   float v38; // edx
    + @5 Q, q6 I8 \2 f5 v4 Y+ B: ~
  42.   float v39; // ecx3 M6 D# C8 C5 y6 W" o2 Z$ |
  43.   float *v40; // eax4 O) h- y) t7 Q- f! [# B5 ?
  44.   float v41; // edx
    $ j. V2 r- I2 O: Q+ w2 V3 s* h7 Z
  45.   float v42; // ecx' }, _0 n! D0 U2 D/ H
  46.   float v43; // edx! B2 _3 o& w. K) [
  47.   float *v44; // eax
    0 K! L$ Q/ \. s& ~/ o( i! s. B5 m
  48.   float v45; // ecx1 u/ w# W% \7 @9 a
  49.   const char *v47; // ecx, S' f5 N) U( Q7 D* G3 O- K, E
  50.   const char *v48; // ecx
    ' v4 }2 z/ m" y8 |5 T
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]
    % [7 }, E6 j2 D5 v3 N) j0 g' H2 U& _' L
  52.   const char *v50; // [esp+A4h] [ebp-58h]& x/ P$ {- \$ p0 f: p; T
  53.   const char *v51; // [esp+A8h] [ebp-54h]
    . n- F: j3 ^2 W! Q8 ^- Q
  54.   const char *v52; // [esp+ACh] [ebp-50h]( _  r( C/ f$ a! r( L: b  a  g
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]* z( P, N- u: O# a' v" }
  56.   const char **v54; // [esp+C8h] [ebp-34h]
    - j0 ]1 i/ w. j! C3 V% M  m
  57.   float v55; // [esp+CCh] [ebp-30h]
    4 l$ u" F3 X( N4 R2 A
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]) n. S* s+ X) q- n! Y3 s8 L1 u) ]+ _
  59.   float v57; // [esp+D4h] [ebp-28h]
    + j  T% Z# m: Z, O' p
  60.   float v58; // [esp+D8h] [ebp-24h]) K, d" ?/ |0 B4 `& W
  61.   float v59; // [esp+DCh] [ebp-20h]: V; \$ [$ U, R' T* L3 b* h8 i" G
  62.   char v60; // [esp+E0h] [ebp-1Ch]
    7 n9 E% w1 M; R+ o) G- h
  63.   int v61; // [esp+ECh] [ebp-10h]
    # Q3 o9 A2 B. j8 ^
  64.   int v62; // [esp+F8h] [ebp-4h]
    5 c5 _1 ^& t5 c" S' }3 G

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

5 S! c, R5 F1 o+ U5 P用Cheatengin寻找一个字幕之后,在以下地方断下
' Y$ f2 g" o8 w1 P! Z% x8 ]' x
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码
# D* t- Q& f1 Q, Y( D

, W0 i: Q6 B! t在ida pro下查看,是这个函数,从代码看a2字符像是索引号。
5 K, k* ?9 ]) F) ^: B稍后需要仔细分析。字幕显示函数应该在本函数上下。. F$ V' s' V+ q  H8 I: f
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码

7 J5 y% A  P8 J- E- G+ S! x# d, T) W+ b

& V! R- r4 Q% K7 I
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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