WonderWitch/Memory map
From WSdev Wiki
The following documents the official WonderWitch memory map. Note that you are not required to follow these rules to the letter; however, some amount of the beginning of memory is expected to be left to FreyaBIOS, FreyaOS, etc.
Internal RAM (0x00000 - 0x0FFFF)
| Address | ASCII, 1 screen | ASCII, 2 screens | Shift-JIS, 1 screen | Shift-JIS, 2 screens |
|---|---|---|---|---|
| 0x0000 | Interrupt vectors | |||
| 0x0100 | ? | |||
| 0x0E00 | Sprite table | |||
| 0x1000 | Screen 1 | |||
| 0x1600 | Sprite table | |||
| 0x1800 | Screen 1 | Screen 2 | ||
| 0x2000 | Tile data (512 tiles) | |||
| 0x2600 | Sprite table | |||
| 0x2800 | Screen 2 | |||
| 0x2E00 | Sprite table | |||
| 0x3000 | Screen 1 | |||
| 0x3800 | Tile data (128 tiles) | |||
| 0x4000 | Color tile data; only restored with ResumeIL. | |||
| 0xC000 | Unused; never restored on program suspend/resume. | |||
| 0xFE00 | Color palette data; only restored with ResumeIL. | |||
In all modes, the stack is placed immediately before the sprite table.
Interrupt vectors
| Start | End | Description |
|---|---|---|
| 0x00 | 0x07 | CPU interrupts |
| 0x08 | 0x0F | |
| 0x10 | 0x18 | FreyaBIOS interrupts |
Cartridge SRAM (0x10000 - 0x1FFFF)
| Bank | Description |
|---|---|
| 0 | /ram0 file data |
| 1 | Third process data |
| 2 | Second process data |
| 3 | First process data; typically used by FreyaOS |
Cartridge flash (0x80000 - 0xFFFFF)
The 512KB of NOR flash memory is mapped and partitioned as follows:
| Linear address | Size | Description |
|---|---|---|
| 0x8nnnn | 384 KB | /rom0 file data |
| 0x9nnnn | ||
| 0xAnnnn | ||
| 0xBnnnn | ||
| 0xCnnnn | ||
| 0xDnnnn | ||
| 0xEnnnn | 64 KB | FreyaOS |
| 0xFnnnn | 64 KB | FreyaBIOS |