参数表
. i) }( D/ b) \+ u3 I; s4 o2 Karg1:[arg1+10]+[arg1+C]*arg3+arg2*2存放缓冲区(应该就是屏幕显示区在内存的映像)基地址
+ Q0 C, \4 D; k5 y- Farg2:字符串宽度 x
) c, u D3 c! T' b$ d Y9 h; aarg3:y: {0 o) d0 h: C5 [$ f" M" ?
arg4:颜色8 i- N0 N) J7 I' J) ]0 y
arg5:与颜色深度有关
' Z3 M% Q$ x/ y1 R! Y2 N6 darg6:与颜色深度有关% {: U( Z5 t7 p) C
ecx:字符的编码基地址0 {" L6 k$ Q' T7 Z- ?3 G
I9 v4 s2 e6 l" y8 r J% ~4 u0071B820 /$ 83EC 54 sub esp,54
( D8 T+ ^' I) R. H0071B823 |. 53 push ebx
0 {/ C( h$ X& g9 P& K6 m0071B824 |. 8B5C24 5C mov ebx,dword ptr ss:[esp+5C]( C5 P: z q5 E1 Y2 x0 M
0071B828 |. 55 push ebp
9 p5 l" o+ O! G, H. L$ R0071B829 |. 56 push esi
$ w( P5 j! h6 W" R0 T0071B82A |. 8B43 08 mov eax,dword ptr ds:[ebx+8]
$ [: l' M% v) z1 I& m0071B82D |. 8BF1 mov esi,ecx
) g4 S W" r0 z: c# j c$ Y' ?0071B82F |. 8B4B 04 mov ecx,dword ptr ds:[ebx+4]4 Z7 Y4 h6 c& C! ^& \ M+ ^
0071B832 |. 57 push edi
+ z3 ^. r+ h; E4 y2 m0071B833 |. 50 push eax% _3 e& }& L, u0 Q4 F1 r! o
0071B834 |. 51 push ecx! w; U6 [5 p: Y9 t
0071B835 |. 6A 00 push 0
! c5 Z0 f0 ]& z3 x+ J0071B837 |. 6A 00 push 08 Z" M. @: o2 B3 s/ }/ Y" q6 ~
0071B839 |. 8D4C24 54 lea ecx,dword ptr ss:[esp+54]
. ]& i2 t& c1 C0 }0071B83D |. 897424 20 mov dword ptr ss:[esp+20],esi
|" O+ R& k! r1 {7 P0071B841 |. E8 6ABCCEFF call heroes4.004074B0
* ]8 v; k$ Y% n6 u4 \; [8 Y0071B846 |. 8B56 08 mov edx,dword ptr ds:[esi+8]
6 j8 Y- `9 T. i; G0 n# G$ V8 h* ~# S0071B849 |. 8B46 04 mov eax,dword ptr ds:[esi+4]# w" Q7 Q% \7 H6 G+ T: N2 X: V/ f
0071B84C |. 52 push edx9 d2 x; L/ w# V" t6 Q( P
0071B84D |. 50 push eax
, @3 B# U, N8 [6 t1 x3 |0071B84E |. 6A 00 push 0: i9 `4 n' i& c% |6 n2 v
0071B850 |. 6A 00 push 0
% U# a; x1 O: D* \) p/ n5 b( e0071B852 |. 8D4C24 44 lea ecx,dword ptr ss:[esp+44]
0 l# z% a- ^$ P3 x& G) k6 P# e8 B0071B856 |. E8 55BCCEFF call heroes4.004074B0
! d$ W3 q0 u0 U @# u9 x: m- Z0071B85B |. 8B4C24 34 mov ecx,dword ptr ss:[esp+34]$ Y: i4 i B Y3 t9 K
0071B85F |. 8B5424 38 mov edx,dword ptr ss:[esp+38]& l. O2 g. z/ X2 y% L
0071B863 |. 8B4424 3C mov eax,dword ptr ss:[esp+3C]
. S5 c6 ]( K. u: F0 U* A" t- S0071B867 |. 894C24 24 mov dword ptr ss:[esp+24],ecx+ X0 c) y z% u* ? g9 |3 t
0071B86B |. 8B4C24 40 mov ecx,dword ptr ss:[esp+40]
E7 S8 ^ m6 W* p0071B86F |. 895424 28 mov dword ptr ss:[esp+28],edx9 S0 M8 g/ r; N1 b* J
0071B873 |. 8D5424 6C lea edx,dword ptr ss:[esp+6C]: ~7 `. C% ~8 j; `& r' Z
0071B877 |. 894C24 30 mov dword ptr ss:[esp+30],ecx. g& ?6 K* U+ Z
0071B87B |. 52 push edx
6 `# [% i9 U$ {* M# v n2 A A0071B87C |. 8D4C24 28 lea ecx,dword ptr ss:[esp+28]9 D: |6 d3 X6 E% S( i
0071B880 |. 894424 30 mov dword ptr ss:[esp+30],eax
* `+ _% y4 B' s/ z) {9 v5 e9 L4 P0071B884 |. E8 47BCCEFF call heroes4.004074D0 g) Y' R+ j- m1 d" W. x0 R9 z b
0071B889 |. 8B4424 30 mov eax,dword ptr ss:[esp+30]
* l& }6 z( [" C& k0071B88D |. 8B4C24 50 mov ecx,dword ptr ss:[esp+50]
, s: @2 w& v6 C. S/ w3 Y- j+ ^" k0071B891 |. 3BC1 cmp eax,ecx# e# Q ^! H5 Q. I* j/ n
0071B893 |. 8BF8 mov edi,eax+ J( e, V2 ^% W' `
0071B895 |. 7C 02 jl short heroes4.0071B899
$ b8 Q. o! x3 d. H0 `0071B897 |. 8BF9 mov edi,ecx% J0 e1 Q) V# H' N
0071B899 |> 8B4424 2C mov eax,dword ptr ss:[esp+2C]
: G* ^: J" D7 w; E0071B89D |. 8B5424 4C mov edx,dword ptr ss:[esp+4C]
# m) Z( Y- n: E6 a0071B8A1 |. 3BC2 cmp eax,edx
- C6 g0 i" ^( Z8 q0 u- M0 z* c0071B8A3 |. 7D 02 jge short heroes4.0071B8A7
/ k6 O# s, s7 A8 s0071B8A5 |. 8BD0 mov edx,eax! ?; W5 X6 H& H$ ], {
0071B8A7 |> 8B4424 28 mov eax,dword ptr ss:[esp+28], c; n0 j4 n2 f
0071B8AB |. 8B4C24 48 mov ecx,dword ptr ss:[esp+48]' s" C% P7 |0 s
0071B8AF |. 3BC1 cmp eax,ecx
# ^0 @6 {4 A/ D: s/ n x0071B8B1 |. 7E 02 jle short heroes4.0071B8B5
" o* h, r) P; s; L" Y0 P% G/ l* C0071B8B3 |. 8BC8 mov ecx,eax
6 G4 n+ t+ z% Y$ X+ j9 k0071B8B5 |> 8B4424 24 mov eax,dword ptr ss:[esp+24]
5 p6 s# D$ l9 m0071B8B9 |. 8B7424 44 mov esi,dword ptr ss:[esp+44]
6 f% C. y' T" E, p5 O" Q. p0071B8BD |. 3BC6 cmp eax,esi
* G" \; @/ p# {$ b3 ]0071B8BF |. 7F 02 jg short heroes4.0071B8C3
E+ _' y, S$ s" s% e5 g+ Y5 l0071B8C1 |. 8BC6 mov eax,esi* ?: V4 h3 B _3 U4 m6 Q
0071B8C3 |> 57 push edi7 \" |8 R6 P1 G& |5 Z9 B: N- [! q
0071B8C4 |. 52 push edx
1 h! Z8 P/ G! i8 m0071B8C5 |. 51 push ecx) ^! N8 C7 ^1 X- w
0071B8C6 |. 50 push eax
1 f X7 p$ Q) X9 s" S8 V0071B8C7 |. 8D4C24 64 lea ecx,dword ptr ss:[esp+64]! m6 } s2 ?% a1 B+ t( [
0071B8CB |. E8 E0BBCEFF call heroes4.004074B0! G8 M z, U" X5 w) _7 O. n
0071B8D0 |. 8B4424 60 mov eax,dword ptr ss:[esp+60]$ h- `- x5 R3 ^; X* V2 C
0071B8D4 |. 8B7424 58 mov esi,dword ptr ss:[esp+58]7 t9 [( C$ h* P' ~. y
0071B8D8 |. 2BC6 sub eax,esi
1 a4 a8 H2 `) k% f2 X" j4 u5 ?0071B8DA |. 85C0 test eax,eax6 _% R7 e. R% m: R2 o. k/ [ V* R
0071B8DC |. 894424 18 mov dword ptr ss:[esp+18],eax3 E- H4 b1 x6 l7 U
0071B8E0 |. 0F8E B0010000 jle heroes4.0071BA96+ {+ S {# H4 Z# g- x( ^% e" e
0071B8E6 |. 8B6C24 5C mov ebp,dword ptr ss:[esp+5C]0 w: {( m% E! \0 l J4 a
0071B8EA |. 8B4C24 54 mov ecx,dword ptr ss:[esp+54] ; 数值上等于arg2
$ U* m6 W; s3 `# x3 D0071B8EE |. 2BE9 sub ebp,ecx
/ Z% |! s0 x5 ^! z6 m& h0071B8F0 |. 85ED test ebp,ebp& u8 e6 V3 I2 i. R1 L
0071B8F2 |. 896C24 1C mov dword ptr ss:[esp+1C],ebp
7 H$ u, D8 `% d4 F. d0071B8F6 |. 0F8E 9A010000 jle heroes4.0071BA962 @, ]! h5 ]( W4 ]
0071B8FC |. 8B4424 6C mov eax,dword ptr ss:[esp+6C] ; arg25 r: Z' h) K; A. s$ ~' L0 m
0071B900 |. 8BF9 mov edi,ecx4 x4 t$ J- L- M! t0 `, }. x1 L
0071B902 |. 2BF8 sub edi,eax
2 ^; G7 k- U) F3 R& Z0071B904 |. 8B4424 70 mov eax,dword ptr ss:[esp+70] ; arg37 j3 S# A1 C& P$ s# n: }! R) i& m) }
0071B908 |. 8BD6 mov edx,esi" t) }5 e1 v( o
0071B90A |. 894C24 24 mov dword ptr ss:[esp+24],ecx: R4 E- R1 u f {; a
0071B90E |. 2BD0 sub edx,eax7 _3 F% ?$ p" Z z4 _% w
0071B910 |. 8B43 0C mov eax,dword ptr ds:[ebx+C]
7 D; X, J; I) E" G) G( i0071B913 |. 8BD8 mov ebx,eax
/ W8 W1 w1 s$ R. _% r0 Q Y% f0071B915 |. 0FAFDE imul ebx,esi; G& O! B# [5 [" M7 x
0071B918 |. 8D344B lea esi,dword ptr ds:[ebx+ecx*2]) p: [# g4 O. `/ D' t
0071B91B |. 8B4C24 68 mov ecx,dword ptr ss:[esp+68]$ E w$ n" F% N
0071B91F |. 8B59 10 mov ebx,dword ptr ds:[ecx+10]
1 m( E2 P$ E8 q0 Z, U1 s5 \0071B922 |. 8B4C24 10 mov ecx,dword ptr ss:[esp+10]% [9 S/ j" Z3 G2 I
0071B926 |. 03F3 add esi,ebx7 \* |$ v; j7 h3 A4 C
0071B928 |. 8B49 0C mov ecx,dword ptr ds:[ecx+C]
0 e1 @. k: X9 i" u2 J& D3 `0071B92B |. 897424 68 mov dword ptr ss:[esp+68],esi; 重点:将缓冲区地址写入栈内(原arg1处)
D5 O; e1 N. N1 E$ {6 J$ Q7 U2 t5 g0071B92F |. 8BD9 mov ebx,ecx
1 a3 D& R0 N8 u5 k) f. ~0071B931 |. 2BCD sub ecx,ebp
3 t' v! K" o$ {" k1 M7 }& c9 t0071B933 |. 0FAFDA imul ebx,edx* k6 \, ]7 j; k3 w( @4 [
0071B936 |. 8B5424 10 mov edx,dword ptr ss:[esp+10]
9 K# c: q) V! p1 d' y+ B, K0 I0071B93A |. 894C24 20 mov dword ptr ss:[esp+20],ecx
% Q4 x2 t. G' d/ r+ ^0071B93E |. 8D4C2D 00 lea ecx,dword ptr ss:[ebp+ebp]
) O4 l0 W4 J' f. G0071B942 |. 035A 10 add ebx,dword ptr ds:[edx+10]7 o7 T9 ~1 ^2 d+ D2 T; B
0071B945 |. 8B5424 18 mov edx,dword ptr ss:[esp+18]9 V1 g% f a) _( B" w( ]7 ?
0071B949 |. 2BC1 sub eax,ecx. Q6 m- R3 ^5 _9 W2 R
0071B94B |. 894424 24 mov dword ptr ss:[esp+24],eax
' q7 C; e& A: E8 x: N0071B94F |. 03DF add ebx,edi
" ]. C& X: @! z( e0071B951 |. 8BC2 mov eax,edx
! X" d7 m0 U7 |0 _3 Y6 V0071B953 |. 4A dec edx
7 V; _1 o% v1 Y9 z; O- _0071B954 |. 85C0 test eax,eax! y3 U% l9 ~0 ^- M
0071B956 |. 0F84 3A010000 je heroes4.0071BA96& J) z6 N- M5 V2 N/ f1 `! R1 E7 R
0071B95C |. 42 inc edx) r4 @) ^1 h ~9 e
0071B95D |. 895424 18 mov dword ptr ss:[esp+18],edx
; z; z' s& d0 l& Z1 a' u0 u( m0071B961 |> 85ED /test ebp,ebp! J+ F0 ?2 ^& d* y4 a8 s
0071B963 |. 0F84 0E010000 |je heroes4.0071BA77( u* a7 ^; N3 G/ Z! g( t. N
0071B969 |. 8B4424 74 |mov eax,dword ptr ss:[esp+74]; U; `6 o6 @, x; L9 u8 q- p: P
0071B96D |. 896C24 14 |mov dword ptr ss:[esp+14],ebp4 V0 L$ ~2 J7 J7 y4 d
0071B971 |. 25 FFFF0000 |and eax,0FFFF, ~% o& N: x& k- f( p4 C
0071B976 |. 894424 10 |mov dword ptr ss:[esp+10],eax
, p+ G z5 m% b0071B97A |> 8A4424 78 |/mov al,byte ptr ss:[esp+78] U6 k' ~: e1 I2 n4 v$ v
0071B97E |. 8B2D DCF0AA00 ||mov ebp,dword ptr ds:[AAF0DC]" ^0 Z" K9 ` H7 H, r, `: B7 k/ ~
0071B984 |. 84C0 ||test al,al; U; m" `# v5 z6 B' H1 ^$ p
0071B986 |. 74 6A ||je short heroes4.0071B9F2
! v/ b. p7 m* S/ }. @0071B988 |. 8A0B ||mov cl,byte ptr ds:[ebx] ; 取字模的像素点/ F, E# d9 W# k# Q
0071B98A |. 8B4424 7C ||mov eax,dword ptr ss:[esp+7C]0 Z- g/ n: |1 U" L
0071B98E |. 83E1 0F ||and ecx,0F ; 取低四位1 K, s0 @! h0 T: K9 T
0071B991 |. 25 FFFF0000 ||and eax,0FFFF; H0 _9 G; g3 X" d8 n# s
0071B996 |. 8BF9 ||mov edi,ecx
; _1 A/ Z3 c6 m, ]0071B998 |. 33C9 ||xor ecx,ecx
% d! U) X, J* e! X9 o3 i7 Z! E0071B99A |. 66:8B0E ||mov cx,word ptr ds:[esi] ; 取缓冲区的原值 e/ h! ~% P; Y- n1 W8 @7 [
0071B99D |. 85FF ||test edi,edi ; 检查字模的像素点低四位是否为0& F' _6 a% W* P, b7 m, t8 s
0071B99F |. 74 54 ||je short heroes4.0071B9F5 ; 为0则不作处理2 V3 i+ ?+ m0 w9 g7 a/ J
0071B9A1 |. 8BD7 ||mov edx,edi5 b! A7 G% J+ V: ^: _
0071B9A3 |. 8BF1 ||mov esi,ecx
- C$ g; {1 c: S/ X0071B9A5 |. C1FA 03 ||sar edx,3( h6 a H% }, V1 ^0 c' d
0071B9A8 |. 83E2 01 ||and edx,1
- U, n7 g+ w6 R0071B9AB |. 03FA ||add edi,edx
; O$ Y7 }8 F+ W) n* {# l0071B9AD |. 8BD1 ||mov edx,ecx
. l: e6 u! X% Q- M/ c' |) d0071B9AF |. 8B0D 04F1AA00 ||mov ecx,dword ptr ds:[AAF104]
" s0 l) h) l3 b) N) c! h6 y4 r6 h0071B9B5 |. 23D5 ||and edx,ebp1 N2 y# _$ n/ R: K
0071B9B7 |. 23F1 ||and esi,ecx
: `6 I, j, O' M" _0071B9B9 |. 8BC8 ||mov ecx,eax: }" j* m$ v9 Q6 y
0071B9BB |. 230D 04F1AA00 ||and ecx,dword ptr ds:[AAF104]
- @1 U4 O- Z4 j( |0071B9C1 |. 23C5 ||and eax,ebp2 x0 R% S1 v+ Y4 X
0071B9C3 |. 2BC2 ||sub eax,edx& c# m% E9 V |$ V1 o0 a' @# r
0071B9C5 |. 2BCE ||sub ecx,esi5 u: [8 z4 ]- @) y# {# ]% d! o) B
0071B9C7 |. 0FAFC7 ||imul eax,edi
# R" D! j- G% D0071B9CA |. 0FAFCF ||imul ecx,edi
4 W @8 K( g0 X8 J) s* r+ T% l( v0071B9CD |. C1E6 04 ||shl esi,4
( \) p( D$ A5 M+ V1 O3 p6 j0071B9D0 |. 03CE ||add ecx,esi0 ]/ I* C; p) m
0071B9D2 |. 8B35 F4F0AA00 ||mov esi,dword ptr ds:[AAF0F4]
* T& H$ ]3 Y( H0071B9D8 |. C1E2 04 ||shl edx,4
1 x D! W/ \: Z0071B9DB |. 23CE ||and ecx,esi
: R9 J$ C6 ] b* B0071B9DD |. 8B35 D8F0AA00 ||mov esi,dword ptr ds:[AAF0D8]* i% f6 D1 R7 K6 c# O" B; p
0071B9E3 |. 03C2 ||add eax,edx
4 m. B, u" ?1 O0071B9E5 |. 23C6 ||and eax,esi; m3 f# @( c% j& w
0071B9E7 |. 8B7424 68 ||mov esi,dword ptr ss:[esp+68]7 D+ S' y" ?1 X0 b' f. Z5 S- R
0071B9EB |. 03C8 ||add ecx,eax
1 A. e3 \: b) a0071B9ED |. C1F9 04 ||sar ecx,4. _$ e: a+ [$ @" `4 h2 y
0071B9F0 |. EB 03 ||jmp short heroes4.0071B9F5' U" M, G" Z6 B. c
0071B9F2 |> 66:8B0E ||mov cx,word ptr ds:[esi]3 b+ y( `: n) {0 v: e
0071B9F5 |> 33D2 ||xor edx,edx, a, H3 \! X# W& x9 V
0071B9F7 |. 81E1 FFFF0000 ||and ecx,0FFFF
. u( c( x* d \$ f# F3 r0071B9FD |. 8A13 ||mov dl,byte ptr ds:[ebx]
5 |7 _; S6 l1 {. h0 e) g0071B9FF |. 8BC1 ||mov eax,ecx; B9 i6 G# F* B- W
0071BA01 |. C1EA 04 ||shr edx,4 ; 取高四位( v3 v$ D; z& W
0071BA04 |. 85D2 ||test edx,edx ; 检查字模的像素点高四位是否为0: D9 |8 j$ L+ W% z' z& `1 a) h
0071BA06 |. 74 51 ||je short heroes4.0071BA59 ; 为0则不作处理' A+ q+ j- g+ w8 B+ k$ A2 z( D
0071BA08 |. 8BCA ||mov ecx,edx
1 n* `0 d) g" O9 U0071BA0A |. 8BF0 ||mov esi,eax% x/ u# c2 {( X1 p4 g+ P
0071BA0C |. C1F9 03 ||sar ecx,3
; t3 a8 v# ^- M0 H0071BA0F |. 83E1 01 ||and ecx,11 A( J6 ^; r* @& p+ x
0071BA12 |. 23F5 ||and esi,ebp
& u: _9 _/ @0 \5 G% W' `) L0071BA14 |. 03D1 ||add edx,ecx
4 T9 o% F0 [+ M9 w3 q0071BA16 |. 8BC8 ||mov ecx,eax
2 z/ k; y A& Y, j9 C$ l$ \0071BA18 |. 8B4424 10 ||mov eax,dword ptr ss:[esp+10]* V4 Y; L8 L% w: y4 N' I
0071BA1C |. 8B3D 04F1AA00 ||mov edi,dword ptr ds:[AAF104]
4 b% V K) f$ ~* ?- s" e% Z) [0071BA22 |. 23C5 ||and eax,ebp, e# S# A N) p& C
0071BA24 |. 23CF ||and ecx,edi
! D; S" N' T# v9 j8 \! X) d9 v' @0071BA26 |. 2BC6 ||sub eax,esi
9 H5 g6 @; ~. C- d" `0071BA28 |. 0FAFC2 ||imul eax,edx
% i7 n/ }( Z: t9 C- B0 m0071BA2B |. C1E6 04 ||shl esi,4
^( r0 b: W1 H+ U) N0 Q9 v0071BA2E |. 03C6 ||add eax,esi3 p/ W$ G2 f8 A
0071BA30 |. 8B35 D8F0AA00 ||mov esi,dword ptr ds:[AAF0D8]8 E o6 i, w, z9 A
0071BA36 |. 23C6 ||and eax,esi# P1 Y6 E! X/ x0 H2 z" X
0071BA38 |. 8B7424 10 ||mov esi,dword ptr ss:[esp+10]3 U( F! N2 K7 ^3 v u+ u
0071BA3C |. 23F7 ||and esi,edi, M4 ?% h6 S7 v$ u! @
0071BA3E |. 8B3D F4F0AA00 ||mov edi,dword ptr ds:[AAF0F4]
% C; n& B' l( U0071BA44 |. 2BF1 ||sub esi,ecx
2 l- x+ X/ R4 {& V. x! J2 a: _0071BA46 |. 0FAFF2 ||imul esi,edx
2 w; M q+ P& O* R3 s0071BA49 |. C1E1 04 ||shl ecx,4
4 J' @% t: R+ ]0071BA4C |. 03F1 ||add esi,ecx5 h- l4 m) h) s; n
0071BA4E |. 23F7 ||and esi,edi
: [- L/ o9 {) X0071BA50 |. 03C6 ||add eax,esi& V9 t4 A! w! A1 Q+ O- h
0071BA52 |. 8B7424 68 ||mov esi,dword ptr ss:[esp+68]
6 ^2 X8 {1 w3 V5 h4 k9 k7 X6 f0071BA56 |. C1F8 04 ||sar eax,4
9 y; _% F, E/ f8 u0071BA59 |> 66:8906 ||mov word ptr ds:[esi],ax ; 将经过处理后的缓冲区值放回原处$ |1 w, ~( q9 D! l
0071BA5C |. 8B4424 14 ||mov eax,dword ptr ss:[esp+14]' E+ j/ P7 O# E) A; U$ B
0071BA60 |. 43 ||inc ebx ; 指向字模的下个像素点
8 b( \) H4 D! s4 Y0071BA61 |. 83C6 02 ||add esi,2 ; 指向缓冲区的下个点. \5 E% G$ ~% d7 o3 I' l) f
0071BA64 |. 48 ||dec eax ; 计数值减1
" c# t) r8 u/ J Q0071BA65 |. 897424 68 ||mov dword ptr ss:[esp+68],esi, I- x8 z2 `% b" w! p0 ?
0071BA69 |. 894424 14 ||mov dword ptr ss:[esp+14],eax
$ m' }7 O4 d8 n: L# a( p5 n! R7 W0071BA6D |.^ 0F85 07FFFFFF |\jnz heroes4.0071B97A
; R H; }: A) B! X+ ?1 s1 U* ]0071BA73 |. 8B6C24 1C |mov ebp,dword ptr ss:[esp+1C]+ X1 [0 n* P2 |% \6 y+ _( }! C
0071BA77 |> 8B5424 20 |mov edx,dword ptr ss:[esp+20]) Q0 y6 X% r- X& B' p' ^# ]
0071BA7B |. 8B4C24 24 |mov ecx,dword ptr ss:[esp+24]+ n' S3 @& e+ G0 A- G
0071BA7F |. 8B4424 18 |mov eax,dword ptr ss:[esp+18]* f. G R4 G: R9 Y6 m
0071BA83 |. 03DA |add ebx,edx ; 指向字模的下行像素点/ z2 l4 ^& w8 l/ e, [: E
0071BA85 |. 03F1 |add esi,ecx ; 指向缓冲区的下行点4 ^0 S* Y+ \% `9 }( m
0071BA87 |. 48 |dec eax ; 计数值减1
, `0 W) h6 u( s/ h0071BA88 |. 897424 68 |mov dword ptr ss:[esp+68],esi
, G# N, T* n4 \/ `/ [0071BA8C |. 894424 18 |mov dword ptr ss:[esp+18],eax. i2 H# V9 @! S- ^9 _
0071BA90 |.^ 0F85 CBFEFFFF \jnz heroes4.0071B961
( `9 L s' n+ [# G0071BA96 |> 5F pop edi
* f6 M( c2 t( B0071BA97 |. 5E pop esi1 |3 B. [( O: I( W
0071BA98 |. 5D pop ebp7 |4 X) ^) r& r/ X
0071BA99 |. 5B pop ebx' C9 C" f0 _1 e ~ Q. q- k
0071BA9A |. 83C4 54 add esp,54" Y2 R7 T+ |' s/ a! |9 z9 l
0071BA9D \. C2 1800 retn 18
4 H: C$ C4 S# @5 S8 K* G6 D3 c本函数的核心是两层循环,从71B9A1开始就是循环体,整个换算过程是一个比较复杂的算法,可以简单表示为:# B( F0 S4 [; F! j$ N3 _( a
- G' a9 p( h8 D2 k4 \5 u. k6 [
buf[x][y]=func(buf[x][y],zm[x/2][y/2])
' g& f) u& O- E; v, f+ t
1 A& R& d5 t2 x9 Y8 B! l. N) r. |buf:缓冲区二维数组,两个字节表示一个点' i9 R% T$ q4 @5 ~- J5 C' G
zm:字模二维数组,一个字节表示一个点 |