User Tools


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