Simple SNES shoot-'em-up game.
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.

56 lines
1.8 KiB

  1. ; Memory layout:
  2. ; 0000-000F: scratch space for functions.
  3. ; 0010-0011: controller state of joypad #1.
  4. ; 0012-0013: controller state of joypad #2.
  5. ; 0014-0016: 24-bit counter of vblanks.
  6. ; 0017-0019: RGB color values to use for background color, from [0-31].
  7. ; 001A-001B: 16-bit pointer to next random byte.
  8. ; [gap]
  9. ; 0020-0021: (x, y) coordinates of player.
  10. ; 0022: player health.
  11. ; 0023: shot cooldown timer.
  12. ; 0024: next-shot state.
  13. ; [gap]
  14. ; 0030-003F: (x, y) velocities of each of the 8 possible shot states.
  15. ; 0040-009F: {sprite, x, y, x-velocity, y-velocity, unused} per player shot.
  16. ; If sprite is 0, the shot is disabled.
  17. ; 00A0-015F: As above, for enemy shots.
  18. ; 0160-????: {sprite, x, y, move AI type, shoot AI type, shot cooldown}
  19. ; per enemy ship.
  20. ; [gap]
  21. ; Sprite table buffers -- copied each frame to OAM during VBlank, using DMA.
  22. ; 1000-11FF: table 1 (4 bytes each: x/y coord, tile #, flip/priority/palette)
  23. ; 1200-121F: table 2 (2 bits each: high x-coord bit, size)
  24. ; 1220-12A0: scratch table. One byte per sprite for high x-coord & size.
  25. .define joy1 $10
  26. .define joy2 $12
  27. .define vBlankCounter $14
  28. .define backgroundRed $17
  29. .define backgroundGreen $18
  30. .define backgroundBlue $19
  31. .define randomBytePtr $1A
  32. .define playerX $20
  33. .define playerY $21
  34. .define playerHealth $22
  35. .define shotCooldown $23
  36. .define nextShotState $24
  37. .define shotVelocityTable $30
  38. .define playerShotArray $40
  39. .define playerShotArrayLength 16
  40. .define enemyShotArray $A0
  41. .define enemyShotArrayLength 32
  42. .define shotSize 6
  43. .define enemyShipArray $160
  44. .define enemyShipArrayLength 4
  45. .define enemyShipSize 6
  46. .define numSprites 128
  47. .define spriteTableStart $1000
  48. .define spriteTable1Size $200
  49. .define spriteTable2Start $1200
  50. .define spriteTableSize $220
  51. .define spriteTableScratchStart $1220