1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| PROC checkfall ; return eax if 1 not fallin if 0 falling
uses edi, esi, ecx, ebx
mov ebx, 0 ;ebx op nul zetten
mov eax, [dword ptr current_position] ;(current postitie +10 doen)
add eax, 10
mov edi, offset blockarray ; blockarray laden
add edi, eax ;goeie positie in blockarray
call returnBlockOffset ;eax de goeie blok laden
mov esi, eax ; in esi de blok steken
mov ch, 4
checkcolom:
mov cl, 4
checkline:
mov al, [esi] ;als block 0 is niks doen
jz nextpixel
mov ah, [edi] ; als array 0 is niks doen
jz nextpixel
mov ebx, 1 ; als blok en array niet nul zijn dan mag je niet vallen
mov cl, 0
jmp nextline
nextpixel:
inc edi
inc esi
dec cl
nextline:
cmp cl, 0
jne checkline
add edi, 6
dec ch
jnz checkcolom
mov eax, ebx
ret
ENDP checkfall
PROC fall
uses ebx
call checkfall
mov ebx, eax
cmp ebx, 1
je notfall
add [dword ptr current_position], 10
call returnBlockOffset
call drawblock, eax, [dword ptr current_position]
notfall:
ret
ENDP fall |
Partager