mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-08-25 19:05:30 -05:00
Document Encode/DecodeGameRecords
This commit is contained in:
158
consts/game_records.json
Normal file
158
consts/game_records.json
Normal file
@@ -0,0 +1,158 @@
|
||||
{
|
||||
"definitions": {
|
||||
"@GameRecord": {
|
||||
"type": "enum",
|
||||
"values": [
|
||||
"RECORD_UNK_000",
|
||||
"RECORD_UNK_001",
|
||||
"RECORD_UNK_002",
|
||||
"RECORD_UNK_003",
|
||||
"RECORD_UNK_004",
|
||||
"RECORD_UNK_005",
|
||||
"RECORD_UNK_006",
|
||||
"RECORD_UNK_007",
|
||||
"RECORD_UNK_008",
|
||||
"RECORD_UNK_009",
|
||||
"RECORD_UNK_010",
|
||||
"RECORD_UNK_011",
|
||||
"RECORD_UNK_012",
|
||||
"RECORD_UNK_013",
|
||||
"RECORD_UNK_014",
|
||||
"RECORD_UNK_015",
|
||||
"RECORD_UNK_016",
|
||||
"RECORD_UNK_017",
|
||||
"RECORD_UNK_018",
|
||||
"RECORD_UNK_019",
|
||||
"RECORD_UNK_020",
|
||||
"RECORD_UNK_021",
|
||||
"RECORD_UNK_022",
|
||||
"RECORD_UNK_023",
|
||||
"RECORD_UNK_024",
|
||||
"RECORD_UNK_025",
|
||||
"RECORD_UNK_026",
|
||||
"RECORD_UNK_027",
|
||||
"RECORD_UNK_028",
|
||||
"RECORD_UNK_029",
|
||||
"RECORD_UNK_030",
|
||||
"RECORD_UNK_031",
|
||||
"RECORD_UNK_032",
|
||||
"RECORD_UNK_033",
|
||||
"RECORD_UNK_034",
|
||||
"RECORD_UNK_035",
|
||||
"RECORD_UNK_036",
|
||||
"RECORD_UNK_037",
|
||||
"RECORD_UNK_038",
|
||||
"RECORD_UNK_039",
|
||||
"RECORD_UNK_040",
|
||||
"RECORD_UNK_041",
|
||||
"RECORD_UNK_042",
|
||||
"RECORD_UNK_043",
|
||||
"RECORD_UNK_044",
|
||||
"RECORD_UNK_045",
|
||||
"RECORD_UNK_046",
|
||||
"RECORD_UNK_047",
|
||||
"RECORD_UNK_048",
|
||||
"RECORD_UNK_049",
|
||||
"RECORD_UNK_050",
|
||||
"RECORD_UNK_051",
|
||||
"RECORD_UNK_052",
|
||||
"RECORD_UNK_053",
|
||||
"RECORD_UNK_054",
|
||||
"RECORD_UNK_055",
|
||||
"RECORD_UNK_056",
|
||||
"RECORD_UNK_057",
|
||||
"RECORD_UNK_058",
|
||||
"RECORD_UNK_059",
|
||||
"RECORD_UNK_060",
|
||||
"RECORD_UNK_061",
|
||||
"RECORD_UNK_062",
|
||||
"RECORD_UNK_063",
|
||||
"RECORD_UNK_064",
|
||||
"RECORD_UNK_065",
|
||||
"RECORD_UNK_066",
|
||||
"RECORD_UNK_067",
|
||||
"RECORD_UNK_068",
|
||||
"RECORD_UNK_069",
|
||||
"RECORD_UNK_070",
|
||||
"RECORD_UNK_071",
|
||||
"RECORD_UNK_072",
|
||||
"RECORD_UNK_073",
|
||||
"RECORD_UNK_074",
|
||||
"RECORD_UNK_075",
|
||||
"RECORD_UNK_076",
|
||||
"RECORD_UNK_077",
|
||||
"RECORD_UNK_078",
|
||||
"RECORD_UNK_079",
|
||||
"RECORD_UNK_080",
|
||||
"RECORD_UNK_081",
|
||||
"RECORD_UNK_082",
|
||||
"RECORD_UNK_083",
|
||||
"RECORD_UNK_084",
|
||||
"RECORD_UNK_085",
|
||||
"RECORD_UNK_086",
|
||||
"RECORD_UNK_087",
|
||||
"RECORD_UNK_088",
|
||||
"RECORD_UNK_089",
|
||||
"RECORD_UNK_090",
|
||||
"RECORD_UNK_091",
|
||||
"RECORD_UNK_092",
|
||||
"RECORD_UNK_093",
|
||||
"RECORD_UNK_094",
|
||||
"RECORD_UNK_095",
|
||||
"RECORD_UNK_096",
|
||||
"RECORD_UNK_097",
|
||||
"RECORD_UNK_098",
|
||||
"RECORD_UNK_099",
|
||||
"RECORD_UNK_100",
|
||||
"RECORD_UNK_101",
|
||||
"RECORD_UNK_102",
|
||||
"RECORD_UNK_103",
|
||||
"RECORD_UNK_104",
|
||||
"RECORD_UNK_105",
|
||||
"RECORD_UNK_106",
|
||||
"RECORD_UNK_107",
|
||||
"RECORD_UNK_108",
|
||||
"RECORD_UNK_109",
|
||||
"RECORD_UNK_110",
|
||||
"RECORD_UNK_111",
|
||||
"RECORD_UNK_112",
|
||||
"RECORD_UNK_113",
|
||||
"RECORD_UNK_114",
|
||||
"RECORD_UNK_115",
|
||||
"RECORD_UNK_116",
|
||||
"RECORD_UNK_117",
|
||||
"RECORD_UNK_118",
|
||||
"RECORD_UNK_119",
|
||||
"RECORD_UNK_120",
|
||||
"RECORD_UNK_121",
|
||||
"RECORD_UNK_122",
|
||||
"RECORD_UNK_123",
|
||||
"RECORD_UNK_124",
|
||||
"RECORD_UNK_125",
|
||||
"RECORD_UNK_126",
|
||||
"RECORD_UNK_127",
|
||||
"RECORD_UNK_128",
|
||||
"RECORD_UNK_129",
|
||||
"RECORD_UNK_130",
|
||||
"RECORD_UNK_131",
|
||||
"RECORD_UNK_132",
|
||||
"RECORD_UNK_133",
|
||||
"RECORD_UNK_134",
|
||||
"RECORD_UNK_135",
|
||||
"RECORD_UNK_136",
|
||||
"RECORD_UNK_137",
|
||||
"RECORD_UNK_138",
|
||||
"RECORD_UNK_139",
|
||||
"RECORD_UNK_140",
|
||||
"RECORD_UNK_141",
|
||||
"RECORD_UNK_142",
|
||||
"RECORD_UNK_143",
|
||||
"RECORD_UNK_144",
|
||||
"RECORD_UNK_145",
|
||||
"RECORD_UNK_146",
|
||||
"RECORD_UNK_147",
|
||||
"RECORD_UNK_148"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ consts_manifest_basenames = [
|
||||
'battle',
|
||||
'battle_subscripts',
|
||||
'btlcmd',
|
||||
'game_records',
|
||||
'gender',
|
||||
'items',
|
||||
'map',
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "consts/game_records.h"
|
||||
|
||||
#include "struct_decls/pokedexdata_decl.h"
|
||||
|
||||
#include "unk_0201D15C.h"
|
||||
@@ -8,8 +10,11 @@
|
||||
#include "unk_0202631C.h"
|
||||
#include "game_records.h"
|
||||
|
||||
static void sub_0202CD94(GameRecords * param0, int param1);
|
||||
static void sub_0202CDC0(GameRecords * param0, int param1);
|
||||
#define START_ENCODED_RECORDS RECORD_UNK_001
|
||||
#define SIZE_ENCODED_RECORDS (sizeof(GameRecords) - sizeof(EncodingSeed) - (START_ENCODED_RECORDS * sizeof(u32)))
|
||||
|
||||
static void EncodeGameRecords(GameRecords *records, int id);
|
||||
static void DecodeGameRecords(GameRecords *records, int id);
|
||||
|
||||
int GameRecords_SaveSize(void)
|
||||
{
|
||||
@@ -21,7 +26,7 @@ void GameRecords_Init(GameRecords *records)
|
||||
MI_CpuClear32(records, sizeof(GameRecords));
|
||||
records->seed.modifier = OS_GetVBlankCount() | (OS_GetVBlankCount() << 8);
|
||||
|
||||
sub_0202CD94(records, 1);
|
||||
EncodeGameRecords(records, START_ENCODED_RECORDS);
|
||||
}
|
||||
|
||||
GameRecords *SaveData_GetGameRecordsPtr(SaveData *savedata)
|
||||
@@ -29,23 +34,29 @@ GameRecords *SaveData_GetGameRecordsPtr(SaveData *savedata)
|
||||
return SaveData_SaveTable(savedata, SAVE_TABLE_ENTRY_GAME_RECORDS);
|
||||
}
|
||||
|
||||
static void sub_0202CD94 (GameRecords * records, int param1)
|
||||
// this inline does not match when operating on the substruct
|
||||
static inline u32 HashEncodingSeed(GameRecords *records)
|
||||
{
|
||||
if (param1 == (0 + 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
records->seed.byteSum = SumBytes(&records->recordsU32[1], sizeof(GameRecords) - sizeof(EncodingSeed) - sizeof(u32)) & 0xffff;
|
||||
EncodeData(&records->recordsU32[1], sizeof(GameRecords) - sizeof(EncodingSeed) - sizeof(u32), records->seed.byteSum + (records->seed.modifier << 16));
|
||||
return records->seed.byteSum + (records->seed.modifier << 16);
|
||||
}
|
||||
|
||||
static void sub_0202CDC0 (GameRecords * records, int param1)
|
||||
static void EncodeGameRecords(GameRecords *records, int id)
|
||||
{
|
||||
if (param1 == (0 + 0)) {
|
||||
if (id == RECORD_UNK_000) {
|
||||
return;
|
||||
}
|
||||
|
||||
DecodeData(&records->recordsU32[1], sizeof(GameRecords) - sizeof(EncodingSeed) - sizeof(u32), records->seed.byteSum + (records->seed.modifier << 16));
|
||||
records->seed.byteSum = SumBytes(&records->recordsU32[START_ENCODED_RECORDS], SIZE_ENCODED_RECORDS) & 0xFFFF;
|
||||
EncodeData(&records->recordsU32[START_ENCODED_RECORDS], SIZE_ENCODED_RECORDS, HashEncodingSeed(records));
|
||||
}
|
||||
|
||||
static void DecodeGameRecords(GameRecords *records, int id)
|
||||
{
|
||||
if (id == RECORD_UNK_000) {
|
||||
return;
|
||||
}
|
||||
|
||||
DecodeData(&records->recordsU32[START_ENCODED_RECORDS], SIZE_ENCODED_RECORDS, HashEncodingSeed(records));
|
||||
}
|
||||
|
||||
static u32 sub_0202CDE0 (const GameRecords * records, int param1)
|
||||
@@ -279,7 +290,7 @@ u32 sub_0202CE90 (GameRecords * records, int param1, u32 param2)
|
||||
u32 v0 = sub_0202CE3C(param1);
|
||||
u32 v1;
|
||||
|
||||
sub_0202CDC0(records, param1);
|
||||
DecodeGameRecords(records, param1);
|
||||
|
||||
if (param2 < v0) {
|
||||
v1 = sub_0202CE08(records, param1, param2);
|
||||
@@ -287,7 +298,7 @@ u32 sub_0202CE90 (GameRecords * records, int param1, u32 param2)
|
||||
v1 = sub_0202CE08(records, param1, v0);
|
||||
}
|
||||
|
||||
sub_0202CD94(records, param1);
|
||||
EncodeGameRecords(records, param1);
|
||||
|
||||
return v1;
|
||||
}
|
||||
@@ -298,7 +309,7 @@ u32 sub_0202CED0 (GameRecords * records, int param1, u32 param2)
|
||||
u32 v1;
|
||||
u32 v2;
|
||||
|
||||
sub_0202CDC0(records, param1);
|
||||
DecodeGameRecords(records, param1);
|
||||
|
||||
v1 = sub_0202CDE0(records, param1);
|
||||
v2 = v1;
|
||||
@@ -315,7 +326,7 @@ u32 sub_0202CED0 (GameRecords * records, int param1, u32 param2)
|
||||
}
|
||||
}
|
||||
|
||||
sub_0202CD94(records, param1);
|
||||
EncodeGameRecords(records, param1);
|
||||
|
||||
return v2;
|
||||
}
|
||||
@@ -326,7 +337,7 @@ u32 sub_0202CF28 (GameRecords * records, int param1)
|
||||
u32 v1;
|
||||
u32 v2;
|
||||
|
||||
sub_0202CDC0(records, param1);
|
||||
DecodeGameRecords(records, param1);
|
||||
|
||||
v1 = sub_0202CDE0(records, param1);
|
||||
|
||||
@@ -336,7 +347,7 @@ u32 sub_0202CF28 (GameRecords * records, int param1)
|
||||
v2 = sub_0202CE08(records, param1, v0);
|
||||
}
|
||||
|
||||
sub_0202CD94(records, param1);
|
||||
EncodeGameRecords(records, param1);
|
||||
|
||||
return v2;
|
||||
}
|
||||
@@ -347,7 +358,7 @@ u32 sub_0202CF70 (GameRecords * records, int param1, u32 param2)
|
||||
u32 v1;
|
||||
u32 v2;
|
||||
|
||||
sub_0202CDC0(records, param1);
|
||||
DecodeGameRecords(records, param1);
|
||||
|
||||
v1 = sub_0202CDE0(records, param1);
|
||||
|
||||
@@ -357,7 +368,7 @@ u32 sub_0202CF70 (GameRecords * records, int param1, u32 param2)
|
||||
v2 = sub_0202CE08(records, param1, v0);
|
||||
}
|
||||
|
||||
sub_0202CD94(records, param1);
|
||||
EncodeGameRecords(records, param1);
|
||||
|
||||
return v2;
|
||||
}
|
||||
@@ -367,9 +378,9 @@ u32 sub_0202CFB8 (GameRecords * records, int param1)
|
||||
u32 v0 = sub_0202CE3C(param1);
|
||||
u32 v1;
|
||||
|
||||
sub_0202CDC0(records, param1);
|
||||
DecodeGameRecords(records, param1);
|
||||
v1 = sub_0202CDE0(records, param1);
|
||||
sub_0202CD94(records, param1);
|
||||
EncodeGameRecords(records, param1);
|
||||
|
||||
if (v1 > v0) {
|
||||
return v0;
|
||||
|
||||
Reference in New Issue
Block a user