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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑
# i- I2 i; w* v  s3 d: u/ C5 j1 X$ K1 Y' E5 e, a* `8 u
这个游戏以前分析过,这次再写仔细些,
6 @1 c1 U, _: U: ^3 jCreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。
5 y$ c% @3 W# b- S  q这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。
4 P- Q" F" |1 I* r! L% P8 m1 _  B4 Z( o, R/ ^7 x2 l6 e+ l
  1. .text:0041641A                 push    ecx
    5 b4 o  H* [2 B5 f% y# g) B
  2. .text:0041641B                 mov     [esi+90Dh], dl
    * N( g5 x3 t* z/ E+ k( N0 [
  3. .text:00416421                 mov     ecx, hWnd
    4 A; ^) K7 ]0 \+ U! ]
  4. .text:00416427                 mov     edx, [eax]  x5 g) A; p2 O7 b; J* p
  5. .text:00416429                 mov     edx, [edx+40h]
    . x: H0 b: N: i+ o
  6. .text:0041642C                 push    40h" g+ j. n# i3 W9 N( M
  7. .text:0041642E                 push    ecx; [1 H0 p5 n0 q2 V( m
  8. .text:0041642F                 push    1. w+ L* W- Q7 ~
  9. .text:00416431                 push    ebx
    * L& T( @" n% U) c) i/ s8 @
  10. .text:00416432                 push    eax4 `3 \+ u$ {! B; w/ V  j  p; C
  11. .text:00416433                 call    edx
复制代码
  1. . D& e# D8 D5 v  e, x6 z4 S3 ?
  2. int __thiscall sub_415FF0(char *this)
    0 V% u$ i, _' }" j  z
  3. {0 C  x( ?% ]! G
  4.   char *v1; // esi
    - ?  ^/ y7 M+ o4 \3 e
  5.   FILE *v2; // eax8 t7 @+ h/ Q  A8 ]* m
  6.   IDirect3D9 *v3; // eax
    9 A- m( v6 k" j' E; i& N; x& j
  7.   const char *v4; // ecx
    . ~5 T$ Y2 n5 A& f( l
  8.   const char *v5; // edi
    2 h2 H; m7 |+ {- k  K' V6 J. G+ H4 z
  9.   const char *v6; // edx
      P2 x7 H# t$ C/ [7 [
  10.   const char *v7; // eax* l, t1 B! c# z( p( \1 r) G7 O& a; O
  11.   FILE *v8; // eax1 x( `, n: C  {* f" t8 G
  12.   signed int v9; // ebp8 B: f& O) e" _( V! P
  13.   const char **v10; // eax1 T1 ~! g5 H+ R) N' Q
  14.   double v11; // st7
    $ f0 ^' ]( F4 B
  15.   double v12; // st6
    6 t7 J" ~  r# n- `
  16.   const char *v13; // ecx# }& c% s+ I3 k
  17.   FILE *v14; // eax; T2 o( z# H; V* U* Q
  18.   unsigned int v15; // eax
    1 g1 I2 c4 u7 n4 x9 k2 X- J' J
  19.   int v16; // ecx$ U6 v2 Y* V6 w* u2 z, R
  20.   FILE *v17; // eax1 w. ?- j$ u/ z, V( b+ r7 f# M: a
  21.   int v18; // eax
    3 ?  B, i1 |, ]# y: R6 m
  22.   bool v19; // zf" ?6 C- @4 V8 v) o  ?& S  Z
  23.   int v20; // eax" ?0 w7 P( E4 e+ h; o8 e
  24.   unsigned int v21; // edx
    0 h: H% b2 j3 F+ F& Q0 Q" }* D: w
  25.   bool v22; // sf
      p! Z$ G9 H8 e
  26.   int v23; // eax2 X$ A7 @3 E$ x+ C( B4 h6 h! H
  27.   int v24; // eax- i( j" O( |9 a( H3 r
  28.   int v25; // ecx
    ) O  i: }- |6 f+ m* b9 g6 o' k4 F
  29.   int v26; // eax
    - z3 ^/ v1 s4 F) P0 ]! t5 O% E
  30.   int v27; // ecx; ]/ v( l0 D7 ?5 L% ~1 b# |% H9 b
  31.   const char *v28; // eax
    0 ^3 Z& Z! q0 `' a3 d
  32.   const char *v29; // edx
    + X' L5 r: C% ~. y# |
  33.   FILE *v30; // eax
    ! U1 X- S- }: A& w% P) p) ~1 r" }
  34.   void *v31; // eax( j' v4 H& H$ |% X* m8 d
  35.   double v32; // st75 L+ n: d2 i5 ]1 w. q  M
  36.   _DWORD *v33; // esi2 }7 h- p- Q8 {2 l) L' _
  37.   float *v34; // eax
      Z, T2 v& e2 k! O
  38.   float v35; // ecx/ h8 E8 h' ~; a- [1 ~! b
  39.   float v36; // edx% ]* m  {- @' I" n& B  b1 M
  40.   float v37; // ecx
    5 J! e9 C. ^  A- ?* J: x0 U# @! d1 Y
  41.   float v38; // edx
    ; |9 n* y8 \) A6 j6 T
  42.   float v39; // ecx
    " E4 X5 \9 _& S$ s+ |2 I' Y
  43.   float *v40; // eax# e, M8 g0 r5 R  p" ?
  44.   float v41; // edx
    $ v; s- O# H1 ?6 _, Y" ^. ?
  45.   float v42; // ecx
    ! p4 n/ @8 p& ?6 l& @$ @7 N# U2 ?( s4 M
  46.   float v43; // edx1 {  ]0 L4 @3 r* ]6 H3 P$ ~
  47.   float *v44; // eax
    . y1 L- A& J( G% ]+ U0 f7 i0 T8 n8 c
  48.   float v45; // ecx! P5 i& M7 U4 R# P  n1 f
  49.   const char *v47; // ecx
    4 L0 {; }0 F9 S
  50.   const char *v48; // ecx
    ) V/ s& T* X6 l9 a$ p$ Y
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]
    0 y( O3 f$ V4 s" f, W
  52.   const char *v50; // [esp+A4h] [ebp-58h]
    * [1 V; y5 ~" x' {7 z' E; U. R
  53.   const char *v51; // [esp+A8h] [ebp-54h]* Q$ {- k* z# S# P1 d8 a
  54.   const char *v52; // [esp+ACh] [ebp-50h]
    1 F# C9 W+ W' v2 N7 V7 Y! z3 |
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]/ U5 P. g3 E! s  @6 d  M1 t
  56.   const char **v54; // [esp+C8h] [ebp-34h]3 g# k- H# J" D$ E7 d# J
  57.   float v55; // [esp+CCh] [ebp-30h]; g% D+ R& c+ |5 _% [* D
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]; f+ \8 m7 k; C/ q2 @
  59.   float v57; // [esp+D4h] [ebp-28h]! B& v2 h9 g2 e) V
  60.   float v58; // [esp+D8h] [ebp-24h], W+ Q! x$ L% t( v$ h0 y$ ?$ ~
  61.   float v59; // [esp+DCh] [ebp-20h]
    ! h  a7 ]7 g* l
  62.   char v60; // [esp+E0h] [ebp-1Ch]) g3 q9 R% }0 g. a
  63.   int v61; // [esp+ECh] [ebp-10h]9 _! J3 o+ v1 [
  64.   int v62; // [esp+F8h] [ebp-4h]/ `4 e# _5 t$ w- L$ c

  65. ' x1 ]0 n+ U0 p% n2 L- s
  66.   v1 = this;
    & i) A+ V" q4 _0 J+ m* d
  67.   v2 = (FILE *)sub_4D7E8F("Initializing graphics...\n");: N* Y9 ^( M. b
  68.   fprintf(v2 + 1, v52);+ f6 ?! M3 [1 }9 I" Y0 c
  69.   *((_DWORD *)v1 + 492) = 0;
    6 s5 R! I# ~5 ~3 E6 |
  70.   *((_DWORD *)v1 + 609) = 0;( l: O3 I0 p9 ?
  71.   *((_DWORD *)v1 + 611) = 0;2 [7 F/ R4 u. E5 Y+ P  _
  72.   *((_DWORD *)v1 + 610) = 0;; T& O8 {, O# x; g( r  o3 G3 D
  73.   *((_DWORD *)v1 + 613) = 0;
    $ g/ W8 d+ T& Z2 T+ X! u0 @% F/ P/ B% s
  74.   *((_DWORD *)v1 + 612) = 0;" P+ v! e/ q+ \, X. L
  75.   *((_DWORD *)v1 + 614) = 0;
    7 j  f  c+ `3 ]& g5 W& S( f! N& c" Y
  76.   *((_DWORD *)v1 + 601) = 0;6 ~3 N+ m4 _* ^) ^  A" k
  77.   *((_DWORD *)v1 + 600) = 0;
    % A/ J, t. L9 P' Y3 o  u( V8 M
  78.   *((_DWORD *)v1 + 615) = 0;  U6 u9 [1 \1 b8 a
  79.   *((_DWORD *)v1 + 395) = 0;
    ! N0 P! Z4 B7 \+ p( T
  80.   *((_DWORD *)v1 + 488) = 0;, l# G& r. G' B, G; V2 |
  81.   *((_DWORD *)v1 + 486) = 0;
    ) e' w2 ]1 T! p& i) Q" T
  82.   *((_DWORD *)v1 + 487) = 0;
    ; h  q; U3 f9 k. h
  83.   *((_DWORD *)v1 + 489) = 0;8 d7 B4 ?  J6 Z/ n4 q
  84.   *((_DWORD *)v1 + 491) = 0;
    1 |/ x7 O! y7 n+ M; p0 \5 E
  85.   *((_DWORD *)v1 + 514) = 0;  {5 p" [  Y5 e& @8 z& k$ {0 O& e
  86.   *((_DWORD *)v1 + 597) = 0;# B2 e% c/ u2 p, ~
  87.   v53 = v1 + 1968;, F( E& R" a7 E% K1 N/ A5 q* ]' z
  88.   *((_DWORD *)v1 + 498) = 0;
    & w6 k0 v6 o9 M/ }
  89.   *((_DWORD *)v1 + 499) = 0;
    * U) e$ x9 Q% @$ I2 j, c3 `
  90.   *((_DWORD *)v1 + 500) = 0;
    . ?" j, Q' W" a4 f
  91.   *((_DWORD *)v1 + 501) = 0;4 e; N+ P/ |0 B$ N; ^
  92.   *((_DWORD *)v1 + 502) = 0;
    2 G$ V# k$ m! f' N$ u; s2 H
  93.   v52 = (const char *)32;
    - b! M9 N( ]) p, Z$ b- S
  94.   *((_DWORD *)v1 + 578) = 0;0 S$ y. I; ~% Q# r
  95.   v1[2316] = 1;4 Z* ]" g. B3 \1 E" F' c3 }# d
  96.   v1[2476] = 0;% v1 `5 _: g2 Q: X4 k" a2 h, P
  97.   v3 = Direct3DCreate9((UINT)v52);
    " v! M+ w+ `+ L- V! V" i+ x% B
  98.   *((_DWORD *)v1 + 384) = v3;
    ) p, o% s% H2 B5 ?6 ]6 i
  99.   if ( !v3 )
    ' L5 V6 @- C# A) w& }5 Z' E
  100.   {! e& |9 p, X. P3 E
  101.     v5 = v56;' ^3 v6 O3 H8 x$ h* E
  102.     goto LABEL_27;
    / O+ I' [5 R: z, D  g
  103.   }' i7 I4 W6 {% g+ `- ~
  104.   v5 = (const char *)v3->lpVtbl->GetAdapterDisplayMode(v3, 0, (D3DDISPLAYMODE *)&v60);) i! J# z0 p; S. T
  105.   if ( (signed int)v5 < 0 )
    ! U: E0 ^8 a! q' ]. Q8 _
  106.     goto LABEL_27;- H- O* r4 O) w* o- T
  107.   (*(void (__stdcall **)(_DWORD, _DWORD, signed int, char *))(**((_DWORD **)v1 + 384) + 56))(+ M" N' j" K4 G8 \# O8 o
  108.     *((_DWORD *)v1 + 384),9 r) v/ ]  o' _# v, B6 O
  109.     0,0 y8 Z" J1 j/ Z; h0 P& i7 x1 K" K
  110.     1,
    0 J$ O7 s0 J4 h! S, `$ M8 |" E) a
  111.     v1 + 1640);
    4 u6 k4 q9 B9 F
  112.   memset(v1 + 1584, 0, 0x38u);
    , W( z% Z1 e- j$ W8 B9 {5 c' A$ R
  113.   *((_DWORD *)v1 + 404) = 0;8 v! t3 C* v" D
  114.   *((_DWORD *)v1 + 402) = 1;, Y% P8 O8 s) D" W/ A
  115.   *((_DWORD *)v1 + 403) = hWnd;: p3 U( N" z3 R& m# b, k8 N1 y
  116.   *((_DWORD *)v1 + 407) = 0;+ g. ]$ F) C) F( @  y' r
  117.   *((_DWORD *)v1 + 399) = 1;3 {: G0 I* \; |5 L! y( F
  118.   *((_DWORD *)v1 + 398) = 21;3 t1 d1 _3 V, }- x0 @) K6 m& U
  119.   *((_DWORD *)v1 + 405) = 0;
    1 [  @: d- y6 f- U" y% v
  120.   *((_DWORD *)v1 + 522) = (unsigned __int16)word_558176;! }/ m9 G$ ?" k" e
  121.   v6 = (const char *)word_558174;4 C0 v1 w% [  |
  122.   *((_DWORD *)v1 + 523) = word_558174;
    . [* W  L1 ?  s1 m6 C
  123.   v7 = (const char *)*((_DWORD *)v1 + 522);
    9 u, W: P+ y- U( I  ~% h
  124.   v52 = v6;# O1 F3 N' I2 j* ^7 G, K
  125.   v51 = v7;
    ! w" e( v. m$ l$ I/ u2 V4 l
  126.   v50 = "Screen resolution is %d x %d.\n";
    ( @( L' [" c8 U6 V4 J8 e
  127.   v1[2076] = *(_DWORD *)&word_558174 == 67109632;
    4 @+ n$ ]2 G$ K- Z. \  [
  128.   v8 = (FILE *)sub_4D7E8F(v50);
    , Z$ j; \$ _9 W% g- R7 N; k
  129.   fprintf(v8 + 1, v50);) I9 m- w4 M" E2 }% Y( m7 B
  130.   v9 = *((_DWORD *)v1 + 522);: o) \( T& [1 \
  131.   v54 = (const char **)*((_DWORD *)v1 + 523);
    9 J7 P' T* o* I  }. L
  132.   v10 = v54;/ W& S% J" d$ k7 n  {7 w2 }
  133.   *((_DWORD *)v1 + 396) = v9;
    3 F$ P/ g$ I9 {0 O- E
  134.   *((_DWORD *)v1 + 397) = v10;
    , [+ I! B5 J+ }: q
  135.   v55 = (double)v9 * 0.0009765625;! R- v2 N  Z) Z8 o: E, t
  136.   v11 = v55;' d' q; ]8 \0 A+ M
  137.   *((float *)v1 + 520) = v55;
    # t7 J* q! h: |$ P8 u
  138.   v55 = (double)(signed int)v54 / 768.0;
    5 G3 }; V: y5 X
  139.   v12 = v55;2 _$ a' I: p' c+ S
  140.   *((float *)v1 + 521) = v55;
    : w& `" `3 n' k) R+ D, l. [
  141.   *((_DWORD *)v1 + 524) = (signed int)(v11 * 1024.0);# C/ A$ P1 k1 Z( V) ^
  142.   v52 = (const char *)1;
    8 m4 Q* @! R0 [/ M; f  f$ b2 F
  143.   v51 = (const char *)(v54 + 11);
    7 U) Y& _) l; q$ Y/ D
  144.   v50 = (const char *)(v9 + 6);3 h' h! G1 [. }+ r) m* C2 |
  145.   *((_DWORD *)v1 + 525) = (signed int)(v12 * 512.0);
    $ L7 T3 K1 G6 d+ k4 t4 a% N( v
  146.   *((_DWORD *)v1 + 515) = 0;; F3 ~4 A4 d! T2 {
  147.   *((_DWORD *)v1 + 517) = 1024;& [# m  H' r$ w* A/ U& B" l
  148.   *((_DWORD *)v1 + 516) = 128;! {2 K% H0 ]' }- w9 S4 ?5 W
  149.   *((_DWORD *)v1 + 518) = 640;4 {1 T# j: D; v% B
  150.   MoveWindow(hWnd, 0, 0, (int)v50, (int)v51, (BOOL)v52);+ L) v/ y& w4 \% P& V1 V
  151.   if ( (*(int (__stdcall **)(_DWORD, _DWORD, signed int, int, signed int, signed int))(**((_DWORD **)v1 + 384) + 48))(
    & X, u" u' W& r  U2 E0 z8 f
  152.          *((_DWORD *)v1 + 384),
    7 E5 l6 f! ]" E8 o) Z
  153.          0,
    ) M* m; k9 l) h! _# s: {
  154.          1,8 C$ j- [2 O) U  P
  155.          v61,; t/ f$ i* Z6 T% f
  156.          21,
    ; l7 C* P- u& Q' W7 \0 f
  157.          75) < 0 )
    / d! s. T* p) _6 c0 |' x  a
  158.   {
    1 N  h) k' g7 m" [4 ~( Q
  159.     v52 = v5;
    & F2 T& s; H; \: n  J4 [# R
  160.     v51 = v13;- B" d# @4 C1 z" r
  161.     v55 = COERCE_FLOAT(&v51);
    9 E* A) X  b! ]) R3 q, ]2 k7 D
  162.     sub_456DD0("Direct3D initialization failed. No appropriate Depth/Stencil-Buffer-Format found.");
    % v8 H5 s/ p; f! J
  163.     v50 = v47;: r, y0 P; }' A0 X! L% o
  164.     v54 = &v50;/ i4 a# s) @; y- y& X$ d
  165.     v62 = 0;  |3 G7 E" x9 N3 |! ^+ H
  166.     sub_456DD0("cCougarGraphics::cCougarGraphics");
    ! {+ O8 W8 F, r
  167.     v49 = 118;
    ) K2 L) ?, \) o' M9 T0 l; y9 f. M" j
  168.     goto LABEL_28;
    " n4 j; [0 i9 a6 C3 Y1 y
  169.   }. ~5 j; c; Y* L8 q8 J1 i
  170.   v52 = "Depth/Stencil Buffer is D24S8.\n";1 Y7 Q! K0 G- K% q
  171.   *((_DWORD *)v1 + 576) = 24;
    & D- I$ F/ A+ g. v
  172.   *((_DWORD *)v1 + 577) = 8;
    " h1 K, Z! b5 A2 E- C
  173.   *((_DWORD *)v1 + 406) = 75;+ E8 d3 C$ i# l4 y/ _
  174.   v14 = (FILE *)sub_4D7E8F(v52);
    ( k4 y. s" E) ^
  175.   fprintf(v14 + 1, v52);7 E7 O( a' N/ ^: J3 G5 G8 i
  176.   *((_DWORD *)v1 + 409) = 1;( a8 O2 c7 \: w1 N6 ~. w
  177.   if ( dword_558178 != 4
    / x  c5 L  m" X; K" I
  178.     || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)) f) q0 p0 S' u) w+ K
  179.                                                                                                 + 44))(
    0 C7 t/ K2 f) p. [5 v7 E0 [1 c
  180.          *((_DWORD *)v1 + 384),. a9 L* [! P& C
  181.          0,8 X( @5 @, W; D6 A) A) }6 L, T7 e; Z  L
  182.          1,
    : ~  K; L. r& H* l, Z5 s4 w) Y
  183.          21,& P: E7 u3 s9 h: t& A
  184.          *((_DWORD *)v1 + 404),
    2 D+ I8 r# c, o* B5 L1 Q
  185.          4,
    # ?( U! W7 h) M8 N# N- o  z
  186.          0) )4 a; \% t" r) m
  187.   {- @" q8 U8 f5 D, U
  188.     if ( dword_558178 != 2" w6 U2 [" X  G# B) ^
  189.       || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)% G9 ^" y+ Q9 D+ v  H; t% b
  190.                                                                                                   + 44))(
    8 n4 z" q: h& Q6 `( ~
  191.            *((_DWORD *)v1 + 384),1 X$ R4 G2 |8 Y( J9 u! k
  192.            0,% i; Z& o3 S- {$ m6 D1 x
  193.            1,* L$ w3 B. C9 Z  m& ~8 D6 m
  194.            21,
    8 {& _+ Y& J  A. p
  195.            *((_DWORD *)v1 + 404),2 M' ?; M$ A; h* _/ Y
  196.            2,
    8 B+ O) t# N* \3 E* j
  197.            0) )
    1 s0 A+ s- I; X, G4 m
  198.     {2 Y$ u# x& X) D1 H
  199.       if ( (unsigned int)dword_558178 > 0
    # o5 M) [% T6 F9 r0 _$ x2 d
  200.         && !(*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, const char **))(**((_DWORD **)v1 + 384) + 44))(8 G. w2 T/ T7 r( l  M
  201.               *((_DWORD *)v1 + 384),
    " A7 H  I7 L; e$ ?. a( o3 _
  202.               0,
    4 b; ]9 I5 l; T
  203.               1,& {) g2 r% {- x
  204.               21,
    ; B! C7 a4 f$ s( L
  205.               *((_DWORD *)v1 + 404),
    . d8 e2 L7 O9 F; q  {2 s
  206.               1,
    # ^' F8 p. d% d% \
  207.               &v56) )! K/ w; w8 ^8 ^, O
  208.       {
    ) b! q9 L# B4 j8 [+ P, [; i
  209.         v15 = (unsigned int)v56;
    8 O5 g' `8 Z2 A. D: z0 m3 |
  210.         *((_DWORD *)v1 + 400) = 1;
    . H- Q# `' X7 D
  211.         v16 = dword_558178;
    * {" H' Q& X" ?6 u& y4 S
  212.         if ( dword_558178 >= v15 )
    % k, i* g$ T9 |$ X
  213.           v16 = v15;4 u, X' d! ^! C$ C
  214.         *((_DWORD *)v1 + 401) = v16 - 1;
    % R: `1 R+ G+ ~, W
  215.         if ( dword_558178 < v15 )
    / B' v* _  G/ i0 r1 |
  216.           v15 = dword_558178;6 E2 T: `' n7 Q4 \, g# }/ c
  217.         *((_DWORD *)v1 + 578) = v15;  t6 L* @# y8 t6 J* V
  218.       }( y( N' b: G: y
  219.     }
    - ~! }, h9 K% E# V& G3 a
  220.     else
    0 }  W& M/ S, d, O* b$ O
  221.     {2 }$ k& W  Y0 j7 k& V" R
  222.       *((_DWORD *)v1 + 400) = 2;
    * @' E3 I* n1 N3 |
  223.       *((_DWORD *)v1 + 578) = 2;
    $ {) `8 {8 \$ m
  224.     }  [! @2 o! C, y2 w
  225.   }
    ! H0 E( o2 X, P0 \0 ]1 R" Y+ Y0 a
  226.   else( M$ Q, G. [& f
  227.   {
    7 I- g$ }$ f! Y& |7 F% |, h+ S
  228.     *((_DWORD *)v1 + 400) = 4;4 e9 A5 H3 H7 r& a# F4 H& x# [+ D- X
  229.     *((_DWORD *)v1 + 578) = 4;
    6 \; Z( Q7 h, k7 O
  230.   }
    & q; c+ |# k: a/ E% ?/ b
  231.   v52 = (const char *)*((_DWORD *)v1 + 578);
    0 V0 n; S! |+ J8 o( @  j- [, z
  232.   v17 = (FILE *)sub_4D7E8F("AntiAliasing is %d.\n");
    ; f+ T  L- Z; V6 g2 k  d  {* j
  233.   fprintf(v17 + 1, v51);
    7 c$ d0 w( f: ~- ]
  234.   v18 = *((_DWORD *)v1 + 384);
    $ _- |( o& I3 Z1 l/ `
  235.   v19 = *((_DWORD *)v1 + 578) == 0;; t" I5 q2 _0 F& }5 Q
  236.   v52 = (const char *)827611204;+ }& R4 B8 `, _
  237.   v51 = (const char *)3;
    " W9 l9 Y* C$ Z6 X
  238.   v50 = 0;
    5 C. u9 B4 _4 s/ ]
  239.   *((_DWORD *)v1 + 402) = 2 * v19 + 1;
    ; y1 k! N  S1 z' n' m
  240.   v20 = (*(int (__stdcall **)(int, _DWORD, signed int, int, const char *, const char *, const char *))(*(_DWORD *)v18 + 40))() f: \. H2 N9 S3 |3 }4 [
  241.           v18,+ s+ H. c! w9 s$ p7 x( [& h
  242.           0,: W- u$ G6 }3 Y& n( |  o5 f0 W: n8 {
  243.           1,
    2 s7 Y1 M: g) t% V
  244.           v61,( l2 L) E+ x+ f/ W, W% ~7 I; r
  245.           v50,
    , w: x; s  z* ~9 y9 B5 |- o4 R
  246.           v51,
    ( Y) Z2 ~* ]1 O- |9 E4 _$ u, {
  247.           v52);& Q; \0 F3 Z% E0 _) w
  248.   v21 = *((_DWORD *)v1 + 425);
    6 i2 R* ~, s& v, J7 \  ]( Z
  249.   v22 = v20 < 0;
    * [2 I; V0 N/ @1 ]. D; X9 _( C
  250.   v23 = *((_DWORD *)v1 + 384);
    / E" ~. n* Y+ ]
  251.   v1[2316] = !v22;
    8 W; h7 v; n9 ~5 L# A
  252.   v52 = v1 + 1540;2 h. h8 G9 N: D% }- {+ S
  253.   v51 = v1 + 1584;
    , [9 g3 A0 U: J% l
  254.   v1[2317] = (v21 >> 14) & 1;* ]/ n5 }5 ?) W5 }1 ~
  255.   v5 = (const char *)(*(int (__stdcall **)(int, _DWORD, signed int, HWND, signed int, const char *, const char *))(*(_DWORD *)v23 + 64))(+ `& }0 y& f$ }2 n5 m7 ]
  256.                        v23,2 U) F9 d& Q4 h; \, I
  257.                        0,/ {; V- m1 W; S0 `
  258.                        1,
    " e, P' ~8 X$ O  s9 b2 }
  259.                        hWnd,( K) _* c9 ?" z# D6 }" e
  260.                        64,
    $ |$ t. |2 p" T) |; u" l- V3 B" Q
  261.                        v51,
    5 [4 I/ K4 W1 r: O) B$ G1 ^4 f
  262.                        v52);
    , V$ d5 M4 }0 ?9 B$ Z/ ]# B
  263.   if ( (signed int)v5 < 0 )
    $ m! \7 _# J' ]  |' o/ Q
  264.     goto LABEL_27;
    4 w* M/ v3 h, Y, v) @  i& V! t/ v* c
  265.   if ( dword_558180 && ((v24 = *((_DWORD *)v1 + 425), v24 & 2) || v24 & 0x100) )3 A2 c  d; r! x
  266.   {
      r( R" [; [+ C: V; U
  267.     v25 = *((_DWORD *)v1 + 609);9 l; U6 j6 I* w. D$ ^
  268.     v26 = sub_418670(*((_DWORD *)v1 + 522));
    / J1 S$ n: w. k( ^
  269.     v52 = (const char *)*((_DWORD *)v1 + 523);
    ) L8 n0 @9 J, ^  N
  270.     v27 = *((_DWORD *)v1 + 609);. }% y* @. I/ [6 ~
  271.     *((_DWORD *)v1 + 496) = v26;
    5 J  x' p1 b% o
  272.     v28 = (const char *)sub_418670(v52);4 _8 }% d, D9 l
  273.   }7 e  }# W; s" |
  274.   else
    . R9 b1 d" ^2 h# A% G
  275.   {
    " \) g+ V5 J2 ~. {
  276.     v28 = (const char *)*((_DWORD *)v1 + 523);- ^* Z! L- V- e, t7 s2 p9 q/ d8 L
  277.     *((_DWORD *)v1 + 496) = *((_DWORD *)v1 + 522);* r& C) C3 O7 E
  278.   }
    & \! O) P& t/ R' Z( u8 E
  279.   v29 = (const char *)*((_DWORD *)v1 + 496);
    8 @" |  a* ]1 t7 N
  280.   v52 = v28;' Y4 Z1 j  {6 j5 i+ ~
  281.   v51 = v29;
    ( p( Q6 P7 a% ^$ u0 [# M8 Q
  282.   v50 = "PostProcess Surface is %d x %d.\n";' L; q) G3 n' N! w
  283.   *((_DWORD *)v1 + 497) = v28;
    : t: v" l# Z/ F- q
  284.   v30 = (FILE *)sub_4D7E8F(v50);
    ; d' L3 J9 s- {/ r
  285.   fprintf(v30 + 1, v50);
    ' L$ x2 z! a5 q3 Q; T
  286.   (*(void (__stdcall **)(_DWORD, _DWORD, char *))(**((_DWORD **)v1 + 385) + 88))(*((_DWORD *)v1 + 385), 0, v1);# M$ s" }2 _. S2 A! x$ M: w' t
  287.   sub_413100(v1);, e6 T6 h! `, Z, y. D' L; F
  288.   sub_411D60(v1);
    # C" X4 y( [: D
  289.   v31 = malloc(0x78u);
    - K3 O5 p$ N$ p! v
  290.   v32 = -0.5 / (double)*((signed int *)v1 + 522);  D! f. U+ B2 L; t8 M, o) O
  291.   *((_DWORD *)v1 + 599) = v31;
      j9 S* P* E% {' m) u9 R4 Y' R/ h
  292.   *((_DWORD *)v1 + 600) = 0;* G: O. e4 L7 c) F* I1 H1 u2 K
  293.   *((float *)v1 + 526) = v32;
    % `8 _4 w9 X. G, ]. b
  294.   *((float *)v1 + 527) = -0.5 / (double)*((signed int *)v1 + 523);
    ' |; [( k6 p2 g4 ]' y5 A
  295.   sub_411CC0(v1);
    ' g- f; }' P; Y; U+ I9 J
  296.   v33 = v53;
    ! C/ K* ~% C) l1 P2 Z$ s# B
  297.   v5 = (const char *)(*(int (__stdcall **)(int, signed int, signed int, signed int, signed int, _DWORD *, _DWORD))(*(_DWORD *)dword_559B7C + 104))(
    6 |3 {  p3 [: E2 G/ v: D9 i, E+ d1 {
  298.                        dword_559B7C,' T/ p! K3 n1 u2 J# Y& U
  299.                        80,
    2 T# R! {- D- w6 B8 B& d9 b" G8 |
  300.                        8," z8 Z* ?  D* [. |2 p: T6 q
  301.                        258,+ v! j% @* G- G( Z; l7 Y( o: C7 R
  302.                        1,. f" c6 @3 f/ r' r; W' e1 t
  303.                        v53,
    / T6 v( ?/ Z+ i5 u$ A9 V
  304.                        0);& \) M% M! h% J, }8 m
  305.   if ( (signed int)v5 < 0 )
    # P0 ^/ K4 U* C* }
  306.   {2 }" {. l  E2 m& T  b
  307. LABEL_27:2 ?7 |% A) G/ w* i" `8 U
  308.     v52 = v5;
    4 a7 H! m$ y% n6 q
  309.     v51 = v4;
    3 S( X1 v; _8 W# P7 v; ]3 _5 x
  310.     v55 = COERCE_FLOAT(&v51);
    7 X) v7 }' |# C/ `; s
  311.     sub_456DD0("Direct3D initialization failed.");; ~# W6 V  u; ?3 c" D6 e; b" W
  312.     v50 = v48;' T% A. r3 P2 K2 m5 |, {! \
  313.     v54 = &v50;' n4 {! w, l0 g
  314.     v62 = 1;2 P+ w8 U1 c8 Q4 ~. r6 O
  315.     sub_456DD0("cCougarGraphics::cCougarGraphics");% T0 z# n2 ?, y6 L0 y
  316.     v49 = 205;, [0 ?- z( E, ]( N, h7 g$ [
  317. LABEL_28:9 ?6 j, W1 h% o9 H  u; J& L0 D
  318.     v62 = -1;. T  W$ ]  {0 e/ M
  319.     sub_40CB30(1, ".\\source\\class_graphics.cpp", v49, (char)v50, (char)v51, v52);
    8 i' U+ {' R3 k" M) b
  320.   }
    / Y, l; l; l$ M" @5 x
  321.   (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD **, _DWORD))(*(_DWORD *)*v53 + 44))(*v53, 0, 0, &v53, 0);9 H1 O5 E) q6 t: ]
  322.   v58 = -1.0;
    ; r2 p0 K' `* W/ M6 m
  323.   *(float *)v53 = -1.0;1 R3 G- l3 l# I, ~9 r2 c% I
  324.   v59 = 1.0;- J8 ~9 e' |. e0 S
  325.   *((float *)v53 + 1) = v58;
    * F! K# a, m/ O0 o% ?
  326.   v57 = -1.0;
    , q& Y5 m* G- |. L5 r1 t. o4 b  X! [% u8 B
  327.   v58 = 1.0;7 F0 Y5 [8 V  |0 J: _
  328.   *((float *)v53 + 2) = v59;$ W% J+ w3 B; _1 a0 G) T/ c
  329.   v59 = 1.0;0 V. P+ T2 C1 k) U
  330.   v34 = (float *)v53;
    4 ]; {1 C: D; P% i2 }- r7 {
  331.   v35 = v57;
    ! f; m) U2 N' ~7 @- R* f* ^6 D
  332.   v57 = 1.0;& T7 g9 {2 ~# L/ g3 w7 a
  333.   v36 = v58;
    - z8 D+ p3 L# `: `- _' W
  334.   *((float *)v53 + 5) = v35;  p0 J5 ?2 P1 |
  335.   v37 = v59;0 m& A: M. e% A0 K. |' }& S
  336.   v59 = 1.0;1 R+ n$ e* B, g! m5 b2 m$ x
  337.   v34[6] = v36;
      p1 n& G, I! t. ^% T: t
  338.   v38 = v57;- u  ^8 I* m: F' c) k
  339.   v58 = -1.0;, c+ s6 a* G9 S0 N0 H. y* x; |; C
  340.   v34[7] = v37;7 Z( Y8 E- a: d& n7 s) ^
  341.   v39 = v58;, k! C" D4 L/ K8 g" F
  342.   v57 = 1.0;
    3 B7 f: C  Z: e9 k
  343.   v58 = 1.0;
    ( z) r  X7 W  r. z# _2 J
  344.   v40 = (float *)v53;5 B: a% v: t1 _! I8 V$ N
  345.   *((float *)v53 + 10) = v38;* `2 Y: B( \3 O0 j$ e8 N/ j
  346.   v41 = v59;
    : K2 W: M' g& G& @1 d
  347.   v59 = 1.0;
    : X  J, {, a8 R3 ]- w
  348.   v40[11] = v39;, a, b" x' z' Z5 l% b: @" H+ F
  349.   v42 = v57;* \& [9 S( @( ~, n
  350.   v40[12] = v41;
    / r# a2 B% j2 a8 s5 w
  351.   v43 = v58;
      B9 c5 }7 z' e& y
  352.   v44 = (float *)v53;/ [; U' f' {+ l( _' S6 [
  353.   *((float *)v53 + 15) = v42;. @( ~$ I& I7 x  U: E+ Y
  354.   v45 = v59;: ?6 k) V5 _3 V$ Q6 ~' ]! u
  355.   v44[16] = v43;: B: l6 `4 ?: n
  356.   v44[17] = v45;
    # R" X* G7 F# J2 R4 P( _
  357.   *((float *)v53 + 3) = 0.000099999997;
    7 `" b  E7 \; i! p) w$ o" `9 o
  358.   *((float *)v53 + 4) = 1.0001;8 e* d% m0 t+ C% v% y0 e, Q+ V+ l& E
  359.   *((float *)v53 + 8) = 0.000099999997;0 u5 H$ R* g! O
  360.   *((float *)v53 + 9) = 0.000099999997;; ^+ s$ `$ {0 _
  361.   *((float *)v53 + 13) = 1.0001;3 ?# q6 J$ ~0 d0 y( q  Z/ Y
  362.   *((float *)v53 + 14) = 1.0001;
    " i3 J( b" K9 S& g7 N5 L; [8 d4 Z& x
  363.   *((float *)v53 + 18) = 1.0001;
    0 |" w+ x6 [& S8 h$ }4 l7 E) V" u
  364.   *((float *)v53 + 19) = 0.000099999997;
    ! F7 E1 G$ w8 S1 \; b' Z- B
  365.   (*(void (__stdcall **)(_DWORD))(*(_DWORD *)*v33 + 48))(*v33);
    4 J! X, v1 \' m# E$ w
  366.   return 0;" S$ x7 B7 b* t) t/ s; D* p2 N
  367. }
复制代码
/ P) p/ k/ l  F4 d7 L- R
用Cheatengin寻找一个字幕之后,在以下地方断下& }; U6 x, m' W# ~( s- _2 G: D4 w( o
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码
6 b: v( m% [8 S7 G1 u8 z
% k9 H6 b3 v4 O: ~% ?
在ida pro下查看,是这个函数,从代码看a2字符像是索引号。; Z0 p' e  S- s# m! Z
稍后需要仔细分析。字幕显示函数应该在本函数上下。
0 T  n9 s3 V3 ]4 ]* X
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码
) {; p% x, n) n: [3 S3 @" |
/ Y% k! n1 F5 W
. \/ {3 R4 `: A
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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