写屏函数:0 L$ J# P* A. ^: N7 h P
02A0EA4C |> /8B00 |/mov eax,dword ptr ds:[eax]2 a1 p) Y( M0 Q" ?; [5 g
02A0EA4E |. |0FB70450 ||movzx eax,word ptr ds:[eax+edx*2] ; [eax+edx*2]存放字符的UNICODE码" k( o: `9 i+ E: {4 L
02A0EA52 |. |8B7C24 14 ||mov edi,dword ptr ss:[esp+14]
8 l( t" u( \+ \# E02A0EA56 |. |8B7F 2C ||mov edi,dword ptr ds:[edi+2C]8 H7 M1 J: [2 |/ q, ?$ m( \
02A0EA59 |. |8D04C0 ||lea eax,dword ptr ds:[eax+eax*8]% i8 Y$ E( z( c! u
02A0EA5C |. |8D0487 ||lea eax,dword ptr ds:[edi+eax*4] ; eax存放字符编码表
: Z" K& }% W4 g6 E每个字符码表占24(16进制)个字节
/ @, Q8 O5 y: }7 `+ I" r% l5 Z02A0EA5F |. |8B7C24 0C ||mov edi,dword ptr ss:[esp+C]' j" _+ V( i9 l+ {: E4 d i l9 t8 F6 ~
02A0EA63 |. |8D7C39 14 ||lea edi,dword ptr ds:[ecx+edi+14] ; edi就是显存地址1 v9 j8 G, C- h& N# T" U
02A0EA67 |. |D940 04 ||fld dword ptr ds:[eax+4]
/ l( A& B O$ O5 p) c: u0 l02A0EA6A |. |83C2 01 ||add edx,1 字符个数加一5 T4 |/ }8 S, ]) g& c4 `; c
02A0EA6D |. |D95C24 30 ||fstp dword ptr ss:[esp+30]
- X7 X6 o0 M, Y+ n' P02A0EA71 |. |D900 ||fld dword ptr ds:[eax]$ d9 `" f( ^6 t8 E
02A0EA73 |. |D91F ||fstp dword ptr ds:[edi] ; edi就是显存地址- T; }) l4 B, e
每个字符占1C个字节,最后的四个字节都是一样的,可以认为是结束标志
) _( `' F: r5 E" A02A0EA75 |. |D94424 30 ||fld dword ptr ss:[esp+30]( y/ x8 L# t" ]/ ]1 c- P
02A0EA79 |. |D95F 04 ||fstp dword ptr ds:[edi+4]! T. g4 [1 z; o& K) k" ?, k+ m
02A0EA7C |. |8B7C24 0C ||mov edi,dword ptr ss:[esp+C] |' W3 M& D) [' N! i
02A0EA80 |. |D940 04 ||fld dword ptr ds:[eax+4]
. h6 e3 ~' Z7 [02A0EA83 |. |8D7C39 30 ||lea edi,dword ptr ds:[ecx+edi+30]2 ~7 G' B H; X: K
02A0EA87 |. |D95C24 30 ||fstp dword ptr ss:[esp+30]
5 n7 E+ q4 b# i" Q1 _/ i1 @02A0EA8B |. |D940 08 ||fld dword ptr ds:[eax+8]
# h" _1 M& B4 L- k" ]% _02A0EA8E |. |D91F ||fstp dword ptr ds:[edi]" d0 ^* J9 ~+ s* R+ N
02A0EA90 |. |D94424 30 ||fld dword ptr ss:[esp+30]8 b$ x$ L( d, q( y8 u: i
02A0EA94 |. |D95F 04 ||fstp dword ptr ds:[edi+4]6 w1 j Q9 T C* H8 u* B
02A0EA97 |. |8B7C24 0C ||mov edi,dword ptr ss:[esp+C]) Y7 _8 j6 o; ^* R8 k3 x$ b* g. h5 a
02A0EA9B |. |D940 0C ||fld dword ptr ds:[eax+C]
/ x6 Y) q& `4 e" j7 D02A0EA9E |. |8D7C39 4C ||lea edi,dword ptr ds:[ecx+edi+4C]
+ `3 P: A! `# S8 S02A0EAA2 |. |D95C24 30 ||fstp dword ptr ss:[esp+30]$ n/ j5 T. Q0 V+ E+ ~- `
02A0EAA6 |. |D900 ||fld dword ptr ds:[eax]' z0 u& p* x5 S. z+ Y
02A0EAA8 |. |D91F ||fstp dword ptr ds:[edi], A' [; d) W! Y' P' b
02A0EAAA |. |D94424 30 ||fld dword ptr ss:[esp+30]
( M) B( U3 l" f* d" p02A0EAAE |. |D95F 04 ||fstp dword ptr ds:[edi+4]; i: ]2 `9 N7 t/ v# m+ T. v5 q
02A0EAB1 |. |8B7C24 0C ||mov edi,dword ptr ss:[esp+C]
) C% I: w% v9 i02A0EAB5 |. |D940 0C ||fld dword ptr ds:[eax+C]% ^+ u. c0 |! ^5 a0 H
02A0EAB8 |. |8D7C39 68 ||lea edi,dword ptr ds:[ecx+edi+68]" ]! @ O7 R6 ^! `$ {+ H
02A0EABC |. |D95C24 30 ||fstp dword ptr ss:[esp+30]
* M' O6 Z7 L6 W( y7 r! w0 W02A0EAC0 |. |83C1 70 ||add ecx,70! K6 }) ~0 |" `, n# T* U/ V8 }. Z; i
02A0EAC3 |. |D940 08 ||fld dword ptr ds:[eax+8]
& J: D( t1 X0 G ^4 C) |* z+ S( \' [02A0EAC6 |. |D91F ||fstp dword ptr ds:[edi]
, ]# D+ v4 A/ y: i3 R1 P02A0EAC8 |. |D94424 30 ||fld dword ptr ss:[esp+30]
+ a9 r2 W: [' H: N02A0EACC |. |D95F 04 ||fstp dword ptr ds:[edi+4]/ k! v6 O- u/ `
02A0EACF |. |8B46 58 ||mov eax,dword ptr ds:[esi+58]
. ~: q4 F# ? w. ? q0 P y+ d02A0EAD2 |. |03C3 ||add eax,ebx9 x& r: v# E+ N
02A0EAD4 |. |3B50 08 ||cmp edx,dword ptr ds:[eax+8]/ e E. S M$ M6 [' {
02A0EAD7 |.^\\0F8C 6FFFFF>|\\jl xcDxShad.02A0EA4C$ F! `9 q' [% C+ _ E
( R) I8 Z3 S- v
本游戏字符编码采用UNICODE,' _. p9 Q' d/ @' C: i2 j# y
对字符码表的操作:# d- Z& {) }) e4 ^. ?
10028807 |> /0FB702 /movzx eax,word ptr ds:[edx] 读字符的UNICODE码
) e$ W7 C# N& ~ W. N# H2 P! Z9 b1002880A |. |8D04C0 |lea eax,dword ptr ds:[eax+eax*8]: \5 I) ]1 R# j" i; l/ p. S. G: h
1002880D |. |8D0483 |lea eax,dword ptr ds:[ebx+eax*4] 根据UNICODE码求得字符码表的地址
9 Q0 c& h$ k4 j; e9 s- `* G0 z% q10028810 |. |33C9 |xor ecx,ecx
6 l2 J* } T; s i10028812 |. |DB40 20 |fild dword ptr ds:[eax+20]# `0 S) q, P1 @8 _( z
10028815 |. |D95C24 14 |fstp dword ptr ss:[esp+14]* G# q$ b* i1 C d/ J0 ^
10028819 |. |D94424 14 |fld dword ptr ss:[esp+14]* w |& Q5 [% c! u3 D" G" Z2 j
1002881D |. |D9C0 |fld st+ n, q/ f5 v4 o6 n V
1002881F |. |D84E 14 |fmul dword ptr ds:[esi+14]! h2 \1 E2 ~* w* Z4 `( r* Y
10028822 |. |D94424 0C |fld dword ptr ss:[esp+C]
- d: w( _7 y& M1 X+ U; k) `0 k4 R10028826 |. |D9C0 |fld st- |. ?4 E7 ^+ |* W, R
10028828 |. |DEC2 |faddp st(2),st$ i' X, N, u) n( F
1002882A |. |D9C9 |fxch st(1)
+ t* Q+ b, L5 ?1002882C |. |D95C24 14 |fstp dword ptr ss:[esp+14]
* {0 a3 h. y/ d: B2 T( U6 b10028830 |. |D8D3 |fcom st(3)0 b. R6 ]$ z% t' T1 o, ~
10028832 |. |DFE0 |fstsw ax, V) `" P4 l, {! M4 o9 i
10028834 |. |F6C4 01 |test ah,1! c) N5 t6 A5 p1 N2 j/ E
10028837 |. |74 2B |je short xcEngine.10028864- P% b4 y7 f: s9 W4 T; i
10028839 |. |D94424 14 |fld dword ptr ss:[esp+14]
3 S8 q2 X7 P5 ^% x" ^1002883D |. |D8D3 |fcom st(3)
; H9 U# g, _5 q% r1002883F |. |DFE0 |fstsw ax) P! u7 m3 ^; q$ B" A! J0 m
10028841 |. |F6C4 41 |test ah,41
* G7 x; h$ I8 a/ b7 J6 M ~10028844 |. |7A 04 |jpe short xcEngine.1002884A
/ e' D: c2 l* C# g2 w10028846 |. |DDD8 |fstp st' Q$ Y" V8 J- [: F) o
10028848 |. |EB 1A |jmp short xcEngine.10028864
9 U& ?1 H4 X$ P$ w9 B6 h$ _" F1002884A |> |D9C9 |fxch st(1)3 d$ B- l& J6 b6 |: t8 b
1002884C |. |D8D3 |fcom st(3)2 V+ ?8 M6 {* L5 e' o" n) P. u
1002884E |. |DFE0 |fstsw ax
. w6 Q; ~* O: p* g- R, y10028850 |. |F6C4 05 |test ah,5& y P7 q g! S$ I
10028853 |. |7A 04 |jpe short xcEngine.10028859; U* F: l: n4 ?6 ~# R+ [4 |
10028855 |. |DDD9 |fstp st(1)4 q& E0 l; h* c% K2 V. Z: i
10028857 |. |EB 0B |jmp short xcEngine.10028864
8 u. l7 [% V' c, G5 w+ x10028859 |> |D9C9 |fxch st(1)! h+ w9 [; h$ r; q* [' U! R
1002885B |. |D8DC |fcomp st(4)4 j* o# G$ ]) `. o% @
1002885D |. |DFE0 |fstsw ax
: D- y2 |1 `# E; n& [ T' v' K1002885F |. |F6C4 41 |test ah,41( z7 F! }6 J7 [/ P0 X2 t
10028862 |. |75 05 |jnz short xcEngine.100288694 ~: x, a% w4 S j
10028864 |> |B9 01000000 |mov ecx,14 O5 c5 o7 R# v2 d
10028869 |> |85C9 |test ecx,ecx3 W! |- A$ f, o/ a: O" ~
1002886B |. |8B4424 18 |mov eax,dword ptr ss:[esp+18]
: }" G0 C/ G4 h! Z1002886F |. |D940 14 |fld dword ptr ds:[eax+14]
: |# a0 }# Z, q v8 E8 z10028872 |. |DECA |fmulp st(2),st: ~9 X6 U9 U Q5 a# [
10028874 |. |DEC1 |faddp st(1),st
* N9 P. I, v3 B: h9 I/ y' \: Z0 \( D4 O10028876 |. |D95C24 0C |fstp dword ptr ss:[esp+C]2 B& i* h8 h7 ^; L9 I2 H
1002887A |. |75 05 |jnz short xcEngine.10028881
# z& a3 ^2 T" M8 p1002887C |. |834424 10 0>|add dword ptr ss:[esp+10],1
, o- c. H6 K5 \/ E( Z& G( w0 h10028881 |> |83C2 02 |add edx,2
( X# L3 z; Y: w. V X) W; p: j10028884 |. |83EF 01 |sub edi,1
# o: Z6 i( T8 O: _8 X# W10028887 |.^\\0F85 7AFFFF>\\jnz xcEngine.10028807- y; l# g. i. B
由于算法采用了浮点数指令,本人不太懂,边学习边研究中。。。。。。。。。 |