You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
1.2 KiB

  1. INCLUDE "hardware.inc"
  2. INCLUDE "input.inc"
  3. Section "Player Data", WRAM0
  4. playerWorldX: dw
  5. playerWorldY: dw
  6. Section "Player Code", ROM0
  7. spriteData:
  8. INCBIN "png/player.2bpp"
  9. Player_Init::
  10. ld a, 8
  11. ld hl, _OAM + 1
  12. ld [hl], a
  13. ld bc, _VRAM8000
  14. ld hl, spriteData
  15. ld d, 16
  16. call memcpy
  17. ld hl, _OAM
  18. ld a, 144-8
  19. ld [hli], a
  20. ld a, 8
  21. ld [hli], a
  22. xor a
  23. ld [hli], a
  24. ld [hli], a
  25. ld bc, _OAMRAM
  26. ld hl, _OAM
  27. ld d, 4
  28. call memcpy
  29. ret
  30. Player_Update::
  31. ; Only update every 2 frames
  32. ld hl, frame
  33. ld a, [hl]
  34. and %1
  35. cp %1
  36. jr nz, .done
  37. ld hl, keys
  38. ld b, [hl]
  39. ; check for move right
  40. ld a, b
  41. and BTN_RIGHT
  42. jr z, .left
  43. ; check for right boundary
  44. ld hl, _OAM + 1
  45. ld a, [hl]
  46. cp 160
  47. jr nc, .done
  48. ; Update x-position and set x-flip = false
  49. inc [hl]
  50. ld hl, _OAM + 3
  51. res 5, [hl]
  52. .left:
  53. ; check for left button
  54. ld a, b
  55. and BTN_LEFT
  56. jr z, .done
  57. ; check for left boundary
  58. ld hl, _OAM + 1
  59. ld a, [hl]
  60. cp 9
  61. jr c, .done
  62. ; Update x-position and set x-flip = true
  63. dec [hl]
  64. ld hl, _OAM + 3
  65. set 5, [hl]
  66. .done:
  67. ret