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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑
# f/ {# t' u1 k  S6 p: V* L1 k6 V7 @( v: O- v( E4 T/ V$ i. e
这个游戏以前分析过,这次再写仔细些,  y+ ]3 _1 p; I
CreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。
9 o/ q& I/ \& z这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。3 U9 N6 r3 O9 |4 A/ l
" [5 d. h8 [, v0 ~7 }" f7 Y/ Q
  1. .text:0041641A                 push    ecx
      @9 y5 R6 v3 O0 `0 @! e# X5 i
  2. .text:0041641B                 mov     [esi+90Dh], dl
    2 b) H: p2 c5 n2 E
  3. .text:00416421                 mov     ecx, hWnd
    3 r5 K  O. j; F. Q5 f9 v* l
  4. .text:00416427                 mov     edx, [eax]" Y3 u; @& [4 _/ Y6 J/ l
  5. .text:00416429                 mov     edx, [edx+40h]
    9 u6 Z" X" S* N/ p; F/ z& ?9 o
  6. .text:0041642C                 push    40h
    . ^0 i) j  H2 A  O1 |; R
  7. .text:0041642E                 push    ecx
    7 y% \; }- p' S5 {7 p- @% j1 B
  8. .text:0041642F                 push    1
    + y: a+ d' D* T4 Q& }" o
  9. .text:00416431                 push    ebx
    * T* _4 ~; }" G1 f4 n7 P7 |0 \
  10. .text:00416432                 push    eax
    / d' r8 I% Y# J$ ^. Z
  11. .text:00416433                 call    edx
复制代码
  1. * w# O& J# E5 \- {! t! ]- J
  2. int __thiscall sub_415FF0(char *this)
    0 A. J7 |( {$ v5 U+ X5 @( g
  3. {
    - _; f5 G" w/ j. ?
  4.   char *v1; // esi
    - _! ]/ z; e4 o& K* b* e
  5.   FILE *v2; // eax/ E8 H8 t- d, }
  6.   IDirect3D9 *v3; // eax
    ( E% e6 p* N4 `* P  s/ R+ }- A
  7.   const char *v4; // ecx1 o9 |1 o3 [) f& c* D" i, l
  8.   const char *v5; // edi
    $ r4 ~3 I+ }& e( D
  9.   const char *v6; // edx  Q) H& ^- `  ?' E7 K
  10.   const char *v7; // eax
    / F$ C  @- U- Y# b; f6 x9 m
  11.   FILE *v8; // eax. B$ O+ Y* \" p3 }$ p$ Y4 }" M
  12.   signed int v9; // ebp
    , y& p( Y% U0 g! u" _
  13.   const char **v10; // eax
    6 }" ]( P% L6 N4 U$ y. B
  14.   double v11; // st7: C# i1 Y! n9 ~! T" K- B* i
  15.   double v12; // st6& X- h/ A' T+ ~+ `: h. a' k4 v
  16.   const char *v13; // ecx8 n( {! c* q% }8 Z
  17.   FILE *v14; // eax4 v0 w% e" ?8 Y7 N0 Z
  18.   unsigned int v15; // eax( z( J' q$ g+ \9 _* Z
  19.   int v16; // ecx
    % }0 C% K' U4 u8 `( @0 V
  20.   FILE *v17; // eax
    ; J3 g% ]# ?/ o4 [, W( E5 a
  21.   int v18; // eax
    ) i# J( O  H! {, L; |+ [" o
  22.   bool v19; // zf
    % @1 y* h1 @$ U( }. H" \
  23.   int v20; // eax. }9 }: l, W0 v! z
  24.   unsigned int v21; // edx; o2 i8 u: o: |: `6 V6 x4 Y8 r
  25.   bool v22; // sf
    $ {5 ?0 q, K1 T; \' ^% c
  26.   int v23; // eax7 c2 X% k9 d' M) P& s6 L/ d
  27.   int v24; // eax
    ' D; b( t1 l# S) w
  28.   int v25; // ecx- W( S; k/ V) q, r0 m
  29.   int v26; // eax
    ' h7 w: b3 H8 F4 j
  30.   int v27; // ecx
    5 m' c, m* c& h
  31.   const char *v28; // eax
    " p5 ~( D4 p/ k3 a: W! M9 U, H" C
  32.   const char *v29; // edx2 E8 u& J1 _3 `& w
  33.   FILE *v30; // eax* X1 z& \. J& C7 N& a7 ]
  34.   void *v31; // eax9 b3 {8 L* F) ?! s, |) i5 V! c
  35.   double v32; // st76 u$ G# `# `; N* z: r
  36.   _DWORD *v33; // esi
    0 v& Q' Z8 F- a5 b6 V# K/ {
  37.   float *v34; // eax+ M# [4 z( T6 m- R& a
  38.   float v35; // ecx
    5 N4 x5 M! ?) W) b4 G  D$ I$ Q
  39.   float v36; // edx
    * H  E! j3 Y! {+ L0 M, c% w' {- f
  40.   float v37; // ecx: x. I7 N5 V8 W1 n  ?5 U6 U8 o; W# c
  41.   float v38; // edx5 a1 p, {) d$ o) R7 g
  42.   float v39; // ecx9 ^  h6 B, h2 J4 q# V- _7 I4 k
  43.   float *v40; // eax
    , h7 j9 J: [3 _! L
  44.   float v41; // edx
    % `6 ?9 S# s2 k
  45.   float v42; // ecx
      \& i9 ]7 n* K) f% q3 W' v4 Y! ~. C
  46.   float v43; // edx
    $ Y$ Q3 ^; H# a$ x3 ]% B
  47.   float *v44; // eax
    0 B8 d$ Y' c7 p) x7 Z5 _
  48.   float v45; // ecx' u' e' ]) g" j' ]' z
  49.   const char *v47; // ecx; l" ?& K) S/ I9 m3 N* K+ p
  50.   const char *v48; // ecx# r2 b4 \9 @+ d
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]
    - _# E- i9 h% a/ ]: I
  52.   const char *v50; // [esp+A4h] [ebp-58h]
    3 S/ A, E  C) ]  F) `
  53.   const char *v51; // [esp+A8h] [ebp-54h]. U) ]* K6 `: H6 y8 @6 Q) X
  54.   const char *v52; // [esp+ACh] [ebp-50h]
    ! b  w+ f1 k7 V4 w1 g, B# w; U
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]# Z1 V  P7 c" x2 M" ?6 X% X9 k+ Z
  56.   const char **v54; // [esp+C8h] [ebp-34h]! w$ f9 d" q; ^( L+ T
  57.   float v55; // [esp+CCh] [ebp-30h]
    # `/ f, a) L+ h
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]
    + }) b& [0 p% o, D& ~
  59.   float v57; // [esp+D4h] [ebp-28h]
    0 y+ U5 H6 q2 c, X7 D
  60.   float v58; // [esp+D8h] [ebp-24h]0 W- O/ U/ {8 Q' e5 H4 H
  61.   float v59; // [esp+DCh] [ebp-20h]2 ?6 T& e4 C* U/ M9 t
  62.   char v60; // [esp+E0h] [ebp-1Ch]
    + q2 @/ o9 _) j/ e8 R
  63.   int v61; // [esp+ECh] [ebp-10h]
    6 ]# L6 n+ S9 A$ j( v
  64.   int v62; // [esp+F8h] [ebp-4h]
    " n0 q8 \. Y8 G3 u: l- `2 y' m  t
  65. 4 [; ]% v  A3 N$ A
  66.   v1 = this;
    ) V( J* k2 }2 l5 Z  o9 F6 d
  67.   v2 = (FILE *)sub_4D7E8F("Initializing graphics...\n");7 P4 j: ^; t& o
  68.   fprintf(v2 + 1, v52);
    ( i) M* [# B$ Z2 g3 K
  69.   *((_DWORD *)v1 + 492) = 0;
    . {' ^- P  M2 \/ F, s7 c
  70.   *((_DWORD *)v1 + 609) = 0;7 W# [; m, y. j8 t8 O$ l; N- Y  `
  71.   *((_DWORD *)v1 + 611) = 0;. N" I* G2 A: U' g
  72.   *((_DWORD *)v1 + 610) = 0;
    ( T7 Q& F4 ^# [8 ~2 t8 Q) Q: m  H
  73.   *((_DWORD *)v1 + 613) = 0;
    6 W4 g- R5 I* ~6 a- g8 T: U
  74.   *((_DWORD *)v1 + 612) = 0;
    * i+ T8 V3 |& ?8 M' U) |
  75.   *((_DWORD *)v1 + 614) = 0;
    4 J5 \, G( Y0 o
  76.   *((_DWORD *)v1 + 601) = 0;
    $ D+ ]$ y3 L) \5 U
  77.   *((_DWORD *)v1 + 600) = 0;$ Y) h2 k7 e; z4 w0 z
  78.   *((_DWORD *)v1 + 615) = 0;
    % W5 B1 a' ^% ^6 x+ z
  79.   *((_DWORD *)v1 + 395) = 0;0 k* t8 o& F$ \) z9 {  p
  80.   *((_DWORD *)v1 + 488) = 0;
    4 W- x  X  a: v6 }. ^+ {
  81.   *((_DWORD *)v1 + 486) = 0;( N: w+ E0 a/ N
  82.   *((_DWORD *)v1 + 487) = 0;
    ; H. i3 }+ _% h: D7 |7 f0 `3 n. c
  83.   *((_DWORD *)v1 + 489) = 0;
    & y$ B6 J& C& j
  84.   *((_DWORD *)v1 + 491) = 0;
    6 P* k, V5 Q' _; ~
  85.   *((_DWORD *)v1 + 514) = 0;
    " Q. E& r" g  W8 G- z
  86.   *((_DWORD *)v1 + 597) = 0;" I2 A2 Y) D  i! S7 W3 \* x% l3 F
  87.   v53 = v1 + 1968;
    5 K) ^4 W3 F7 J6 S# r5 G
  88.   *((_DWORD *)v1 + 498) = 0;
    1 x3 R1 N( F3 Q1 h7 G+ l
  89.   *((_DWORD *)v1 + 499) = 0;* X. h. e+ k* j% {) C
  90.   *((_DWORD *)v1 + 500) = 0;; p* l0 D2 ^- G/ @# p5 C0 g% s
  91.   *((_DWORD *)v1 + 501) = 0;
      ]" N  v/ q3 l7 u
  92.   *((_DWORD *)v1 + 502) = 0;% b* K* \. D6 q+ a  }+ b- I/ f
  93.   v52 = (const char *)32;
    ! m2 B6 e0 a! Q) e, v
  94.   *((_DWORD *)v1 + 578) = 0;
    8 Q2 k3 R: c, h- k1 Q
  95.   v1[2316] = 1;" P( `9 R& N& d, V# j" i
  96.   v1[2476] = 0;' j% g0 v3 q, Q7 l! V
  97.   v3 = Direct3DCreate9((UINT)v52);7 l8 V' V6 ]8 l; ^' L4 Q& W  i
  98.   *((_DWORD *)v1 + 384) = v3;
    % A  J, J! J6 e3 N
  99.   if ( !v3 )' F8 `# \% W# _( P) B( n* K4 ?/ r. P
  100.   {
    & n: L7 L% }, d
  101.     v5 = v56;
    ) l& j+ C) I+ \$ }. {; a5 w/ e
  102.     goto LABEL_27;% v. Y3 c; n5 b! g1 _% M" A
  103.   }# P% a3 Q; R+ _& n  E$ g
  104.   v5 = (const char *)v3->lpVtbl->GetAdapterDisplayMode(v3, 0, (D3DDISPLAYMODE *)&v60);8 @7 D) a  y; I; C& R
  105.   if ( (signed int)v5 < 0 )2 @( N1 l7 b1 m- B: w9 K
  106.     goto LABEL_27;
    ) N- p2 B8 T7 z+ s
  107.   (*(void (__stdcall **)(_DWORD, _DWORD, signed int, char *))(**((_DWORD **)v1 + 384) + 56))($ e. |3 r7 T/ P, c  `
  108.     *((_DWORD *)v1 + 384),
    + p1 S5 n8 R. L; }
  109.     0,+ f( i; V6 g* e2 w+ N% w
  110.     1,  O, C6 B" s/ t5 Z1 O) R
  111.     v1 + 1640);
    & Q1 e/ L( V* D4 |% H7 n# x
  112.   memset(v1 + 1584, 0, 0x38u);
    . w/ |) k4 `- Z/ |2 g& u
  113.   *((_DWORD *)v1 + 404) = 0;+ A' Z+ N! M' F% y+ F+ V$ |
  114.   *((_DWORD *)v1 + 402) = 1;: p8 Y) y2 d2 n2 Y
  115.   *((_DWORD *)v1 + 403) = hWnd;
    2 k7 r4 F% s4 i. L: N
  116.   *((_DWORD *)v1 + 407) = 0;
    8 X4 J: ~& U- S- E
  117.   *((_DWORD *)v1 + 399) = 1;- S  {+ o( z& H9 P, K
  118.   *((_DWORD *)v1 + 398) = 21;  e7 h7 o& ~+ F& g% r8 e
  119.   *((_DWORD *)v1 + 405) = 0;
    : ~. K& w6 o7 `6 ]6 `* E
  120.   *((_DWORD *)v1 + 522) = (unsigned __int16)word_558176;1 M; r6 M4 H. f! N
  121.   v6 = (const char *)word_558174;) I& a* R* q! i7 `
  122.   *((_DWORD *)v1 + 523) = word_558174;
    " j! J7 }; C/ ?& a% ^4 v0 z  r; Y0 o
  123.   v7 = (const char *)*((_DWORD *)v1 + 522);  H- \/ t4 Y/ W+ t. I6 _6 c% c
  124.   v52 = v6;
    + [* G1 T, p) X/ s7 i& t+ p. v" I
  125.   v51 = v7;' C- @1 l* y1 ^/ e* N
  126.   v50 = "Screen resolution is %d x %d.\n";
    2 p1 n( D8 B. T% c) t
  127.   v1[2076] = *(_DWORD *)&word_558174 == 67109632;0 x8 H7 w4 D' L. M% m! Q, f# R' c6 N
  128.   v8 = (FILE *)sub_4D7E8F(v50);
    0 X8 e' A5 Y; A3 P* a, i& o% L8 ^
  129.   fprintf(v8 + 1, v50);
    * s* Y/ }0 i" N+ x: _
  130.   v9 = *((_DWORD *)v1 + 522);
    # D& o  Q  e% |) ~' _% g( R
  131.   v54 = (const char **)*((_DWORD *)v1 + 523);
    . P9 K9 t" f$ t" f8 z3 }; n+ B
  132.   v10 = v54;* ?  T2 @+ x' l2 d! P3 B
  133.   *((_DWORD *)v1 + 396) = v9;' v0 A9 j5 k8 i" o  B9 x+ B0 t
  134.   *((_DWORD *)v1 + 397) = v10;
    " N+ x4 G* D3 M9 i1 m  c' ~
  135.   v55 = (double)v9 * 0.0009765625;9 k# v: m; [) p
  136.   v11 = v55;
    , S$ K% h" _0 T( o/ |
  137.   *((float *)v1 + 520) = v55;
    , k0 n; k8 r- H, d: X* O
  138.   v55 = (double)(signed int)v54 / 768.0;( a# z* T3 Y, e' a6 f/ O
  139.   v12 = v55;2 F: ]" v( S! H% t9 v
  140.   *((float *)v1 + 521) = v55;
    9 P' X. _4 m1 Q+ w- J1 F3 k) o
  141.   *((_DWORD *)v1 + 524) = (signed int)(v11 * 1024.0);
    7 \% f; p  ~! [9 b
  142.   v52 = (const char *)1;
    4 f! B9 z1 w2 y7 `  h
  143.   v51 = (const char *)(v54 + 11);, G/ r! x6 F; H6 l
  144.   v50 = (const char *)(v9 + 6);6 |% L6 r5 Y% h
  145.   *((_DWORD *)v1 + 525) = (signed int)(v12 * 512.0);
    % E* o8 W7 j4 K
  146.   *((_DWORD *)v1 + 515) = 0;
      w. n# @* h( j' i0 r
  147.   *((_DWORD *)v1 + 517) = 1024;% L8 u3 S$ i! k. O  D
  148.   *((_DWORD *)v1 + 516) = 128;
      E3 r, \# i; _3 w" J& f* O! U- |" W
  149.   *((_DWORD *)v1 + 518) = 640;( X; e2 {* X5 L) X5 ~7 I! c) {
  150.   MoveWindow(hWnd, 0, 0, (int)v50, (int)v51, (BOOL)v52);6 J* I6 d7 E$ g
  151.   if ( (*(int (__stdcall **)(_DWORD, _DWORD, signed int, int, signed int, signed int))(**((_DWORD **)v1 + 384) + 48))(+ \* O+ [; O. k, g
  152.          *((_DWORD *)v1 + 384),5 `9 C, `: z4 O& S" J2 A/ Q# T
  153.          0,; H/ n8 ~: s+ t- e  H* ]5 ]
  154.          1,# ^& E4 A4 H$ {( B
  155.          v61,
    ( r/ e! o4 z" z
  156.          21,
    " k: p3 w+ w3 K3 T
  157.          75) < 0 )
    ! X# i8 @3 i. i) l, {$ i& `
  158.   {
    3 H) ^  x! U8 v; Q. h# c, E
  159.     v52 = v5;
    ; m6 ]3 {) ^, Y1 Z6 _* K
  160.     v51 = v13;
    7 |3 m1 Z8 d! s
  161.     v55 = COERCE_FLOAT(&v51);
    3 K$ Q: {7 p6 j; X1 U% o: o
  162.     sub_456DD0("Direct3D initialization failed. No appropriate Depth/Stencil-Buffer-Format found.");
    * z8 f  ]  ^2 h
  163.     v50 = v47;8 ^9 k3 R# i0 J# O* s" w
  164.     v54 = &v50;: }( E, T/ t5 l7 W; e* T
  165.     v62 = 0;6 f' [% x9 I% O0 g
  166.     sub_456DD0("cCougarGraphics::cCougarGraphics");  B- i, |# y) D+ Z
  167.     v49 = 118;
    2 ?6 n8 J9 J) G9 Y  ~) N3 f" t/ N8 n
  168.     goto LABEL_28;
    . @! M/ Y7 m9 Z" S9 G+ Z
  169.   }
    ; b% H5 [* z' m( c
  170.   v52 = "Depth/Stencil Buffer is D24S8.\n";
    * Z" ]( Z* x7 L9 ~, V
  171.   *((_DWORD *)v1 + 576) = 24;
    8 `1 B. w, ]! b2 z
  172.   *((_DWORD *)v1 + 577) = 8;) j* c5 z4 j  g4 W% Z1 l6 F
  173.   *((_DWORD *)v1 + 406) = 75;
    6 \4 k/ h3 S5 U. C
  174.   v14 = (FILE *)sub_4D7E8F(v52);  V/ R% z9 f5 ]8 M
  175.   fprintf(v14 + 1, v52);
    % R! y* u( ~$ i) G
  176.   *((_DWORD *)v1 + 409) = 1;
    1 m0 b4 e4 Q7 \1 t( y! b, V4 ^% `
  177.   if ( dword_558178 != 4! S6 V# `% S. D8 X, ~: E
  178.     || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)( z* M% i. {. V. P
  179.                                                                                                 + 44))(
    7 O/ `/ d6 o' ]- j
  180.          *((_DWORD *)v1 + 384),1 s/ x) P5 N. x
  181.          0,
    ( O; R/ [9 u4 c
  182.          1,
    ( d, L, q: [' s$ F7 y9 `/ b$ H
  183.          21,+ F; L' C& D) P. @
  184.          *((_DWORD *)v1 + 404),
    * |8 A+ f( c& i" ?# \
  185.          4,5 X8 q9 t  x8 `
  186.          0) )* A+ a( {4 X8 r  M
  187.   {
    # r1 S0 e- }  Q6 S
  188.     if ( dword_558178 != 2
    " z0 k" W1 |. N: B
  189.       || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)8 a+ l) ^1 w5 ^0 c; ^
  190.                                                                                                   + 44))(: _/ j6 n  X  F' g
  191.            *((_DWORD *)v1 + 384),) b* B% C; w! H  Y) E( i; {
  192.            0,3 ?1 E7 l7 U: i/ s; C
  193.            1,
    % {. B2 n2 U) G+ t6 X$ J5 n
  194.            21,- w  u& h: k, n1 f# W/ R  U
  195.            *((_DWORD *)v1 + 404),
    " r# O- b) y, S9 f
  196.            2,
    6 c6 q# Z5 J5 Z. X
  197.            0) )8 p: h: z' J/ L4 O7 c" d# U
  198.     {
    6 _' y1 y3 |! l4 d( ]
  199.       if ( (unsigned int)dword_558178 > 0% `& [! Z1 w/ }$ u/ |
  200.         && !(*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, const char **))(**((_DWORD **)v1 + 384) + 44))(
    8 I+ f5 X4 l/ ~( q. l0 ]: X2 v
  201.               *((_DWORD *)v1 + 384),
    : U3 H, F3 x5 X  N' X4 _: r2 f
  202.               0,+ s6 s- b3 c/ P! j1 m" Z  O
  203.               1,+ S- Z  T( u6 `9 h0 \
  204.               21,
    , `0 H  k4 S6 m1 A7 h2 q3 \8 R) l, P0 n
  205.               *((_DWORD *)v1 + 404),! E# N3 l7 V9 b* ~
  206.               1,. y  u) A% S2 y' a% t
  207.               &v56) )
    ' P) V! [  E* l) L! ^4 J0 m% `
  208.       {
      I1 f3 K( @* \+ v2 o
  209.         v15 = (unsigned int)v56;& o( Q. k( T5 P& B4 o
  210.         *((_DWORD *)v1 + 400) = 1;& j# v% ]% x& q+ a4 j: \8 G
  211.         v16 = dword_558178;
    2 Z# Y& t4 }6 m% _5 P! d- b6 h
  212.         if ( dword_558178 >= v15 )  p; R0 N# p7 R! C# k% q" u
  213.           v16 = v15;+ X1 v+ C6 I2 P0 F1 o
  214.         *((_DWORD *)v1 + 401) = v16 - 1;5 Y! U$ M0 _6 ?+ F
  215.         if ( dword_558178 < v15 )
    ) C* s& w1 p/ E
  216.           v15 = dword_558178;* O7 Z+ `4 E8 l2 ?4 S
  217.         *((_DWORD *)v1 + 578) = v15;) w7 x& {! }/ q& p* }  L
  218.       }
    0 W8 |2 d8 k: h
  219.     }
    ; h1 Y- W) k1 b- _
  220.     else
    : k6 b% k, I# E3 ]& q0 y5 r
  221.     {' ~6 V& E0 Z3 T* [0 z8 d4 m
  222.       *((_DWORD *)v1 + 400) = 2;
    ' y8 E6 N0 j- X- Z/ B
  223.       *((_DWORD *)v1 + 578) = 2;$ Y! C% O0 Q6 A* O
  224.     }
    1 a( F* m3 K0 w9 S2 D' N
  225.   }0 c( e3 A+ f; ]
  226.   else
    2 y  [7 N- e% |% P0 G9 r& V1 J
  227.   {# I% w" f5 @/ H5 k# u; |
  228.     *((_DWORD *)v1 + 400) = 4;# S. R( M  l1 T$ i) B, \+ m
  229.     *((_DWORD *)v1 + 578) = 4;: G# B- f: K5 I  t: l
  230.   }- Q: f) w% M" Q( v' u! T8 |
  231.   v52 = (const char *)*((_DWORD *)v1 + 578);
    # z9 L- u6 R& Y1 ~2 d
  232.   v17 = (FILE *)sub_4D7E8F("AntiAliasing is %d.\n");
    8 }" s  @, ^+ i" f/ Q
  233.   fprintf(v17 + 1, v51);
    " _: z' |& `3 D/ _. j5 u* ?
  234.   v18 = *((_DWORD *)v1 + 384);
    5 b9 P& W+ h( e3 B4 c# A" W
  235.   v19 = *((_DWORD *)v1 + 578) == 0;! h3 s  [4 s* }) m
  236.   v52 = (const char *)827611204;' h9 {3 e' }4 b" A8 p% ]3 `! f
  237.   v51 = (const char *)3;
    % z& [  R0 n4 u% ]' D
  238.   v50 = 0;+ I1 Z# y( X, s
  239.   *((_DWORD *)v1 + 402) = 2 * v19 + 1;
    2 E3 }! l( N  U' Q- _6 r
  240.   v20 = (*(int (__stdcall **)(int, _DWORD, signed int, int, const char *, const char *, const char *))(*(_DWORD *)v18 + 40))(" @0 `& B8 Z1 p5 B
  241.           v18,. a8 [; n8 h) C6 _* |) b
  242.           0,
    * X& b; u% A! a/ s, u6 o, D7 }* Q
  243.           1,
    1 y/ z1 v/ g6 a, ?
  244.           v61,6 Y( m9 Q# ?% V
  245.           v50,  ?2 q- o& s7 a) `* z3 m- q
  246.           v51,
    3 C& r% D6 G) s: P# l& _$ U
  247.           v52);  C- R4 s* @( y
  248.   v21 = *((_DWORD *)v1 + 425);
    ' ]+ o; m# M% o2 w' Z: b
  249.   v22 = v20 < 0;
    ! h8 N+ d5 E$ J# ?; G, |$ W1 L4 U
  250.   v23 = *((_DWORD *)v1 + 384);" N* J2 a4 {4 J+ w/ [7 H7 S
  251.   v1[2316] = !v22;. W6 T8 X4 |& s) X
  252.   v52 = v1 + 1540;
    ) B* R) _: `- P0 A
  253.   v51 = v1 + 1584;! g. c# \  H+ G/ t/ i0 J9 Q3 s
  254.   v1[2317] = (v21 >> 14) & 1;
    / I+ @* I. x  H9 [# Q6 O5 R
  255.   v5 = (const char *)(*(int (__stdcall **)(int, _DWORD, signed int, HWND, signed int, const char *, const char *))(*(_DWORD *)v23 + 64))() }! w' u, D/ Q- L+ M
  256.                        v23,$ ?; H) T% b8 @4 D( U# k8 c
  257.                        0,
    ; t7 H- L. D; u+ y* H
  258.                        1,
    " ~& I" }7 F9 V: ~' |
  259.                        hWnd,, D; Z  u/ o' }: Q& A2 o( N& d
  260.                        64,
    ! D8 b2 v8 \5 V' m  T5 i
  261.                        v51,
    : i: J/ o+ k/ d: z6 ]! [" X
  262.                        v52);, i/ H' d! U2 Z$ j" q9 h- r
  263.   if ( (signed int)v5 < 0 )
    1 }9 e. _+ Y6 E, H' f- T
  264.     goto LABEL_27;
    ) x: X1 }) |. E0 e6 i: ^
  265.   if ( dword_558180 && ((v24 = *((_DWORD *)v1 + 425), v24 & 2) || v24 & 0x100) )
    ( g0 y; |% \/ y0 c
  266.   {9 ]0 {" k' F/ o0 X7 d) X0 {
  267.     v25 = *((_DWORD *)v1 + 609);
    * y- {; d- C/ f" J4 r* ?
  268.     v26 = sub_418670(*((_DWORD *)v1 + 522));" J) A& k7 T! _! _
  269.     v52 = (const char *)*((_DWORD *)v1 + 523);
    1 e3 s: L) o$ u  l9 p. f
  270.     v27 = *((_DWORD *)v1 + 609);) \9 L" s) ?0 H$ N- J3 S
  271.     *((_DWORD *)v1 + 496) = v26;
    ) G5 B, f  ~9 O. K' u) E8 G9 M
  272.     v28 = (const char *)sub_418670(v52);
    . V* F; u6 @# g: t: w& H* ?
  273.   }% D) O0 U$ Q( B* ~# S) v* |
  274.   else
    : `# }5 b% O$ t  Y% c
  275.   {) T5 l; B* z9 ~( k% e% O$ V, J1 ~6 e# t
  276.     v28 = (const char *)*((_DWORD *)v1 + 523);+ Q/ g9 n  m9 h  z9 m8 n
  277.     *((_DWORD *)v1 + 496) = *((_DWORD *)v1 + 522);/ J5 G1 F' t' n# l! _2 s1 a: g
  278.   }3 C7 U+ E- L% C% Z2 ?, g6 M
  279.   v29 = (const char *)*((_DWORD *)v1 + 496);
    ' k# f* z& M% _. }
  280.   v52 = v28;$ ^; d+ l- r* P1 t
  281.   v51 = v29;
    # {3 A. ~) j5 a# u# }, y
  282.   v50 = "PostProcess Surface is %d x %d.\n";
    - y! J8 o; k# J1 o8 P7 S
  283.   *((_DWORD *)v1 + 497) = v28;: F0 ~& S+ r" U- }2 n
  284.   v30 = (FILE *)sub_4D7E8F(v50);
    & R& \: E+ z7 P: m/ r9 [
  285.   fprintf(v30 + 1, v50);
    - w2 O. W3 T4 a/ w  A6 z
  286.   (*(void (__stdcall **)(_DWORD, _DWORD, char *))(**((_DWORD **)v1 + 385) + 88))(*((_DWORD *)v1 + 385), 0, v1);
    ; {6 F3 [" L: U7 z
  287.   sub_413100(v1);; @' n" v' b+ D) c
  288.   sub_411D60(v1);
    , [  g: {' N7 [5 s- }5 H. S
  289.   v31 = malloc(0x78u);2 \) x* P4 r) _1 b! W+ Y8 r" h; H
  290.   v32 = -0.5 / (double)*((signed int *)v1 + 522);
    % W2 `6 ?9 t! X7 R- ^+ ?
  291.   *((_DWORD *)v1 + 599) = v31;/ c5 C6 P5 e$ K5 }% K1 W
  292.   *((_DWORD *)v1 + 600) = 0;4 W/ g3 U' M/ `9 J7 K3 m
  293.   *((float *)v1 + 526) = v32;" n' V3 d4 T' D! j! Y0 W& g
  294.   *((float *)v1 + 527) = -0.5 / (double)*((signed int *)v1 + 523);
    2 X: ^6 W3 |0 a) E& L; V
  295.   sub_411CC0(v1);0 x4 W; F' R* P4 b' f$ _& ]" q
  296.   v33 = v53;
    , q8 l+ A: C: h$ V. |: z, c
  297.   v5 = (const char *)(*(int (__stdcall **)(int, signed int, signed int, signed int, signed int, _DWORD *, _DWORD))(*(_DWORD *)dword_559B7C + 104))(  u. f) R0 j6 f* O; e6 T
  298.                        dword_559B7C,4 M6 Z" u  h; F
  299.                        80,0 x, r  d9 J# j  l* H  A: f) s( a
  300.                        8,! m  d6 ^9 i1 i6 ?
  301.                        258,
    : u' G6 b' w3 ]: Y
  302.                        1,
    # h7 X; j* q9 r) v4 y
  303.                        v53,
    # x8 m& a9 ?' H* w7 c
  304.                        0);
    , Y- I. r7 Q2 }6 o( }- y
  305.   if ( (signed int)v5 < 0 )4 s$ T7 I$ G9 X& @, t, |" X
  306.   {) }. A5 V% u" e
  307. LABEL_27:
    . f  g, P4 L; ?. N1 M
  308.     v52 = v5;
    8 q/ F% Q* {8 {$ c. y
  309.     v51 = v4;( j1 L, f9 t' L
  310.     v55 = COERCE_FLOAT(&v51);
    6 t: [' i  q' y. |) k& d4 V, G
  311.     sub_456DD0("Direct3D initialization failed.");
    5 y/ {4 U3 P% X* }# R3 c
  312.     v50 = v48;! K+ d6 S4 `- t" u' y
  313.     v54 = &v50;! M- c2 }1 d# ]$ X9 [
  314.     v62 = 1;6 ^' t2 v9 M% F! f, c
  315.     sub_456DD0("cCougarGraphics::cCougarGraphics");
    $ Z5 i  v' i: @& N! G2 i
  316.     v49 = 205;3 v0 g& ?1 b! O* u% r
  317. LABEL_28:5 _% P! J# v" C1 D& j4 ~
  318.     v62 = -1;2 W- _: U& D) j6 T8 ], w5 u
  319.     sub_40CB30(1, ".\\source\\class_graphics.cpp", v49, (char)v50, (char)v51, v52);$ c$ U; s; {+ ?. e3 H3 X
  320.   }' v  a, r! O, o! P9 S
  321.   (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD **, _DWORD))(*(_DWORD *)*v53 + 44))(*v53, 0, 0, &v53, 0);% i* m7 I* o. O5 M# t. W- z
  322.   v58 = -1.0;
    + E- o  e1 c7 ~! U
  323.   *(float *)v53 = -1.0;9 Y' Q9 }/ k( O$ |8 _
  324.   v59 = 1.0;$ t8 G; C2 A: P3 {* }6 X
  325.   *((float *)v53 + 1) = v58;
    . ], O# C2 i% @0 _/ B& r
  326.   v57 = -1.0;
    ! R; x) k, g" ^
  327.   v58 = 1.0;" t; ], G$ G7 r6 |" t4 Z% m
  328.   *((float *)v53 + 2) = v59;
    ' i- N, Q" D' C. D, T5 f
  329.   v59 = 1.0;# n( D, @" o6 Z2 `
  330.   v34 = (float *)v53;
    3 R8 G: `! t  ]! X/ T1 p
  331.   v35 = v57;! x$ @9 L* I9 H/ `8 a- j# t1 y7 H) Q
  332.   v57 = 1.0;" {8 C; A4 H7 {, C+ n# {$ Z
  333.   v36 = v58;
    " t3 V# g4 o8 L3 I6 z  z. D! q
  334.   *((float *)v53 + 5) = v35;  {. \: Q' u, H& N  H- h
  335.   v37 = v59;
    . ~. l+ r2 }. Q8 M% P! @- s
  336.   v59 = 1.0;8 O7 @# X+ q6 H' ?) W
  337.   v34[6] = v36;# L: n: y9 Y* ^  k# M( _* H2 d
  338.   v38 = v57;
    , K# s$ y) Z" y7 F* ^$ W5 _- O' R
  339.   v58 = -1.0;
    ' D  u$ w3 y5 U- _
  340.   v34[7] = v37;; O) h+ N7 G- ~: t  C/ g# A
  341.   v39 = v58;
    + y7 g: ~/ K3 b, v/ Q+ ~: c7 f
  342.   v57 = 1.0;
    # s; x# {$ b7 S% a- ?/ N4 ^% x
  343.   v58 = 1.0;
    # R2 h( T- ?0 J8 s
  344.   v40 = (float *)v53;
    & L" \0 `1 E/ B5 S
  345.   *((float *)v53 + 10) = v38;8 Q* d7 o+ b1 `, H
  346.   v41 = v59;
    " z) g4 n& j7 Y
  347.   v59 = 1.0;, `. \7 _' G) S5 f/ ?
  348.   v40[11] = v39;, t- x+ q' k! Q( N6 [+ k8 v% ]- |
  349.   v42 = v57;
    # M7 u2 A$ r, q
  350.   v40[12] = v41;
    9 `* L9 u% L* n: [0 u6 g
  351.   v43 = v58;6 q; G, r5 y% e7 V$ O* u6 |* Z
  352.   v44 = (float *)v53;
    ! T4 x; Q; ^) x1 v$ @
  353.   *((float *)v53 + 15) = v42;
    3 _& x; ~9 x) B* Y' N$ j. [7 O7 g
  354.   v45 = v59;
    * T' v2 d$ T. p) F% O
  355.   v44[16] = v43;/ v2 A7 _) Y" R4 v+ r9 f
  356.   v44[17] = v45;
    6 l, ^3 y9 C% W5 U
  357.   *((float *)v53 + 3) = 0.000099999997;
    7 ^% w1 I: z& x. L9 i4 w- D
  358.   *((float *)v53 + 4) = 1.0001;8 e8 E; o0 t) z7 `9 A1 e3 k+ A
  359.   *((float *)v53 + 8) = 0.000099999997;
    . a6 S1 R: F/ A, X$ t3 ~
  360.   *((float *)v53 + 9) = 0.000099999997;! `9 e& I' c, I2 Y
  361.   *((float *)v53 + 13) = 1.0001;& [: n! ^& X5 n' D: X8 n' F4 t5 v! ^, `
  362.   *((float *)v53 + 14) = 1.0001;5 G  k1 D) ?5 {
  363.   *((float *)v53 + 18) = 1.0001;
    # x! M) Y1 s6 C
  364.   *((float *)v53 + 19) = 0.000099999997;
    ( w' j# a! W. ~0 \
  365.   (*(void (__stdcall **)(_DWORD))(*(_DWORD *)*v33 + 48))(*v33);
    2 ?; U* x6 N9 W# I; o; @$ O/ V
  366.   return 0;
    - [3 P) s2 N  d0 b% P. \
  367. }
复制代码
0 K! X% N& i1 g  b7 ?' e3 f% {5 x3 {  v
用Cheatengin寻找一个字幕之后,在以下地方断下
/ P! Y! k7 c3 Q2 E4 R6 x) J
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码
0 Z2 M$ Z+ I$ t2 k9 f# z7 A6 c

$ e  s; z3 C0 J0 e2 m在ida pro下查看,是这个函数,从代码看a2字符像是索引号。
' B! `, K) o, V3 K8 d$ b- X3 L稍后需要仔细分析。字幕显示函数应该在本函数上下。
+ |' x; b7 x; v
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码
! I7 e) Q# G; y8 k3 g5 N
% u: X8 o2 r: {$ V& H

' [& R" [# `9 Z' C* u- G# t, }3 f0 n
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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