WonderWitch/Memory map: Difference between revisions
From WSdev Wiki
Jump to navigationJump to search
(→Interrupt vectors: document SoC interrupts) |
|||
Line 86: | Line 86: | ||
| 0x18 | | 0x18 | ||
| [[WonderWitch/FreyaBIOS|FreyaBIOS]] interrupts | | [[WonderWitch/FreyaBIOS|FreyaBIOS]] interrupts | ||
|- | |||
| 0x19 | |||
| 0x27 | |||
| | |||
|- | |||
| 0x28 | |||
| 0x2F | |||
| SoC interrupts | |||
|} | |} | ||
Latest revision as of 15:29, 16 December 2024
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.
Note that the user IRAM area is shared between all users of FreyaBIOS - notably, FreyaOS puts
Interrupt vectors
Start | End | Description |
---|---|---|
0x00 | 0x07 | CPU interrupts |
0x08 | 0x0F | |
0x10 | 0x18 | FreyaBIOS interrupts |
0x19 | 0x27 | |
0x28 | 0x2F | SoC interrupts |
Internal BIOS area
Start | Length | Description |
---|---|---|
0x100 | 128 | Temporary memory buffer. Used for XMODEM transfers by FreyaOS. |
0x180 | 64 | Wavetable memory location. |
0x204 | 2/4? | Written to by FreyaOS using sys_alloc_iram to point to its IRAM area. |
0x230 | 2 | Near pointer to temporary memory buffer (0x0100). |
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 |