WonderWitch/Memory map
From WSdev Wiki
Jump to navigationJump to search
The following documents the 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 | Internal BIOS area | |||
0x0290 | Stack, User IRAM | Stack, User IRAM | Stack, User IRAM | Stack, User IRAM |
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 |