看了一下惊恐鬼屋Scratches这个游戏。8 P( W( c" c( v# d5 S
包文件有2个,scratches.res和scream.res,
) k; a; F: o; F( @) @包文件的格式如下,可以用Game Extractor来解开。# t7 ^/ t, U- v1 Q3 f
http://wiki.xentax.com/index.php/Scratches_RES
0 e6 t4 R1 g) ]! U8 ]从scratches.res里面解出一个font-michael.tga文件,就是在游戏利用的字体。) h* D3 x7 u' e' k- U/ L
scream.res里面也有一个字体文件,但是游戏好像没有用到。: k9 c* T/ X1 O* X5 P1 ~) b+ P
0 K7 \1 `" p+ o0 c& P4 P用OD调试后,发现这是一个使用opengl API的游戏。# `/ E9 ?# U: b9 [/ k0 Q
在某句字幕上下了内存断点,断下来之后找到了和显示有关的代码段。! n/ w6 A' M# K( j: p
$ v9 g+ q1 x+ M0 q! K
0040C5D0 /$ 53 push ebx
$ O) e9 R5 H# P, o$ D0040C5D1 |. 51 push ecx
7 }$ `: X& }6 X" B9 l6 n0040C5D2 |. 52 push edx
" P9 I& X! d n0040C5D3 |. 56 push esi+ r* z7 \7 ] ~# Y
0040C5D4 |. 57 push edi
% I e; \. U4 y" Z/ W) f5 ^+ E0040C5D5 |. 55 push ebp$ F+ V. p9 Y1 f. C! ^
0040C5D6 |. 81EC 10010000 sub esp, 1101 [& b2 Y' J2 X4 {1 ~* U
0040C5DC |. 89C6 mov esi, eax0 o% l9 t: V. N0 c
0040C5DE |. 89C7 mov edi, eax
$ F& B L$ K, G, X5 N1 }9 b+ k0040C5E0 |. 29C9 sub ecx, ecx: L! {9 n4 H' t: {! {0 f w. q
0040C5E2 |. 49 dec ecx" [7 |1 z# R U! v: Z0 U
0040C5E3 |. 31C0 xor eax, eax# x* S- f; F% e& u& N n
0040C5E5 |. F2:AE repne scas byte ptr es:[edi]+ `- v8 @5 F2 u% I) S9 B% b
0040C5E7 |. F7D1 not ecx; x0 Y. J' s- U, l2 S2 p
0040C5E9 |. 49 dec ecx m+ J1 b% \& K5 Y7 U- Q) {- t; T
0040C5EA |. 31DB xor ebx, ebx
m, y; I* y* y" [& Y0040C5EC |. 31ED xor ebp, ebp3 Q- E4 r% `- T! h: |
0040C5EE |. 81F9 00010000 cmp ecx, 100
# o& J, I6 S5 Z9 o+ J0040C5F4 |. 72 0D jb short 0040C603
. R1 W; G& M# d% G) Y) w, Q7 b" e0040C5F6 |. 81C4 10010000 add esp, 110$ `, d1 Q$ b3 v. U! p) H
0040C5FC |. 5D pop ebp
: n- n8 n" z. c$ u. q: K0040C5FD |. 5F pop edi
9 W' F1 H" ]2 z4 S" U0040C5FE |. 5E pop esi* C* h. b, o/ Z) h" N' `- C" F+ J
0040C5FF |. 5A pop edx
$ Z& \$ r8 L; a0 z7 J* [; o( Y; y0040C600 |. 59 pop ecx- O! J9 P; i$ }4 i$ S# d
0040C601 |. 5B pop ebx+ {/ _0 z, `2 g' u: K# b- P9 c# d) z
0040C602 |. C3 retn
: h# X: b+ C$ l* I1 G0040C603 |> 89E7 mov edi, esp
5 @! @7 Q) U2 p. j# w, n2 E1 U0040C605 |. 57 push edi
: I0 w) }- u% X# h/ c0040C606 |> 8A06 /mov al, byte ptr [esi]
M0 i- S/ R8 A7 X0 q! G$ [0040C608 |. 8807 |mov byte ptr [edi], al3 b6 N8 L0 ~& [1 h& ~' Z) F
0040C60A |. 3C 00 |cmp al, 0
5 b7 |5 s2 m" b( z9 H5 v; G" t7 g1 y0040C60C |. 74 10 |je short 0040C61E9 R+ h. Q8 C0 G& P
0040C60E |. 8A46 01 |mov al, byte ptr [esi+1]
7 q+ S. d; E1 i9 Y0040C611 |. 83C6 02 |add esi, 25 k, c4 I* b. E2 A! N
0040C614 |. 8847 01 |mov byte ptr [edi+1], al
1 }: s( E6 M5 M o0040C617 |. 83C7 02 |add edi, 27 f: D$ u4 L* i3 ]. Y+ ^
0040C61A |. 3C 00 |cmp al, 05 k2 L: J6 n3 @" k9 h$ R* D \: T9 K
0040C61C |.^ 75 E8 \jnz short 0040C606
6 x" f/ [8 R8 B5 u7 ~. s0040C61E |> 5F pop edi6 n |, g% ~6 u% N! C- c9 w* E& w; a
0040C61F |. 8A1424 mov dl, byte ptr [esp]) Y; b: p) D& B' I2 o
0040C622 |. 89E0 mov eax, esp
. ~) |+ e% a9 n: X0040C624 |. 84D2 test dl, dl" o" M K1 c# S% ]
0040C626 |. 74 09 je short 0040C631
6 S& w, ]8 ?( c0 N- [1 M0040C628 |> 8A70 01 /mov dh, byte ptr [eax+1]
0 o) H% E6 @1 `- e$ K0040C62B |. 40 |inc eax
; p4 F' Y( @% N* C+ b0040C62C |. 45 |inc ebp' D/ M$ Y6 }7 d7 Y/ a- i
0040C62D |. 84F6 |test dh, dh4 ~' D' \) r, r. R/ u$ O: v
0040C62F |.^ 75 F7 \jnz short 0040C628
& [" @& _& d D6 G0040C631 |> 81FD D2000000 cmp ebp, 0D2
' P# @7 f9 _* \$ x) U$ \3 s( H0040C637 |. 0F8E 61010000 jle 0040C79E
% |6 z- _3 Z0 F, l. |0040C63D |. 89EA mov edx, ebp8 Y4 N+ E$ y; N0 Z: u2 J* m N
0040C63F |. 89E8 mov eax, ebp
! U) o2 v4 H# O- T3 C6 J2 O0040C641 |. C1FA 1F sar edx, 1F/ ^! k: r u7 z; B6 `% j) ~
0040C644 |. C1E2 02 shl edx, 2 {% x8 q( D4 p1 z$ K+ m
0040C647 |. 1BC2 sbb eax, edx
; |* f. g- J) `+ m0 F0040C649 |. C1F8 02 sar eax, 2, [& ?) H; D9 s: M5 V+ C+ ^. P% Y F
0040C64C |. 89C7 mov edi, eax
9 m9 p* ?. n) G( h$ R2 f0040C64E |. C78424 040100>mov dword ptr [esp+104], 3
3 K# r: D. Q! k+ f3 M$ @0040C659 |> 89E0 mov eax, esp
6 Q; M' P. P5 f; D2 A' U0040C65B |. 31D2 xor edx, edx: J* g# ]% F. I6 U, J
0040C65D |. 8A0C24 mov cl, byte ptr [esp]
G _/ h5 n7 x3 q( I6 Q9 L0040C660 |. 8915 8477EF02 mov dword ptr [2EF7784], edx
: s' Y9 H' t9 N5 E9 @0040C666 |. 8915 8C77EF02 mov dword ptr [2EF778C], edx
, H% z0 z% b3 v( J1 B0040C66C |. 899424 080100>mov dword ptr [esp+108], edx8 W8 R7 v4 `! r+ I
0040C673 |. 89E2 mov edx, esp
G; H' u5 x9 p0 c$ E; d0040C675 |. 84C9 test cl, cl
, E1 |/ g# E- P/ c& N" A0040C677 |. 0F84 89000000 je 0040C706
4 V2 \" r) H% Y3 j4 T' |$ N6 h0040C67D |. 8B8C24 040100>mov ecx, dword ptr [esp+104]1 K& t$ R' I! r# Y$ d/ R$ n4 m
0040C684 |. 4F dec edi
* W1 k# ]! U8 F. m% T5 n0040C685 |. C1E1 02 shl ecx, 2
8 s, v& O- |$ f6 p6 P* S0040C688 |. 89BC24 000100>mov dword ptr [esp+100], edi5 I3 L( g& _9 l- O" E& b
0040C68F |. 898C24 0C0100>mov dword ptr [esp+10C], ecx8 b m. `9 X5 p& d w6 ]3 }/ T
0040C696 |> 8A0A mov cl, byte ptr [edx]
. i% q- [* R1 p) n) a* L0040C698 |. 80F9 20 cmp cl, 20/ _2 A" K/ h5 N, m
0040C69B |. 0F85 6A010000 jnz 0040C80B
/ T/ X$ P0 l& e# ?' o. ^7 g0040C6A1 |. 3B9C24 000100>cmp ebx, dword ptr [esp+100]! E3 }! ]1 T6 g& o. P% U
0040C6A8 |. 7C 53 jl short 0040C6FD
; b3 a: n* s! ~8 K( l0040C6AA |. 8BBC24 0C0100>mov edi, dword ptr [esp+10C]" F. c& w8 ~4 x W. ^
0040C6B1 |. C602 00 mov byte ptr [edx], 0( ]8 c" l, q W- a- e; u+ }
0040C6B4 |. 89C6 mov esi, eax
. n, i8 p, l- i" f, f$ d# r0040C6B6 |. 8BBF 7477EF02 mov edi, dword ptr [edi+2EF7774]
q+ H6 k/ _: Q0040C6BC |. 31DB xor ebx, ebx4 x' [/ {- E5 m8 S
0040C6BE |. 57 push edi
, t: D7 U1 O# o( b& p- b. j0040C6BF |> 8A06 /mov al, byte ptr [esi]
0 S" P' C, q2 W0 _) J. Q0040C6C1 |. 8807 |mov byte ptr [edi], al8 O8 I4 R+ H, c" g
0040C6C3 |. 3C 00 |cmp al, 0" U2 q1 I' N! K1 [( s5 V
0040C6C5 |. 74 10 |je short 0040C6D79 o7 y! \ X) o& w {, D) w% P
0040C6C7 |. 8A46 01 |mov al, byte ptr [esi+1]9 K1 M2 r1 E# P9 F8 L
0040C6CA |. 83C6 02 |add esi, 2
8 y$ [+ k2 _% b0 O9 E* T0040C6CD |. 8847 01 |mov byte ptr [edi+1], al$ i# U7 Y; K& e6 e, E$ f" U
0040C6D0 |. 83C7 02 |add edi, 26 S' P* \* v9 l9 y" U9 v! g
0040C6D3 |. 3C 00 |cmp al, 0 i5 i$ }+ Q% X; W3 j
0040C6D5 |.^ 75 E8 \jnz short 0040C6BF
/ B6 T$ ]* K, E0040C6D7 |> 5F pop edi: f) M, s! t* T; V, v% i
0040C6D8 |. 8D42 01 lea eax, dword ptr [edx+1]
( u1 C: b7 _) ~( {4 \4 {6 ^9 X- @ t0040C6DB |. 8BBC24 0C0100>mov edi, dword ptr [esp+10C]& G9 z9 }& ?5 @, E
0040C6E2 |. 8B9424 080100>mov edx, dword ptr [esp+108]
0 G/ e* I* ^$ A4 h. @# B0040C6E9 |. 83EF 04 sub edi, 4
4 E! l8 ]+ ~7 A* t* y0040C6EC |. 42 inc edx9 y7 A6 {$ f! W, x
0040C6ED |. 89BC24 0C0100>mov dword ptr [esp+10C], edi
4 w: E& K9 f' E1 w' q0040C6F4 |. 899424 080100>mov dword ptr [esp+108], edx
D" H6 Q; j7 D( \8 H" X1 k0040C6FB |. 89C2 mov edx, eax
& [' s. h& x+ J. A" K A3 H0040C6FD |> 43 inc ebx
. D5 @8 j5 E- ?, j. k$ D; P; e5 `0040C6FE |. 8A6A 01 mov ch, byte ptr [edx+1]& t2 D7 d# |1 M1 C0 j a5 Y
0040C701 |. 42 inc edx
# d* S( W2 p5 ~7 v! I0040C702 |. 84ED test ch, ch8 P1 A& z. D; }( Z% ^: D5 e
0040C704 |.^ 75 90 jnz short 0040C696# Q# G W4 B* i9 D
0040C706 |> 83FD 10 cmp ebp, 10
7 T, h; b$ a1 Q- C0040C709 |. 7F 05 jg short 0040C710
* {$ |2 s# e; D+ v, o8 H3 |+ b% ]0040C70B |. BD 20000000 mov ebp, 20% a6 V7 {$ e/ I' z9 Z/ P5 k1 z. e
0040C710 |> 8B9424 040100>mov edx, dword ptr [esp+104]; R6 n' b! S' d; |" t: J2 O) h" y
0040C717 |. 2B9424 080100>sub edx, dword ptr [esp+108]
0 w! M8 B* F' p" _0040C71E |. 85D2 test edx, edx& f; r" U; U: J4 R
0040C720 |. 7C 23 jl short 0040C745
( f& {3 U/ b2 M/ [1 o9 x# {1 h0040C722 |. 89C6 mov esi, eax
4 X z, {! @$ U/ t; F% h5 a0040C724 |. 8B3C95 7477EF>mov edi, dword ptr [edx*4+2EF7774]: i7 `# V. i5 l) `; T% W' y' i
0040C72B |. 57 push edi9 M$ F- l3 T8 \4 ]- ^- J
0040C72C |> 8A06 /mov al, byte ptr [esi]
& O% c, ^: B0 |1 a5 D) j- Q: W$ @# Y0040C72E |. 8807 |mov byte ptr [edi], al
H0 ^1 y N% [1 `0040C730 |. 3C 00 |cmp al, 0
5 `5 F4 H& ^* D0 s0040C732 |. 74 10 |je short 0040C7440 `: L0 _3 ]' O
0040C734 |. 8A46 01 |mov al, byte ptr [esi+1]9 j- T6 `* k2 {/ C( z
0040C737 |. 83C6 02 |add esi, 2
0 w) V- h/ o3 y7 o4 A9 J0040C73A |. 8847 01 |mov byte ptr [edi+1], al
, k" R! H7 Y, T) w0040C73D |. 83C7 02 |add edi, 24 I1 r7 V% l9 n) W( k0 j* J6 x8 f5 s
0040C740 |. 3C 00 |cmp al, 0/ _9 Z. A5 i1 z2 r
0040C742 |.^ 75 E8 \jnz short 0040C72C$ J5 U% e& n- I. F& H7 c
0040C744 |> 5F pop edi
9 ~. n; s& R9 X0040C745 |> E8 E6500100 call 00421830
3 s0 G% h* s8 s, H9 g5 ?0040C74A |. A3 8877EF02 mov dword ptr [2EF7788], eax0 ~. r, q l$ i1 `
0040C74F |. 8B8424 040100>mov eax, dword ptr [esp+104]
( G" X4 e C1 ?! d6 x9 s0040C756 |. 40 inc eax
8 A) w/ g$ |; W: r0040C757 |. A3 8477EF02 mov dword ptr [2EF7784], eax
# L9 G" T e) @; J m8 `7 e0040C75C |. C705 8C77EF02>mov dword ptr [2EF778C], 12 `. c% Y7 U2 O, M
0040C766 |. B8 64000000 mov eax, 64
4 K7 G) \6 b; Q4 T! b' g y0040C76B |. 89C2 mov edx, eax) }8 X, F O' K! Y# s
0040C76D |. 8B0D E880EF02 mov ecx, dword ptr [2EF80E8]
5 f$ ^! V: i# t; D0040C773 |. C1FA 1F sar edx, 1F' x6 r2 i' y+ C$ D+ w Q- R
0040C776 |. F7F9 idiv ecx' j# o* @( y$ v6 H
0040C778 |. 89C3 mov ebx, eax
5 b0 R7 G% a8 d& k' a" _0040C77A |. 89EA mov edx, ebp8 E9 {0 v% L0 t0 V% Z! i" d
0040C77C |. 89E8 mov eax, ebp
: l4 J2 W" ~2 J0040C77E |. C1FA 1F sar edx, 1F3 N) }& y' z: Y! r4 N; o7 V! O" N
0040C781 |. C1E2 04 shl edx, 4
6 \ ~6 D, r: K7 g7 U0040C784 |. 1BC2 sbb eax, edx
Y n4 b# }4 ~3 u! p6 _6 J# M0040C786 |. C1F8 04 sar eax, 4
9 Z/ w1 o# _$ F5 P, n/ c8 a7 e0040C789 |. 01C3 add ebx, eax
* l0 b% f! x* A; Z3 g$ G" c/ |0040C78B |. 891D 9077EF02 mov dword ptr [2EF7790], ebx
I7 H# W8 K* z s3 s6 C6 u; v/ f& ~0040C791 |. 81C4 10010000 add esp, 110
6 i: G ]7 C& ~! t; f+ U0040C797 |. 5D pop ebp4 m _! H! u$ H7 C4 ]. U& W) v
0040C798 |. 5F pop edi& s% s6 t; s7 z x u, m
0040C799 |. 5E pop esi
8 J. l$ D; I6 E, N* a7 O( T O; }# x0040C79A |. 5A pop edx& H- u1 H5 e, r) D
0040C79B |. 59 pop ecx
r! R5 Y u' z9 ?, R4 u0040C79C |. 5B pop ebx* W( y W8 J \. [. F
0040C79D |. C3 retn. t: d3 t0 H' Q7 b" L2 Q& s
0040C79E |> 81FD 8C000000 cmp ebp, 8C; C) W, o" Z v1 T
0040C7A4 |. 7C 28 jl short 0040C7CE
3 y7 B$ a m) z# d4 y) Z0040C7A6 |. 81FD D2000000 cmp ebp, 0D2, x; g6 }* K' @2 r u3 {
0040C7AC |. 7F 20 jg short 0040C7CE6 K" g9 ?4 B6 K0 B% H3 D8 a
0040C7AE |. B9 03000000 mov ecx, 3
6 o- B8 D9 R( Y' h9 |9 a0040C7B3 |. 89EA mov edx, ebp
' a# d( Y3 g3 f9 N0040C7B5 |. 89E8 mov eax, ebp! e1 }; L% _' x4 b; z% H( M6 N& j: @8 v
0040C7B7 |. C1FA 1F sar edx, 1F; B3 W6 E& l5 a: D; ^, l% k
0040C7BA |. F7F9 idiv ecx
2 K6 D/ O+ |2 F; b; n( X# _0 V0040C7BC |. C78424 040100>mov dword ptr [esp+104], 2
& o. T# a1 E0 h$ d0040C7C7 |. 89C7 mov edi, eax
) C4 `% G1 S$ C0040C7C9 |.^ E9 8BFEFFFF jmp 0040C659
/ a6 ], y) d0 i* l. T: p* _: B0040C7CE |> 83FD 46 cmp ebp, 46
: V6 g9 H1 ~8 n" k. f: l: H0040C7D1 |. 7C 25 jl short 0040C7F8
$ e- \- n7 A$ m. {' o5 _0040C7D3 |. 81FD 8C000000 cmp ebp, 8C+ ]4 n: j* C) W8 w
0040C7D9 |. 7F 1D jg short 0040C7F8
0 ] v+ m" R+ K2 R3 \0040C7DB |. 89EA mov edx, ebp
9 ~7 ^' N6 P# L$ k% R& L0040C7DD |. 89E8 mov eax, ebp; l3 E5 B2 I- C2 M% u, @
0040C7DF |. C1FA 1F sar edx, 1F6 Y* m, D, f$ w; F! U/ a( }7 u2 N
0040C7E2 |. 2BC2 sub eax, edx
3 }. f' K% a% `0040C7E4 |. D1F8 sar eax, 18 u7 N6 j6 y- d9 o, x* B# R
0040C7E6 |. C78424 040100>mov dword ptr [esp+104], 1
' X/ S- [; p. ~" }0040C7F1 |. 89C7 mov edi, eax
1 n0 j* G' c7 b0040C7F3 |.^ E9 61FEFFFF jmp 0040C659
, c* Y9 {, c# x! |% Q% Z+ `3 K0040C7F8 |> 31D2 xor edx, edx
1 E* g) _# j$ W& J+ X* u0040C7FA |. BF 46000000 mov edi, 46
( I6 s* x4 v. `. f W1 f+ p0040C7FF |. 899424 040100>mov dword ptr [esp+104], edx9 {! D y9 g/ d9 c3 H+ x9 }. j
0040C806 |.^ E9 4EFEFFFF jmp 0040C6590 d' |7 i$ K! a) _
0040C80B |> 80F9 7C cmp cl, 7C
# U6 @9 V( [/ @9 m0040C80E |.^ 0F85 E9FEFFFF jnz 0040C6FD
! U0 t! T" ?" _4 E; a0040C814 |. C602 20 mov byte ptr [edx], 20% m( b5 n& S: f7 j
0040C817 \.^ E9 E1FEFFFF jmp 0040C6FD
& p& ~8 n5 l ]: E
, e7 @7 d: E5 }- M* k% m5 d3 ?在scratches.sc和scream.sc里面有lua的脚本,保存有字体文件名。
. D& v) \& z: G4 c& y2 K估计要汉化就要在上面的代码段下功夫了,以后继续研究。
' `3 O8 O& U+ |2 I! x
" w$ `; H8 a& w; v2 s; U2 D找到2个俄文的补丁,也许对以后研究有用。
& k8 f) ^7 `1 @/ z/ a9 C5 `http://www.megaupload.com/?d=EZH6X672( o; _6 q8 ^6 O$ }; E- B: r! w
http://rapidshare.com/files/94227080/ScratchesDC.7z |