参数表
4 r7 A* C: N/ p0 targ1:[arg1+10]+[arg1+C]*arg3+arg2*2存放缓冲区(应该就是屏幕显示区在内存的映像)基地址
5 K# [! b. a# w/ ]. ?arg2:字符串宽度 x/ \ |7 p5 ? x5 ^
arg3:y
% s0 M1 V, w X$ Farg4:颜色; x7 s1 |& I$ j9 i# ^* L8 |
arg5:与颜色深度有关. b6 Z7 b; T" c7 n" T' W4 Q
arg6:与颜色深度有关2 y( Z r; Z+ m* v8 h- S% X
ecx:字符的编码基地址
& O" Y/ o# Z; V% R' Y6 X' x X+ F
) T- t# F, z/ t' r( J0071B820 /$ 83EC 54 sub esp,54
# _" {7 b. c0 t1 J Q0071B823 |. 53 push ebx' q% T! v6 l3 |- b
0071B824 |. 8B5C24 5C mov ebx,dword ptr ss:[esp+5C]
+ w5 \- k) i8 F @5 M0071B828 |. 55 push ebp$ D1 V& o) Z2 r
0071B829 |. 56 push esi' v S, W; B7 t! `1 @
0071B82A |. 8B43 08 mov eax,dword ptr ds:[ebx+8]9 z) q0 n* q0 C
0071B82D |. 8BF1 mov esi,ecx
, E+ @0 T: q- X2 y# C0071B82F |. 8B4B 04 mov ecx,dword ptr ds:[ebx+4], w4 D! E0 ?' I9 U
0071B832 |. 57 push edi
1 @. N; Z6 A: ]0071B833 |. 50 push eax
9 h: B' Z0 P' f& x8 x7 V0071B834 |. 51 push ecx
6 F. Y! O; v7 T/ V' Z6 M2 j0071B835 |. 6A 00 push 0
( T* l: e$ {1 ]0071B837 |. 6A 00 push 0
0 {1 I5 V! N% l+ c" d* S0071B839 |. 8D4C24 54 lea ecx,dword ptr ss:[esp+54]4 e0 c6 \' z4 i4 x
0071B83D |. 897424 20 mov dword ptr ss:[esp+20],esi
+ w% t3 e ?3 E2 N4 m5 a4 ?1 E0071B841 |. E8 6ABCCEFF call heroes4.004074B0
! h" m% G1 l) ?$ w, r* W0 B Q0071B846 |. 8B56 08 mov edx,dword ptr ds:[esi+8], ]. l: C# P9 C) T5 h6 \+ ]
0071B849 |. 8B46 04 mov eax,dword ptr ds:[esi+4]
# e0 i `1 M* h! g( D. |: {. E% \& H0071B84C |. 52 push edx3 C# ]! U1 I: V6 g+ g9 g
0071B84D |. 50 push eax
4 M9 l+ _. \& t; d. `0 q0071B84E |. 6A 00 push 0& ^; m! ^5 M* R) }) U) C" u0 U
0071B850 |. 6A 00 push 0* G: _ k8 m! Y% Y0 j" G7 e' J
0071B852 |. 8D4C24 44 lea ecx,dword ptr ss:[esp+44]
, |2 I- s/ c d: S5 S& ?0 Y0071B856 |. E8 55BCCEFF call heroes4.004074B0
( V$ V6 o( T; x- z( t5 D4 g0071B85B |. 8B4C24 34 mov ecx,dword ptr ss:[esp+34]+ C4 i$ `( U! x0 ^) M! [: r b
0071B85F |. 8B5424 38 mov edx,dword ptr ss:[esp+38]
3 m; U: k+ j1 M! A7 Q9 t7 l0071B863 |. 8B4424 3C mov eax,dword ptr ss:[esp+3C]1 ~% L2 ?0 [& s. [" e! {
0071B867 |. 894C24 24 mov dword ptr ss:[esp+24],ecx
) W* Y- e) U& N- h! v0071B86B |. 8B4C24 40 mov ecx,dword ptr ss:[esp+40], O4 [: L' i7 D7 W
0071B86F |. 895424 28 mov dword ptr ss:[esp+28],edx ?% G6 U" Q2 \, G5 v, e; W
0071B873 |. 8D5424 6C lea edx,dword ptr ss:[esp+6C]
5 d/ L1 Z' G8 j: o0071B877 |. 894C24 30 mov dword ptr ss:[esp+30],ecx
1 E* B7 p- a; C$ f& N2 p0071B87B |. 52 push edx ~, @) l2 q' X% }1 {. S, r+ E
0071B87C |. 8D4C24 28 lea ecx,dword ptr ss:[esp+28]$ i, ~1 |% S. n" v0 h4 l
0071B880 |. 894424 30 mov dword ptr ss:[esp+30],eax$ w. d( S. s6 T$ w* a' @! d
0071B884 |. E8 47BCCEFF call heroes4.004074D0$ |( W1 D, h1 ]) f$ t- S
0071B889 |. 8B4424 30 mov eax,dword ptr ss:[esp+30]
8 p* Z. q! O/ F7 f" A9 p) E, Z1 l0071B88D |. 8B4C24 50 mov ecx,dword ptr ss:[esp+50]
1 H) I' {* X* A6 ^& q5 W0071B891 |. 3BC1 cmp eax,ecx
* M H' e7 e. t1 v" q- I( z* V/ ?0071B893 |. 8BF8 mov edi,eax1 o2 x H! J5 L! o
0071B895 |. 7C 02 jl short heroes4.0071B8997 P( @& G+ g# V2 P% s
0071B897 |. 8BF9 mov edi,ecx
+ B; S- D8 b2 L5 k0071B899 |> 8B4424 2C mov eax,dword ptr ss:[esp+2C]0 ~5 d" Q& ?9 a
0071B89D |. 8B5424 4C mov edx,dword ptr ss:[esp+4C]
% \+ N' o4 G7 g+ v( o4 x4 i0071B8A1 |. 3BC2 cmp eax,edx
- g5 W( p- Q) x, h# k0071B8A3 |. 7D 02 jge short heroes4.0071B8A72 W3 R$ `0 w4 p: j* C' G
0071B8A5 |. 8BD0 mov edx,eax! B. T7 Z2 Y6 n% s2 r* u" T
0071B8A7 |> 8B4424 28 mov eax,dword ptr ss:[esp+28]* {6 u- k W, e! w8 F, w
0071B8AB |. 8B4C24 48 mov ecx,dword ptr ss:[esp+48]
7 Z% u; f# G& {8 n0071B8AF |. 3BC1 cmp eax,ecx3 ^. P- G0 o6 e7 ?
0071B8B1 |. 7E 02 jle short heroes4.0071B8B5
?- v5 t" j& [2 A$ q" Y# z! H+ F0 @0071B8B3 |. 8BC8 mov ecx,eax5 p* v5 G( r( ?3 n4 d8 Z
0071B8B5 |> 8B4424 24 mov eax,dword ptr ss:[esp+24]4 m$ |# n/ R7 A, } D+ v1 x3 Y
0071B8B9 |. 8B7424 44 mov esi,dword ptr ss:[esp+44]1 |0 F& k ^. ^1 \6 G* {
0071B8BD |. 3BC6 cmp eax,esi
+ {6 ~# g3 D( N8 C0071B8BF |. 7F 02 jg short heroes4.0071B8C3
- L+ R d9 M8 b' o( t& F0071B8C1 |. 8BC6 mov eax,esi8 ]6 A/ n, m4 Z: E* o# d
0071B8C3 |> 57 push edi
$ o8 ?1 {( z( ~4 D+ ^, }0071B8C4 |. 52 push edx5 O8 B0 W6 \ [8 Q( b- L
0071B8C5 |. 51 push ecx
* f& Y0 T. T+ S0 h0071B8C6 |. 50 push eax' Z' k4 ^* \6 s5 j
0071B8C7 |. 8D4C24 64 lea ecx,dword ptr ss:[esp+64]
+ \: R* ?, M( C$ l: Z! k4 Z, P0071B8CB |. E8 E0BBCEFF call heroes4.004074B0% Z6 }8 y5 u g
0071B8D0 |. 8B4424 60 mov eax,dword ptr ss:[esp+60]& Y7 [( D$ o1 H+ S& t
0071B8D4 |. 8B7424 58 mov esi,dword ptr ss:[esp+58]" {) w6 J" K. H& W: F
0071B8D8 |. 2BC6 sub eax,esi
4 z) c$ D2 T& y ^) \% A$ g0071B8DA |. 85C0 test eax,eax6 F) k$ O( @% l/ k( B9 o
0071B8DC |. 894424 18 mov dword ptr ss:[esp+18],eax9 B5 M0 e' X e4 q4 y$ g
0071B8E0 |. 0F8E B0010000 jle heroes4.0071BA96
+ i& d' t( O+ g+ Q6 j: u5 {# _0071B8E6 |. 8B6C24 5C mov ebp,dword ptr ss:[esp+5C]
, [4 P7 r2 w6 V5 D( }" R, K0071B8EA |. 8B4C24 54 mov ecx,dword ptr ss:[esp+54] ; 数值上等于arg2
6 m) h1 i! u$ l0071B8EE |. 2BE9 sub ebp,ecx0 T- z8 ~; j6 v5 r
0071B8F0 |. 85ED test ebp,ebp
( E+ p& g$ m- y: W+ J0 d0071B8F2 |. 896C24 1C mov dword ptr ss:[esp+1C],ebp" r+ N, J) d* V+ V, R' s. I
0071B8F6 |. 0F8E 9A010000 jle heroes4.0071BA96
% S1 R' `9 H* H* `0071B8FC |. 8B4424 6C mov eax,dword ptr ss:[esp+6C] ; arg2( S/ h G9 _$ j% L9 G' H6 S
0071B900 |. 8BF9 mov edi,ecx c. p$ k( n" b! X* D9 M2 c
0071B902 |. 2BF8 sub edi,eax
1 [5 J/ y7 t- U" f3 O0071B904 |. 8B4424 70 mov eax,dword ptr ss:[esp+70] ; arg3
9 p- `5 c! P% Y0071B908 |. 8BD6 mov edx,esi
2 g2 E- S1 Z9 E0 ?3 u( ]0071B90A |. 894C24 24 mov dword ptr ss:[esp+24],ecx8 h* G. e5 k$ B2 V
0071B90E |. 2BD0 sub edx,eax
* ?# v9 B7 X4 p4 B0 {0071B910 |. 8B43 0C mov eax,dword ptr ds:[ebx+C]" [: }2 o/ I9 d' |' ^
0071B913 |. 8BD8 mov ebx,eax+ M3 C/ I$ C" }+ l: n
0071B915 |. 0FAFDE imul ebx,esi
( l% r* T) C+ w7 R- E: ]( ]0 O0071B918 |. 8D344B lea esi,dword ptr ds:[ebx+ecx*2]
' D! R- o7 x7 H. z! A( K8 b2 v0071B91B |. 8B4C24 68 mov ecx,dword ptr ss:[esp+68], ~. |. ~& J* m3 T5 W
0071B91F |. 8B59 10 mov ebx,dword ptr ds:[ecx+10]
) D0 }8 Q: U( u( T0071B922 |. 8B4C24 10 mov ecx,dword ptr ss:[esp+10]4 _* E, A" h* H j4 t
0071B926 |. 03F3 add esi,ebx
6 l) s% n* [% F0071B928 |. 8B49 0C mov ecx,dword ptr ds:[ecx+C]3 S- c- y7 R* w
0071B92B |. 897424 68 mov dword ptr ss:[esp+68],esi; 重点:将缓冲区地址写入栈内(原arg1处)
' b' Y; y Z4 D( S5 k F+ N" \0071B92F |. 8BD9 mov ebx,ecx$ j! r6 `" W$ l# l4 d0 i( V
0071B931 |. 2BCD sub ecx,ebp) ` s" H) G! ^. ?# {
0071B933 |. 0FAFDA imul ebx,edx6 t, K" d6 ~$ E
0071B936 |. 8B5424 10 mov edx,dword ptr ss:[esp+10]2 n5 ]( W( |- P2 ~- H2 r% e+ B
0071B93A |. 894C24 20 mov dword ptr ss:[esp+20],ecx
. X b7 y$ \4 r* T, x3 @3 k2 `0071B93E |. 8D4C2D 00 lea ecx,dword ptr ss:[ebp+ebp]
' [( j) v' H3 j$ i$ Q5 G9 @5 n0071B942 |. 035A 10 add ebx,dword ptr ds:[edx+10]" _8 z% d/ @; n u2 `1 H4 h& H2 m
0071B945 |. 8B5424 18 mov edx,dword ptr ss:[esp+18]
8 Q# E8 D/ l# n- S' ^0071B949 |. 2BC1 sub eax,ecx% c; [/ ^9 D- Y
0071B94B |. 894424 24 mov dword ptr ss:[esp+24],eax
3 ?& r8 ^# ` b! L; o0071B94F |. 03DF add ebx,edi
- d `4 K9 I& ]/ U+ Y, E- q0071B951 |. 8BC2 mov eax,edx
6 t4 T; B, y4 C9 `0071B953 |. 4A dec edx
# o2 M; I2 x/ o2 z0071B954 |. 85C0 test eax,eax
2 B4 P0 A {/ H; o+ E7 f2 [0071B956 |. 0F84 3A010000 je heroes4.0071BA96
4 l# n9 O. I0 W7 A3 Q0071B95C |. 42 inc edx
) y# C" s" ^0 z3 f0 y0071B95D |. 895424 18 mov dword ptr ss:[esp+18],edx4 ]4 t' m7 B3 v8 K: G, o
0071B961 |> 85ED /test ebp,ebp- l( t. c$ }1 ?$ f* u- C8 j
0071B963 |. 0F84 0E010000 |je heroes4.0071BA77
" F% D" d: E+ N0071B969 |. 8B4424 74 |mov eax,dword ptr ss:[esp+74]
9 _9 U- e+ K- V7 \* f- `9 x' h; |0071B96D |. 896C24 14 |mov dword ptr ss:[esp+14],ebp
$ @0 Z5 _( I( |0071B971 |. 25 FFFF0000 |and eax,0FFFF
- P! L+ ^( E" Y$ }% M0071B976 |. 894424 10 |mov dword ptr ss:[esp+10],eax
. b4 E- q/ c \+ j& i. A y. a0071B97A |> 8A4424 78 |/mov al,byte ptr ss:[esp+78]3 Y! A% T9 s# y, D" |
0071B97E |. 8B2D DCF0AA00 ||mov ebp,dword ptr ds:[AAF0DC]
" v3 f& a/ F/ o. M0071B984 |. 84C0 ||test al,al
) d" i( z" \) o, D0071B986 |. 74 6A ||je short heroes4.0071B9F2
" m$ y, m$ R" N1 v5 Y" ~0071B988 |. 8A0B ||mov cl,byte ptr ds:[ebx] ; 取字模的像素点
l# d- z' `, y8 W' h( n% s& d0071B98A |. 8B4424 7C ||mov eax,dword ptr ss:[esp+7C] A/ f1 ?: \* l# d6 l
0071B98E |. 83E1 0F ||and ecx,0F ; 取低四位; J" l; n" D* K1 H, U
0071B991 |. 25 FFFF0000 ||and eax,0FFFF! ` c! T4 o6 P- D% [
0071B996 |. 8BF9 ||mov edi,ecx' |( A) E7 M8 D4 W K0 g
0071B998 |. 33C9 ||xor ecx,ecx. }/ h u9 [& j* {5 J
0071B99A |. 66:8B0E ||mov cx,word ptr ds:[esi] ; 取缓冲区的原值. P, K! m" _1 d$ C" G5 ]6 R
0071B99D |. 85FF ||test edi,edi ; 检查字模的像素点低四位是否为0
& g1 k0 F5 Q# M l0071B99F |. 74 54 ||je short heroes4.0071B9F5 ; 为0则不作处理, { b* j1 Q: j0 Q' g0 O i
0071B9A1 |. 8BD7 ||mov edx,edi
& T( S- C) L( b# f5 M0071B9A3 |. 8BF1 ||mov esi,ecx
9 {* o9 N. ~' Q' Q0071B9A5 |. C1FA 03 ||sar edx,30 P! |$ Z8 c! l+ n; h
0071B9A8 |. 83E2 01 ||and edx,1' p% B# `. U- u
0071B9AB |. 03FA ||add edi,edx
% Z- y' z. ?% Y1 ~1 J4 e0071B9AD |. 8BD1 ||mov edx,ecx
+ }- z l. w( _0071B9AF |. 8B0D 04F1AA00 ||mov ecx,dword ptr ds:[AAF104]9 O n: B T; L
0071B9B5 |. 23D5 ||and edx,ebp
/ E1 d7 U8 _# H/ l/ _0071B9B7 |. 23F1 ||and esi,ecx
! l' V3 [# ~% `- h0071B9B9 |. 8BC8 ||mov ecx,eax5 \( ]* b/ Y( A; o
0071B9BB |. 230D 04F1AA00 ||and ecx,dword ptr ds:[AAF104]0 |4 j. ~. j5 ^8 B4 f
0071B9C1 |. 23C5 ||and eax,ebp
0 ]4 |7 c: k( w- J4 |+ s9 M0071B9C3 |. 2BC2 ||sub eax,edx
+ w) }# V7 ^+ v0 L3 Z N- w2 M0071B9C5 |. 2BCE ||sub ecx,esi* _% s m. X/ q0 F+ x. b5 _. E
0071B9C7 |. 0FAFC7 ||imul eax,edi( d- E2 o8 x, Z
0071B9CA |. 0FAFCF ||imul ecx,edi6 L, w+ j) F: v: ], p
0071B9CD |. C1E6 04 ||shl esi,4
0 B5 {" `" |/ K$ N" s0071B9D0 |. 03CE ||add ecx,esi( r& o% q6 ^4 |8 f! K$ o6 A% I3 u0 b
0071B9D2 |. 8B35 F4F0AA00 ||mov esi,dword ptr ds:[AAF0F4]) L5 a# q3 I$ A1 J$ x
0071B9D8 |. C1E2 04 ||shl edx,4
8 M0 p; t: H7 M2 r0071B9DB |. 23CE ||and ecx,esi
: ?+ w7 y5 b0 p# b; Y0071B9DD |. 8B35 D8F0AA00 ||mov esi,dword ptr ds:[AAF0D8]
0 n1 v# r2 e* p: J: J+ L0071B9E3 |. 03C2 ||add eax,edx
$ R( J* G* |( h! _ _' N0071B9E5 |. 23C6 ||and eax,esi( G1 Z( h1 V6 l3 P0 H" p6 b
0071B9E7 |. 8B7424 68 ||mov esi,dword ptr ss:[esp+68]
7 a9 S$ z7 Y" l6 B3 Q+ r+ C0071B9EB |. 03C8 ||add ecx,eax3 F+ ?/ d. V6 s1 C
0071B9ED |. C1F9 04 ||sar ecx,4# \- N: r% |0 X9 u) i
0071B9F0 |. EB 03 ||jmp short heroes4.0071B9F5
. Q7 o+ {. \% P, M) W; w. m0071B9F2 |> 66:8B0E ||mov cx,word ptr ds:[esi]5 R% Z/ v2 R) v! S& B1 c9 Q" D
0071B9F5 |> 33D2 ||xor edx,edx
# s5 Y$ n# U3 Y) y! W0071B9F7 |. 81E1 FFFF0000 ||and ecx,0FFFF
1 Z+ [& l0 c7 j3 m. d0071B9FD |. 8A13 ||mov dl,byte ptr ds:[ebx]7 V6 ?. U% T$ s8 {; F$ N( H
0071B9FF |. 8BC1 ||mov eax,ecx
5 W% O. q. Q& J! {+ C' i0071BA01 |. C1EA 04 ||shr edx,4 ; 取高四位0 O; v& M+ z7 O+ ~
0071BA04 |. 85D2 ||test edx,edx ; 检查字模的像素点高四位是否为0
( }, |3 ~1 ]2 p0071BA06 |. 74 51 ||je short heroes4.0071BA59 ; 为0则不作处理4 N% v2 w) A% V; ^5 @: h3 |
0071BA08 |. 8BCA ||mov ecx,edx
7 f, E" b0 r1 X6 V0071BA0A |. 8BF0 ||mov esi,eax
8 |. D. y# G( X) X; R% k0071BA0C |. C1F9 03 ||sar ecx,3+ x; W9 O f; V* M$ m+ w$ }
0071BA0F |. 83E1 01 ||and ecx,13 n o- u `5 @6 Q/ V* [) Y) L' B6 L% Q
0071BA12 |. 23F5 ||and esi,ebp. T* ~7 @& D% G) S
0071BA14 |. 03D1 ||add edx,ecx1 O. N$ f) S$ t! y0 _
0071BA16 |. 8BC8 ||mov ecx,eax
( L# }: I, G i2 ` S0071BA18 |. 8B4424 10 ||mov eax,dword ptr ss:[esp+10]
+ x1 [- C3 Q1 A; }; a0 b7 [. X0071BA1C |. 8B3D 04F1AA00 ||mov edi,dword ptr ds:[AAF104]
: f% r; `% T% L& y4 |+ j7 @0071BA22 |. 23C5 ||and eax,ebp
! u; B0 ~! w: o% Z0071BA24 |. 23CF ||and ecx,edi& X* H* F, Z5 K9 [, e
0071BA26 |. 2BC6 ||sub eax,esi0 B4 s2 f7 @6 J* _
0071BA28 |. 0FAFC2 ||imul eax,edx
3 X2 l3 n7 T5 d* N) K+ |8 B0071BA2B |. C1E6 04 ||shl esi,4
2 Q5 i+ R8 i n* k+ E( K0071BA2E |. 03C6 ||add eax,esi
) Q* c4 q7 z: l5 y: h4 q( @6 z0071BA30 |. 8B35 D8F0AA00 ||mov esi,dword ptr ds:[AAF0D8]" C6 o8 I5 }5 Y& O- m
0071BA36 |. 23C6 ||and eax,esi/ ^; I$ W# F5 M# r8 ^0 v
0071BA38 |. 8B7424 10 ||mov esi,dword ptr ss:[esp+10]
% J/ S% h. d) ` s G; `2 Y6 i0071BA3C |. 23F7 ||and esi,edi
% q+ J& I5 A8 }. a0071BA3E |. 8B3D F4F0AA00 ||mov edi,dword ptr ds:[AAF0F4]
' ~+ e8 R6 J2 y* _0071BA44 |. 2BF1 ||sub esi,ecx& b( S3 [. A: f5 }( B$ p2 k
0071BA46 |. 0FAFF2 ||imul esi,edx
* a! J+ x- X6 a, j' u( p0 f0071BA49 |. C1E1 04 ||shl ecx,4; e4 y8 M6 [, r. v
0071BA4C |. 03F1 ||add esi,ecx3 A- v% U- H# x" z% M4 K$ s& d
0071BA4E |. 23F7 ||and esi,edi
* `( x/ s8 J$ L, o5 O' j( c. x& T( h0071BA50 |. 03C6 ||add eax,esi: x, e2 T! \, |3 g* \
0071BA52 |. 8B7424 68 ||mov esi,dword ptr ss:[esp+68]9 L% A- l8 d, d# D. G. \+ n
0071BA56 |. C1F8 04 ||sar eax,4' V( \6 t% W8 ^7 p6 m) Q8 h0 O
0071BA59 |> 66:8906 ||mov word ptr ds:[esi],ax ; 将经过处理后的缓冲区值放回原处+ l# C: c% C0 s; O" n
0071BA5C |. 8B4424 14 ||mov eax,dword ptr ss:[esp+14]
! H: }- t- T; C: p, }9 _0071BA60 |. 43 ||inc ebx ; 指向字模的下个像素点
2 E+ n- ^% `+ X4 E! Y0071BA61 |. 83C6 02 ||add esi,2 ; 指向缓冲区的下个点
. n3 k5 v% i7 n+ K0071BA64 |. 48 ||dec eax ; 计数值减1( h' j. V2 Q& ?3 E* y0 s
0071BA65 |. 897424 68 ||mov dword ptr ss:[esp+68],esi5 e" W7 w; K0 o: T& z, k: g
0071BA69 |. 894424 14 ||mov dword ptr ss:[esp+14],eax; a8 ?: t4 J4 o' @) X1 u0 e! Q
0071BA6D |.^ 0F85 07FFFFFF |\jnz heroes4.0071B97A
5 Q' Q, R, d# P" u( N5 b0071BA73 |. 8B6C24 1C |mov ebp,dword ptr ss:[esp+1C]$ g$ n$ u' _: d! _1 h. |
0071BA77 |> 8B5424 20 |mov edx,dword ptr ss:[esp+20]
/ J2 \, o+ f6 ~! k) A# i0071BA7B |. 8B4C24 24 |mov ecx,dword ptr ss:[esp+24]" ~* {0 w7 P' ^/ H! Z3 n
0071BA7F |. 8B4424 18 |mov eax,dword ptr ss:[esp+18]
9 t$ ?# c2 e5 O* @6 M: I0071BA83 |. 03DA |add ebx,edx ; 指向字模的下行像素点3 e: q2 I) Q1 u9 K9 ?1 g1 }% o
0071BA85 |. 03F1 |add esi,ecx ; 指向缓冲区的下行点
% e+ e6 F8 R4 W( W5 x4 v, r0071BA87 |. 48 |dec eax ; 计数值减1
( w/ [4 X* L7 V; Z% A0071BA88 |. 897424 68 |mov dword ptr ss:[esp+68],esi3 a: ?8 k O! p/ l/ l9 s
0071BA8C |. 894424 18 |mov dword ptr ss:[esp+18],eax
- W& P) ~% e5 \$ L9 V# ~- f- u3 v0071BA90 |.^ 0F85 CBFEFFFF \jnz heroes4.0071B961
0 l# S2 k9 S- f: C# m0071BA96 |> 5F pop edi4 n) O/ H" P4 o7 u u
0071BA97 |. 5E pop esi: r5 h9 v0 m; F6 |4 n: e
0071BA98 |. 5D pop ebp# T! [. [2 {6 ^. S7 b+ o( h
0071BA99 |. 5B pop ebx
( K5 m& m" {# m1 ~4 E( I0071BA9A |. 83C4 54 add esp,544 e" x( `5 n9 w5 ~' n
0071BA9D \. C2 1800 retn 18% v. z( ~- E2 t9 X& T7 ]5 x" J
本函数的核心是两层循环,从71B9A1开始就是循环体,整个换算过程是一个比较复杂的算法,可以简单表示为:! }3 h0 J7 J2 r, s
* T. w7 N4 T& ]5 u0 G0 `1 |/ x
buf[x][y]=func(buf[x][y],zm[x/2][y/2])# ~) X0 g1 Q+ M# M$ Q+ G
2 c: X1 {, Q) m3 i; Pbuf:缓冲区二维数组,两个字节表示一个点2 f( h7 S* ^6 k. J
zm:字模二维数组,一个字节表示一个点 |