Mario Kart 64
|
#include <ultra64.h>
#include <macros.h>
#include <defines.h>
#include "stddef.h"
#include "save.h"
#include "menu_items.h"
#include "menus.h"
#include "save_data.h"
#include "staff_ghosts.h"
#include "code_80057C60.h"
Macros | |
#define | PFS_COMPANY_CODE(c0, c1) ((u16) (((c0) << 8) | ((c1)))) |
#define | PFS_GAME_CODE(c0, c1, c2, c3) ((u32) (((c0) << 24) | ((c1) << 16) | ((c2) << 8) | (c3))) |
#define | EEPROM_ADDR(ptr) (((uintptr_t) (ptr) - (uintptr_t) (&gSaveData)) / 8) |
Variables | |
struct_8018EE10_entry | D_8018EE10 [2] |
u16 | gCompanyCode = PFS_COMPANY_CODE('0', '1') |
u32 | gGameCode = PFS_GAME_CODE('N', 'K', 'T', 'J') |
s8 | gControllerPak1State = BAD |
s8 | sControllerPak2State = BAD |
const u8 | D_800F2E60 [4] = { 0xc0, 0x27, 0x09, 0x00 } |
const u8 | gGameName [] |
const u8 | gExtCode [] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } |
#define EEPROM_ADDR | ( | ptr | ) | (((uintptr_t) (ptr) - (uintptr_t) (&gSaveData)) / 8) |
#define PFS_COMPANY_CODE | ( | c0, | |
c1 ) ((u16) (((c0) << 8) | ((c1)))) |
#define PFS_GAME_CODE | ( | c0, | |
c1, | |||
c2, | |||
c3 ) ((u32) (((c0) << 24) | ((c1) << 16) | ((c2) << 8) | (c3))) |
u8 compute_save_data_checksum_1 | ( | void | ) |
u8 compute_save_data_checksum_2 | ( | void | ) |
u8 compute_save_data_checksum_backup_1 | ( | void | ) |
u8 compute_save_data_checksum_backup_2 | ( | void | ) |
s32 controller_pak_1_status | ( | void | ) |
s32 controller_pak_2_status | ( | void | ) |
void func_800B45E0 | ( | s32 | arg0 | ) |
void func_800B46D0 | ( | void | ) |
void func_800B4728 | ( | s32 | arg0 | ) |
void func_800B4A9C | ( | s32 | course | ) |
s32 func_800B4F2C | ( | void | ) |
s32 func_800B5218 | ( | void | ) |
void func_800B536C | ( | s32 | arg0 | ) |
void func_800B559C | ( | s32 | arg0 | ) |
This one is weird. Its some type of checksum calculator, seemingly for the best time trial records. But the number of bytes it operates over is odd. It calculates a checksum for 51 bytes in 17 byte chunks, but that doesn't line up with anything in the save data cleanly. At that byte count it would get the 48 bytes for the records plus 3 of the unknown bytes.
But only unknown bytes 7 and 8 ever get set, so why the extra 3, and why in chunks of 17?
s32 func_800B5F30 | ( | void | ) |
s32 func_800B6014 | ( | void | ) |
void func_800B6708 | ( | void | ) |
void func_800B6798 | ( | void | ) |
s32 func_800B6A68 | ( | void | ) |
void func_8800B6AF8 | ( | void | ) |
s32 has_completed_extra_mode | ( | void | ) |
s32 has_unlocked_extra_mode | ( | void | ) |
void load_save_data | ( | void | ) |
void reset_save_data_grand_prix_points_and_sound_mode | ( | void | ) |
void update_save_data_backup | ( | void | ) |
void validate_save_data | ( | void | ) |
s32 validate_save_data_checksum_backup | ( | void | ) |
void write_save_data_grand_prix_points_and_sound_mode | ( | void | ) |
const u8 D_800F2E60[4] = { 0xc0, 0x27, 0x09, 0x00 } |
struct_8018EE10_entry D_8018EE10[2] |
BSS
u16 gCompanyCode = PFS_COMPANY_CODE('0', '1') |
const u8 gExtCode[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } |
u32 gGameCode = PFS_GAME_CODE('N', 'K', 'T', 'J') |
const u8 gGameName[] |