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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑 + d) s$ [6 U) m2 t

' v7 S* c1 x" ~+ i# s- C8 e/ Z这个游戏以前分析过,这次再写仔细些,
/ b0 L" ?7 t) D- j- v. s4 y( TCreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。, p& c! [( P7 {9 T: W
这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。9 x- R& i, z' [3 `( y# u

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

3 ]8 `6 y1 y9 s0 C, Z5 o- D' W2 o用Cheatengin寻找一个字幕之后,在以下地方断下9 H% R3 X4 e8 t* g  j) d
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码
/ N* Q$ J. b' s- x  g# O
/ d2 q. l" c1 ]- g3 ]3 z
在ida pro下查看,是这个函数,从代码看a2字符像是索引号。5 ?6 e- u3 w/ U. n' T
稍后需要仔细分析。字幕显示函数应该在本函数上下。% n" }* ~% C' L& O9 X+ ~5 U
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码
0 M7 ^0 g8 {5 ?( h
( G) R& a* i8 Y1 {
; u7 T7 [' {3 m* `  X* r% V/ y
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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