参数表
) Z1 }. \; V; R% |2 M0 harg1:[arg1+10]+[arg1+C]*arg3+arg2*2存放缓冲区(应该就是屏幕显示区在内存的映像)基地址
4 r. ?9 i' H E F4 garg2:字符串宽度 x q3 ` p5 [/ a' ?- |
arg3:y
6 |7 e/ W& P2 V& G' jarg4:颜色$ N# k& W; t( M0 t7 W. J7 B
arg5:与颜色深度有关
1 E( V: T+ \, s( o4 carg6:与颜色深度有关7 X* L" f6 m" R& d
ecx:字符的编码基地址9 f3 j& L: M7 H2 Q7 v$ u
# q6 y* d5 _- r0071B820 /$ 83EC 54 sub esp,543 i3 N# b) }& l2 J- z7 d2 |
0071B823 |. 53 push ebx. i* D( k3 C, Z* {
0071B824 |. 8B5C24 5C mov ebx,dword ptr ss:[esp+5C]
0 r. l0 m+ B' [6 P0071B828 |. 55 push ebp: X u f. H! z
0071B829 |. 56 push esi
' l% t q$ f6 h* K) [0071B82A |. 8B43 08 mov eax,dword ptr ds:[ebx+8]
$ n- E& b& v+ k& p! l b0071B82D |. 8BF1 mov esi,ecx# k1 q+ u7 S7 h1 ?
0071B82F |. 8B4B 04 mov ecx,dword ptr ds:[ebx+4]
7 ~8 V* H6 t& _" q5 q# [# o( w8 s t0071B832 |. 57 push edi \2 O1 T; g( A+ p% ?
0071B833 |. 50 push eax) |' u0 g2 O0 M8 G
0071B834 |. 51 push ecx
. _ y# P# I( I9 D. F0071B835 |. 6A 00 push 0
% v/ P/ b" E/ u0 H6 `* X ?. F5 \0071B837 |. 6A 00 push 05 `3 J+ x3 P D, B; @, c" @5 g, J
0071B839 |. 8D4C24 54 lea ecx,dword ptr ss:[esp+54]8 V+ V9 W# u/ ~
0071B83D |. 897424 20 mov dword ptr ss:[esp+20],esi
, A1 s Z; m0 g2 j) d" x0071B841 |. E8 6ABCCEFF call heroes4.004074B0/ S9 P ^& P1 e+ [
0071B846 |. 8B56 08 mov edx,dword ptr ds:[esi+8]1 A. k0 k; E( J; i- D
0071B849 |. 8B46 04 mov eax,dword ptr ds:[esi+4]
8 r4 L% _ m/ [( R; q0071B84C |. 52 push edx& a7 J, P1 b9 |3 o2 o7 T9 r5 b7 U
0071B84D |. 50 push eax
: j2 ?' p8 W& ~# N/ ?0071B84E |. 6A 00 push 0
K( _& m: b: J/ I$ a0071B850 |. 6A 00 push 0* C; V5 `# W$ b3 Z/ E& h, Y. E% D
0071B852 |. 8D4C24 44 lea ecx,dword ptr ss:[esp+44]7 I% G! O- s% j( f8 ^5 z
0071B856 |. E8 55BCCEFF call heroes4.004074B0
3 h9 c( s* s9 Z$ L. Q3 L8 H+ }9 i0071B85B |. 8B4C24 34 mov ecx,dword ptr ss:[esp+34]% x9 ?' R; L* w! u r3 n5 w
0071B85F |. 8B5424 38 mov edx,dword ptr ss:[esp+38]. \& W3 d, |8 Z* T h: v8 L
0071B863 |. 8B4424 3C mov eax,dword ptr ss:[esp+3C]$ p% U' a4 y2 ^; \4 r f9 M
0071B867 |. 894C24 24 mov dword ptr ss:[esp+24],ecx, F$ G& R/ {4 `
0071B86B |. 8B4C24 40 mov ecx,dword ptr ss:[esp+40]4 ]. v4 o) o# _& l. z
0071B86F |. 895424 28 mov dword ptr ss:[esp+28],edx
2 l, A& V! |) b9 \ [0 ?0071B873 |. 8D5424 6C lea edx,dword ptr ss:[esp+6C]3 {, A/ ^$ o- F! n
0071B877 |. 894C24 30 mov dword ptr ss:[esp+30],ecx4 d2 l+ N* W# o: Z! {5 r
0071B87B |. 52 push edx
- N v) Z2 i" }8 h0071B87C |. 8D4C24 28 lea ecx,dword ptr ss:[esp+28]- w0 u" @- J; m; J7 Z
0071B880 |. 894424 30 mov dword ptr ss:[esp+30],eax% P2 c+ W* [- q% j1 D
0071B884 |. E8 47BCCEFF call heroes4.004074D0/ o0 v) @' r N, v& J
0071B889 |. 8B4424 30 mov eax,dword ptr ss:[esp+30]
& ^) f$ J. q5 }4 v; B5 y; d0071B88D |. 8B4C24 50 mov ecx,dword ptr ss:[esp+50]" y' ^7 `9 l$ E! N' K1 C: P9 d$ }
0071B891 |. 3BC1 cmp eax,ecx
/ S+ m1 p+ m7 `, r0 M4 P/ Z0071B893 |. 8BF8 mov edi,eax) }5 {4 D9 r: ]! q9 y2 _
0071B895 |. 7C 02 jl short heroes4.0071B8991 f3 o" q: y) N
0071B897 |. 8BF9 mov edi,ecx
+ x& W. {# g9 ^: L0071B899 |> 8B4424 2C mov eax,dword ptr ss:[esp+2C]! s9 A# h. y6 m
0071B89D |. 8B5424 4C mov edx,dword ptr ss:[esp+4C]
1 m# D! |+ m& T1 ~5 O6 U! @0 ^+ Q, X0071B8A1 |. 3BC2 cmp eax,edx5 g' I2 k+ M4 ^; B6 S2 Q2 n; o
0071B8A3 |. 7D 02 jge short heroes4.0071B8A7
0 c4 o1 G" R9 u( q- X% a0071B8A5 |. 8BD0 mov edx,eax1 ^8 R) j* r7 s B7 @
0071B8A7 |> 8B4424 28 mov eax,dword ptr ss:[esp+28]" u* ~, T, O7 T( ?/ Q4 A8 i
0071B8AB |. 8B4C24 48 mov ecx,dword ptr ss:[esp+48]
' B" z1 A* N+ R8 U" I1 D- J0071B8AF |. 3BC1 cmp eax,ecx
& S a( e K- R. D0071B8B1 |. 7E 02 jle short heroes4.0071B8B5
0 U7 [8 D! S3 c m6 k B( |( h0071B8B3 |. 8BC8 mov ecx,eax
8 n1 f* S) q2 B, [' c0071B8B5 |> 8B4424 24 mov eax,dword ptr ss:[esp+24]
" j; {# U3 y* U0 B3 L5 r" K' L3 x0071B8B9 |. 8B7424 44 mov esi,dword ptr ss:[esp+44]
# J# C) a- ]. f2 N4 E; k5 ?0071B8BD |. 3BC6 cmp eax,esi3 g: s7 {3 }+ c4 Y) I
0071B8BF |. 7F 02 jg short heroes4.0071B8C3
& c" U$ U; a! K0071B8C1 |. 8BC6 mov eax,esi
' f. R7 W! C* Z# |3 J- A" G' l0071B8C3 |> 57 push edi
+ e( M' T- O! A6 W G" ~0071B8C4 |. 52 push edx) Q* h1 @4 R$ V0 }: r' }+ s
0071B8C5 |. 51 push ecx
" K$ t6 R3 I0 \+ I1 R0071B8C6 |. 50 push eax4 g+ c/ Y3 i* v' w! P+ h. Z
0071B8C7 |. 8D4C24 64 lea ecx,dword ptr ss:[esp+64]
4 y# ]' \- P- y2 p& Y0071B8CB |. E8 E0BBCEFF call heroes4.004074B0
?+ p$ ^; {& G8 g2 V! D! W0071B8D0 |. 8B4424 60 mov eax,dword ptr ss:[esp+60]! P/ D) _# c6 u6 L3 b1 Q, l$ @4 y
0071B8D4 |. 8B7424 58 mov esi,dword ptr ss:[esp+58]
1 h7 C) V3 X" x0071B8D8 |. 2BC6 sub eax,esi
- {% t% T( y# q, X( e% ]0071B8DA |. 85C0 test eax,eax* F! D# C' Y( {( d) V! O
0071B8DC |. 894424 18 mov dword ptr ss:[esp+18],eax1 a1 }7 J: K. m z' y
0071B8E0 |. 0F8E B0010000 jle heroes4.0071BA96
6 W; u2 R# i; m9 l. K0071B8E6 |. 8B6C24 5C mov ebp,dword ptr ss:[esp+5C]
0 r4 y9 z% O4 }# x/ S' @0071B8EA |. 8B4C24 54 mov ecx,dword ptr ss:[esp+54] ; 数值上等于arg2
, s! e4 H% P- l2 j+ t! D% G3 r0071B8EE |. 2BE9 sub ebp,ecx
, P8 {/ Y* H0 O1 ?0071B8F0 |. 85ED test ebp,ebp" S+ P* j0 l( C9 i* L
0071B8F2 |. 896C24 1C mov dword ptr ss:[esp+1C],ebp
5 J& w! z$ k; `) L0 h0071B8F6 |. 0F8E 9A010000 jle heroes4.0071BA96
8 r2 S2 ?2 e, A# U& ~* J; ]0071B8FC |. 8B4424 6C mov eax,dword ptr ss:[esp+6C] ; arg2- D5 k8 \) |; A& o( v$ A
0071B900 |. 8BF9 mov edi,ecx" E+ m/ T5 ] U
0071B902 |. 2BF8 sub edi,eax
7 F2 l6 }$ V0 d5 \1 a& K0071B904 |. 8B4424 70 mov eax,dword ptr ss:[esp+70] ; arg3 ^* b2 P* {9 w0 Q& M/ q0 D4 V
0071B908 |. 8BD6 mov edx,esi( s1 A- l) f d, i2 U5 x3 m
0071B90A |. 894C24 24 mov dword ptr ss:[esp+24],ecx
6 n- G, g6 g- t I8 Y0071B90E |. 2BD0 sub edx,eax; T, {) _; C4 V! [5 V$ n5 ?
0071B910 |. 8B43 0C mov eax,dword ptr ds:[ebx+C]) u7 H4 G8 F! ?8 p; g" H
0071B913 |. 8BD8 mov ebx,eax! t2 d( f" Z6 d( [' m
0071B915 |. 0FAFDE imul ebx,esi) F! F; U. B4 o9 N
0071B918 |. 8D344B lea esi,dword ptr ds:[ebx+ecx*2]! o6 `' I# O+ Y( d: [
0071B91B |. 8B4C24 68 mov ecx,dword ptr ss:[esp+68]6 H9 W! w% y# c; U
0071B91F |. 8B59 10 mov ebx,dword ptr ds:[ecx+10]
% R# X4 c1 S2 o @* D0071B922 |. 8B4C24 10 mov ecx,dword ptr ss:[esp+10]
3 h w% O5 v: N3 ]; Z6 T5 C0071B926 |. 03F3 add esi,ebx
: K/ E2 W( _' g! }0071B928 |. 8B49 0C mov ecx,dword ptr ds:[ecx+C]9 }! z* \3 Z) S
0071B92B |. 897424 68 mov dword ptr ss:[esp+68],esi; 重点:将缓冲区地址写入栈内(原arg1处)+ z A6 x& q4 |$ U" j
0071B92F |. 8BD9 mov ebx,ecx
+ P8 ^1 c+ w, D) K$ @$ _8 c' t4 B0 v0071B931 |. 2BCD sub ecx,ebp$ t) o, ]& d! ]1 Q2 x" @! u
0071B933 |. 0FAFDA imul ebx,edx4 F" t* D& I$ r9 ?, M9 _6 A
0071B936 |. 8B5424 10 mov edx,dword ptr ss:[esp+10]0 r1 J6 H# H2 S* F
0071B93A |. 894C24 20 mov dword ptr ss:[esp+20],ecx; W" k' G3 \& q8 z) |" ]4 Y
0071B93E |. 8D4C2D 00 lea ecx,dword ptr ss:[ebp+ebp]
% N; Z7 v, I% l+ A0071B942 |. 035A 10 add ebx,dword ptr ds:[edx+10]
" _8 i+ j1 [! U; T# ^0071B945 |. 8B5424 18 mov edx,dword ptr ss:[esp+18]
5 Y+ A. u' v6 p0071B949 |. 2BC1 sub eax,ecx
4 [, x1 L) `: ~9 P! }! T/ e7 O) ^0071B94B |. 894424 24 mov dword ptr ss:[esp+24],eax$ }$ f' y0 |! n1 [
0071B94F |. 03DF add ebx,edi, F! I+ F, p1 `
0071B951 |. 8BC2 mov eax,edx
4 r6 @4 Y' N0 n9 W, X$ [0071B953 |. 4A dec edx
% Y0 a. V; z4 D: E, z0071B954 |. 85C0 test eax,eax( o9 Z- b" N) o' G! @) ^* e
0071B956 |. 0F84 3A010000 je heroes4.0071BA96' @6 A8 U4 a& y C- V
0071B95C |. 42 inc edx
8 H4 T# L2 n% y v0071B95D |. 895424 18 mov dword ptr ss:[esp+18],edx
' d( [; M1 X, z& e! X0 m0071B961 |> 85ED /test ebp,ebp5 y( S" h* m: D/ i/ R1 N; g" r
0071B963 |. 0F84 0E010000 |je heroes4.0071BA77" K2 e* _# ]* P' {1 r
0071B969 |. 8B4424 74 |mov eax,dword ptr ss:[esp+74]
9 |5 Z' a. ]# W+ M% f+ {4 M8 e0071B96D |. 896C24 14 |mov dword ptr ss:[esp+14],ebp7 K8 [5 F+ Y8 U
0071B971 |. 25 FFFF0000 |and eax,0FFFF5 |) B& V; ^- Y9 I
0071B976 |. 894424 10 |mov dword ptr ss:[esp+10],eax+ `* t0 w7 C6 r" }
0071B97A |> 8A4424 78 |/mov al,byte ptr ss:[esp+78]
0 B! J* V" f5 ^9 q5 g0071B97E |. 8B2D DCF0AA00 ||mov ebp,dword ptr ds:[AAF0DC]# @# V8 S% h7 ~5 e% C6 m" r6 g
0071B984 |. 84C0 ||test al,al# s) A a6 ]( P. I5 G* _( o
0071B986 |. 74 6A ||je short heroes4.0071B9F2" o- v9 p# Z0 v9 v8 b
0071B988 |. 8A0B ||mov cl,byte ptr ds:[ebx] ; 取字模的像素点7 e" h2 b) ?/ \1 j5 l
0071B98A |. 8B4424 7C ||mov eax,dword ptr ss:[esp+7C]' e Y- y3 A& Y+ T- A
0071B98E |. 83E1 0F ||and ecx,0F ; 取低四位
7 _# h+ _% @0 s; z& x7 T5 {9 j3 N0071B991 |. 25 FFFF0000 ||and eax,0FFFF
# z9 g" S$ z3 F( U% t( w V" D4 L0071B996 |. 8BF9 ||mov edi,ecx' f5 o) \ m$ P9 b- A s. h
0071B998 |. 33C9 ||xor ecx,ecx
% R/ X3 {! V1 Z9 C0071B99A |. 66:8B0E ||mov cx,word ptr ds:[esi] ; 取缓冲区的原值: a# t" L k8 \/ m, @
0071B99D |. 85FF ||test edi,edi ; 检查字模的像素点低四位是否为07 Z3 }. i, {! k ?, k$ v7 f
0071B99F |. 74 54 ||je short heroes4.0071B9F5 ; 为0则不作处理% g8 d+ S. z, E7 j4 h- I
0071B9A1 |. 8BD7 ||mov edx,edi
5 D" Z6 D2 p j& }8 z! k5 ~0071B9A3 |. 8BF1 ||mov esi,ecx. i# b) t+ a2 {" t
0071B9A5 |. C1FA 03 ||sar edx,3: f* H0 p) }! {+ m
0071B9A8 |. 83E2 01 ||and edx,1% o: z" n9 Q3 _: t9 j
0071B9AB |. 03FA ||add edi,edx
/ W! v% z; J0 Q7 ^/ R% `. R i1 i% T. Y0071B9AD |. 8BD1 ||mov edx,ecx
5 G- Y- w9 @ N0071B9AF |. 8B0D 04F1AA00 ||mov ecx,dword ptr ds:[AAF104]
; ~4 Q! J: u. T! F5 [: o" f( K0071B9B5 |. 23D5 ||and edx,ebp- C: r" O Y9 u- e8 W
0071B9B7 |. 23F1 ||and esi,ecx
4 u6 R* U2 E f( t( c* e+ A& s0071B9B9 |. 8BC8 ||mov ecx,eax1 Y' ]" b# c, c# G
0071B9BB |. 230D 04F1AA00 ||and ecx,dword ptr ds:[AAF104]
/ R, J) T4 \% h6 u* Y: B& G6 l0071B9C1 |. 23C5 ||and eax,ebp% R1 x/ k# p" b# |* W2 |; ]
0071B9C3 |. 2BC2 ||sub eax,edx
* s( K3 y; T% f0071B9C5 |. 2BCE ||sub ecx,esi. a2 \; Y. h. q8 U( H; c
0071B9C7 |. 0FAFC7 ||imul eax,edi- y t, b( [, C
0071B9CA |. 0FAFCF ||imul ecx,edi4 C* u' w1 R# V+ _8 l
0071B9CD |. C1E6 04 ||shl esi,4
! e" j" R% s( C$ h7 [0 U* I: |0071B9D0 |. 03CE ||add ecx,esi
8 `1 g. o8 C2 Y3 j! T1 F. T0071B9D2 |. 8B35 F4F0AA00 ||mov esi,dword ptr ds:[AAF0F4]" a. s6 s Q/ n1 q" t* {6 Z# T
0071B9D8 |. C1E2 04 ||shl edx,4! P# ^' U! D* e3 @# C- b; G
0071B9DB |. 23CE ||and ecx,esi* L1 B% z5 H* ]9 `+ t
0071B9DD |. 8B35 D8F0AA00 ||mov esi,dword ptr ds:[AAF0D8]) |& }5 K, e8 Q6 j0 H
0071B9E3 |. 03C2 ||add eax,edx
3 Y$ u/ H/ ^6 j& i$ R0071B9E5 |. 23C6 ||and eax,esi4 S% \) m+ [" m/ ^% y
0071B9E7 |. 8B7424 68 ||mov esi,dword ptr ss:[esp+68]
7 i5 g7 C7 Z( y l0071B9EB |. 03C8 ||add ecx,eax' t5 F1 I' ~) Q. a
0071B9ED |. C1F9 04 ||sar ecx,4) y( h# L( k# ]; d1 I! B/ D, i1 c
0071B9F0 |. EB 03 ||jmp short heroes4.0071B9F5
( k; c/ F% F% ?6 S n9 H! \" G) o# r0071B9F2 |> 66:8B0E ||mov cx,word ptr ds:[esi]+ a9 O( o( |- ?7 n" ^4 l
0071B9F5 |> 33D2 ||xor edx,edx4 D' a% N) r# k
0071B9F7 |. 81E1 FFFF0000 ||and ecx,0FFFF
/ [( |) ]7 a3 G# j0071B9FD |. 8A13 ||mov dl,byte ptr ds:[ebx]
' W6 B- s$ v% M& u# U0071B9FF |. 8BC1 ||mov eax,ecx9 w: H6 c' [% u8 ~0 i! v) e% K
0071BA01 |. C1EA 04 ||shr edx,4 ; 取高四位
; I2 _5 }9 q$ A7 q0071BA04 |. 85D2 ||test edx,edx ; 检查字模的像素点高四位是否为0
4 l; z2 A B& N; d z5 \: y* H$ z0071BA06 |. 74 51 ||je short heroes4.0071BA59 ; 为0则不作处理
% d8 }0 ^& V* _+ X ?5 G' w0 |0071BA08 |. 8BCA ||mov ecx,edx
5 [3 z/ i6 C, F4 ~ v, B @0071BA0A |. 8BF0 ||mov esi,eax. M5 m3 s" N- p, t7 N2 w
0071BA0C |. C1F9 03 ||sar ecx,3
# ^" H! ~) _! H2 {9 k* S- s4 P3 ~2 g0071BA0F |. 83E1 01 ||and ecx,1" u ~1 H [ B/ M1 c) r# j' K5 m; f
0071BA12 |. 23F5 ||and esi,ebp' j# ~* o/ V6 f
0071BA14 |. 03D1 ||add edx,ecx% q1 h- k# |4 U4 ^2 F2 i
0071BA16 |. 8BC8 ||mov ecx,eax
9 }6 l6 e2 _& y& D0 }$ W+ i0071BA18 |. 8B4424 10 ||mov eax,dword ptr ss:[esp+10]
- u7 [( s9 n3 t' I' a/ k/ J2 g0071BA1C |. 8B3D 04F1AA00 ||mov edi,dword ptr ds:[AAF104]
& f$ S) B3 r- t, S6 y6 o4 r r0071BA22 |. 23C5 ||and eax,ebp0 D0 O9 S4 H7 {3 T8 Y
0071BA24 |. 23CF ||and ecx,edi
8 c( S) ?0 r$ M- \0071BA26 |. 2BC6 ||sub eax,esi1 f4 R- m* N6 ]3 A3 k
0071BA28 |. 0FAFC2 ||imul eax,edx
$ ~: V3 i K; h% P. b0071BA2B |. C1E6 04 ||shl esi,4
, a1 M" e% }; j* n3 |1 w( H0071BA2E |. 03C6 ||add eax,esi
- }+ v: u& L7 C4 y. f1 i0071BA30 |. 8B35 D8F0AA00 ||mov esi,dword ptr ds:[AAF0D8]
% g4 I4 w0 {5 k2 T# X0071BA36 |. 23C6 ||and eax,esi6 j# @3 E+ G# K! E( y' {: n* h- u5 p
0071BA38 |. 8B7424 10 ||mov esi,dword ptr ss:[esp+10]( o- H! h0 W$ h L" }7 }
0071BA3C |. 23F7 ||and esi,edi( z- b+ R2 M! B* X& r3 s
0071BA3E |. 8B3D F4F0AA00 ||mov edi,dword ptr ds:[AAF0F4]
- B/ S, Z2 ^3 F' @8 s; P0071BA44 |. 2BF1 ||sub esi,ecx
( e1 S$ Z) [3 P3 ^* N0071BA46 |. 0FAFF2 ||imul esi,edx# t& b- Z$ H3 a+ m! y$ ^
0071BA49 |. C1E1 04 ||shl ecx,4
" Z! U" V6 k% F' ^3 k$ Z0071BA4C |. 03F1 ||add esi,ecx
$ y1 m3 i3 t' z1 d+ [! R0071BA4E |. 23F7 ||and esi,edi
% P+ g! {2 [1 P9 L0071BA50 |. 03C6 ||add eax,esi% Q% x8 l) R) u& `
0071BA52 |. 8B7424 68 ||mov esi,dword ptr ss:[esp+68]1 l6 p5 P/ G% y2 k' N% v
0071BA56 |. C1F8 04 ||sar eax,4; H6 L' J8 `! H" L) n6 e! Y& H
0071BA59 |> 66:8906 ||mov word ptr ds:[esi],ax ; 将经过处理后的缓冲区值放回原处
' U$ |% j/ F5 F: F1 @9 b, ^. [) h0071BA5C |. 8B4424 14 ||mov eax,dword ptr ss:[esp+14], E C0 c2 H- J
0071BA60 |. 43 ||inc ebx ; 指向字模的下个像素点+ h% q$ l& u" h/ l! K3 X
0071BA61 |. 83C6 02 ||add esi,2 ; 指向缓冲区的下个点
9 H% M4 T2 W: u' A' Z& M" m: J \0071BA64 |. 48 ||dec eax ; 计数值减1
* c+ d% h7 b- @/ H1 o2 S0071BA65 |. 897424 68 ||mov dword ptr ss:[esp+68],esi
0 R# c, R5 f v. J0071BA69 |. 894424 14 ||mov dword ptr ss:[esp+14],eax$ F7 w' B, Q4 P/ { S8 n+ ?' j
0071BA6D |.^ 0F85 07FFFFFF |\jnz heroes4.0071B97A
. S& J3 p; F/ O3 z, o- p7 {6 K0071BA73 |. 8B6C24 1C |mov ebp,dword ptr ss:[esp+1C]7 u9 J8 F5 h0 o3 I7 N: ?, S' G
0071BA77 |> 8B5424 20 |mov edx,dword ptr ss:[esp+20]
3 g( H# d% W: c. ]0071BA7B |. 8B4C24 24 |mov ecx,dword ptr ss:[esp+24]
# x5 y3 { ^' a% C9 O0071BA7F |. 8B4424 18 |mov eax,dword ptr ss:[esp+18]" _ S. w2 i8 B: m
0071BA83 |. 03DA |add ebx,edx ; 指向字模的下行像素点
3 x: h3 u P6 l [! `, h0071BA85 |. 03F1 |add esi,ecx ; 指向缓冲区的下行点
9 s3 y' v: k8 T3 C. V0071BA87 |. 48 |dec eax ; 计数值减1
" l. Y" @ j% w* t# |0071BA88 |. 897424 68 |mov dword ptr ss:[esp+68],esi' k7 g3 l: Z" _3 l
0071BA8C |. 894424 18 |mov dword ptr ss:[esp+18],eax$ S& L3 F" x$ v7 R, J
0071BA90 |.^ 0F85 CBFEFFFF \jnz heroes4.0071B961
2 P3 L6 [& I8 m, E$ h: H/ u0071BA96 |> 5F pop edi7 W$ o* l K- b; N$ u8 k r
0071BA97 |. 5E pop esi
8 e; b5 x s4 Z. j: ]0071BA98 |. 5D pop ebp
) c C, n6 ?7 G% q! | H! p0071BA99 |. 5B pop ebx3 j. Q* C9 m W }0 V8 m: x
0071BA9A |. 83C4 54 add esp,545 D! m4 z4 n% i w9 T5 s3 a- W
0071BA9D \. C2 1800 retn 18 v+ J4 S+ N; k# @0 j% Y# h0 C
本函数的核心是两层循环,从71B9A1开始就是循环体,整个换算过程是一个比较复杂的算法,可以简单表示为:
3 Z6 M5 \8 v+ V" ]- k8 v) A3 T1 d, l
9 Z- n5 l: g3 z; V# j2 bbuf[x][y]=func(buf[x][y],zm[x/2][y/2])
3 `, r+ r1 Y" X: y0 F0 _' ?9 h' ~: l$ q- W
buf:缓冲区二维数组,两个字节表示一个点
7 b" E( l9 m/ {$ x7 Dzm:字模二维数组,一个字节表示一个点 |