$00:818C | 23 bytes | Subroutine (JSL) | Source code for the SA-1 command wait loop written into RAM at $0E. This routine should be called there instead. |
$00:81A3 | 14 bytes | Subroutine (JSL) | Source code for the SA-1 response wait loop written into RAM at $26. This routine should be called there instead. |
$00:84A2 | 28 bytes | Interrupt | SNES IRQ routine. Jumps to the address in $309B when fired, with the direct page set to $37xx. The game only seems to use either $0084BB (no routine) or $01EA1F (status bar routine). |
$00:850A | 15 bytes | Subroutine (JSL) | Routine to change the SNES mode (and Layer 3 priority) to the value in A. |
$00:8554 | 39 bytes | Subroutine (JSL) | Routine to update the Layer 1 VRAM metadata. |
$00:857B | 37 bytes | Subroutine (JSL) | Routine to update the Layer 2 VRAM metadata. |
$00:85A0 | 39 bytes | Subroutine (JSL) | Routine to update the Layer 3 VRAM metadata. |
$00:85EA | 110 bytes | Subroutine (JSR) | Subroutine to execute buffered DMAs from $0100 to VRAM. |
$00:8658 | 69 bytes | Subroutine (JSR) | Subroutine to execute queued DMAs from $0900 to VRAM. |
$00:869D | 63 bytes | Table | Table of VRAM DMA options, with 3 bytes per option. This is the table referenced by the VRAM DMA buffers at $0100/$0900. |
$00:86E5 | 117 bytes | Subroutine (JSL) | Routine to write DMA data from a table in $--xxAAaa to $0100. The fist byte being FF marks the end of the table. If the first byte of the DMA data is negative, then its source data is decompressed first. |
$00:875A | 178 bytes | Subroutine (JSL) | Routine to transfer the data in $31-$38 to the circular VRAM DMA buffer at $0100. |
$00:880C | 136 bytes | Subroutine (JSL) | Routine to write a single tile into the DMA buffer at $0100. Call with: |
$00:889A | 349 bytes | Subroutine (JSL) | Subroutine to decompress data compressed with inhal. Call with: The routine can alternatively be called at $008894 if the user is already running on the SNES; this will skip some overhead code for transferring control from the SA-1. |
$00:89F7 | 15 bytes | Subroutine (JSL) | Subroutine to wait for the SNES to fire NMI. |
$00:8A06 | 187 bytes | Subroutine (JSL) | Routine to fetch controller inputs. The portion starting at $008A56 onwards always runs on the SNES, but the main routine can be called by either. |
$00:8AC1 | 80 bytes | Subroutine (JSL) | RNG routine. Uses $43 as a seed, and returns the result in $49. |
$00:8BB2 | 66 bytes | Subroutine (JSL) | Routine to write data to palette at $0500. Call with: The routine can alternatively be called at $008BC1, which will write to the alternative palette at $0700. |
$00:8BF4 | 112 bytes | Vector | SA-1 RESET vector. |
$00:8C64 | 46 bytes | Subroutine (JSL) | Routine to pass control from the SNES to the SA-1 chip. Pointer to the routine to execute should be in $--xxAAaa. |
$00:8C92 | 62 bytes | Subroutine (JSL) | Routine to pass control to the SNES. Pointer to the routine to execute should be in $--xxAAaa. |
$00:8CD0 | 103 bytes | Subroutine (JSL) | Routine to transfer the data in $31-$38 to the VRAM DMA queue at $0900. |
$00:8D37 | 56 bytes | Subroutine (JSL) | Routine to fix directional input. Takes the full 16-bit controller input in A, and if two mutually-exclusive directions are being pressed (i.e. up+down, left+right), clears the directional buttons. |
$00:BC9D | 51 bytes | Pointer Table | Pointers to various gamemodes for the SA-1 chip. Indexed by $7390 times 3. |
$00:CD89 | 173 bytes | Subroutine (JSR) | Routine to check for a multitap controller connection. If one is plugged in, it returns the relevant controller port in A/$08, as [12------]. The part of this starting at $00CDEC onwards simply serves as a signature for the routine and is not used by anything. |
$00:D648 | 85 bytes | Subroutine (JSR) | Routine to upload data to the SPC700. Enter at $00D66E with a 24-bit pointer to the data in $95 to transfer it. |
$00:DBBE | 616 bytes | Vector | SNES debug RESET vector, used for the debug VRAM viewer. Booting to here will activate the VRAM viewer, whose handling is entirely contained within this routine. |
$00:DE26 | 69 bytes | Vector | SA-1 debug RESET vector, used for the debug VRAM viewer. Doesn't actually really do anything besides stall the SA-1. |
$01:E995 | 1 bytes | Misc. | Scanline that IRQ fires at in levels (the routine in $01EA1F). |
$16:8000 | 224 bytes | Data | VWF positioning info. Each option (00-1B) gets 8 bytes, ordered as follows: |
$88:8A3E | 2562 bytes | Music | The entire SPC engine. The first four bytes are a data header, with the first two being the size of the engine and thse second two being the location it gets written to in ARAM. |