15,979
社区成员
发帖
与我相关
我的任务
分享
__declspec(naked) void __stdcall _WaveEffect(int waveType,int param1,int param2,int param3)
{
__asm
{
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push ebx
push eax
lea ebx, g_WaveObj
mov eax, [waveType]
or eax, eax
jnz short jnzTyp
;wClose=0
and [ebx+WAVE_OBJECT.dwFlag], NOT(F_WO_EFFECT);
mov [ebx+WAVE_OBJECT.dwEffectType], eax
jmp short typ0Ret
jnzTyp:
cmp eax, 2; wlaunch
jnz short jnz2
;wain=1 ; wlaunch=2
mov eax, [param1]
mov [ebx+WAVE_OBJECT.dwEff2XAdd], eax
mov [ebx+WAVE_OBJECT.dwEff2YAdd], eax
mov eax, [ebx+WAVE_OBJECT.dwBmpWidth]
dec eax
dec eax
push eax ; dwMax
push ebx ; lpWaveObject
call _WaveRandom
inc eax
mov [ebx+WAVE_OBJECT.dwEff2X], eax
mov eax, [ebx+WAVE_OBJECT.dwBmpHeight]
dec eax
dec eax
push eax ; dwMax
push ebx ; lpWaveObject
call _WaveRandom
inc eax
mov [ebx+WAVE_OBJECT.dwEff2Y], eax
; jmp short jnz2
jnz2: ;// end switch
push [waveType]
pop [ebx+WAVE_OBJECT.dwEffectType]
push [param1]
pop [ebx+WAVE_OBJECT.dwEffectParam1]
push [param2]
pop [ebx+WAVE_OBJECT.dwEffectParam2]
push [param3]
pop [ebx+WAVE_OBJECT.dwEffectParam3]
or [ebx+WAVE_OBJECT.dwFlag], F_WO_EFFECT
typ0Ret:
pop eax
pop ebx
leave
retn 10h
}
}
另外 理解 “namespace class structure” 关系