reset.a65 745 B

12345678910111213141516171819202122232425262728293031323334
  1. ; This file is part of the snescom-asm demo - a demo of how to build a SNES program.
  2. ; See http://bisqwit.iki.fi/source/snescom.html for details.
  3. #include "memmap.i65"
  4. #include "dma.i65"
  5. #define TILE_ADDR_REG_VAL(addr, scsize) \
  6. (((addr & $FC00) >> 8) + scsize)
  7. #define BMAP_ADDR_REG_VAL(addr, addr2) \
  8. (((addr & $F000) >> 12) | (((addr2 & $F000) >> 12) << 4))
  9. ; NMI - called on VBlank
  10. NMI_ROUTINE:
  11. sep #$20 : .as
  12. rep #$10 : .xl
  13. lda #$00
  14. pha
  15. plb
  16. lda $4210
  17. ldx #BG1_TILE_BASE
  18. stx $2116
  19. DMA0(#$01, #36*64, #^BG1_TILE_BUF, #!BG1_TILE_BUF, #$18)
  20. lda #$01
  21. sta isr_done
  22. rtl
  23. ; IRQ - called when triggered
  24. IRQ_ROUTINE:
  25. sep #$20 : .as
  26. lda $4211 ;Acknowledge irq
  27. rtl