Jump to content

Super NES Programming/Initialization Tutorial/header

From Wikibooks, open books for an open world

Bazz wrote almost this entire header. Use it in your own code!

 ;==LoRom==  ; We'll get to HiRom some other time.    .MEMORYMAP ; Begin describing the system architecture.  SLOTSIZE $8000 ; The slot is $8000 bytes in size. More details on slots later.  DEFAULTSLOT 0  SLOT 0 $8000 ; Defines Slot 0's starting address.  .ENDME ; End MemoryMap definition    .ROMBANKSIZE $8000 ; Every ROM bank is 32 KBytes in size  .ROMBANKS 8 ; 2 Mbits - Tell WLA we want to use 8 ROM Banks    .SNESHEADER  ID "SNES" ; 1-4 letter string, just leave it as "SNES"    NAME "SNES Tile Demo " ; Program Title - can't be over 21 bytes,  ; "123456789012345678901"  ; use spaces for unused bytes of the name.    SLOWROM  LOROM    CARTRIDGETYPE $00 ; $00 = ROM only, see WLA documentation for others  ROMSIZE $08 ; $08 = 2 Mbits, see WLA doc for more..  SRAMSIZE $00 ; No SRAM see WLA doc for more..  COUNTRY $01 ; $01 = U.S. $00 = Japan $02 = Australia, Europe, Oceania and Asia $03 = Sweden $04 = Finland $05 = Denmark $06 = France $07 = Holland $08 = Spain $09 = Germany, Austria and Switzerland $0A = Italy $0B = Hong Kong and China $0C = Indonesia $0D = Korea  LICENSEECODE $00 ; Just use $00  VERSION $00 ; $00 = 1.00, $01 = 1.01, etc.  .ENDSNES    .SNESNATIVEVECTOR ; Define Native Mode interrupt vector table  COP EmptyHandler  BRK EmptyHandler  ABORT EmptyHandler  NMI VBlank  IRQ EmptyHandler  .ENDNATIVEVECTOR    .SNESEMUVECTOR ; Define Emulation Mode interrupt vector table  COP EmptyHandler  ABORT EmptyHandler  NMI EmptyHandler  RESET Start ; where execution starts  IRQBRK EmptyHandler  .ENDEMUVECTOR    .BANK 0 SLOT 0 ; Defines the ROM bank and the slot it is inserted in memory.  .ORG 0 ; .ORG 0 is really $8000, because the slot starts at $8000  .SECTION "EmptyVectors" SEMIFREE    EmptyHandler:  rti    .ENDS    .EMPTYFILL $00 ; fill unused areas with $00, opcode for BRK.   ; BRK will crash the snes if executed.