写屏函数:
' t- F( g5 C" ^: w02A0EA4C |> /8B00 |/mov eax,dword ptr ds:[eax]; d! e$ |' O6 t
02A0EA4E |. |0FB70450 ||movzx eax,word ptr ds:[eax+edx*2] ; [eax+edx*2]存放字符的UNICODE码- F8 p- X3 d) m. g# w
02A0EA52 |. |8B7C24 14 ||mov edi,dword ptr ss:[esp+14]
2 z& V2 |! x2 f0 G$ I02A0EA56 |. |8B7F 2C ||mov edi,dword ptr ds:[edi+2C]4 f* Z3 g# D2 ?' k
02A0EA59 |. |8D04C0 ||lea eax,dword ptr ds:[eax+eax*8]& A; B: D+ i! }1 O, O# }6 B
02A0EA5C |. |8D0487 ||lea eax,dword ptr ds:[edi+eax*4] ; eax存放字符编码表% t4 @3 |* w5 c) p5 A# l
每个字符码表占24(16进制)个字节
) ~- t5 W1 {, e4 u/ J02A0EA5F |. |8B7C24 0C ||mov edi,dword ptr ss:[esp+C]
4 N: X) F8 w& N- R* W7 Q02A0EA63 |. |8D7C39 14 ||lea edi,dword ptr ds:[ecx+edi+14] ; edi就是显存地址
. U) D! X6 j7 n/ @02A0EA67 |. |D940 04 ||fld dword ptr ds:[eax+4], C$ l# e" t( i/ b( D8 m# Q1 \
02A0EA6A |. |83C2 01 ||add edx,1 字符个数加一
+ N' {- q+ T ]+ K02A0EA6D |. |D95C24 30 ||fstp dword ptr ss:[esp+30], M$ ^0 F* i! m# h- w
02A0EA71 |. |D900 ||fld dword ptr ds:[eax]
( _7 u! a; d" \9 H* [02A0EA73 |. |D91F ||fstp dword ptr ds:[edi] ; edi就是显存地址
$ G8 A$ Q2 d0 D; u( s' a$ ]1 f( K; P每个字符占1C个字节,最后的四个字节都是一样的,可以认为是结束标志
2 @7 Q$ K! {5 G' \9 z, N02A0EA75 |. |D94424 30 ||fld dword ptr ss:[esp+30]! R0 V! S& b& b! M
02A0EA79 |. |D95F 04 ||fstp dword ptr ds:[edi+4]( d+ Z6 ]" a5 q. X1 G& P
02A0EA7C |. |8B7C24 0C ||mov edi,dword ptr ss:[esp+C] A. J+ K! W8 p8 `9 k; v; v
02A0EA80 |. |D940 04 ||fld dword ptr ds:[eax+4]2 h, e6 t6 j5 z; ~- K
02A0EA83 |. |8D7C39 30 ||lea edi,dword ptr ds:[ecx+edi+30]; C: C% e( f, _5 n7 z
02A0EA87 |. |D95C24 30 ||fstp dword ptr ss:[esp+30]
' H( D: z/ Y( z02A0EA8B |. |D940 08 ||fld dword ptr ds:[eax+8]( D( b9 k* P3 |# k4 o/ }8 g" G
02A0EA8E |. |D91F ||fstp dword ptr ds:[edi]
$ l5 [3 T3 i- A2 L02A0EA90 |. |D94424 30 ||fld dword ptr ss:[esp+30]
# r" F& `# w1 {$ V4 Z. M02A0EA94 |. |D95F 04 ||fstp dword ptr ds:[edi+4]
* d( z# S) Z; a1 [9 S02A0EA97 |. |8B7C24 0C ||mov edi,dword ptr ss:[esp+C]- Q8 E! I$ t4 K& R0 u, i5 o
02A0EA9B |. |D940 0C ||fld dword ptr ds:[eax+C]
# P3 W q# j& P+ s- X02A0EA9E |. |8D7C39 4C ||lea edi,dword ptr ds:[ecx+edi+4C]: L( |6 j* I' t7 S
02A0EAA2 |. |D95C24 30 ||fstp dword ptr ss:[esp+30] r* n9 u8 q! b- J
02A0EAA6 |. |D900 ||fld dword ptr ds:[eax]( P7 }' A8 A* u! t/ }' v, ]
02A0EAA8 |. |D91F ||fstp dword ptr ds:[edi]
; e1 Z( j. I0 H* ^# o. D' O8 s" r- S02A0EAAA |. |D94424 30 ||fld dword ptr ss:[esp+30]
5 c* F3 r4 Y; f8 q- d1 x02A0EAAE |. |D95F 04 ||fstp dword ptr ds:[edi+4]3 g; q* M( p: E! {" l2 Y, _* z: V8 o- d
02A0EAB1 |. |8B7C24 0C ||mov edi,dword ptr ss:[esp+C]
( R+ b P, b* G ` k8 M02A0EAB5 |. |D940 0C ||fld dword ptr ds:[eax+C]) C9 N+ V) \/ x% m/ r0 K( `
02A0EAB8 |. |8D7C39 68 ||lea edi,dword ptr ds:[ecx+edi+68]
' j+ Y9 Y, d/ f0 K5 P" d02A0EABC |. |D95C24 30 ||fstp dword ptr ss:[esp+30]9 L; M j8 ^0 A9 N
02A0EAC0 |. |83C1 70 ||add ecx,70
c1 |, Z4 z. M, G+ P3 g& T02A0EAC3 |. |D940 08 ||fld dword ptr ds:[eax+8]" r: E. A) N5 ]0 _3 N
02A0EAC6 |. |D91F ||fstp dword ptr ds:[edi]
1 L, O4 M- u: A1 H* n) y02A0EAC8 |. |D94424 30 ||fld dword ptr ss:[esp+30]
4 y$ g/ i( N# e$ L' x02A0EACC |. |D95F 04 ||fstp dword ptr ds:[edi+4]
* L/ Y1 E" r# N# ^$ c02A0EACF |. |8B46 58 ||mov eax,dword ptr ds:[esi+58]
d+ S: e3 {- Y8 s) z# n! A2 a1 p( t02A0EAD2 |. |03C3 ||add eax,ebx& {- h& p/ N9 H% Y# _" D# q
02A0EAD4 |. |3B50 08 ||cmp edx,dword ptr ds:[eax+8]5 x/ \9 [- k3 L
02A0EAD7 |.^\\0F8C 6FFFFF>|\\jl xcDxShad.02A0EA4C3 N1 H6 \% J+ {( p
' q# ]( |8 A1 ?1 z3 Q) K8 W7 J; Q本游戏字符编码采用UNICODE,' _) N+ V, Q {. b" i/ c
对字符码表的操作:: G8 O# @- l6 m5 _
10028807 |> /0FB702 /movzx eax,word ptr ds:[edx] 读字符的UNICODE码3 Q7 E7 J% X4 Y+ e+ ~* X0 J
1002880A |. |8D04C0 |lea eax,dword ptr ds:[eax+eax*8]
1 Y- x$ u% T- T$ {5 y! i1002880D |. |8D0483 |lea eax,dword ptr ds:[ebx+eax*4] 根据UNICODE码求得字符码表的地址
' r' A) e2 E4 c10028810 |. |33C9 |xor ecx,ecx
d. T: K, P% Q$ V$ \10028812 |. |DB40 20 |fild dword ptr ds:[eax+20]
" L7 D, e; z$ r/ i) ]5 d2 ?10028815 |. |D95C24 14 |fstp dword ptr ss:[esp+14]
2 E% \' [0 E2 z4 @9 ^& L/ Z10028819 |. |D94424 14 |fld dword ptr ss:[esp+14]
/ d+ R$ K" w1 ?& @1002881D |. |D9C0 |fld st
3 Y0 g( [! N' F; B p- s# R1002881F |. |D84E 14 |fmul dword ptr ds:[esi+14]
1 ]" v: E+ ?* Y10028822 |. |D94424 0C |fld dword ptr ss:[esp+C]6 N2 B- Q. z/ F# x
10028826 |. |D9C0 |fld st
4 W+ D) g4 l, d5 K1 {0 h4 g8 g10028828 |. |DEC2 |faddp st(2),st
; ]0 x4 q( T, s1 K. _$ Q3 _1002882A |. |D9C9 |fxch st(1)* S( ]4 S! d% q8 A5 O! _
1002882C |. |D95C24 14 |fstp dword ptr ss:[esp+14], ?1 k" H1 X5 B, g6 A9 Y8 `
10028830 |. |D8D3 |fcom st(3)$ W: x, a4 [7 c6 Z# X, Q9 L
10028832 |. |DFE0 |fstsw ax
3 ?: \ m' V. {2 B: ~8 a10028834 |. |F6C4 01 |test ah,1& g" A2 x0 I, c
10028837 |. |74 2B |je short xcEngine.10028864) s1 L3 y) J6 @1 q/ t$ v( y
10028839 |. |D94424 14 |fld dword ptr ss:[esp+14]
$ ~5 g( n! k6 V1002883D |. |D8D3 |fcom st(3)
* q6 x% |6 p( F- p) i( L, [1002883F |. |DFE0 |fstsw ax
0 [! C" V( _, r) \" i10028841 |. |F6C4 41 |test ah,41
' {! B6 C/ @: r7 Q+ ~6 P1 S X10028844 |. |7A 04 |jpe short xcEngine.1002884A; q$ O9 T( s7 l% Y
10028846 |. |DDD8 |fstp st) @/ |' P( s5 q* S
10028848 |. |EB 1A |jmp short xcEngine.10028864& w+ W7 @( i4 I( o$ X/ _! d
1002884A |> |D9C9 |fxch st(1). }, L6 L! e7 v: z4 o' F) ]: u
1002884C |. |D8D3 |fcom st(3)% |) F/ J5 X4 u3 G& N' E/ `
1002884E |. |DFE0 |fstsw ax
" N+ t! z9 g$ g10028850 |. |F6C4 05 |test ah,5
p- t+ T7 |9 g; ^2 N$ Z4 i10028853 |. |7A 04 |jpe short xcEngine.10028859
( B+ B7 ?( G. Y; Z10028855 |. |DDD9 |fstp st(1)
6 _: M% _4 c- H- t10028857 |. |EB 0B |jmp short xcEngine.10028864
1 T+ t$ j) F/ u2 p- ]2 A# }10028859 |> |D9C9 |fxch st(1)6 h& Q( f, n4 i
1002885B |. |D8DC |fcomp st(4)
0 j4 R8 C8 c! ^2 I. m1002885D |. |DFE0 |fstsw ax
5 J0 \. J- J$ b: y5 a* M1002885F |. |F6C4 41 |test ah,41$ k" }$ j9 h+ i3 o1 \, Y
10028862 |. |75 05 |jnz short xcEngine.10028869( [5 x9 S! N z8 s; @. N1 O4 t
10028864 |> |B9 01000000 |mov ecx,1
( s/ q* P4 I+ J& l9 P10028869 |> |85C9 |test ecx,ecx- A. M2 i3 q9 n
1002886B |. |8B4424 18 |mov eax,dword ptr ss:[esp+18]) m# e8 `6 ]% Y Z @0 y
1002886F |. |D940 14 |fld dword ptr ds:[eax+14]
2 w2 H" [, x; S10028872 |. |DECA |fmulp st(2),st
8 ?$ b f- t6 A. z" n) E- j: x10028874 |. |DEC1 |faddp st(1),st
/ R; n' [# _! p2 V+ `10028876 |. |D95C24 0C |fstp dword ptr ss:[esp+C]
, M# w W- h9 n1002887A |. |75 05 |jnz short xcEngine.10028881* A r* e# J& C6 e1 q0 Z2 H
1002887C |. |834424 10 0>|add dword ptr ss:[esp+10],16 q. t& f. S% ^. `& k
10028881 |> |83C2 02 |add edx,20 u3 k' O* ^# S! l2 x" Q! N& ^
10028884 |. |83EF 01 |sub edi,17 p/ z- f0 J$ c. z& F6 r
10028887 |.^\\0F85 7AFFFF>\\jnz xcEngine.10028807
$ y7 g' G2 @" l' D9 Q, g- J由于算法采用了浮点数指令,本人不太懂,边学习边研究中。。。。。。。。。 |