参数表
, d- G+ j4 S3 G# M9 K( E( Sarg1:[arg1+10]+[arg1+C]*arg3+arg2*2存放缓冲区(应该就是屏幕显示区在内存的映像)基地址5 g5 X- v/ ~6 M( X
arg2:字符串宽度 x
1 t! T t. ~2 I$ R8 Harg3:y& A5 E/ ?8 F; g2 \: W( |
arg4:颜色" a8 K& Q* _1 I' A6 M* x
arg5:与颜色深度有关! q5 ?2 S3 d1 D
arg6:与颜色深度有关
/ g4 a( C) P# l6 J9 x+ Gecx:字符的编码基地址% u1 s' P; \, ], }7 a" [
. W4 {% A2 a- K( Z9 l
0071B820 /$ 83EC 54 sub esp,546 R; B& V$ h3 {; R! e; X
0071B823 |. 53 push ebx. O% @ Q* B5 _+ P4 O
0071B824 |. 8B5C24 5C mov ebx,dword ptr ss:[esp+5C]; d9 {* C/ K+ n3 }& W
0071B828 |. 55 push ebp
: i4 W) l: L' a% s, A2 h0071B829 |. 56 push esi6 ]. @; ]) ^* f; _8 S
0071B82A |. 8B43 08 mov eax,dword ptr ds:[ebx+8]2 ~: m/ M# C; a& l3 q0 E Y
0071B82D |. 8BF1 mov esi,ecx$ F# Z* J5 z0 Y+ d+ w" c
0071B82F |. 8B4B 04 mov ecx,dword ptr ds:[ebx+4]
& m; Z/ d+ R% c# x0071B832 |. 57 push edi8 W% Q3 W4 z0 [" E8 J+ B# Y' s0 o
0071B833 |. 50 push eax, A u7 M5 J9 d* O8 O0 P/ J
0071B834 |. 51 push ecx
: ~; u, Q- y5 h. U( h0071B835 |. 6A 00 push 0
2 N+ V/ e! A) b0071B837 |. 6A 00 push 0
) R& s6 \2 c) K& y. G4 V7 r0071B839 |. 8D4C24 54 lea ecx,dword ptr ss:[esp+54]% y) X/ l4 X7 ]4 _- g! i
0071B83D |. 897424 20 mov dword ptr ss:[esp+20],esi. ~. x# }" g% e2 }& g
0071B841 |. E8 6ABCCEFF call heroes4.004074B0 r. ~" f/ ]/ s
0071B846 |. 8B56 08 mov edx,dword ptr ds:[esi+8]
" e1 {- w* d4 p# X6 u3 x0071B849 |. 8B46 04 mov eax,dword ptr ds:[esi+4]& }2 f8 r1 @+ b" S' l( `0 t
0071B84C |. 52 push edx$ B4 F8 y, w+ Y# `) ?) D. }
0071B84D |. 50 push eax
@, q; n9 z9 w) T& Q0071B84E |. 6A 00 push 0
+ U% Y- P" G7 c# g) n# z. t0071B850 |. 6A 00 push 0
( T; F& D2 r! M, {0071B852 |. 8D4C24 44 lea ecx,dword ptr ss:[esp+44]6 f% x; _& L; h5 H+ T6 c! i
0071B856 |. E8 55BCCEFF call heroes4.004074B0
( N% J. C* t. Y0071B85B |. 8B4C24 34 mov ecx,dword ptr ss:[esp+34]
/ j* d) ^" e( ~' l7 `0071B85F |. 8B5424 38 mov edx,dword ptr ss:[esp+38]
9 @9 y* t# J7 [: ]0071B863 |. 8B4424 3C mov eax,dword ptr ss:[esp+3C]) B3 }7 L3 N3 ^0 Y
0071B867 |. 894C24 24 mov dword ptr ss:[esp+24],ecx- T2 S' @' h5 {' y/ C* d
0071B86B |. 8B4C24 40 mov ecx,dword ptr ss:[esp+40]! a4 `$ i% k" j) l
0071B86F |. 895424 28 mov dword ptr ss:[esp+28],edx
& _) a2 [1 B- a& a0071B873 |. 8D5424 6C lea edx,dword ptr ss:[esp+6C]
2 }2 u$ ]9 ~4 H& A# U5 W* I0071B877 |. 894C24 30 mov dword ptr ss:[esp+30],ecx0 ]8 _& e) t3 v6 x
0071B87B |. 52 push edx O F* b8 y. N& y8 N
0071B87C |. 8D4C24 28 lea ecx,dword ptr ss:[esp+28]
- l7 y! |0 W, l. D1 p) ?; ^0071B880 |. 894424 30 mov dword ptr ss:[esp+30],eax9 z2 w( V! B" w- k$ f( n7 d
0071B884 |. E8 47BCCEFF call heroes4.004074D00 ^ Z) z L Z& Q$ e: _
0071B889 |. 8B4424 30 mov eax,dword ptr ss:[esp+30]
/ y$ h; ^ n% d$ y0071B88D |. 8B4C24 50 mov ecx,dword ptr ss:[esp+50]
: O. z2 I7 L8 A0071B891 |. 3BC1 cmp eax,ecx/ b, J" Z, {) ^% N
0071B893 |. 8BF8 mov edi,eax8 |: j. h# a& v! n
0071B895 |. 7C 02 jl short heroes4.0071B899
/ D* ~3 M0 p9 g& G/ c0071B897 |. 8BF9 mov edi,ecx
/ S9 A6 g' `; p% g, H0071B899 |> 8B4424 2C mov eax,dword ptr ss:[esp+2C]( }4 M& {$ U/ z, q9 k3 {
0071B89D |. 8B5424 4C mov edx,dword ptr ss:[esp+4C]7 d& r7 B: F+ m$ O0 z7 [' P3 S7 Q2 Z
0071B8A1 |. 3BC2 cmp eax,edx" a4 J0 K% x& }/ r3 E& R. J2 [
0071B8A3 |. 7D 02 jge short heroes4.0071B8A7
. p6 U6 F# v& l3 l5 F. l" j0071B8A5 |. 8BD0 mov edx,eax4 {! D: x' p! r( `6 v& M$ n1 s
0071B8A7 |> 8B4424 28 mov eax,dword ptr ss:[esp+28]
7 R3 B% D, \. ?( [+ k% d. H: d1 q$ a0071B8AB |. 8B4C24 48 mov ecx,dword ptr ss:[esp+48]
; b8 e7 } b& u" j) ^# I0071B8AF |. 3BC1 cmp eax,ecx
1 z) `% |7 d. G! Z( X& x0 \! o0071B8B1 |. 7E 02 jle short heroes4.0071B8B5
* t6 \# _) n" c0071B8B3 |. 8BC8 mov ecx,eax
* f2 A1 d# S* N0071B8B5 |> 8B4424 24 mov eax,dword ptr ss:[esp+24]
]& c" s" g# Y) u! v0071B8B9 |. 8B7424 44 mov esi,dword ptr ss:[esp+44] a# x1 W! v" X% Z
0071B8BD |. 3BC6 cmp eax,esi2 O- ^- H2 F4 B$ w: k/ G' ^- F, |! o
0071B8BF |. 7F 02 jg short heroes4.0071B8C3
- R( Q, i w @1 g0071B8C1 |. 8BC6 mov eax,esi
, z" W% M/ e- w6 p0071B8C3 |> 57 push edi, T/ M0 a8 Q2 V5 h
0071B8C4 |. 52 push edx$ o1 j4 R3 b" o. {" o
0071B8C5 |. 51 push ecx; {) `: ]+ e) k9 e; [% P$ V
0071B8C6 |. 50 push eax
0 s3 _" \- S; |1 r) d3 ~0071B8C7 |. 8D4C24 64 lea ecx,dword ptr ss:[esp+64]
+ U! N' z, d- u& X6 @2 m! E3 ]0071B8CB |. E8 E0BBCEFF call heroes4.004074B0
% h, F7 ~7 L; ?1 x1 o# z+ r0071B8D0 |. 8B4424 60 mov eax,dword ptr ss:[esp+60]
$ V4 R. {- N! N( M0071B8D4 |. 8B7424 58 mov esi,dword ptr ss:[esp+58]$ e6 F, t( C/ ~1 Q4 t/ W( T
0071B8D8 |. 2BC6 sub eax,esi
- z8 W ]0 `: P& [0071B8DA |. 85C0 test eax,eax
1 ~% X; r- K1 Z: V% R0071B8DC |. 894424 18 mov dword ptr ss:[esp+18],eax
6 f, E; U" `. o' K8 u, M, A0071B8E0 |. 0F8E B0010000 jle heroes4.0071BA96
7 w% G1 w h4 B( N0071B8E6 |. 8B6C24 5C mov ebp,dword ptr ss:[esp+5C]/ D1 @# Z* \8 D- t
0071B8EA |. 8B4C24 54 mov ecx,dword ptr ss:[esp+54] ; 数值上等于arg2" J- U$ R6 I& P8 Y; K8 [9 e' A8 h: S
0071B8EE |. 2BE9 sub ebp,ecx
$ ]) H& L6 Z" B0 ]+ L0071B8F0 |. 85ED test ebp,ebp# r" [9 Y4 M7 I3 g8 |
0071B8F2 |. 896C24 1C mov dword ptr ss:[esp+1C],ebp: @# l. k" i& D" Z
0071B8F6 |. 0F8E 9A010000 jle heroes4.0071BA96
# I0 e! m0 N- S7 K$ F T0071B8FC |. 8B4424 6C mov eax,dword ptr ss:[esp+6C] ; arg2% d6 j3 C @1 h& x
0071B900 |. 8BF9 mov edi,ecx
3 ~; n8 I$ H9 Y0071B902 |. 2BF8 sub edi,eax0 J$ `; h6 w% f/ j( ^- o
0071B904 |. 8B4424 70 mov eax,dword ptr ss:[esp+70] ; arg3
2 r2 v1 h w N; O0 a9 R# S/ C0071B908 |. 8BD6 mov edx,esi
; k* p2 l! ~& T8 `' @& t0071B90A |. 894C24 24 mov dword ptr ss:[esp+24],ecx: ~; r- V: L: q m2 r: C2 k
0071B90E |. 2BD0 sub edx,eax
3 E7 w" x& ?* d+ F+ Y" c0071B910 |. 8B43 0C mov eax,dword ptr ds:[ebx+C]
0 p/ M, S4 a* G; J( h4 O; ]; j0071B913 |. 8BD8 mov ebx,eax
, |) M0 o- T0 i/ a+ n4 H0071B915 |. 0FAFDE imul ebx,esi
* D) \; e, S( m0071B918 |. 8D344B lea esi,dword ptr ds:[ebx+ecx*2]
. u7 ~5 Z: B" R8 a- |! _( {# x0071B91B |. 8B4C24 68 mov ecx,dword ptr ss:[esp+68]
2 e4 y0 J" o8 K3 U: f& q7 `2 b0071B91F |. 8B59 10 mov ebx,dword ptr ds:[ecx+10]4 U! S0 \; j7 Q# j1 h4 H% A) N! P, m; R1 W
0071B922 |. 8B4C24 10 mov ecx,dword ptr ss:[esp+10]
# z4 I8 J0 T, Q4 H9 {8 k; L8 @6 u0071B926 |. 03F3 add esi,ebx
6 y- f5 D9 q" t0071B928 |. 8B49 0C mov ecx,dword ptr ds:[ecx+C]
/ |; L& v$ A. |, T- c, `$ a0071B92B |. 897424 68 mov dword ptr ss:[esp+68],esi; 重点:将缓冲区地址写入栈内(原arg1处)
. y% }# a! l0 L5 |/ Y0071B92F |. 8BD9 mov ebx,ecx% I' Y0 ?* Y% W3 n8 I: f1 Y
0071B931 |. 2BCD sub ecx,ebp; \& c! U- O( _% S( ?, G8 X
0071B933 |. 0FAFDA imul ebx,edx$ B$ @2 s7 k* @$ w! X; D
0071B936 |. 8B5424 10 mov edx,dword ptr ss:[esp+10]
4 M' q- T2 d" c1 o0071B93A |. 894C24 20 mov dword ptr ss:[esp+20],ecx
! J1 p; g3 `) ?0071B93E |. 8D4C2D 00 lea ecx,dword ptr ss:[ebp+ebp]$ W$ ?5 b4 Z4 q' W1 p# D
0071B942 |. 035A 10 add ebx,dword ptr ds:[edx+10]
! `. Q' B0 Y. e5 ~+ I' m! a5 e0071B945 |. 8B5424 18 mov edx,dword ptr ss:[esp+18]; n l7 M0 D: o# t; V7 r
0071B949 |. 2BC1 sub eax,ecx8 S% P5 N& K- q+ F
0071B94B |. 894424 24 mov dword ptr ss:[esp+24],eax+ k! w5 P- a; ?6 K4 h
0071B94F |. 03DF add ebx,edi; }. Y" D1 Y+ ] {' [
0071B951 |. 8BC2 mov eax,edx1 G( R) @9 v& l9 K
0071B953 |. 4A dec edx# j6 r' G5 a9 u: ]5 c9 `
0071B954 |. 85C0 test eax,eax+ q6 f, [$ z* z- d8 b
0071B956 |. 0F84 3A010000 je heroes4.0071BA962 E2 f* ^( ]# A6 ?+ p: m
0071B95C |. 42 inc edx
) ]& ]; K" R S0071B95D |. 895424 18 mov dword ptr ss:[esp+18],edx
1 ]8 z& y* u& ?2 D% i) i" {9 V; O0071B961 |> 85ED /test ebp,ebp
8 N5 n1 }' ?2 L$ {, e0071B963 |. 0F84 0E010000 |je heroes4.0071BA77
* m3 G$ ^5 [1 D9 q0071B969 |. 8B4424 74 |mov eax,dword ptr ss:[esp+74]5 X- ` X; t9 K: i% I ^3 F
0071B96D |. 896C24 14 |mov dword ptr ss:[esp+14],ebp
6 X" ]; P9 ^- T. I0071B971 |. 25 FFFF0000 |and eax,0FFFF
. P; Z: B6 B) [/ {0071B976 |. 894424 10 |mov dword ptr ss:[esp+10],eax
) v1 z9 s/ H" ~( U8 u8 U0071B97A |> 8A4424 78 |/mov al,byte ptr ss:[esp+78]. f. Q0 m; s! N# X8 @0 E
0071B97E |. 8B2D DCF0AA00 ||mov ebp,dword ptr ds:[AAF0DC]. b% K" {; L* O, F+ v
0071B984 |. 84C0 ||test al,al
0 ?- k+ I6 y& h' ]7 S" q0071B986 |. 74 6A ||je short heroes4.0071B9F24 P8 l1 x$ [8 u1 b3 W+ |) m
0071B988 |. 8A0B ||mov cl,byte ptr ds:[ebx] ; 取字模的像素点
1 O6 C% H( {1 _" g3 O8 E+ I9 v0071B98A |. 8B4424 7C ||mov eax,dword ptr ss:[esp+7C]
4 u) ^/ u- l" A5 t) Q1 w+ w0071B98E |. 83E1 0F ||and ecx,0F ; 取低四位7 Z5 J) p8 w' i9 j
0071B991 |. 25 FFFF0000 ||and eax,0FFFF% [4 n! Q: d. J! e0 I
0071B996 |. 8BF9 ||mov edi,ecx
$ \) K8 p' V1 {2 ]3 j7 j0071B998 |. 33C9 ||xor ecx,ecx7 H: I/ U# o/ p2 H5 C4 q+ F
0071B99A |. 66:8B0E ||mov cx,word ptr ds:[esi] ; 取缓冲区的原值# ^ p+ p& |( [" {1 I
0071B99D |. 85FF ||test edi,edi ; 检查字模的像素点低四位是否为0" @$ y! Y3 p: r- q% O; v& { F
0071B99F |. 74 54 ||je short heroes4.0071B9F5 ; 为0则不作处理' s. S6 g, E) N) ]8 d
0071B9A1 |. 8BD7 ||mov edx,edi7 g2 `4 D9 M9 d( @9 c* F
0071B9A3 |. 8BF1 ||mov esi,ecx6 s; P6 s# n8 ^6 G+ ?- d
0071B9A5 |. C1FA 03 ||sar edx,35 l3 w* ]+ V& A
0071B9A8 |. 83E2 01 ||and edx,1
$ l, |" u# z: w0 o0071B9AB |. 03FA ||add edi,edx$ h+ A1 i# A5 `; h# x) j8 k
0071B9AD |. 8BD1 ||mov edx,ecx
1 i7 ^" N% q1 G1 F7 L0071B9AF |. 8B0D 04F1AA00 ||mov ecx,dword ptr ds:[AAF104]7 f+ ?7 N1 z% M0 u. \1 a
0071B9B5 |. 23D5 ||and edx,ebp& ?5 ]3 G; l4 C0 M8 y* s9 j* s
0071B9B7 |. 23F1 ||and esi,ecx2 Q4 I# M0 {; k4 r, z6 b
0071B9B9 |. 8BC8 ||mov ecx,eax- U5 r5 I. W1 r3 F0 p
0071B9BB |. 230D 04F1AA00 ||and ecx,dword ptr ds:[AAF104]
+ v [ X) M* p! }4 ~! t9 a- I1 D1 o0071B9C1 |. 23C5 ||and eax,ebp
# o5 }0 b% s( @# x2 [1 v. L+ H+ H5 _0071B9C3 |. 2BC2 ||sub eax,edx
, c' J+ n1 i. V/ g% k" o* \0071B9C5 |. 2BCE ||sub ecx,esi) f" Q8 p, b& ]% Q* S& j4 }$ O( P
0071B9C7 |. 0FAFC7 ||imul eax,edi% R3 z! C5 U# Q- V8 R( x1 |9 N
0071B9CA |. 0FAFCF ||imul ecx,edi v; c9 U# C( A c. |. x) Y5 E- x
0071B9CD |. C1E6 04 ||shl esi,4
* R2 m, U* a' k4 t* L! V! B# ?0071B9D0 |. 03CE ||add ecx,esi' [! p1 L7 t1 J
0071B9D2 |. 8B35 F4F0AA00 ||mov esi,dword ptr ds:[AAF0F4]
1 d$ M2 n2 B( ]& r0071B9D8 |. C1E2 04 ||shl edx,4
/ Q5 O% k' y6 Z" P, U0071B9DB |. 23CE ||and ecx,esi8 c+ U1 ~! s7 E# W: ~/ N; o
0071B9DD |. 8B35 D8F0AA00 ||mov esi,dword ptr ds:[AAF0D8]
/ i. B* J I" T2 f3 ^0071B9E3 |. 03C2 ||add eax,edx, a: j+ \; R5 t2 {6 O
0071B9E5 |. 23C6 ||and eax,esi q! {9 ^' V* i
0071B9E7 |. 8B7424 68 ||mov esi,dword ptr ss:[esp+68]
! S4 K9 ]9 C6 a% M; P7 ?0071B9EB |. 03C8 ||add ecx,eax
( H& t& M: E$ {' K8 [+ C+ x, R0071B9ED |. C1F9 04 ||sar ecx,4
. ~$ b4 m d. a: N0071B9F0 |. EB 03 ||jmp short heroes4.0071B9F5
% ] K8 h4 h* H% o0071B9F2 |> 66:8B0E ||mov cx,word ptr ds:[esi]- D. P9 P+ S3 f" Q$ ]+ `3 I
0071B9F5 |> 33D2 ||xor edx,edx
+ e2 ?1 d2 C; d7 B5 \0071B9F7 |. 81E1 FFFF0000 ||and ecx,0FFFF1 p' h$ u; w. w3 |
0071B9FD |. 8A13 ||mov dl,byte ptr ds:[ebx]1 t# b: @+ O+ W$ b; P
0071B9FF |. 8BC1 ||mov eax,ecx! c$ S1 G0 |: f' z' }
0071BA01 |. C1EA 04 ||shr edx,4 ; 取高四位4 r- `5 h u H# s3 c% z, ?
0071BA04 |. 85D2 ||test edx,edx ; 检查字模的像素点高四位是否为0
3 i0 z0 V1 j2 H9 [: d- r0071BA06 |. 74 51 ||je short heroes4.0071BA59 ; 为0则不作处理& F$ W1 P4 k9 b1 G
0071BA08 |. 8BCA ||mov ecx,edx s0 s3 ]0 W1 t% t) u& B- M7 l
0071BA0A |. 8BF0 ||mov esi,eax
8 \ o, H- B, n! o0071BA0C |. C1F9 03 ||sar ecx,38 O G3 Z: \, z, a' Z' Y) f
0071BA0F |. 83E1 01 ||and ecx,1
: W) m( h: a3 }0071BA12 |. 23F5 ||and esi,ebp G- |, p0 x' v5 o6 t1 U
0071BA14 |. 03D1 ||add edx,ecx
0 E" p8 [# C2 S0071BA16 |. 8BC8 ||mov ecx,eax
7 M% d$ P' {8 I4 M3 E0071BA18 |. 8B4424 10 ||mov eax,dword ptr ss:[esp+10]' i7 r- @. {- G4 C! t' [
0071BA1C |. 8B3D 04F1AA00 ||mov edi,dword ptr ds:[AAF104]
0 N5 D- p& T; ?, z0071BA22 |. 23C5 ||and eax,ebp
" K" a" |7 C% B( D, \& |0071BA24 |. 23CF ||and ecx,edi, H" _5 ^4 h- Z/ R
0071BA26 |. 2BC6 ||sub eax,esi* p3 j; L3 U' R* I: v5 N- K
0071BA28 |. 0FAFC2 ||imul eax,edx; l- y' y) Z: _3 Y" k* D/ F
0071BA2B |. C1E6 04 ||shl esi,4; T% G% l# N& Q+ D1 _6 D
0071BA2E |. 03C6 ||add eax,esi3 l+ v6 O( y2 N
0071BA30 |. 8B35 D8F0AA00 ||mov esi,dword ptr ds:[AAF0D8]
/ y$ v, T6 [! G$ c6 W/ A) u0071BA36 |. 23C6 ||and eax,esi+ ~ Y* p4 T9 N) }1 m
0071BA38 |. 8B7424 10 ||mov esi,dword ptr ss:[esp+10]/ E4 D9 {% Y) G' m% Z/ O. T
0071BA3C |. 23F7 ||and esi,edi
7 O3 Z% ]' r# h: X( Q0071BA3E |. 8B3D F4F0AA00 ||mov edi,dword ptr ds:[AAF0F4]# g$ O" ~) R$ E
0071BA44 |. 2BF1 ||sub esi,ecx
" P( O# l( g9 p9 |0071BA46 |. 0FAFF2 ||imul esi,edx
; k3 |& |8 _! C1 m n' u" Y0071BA49 |. C1E1 04 ||shl ecx,4
4 ?6 p% {( ?# R( H* I2 w: O: s0071BA4C |. 03F1 ||add esi,ecx# R! o% K! x$ Y
0071BA4E |. 23F7 ||and esi,edi
6 B# X9 o8 [& {0071BA50 |. 03C6 ||add eax,esi
3 x$ h5 w' X4 U/ G7 k0071BA52 |. 8B7424 68 ||mov esi,dword ptr ss:[esp+68]
- H7 s i! p, d% G5 \0071BA56 |. C1F8 04 ||sar eax,46 z4 d0 H4 g0 N8 Z0 s6 b, V
0071BA59 |> 66:8906 ||mov word ptr ds:[esi],ax ; 将经过处理后的缓冲区值放回原处0 k- i' N+ B% h% ?
0071BA5C |. 8B4424 14 ||mov eax,dword ptr ss:[esp+14]1 O9 f1 J0 F- X# q! v" _; Q7 a
0071BA60 |. 43 ||inc ebx ; 指向字模的下个像素点* ]8 R& X+ Y4 d7 y, K9 _/ a
0071BA61 |. 83C6 02 ||add esi,2 ; 指向缓冲区的下个点' @0 B% t; H' x. M
0071BA64 |. 48 ||dec eax ; 计数值减1
; J' I L5 }' J! a0071BA65 |. 897424 68 ||mov dword ptr ss:[esp+68],esi
( q2 s. `" ^8 h1 ?& j1 V0071BA69 |. 894424 14 ||mov dword ptr ss:[esp+14],eax
7 E6 O# S7 e3 a/ V K7 C0071BA6D |.^ 0F85 07FFFFFF |\jnz heroes4.0071B97A
" ]1 }5 B+ o/ L0071BA73 |. 8B6C24 1C |mov ebp,dword ptr ss:[esp+1C]7 v: O0 ^/ B. v) v
0071BA77 |> 8B5424 20 |mov edx,dword ptr ss:[esp+20]
; ~2 {+ @+ e' ~6 Z9 Y ^0071BA7B |. 8B4C24 24 |mov ecx,dword ptr ss:[esp+24]
" R' q% P1 @+ I& F) n+ g$ U' W0071BA7F |. 8B4424 18 |mov eax,dword ptr ss:[esp+18]- W$ W$ B% f, e6 l
0071BA83 |. 03DA |add ebx,edx ; 指向字模的下行像素点6 v+ i' @. T7 O J2 Y+ v
0071BA85 |. 03F1 |add esi,ecx ; 指向缓冲区的下行点
* k# ?; G0 \2 f2 h0071BA87 |. 48 |dec eax ; 计数值减1
" i+ D' S* [, }3 c3 T9 u! a6 ^7 B0071BA88 |. 897424 68 |mov dword ptr ss:[esp+68],esi
2 e7 D/ d1 o1 w4 F0 I( m0071BA8C |. 894424 18 |mov dword ptr ss:[esp+18],eax0 |2 k" A) p& q% S* U9 m4 ^
0071BA90 |.^ 0F85 CBFEFFFF \jnz heroes4.0071B961
5 h' G' \& e5 J2 ^0071BA96 |> 5F pop edi; [: O3 ~! t" u! a8 q/ F+ K& M8 Q
0071BA97 |. 5E pop esi# |5 m9 Z7 Q: t' C, J8 w* u
0071BA98 |. 5D pop ebp
% A5 _" v4 q+ C% X9 f0 Z2 g0071BA99 |. 5B pop ebx* m* X/ I: V& m. P
0071BA9A |. 83C4 54 add esp,54* }) S* b; K# |3 c, E x: v, b$ U7 ?
0071BA9D \. C2 1800 retn 18
7 H* Y$ m: E$ W. l& Y: s* Q% d本函数的核心是两层循环,从71B9A1开始就是循环体,整个换算过程是一个比较复杂的算法,可以简单表示为:* P n/ i0 o! a* K- U2 v j3 ^
0 ~+ u5 n$ u/ n. O1 E+ `* abuf[x][y]=func(buf[x][y],zm[x/2][y/2])( g: v0 q( H: D/ l8 \
4 `) ]0 g; x9 A1 {. F# y ^
buf:缓冲区二维数组,两个字节表示一个点0 k' [0 n: T1 n6 A6 P, \
zm:字模二维数组,一个字节表示一个点 |