Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Comprueba si el área ha colisionado con el personaje
- ; @entrada HL: _CHAR_X del personaje
- ; @entrada [_36B_AUXVARS + 0]: Límite izquierdo del área
- ; @entrada [_36B_AUXVARS + 1]: Límite derecho del área
- ; @entrada [_36B_AUXVARS + 2]: Límite superior del área
- ; @entrada [_36B_AUXVARS + 3]: Límite inferior del área
- ; @salida Carry: Subido si ha colisionado, bajado si no
- ; @salida HL: _CHAR_X del personaje
- chk_area_coll_char:
- ld c, [hl] ; _CHAR_X
- ld a, [_36B_AUXVARS + 0] ; Límite izquierdo del área
- cp c
- ret nc ; Coordenada X del personaje inferior al límite izquierdo
- ld a, [_36B_AUXVARS + 1] ; Límite derecho del área
- cp c
- jr c, chk_area_coll_char_0 ; Coordenada X del personaje superior al límite derecho
- inc hl
- ld a, [hld] ; _CHAR_Y
- ld c, a
- ld a, [_36B_AUXVARS + 2] ; Límite superior del área
- cp c
- ret nc ; Coordenada Y del personaje inferior al límite superior
- ld a, [_36B_AUXVARS + 3] ; Límite inferior del área
- cp c
- jr c, chk_area_coll_char_0 ; Coordenada Y del personaje superior al límite inferior
- ; Colisionan
- scf ; Subimos el flag de carry
- ret
- chk_area_coll_char_0:
- xor a ; Bajamos el flag de carry
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement