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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-26 16:32 编辑 : j: S) C0 j' t% e

+ r3 s# \2 t) G  n% ?这个游戏以前分析过,这次再写仔细些,9 ~8 y/ C5 i, V* l4 u* T7 I
CreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。% M! V, R( l- ?9 y3 w: a
这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。
" `2 q1 @- n- z4 U) Q, _
% `4 R7 B" v" O8 f% z
  1. .text:0041641A                 push    ecx
    ) x6 T) b9 E8 f0 C, D8 c  g
  2. .text:0041641B                 mov     [esi+90Dh], dl
    , }# a% P# i" N, f: q7 {9 {+ y- t
  3. .text:00416421                 mov     ecx, hWnd
    8 a6 K: T+ r4 n1 }& D  p
  4. .text:00416427                 mov     edx, [eax]
    ; o8 i9 t- a" l9 U# T1 m" a" t# j. z
  5. .text:00416429                 mov     edx, [edx+40h]. K- o9 P+ r! o# g6 k
  6. .text:0041642C                 push    40h2 E4 x+ Y) I' u: t# u
  7. .text:0041642E                 push    ecx
    ' g5 N3 `' ]9 ?) s9 j, o1 A
  8. .text:0041642F                 push    1. s3 W% T# n* w+ P3 N" K
  9. .text:00416431                 push    ebx0 u9 k" C: f1 i8 C2 ~  U
  10. .text:00416432                 push    eax
    % d% ~0 v0 r$ W- }( q
  11. .text:00416433                 call    edx
复制代码

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

( {/ I1 i- |- W) Z$ X2 F, b3 C- a/ n1 ]0 ~9 ^$ j: ^

# h/ ]' v7 l/ H+ B3 \% j, \
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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