Mario Kart 64 Memory Map
Functions
RAM Addr. | Description |
800067C4 | Set places (1st, 2nd, etc) |
800115F4 | Process path data on course load |
8002F35C | Controls cpu movement along track while player is moving |
800400D0 | MIO0 decoder |
800404C0 | MIO0 encoder |
800405D0 | TKMK00 decoder |
80093134 | Print text |
8009338C | Print text |
80093788 | Print text |
80099124 | Segmented to virtual address converter |
80099154 | Segmented to virtual address converter (duplicate) |
800C4148 | Play sound |
800D0050 | s32 osEepromLongWrite(OSMesgQueue *mq, u8 address, u8 *buffer, int nbytes); |
800D0190 | s32 osEepromLongRead(OSMesgQueue *mq, u8 address, u8 *buffer, int nbytes) |
8029D584 | Place x with segment 06 offset |
8029D60C | Place bushes with segment 06 offset (bowser's castle) |
8029D830 | Place all item boxes using segment 06 offset |
802A7B94 | Segment base setter |
802A85CC | MIO0 '0F' list related |
802A9AF4 | Display list unpacker (A0 = segmented address of packed dlist, A1 = length) |
802AA918 | Course data main loader |
Data
ROM | RAM Addr. | Description |
- | 800DC53C | Game mode selection |
- | 800DC598 | Course timer (float) |
- | 800DC5A0 | Course selection |
0E3AD0 | 800E2ED0 | Kart unique settings table, 40 bytes per entry |
0F0468 | 800EF868 | ASCII text bank |
0F4BB0 | ? | “RSP Gfx ucode F3DEX 0.95 Yoshitaka Yasumoto Nintendo.” |
0F53B0 | ? | “RSP Gfx ucode F3DLX 0.95 Yoshitaka Yasumoto Nintendo.” |
- | 80150258 | RAM Segments table |
- | 80165C18 | Course RAM objects array? (bowser whomps, luigi hot air balloon) |
- | 8018EDE4 | Character selections |
- | 8018EDF0 | Player count selection |
122390 | 802B8D80 | Course data reference table |
1232A4 | 802B9C94 | Jump table for segment 7 display list unpacking |
- | 802BA274 | Index for packed dlist commands |
12A1F0 | ? | ASCII text bank (credits) |
132B50 | - | First MIO0 block |
145470 | - | Kart texture and palette bank (MIO0 8CI textures, raw RGBA5551 palettes) |
641F70 | - | Course texture bank |
712DC0 | - | An MIO0 bank (kart exhaust textures?) |
729A30 | - | MIO0 Large character face textures |
7FA3C0 | - | TKMK00 bank |
820FC0 | - | Last TKMK block in ROM |
821D10 | - | Two MIO0 blocks |
8284D0 | - | Course assets MIO0 bank |
88CD70 | - | Course texture/Seg06 dlist reference bank |
88FA10 | - | Course MIO0 vertex data & special dlist bank |
963EF0 | - | Last MIO0 block in ROM |
BC5F60 | ? | M64 music data |
BE9160 | - | End of ROM, 93856 padding bytes |
RAM Segments Table
The RAM Segments table contains the base virtual addresses for each segment and is located at 80150258.
Seg | Description |
00 | General purpose, always 0x00000000 |
01 | ? |
02 | ? |
03 | Common textures |
04 | Course mesh, for both collisions and graphics |
05 | Course textures |
06 | Some display lists, item box placements, path data |
07 | Generated display lists which reference the course mesh data |
08 | ? |
09 | Texture list and segment 06 display list jump table is loaded here |
0A | ? |
0B | ? |
0C | ? |
0D | ? |
0F | Temporary buffer for course mesh MIO0 and packed dlists / Course collisions table (44 byte entries) |
References