Mario Kart 64
|
#include <libultraship.h>
#include <macros.h>
#include <defines.h>
#include <stubs.h>
#include "save.h"
#include "menu_items.h"
#include "menus.h"
#include "save_data.h"
#include "replays.h"
#include "code_80057C60.h"
#include "port/Game.h"
#include "buffers.h"
Macros | |
#define | PFS_COMPANY_CODE(c0, c1) |
#define | PFS_GAME_CODE(c0, c1, c2, c3) |
#define | EEPROM_ADDR(ptr) |
Functions | |
void | func_800B45E0 (s32 arg0) |
void | write_save_data_grand_prix_points_and_sound_mode (void) |
void | func_800B46D0 (void) |
void | func_800B4728 (s32 arg0) |
void | reset_save_data_grand_prix_points_and_sound_mode (void) |
u8 | checksum_time_trial_records (s32 courseIdx) |
u8 | compute_save_data_checksum_1 (void) |
u8 | compute_save_data_checksum_2 (void) |
void | load_save_data (void) |
void | func_800B4A9C (s32 course) |
void | validate_save_data (void) |
void | populate_time_trial_record (u8 *timeTrialRecord, u32 time, s32 characterId) |
u32 | func_800B4DF4 (u8 *arr) |
s32 | func_800B4E24 (s32 recordIndex) |
u32 | func_800B4EB4 (s32 recordIndex, s32 courseIndex) |
s32 | func_800B4F2C (void) |
s32 | func_800B4FB0 (s32 courseIndex) |
s32 | func_800B5020 (u32 time, s32 charId) |
void | func_800B536C (s32 arg0) |
void | func_800B5404 (s32 arg0, s32 arg1) |
u8 | func_800B54C0 (s32 cup, s32 cc_mode) |
u8 | func_800B54EC (s32 cup, s32 ccGrandPrixPoints) |
u8 | func_800B5508 (s32 cup, s32 ccGrandPrixPoints, s32 points_scored) |
s32 | is_cc_mode_complete (s32 cc_mode) |
s32 | has_unlocked_extra_mode (void) |
s32 | has_completed_extra_mode (void) |
void | func_800B559C (s32 arg0) |
u8 | func_800B578C (s32 arg0) |
s32 | func_800B5888 (s32 arg0) |
s32 | func_800B58C4 (s32 arg0) |
void | update_save_data_backup (void) |
u8 | compute_save_data_checksum_backup_1 (void) |
u8 | compute_save_data_checksum_backup_2 (void) |
s32 | validate_save_data_checksum_backup (void) |
s32 | check_for_controller_pak (s32 controller) |
s32 | controller_pak_1_status (void) |
s32 | controller_pak_2_status (void) |
s32 | func_800B5F30 (void) |
s32 | func_800B6014 (void) |
s32 | func_800B6088 (s32 arg0) |
u8 | func_800B60E8 (s32 page, u8 *data) |
s32 | func_800B6178 (s32 arg0) |
s32 | func_800B6348 (s32 arg0) |
s32 | func_800B639C (s32 arg0) |
s32 | func_800B63F0 (s32 arg0) |
s32 | func_800B64EC (s32 arg0) |
s32 | func_800B65F4 (s32 arg0, s32 arg1) |
void | func_800B6708 (void) |
void | func_800B6798 (void) |
u8 | func_800B6828 (s32 arg0) |
s32 | func_800B69BC (s32 arg0) |
s32 | func_800B6A68 (void) |
void | func_8800B6AF8 (void) |
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 | ) |
#define PFS_COMPANY_CODE | ( | c0, | |
c1 ) |
#define PFS_GAME_CODE | ( | c0, | |
c1, | |||
c2, | |||
c3 ) |
s32 check_for_controller_pak | ( | s32 | controller | ) |
u8 checksum_time_trial_records | ( | s32 | courseIdx | ) |
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 | ) |
u32 func_800B4DF4 | ( | u8 * | arr | ) |
s32 func_800B4E24 | ( | s32 | recordIndex | ) |
u32 func_800B4EB4 | ( | s32 | recordIndex, |
s32 | courseIndex ) |
s32 func_800B4F2C | ( | void | ) |
s32 func_800B4FB0 | ( | s32 | courseIndex | ) |
s32 func_800B5020 | ( | u32 | time, |
s32 | charId ) |
void func_800B536C | ( | s32 | arg0 | ) |
void func_800B5404 | ( | s32 | arg0, |
s32 | arg1 ) |
u8 func_800B54C0 | ( | s32 | cup, |
s32 | cc_mode ) |
u8 func_800B54EC | ( | s32 | cup, |
s32 | ccGrandPrixPoints ) |
u8 func_800B5508 | ( | s32 | cup, |
s32 | ccGrandPrixPoints, | ||
s32 | points_scored ) |
void func_800B559C | ( | s32 | arg0 | ) |
u8 func_800B578C | ( | 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_800B5888 | ( | s32 | arg0 | ) |
s32 func_800B58C4 | ( | s32 | arg0 | ) |
s32 func_800B5F30 | ( | void | ) |
s32 func_800B6014 | ( | void | ) |
s32 func_800B6088 | ( | s32 | arg0 | ) |
u8 func_800B60E8 | ( | s32 | page, |
u8 * | data ) |
s32 func_800B6178 | ( | s32 | arg0 | ) |
s32 func_800B6348 | ( | s32 | arg0 | ) |
s32 func_800B639C | ( | s32 | arg0 | ) |
s32 func_800B63F0 | ( | s32 | arg0 | ) |
s32 func_800B64EC | ( | s32 | arg0 | ) |
s32 func_800B65F4 | ( | s32 | arg0, |
s32 | arg1 ) |
void func_800B6708 | ( | void | ) |
void func_800B6798 | ( | void | ) |
u8 func_800B6828 | ( | s32 | arg0 | ) |
s32 func_800B69BC | ( | s32 | arg0 | ) |
s32 func_800B6A68 | ( | void | ) |
void func_8800B6AF8 | ( | void | ) |
s32 has_completed_extra_mode | ( | void | ) |
s32 has_unlocked_extra_mode | ( | void | ) |
s32 is_cc_mode_complete | ( | s32 | cc_mode | ) |
void load_save_data | ( | void | ) |
void populate_time_trial_record | ( | u8 * | timeTrialRecord, |
u32 | time, | ||
s32 | characterId ) |
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') |
s8 gControllerPak1State = BAD |
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[] |
s8 sControllerPak2State = BAD |