WonderWitch/Memory map: Difference between revisions

From WSdev Wiki
Jump to navigationJump to search
No edit summary
Line 65: Line 65:


In all modes, the stack is placed immediately before the sprite table.
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 ====
==== Interrupt vectors ====
Line 100: Line 102:
| 64
| 64
| Wavetable memory location.
| Wavetable memory location.
|-
| 0x204
| 2/4?
| Written to by FreyaOS using ''sys_alloc_iram'' to point to its IRAM area.
|-
|-
| 0x230
| 0x230

Revision as of 21:05, 13 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)

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

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