-
Notifications
You must be signed in to change notification settings - Fork 1
Heaps
Seeky edited this page Dec 28, 2024
·
3 revisions
The game's memory is split into 9 main heaps, or 10 in Korean:
Id | Name | Notes |
---|---|---|
0 | Main | |
1 | Map | Cleared on map change |
2 | Unused | |
3 | Ext | Seems linked to the graphical effect for showing many NPCs at once (Dimentio clones, cutscene audiences, ...) |
4 | Effect | Visual effects such as footsteps |
5 | WPAD | Given to SDK controller library |
6 | Sound | Given to NW4R sound |
7 | Smart | Automatically compacted and garbage collected |
8 | Unused | (Non-Korean only) |
8 | Font | (Korean only) |
9 | Unused | (Korean only) |
The splitting is done by memInit
, with sizes determined by size_table
.
The size table is an array of the following struct
Offset | Size | Description |
---|---|---|
0x0 | 4 | Size type (1 = kilobytes, 0 = percentage of remaining memory after others allocated) |
0x4 | 4 | Size |
All US and JP revisions place heaps 0-4 in MEM1 and 5-8 in MEM2, with the following sizes:
Id | Size |
---|---|
0 | 9216 KB |
1 | 6144 KB |
2 | 256 KB |
3 | 256 KB |
4 | 100% of remaining MEM1 space |
---- | ------ |
5 | 128 KB |
6 | 17408 KB |
7 | 100% of remaining MEM1 space |
8 | 1 KB |
The EU revisions place heaps 0-3 in MEM1 and 4-8 in MEM2, with the following sizes:
Id | Size |
---|---|
0 | 9216 KB |
1 | 6144 KB |
2 | 100% remaining MEM1 |
---- | ------ |
3 | 256 KB |
4 | 256 KB |
5 | 128 KB |
6 | 17408 KB |
7 | 100% remaining MEM2 |
8 | 1 KB |
The Korean version of the game places heaps 0-3 in MEM1 and 4-9 in MEM2, with the following sizes:
Id | Size |
---|---|
0 | 9216KB |
1 | 6144KB |
2 | 100% remaining MEM1 |
---- | ------- |
3 | 256KB |
4 | 256KB |
5 | 128KB |
6 | 17408KB |
7 | 100% remaining MEM2 |
8 | 1312KB |
9 | 1KB |