看了一下惊恐鬼屋Scratches这个游戏。
4 i) a: [8 _. W5 Q: Y0 J3 s& n包文件有2个,scratches.res和scream.res,
# o& [! s5 Y' ^3 M6 n包文件的格式如下,可以用Game Extractor来解开。
A( h' n% C5 z& V# _http://wiki.xentax.com/index.php/Scratches_RES
' n* m# H! I7 _5 s$ c从scratches.res里面解出一个font-michael.tga文件,就是在游戏利用的字体。) c0 ?3 L! \5 J: ]; B# E' z5 K5 ~
scream.res里面也有一个字体文件,但是游戏好像没有用到。7 o0 R: j- C2 A0 i/ N
0 z( g+ k- L3 @用OD调试后,发现这是一个使用opengl API的游戏。5 V- B k- f5 a# q7 b; H7 ~1 b
在某句字幕上下了内存断点,断下来之后找到了和显示有关的代码段。( y' y1 x( R) T- m& S0 n. t
8 w! E Q; i0 \& c# w$ q0040C5D0 /$ 53 push ebx
2 t$ L. s9 h% C `: s0040C5D1 |. 51 push ecx
! v- K; e. y. P8 f# w: k0040C5D2 |. 52 push edx1 z |8 y' R- i% K' p# o
0040C5D3 |. 56 push esi6 l; _" n8 M" ~: t! @; _( g
0040C5D4 |. 57 push edi4 g$ f, g# Y. Q/ U+ H0 x) q
0040C5D5 |. 55 push ebp! i |1 S. P7 p) {
0040C5D6 |. 81EC 10010000 sub esp, 110) j3 B* t6 @. }
0040C5DC |. 89C6 mov esi, eax2 N( A6 u. t, K1 K4 z' M
0040C5DE |. 89C7 mov edi, eax! `9 S/ }9 f I% _4 D* |- M3 ?
0040C5E0 |. 29C9 sub ecx, ecx4 P5 ~: I. H: M* W" n7 ]
0040C5E2 |. 49 dec ecx
0 k. R! m) f$ K" f3 P B' l. f0040C5E3 |. 31C0 xor eax, eax
3 N# ?: n. \3 W% X4 o9 {8 G; ^0040C5E5 |. F2:AE repne scas byte ptr es:[edi]
: @/ p6 Y! S) b" f0040C5E7 |. F7D1 not ecx
6 f' Y0 e" D# ~5 X- k& H9 M0040C5E9 |. 49 dec ecx8 {- p) M2 `* H! _; U
0040C5EA |. 31DB xor ebx, ebx
6 ^/ _+ z- o% r5 V' Z7 n$ S0040C5EC |. 31ED xor ebp, ebp9 {( ~) Y: D6 L) f
0040C5EE |. 81F9 00010000 cmp ecx, 1002 z# D1 x, X$ J% W; G$ X3 t- H( c
0040C5F4 |. 72 0D jb short 0040C603, G; t0 U0 U5 k0 b0 V
0040C5F6 |. 81C4 10010000 add esp, 110- F6 z! E6 u U! H O1 e
0040C5FC |. 5D pop ebp
8 I$ X" {& s5 a7 J. R0040C5FD |. 5F pop edi
% D7 Y" C" R! X1 Y9 F0040C5FE |. 5E pop esi
! I e# O$ v5 p# @0040C5FF |. 5A pop edx
, e2 N j0 P4 W7 ^0040C600 |. 59 pop ecx
* V6 d/ x' K* s; {0040C601 |. 5B pop ebx
0 d5 B. [* I9 I' w2 r0040C602 |. C3 retn: s8 [! s3 N0 X7 {3 K+ h7 }0 ]7 d$ ^
0040C603 |> 89E7 mov edi, esp9 u6 E, h- s( p
0040C605 |. 57 push edi+ R# g' L# R- F [
0040C606 |> 8A06 /mov al, byte ptr [esi]7 J, t1 S. o4 W2 g
0040C608 |. 8807 |mov byte ptr [edi], al3 d) I- T' C0 ?( G% R5 k
0040C60A |. 3C 00 |cmp al, 0. x, h% F: }+ ^/ H/ k1 i3 u5 i. D* u
0040C60C |. 74 10 |je short 0040C61E
& L9 h9 S& m$ Y3 }$ ?& U" j0040C60E |. 8A46 01 |mov al, byte ptr [esi+1]1 ^! G: U- s* d7 I6 i' {- e7 r
0040C611 |. 83C6 02 |add esi, 2
% n( ^. _, s E2 l0040C614 |. 8847 01 |mov byte ptr [edi+1], al
0 H8 Z4 \+ D- y0040C617 |. 83C7 02 |add edi, 2. B1 ^, M c4 Q9 ?- U' p
0040C61A |. 3C 00 |cmp al, 0
+ D. k+ w, S) G% o, U0040C61C |.^ 75 E8 \jnz short 0040C606# o! q1 `, i4 K" Y7 m: i5 C% J
0040C61E |> 5F pop edi
7 y1 W& f4 @" T4 m) K0040C61F |. 8A1424 mov dl, byte ptr [esp]
+ K. S8 \3 w, D4 E, N; t6 z0040C622 |. 89E0 mov eax, esp7 b* S7 d8 ]( d
0040C624 |. 84D2 test dl, dl
' E" T+ u Y. @0040C626 |. 74 09 je short 0040C631
3 R L# q( m A0040C628 |> 8A70 01 /mov dh, byte ptr [eax+1]
`8 }1 E' N. T0040C62B |. 40 |inc eax; |9 M+ U8 A8 X- P2 S U( [3 p1 m
0040C62C |. 45 |inc ebp
( @! E$ m+ l1 g" E' c% r0040C62D |. 84F6 |test dh, dh
# `- V8 X$ }6 H! D0040C62F |.^ 75 F7 \jnz short 0040C6285 P- V/ N/ ~. Y* b
0040C631 |> 81FD D2000000 cmp ebp, 0D2
7 l& P$ }1 a4 n7 d0040C637 |. 0F8E 61010000 jle 0040C79E
* j7 ]% O5 r! h6 p: Q0040C63D |. 89EA mov edx, ebp0 b3 {2 S' A2 b
0040C63F |. 89E8 mov eax, ebp
; _9 w& p4 N) l+ O- \$ _0 A0040C641 |. C1FA 1F sar edx, 1F
3 e8 Q8 R5 @3 ?0040C644 |. C1E2 02 shl edx, 2
. H/ `7 ?7 m/ R& j4 R& T' d2 D: E0040C647 |. 1BC2 sbb eax, edx
% T4 Y& O0 r- ^* A( @! H1 ]) ~( n9 R" B0040C649 |. C1F8 02 sar eax, 2( k! M A* [& ^, C) A
0040C64C |. 89C7 mov edi, eax. ^1 U1 Y/ z) L1 W% }" u, ~5 F
0040C64E |. C78424 040100>mov dword ptr [esp+104], 3
/ k: G% o% \8 [5 m+ l, y; _0040C659 |> 89E0 mov eax, esp
0 i8 _( X. n" X9 }' ]1 G4 c0040C65B |. 31D2 xor edx, edx3 M8 L5 E! F! j6 \0 N5 [
0040C65D |. 8A0C24 mov cl, byte ptr [esp]
?( M' k V* s1 Z3 h0040C660 |. 8915 8477EF02 mov dword ptr [2EF7784], edx
) I8 J7 H x q; [/ {0040C666 |. 8915 8C77EF02 mov dword ptr [2EF778C], edx% m( Q% G1 ~- U7 U1 b
0040C66C |. 899424 080100>mov dword ptr [esp+108], edx
$ Q6 b3 y9 C) n8 M0040C673 |. 89E2 mov edx, esp
) }" w, C: M( X* c6 M0040C675 |. 84C9 test cl, cl. z! x& B/ [% g% {3 l" y
0040C677 |. 0F84 89000000 je 0040C706
8 \" z9 O/ e: y$ J! t- I; N0040C67D |. 8B8C24 040100>mov ecx, dword ptr [esp+104]7 x! r+ k/ `' X4 V* ~# T+ t
0040C684 |. 4F dec edi1 z1 Q' |, |9 S+ b; q# f k
0040C685 |. C1E1 02 shl ecx, 2
" n' @' v" L [+ H8 O) [0040C688 |. 89BC24 000100>mov dword ptr [esp+100], edi
/ \7 |( r$ C" p# B6 R0040C68F |. 898C24 0C0100>mov dword ptr [esp+10C], ecx6 j9 J9 W4 _" c% E% O
0040C696 |> 8A0A mov cl, byte ptr [edx]& s0 x1 d% C1 ?1 E9 H
0040C698 |. 80F9 20 cmp cl, 20 r1 R+ E. i- s3 ~
0040C69B |. 0F85 6A010000 jnz 0040C80B
?- _0 F! s- ]( N3 g2 d( n/ c# g0040C6A1 |. 3B9C24 000100>cmp ebx, dword ptr [esp+100]
, O. x" Q6 t% w: h0040C6A8 |. 7C 53 jl short 0040C6FD
0 F* A* [2 k/ _* z0040C6AA |. 8BBC24 0C0100>mov edi, dword ptr [esp+10C]
7 n' T% G) s* h! Y+ l- O0040C6B1 |. C602 00 mov byte ptr [edx], 0
+ a4 _0 y3 l4 V7 g. I' U0040C6B4 |. 89C6 mov esi, eax
7 z7 j7 f; _( M5 e0 F1 m0040C6B6 |. 8BBF 7477EF02 mov edi, dword ptr [edi+2EF7774]* g2 k- a! v. y$ s7 j- _
0040C6BC |. 31DB xor ebx, ebx
$ G( Z/ [3 {$ g* @1 K* f0040C6BE |. 57 push edi, x0 |2 ~! ~( k! \9 n' ~# {
0040C6BF |> 8A06 /mov al, byte ptr [esi]
5 c1 \2 _% l( d- V0040C6C1 |. 8807 |mov byte ptr [edi], al4 M# W( L, q- D! Q2 _) I! j
0040C6C3 |. 3C 00 |cmp al, 01 P9 f7 x& Z6 T$ m
0040C6C5 |. 74 10 |je short 0040C6D76 @, u! \/ H: I& {# e, `) X
0040C6C7 |. 8A46 01 |mov al, byte ptr [esi+1]
6 h/ O8 Y8 t0 |0 A5 j* G$ o0040C6CA |. 83C6 02 |add esi, 2
. G% s0 D1 N5 q& c7 U0040C6CD |. 8847 01 |mov byte ptr [edi+1], al
# b0 m# R/ J0 {: ^0040C6D0 |. 83C7 02 |add edi, 2( a/ J* e% |0 l2 ~1 @3 T) E4 V
0040C6D3 |. 3C 00 |cmp al, 0
0 s1 l; I) n' V& E# }% Q5 g6 i) J0040C6D5 |.^ 75 E8 \jnz short 0040C6BF
2 C) m% ^' r5 ^; v& Y1 W& |- X' C) B0040C6D7 |> 5F pop edi( q+ a; b6 n6 X* l" {3 {; b
0040C6D8 |. 8D42 01 lea eax, dword ptr [edx+1]! H5 W% `1 U' M8 r+ G* J
0040C6DB |. 8BBC24 0C0100>mov edi, dword ptr [esp+10C]
+ x9 U, j0 L! s) H% f- T; v: c0040C6E2 |. 8B9424 080100>mov edx, dword ptr [esp+108]9 _# L/ V: j4 X, W v& U
0040C6E9 |. 83EF 04 sub edi, 4
- `3 P! A3 c4 g) E0040C6EC |. 42 inc edx
7 E8 F, R+ g: k3 Z( j0 y0040C6ED |. 89BC24 0C0100>mov dword ptr [esp+10C], edi9 _/ W- a% E3 z" s
0040C6F4 |. 899424 080100>mov dword ptr [esp+108], edx
- m, Z$ {* e2 D9 m/ ~0040C6FB |. 89C2 mov edx, eax3 j& k8 I3 J4 n3 o3 z, {
0040C6FD |> 43 inc ebx
" ?/ w9 N2 @$ X0 \7 m6 S0040C6FE |. 8A6A 01 mov ch, byte ptr [edx+1]; M% O* r/ h- m7 i
0040C701 |. 42 inc edx
! ~( {% j. x2 T0 w# k0040C702 |. 84ED test ch, ch
" v, ^/ a/ e9 g0040C704 |.^ 75 90 jnz short 0040C6961 w/ a# w8 R8 C$ E7 j7 h
0040C706 |> 83FD 10 cmp ebp, 10
! p, j9 ?* d" x( v, @; w; m0040C709 |. 7F 05 jg short 0040C710
2 D! H; A1 d$ b7 b0040C70B |. BD 20000000 mov ebp, 20
: s! j% \9 [% |' v% ]' j' S6 h( Y0040C710 |> 8B9424 040100>mov edx, dword ptr [esp+104]
M e# i I( K2 U9 p; }( K; C0040C717 |. 2B9424 080100>sub edx, dword ptr [esp+108]9 {# j$ F* z$ W7 l: U
0040C71E |. 85D2 test edx, edx
) T' Y; v% H- z! A& ?$ m( n. T) e0040C720 |. 7C 23 jl short 0040C745
$ H) u$ ?, S' \2 h( w- n4 p0040C722 |. 89C6 mov esi, eax6 `# C6 W# ]6 K3 M8 f0 w
0040C724 |. 8B3C95 7477EF>mov edi, dword ptr [edx*4+2EF7774]/ O5 c# G' A4 O8 R* X* o
0040C72B |. 57 push edi
7 H' ~9 D% ^4 N0040C72C |> 8A06 /mov al, byte ptr [esi]
7 P9 G' \7 _/ M) q8 c0040C72E |. 8807 |mov byte ptr [edi], al/ Q! M" g" W7 [% B7 z
0040C730 |. 3C 00 |cmp al, 04 h( v) s2 U3 Y: \; S
0040C732 |. 74 10 |je short 0040C744: P7 H6 T8 l; |( b: i0 y
0040C734 |. 8A46 01 |mov al, byte ptr [esi+1]5 y1 A; c4 _ m
0040C737 |. 83C6 02 |add esi, 2
' j# z+ @; A, @" e5 `; v3 `; x0040C73A |. 8847 01 |mov byte ptr [edi+1], al* C' `7 i& h3 m
0040C73D |. 83C7 02 |add edi, 2
4 C- z/ x: O# a. O! b" e$ k0040C740 |. 3C 00 |cmp al, 0% @% ]; d6 q0 i/ j9 c4 O
0040C742 |.^ 75 E8 \jnz short 0040C72C
Z9 ?# a! ?+ V6 \2 |0040C744 |> 5F pop edi: _1 ^3 P9 X! F) h/ s8 w: H* p3 M
0040C745 |> E8 E6500100 call 00421830
T2 G' B1 Q9 N+ |# ~) d4 k0040C74A |. A3 8877EF02 mov dword ptr [2EF7788], eax
/ q$ Y' `; c, w+ K9 s A% l p0040C74F |. 8B8424 040100>mov eax, dword ptr [esp+104]
( Q! E5 k% d# u' Q1 [0040C756 |. 40 inc eax& |5 }: O. _. U; Z. H
0040C757 |. A3 8477EF02 mov dword ptr [2EF7784], eax
. l% C: v% C* u! G7 G0040C75C |. C705 8C77EF02>mov dword ptr [2EF778C], 1
0 E5 Y* ]! ~6 v8 t: C; ]0040C766 |. B8 64000000 mov eax, 64
8 s* |0 h: l7 W/ x4 A+ C2 u3 J0040C76B |. 89C2 mov edx, eax
: i0 _7 I5 w% `2 T5 P0040C76D |. 8B0D E880EF02 mov ecx, dword ptr [2EF80E8]
8 f1 N" v, ~- K. X$ J0040C773 |. C1FA 1F sar edx, 1F
: w4 z0 d7 k' u" J$ w* l0040C776 |. F7F9 idiv ecx, ~/ b0 E8 C, a! p3 M% I
0040C778 |. 89C3 mov ebx, eax
; e$ o+ Y9 {7 t2 O, E5 U# v9 ^0040C77A |. 89EA mov edx, ebp
d0 t' k; k6 U! Y+ }0040C77C |. 89E8 mov eax, ebp. Y d2 }7 D9 ?' z; w
0040C77E |. C1FA 1F sar edx, 1F! G* S. |- V! p8 m& V8 G Z$ {
0040C781 |. C1E2 04 shl edx, 4
- Q! s" R" R# l2 W5 D* N0040C784 |. 1BC2 sbb eax, edx
5 v. u) x, j, l/ m+ \9 a+ k" K! K1 `0040C786 |. C1F8 04 sar eax, 49 D- Q* g" W) k {" [* ~4 |: Z# d
0040C789 |. 01C3 add ebx, eax/ l) h# { n' J3 B* {8 `* S
0040C78B |. 891D 9077EF02 mov dword ptr [2EF7790], ebx
2 A8 H: K f4 m* d' v& |& C0040C791 |. 81C4 10010000 add esp, 110! S3 L( k7 n( `# C \, N
0040C797 |. 5D pop ebp
. O) i' j; _- X H$ m4 B- E$ g' W0040C798 |. 5F pop edi: D: c& I/ h/ u( k" U# i" ~
0040C799 |. 5E pop esi
* M) L2 S4 r2 d. D0040C79A |. 5A pop edx
( X4 D* [5 `) G- G/ f. O4 _0040C79B |. 59 pop ecx9 k9 s5 x& p5 |$ h
0040C79C |. 5B pop ebx% G' O$ q K0 v+ C$ m* ]& E* K8 X
0040C79D |. C3 retn# P0 z0 i6 D6 b, ]8 G8 D+ D
0040C79E |> 81FD 8C000000 cmp ebp, 8C+ G/ d7 |1 q6 f& a1 Z
0040C7A4 |. 7C 28 jl short 0040C7CE
0 T8 j0 G3 Z, W! _' Q# G0040C7A6 |. 81FD D2000000 cmp ebp, 0D2" y- y0 `: ~' o. K! |3 B) W" f
0040C7AC |. 7F 20 jg short 0040C7CE( c9 _5 m- i: R- p, O
0040C7AE |. B9 03000000 mov ecx, 3
! r4 H: Q+ ^& c8 ~0 K0040C7B3 |. 89EA mov edx, ebp
4 D2 Q. B8 M9 n& e/ t* v& J { Y' t0040C7B5 |. 89E8 mov eax, ebp
( a" i" x2 u9 n. x, L {0040C7B7 |. C1FA 1F sar edx, 1F1 A4 k1 k+ c2 U7 z( _7 q
0040C7BA |. F7F9 idiv ecx, D1 S; k9 u: d' K2 w1 B4 F4 o; M+ v
0040C7BC |. C78424 040100>mov dword ptr [esp+104], 2
5 |1 [1 N/ q0 P# Z! Q; M& p; _0040C7C7 |. 89C7 mov edi, eax, B9 G- Y& v0 [ B
0040C7C9 |.^ E9 8BFEFFFF jmp 0040C659
' z3 Q) ]; ]; i8 N: x2 `& V0040C7CE |> 83FD 46 cmp ebp, 46
( R% \" t. Z ~* ^0040C7D1 |. 7C 25 jl short 0040C7F8
' B( |8 d3 s. S' B" c4 l- A4 k7 z8 S+ g0040C7D3 |. 81FD 8C000000 cmp ebp, 8C
4 v4 d" H; ^, M+ d( I0040C7D9 |. 7F 1D jg short 0040C7F8- P9 ]0 D! u. y2 O
0040C7DB |. 89EA mov edx, ebp
* A y$ |$ I/ z: Z( l0040C7DD |. 89E8 mov eax, ebp3 f" S: _7 j% A. M2 v
0040C7DF |. C1FA 1F sar edx, 1F- d. O! i! g7 z; Y+ W3 B
0040C7E2 |. 2BC2 sub eax, edx
) x3 e: g% Z6 p! ?/ w) j0040C7E4 |. D1F8 sar eax, 1
5 Q8 [" B: b" t! j) {0040C7E6 |. C78424 040100>mov dword ptr [esp+104], 1) h$ D; j! R9 ]
0040C7F1 |. 89C7 mov edi, eax* Q! v( X; U! N q2 A' d8 J% @
0040C7F3 |.^ E9 61FEFFFF jmp 0040C659
2 F* [# J$ u0 J; S# i0 i0040C7F8 |> 31D2 xor edx, edx; L, Y" |) {+ g2 |1 @
0040C7FA |. BF 46000000 mov edi, 46
9 q4 U2 D/ y _/ G8 E) s0040C7FF |. 899424 040100>mov dword ptr [esp+104], edx0 [! l2 U$ X. ]2 T2 B$ V0 L
0040C806 |.^ E9 4EFEFFFF jmp 0040C659
& a1 F5 M' c- N; i; b7 x0040C80B |> 80F9 7C cmp cl, 7C
- y3 j2 q& g! G0 @' P7 x y0040C80E |.^ 0F85 E9FEFFFF jnz 0040C6FD6 U! Z( N! }" w' j9 e9 L! r/ A
0040C814 |. C602 20 mov byte ptr [edx], 20
1 c0 Z9 y, X0 G0040C817 \.^ E9 E1FEFFFF jmp 0040C6FD
& `3 V" q4 K1 k# ^' a0 \7 m+ M X M' [
在scratches.sc和scream.sc里面有lua的脚本,保存有字体文件名。% _1 @" a6 e2 S# D! A; o7 L% q" @
估计要汉化就要在上面的代码段下功夫了,以后继续研究。# T3 |; O% F" C6 N$ Z
1 z6 O6 Z: o* x* S0 r: c5 [& K6 f找到2个俄文的补丁,也许对以后研究有用。$ Z& D4 U! @; O
http://www.megaupload.com/?d=EZH6X672+ Y. C" K) |1 ^' I* z3 V0 v
http://rapidshare.com/files/94227080/ScratchesDC.7z |