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)

WonderWitch memory map
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