WonderWitch/Memory map
From WSdev Wiki
Jump to navigationJump to search
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 |