From eb69b0a76f69e1d6ea08b90de453e5cbb6886736 Mon Sep 17 00:00:00 2001 From: xXAbieGamingXx <65514695+xXAbieGamingXx@users.noreply.github.com> Date: Thu, 23 Jul 2026 17:12:40 -0700 Subject: [PATCH] finished documentation --- include/battle_factory_save.h | 50 +++++++ include/overlay104/struct_battle_factory.h | 7 +- include/struct_defs/battle_frontier.h | 4 +- include/struct_defs/struct_0202FF58.h | 15 -- include/unk_0202FF4C.h | 26 ---- platinum.us/main.lsf | 2 +- src/applications/frontier/records/main.c | 2 +- src/battle_factory_save.c | 130 +++++++++++++++++ src/battle_frontier_save.c | 2 +- src/meson.build | 2 +- src/overlay104/frscrcmd_battle_factory.c | 10 +- src/overlay104/ov104_022339B4.c | 97 +++++++------ src/overlay104/ov104_0223A7F4.c | 2 +- src/unk_0202FF4C.c | 154 --------------------- src/unk_0204F04C.c | 2 +- 15 files changed, 244 insertions(+), 261 deletions(-) create mode 100644 include/battle_factory_save.h delete mode 100644 include/unk_0202FF4C.h create mode 100644 src/battle_factory_save.c delete mode 100644 src/unk_0202FF4C.c diff --git a/include/battle_factory_save.h b/include/battle_factory_save.h new file mode 100644 index 0000000000..774972da36 --- /dev/null +++ b/include/battle_factory_save.h @@ -0,0 +1,50 @@ +#ifndef POKEPLATINUM_BATTLE_FACTORY_SAVE_H +#define POKEPLATINUM_BATTLE_FACTORY_SAVE_H + +#include "savedata.h" + +#define FACTORY_SAVE_OPEN_LEVEL 0 +#define FACTORY_SAVE_CHALLENGE_TYPE 1 +#define FACTORY_SAVE_CURRENT_BATTLE 2 +#define FACTORY_SAVE_TRAINER_IDS 3 +#define FACTORY_SAVE_PLAYER_SETS 4 +#define FACTORY_SAVE_PLAYER_IVS 5 +#define FACTORY_SAVE_PLAYER_PERSONALITY 6 +#define FACTORY_SAVE_OPPONENT_SETS 7 +#define FACTORY_SAVE_OPPONENT_IVS 8 +#define FACTORY_SAVE_OPPONENT_PERSONALITY 9 +#define FACTORY_SAVE_STREAK_FLAGS 10 + +typedef struct BattleFactoryStreakFlags { + u8 streakActiveFlags; + u8 unused[3]; +} BattleFactoryStreakFlags; + +typedef struct BattleFactorySave { + u8 isOpenLevel: 1; + u8 challengeType: 3; + u8 didSave: 1; + u8 unused: 3; + u8 currentBattleNum; + u16 unused2; + u16 trainerIDs[14]; + u16 playerPartySets[4]; + u8 playerIVs[4]; + u32 playerPersonality[4]; + u16 opponentPartySets[4]; + u8 opponentIVs[4]; + u32 opponentPersonality[4]; +} BattleFactorySave; + +void BattleFactorySave_Init(BattleFactorySave *save); +BattleFactorySave *BattleFactorySave_Get(SaveData *saveData); +BOOL BattleFactorySave_HasSaved(BattleFactorySave *save); +void BattleFactorySave_RecordSave(BattleFactorySave *save, BOOL didSave); +void BattleFactorySave_SetMember(BattleFactorySave *save, u8 field, u8 index, const void *value); +u32 BattleFactorySave_GetMember(BattleFactorySave *save, u8 field, u8 index, void *unused); +void BattleFactoryStreakFlags_Init(BattleFactoryStreakFlags *flags); +void BattleFactoryStreakFlags_SetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, u8 *value); +u32 BattleFactoryStreakFlags_GetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, void *unused); +BattleFactoryStreakFlags *BattleFactoryStreakFlags_Get(SaveData *saveData); + +#endif // POKEPLATINUM_BATTLE_FACTORY_SAVE_H diff --git a/include/overlay104/struct_battle_factory.h b/include/overlay104/struct_battle_factory.h index 0ccf4aeb7f..21555398ed 100644 --- a/include/overlay104/struct_battle_factory.h +++ b/include/overlay104/struct_battle_factory.h @@ -1,10 +1,9 @@ #ifndef POKEPLATINUM_STRUCT_BATTLE_FACTORY_H #define POKEPLATINUM_STRUCT_BATTLE_FACTORY_H -#include "struct_defs/struct_0202FF58.h" - #include "overlay104/frontier_data_transfer.h" +#include "battle_factory_save.h" #include "field_battle_data_transfer.h" #include "party.h" #include "savedata.h" @@ -13,7 +12,7 @@ typedef struct BattleFactory { int unk_00; u8 challengeType; - u8 unk_05; + u8 isOpenLevel; u8 unk_06; u8 unk_07; u16 unk_08; @@ -39,7 +38,7 @@ typedef struct BattleFactory { Party *opponentsParty; u16 unk_4DC[6]; u16 unk_4E8[6]; - UnkStruct_0202FF58 *unk_4F4; + BattleFactorySave *factorySave; SaveData *saveData; FieldBattleDTO *dto; SysTask *unk_500; diff --git a/include/struct_defs/battle_frontier.h b/include/struct_defs/battle_frontier.h index d9d04f4ae8..935b1921d8 100644 --- a/include/struct_defs/battle_frontier.h +++ b/include/struct_defs/battle_frontier.h @@ -9,7 +9,7 @@ #include "struct_defs/struct_020305B8.h" #include "struct_defs/wifi_battle_tower_data.h" -#include "unk_0202FF4C.h" +#include "battle_factory_save.h" #include "battle_castle_save.h" #include "battle_hall_save.h" #include "wifi_list.h" @@ -23,7 +23,7 @@ typedef struct BattleFrontierSave { BattleFrontierStats stats; union { WifiBattleTowerSave wifiBattleTowerSave; - UnkStruct_0202FF58 unk_8E0_val2; + BattleFactorySave factorySave; BattleHallSave hallSave; BattleCastleSave castleSave; UnkStruct_020304A0 unk_8E0_val5; diff --git a/include/struct_defs/struct_0202FF58.h b/include/struct_defs/struct_0202FF58.h index f8be7ba497..11d0b0dba2 100644 --- a/include/struct_defs/struct_0202FF58.h +++ b/include/struct_defs/struct_0202FF58.h @@ -1,20 +1,5 @@ #ifndef POKEPLATINUM_STRUCT_0202FF58_H #define POKEPLATINUM_STRUCT_0202FF58_H -typedef struct { - u8 unk_00_0 : 1; - u8 challengeType: 3; - u8 unk_00_4 : 1; - u8 unused: 3; - u8 unk_01; // likely battle num - u16 unused2; - u16 trainerIDs[14]; // almost certainly trainer ids - u16 unk_20[4]; // species info?? - u8 playerIVs[4]; - u32 playerPersonality[4]; - u16 unk_3C[4]; // opponent species?? - u8 opponentIVs[4]; - u32 opponentPersonality[4]; -} UnkStruct_0202FF58; #endif // POKEPLATINUM_STRUCT_0202FF58_H diff --git a/include/unk_0202FF4C.h b/include/unk_0202FF4C.h deleted file mode 100644 index 968020134b..0000000000 --- a/include/unk_0202FF4C.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef POKEPLATINUM_UNK_0202FF4C_H -#define POKEPLATINUM_UNK_0202FF4C_H - -#include "struct_defs/struct_0202FF58.h" - -#include "savedata.h" - -#define FACTORY_SAVE_STREAK_FLAGS 10 - -typedef struct BattleFactoryStreakFlags { - u8 streakActiveFlags; - u8 unused[3]; -} BattleFactoryStreakFlags; - -void sub_0202FF4C(UnkStruct_0202FF58 *param0); -UnkStruct_0202FF58 *sub_0202FF58(SaveData *saveData); -BOOL sub_0202FF68(UnkStruct_0202FF58 *param0); -void sub_0202FF70(UnkStruct_0202FF58 *param0, BOOL param1); -void sub_0202FF84(UnkStruct_0202FF58 *param0, u8 field, u8 index, const void *value); -u32 sub_02030030(UnkStruct_0202FF58 *param0, u8 field, u8 index, void *unused); -void BattleFactoryStreakFlags_Init(BattleFactoryStreakFlags *flags); -void BattleFactoryStreakFlags_SetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, u8 *value); -u32 BattleFactoryStreakFlags_GetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, void *unused); -BattleFactoryStreakFlags *BattleFactoryStreakFlags_Get(SaveData *saveData); - -#endif // POKEPLATINUM_UNK_0202FF4C_H diff --git a/platinum.us/main.lsf b/platinum.us/main.lsf index ecba04b715..bd7fa10e24 100644 --- a/platinum.us/main.lsf +++ b/platinum.us/main.lsf @@ -143,7 +143,7 @@ Static main Object main.nef.p/src_link_contest_records.c.o Object main.nef.p/src_save_catchrecords.c.o Object main.nef.p/src_unk_0202F1D4.c.o - Object main.nef.p/src_unk_0202FF4C.c.o + Object main.nef.p/src_battle_factory_save.c.o Object main.nef.p/src_battle_hall_save.c.o Object main.nef.p/src_battle_castle_save.c.o Object main.nef.p/src_unk_02030494.c.o diff --git a/src/applications/frontier/records/main.c b/src/applications/frontier/records/main.c index 1f224bed88..b771ad1bcc 100644 --- a/src/applications/frontier/records/main.c +++ b/src/applications/frontier/records/main.c @@ -33,7 +33,7 @@ #include "string_template.h" #include "system.h" #include "text.h" -#include "unk_0202FF4C.h" +#include "battle_factory_save.h" #include "unk_02030494.h" #include "wifi_battle_tower_save.h" diff --git a/src/battle_factory_save.c b/src/battle_factory_save.c new file mode 100644 index 0000000000..548e9cbc6a --- /dev/null +++ b/src/battle_factory_save.c @@ -0,0 +1,130 @@ +#include "battle_factory_save.h" + +#include + +#include "struct_defs/battle_frontier.h" + +#include "savedata.h" + +void BattleFactorySave_Init(BattleFactorySave *save) +{ + MI_CpuClear8(save, sizeof(BattleFactorySave)); +} + +BattleFactorySave *BattleFactorySave_Get(SaveData *saveData) +{ + BattleFrontierSave *frontier = SaveData_SaveTable(saveData, SAVE_TABLE_ENTRY_FRONTIER); + return &frontier->factorySave; +} + +BOOL BattleFactorySave_HasSaved(BattleFactorySave *save) +{ + return save->didSave; +} + +void BattleFactorySave_RecordSave(BattleFactorySave *save, BOOL didSave) +{ + save->didSave = didSave; +} + +// set value +void BattleFactorySave_SetMember(BattleFactorySave *save, u8 field, u8 index, const void *value) +{ + switch (field) { + case FACTORY_SAVE_OPEN_LEVEL: + save->isOpenLevel = *(u8 *)value; + break; + case FACTORY_SAVE_CHALLENGE_TYPE: + save->challengeType = *(u8 *)value; + break; + case FACTORY_SAVE_CURRENT_BATTLE: + save->currentBattleNum = *(u8 *)value; + break; + case FACTORY_SAVE_TRAINER_IDS: + save->trainerIDs[index] = *(u16 *)value; + break; + case FACTORY_SAVE_PLAYER_SETS: + save->playerPartySets[index] = *(u16 *)value; + break; + case FACTORY_SAVE_PLAYER_IVS: + save->playerIVs[index] = *(u8 *)value; + break; + case FACTORY_SAVE_PLAYER_PERSONALITY: + save->playerPersonality[index] = *(u32 *)value; + break; + case FACTORY_SAVE_OPPONENT_SETS: + save->opponentPartySets[index] = *(u16 *)value; + break; + case FACTORY_SAVE_OPPONENT_IVS: + save->opponentIVs[index] = *(u8 *)value; + break; + case FACTORY_SAVE_OPPONENT_PERSONALITY: + save->opponentPersonality[index] = *(u32 *)value; + break; + } +} + +u32 BattleFactorySave_GetMember(BattleFactorySave *save, u8 field, u8 index, void *unused) +{ + switch (field) { + case FACTORY_SAVE_CHALLENGE_TYPE: + return (u32)save->challengeType; + case FACTORY_SAVE_OPEN_LEVEL: + return (u32)save->isOpenLevel; + case FACTORY_SAVE_CURRENT_BATTLE: + return (u32)save->currentBattleNum; + case FACTORY_SAVE_TRAINER_IDS: + return (u32)save->trainerIDs[index]; + case FACTORY_SAVE_PLAYER_SETS: + return (u32)save->playerPartySets[index]; + case FACTORY_SAVE_PLAYER_IVS: + return (u32)save->playerIVs[index]; + case FACTORY_SAVE_PLAYER_PERSONALITY: + return (u32)save->playerPersonality[index]; + case FACTORY_SAVE_OPPONENT_SETS: + return (u32)save->opponentPartySets[index]; + case FACTORY_SAVE_OPPONENT_IVS: + return (u32)save->opponentIVs[index]; + case FACTORY_SAVE_OPPONENT_PERSONALITY: + return (u32)save->opponentPersonality[index]; + } + + return 0; +} + +void BattleFactoryStreakFlags_Init(BattleFactoryStreakFlags *flags) +{ + MI_CpuClear8(flags, sizeof(BattleFactoryStreakFlags)); +} + +void BattleFactoryStreakFlags_SetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, u8 *value) +{ + u8 *value_dupe = (u8 *)value; + switch (field) { + case FACTORY_SAVE_STREAK_FLAGS: + if (*value_dupe >= 1) { + flags->streakActiveFlags |= (1 << challengeType); + } else { + flags->streakActiveFlags &= (0xff ^ (1 << challengeType)); + } + break; + } + + return; +} + +u32 BattleFactoryStreakFlags_GetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, void *unused) +{ + switch (field) { + case FACTORY_SAVE_STREAK_FLAGS: + return (u32)((flags->streakActiveFlags >> challengeType) & 0x1); + } + + return 0; +} + +BattleFactoryStreakFlags *BattleFactoryStreakFlags_Get(SaveData *saveData) +{ + BattleFrontierSave *frontier = SaveData_SaveTable(saveData, SAVE_TABLE_ENTRY_FRONTIER); + return &frontier->factory.streakFlags; +} diff --git a/src/battle_frontier_save.c b/src/battle_frontier_save.c index 10f445847e..cf47fc943a 100644 --- a/src/battle_frontier_save.c +++ b/src/battle_frontier_save.c @@ -7,7 +7,7 @@ #include "battle_castle_save.h" #include "battle_hall_save.h" #include "savedata.h" -#include "unk_0202FF4C.h" +#include "battle_factory_save.h" #include "unk_02030494.h" #include "wifi_battle_tower_save.h" #include "wifi_list.h" diff --git a/src/meson.build b/src/meson.build index 14c75db8a4..2f5b0aceee 100644 --- a/src/meson.build +++ b/src/meson.build @@ -132,7 +132,7 @@ pokeplatinum_c = files( 'link_contest_records.c', 'save_catchrecords.c', 'unk_0202F1D4.c', - 'unk_0202FF4C.c', + 'battle_factory_save.c', 'battle_hall_save.c', 'battle_castle_save.c', 'unk_02030494.c', diff --git a/src/overlay104/frscrcmd_battle_factory.c b/src/overlay104/frscrcmd_battle_factory.c index 4ea96973da..f8533d60e2 100644 --- a/src/overlay104/frscrcmd_battle_factory.c +++ b/src/overlay104/frscrcmd_battle_factory.c @@ -25,7 +25,7 @@ #include "string_template.h" #include "sys_task.h" #include "sys_task_manager.h" -#include "unk_0202FF4C.h" +#include "battle_factory_save.h" #include "unk_0209BA80.h" #include "constdata/const_020EA358.h" @@ -93,7 +93,7 @@ BOOL FrontierScrCmd_OpenBattleFactoryAppInitial(FrontierScriptContext *ctx) args->saveData = fieldData->saveData; args->challengeType = battleFactory->challengeType; - args->unk_05 = battleFactory->unk_05; + args->unk_05 = battleFactory->isOpenLevel; args->isExchangeMode = FALSE; args->personalParty = battleFactory->playersParty; args->receivableParty = battleFactory->opponentsParty; @@ -151,7 +151,7 @@ BOOL FrontierScrCmd_OpenBattleFactoryAppForTrade(FrontierScriptContext *ctx) args->saveData = fieldData->saveData; args->challengeType = battleFactory->challengeType; - args->unk_05 = battleFactory->unk_05; + args->unk_05 = battleFactory->isOpenLevel; args->isExchangeMode = TRUE; args->personalParty = battleFactory->playersParty; args->receivableParty = battleFactory->opponentsParty; @@ -216,7 +216,7 @@ BOOL FrontierScrCmd_CallBattleFactoryFunction(FrontierScriptContext *ctx) battleFactory->unk_07 = arg1; break; case BF_FUNC_UNK_1: - battleFactory->unk_05 = arg1; + battleFactory->isOpenLevel = arg1; break; case BF_FUNC_SET_CHALLENGE_TYPE: battleFactory->challengeType = arg1; @@ -236,7 +236,7 @@ BOOL FrontierScrCmd_CallBattleFactoryFunction(FrontierScriptContext *ctx) OS_ResetSystem(0); break; case BF_FUNC_UNK_9: - *returnVar = sub_0202FF68(battleFactory->unk_4F4); + *returnVar = BattleFactorySave_HasSaved(battleFactory->factorySave); break; case BF_FUNC_UNK_10: ov104_02234148(battleFactory, 2); diff --git a/src/overlay104/ov104_022339B4.c b/src/overlay104/ov104_022339B4.c index 1c3baed1fc..9793a3be9a 100644 --- a/src/overlay104/ov104_022339B4.c +++ b/src/overlay104/ov104_022339B4.c @@ -5,7 +5,6 @@ #include "generated/game_records.h" #include "struct_defs/battle_frontier.h" -#include "struct_defs/struct_0202FF58.h" #include "overlay104/ov104_0222DCE0.h" #include "overlay104/ov104_0222ECE8.h" @@ -22,7 +21,7 @@ #include "pokemon.h" #include "savedata.h" #include "system_vars.h" -#include "unk_0202FF4C.h" +#include "battle_factory_save.h" #include "vars_flags.h" void ov104_02233B98(BattleFactory *param0, u16 param1); @@ -47,7 +46,7 @@ u16 ov104_022347F8(BattleFactory *param0); BattleFactory *ov104_022339B4(SaveData *saveData, u16 param1, u8 param2, u8 param3) { - UnkStruct_0202FF58 *v0; + BattleFactorySave *v0; BattleFactoryStreakFlags *v1; const UnkStruct_ov104_0224028C *v2; u8 v3; @@ -58,24 +57,24 @@ BattleFactory *ov104_022339B4(SaveData *saveData, u16 param1, u8 param2, u8 para v7 = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleFactory)); MI_CpuClear8(v7, sizeof(BattleFactory)); - v7->unk_4F4 = sub_0202FF58(saveData); + v7->factorySave = BattleFactorySave_Get(saveData); v7->saveData = saveData; v7->unk_00 = 11; v7->playersParty = Party_New(HEAP_ID_FIELD2); v7->opponentsParty = Party_New(HEAP_ID_FIELD2); - v0 = v7->unk_4F4; + v0 = v7->factorySave; v1 = BattleFactoryStreakFlags_Get(saveData); if (param1 == 0) { v7->challengeType = param2; - v7->unk_05 = param3; + v7->isOpenLevel= param3; v7->unk_06 = 0; - sub_0202FF4C(v0); + BattleFactorySave_Init(v0); if (v7->challengeType == 3) { - if (v7->unk_05 == 0) { + if (v7->isOpenLevel== 0) { v6 = 102; } else { v6 = 104; @@ -83,12 +82,12 @@ BattleFactory *ov104_022339B4(SaveData *saveData, u16 param1, u8 param2, u8 para v3 = SystemVars_GetWiFiFrontierCleared(SaveData_GetVarsFlags(v7->saveData)); } else { - v3 = (u8)BattleFactoryStreakFlags_GetFlag(v1, 10, (v7->unk_05 * 4) + v7->challengeType, NULL); + v3 = (u8)BattleFactoryStreakFlags_GetFlag(v1, 10, (v7->isOpenLevel * 4) + v7->challengeType, NULL); } if (v3 == 1) { - v7->currentStreak = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestStreakIdx(v7->unk_05, v7->challengeType)); - v7->unk_08 = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestTradeCountIndex(v7->unk_05, v7->challengeType)); + v7->currentStreak = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestStreakIdx(v7->isOpenLevel, v7->challengeType)); + v7->unk_08 = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestTradeCountIndex(v7->isOpenLevel, v7->challengeType)); } else { v7->currentStreak = 0; v7->unk_08 = 0; @@ -96,11 +95,11 @@ BattleFactory *ov104_022339B4(SaveData *saveData, u16 param1, u8 param2, u8 para v7->unk_10 = 0; } else { - v7->challengeType = (u8)sub_02030030(v0, 1, 0, NULL); - v7->unk_05 = (u8)sub_02030030(v0, 0, 0, NULL); - v7->unk_06 = (u8)sub_02030030(v0, 2, 0, NULL); - v7->currentStreak = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestStreakIdx(v7->unk_05, v7->challengeType)); - v7->unk_08 = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestTradeCountIndex(v7->unk_05, v7->challengeType)); + v7->isOpenLevel= (u8)BattleFactorySave_GetMember(v0, 1, 0, NULL); + v7->challengeType = (u8)BattleFactorySave_GetMember(v0, 0, 0, NULL); + v7->unk_06 = (u8)BattleFactorySave_GetMember(v0, 2, 0, NULL); + v7->currentStreak = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestStreakIdx(v7->isOpenLevel, v7->challengeType)); + v7->unk_08 = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestTradeCountIndex(v7->isOpenLevel, v7->challengeType)); } v7->unk_0E = (u16)(v7->currentStreak / 7); @@ -133,7 +132,7 @@ static void ov104_02233BAC(BattleFactory *param0) ov104_0223A860(param0->challengeType, ov104_0223AF34(param0), param0->trainerIDs, 7 * 2); - ov104_0223AAA0(ov104_0223AF34(param0), param0->unk_05, param0->unk_254, param0->unk_280, param0->unk_260, param0->unk_268, param0->unk_08, NULL, NULL); + ov104_0223AAA0(ov104_0223AF34(param0), param0->isOpenLevel, param0->unk_254, param0->unk_280, param0->unk_260, param0->unk_268, param0->unk_08, NULL, NULL); ov104_02233D80(param0, 4, 0); ov104_02233D80(param0, 5, 0); @@ -150,7 +149,7 @@ static void ov104_02233BAC(BattleFactory *param0) v6[v0] = param0->unk_280[v0].item; } - ov104_0223AAA0(ov104_0223AF34(param0), param0->unk_05, param0->unk_584, param0->unk_5B0, param0->unk_590, param0->unk_598, param0->unk_580, v5, v6); + ov104_0223AAA0(ov104_0223AF34(param0), param0->isOpenLevel, param0->unk_584, param0->unk_5B0, param0->unk_590, param0->unk_598, param0->unk_580, v5, v6); ov104_02233D80(param0, 4, 1); ov104_02233D80(param0, 5, 1); @@ -162,7 +161,7 @@ static void ov104_02233BAC(BattleFactory *param0) } } - ov104_0223AB0C(BattleFactory_GetOpponentPartySize(param0->challengeType, 1), param0->trainerIDs[param0->unk_06], param0->unk_05, v2, param0->unk_3D2, param0->unk_3F0, param0->unk_3DA, param0->unk_3E0, v1); + ov104_0223AB0C(BattleFactory_GetOpponentPartySize(param0->challengeType, 1), param0->trainerIDs[param0->unk_06], param0->isOpenLevel, v2, param0->unk_3D2, param0->unk_3F0, param0->unk_3DA, param0->unk_3E0, v1); for (v0 = 0; v0 < 6; v0++) { v4 = Pokemon_New(HEAP_ID_FIELD2); @@ -234,13 +233,13 @@ static void ov104_02233F1C(BattleFactory *param0) u8 v3 = BattleFactory_GetPlayerPartySize(param0->challengeType); for (v0 = 0; v0 < (7 * 2); v0++) { - param0->trainerIDs[v0] = (u16)sub_02030030(param0->unk_4F4, 3, v0, NULL); + param0->trainerIDs[v0] = (u16)BattleFactorySave_GetMember(param0->factorySave, 3, v0, NULL); } for (v0 = 0; v0 < 4; v0++) { - v6[v0] = (u16)sub_02030030(param0->unk_4F4, 4, v0, NULL); - v7[v0] = (u32)sub_02030030(param0->unk_4F4, 6, v0, NULL); - v5[v0] = (u8)sub_02030030(param0->unk_4F4, 5, v0, NULL); + v6[v0] = (u16)BattleFactorySave_GetMember(param0->factorySave, 4, v0, NULL); + v7[v0] = (u32)BattleFactorySave_GetMember(param0->factorySave, 6, v0, NULL); + v5[v0] = (u8)BattleFactorySave_GetMember(param0->factorySave, 5, v0, NULL); param0->unk_4E8[v0] = v6[v0]; } @@ -257,9 +256,9 @@ static void ov104_02233F1C(BattleFactory *param0) Heap_Free(v1); for (v0 = 0; v0 < 4; v0++) { - v6[v0] = (u16)sub_02030030(param0->unk_4F4, 7, v0, NULL); - v7[v0] = (u32)sub_02030030(param0->unk_4F4, 9, v0, NULL); - v5[v0] = (u8)sub_02030030(param0->unk_4F4, 8, v0, NULL); + v6[v0] = (u16)BattleFactorySave_GetMember(param0->factorySave, 7, v0, NULL); + v7[v0] = (u32)BattleFactorySave_GetMember(param0->factorySave, 9, v0, NULL); + v5[v0] = (u8)BattleFactorySave_GetMember(param0->factorySave, 8, v0, NULL); param0->unk_3D2[v0] = v6[v0]; } @@ -329,41 +328,41 @@ void ov104_02234148(BattleFactory *param0, u8 param1) u32 v8, v9, v10; BattleFrontierSave *frontier; Pokemon *v12; - UnkStruct_0202FF58 *v13 = param0->unk_4F4; + BattleFactorySave *v13 = param0->factorySave; BattleFactoryStreakFlags *v14 = BattleFactoryStreakFlags_Get(param0->saveData); frontier = SaveData_GetBattleFrontier(param0->saveData); v3 = BattleFactory_GetPlayerPartySize(param0->challengeType); v4 = BattleFactory_GetOpponentPartySize(param0->challengeType, 1); - v5[0] = param0->unk_05; - sub_0202FF84(param0->unk_4F4, 0, 0, v5); + v5[0] = param0->isOpenLevel; + BattleFactorySave_SetMember(param0->factorySave, 0, 0, v5); v5[0] = param0->challengeType; - sub_0202FF84(param0->unk_4F4, 1, 0, v5); - sub_0202FF70(param0->unk_4F4, 1); + BattleFactorySave_SetMember(param0->factorySave, 1, 0, v5); + BattleFactorySave_RecordSave(param0->factorySave, 1); v5[0] = param0->unk_06; - sub_0202FF84(param0->unk_4F4, 2, 0, v5); - BattleFrontierSave_SetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryLatestTradeCountIndex(param0->unk_05, param0->challengeType), param0->unk_08); - BattleFrontierSave_SetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryLatestStreakIdx(param0->unk_05, param0->challengeType), param0->currentStreak); + BattleFactorySave_SetMember(param0->factorySave, 2, 0, v5); + BattleFrontierSave_SetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryLatestTradeCountIndex(param0->isOpenLevel, param0->challengeType), param0->unk_08); + BattleFrontierSave_SetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryLatestStreakIdx(param0->isOpenLevel, param0->challengeType), param0->currentStreak); if (param1 != 2) { - v1 = BattleFrontierSave_GetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordStreakIdx(param0->unk_05, param0->challengeType)); - v8 = BattleFrontierSave_SetIfBetterAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordStreakIdx(param0->unk_05, param0->challengeType), param0->currentStreak); - v2 = BattleFrontierSave_GetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordStreakIdx(param0->unk_05, param0->challengeType)); + v1 = BattleFrontierSave_GetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordStreakIdx(param0->isOpenLevel, param0->challengeType)); + v8 = BattleFrontierSave_SetIfBetterAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordStreakIdx(param0->isOpenLevel, param0->challengeType), param0->currentStreak); + v2 = BattleFrontierSave_GetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordStreakIdx(param0->isOpenLevel, param0->challengeType)); if (param0->currentStreak == v1) { - BattleFrontierSave_SetIfBetterAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordTradeCountIndex(param0->unk_05, param0->challengeType), param0->unk_08); + BattleFrontierSave_SetIfBetterAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordTradeCountIndex(param0->isOpenLevel, param0->challengeType), param0->unk_08); } else if (v1 < v2) { - BattleFrontierSave_SetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordTradeCountIndex(param0->unk_05, param0->challengeType), param0->unk_08); + BattleFrontierSave_SetStatAutoHostIdx(frontier, BattleFrontierStats_GetFactoryRecordTradeCountIndex(param0->isOpenLevel, param0->challengeType), param0->unk_08); } v5[0] = param0->unk_0A; - BattleFactoryStreakFlags_SetFlag(v14, 10, (param0->unk_05 * 4) + param0->challengeType, v5); + BattleFactoryStreakFlags_SetFlag(v14, 10, (param0->isOpenLevel * 4) + param0->challengeType, v5); if (param0->challengeType == 3) { - if (param0->unk_05 == 0) { + if (param0->isOpenLevel == 0) { v10 = 102; } else { v10 = 104; @@ -375,7 +374,7 @@ void ov104_02234148(BattleFactory *param0, u8 param1) for (v0 = 0; v0 < (7 * 2); v0++) { v6[0] = param0->trainerIDs[v0]; - sub_0202FF84(param0->unk_4F4, 3, v0, v6); + BattleFactorySave_SetMember(param0->factorySave, 3, v0, v6); } v9 = Party_GetCurrentCount(param0->playersParty); @@ -384,13 +383,13 @@ void ov104_02234148(BattleFactory *param0, u8 param1) v12 = Party_GetPokemonBySlotIndex(param0->playersParty, v0); v6[0] = param0->unk_4E8[v0]; - sub_0202FF84(param0->unk_4F4, 4, v0, v6); + BattleFactorySave_SetMember(param0->factorySave, 4, v0, v6); v5[0] = Pokemon_GetValue(v12, MON_DATA_ATK_IV, NULL); - sub_0202FF84(param0->unk_4F4, 5, v0, v5); + BattleFactorySave_SetMember(param0->factorySave, 5, v0, v5); v7[0] = Pokemon_GetValue(v12, MON_DATA_PERSONALITY, NULL); - sub_0202FF84(param0->unk_4F4, 6, v0, v7); + BattleFactorySave_SetMember(param0->factorySave, 6, v0, v7); } v9 = Party_GetCurrentCount(param0->opponentsParty); @@ -399,13 +398,13 @@ void ov104_02234148(BattleFactory *param0, u8 param1) v12 = Party_GetPokemonBySlotIndex(param0->opponentsParty, v0); v6[0] = param0->unk_3D2[v0]; - sub_0202FF84(param0->unk_4F4, 7, v0, v6); + BattleFactorySave_SetMember(param0->factorySave, 7, v0, v6); v5[0] = Pokemon_GetValue(v12, MON_DATA_ATK_IV, NULL); - sub_0202FF84(param0->unk_4F4, 8, v0, v5); + BattleFactorySave_SetMember(param0->factorySave, 8, v0, v5); v7[0] = Pokemon_GetValue(v12, MON_DATA_PERSONALITY, NULL); - sub_0202FF84(param0->unk_4F4, 9, v0, v7); + BattleFactorySave_SetMember(param0->factorySave, 9, v0, v7); } return; @@ -516,7 +515,7 @@ void ov104_02234570(BattleFactory *param0) param0->unk_254[v0] = param0->unk_3D2[v0]; } - v7 = ov104_0223A8A8(param0->trainerIDs[param0->unk_06], param0->unk_05); + v7 = ov104_0223A8A8(param0->trainerIDs[param0->unk_06], param0->isOpenLevel); ov104_0223A918(v4, v5, v2 + v1, v3, param0->unk_3D2, 11, v7, 0, param0->unk_3DA); ov104_0222E330(param0->unk_3F0, param0->unk_3D2, param0->unk_3DA, NULL, param0->unk_3E0, v3, 11, 179); diff --git a/src/overlay104/ov104_0223A7F4.c b/src/overlay104/ov104_0223A7F4.c index 6e28822432..5d3343aef3 100644 --- a/src/overlay104/ov104_0223A7F4.c +++ b/src/overlay104/ov104_0223A7F4.c @@ -421,7 +421,7 @@ static u32 BattleFactory_GetBattleType(u8 challengeType) u8 BattleFactory_GetPokemonLevel(BattleFactory *battleFactory) { - if (battleFactory->unk_05 == 0) { + if (battleFactory->isOpenLevel == 0) { return 50; } diff --git a/src/unk_0202FF4C.c b/src/unk_0202FF4C.c deleted file mode 100644 index d5dc8c70aa..0000000000 --- a/src/unk_0202FF4C.c +++ /dev/null @@ -1,154 +0,0 @@ -#include "unk_0202FF4C.h" - -#include -#include - -#include "struct_defs/battle_frontier.h" -#include "struct_defs/struct_0202FF58.h" - -#include "savedata.h" - -void sub_0202FF4C(UnkStruct_0202FF58 *param0); -void BattleFactoryStreakFlags_Init(BattleFactoryStreakFlags *flags); -void BattleFactoryStreakFlags_SetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, u8 *value); -u32 BattleFactoryStreakFlags_GetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, void *unused); -BOOL sub_0202FF68(UnkStruct_0202FF58 *param0); -void sub_0202FF70(UnkStruct_0202FF58 *param0, BOOL param1); -void sub_0202FF84(UnkStruct_0202FF58 *param0, u8 field, u8 index, const void *value); -u32 sub_02030030(UnkStruct_0202FF58 *param0, u8 field, u8 index, void *unused); - -void sub_0202FF4C(UnkStruct_0202FF58 *param0) -{ - MI_CpuClear8(param0, sizeof(UnkStruct_0202FF58)); - return; -} - -UnkStruct_0202FF58 *sub_0202FF58(SaveData *saveData) -{ - BattleFrontierSave *frontier = SaveData_SaveTable(saveData, SAVE_TABLE_ENTRY_FRONTIER); - return &frontier->unk_8E0_val2; // fetch the save file -} - -BOOL sub_0202FF68(UnkStruct_0202FF58 *param0) -{ - return param0->unk_00_4; // fetch 2nd :1 -} - -void sub_0202FF70(UnkStruct_0202FF58 *param0, BOOL param1) -{ - param0->unk_00_4 = param1; // set 2nd :1 -} - -// set value -void sub_0202FF84(UnkStruct_0202FF58 *param0, u8 field, u8 index, const void *value) -{ - u32 *v0 = (u32 *)value; - u16 *v1 = (u16 *)value; - u8 *v2 = (u8 *)value; - - switch (field) { - case 0: - param0->unk_00_0 = v2[0]; - break; - case 1: - param0->challengeType = v2[0]; - break; - case 2: - param0->unk_01 = v2[0]; - break; - case 3: - param0->trainerIDs[index] = v1[0]; - break; - case 4: - param0->unk_20[index] = v1[0]; - break; - case 5: - param0->playerIVs[index] = v2[0]; - break; - case 6: - param0->playerPersonality[index] = v0[0]; - break; - case 7: - param0->unk_3C[index] = v1[0]; - break; - case 8: - param0->opponentIVs[index] = v2[0]; - break; - case 9: - param0->opponentPersonality[index] = v0[0]; - break; - } -} -// v7->challengeType = (u8)sub_02030030(v0, 1, 0, NULL); -// v7->unk_05 = (u8)sub_02030030(v0, 0, 0, NULL); -// v7->unk_06 = (u8)sub_02030030(v0, 2, 0, NULL); -// param0->trainerIDs[v0] = (u16)sub_02030030(param0->unk_4F4, 3, v0, NULL); -// get value -u32 sub_02030030(UnkStruct_0202FF58 *param0, u8 field, u8 index, void *unused) -{ - switch (field) { - case 1: - return (u32)param0->challengeType; - case 0: - return (u32)param0->unk_00_0; - case 2: - return (u32)param0->unk_01; - case 3: - return (u32)param0->trainerIDs[index]; - case 4: - return (u32)param0->unk_20[index]; - case 5: - return (u32)param0->playerIVs[index]; - case 6: - return (u32)param0->playerPersonality[index]; - case 7: - return (u32)param0->unk_3C[index]; - case 8: - return (u32)param0->opponentIVs[index]; - case 9: - return (u32)param0->opponentPersonality[index]; - default: - return 0; - } -} - -void BattleFactoryStreakFlags_Init(BattleFactoryStreakFlags *flags) -{ - MI_CpuClear8(flags, sizeof(BattleFactoryStreakFlags)); -} - -void BattleFactoryStreakFlags_SetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, u8 *value) -{ - u8 *value_dupe = (u8 *)value; - switch (field) { - case FACTORY_SAVE_STREAK_FLAGS: - if (*value_dupe >= 1) { - flags->streakActiveFlags |= (1 << challengeType); - } else { - flags->streakActiveFlags &= (0xff ^ (1 << challengeType)); - } - break; - default: - GF_ASSERT(FALSE); - break; - } -} - -u32 BattleFactoryStreakFlags_GetFlag(BattleFactoryStreakFlags *flags, u8 field, u8 challengeType, void *unused) -{ - switch (field) { - case FACTORY_SAVE_STREAK_FLAGS: - return (u32)((flags->streakActiveFlags >> challengeType) & 0x1); - default: - GF_ASSERT(FALSE); - break; - } - - return FALSE; -} - -BattleFactoryStreakFlags *BattleFactoryStreakFlags_Get(SaveData *saveData) -{ - BattleFrontierSave *frontier = SaveData_SaveTable(saveData, SAVE_TABLE_ENTRY_FRONTIER); - return &frontier->factory.streakFlags; -} diff --git a/src/unk_0204F04C.c b/src/unk_0204F04C.c index 4de81d62b3..9ecedec2a7 100644 --- a/src/unk_0204F04C.c +++ b/src/unk_0204F04C.c @@ -9,7 +9,7 @@ #include "battle_frontier_stats.h" #include "field_script_context.h" #include "inlines.h" -#include "unk_0202FF4C.h" +#include "battle_factory_save.h" BOOL ScrCmd_2C5(ScriptContext *param0);