Advertisement
Imanolea

chk_area_coll_char

Dec 25th, 2017
8,968
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; Comprueba si el área ha colisionado con el personaje
  2. ; @entrada  HL: _CHAR_X del personaje
  3. ; @entrada  [_36B_AUXVARS + 0]: Límite izquierdo del área
  4. ; @entrada  [_36B_AUXVARS + 1]: Límite derecho del área
  5. ; @entrada  [_36B_AUXVARS + 2]: Límite superior del área
  6. ; @entrada  [_36B_AUXVARS + 3]: Límite inferior del área
  7. ; @salida   Carry: Subido si ha colisionado, bajado si no
  8. ; @salida   HL: _CHAR_X del personaje
  9. chk_area_coll_char:
  10.     ld      c,  [hl]        ; _CHAR_X
  11.     ld      a,  [_36B_AUXVARS + 0]  ; Límite izquierdo del área
  12.     cp      c
  13.     ret     nc                      ; Coordenada X del personaje inferior al límite izquierdo
  14.     ld      a,  [_36B_AUXVARS + 1]  ; Límite derecho del área
  15.     cp      c
  16.     jr      c,  chk_area_coll_char_0   ; Coordenada X del personaje superior al límite derecho
  17.     inc     hl
  18.     ld      a,  [hld]       ; _CHAR_Y
  19.     ld      c,  a
  20.     ld      a,  [_36B_AUXVARS + 2]  ; Límite superior del área
  21.     cp      c
  22.     ret     nc              ; Coordenada Y del personaje inferior al límite superior
  23.     ld      a,  [_36B_AUXVARS + 3]  ; Límite inferior del área
  24.     cp      c
  25.     jr      c,  chk_area_coll_char_0   ; Coordenada Y del personaje superior al límite inferior
  26.     ; Colisionan
  27.     scf                     ; Subimos el flag de carry
  28.     ret
  29. chk_area_coll_char_0:
  30.     xor     a               ; Bajamos el flag de carry
  31.     ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement