diff --git a/asm/macros/frscrcmd.inc b/asm/macros/frscrcmd.inc index 0dca7b9f50..c449775b7e 100644 --- a/asm/macros/frscrcmd.inc +++ b/asm/macros/frscrcmd.inc @@ -28,14 +28,14 @@ .short FRSCRCMD_02 .endm - .macro FrontierScrCmd_03 arg0 + .macro FrontierScrCmd_03 sceneID .short FRSCRCMD_03 - .short \arg0 + .short \sceneID .endm - .macro FrontierScrCmd_04 arg0, arg1 + .macro FrontierScrCmd_04 sceneID, arg1 .short FRSCRCMD_04 - .short \arg0 + .short \sceneID .short \arg1 .endm diff --git a/asm/macros/scrcmd.inc b/asm/macros/scrcmd.inc index 707fb1d38a..1923c07126 100644 --- a/asm/macros/scrcmd.inc +++ b/asm/macros/scrcmd.inc @@ -4227,9 +4227,9 @@ .byte \arg0 .endm - .macro ScrCmd_2C4 arg0 - .short SCRCMD_2C4 - .byte \arg0 + .macro LaunchBattleFrontierScene sceneID + .short SCRCMD_LAUNCHBATTLEFRONTIERSCENE + .byte \sceneID .endm .macro ScrCmd_2C5 arg0, arg1 diff --git a/include/battle_frontier.h b/include/battle_frontier.h new file mode 100644 index 0000000000..3d614d29fe --- /dev/null +++ b/include/battle_frontier.h @@ -0,0 +1,31 @@ +#ifndef POKEPLATINUM_BATTLE_FRONTIER_H +#define POKEPLATINUM_BATTLE_FRONTIER_H + +#include "struct_decls/battle_frontier_decl.h" + +#include "functypes/funcptr_0209B988.h" +#include "overlay104/frontier_graphics.h" +#include "overlay104/struct_ov104_02230BE4.h" +#include "overlay104/struct_ov104_0223C634.h" +#include "overlay104/struct_ov104_0223C688.h" +#include "overlay104/struct_ov104_0223D3B0.h" + +#include "overlay_manager.h" + +extern const ApplicationManagerTemplate gBattleFrontierAppTemplate; + +FieldFrontierDTO *BattleFrontier_GetFieldData(BattleFrontier *frontier); +FrontierGraphics *BattleFrontier_GetGraphics(BattleFrontier *frontier); +void *sub_0209B978(BattleFrontier *frontier); +void sub_0209B980(BattleFrontier *frontier, void *param1); +void sub_0209B988(BattleFrontier *frontier, const ApplicationManagerTemplate *param1, void *param2, int param3, UnkFuncPtr_0209B988 param4); +void sub_0209B9B4(BattleFrontier *frontier); +void sub_0209B9BC(BattleFrontier *frontier, u16 sceneID, u16 param2); +UnkStruct_ov104_0223C688 *sub_0209B9CC(BattleFrontier *frontier); +UnkStruct_ov104_0223C634 *sub_0209B9D0(BattleFrontier *frontier); +UnkStruct_ov104_0223C634 *sub_0209B9D4(BattleFrontier *frontier, int param1); +UnkStruct_ov104_0223D3B0 *sub_0209B9E0(BattleFrontier *frontier); +void sub_0209B9EC(BattleFrontier *frontier); +FieldFrontierDTO *sub_0209BA18(FieldSystem *fieldSystem, void *param1); + +#endif // POKEPLATINUM_BATTLE_FRONTIER_H diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h index 09826f2e10..b2a07e7f3f 100644 --- a/include/constants/battle_frontier.h +++ b/include/constants/battle_frontier.h @@ -1,6 +1,26 @@ #ifndef POKEPLATINUM_CONSTANTS_BATTLE_FRONTIER_H #define POKEPLATINUM_CONSTANTS_BATTLE_FRONTIER_H +enum BattleFrontierScene { + FRONTIER_SCENE_0 = 0, + FRONTIER_SCENE_1, + FRONTIER_SCENE_2, + FRONTIER_SCENE_FACTORY_CORRIDOR, + FRONTIER_SCENE_FACTORY_BATTLE_ROOM, + FRONTIER_SCENE_TOWER_CORRIDOR, + FRONTIER_SCENE_TOWER_MULTI_CORRIDOR, + FRONTIER_SCENE_TOWER_BATTLE_ROOM, + FRONTIER_SCENE_TOWER_MULTI_BATTLE_ROOM, + FRONTIER_SCENE_HALL_CORRIDOR, + FRONTIER_SCENE_HALL_BATTLE_ROOM, + FRONTIER_SCENE_CASTLE_CORRIDOR, + FRONTIER_SCENE_CASTLE_BATTLE_ROOM, + FRONTIER_SCENE_13, + FRONTIER_SCENE_14, + FRONTIER_SCENE_ARCADE_CORRIDOR, + FRONTIER_SCENE_ARCADE_BATTLE_ROOM, +}; + #define FRONTIER_CHALLENGE_SINGLE 0 #define FRONTIER_CHALLENGE_DOUBLE 1 #define FRONTIER_CHALLENGE_MULTI 2 diff --git a/include/constdata/const_020F8BE0.h b/include/constdata/const_020F8BE0.h deleted file mode 100644 index 730caf5a4e..0000000000 --- a/include/constdata/const_020F8BE0.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef POKEPLATINUM_CONST_020F8BE0_H -#define POKEPLATINUM_CONST_020F8BE0_H - -#include "overlay_manager.h" - -extern const ApplicationManagerTemplate Unk_020F8BE0; - -#endif // POKEPLATINUM_CONST_020F8BE0_H diff --git a/include/data/scripts/scrcmd.h b/include/data/scripts/scrcmd.h index ff7254d6c6..3ab0fd74a0 100644 --- a/include/data/scripts/scrcmd.h +++ b/include/data/scripts/scrcmd.h @@ -713,7 +713,7 @@ ScriptCommand(SCRCMD_MESSAGEAUTOSCROLL, ScrCm ScriptCommand(SCRCMD_OPENSAVEINFO, ScrCmd_OpenSaveInfo) ScriptCommand(SCRCMD_CLOSESAVEINFO, ScrCmd_CloseSaveInfo) ScriptCommand(SCRCMD_UNUSED_2C3, ScrCmd_Unused_2C3) -ScriptCommand(SCRCMD_2C4, ScrCmd_2C4) +ScriptCommand(SCRCMD_LAUNCHBATTLEFRONTIERSCENE, ScrCmd_LaunchBattleFrontierScene) ScriptCommand(SCRCMD_2C5, ScrCmd_2C5) ScriptCommand(SCRCMD_2C6, ScrCmd_2C6) ScriptCommand(SCRCMD_ISCOMMGAMECODEPLATINUM, ScrCmd_IsCommGameCodePlatinum) diff --git a/include/overlay104/defs.h b/include/overlay104/defs.h index 7bd89121cc..3d87f8e63f 100644 --- a/include/overlay104/defs.h +++ b/include/overlay104/defs.h @@ -3,7 +3,7 @@ #include "constants/heap.h" -#include "struct_decls/struct_0209B75C_decl.h" +#include "struct_decls/battle_frontier_decl.h" #include "overlay104/struct_ov104_0222E8C8.h" @@ -74,7 +74,7 @@ typedef struct FrontierMenuManager { } FrontierMenuManager; struct FrontierScriptManager { - UnkStruct_0209B75C *unk_00; + BattleFrontier *frontier; FrontierScriptContext *ctx[8]; UnkStruct_ov104_0222E8C8 unk_24; enum HeapID heapID; diff --git a/include/overlay104/frontier_graphics.h b/include/overlay104/frontier_graphics.h index 54682470fc..07d3e166f8 100644 --- a/include/overlay104/frontier_graphics.h +++ b/include/overlay104/frontier_graphics.h @@ -1,7 +1,7 @@ #ifndef POKEPLATINUM_FRONTIER_GRAPHICS_H #define POKEPLATINUM_FRONTIER_GRAPHICS_H -#include "struct_decls/struct_0209B75C_decl.h" +#include "struct_decls/battle_frontier_decl.h" #include "overlay063/struct_ov63_0222BCE8_decl.h" #include "overlay063/struct_ov63_0222BE18_decl.h" @@ -30,7 +30,7 @@ typedef struct FrontierGraphics { BgConfig *bgConfig; PaletteData *plttData; - UnkStruct_0209B75C *unk_08; + BattleFrontier *frontier; G3DPipelineBuffers *g3dPipeline; FrontierParticleSystem *particleSys; UnkStruct_ov63_0222BE18 *unk_14; @@ -59,7 +59,7 @@ typedef struct FrontierGraphics { u8 unk_C2; } FrontierGraphics; -FrontierGraphics *FrontierGraphics_New(UnkStruct_0209B75C *param0); +FrontierGraphics *FrontierGraphics_New(BattleFrontier *frontier); void FrontierGraphics_Free(FrontierGraphics *graphics); void ov104_0223C634(FrontierGraphics *param0); @@ -77,6 +77,6 @@ ManagedSprite *ov104_0223D370(FrontierGraphics *param0, u16 param1); void ov104_0223D378(FrontierGraphics *param0, u16 param1, int param2); u32 ov104_0223D3A4(FrontierGraphics *param0, u16 param1); void ov104_0223D554(FrontierGraphics *param0, s16 *param1, s16 *param2); -UnkStruct_ov104_0223C634 *ov104_0223D5A8(UnkStruct_0209B75C *param0, int param1); +UnkStruct_ov104_0223C634 *ov104_0223D5A8(BattleFrontier *param0, int param1); #endif // POKEPLATINUM_FRONTIER_GRAPHICS_H diff --git a/include/overlay104/frontier_scenes.h b/include/overlay104/frontier_scenes.h new file mode 100644 index 0000000000..496cab5ff6 --- /dev/null +++ b/include/overlay104/frontier_scenes.h @@ -0,0 +1,29 @@ +#ifndef POKEPLATINUM_FRONTIER_SCENES_H +#define POKEPLATINUM_FRONTIER_SCENES_H + +#include "constants/battle_frontier.h" + +#include "overlay104/frontier_graphics.h" + +enum FrontierSceneParam { + FR_SCENE_BGMODE = 0, + FR_SCENE_SCRIPT_ID, + FR_SCENE_BANK_ID, + FR_SCENE_BGM_ID, + FR_SCENE_SCREEN_SIZE, + FR_SCENE_NARC_ID, + FR_SCENE_TILEMAP_IDX, + FR_SCENE_TILES_IDX, + FR_SCENE_PLTT_IDX, + FR_SCENE_SUB_TILEMAP_IDX, + FR_SCENE_SUB_TILES_IDX, + FR_SCENE_SUB_PLTT_IDX, + FR_SCENE_FLAG_1, + FR_SCENE_FLAG_2, +}; + +int FrontierScene_GetParam(enum BattleFrontierScene sceneID, enum FrontierSceneParam sceneParam); +void FrontierScene_CallSetupFunc(FrontierGraphics *graphics, void **sceneData, enum BattleFrontierScene sceneID); +void FrontierScene_CallDestroyFunc(FrontierGraphics *graphics, void **sceneData, enum BattleFrontierScene sceneID); + +#endif // POKEPLATINUM_FRONTIER_SCENES_H diff --git a/include/overlay104/frontier_script_manager.h b/include/overlay104/frontier_script_manager.h index eb9b2dbc5e..c3f81d9265 100644 --- a/include/overlay104/frontier_script_manager.h +++ b/include/overlay104/frontier_script_manager.h @@ -3,14 +3,14 @@ #include "constants/heap.h" -#include "struct_decls/struct_0209B75C_decl.h" +#include "struct_decls/battle_frontier_decl.h" #include "overlay104/defs.h" #include "overlay104/frontier_graphics.h" #include "overlay104/struct_ov104_0222E8C8.h" -FrontierScriptManager *FrontierScriptManager_New(UnkStruct_0209B75C *param0, enum HeapID heapID, int scene); -BOOL ov104_0222E6A8(FrontierScriptManager *scriptMan); +FrontierScriptManager *FrontierScriptManager_New(BattleFrontier *frontier, enum HeapID heapID, int scene); +BOOL FrontierScriptManager_RunScript(FrontierScriptManager *scriptMan); void FrontierScriptManager_Free(FrontierScriptManager *scriptMan); void FrontierScriptManager_Load(FrontierScriptManager *scriptMan, int scene, int offsetID); void FrontierScriptManager_UpdateMessageLoader(FrontierScriptManager *scriptMan, int scene, enum HeapID heapID); diff --git a/include/overlay104/ov104_0222EA90.h b/include/overlay104/ov104_0222EA90.h deleted file mode 100644 index cc9d49c011..0000000000 --- a/include/overlay104/ov104_0222EA90.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef POKEPLATINUM_OV104_0222EA90_H -#define POKEPLATINUM_OV104_0222EA90_H - -#include "overlay104/frontier_graphics.h" - -enum FrontierSceneParam { - FR_SCENE_BGMODE = 0, - FR_SCENE_SCRIPT_ID, - FR_SCENE_BANK_ID, - FR_SCENE_BGM_ID, - FR_SCENE_SCREEN_SIZE, - FR_SCENE_NARC_ID, - FR_SCENE_TILEMAP_IDX, - FR_SCENE_TILES_IDX, - FR_SCENE_PLTT_IDX, - FR_SCENE_SUB_TILEMAP_IDX, - FR_SCENE_SUB_TILES_IDX, - FR_SCENE_SUB_PLTT_IDX, - FR_SCENE_FLAG_1, - FR_SCENE_FLAG_2, -}; - -int GetFrontierSceneValue(int scene, enum FrontierSceneParam sceneParam); -void ov104_0222EB8C(FrontierGraphics *param0, void **param1, int param2); -void ov104_0222EBA4(FrontierGraphics *param0, void **param1, int param2); - -#endif // POKEPLATINUM_OV104_0222EA90_H diff --git a/include/overlay104/ov104_02239C58.h b/include/overlay104/ov104_02239C58.h index 41b474cd4b..33447a6842 100644 --- a/include/overlay104/ov104_02239C58.h +++ b/include/overlay104/ov104_02239C58.h @@ -1,7 +1,7 @@ #ifndef POKEPLATINUM_OV104_02239C58_H #define POKEPLATINUM_OV104_02239C58_H -#include "struct_decls/struct_0209B75C_decl.h" +#include "struct_decls/battle_frontier_decl.h" #include "struct_defs/struct_0209BBA4.h" #include "savedata.h" @@ -9,6 +9,6 @@ UnkStruct_0209BBA4 *ov104_02239C58(SaveData *saveData); void ov104_02239C7C(UnkStruct_0209BBA4 *param0); BOOL ov104_02239C88(UnkStruct_0209BBA4 *param0, u16 param1, u16 param2, u16 param3); -void ov104_02239CD0(UnkStruct_0209B75C *param0, UnkStruct_0209BBA4 *param1, u16 param2); +void ov104_02239CD0(BattleFrontier *param0, UnkStruct_0209BBA4 *param1, u16 param2); #endif // POKEPLATINUM_OV104_02239C58_H diff --git a/include/overlay104/ov104_0223A0C4.h b/include/overlay104/ov104_0223A0C4.h index 922bf8906a..4ae35512dd 100644 --- a/include/overlay104/ov104_0223A0C4.h +++ b/include/overlay104/ov104_0223A0C4.h @@ -12,7 +12,7 @@ BOOL BattleTower_CreateTrainerParty(BattleTower *battleTower, FrontierDataDTO *opponentDataDTO, u16 battleTowerTrainerID, int partySize, u16 *species, u16 *items, UnkStruct_0204B404 *param6, enum HeapID heapID); void BattleTower_CreateWiFiTrainerParty(SaveData *saveData, FrontierDataDTO *dto, const u8 opponentID); -FieldBattleDTO *FieldBattleDTO_NewBattleTower(BattleTower *battleTower, UnkStruct_ov104_02230BE4 *param1); +FieldBattleDTO *FieldBattleDTO_NewBattleTower(BattleTower *battleTower, FieldFrontierDTO *fieldData); void ov104_0223A734(BattleTower *battleTower, u16 param1); u16 ov104_0223A750(BattleTower *battleTower, const u16 *param1); int BattleTower_GetTrainerMessagesBankID(u8 challengeMode); diff --git a/include/overlay104/ov104_0223A7F4.h b/include/overlay104/ov104_0223A7F4.h index 5822c5d275..bc48e653bd 100644 --- a/include/overlay104/ov104_0223A7F4.h +++ b/include/overlay104/ov104_0223A7F4.h @@ -15,7 +15,7 @@ u8 BattleFactory_GetPlayerPartySize(u8 challengeType); u8 BattleFactory_GetOpponentPartySize(u8 challengeType, BOOL param1); void ov104_0223AAA0(u16 param0, u8 param1, u16 *param2, FrontierPokemonDataDTO *param3, u8 *param4, u32 *param5, u16 param6, u16 *param7, u16 *param8); void ov104_0223AB0C(u8 param0, u16 param1, u8 param2, FrontierPokemonDataDTO *param3, u16 *param4, FrontierPokemonDataDTO *param5, u8 *param6, u32 *param7, int param8); -FieldBattleDTO *FieldBattleDTO_NewBattleFactory(BattleFactory *battleFactory, UnkStruct_ov104_02230BE4 *param1); +FieldBattleDTO *FieldBattleDTO_NewBattleFactory(BattleFactory *battleFactory, FieldFrontierDTO *fieldData); u8 BattleFactory_GetPokemonLevel(BattleFactory *battleFactory); void ov104_0223ADB0(BattleFactory *battleFactory); void ov104_0223AE30(BattleFactory *battleFactory); diff --git a/include/overlay104/ov104_0223AF58.h b/include/overlay104/ov104_0223AF58.h index a014be0efe..ba8ce0c7d9 100644 --- a/include/overlay104/ov104_0223AF58.h +++ b/include/overlay104/ov104_0223AF58.h @@ -11,7 +11,7 @@ void ov104_0223AF58(u8 param0, u8 param1, u8 param2, u8 param3, u16 param4[]); void ov104_0223AFB4(u8 param0, u8 param1, int param2, u8 param3, u8 param4, u16 param5[]); void ov104_0223B0C8(u8 param0, u8 param1, u8 param2, u8 param3, u16 param4, u16 param5[], u8 param6); -FieldBattleDTO *FieldBattleDTO_NewBattleHall(BattleHall *battleHall, UnkStruct_ov104_02230BE4 *param1); +FieldBattleDTO *FieldBattleDTO_NewBattleHall(BattleHall *battleHall, FieldFrontierDTO *fieldData); u8 BattleHall_GetPlayerPartySize(u8 challengeType); u8 BattleHall_GetOpponentPartySize(u8 challengeType); u8 BattleHall_CursorPosToType(u8 cursorPos); diff --git a/include/overlay104/ov104_0223B6F4.h b/include/overlay104/ov104_0223B6F4.h index 7d5f6a916c..06d998f388 100644 --- a/include/overlay104/ov104_0223B6F4.h +++ b/include/overlay104/ov104_0223B6F4.h @@ -14,7 +14,7 @@ void ov104_0223B760(u8 param0, int param1, u16 param2[], u8 param3); u8 BattleCastle_GetPlayerPartySize(u8 challengeType, BOOL includePartnersMons); u8 BattleCastle_GetOpponentPartySize(u8 challengeType, BOOL param1); -FieldBattleDTO *FieldBattleDTO_NewBattleCastle(BattleCastle *battleCastle, UnkStruct_ov104_02230BE4 *param1); +FieldBattleDTO *FieldBattleDTO_NewBattleCastle(BattleCastle *battleCastle, FieldFrontierDTO *fieldData); u8 BattleCastle_GetOpponentLevel(BattleCastle *battleCastle); BOOL BattleCastle_IsMultiPlayerChallenge(u8 challengeType); void ov104_0223BA24(Party *param0); diff --git a/include/overlay104/ov104_0223BCBC.h b/include/overlay104/ov104_0223BCBC.h index ab1a7b5786..f82717b600 100644 --- a/include/overlay104/ov104_0223BCBC.h +++ b/include/overlay104/ov104_0223BCBC.h @@ -11,7 +11,7 @@ void ov104_0223BD28(u8 param0, int param1, u16 param2[], u8 param3); u8 BattleArcade_GetPlayerPartySize(u8 challengeType, BOOL includePartnerMons); u8 BattleArcade_GetOpponentPartySize(u8 challengeType, BOOL includeBothOpponents); -FieldBattleDTO *FieldBattleDTO_NewBattleArcade(BattleArcade *battleArcade, UnkStruct_ov104_02230BE4 *param1); +FieldBattleDTO *FieldBattleDTO_NewBattleArcade(BattleArcade *battleArcade, FieldFrontierDTO *fieldData); u8 BattleArcade_GetPokemonLevel(BattleArcade *battleArcade); BOOL BattleArcade_IsMultiPlayerChallenge(u8 challengeType); void ov104_0223C010(BattleArcade *battleArcade, Pokemon *param1); diff --git a/include/overlay104/ov104_0223D860.h b/include/overlay104/ov104_0223D860.h index 2aad4e931d..21cfb78ca2 100644 --- a/include/overlay104/ov104_0223D860.h +++ b/include/overlay104/ov104_0223D860.h @@ -1,9 +1,9 @@ #ifndef POKEPLATINUM_OV104_0223D860_H #define POKEPLATINUM_OV104_0223D860_H -#include "struct_decls/struct_0209B75C_decl.h" +#include "struct_decls/battle_frontier_decl.h" -void ov104_0223D860(UnkStruct_0209B75C *param0, u16 param1, u8 param2, s16 param3[], int param4); -void ov104_0223D8C4(UnkStruct_0209B75C *param0); +void ov104_0223D860(BattleFrontier *param0, u16 param1, u8 param2, s16 param3[], int param4); +void ov104_0223D8C4(BattleFrontier *param0); #endif // POKEPLATINUM_OV104_0223D860_H diff --git a/include/overlay104/struct_ov104_02230BE4.h b/include/overlay104/struct_ov104_02230BE4.h index 383ecc3472..c18752a455 100644 --- a/include/overlay104/struct_ov104_02230BE4.h +++ b/include/overlay104/struct_ov104_02230BE4.h @@ -8,7 +8,7 @@ #include "journal.h" #include "savedata.h" -typedef struct { +typedef struct FieldFrontierDTO { void *unk_00; const Options *options; SaveData *saveData; @@ -20,6 +20,6 @@ typedef struct { u8 *subscreenCursorOn; u8 sceneID; FieldSystem *fieldSystem; -} UnkStruct_ov104_02230BE4; +} FieldFrontierDTO; #endif // POKEPLATINUM_STRUCT_OV104_02230BE4_H diff --git a/include/struct_decls/struct_0209B75C_decl.h b/include/struct_decls/battle_frontier_decl.h similarity index 70% rename from include/struct_decls/struct_0209B75C_decl.h rename to include/struct_decls/battle_frontier_decl.h index b5b962ad4b..c1fc663afb 100644 --- a/include/struct_decls/struct_0209B75C_decl.h +++ b/include/struct_decls/battle_frontier_decl.h @@ -1,6 +1,6 @@ #ifndef POKEPLATINUM_STRUCT_0209B75C_DECL_H #define POKEPLATINUM_STRUCT_0209B75C_DECL_H -typedef struct UnkStruct_0209B75C_t UnkStruct_0209B75C; +typedef struct BattleFrontier BattleFrontier; #endif // POKEPLATINUM_STRUCT_0209B75C_DECL_H diff --git a/include/unk_0209B6F8.h b/include/unk_0209B6F8.h deleted file mode 100644 index 8d3e1d9b4d..0000000000 --- a/include/unk_0209B6F8.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef POKEPLATINUM_UNK_0209B6F8_H -#define POKEPLATINUM_UNK_0209B6F8_H - -#include "struct_decls/struct_0209B75C_decl.h" - -#include "functypes/funcptr_0209B988.h" -#include "overlay104/frontier_graphics.h" -#include "overlay104/struct_ov104_02230BE4.h" -#include "overlay104/struct_ov104_0223C634.h" -#include "overlay104/struct_ov104_0223C688.h" -#include "overlay104/struct_ov104_0223D3B0.h" - -#include "overlay_manager.h" - -UnkStruct_ov104_02230BE4 *sub_0209B970(UnkStruct_0209B75C *param0); -FrontierGraphics *sub_0209B974(UnkStruct_0209B75C *param0); -void *sub_0209B978(UnkStruct_0209B75C *param0); -void sub_0209B980(UnkStruct_0209B75C *param0, void *param1); -void sub_0209B988(UnkStruct_0209B75C *param0, const ApplicationManagerTemplate *param1, void *param2, int param3, UnkFuncPtr_0209B988 param4); -void sub_0209B9B4(UnkStruct_0209B75C *param0); -void sub_0209B9BC(UnkStruct_0209B75C *param0, u16 param1, u16 param2); -UnkStruct_ov104_0223C688 *sub_0209B9CC(UnkStruct_0209B75C *param0); -UnkStruct_ov104_0223C634 *sub_0209B9D0(UnkStruct_0209B75C *param0); -UnkStruct_ov104_0223C634 *sub_0209B9D4(UnkStruct_0209B75C *param0, int param1); -UnkStruct_ov104_0223D3B0 *sub_0209B9E0(UnkStruct_0209B75C *param0); -void sub_0209B9EC(UnkStruct_0209B75C *param0); - -#endif // POKEPLATINUM_UNK_0209B6F8_H diff --git a/include/unk_0209BA18.h b/include/unk_0209BA18.h deleted file mode 100644 index 3bbaca1207..0000000000 --- a/include/unk_0209BA18.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef POKEPLATINUM_UNK_0209BA18_H -#define POKEPLATINUM_UNK_0209BA18_H - -#include "field/field_system_decl.h" -#include "overlay104/struct_ov104_02230BE4.h" - -UnkStruct_ov104_02230BE4 *sub_0209BA18(FieldSystem *fieldSystem, void *param1); - -#endif // POKEPLATINUM_UNK_0209BA18_H diff --git a/platinum.us/main.lsf b/platinum.us/main.lsf index 020bd5c7ae..5a67078465 100644 --- a/platinum.us/main.lsf +++ b/platinum.us/main.lsf @@ -362,8 +362,7 @@ Static main Object main.nef.p/src_unk_0209ACF4.c.o Object main.nef.p/src_unk_0209B344.c.o Object main.nef.p/src_error_message_reset.c.o - Object main.nef.p/src_unk_0209B6F8.c.o - Object main.nef.p/src_unk_0209BA18.c.o + Object main.nef.p/src_battle_frontier.c.o Object main.nef.p/src_unk_0209BA80.c.o Object main.nef.p/src_unk_0209BDF8.c.o Object main.nef.p/src_unk_0209C194.c.o @@ -1538,7 +1537,7 @@ Overlay overlay104 Object main.nef.p/src_overlay104_ov104_0222DCE0.c.o Object main.nef.p/src_overlay104_frontier_script_manager.c.o Object main.nef.p/src_overlay104_frontier_script_context.c.o - Object main.nef.p/src_overlay104_ov104_0222EA90.c.o + Object main.nef.p/src_overlay104_frontier_scenes.c.o Object main.nef.p/src_overlay104_ov104_0222ECE8.c.o Object main.nef.p/src_overlay104_frscrcmd.c.o Object main.nef.p/src_overlay104_ov104_02231F74.c.o diff --git a/res/field/frontier_scripts/frontier_scripts_battle_arcade.s b/res/field/frontier_scripts/frontier_scripts_battle_arcade.s index 3296472a4d..9dfe81086f 100644 --- a/res/field/frontier_scripts/frontier_scripts_battle_arcade.s +++ b/res/field/frontier_scripts/frontier_scripts_battle_arcade.s @@ -1,6 +1,7 @@ # include "macros/frscrcmd.inc" # include "res/graphics/frontier/particles/frontier_particles.naix" # include "res/text/bank/battle_arcade_scene.h" +# include "constants/battle_frontier.h" # include "constants/battle_arcade_functions.h" # include "constants/battle_frontier_emitters.h" @@ -941,7 +942,7 @@ _0742: End _0788: - FrontierScrCmd_03 16 + FrontierScrCmd_03 FRONTIER_SCENE_ARCADE_BATTLE_ROOM SetVar VAR_0x800D, 0 CallBattleArcadeFunction BA_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008 GoToIfEq VAR_0x8008, 1, _07BC @@ -3124,7 +3125,7 @@ _2E86: _2E90: FreeBattleRecording FrontierScrCmd_BA - FrontierScrCmd_04 14, 1 + FrontierScrCmd_04 FRONTIER_SCENE_14, 1 End _2E9C: diff --git a/res/field/frontier_scripts/frontier_scripts_battle_castle.s b/res/field/frontier_scripts/frontier_scripts_battle_castle.s index 6c432b144a..9030e27801 100644 --- a/res/field/frontier_scripts/frontier_scripts_battle_castle.s +++ b/res/field/frontier_scripts/frontier_scripts_battle_castle.s @@ -1017,7 +1017,7 @@ _0B36: FrontierScrCmd_25 3 FrontierScrCmd_25 4 FrontierScrCmd_23 217 - FrontierScrCmd_03 13 + FrontierScrCmd_03 FRONTIER_SCENE_13 GetPlayerObjEventGfx VAR_0x8007 FrontierScrCmd_22 _019C FrontierScrCmd_24 _01B0 @@ -1036,7 +1036,7 @@ _0BBA: FrontierScrCmd_25 2 FrontierScrCmd_25 3 FrontierScrCmd_23 217 - FrontierScrCmd_03 13 + FrontierScrCmd_03 FRONTIER_SCENE_13 GetPlayerObjEventGfx VAR_0x8007 FrontierScrCmd_22 _01A4 FrontierScrCmd_24 _01C8 @@ -1094,7 +1094,7 @@ _0CAD: FrontierScrCmd_25 3 FrontierScrCmd_25 4 FrontierScrCmd_23 217 - FrontierScrCmd_03 12 + FrontierScrCmd_03 FRONTIER_SCENE_CASTLE_BATTLE_ROOM Call _0E74 FrontierScrCmd_22 _00DC FrontierScrCmd_24 _0100 @@ -1131,7 +1131,7 @@ _0DA3: FrontierScrCmd_25 2 FrontierScrCmd_25 3 FrontierScrCmd_23 217 - FrontierScrCmd_03 12 + FrontierScrCmd_03 FRONTIER_SCENE_CASTLE_BATTLE_ROOM Call _0E74 FrontierScrCmd_22 _00E8 FrontierScrCmd_24 _0124 @@ -1829,7 +1829,7 @@ _1948: _1952: FreeBattleRecording FrontierScrCmd_99 - FrontierScrCmd_04 14, 1 + FrontierScrCmd_04 FRONTIER_SCENE_14, 1 End _195E: @@ -1868,7 +1868,7 @@ _19E8: GoToIfEq VAR_0x8008, 1, _1A30 FrontierScrCmd_25 0 FrontierScrCmd_25 4 - FrontierScrCmd_03 11 + FrontierScrCmd_03 FRONTIER_SCENE_CASTLE_CORRIDOR GetPlayerObjEventGfx VAR_0x8007 SetVar FR_VAR_0x800F, 231 FrontierScrCmd_22 _0008 @@ -1879,7 +1879,7 @@ _19E8: _1A30: FrontierScrCmd_25 1 FrontierScrCmd_25 2 - FrontierScrCmd_03 11 + FrontierScrCmd_03 FRONTIER_SCENE_CASTLE_CORRIDOR GetPlayerObjEventGfx VAR_0x8007 SetVar FR_VAR_0x800F, 232 FrontierScrCmd_22 _0010 diff --git a/res/field/frontier_scripts/frontier_scripts_battle_factory.s b/res/field/frontier_scripts/frontier_scripts_battle_factory.s index c1f0df3000..b1d5c9b163 100644 --- a/res/field/frontier_scripts/frontier_scripts_battle_factory.s +++ b/res/field/frontier_scripts/frontier_scripts_battle_factory.s @@ -744,7 +744,7 @@ _084E: FrontierScrCmd_25 4 FrontierScrCmd_23 30 CallBattleFactoryFunction BF_FUNC_UNK_32, 0, 0, VAR_0x8008 - FrontierScrCmd_03 4 + FrontierScrCmd_03 FRONTIER_SCENE_FACTORY_BATTLE_ROOM GetPlayerObjEventGfx VAR_0x8007 FrontierScrCmd_22 _00F8 FrontierScrCmd_24 _0108 @@ -781,7 +781,7 @@ _0927: FrontierScrCmd_25 4 FrontierScrCmd_23 30 CallBattleFactoryFunction BF_FUNC_UNK_32, 0, 0, VAR_0x8008 - FrontierScrCmd_03 4 + FrontierScrCmd_03 FRONTIER_SCENE_FACTORY_BATTLE_ROOM GetPlayerObjEventGfx VAR_0x8007 FrontierScrCmd_22 _0100 FrontierScrCmd_24 _0120 @@ -1412,7 +1412,7 @@ _1368: CallBattleFactoryFunction BF_FUNC_UNK_32, 0, 0, VAR_0x8008 FreeBattleRecording FrontierScrCmd_5E - FrontierScrCmd_04 14, 1 + FrontierScrCmd_04 FRONTIER_SCENE_14, 1 End _137B: @@ -1432,7 +1432,7 @@ _1391: GoToIfEq VAR_0x8008, 1, _13EA FrontierScrCmd_25 0 FrontierScrCmd_25 4 - FrontierScrCmd_03 3 + FrontierScrCmd_03 FRONTIER_SCENE_FACTORY_CORRIDOR CallBattleFactoryFunction BF_FUNC_UNK_31, 0, 0, VAR_0x8008 GetPlayerObjEventGfx VAR_0x8007 FrontierScrCmd_22 _0008 @@ -1444,7 +1444,7 @@ _13EA: FrontierScrCmd_25 1 FrontierScrCmd_25 2 FrontierScrCmd_25 4 - FrontierScrCmd_03 3 + FrontierScrCmd_03 FRONTIER_SCENE_FACTORY_CORRIDOR CallBattleFactoryFunction BF_FUNC_UNK_31, 0, 0, VAR_0x8008 GetPlayerObjEventGfx VAR_0x8007 FrontierScrCmd_22 _0014 diff --git a/res/field/frontier_scripts/frontier_scripts_battle_hall.s b/res/field/frontier_scripts/frontier_scripts_battle_hall.s index 61069b5557..4fed3a6e35 100644 --- a/res/field/frontier_scripts/frontier_scripts_battle_hall.s +++ b/res/field/frontier_scripts/frontier_scripts_battle_hall.s @@ -1,6 +1,7 @@ # include "macros/frscrcmd.inc" # include "res/graphics/frontier/particles/frontier_particles.naix" # include "res/text/bank/battle_hall_scene.h" +# include "constants/battle_frontier.h" # include "constants/battle_frontier_emitters.h" # include "constants/battle_hall_functions.h" @@ -522,7 +523,7 @@ _0404: End _044A: - FrontierScrCmd_03 10 + FrontierScrCmd_03 FRONTIER_SCENE_HALL_BATTLE_ROOM CallBattleHallFunction BH_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008 GoToIfEq VAR_0x8008, 1, _0476 FrontierScrCmd_22 _0024 @@ -1251,7 +1252,7 @@ _1071: _107B: FreeBattleRecording FreeBattleHall - FrontierScrCmd_04 14, 1 + FrontierScrCmd_04 FRONTIER_SCENE_14, 1 End _1087: diff --git a/res/field/frontier_scripts/frontier_scripts_battle_tower_corridor.s b/res/field/frontier_scripts/frontier_scripts_battle_tower_corridor.s index 73d192a4f5..99310bc2be 100644 --- a/res/field/frontier_scripts/frontier_scripts_battle_tower_corridor.s +++ b/res/field/frontier_scripts/frontier_scripts_battle_tower_corridor.s @@ -1,4 +1,5 @@ # include "macros/frscrcmd.inc" +# include "constants/battle_frontier.h" .data @@ -202,7 +203,7 @@ _0232: FrontierScrCmd_25 0 FrontierScrCmd_25 1 FrontierScrCmd_23 FR_VAR_0x800F - FrontierScrCmd_04 7, 0 + FrontierScrCmd_04 FRONTIER_SCENE_TOWER_BATTLE_ROOM, 0 End .balign 4, 0 diff --git a/res/field/frontier_scripts/frontier_scripts_battle_tower_corridor_multi.s b/res/field/frontier_scripts/frontier_scripts_battle_tower_corridor_multi.s index 4cd0f170f3..f326016df3 100644 --- a/res/field/frontier_scripts/frontier_scripts_battle_tower_corridor_multi.s +++ b/res/field/frontier_scripts/frontier_scripts_battle_tower_corridor_multi.s @@ -1,4 +1,5 @@ # include "macros/frscrcmd.inc" +# include "constants/battle_frontier.h" .data @@ -248,7 +249,7 @@ _0250: End _0270: - FrontierScrCmd_04 8, 0 + FrontierScrCmd_04 FRONTIER_SCENE_TOWER_MULTI_BATTLE_ROOM, 0 End _0278: diff --git a/res/field/frontier_scripts/frontier_scripts_battle_tower_multi_battle_room.s b/res/field/frontier_scripts/frontier_scripts_battle_tower_multi_battle_room.s index 4115b1661b..13fac86c24 100644 --- a/res/field/frontier_scripts/frontier_scripts_battle_tower_multi_battle_room.s +++ b/res/field/frontier_scripts/frontier_scripts_battle_tower_multi_battle_room.s @@ -1,6 +1,7 @@ # include "macros/frscrcmd.inc" # include "res/text/bank/battle_tower_multi_battle_room.h" # include "res/text/bank/menu_entries.h" +# include "constants/battle_frontier.h" .data @@ -393,7 +394,7 @@ _04D1: _04D5: ClearTowerStruct - FrontierScrCmd_04 14, 1 + FrontierScrCmd_04 FRONTIER_SCENE_14, 1 End _04DF: diff --git a/res/field/frontier_scripts/frontier_scripts_unknown_10.s b/res/field/frontier_scripts/frontier_scripts_unknown_10.s index f92fb45f24..40cf48bf08 100644 --- a/res/field/frontier_scripts/frontier_scripts_unknown_10.s +++ b/res/field/frontier_scripts/frontier_scripts_unknown_10.s @@ -468,35 +468,35 @@ _0858: GoToIfEq VAR_0x8008, 0, _0858 FrontierScrCmd_B5 Call _08C9 - FrontierScrCmd_04 6, 0 + FrontierScrCmd_04 FRONTIER_SCENE_TOWER_MULTI_CORRIDOR, 0 End _0879: FrontierScrCmd_AB PlayBGM SEQ_PL_BF_FACTORY Call _08C9 - FrontierScrCmd_04 3, 0 + FrontierScrCmd_04 FRONTIER_SCENE_FACTORY_CORRIDOR, 0 End _088D: FrontierScrCmd_AB PlayBGM SEQ_PL_BF_STAGE Call _08C9 - FrontierScrCmd_04 9, 0 + FrontierScrCmd_04 FRONTIER_SCENE_HALL_CORRIDOR, 0 End _08A1: FrontierScrCmd_AB PlayBGM SEQ_PL_BF_CASTLE02 Call _08C9 - FrontierScrCmd_04 11, 0 + FrontierScrCmd_04 FRONTIER_SCENE_CASTLE_CORRIDOR, 0 End _08B5: FrontierScrCmd_AB PlayBGM SEQ_PL_BF_ROULETTE Call _08C9 - FrontierScrCmd_04 15, 0 + FrontierScrCmd_04 FRONTIER_SCENE_ARCADE_CORRIDOR, 0 End _08C9: diff --git a/res/field/scripts/scripts_battle_arcade.s b/res/field/scripts/scripts_battle_arcade.s index 36d76b704d..c705ddfb32 100644 --- a/res/field/scripts/scripts_battle_arcade.s +++ b/res/field/scripts/scripts_battle_arcade.s @@ -291,7 +291,7 @@ BattleArcade_StartChallenge: IncrementGameRecord RECORD_TIMES_STARTED_BATTLE_FRONTIER_CHALLENGE CreateJournalEvent LOCATION_EVENT_BATTLE_ARCADE WaitForTransition - ScrCmd_2C4 15 + LaunchBattleFrontierScene FRONTIER_SCENE_ARCADE_CORRIDOR CallIfEq VAR_BATTLE_ARCADE_CHALLENGE_TYPE, FRONTIER_CHALLENGE_MULTI, BattleArcade_EndCommunication ReturnToField FadeScreenIn diff --git a/res/field/scripts/scripts_battle_castle.s b/res/field/scripts/scripts_battle_castle.s index dfc0e6eba6..7e26af524f 100644 --- a/res/field/scripts/scripts_battle_castle.s +++ b/res/field/scripts/scripts_battle_castle.s @@ -288,7 +288,7 @@ BattleCastle_StartChallenge: IncrementGameRecord RECORD_TIMES_STARTED_BATTLE_FRONTIER_CHALLENGE CreateJournalEvent LOCATION_EVENT_BATTLE_CASTLE WaitForTransition - ScrCmd_2C4 11 + LaunchBattleFrontierScene FRONTIER_SCENE_CASTLE_CORRIDOR CallIfEq VAR_BATTLE_CASTLE_CHALLENGE_TYPE, FRONTIER_CHALLENGE_MULTI, BattleCastle_EndCommunication ReturnToField FadeScreenIn diff --git a/res/field/scripts/scripts_battle_factory.s b/res/field/scripts/scripts_battle_factory.s index 1d6f8c7b7f..2ffc62acb4 100644 --- a/res/field/scripts/scripts_battle_factory.s +++ b/res/field/scripts/scripts_battle_factory.s @@ -240,7 +240,7 @@ BattleFactory_StartChallenge: IncrementGameRecord RECORD_TIMES_STARTED_BATTLE_FRONTIER_CHALLENGE CreateJournalEvent LOCATION_EVENT_BATTLE_FACTORY WaitForTransition - ScrCmd_2C4 3 + LaunchBattleFrontierScene FRONTIER_SCENE_FACTORY_CORRIDOR CallIfEq VAR_BATTLE_FACTORY_CHALLENGE_TYPE, FRONTIER_CHALLENGE_MULTI, BattleFactory_EndCommunication ReturnToField FadeScreenIn diff --git a/res/field/scripts/scripts_battle_hall.s b/res/field/scripts/scripts_battle_hall.s index c899fb3c30..71bb83a67e 100644 --- a/res/field/scripts/scripts_battle_hall.s +++ b/res/field/scripts/scripts_battle_hall.s @@ -408,7 +408,7 @@ BattleHall_StartChallenge: IncrementGameRecord RECORD_TIMES_STARTED_BATTLE_FRONTIER_CHALLENGE CreateJournalEvent LOCATION_EVENT_BATTLE_HALL WaitForTransition - ScrCmd_2C4 9 + LaunchBattleFrontierScene FRONTIER_SCENE_HALL_CORRIDOR CallIfEq VAR_BATTLE_HALL_CHALLENGE_TYPE, FRONTIER_CHALLENGE_MULTI, BattleHall_EndCommunication ReturnToField FadeScreenIn diff --git a/res/field/scripts/scripts_battle_tower_elevator.s b/res/field/scripts/scripts_battle_tower_elevator.s index 0ce8ff096b..14218d738c 100644 --- a/res/field/scripts/scripts_battle_tower_elevator.s +++ b/res/field/scripts/scripts_battle_tower_elevator.s @@ -1,4 +1,5 @@ #include "macros/scrcmd.inc" +#include "constants/battle_frontier.h" #include "res/field/events/events_battle_tower_elevator.h" #include "generated/object_events_gfx.h" @@ -45,7 +46,7 @@ BattleTowerElevator_BattleRoomCheckWiFi: GoToIfEq VAR_RESULT, BATTLE_TOWER_MODE_WIFI, BattleTowerElevator_WiFiBattleRoom GoToIfEq VAR_RESULT, BATTLE_TOWER_MODE_5, BattleTowerElevator_WiFiBattleRoom WaitForTransition - ScrCmd_2C4 5 + LaunchBattleFrontierScene FRONTIER_SCENE_TOWER_CORRIDOR ReturnToField Warp MAP_HEADER_BATTLE_TOWER, 15, 6, DIR_NORTH End @@ -54,7 +55,7 @@ BattleTowerElevator_MultiBattleRoom: FadeScreenOut WaitFadeScreen WaitForTransition - ScrCmd_2C4 6 + LaunchBattleFrontierScene FRONTIER_SCENE_TOWER_MULTI_CORRIDOR ReturnToField Warp MAP_HEADER_BATTLE_TOWER, 11, 6, DIR_NORTH End @@ -139,7 +140,7 @@ BattleTowerElevator_Movement_PlayerExit: BattleTowerElevator_WiFiBattleRoom: WaitForTransition - ScrCmd_2C4 5 + LaunchBattleFrontierScene FRONTIER_SCENE_TOWER_CORRIDOR ReturnToField Warp MAP_HEADER_BATTLE_TOWER, 19, 6, DIR_NORTH End diff --git a/src/battle_frontier.c b/src/battle_frontier.c new file mode 100644 index 0000000000..9c52c3f112 --- /dev/null +++ b/src/battle_frontier.c @@ -0,0 +1,323 @@ +#include "battle_frontier.h" + +#include + +#include "constants/battle_frontier.h" +#include "constants/heap.h" + +#include "field/field_system.h" +#include "functypes/funcptr_0209B988.h" +#include "overlay104/defs.h" +#include "overlay104/frontier_graphics.h" +#include "overlay104/frontier_script_manager.h" +#include "overlay104/struct_ov104_0222E8C8.h" +#include "overlay104/struct_ov104_02230BE4.h" +#include "overlay104/struct_ov104_0223C634.h" +#include "overlay104/struct_ov104_0223C688.h" +#include "overlay104/struct_ov104_0223D3B0.h" +#include "overlay104/struct_ov104_0223D3B0_sub1.h" +#include "overlay104/struct_ov104_0223D8F0.h" + +#include "field_system.h" +#include "game_overlay.h" +#include "heap.h" +#include "overlay_manager.h" +#include "save_player.h" +#include "system.h" + +FS_EXTERN_OVERLAY(overlay63); +FS_EXTERN_OVERLAY(overlay104); +FS_EXTERN_OVERLAY(battle_factory_app); + +typedef struct BattleFrontier { + FieldFrontierDTO *fieldData; + ApplicationManager *appMan; + void *unk_08; + UnkFuncPtr_0209B988 unk_0C; + u8 unk_10; + FrontierScriptManager *scriptMan; + FrontierGraphics *graphics; + u8 unk_1C; + u8 isGraphicsInitialized; + u8 unk_1E; + u16 unk_20; + u8 unk_22; + UnkStruct_ov104_0223C688 unk_24[24]; + UnkStruct_ov104_0223C634 unk_6C[32]; + UnkStruct_ov104_0223D8F0 unk_78C[32]; + UnkStruct_ov104_0223D3B0 unk_98C; +} BattleFrontier; + +static BOOL BattleFrontier_Init(ApplicationManager *appMan, int *state); +int BattleFrontier_Main(ApplicationManager *appMan, int *state); +int BattleFrontier_Exit(ApplicationManager *appMan, int *state); +static void InitFrontierGraphics(BattleFrontier *frontier); +static void FreeFrontierGraphics(BattleFrontier *frontier); +static void LoadBattleFrontierOverlays(void); +static void UnloadBattleFrontierOverlays(void); +static void sub_0209B8E8(BattleFrontier *frontier); + +const ApplicationManagerTemplate gBattleFrontierAppTemplate = { + BattleFrontier_Init, + BattleFrontier_Main, + BattleFrontier_Exit, + FS_OVERLAY_ID_NONE +}; + +static BOOL BattleFrontier_Init(ApplicationManager *appMan, int *state) +{ + LoadBattleFrontierOverlays(); + + BattleFrontier *frontier = ApplicationManager_NewData(appMan, sizeof(BattleFrontier), HEAP_ID_FIELD2); + MI_CpuClear8(frontier, sizeof(BattleFrontier)); + + sub_0209B8E8(frontier); + sub_0209B9EC(frontier); + + frontier->fieldData = ApplicationManager_Args(appMan); + GF_ASSERT(frontier->fieldData != NULL); + + frontier->scriptMan = FrontierScriptManager_New(frontier, HEAP_ID_FIELD2, frontier->fieldData->sceneID); + FrontierScriptManager_Load(frontier->scriptMan, frontier->fieldData->sceneID, 0); + + InitFrontierGraphics(frontier); + + return TRUE; +} + +int BattleFrontier_Main(ApplicationManager *appMan, int *state) +{ + BattleFrontier *frontier = ApplicationManager_Data(appMan); + + switch (*state) { + case 0: + *state = 1; + break; + case 1: + if (frontier->unk_22 == 1) { + *state = 2; + break; + } + + if (!frontier->isGraphicsInitialized) { + break; + } + + if (frontier->unk_1E == 1) { + *state = 5; + break; + } + + if (FrontierScriptManager_RunScript(frontier->scriptMan) == TRUE) { + if (JOY_NEW(PAD_BUTTON_B)) { + *state = 2; + } + } + + if (frontier->appMan != NULL) { + *state = 3; + } + break; + case 2: + return TRUE; + case 3: + ov104_0223C634(frontier->graphics); + FreeFrontierGraphics(frontier); + UnloadBattleFrontierOverlays(); + *state = 4; + break; + case 4: + if (ApplicationManager_Exec(frontier->appMan) == TRUE) { + ApplicationManager_Free(frontier->appMan); + LoadBattleFrontierOverlays(); + + if (frontier->unk_0C != NULL) { + frontier->unk_0C(frontier->unk_08); + } + + if (frontier->unk_08 != NULL && frontier->unk_10 == 1) { + Heap_Free(frontier->unk_08); + } + + frontier->appMan = NULL; + frontier->unk_0C = NULL; + frontier->unk_08 = NULL; + + InitFrontierGraphics(frontier); + ov104_0223C688(frontier->graphics); + *state = 1; + } + break; + case 5: + FreeFrontierGraphics(frontier); + sub_0209B8E8(frontier); + *state = 6; + break; + case 6: + InitFrontierGraphics(frontier); + + if (frontier->unk_20 == 0xffff) { + FrontierScriptManager_UpdateMessageLoader(frontier->scriptMan, frontier->fieldData->sceneID, HEAP_ID_FIELD2); + } else { + UnkStruct_ov104_0222E8C8 *v2; + + v2 = ov104_0222E8C8(frontier->scriptMan, HEAP_ID_FIELD2); + FrontierScriptManager_Free(frontier->scriptMan); + + frontier->scriptMan = FrontierScriptManager_New(frontier, HEAP_ID_FIELD2, frontier->fieldData->sceneID); + FrontierScriptManager_Load(frontier->scriptMan, frontier->fieldData->sceneID, frontier->unk_20); + ov104_0222E8E8(frontier->scriptMan, v2); + } + + frontier->unk_1E = 0; + *state = 1; + break; + } + + return FALSE; +} + +int BattleFrontier_Exit(ApplicationManager *appMan, int *state) +{ + BattleFrontier *frontier = ApplicationManager_Data(appMan); + + FrontierScriptManager_Free(frontier->scriptMan); + + FreeFrontierGraphics(frontier); + ApplicationManager_FreeData(appMan); + UnloadBattleFrontierOverlays(); + + return TRUE; +} + +static void InitFrontierGraphics(BattleFrontier *frontier) +{ + frontier->graphics = FrontierGraphics_New(frontier); + frontier->isGraphicsInitialized = TRUE; +} + +static void FreeFrontierGraphics(BattleFrontier *frontier) +{ + FrontierGraphics_Free(frontier->graphics); + frontier->isGraphicsInitialized = FALSE; +} + +static void sub_0209B8E8(BattleFrontier *frontier) +{ + for (int v0 = 0; v0 < 24; v0++) { + frontier->unk_24[v0].unk_00 = 0xffff; + } + + MI_CpuClear8(frontier->unk_6C, sizeof(UnkStruct_ov104_0223C634) * 32); + + for (int v0 = 0; v0 < 32; v0++) { + frontier->unk_6C[v0].unk_08.unk_04 = 0xffff; + } +} + +static void LoadBattleFrontierOverlays(void) +{ + Overlay_LoadByID(FS_OVERLAY_ID(overlay104), OVERLAY_LOAD_ASYNC); + Overlay_LoadByID(FS_OVERLAY_ID(battle_factory_app), OVERLAY_LOAD_ASYNC); + Overlay_LoadByID(FS_OVERLAY_ID(overlay63), OVERLAY_LOAD_ASYNC); +} + +static void UnloadBattleFrontierOverlays(void) +{ + Overlay_UnloadByID(FS_OVERLAY_ID(overlay104)); + Overlay_UnloadByID(FS_OVERLAY_ID(battle_factory_app)); + Overlay_UnloadByID(FS_OVERLAY_ID(overlay63)); +} + +FieldFrontierDTO *BattleFrontier_GetFieldData(BattleFrontier *frontier) +{ + return frontier->fieldData; +} + +FrontierGraphics *BattleFrontier_GetGraphics(BattleFrontier *frontier) +{ + return frontier->graphics; +} + +void *sub_0209B978(BattleFrontier *frontier) +{ + return frontier->fieldData->unk_00; +} + +void sub_0209B980(BattleFrontier *frontier, void *param1) +{ + frontier->fieldData->unk_00 = param1; +} + +void sub_0209B988(BattleFrontier *frontier, const ApplicationManagerTemplate *param1, void *param2, int param3, UnkFuncPtr_0209B988 param4) +{ + GF_ASSERT(frontier->appMan == NULL); + frontier->appMan = ApplicationManager_New(param1, param2, HEAP_ID_FIELD2); + frontier->unk_08 = param2; + frontier->unk_10 = param3; + frontier->unk_0C = param4; +} + +void sub_0209B9B4(BattleFrontier *frontier) +{ + frontier->unk_22 = 1; +} + +void sub_0209B9BC(BattleFrontier *frontier, u16 sceneID, u16 param2) +{ + frontier->fieldData->sceneID = sceneID; + frontier->unk_1E = 1; + frontier->unk_20 = param2; +} + +UnkStruct_ov104_0223C688 *sub_0209B9CC(BattleFrontier *frontier) +{ + return frontier->unk_24; +} + +UnkStruct_ov104_0223C634 *sub_0209B9D0(BattleFrontier *frontier) +{ + return frontier->unk_6C; +} + +UnkStruct_ov104_0223C634 *sub_0209B9D4(BattleFrontier *frontier, int param1) +{ + return &frontier->unk_6C[param1]; +} + +UnkStruct_ov104_0223D3B0 *sub_0209B9E0(BattleFrontier *frontier) +{ + return &frontier->unk_98C; +} + +void sub_0209B9EC(BattleFrontier *frontier) +{ + MI_CpuClear8(&frontier->unk_98C, sizeof(UnkStruct_ov104_0223D3B0_sub1)); + + for (int v0 = 0; v0 < 8; v0++) { + frontier->unk_98C.unk_00[v0] = 0xffff; + } +} + +FieldFrontierDTO *sub_0209BA18(FieldSystem *fieldSystem, void *param1) +{ + FieldFrontierDTO *fieldData = Heap_AllocAtEnd(HEAP_ID_FIELD2, sizeof(FieldFrontierDTO)); + + MI_CpuClear8(fieldData, sizeof(FieldFrontierDTO)); + + fieldData->unk_00 = param1; + fieldData->options = SaveData_GetOptions(fieldSystem->saveData); + fieldData->saveData = fieldSystem->saveData; + fieldData->journalEntry = fieldSystem->journalEntry; + fieldData->bagCursor = fieldSystem->bagCursor; + fieldData->subscreenCursorOn = fieldSystem->battleSubscreenCursorOn; + fieldData->unk_14 = 0; + fieldData->unk_18 = 0; + fieldData->mapHeaderID = fieldSystem->location->mapId; + fieldData->sceneID = FRONTIER_SCENE_14; + fieldData->fieldSystem = fieldSystem; + + FieldSystem_StartChildProcess(fieldSystem, &gBattleFrontierAppTemplate, fieldData); + + return fieldData; +} diff --git a/src/meson.build b/src/meson.build index 5c5136ef91..0da1bc171c 100644 --- a/src/meson.build +++ b/src/meson.build @@ -343,8 +343,7 @@ pokeplatinum_c = files( 'pokedex_memory.c', 'unk_0209ACF4.c', 'unk_0209B344.c', - 'unk_0209B6F8.c', - 'unk_0209BA18.c', + 'battle_frontier.c', 'unk_0209BA80.c', 'unk_0209BDF8.c', 'unk_0209C194.c', @@ -922,7 +921,7 @@ pokeplatinum_c = files( 'overlay104/ov104_0222DCE0.c', 'overlay104/frontier_script_manager.c', 'overlay104/frontier_script_context.c', - 'overlay104/ov104_0222EA90.c', + 'overlay104/frontier_scenes.c', 'overlay104/ov104_0222ECE8.c', 'overlay104/frscrcmd.c', 'overlay104/ov104_02231F74.c', diff --git a/src/overlay104/frontier_graphics.c b/src/overlay104/frontier_graphics.c index 76d95d465c..98aa7735dd 100644 --- a/src/overlay104/frontier_graphics.c +++ b/src/overlay104/frontier_graphics.c @@ -5,8 +5,9 @@ #include "constants/field_base_tiles.h" #include "constants/graphics.h" -#include "struct_decls/struct_0209B75C_decl.h" +#include "struct_decls/battle_frontier_decl.h" +#include "global/utility.h" #include "overlay063/ov63_0222BCE8.h" #include "overlay063/ov63_0222BE18.h" #include "overlay063/ov63_0222CA88.h" @@ -22,8 +23,8 @@ #include "overlay065/struct_ov65_0223582C.h" #include "overlay065/struct_ov65_022376D0.h" #include "overlay104/frontier_particle_system.h" +#include "overlay104/frontier_scenes.h" #include "overlay104/ov104_0222DCE0.h" -#include "overlay104/ov104_0222EA90.h" #include "overlay104/ov104_0223D768.h" #include "overlay104/struct_ov104_02230BE4.h" #include "overlay104/struct_ov104_0223C634.h" @@ -32,6 +33,7 @@ #include "overlay104/struct_ov104_0223D3B0_1.h" #include "overlay104/struct_ov104_0223D570.h" +#include "battle_frontier.h" #include "bg_window.h" #include "g3d_pipeline.h" #include "game_options.h" @@ -54,7 +56,6 @@ #include "touch_pad.h" #include "trainer_info.h" #include "unk_0202419C.h" -#include "unk_0209B6F8.h" #include "vram_transfer.h" #include "res/fonts/pl_font.naix" @@ -70,8 +71,6 @@ static void ov104_0223CEEC(FrontierGraphics *param0); static void LoadMessageBoxAndWindowGraphics(FrontierGraphics *graphics); static void InitSpriteSystem(FrontierGraphics *graphics); static void FreeSpriteSystem(FrontierGraphics *graphics); -FrontierGraphics *FrontierGraphics_New(UnkStruct_0209B75C *param0); -void FrontierGraphics_Free(FrontierGraphics *param0); static void ov104_0223C8E8(FrontierGraphics *param0); static void LoadSubScreenBackground(FrontierGraphics *graphics); static G3DPipelineBuffers *InitG3DPipeline(enum HeapID heapID); @@ -80,7 +79,7 @@ static void FreeG3DPipeline(G3DPipelineBuffers *g3dPipeline); static void ov104_0223D3B0(FrontierGraphics *param0); static void ov104_0223D498(FrontierGraphics *param0); static void ov104_0223D570(UnkStruct_ov104_0223C634 *param0, UnkStruct_ov104_0223D570 *param1); -static void ov104_0223D584(UnkStruct_0209B75C *param0, int param1, UnkStruct_ov63_0222BEC0 *param2, UnkStruct_ov63_0222CE44 *param3, const UnkStruct_ov104_0223D570 *param4); +static void ov104_0223D584(BattleFrontier *param0, int param1, UnkStruct_ov63_0222BEC0 *param2, UnkStruct_ov63_0222CE44 *param3, const UnkStruct_ov104_0223D570 *param4); static void ov104_0223C798(FrontierGraphics *param0); static void ov104_0223C7EC(FrontierGraphics *param0); @@ -116,12 +115,12 @@ static const SpriteResourceCapacities sCapacities = { static const UnkUnion_ov63_0222BDAC Unk_ov104_022413D8[256] = { 0 }; -FrontierGraphics *FrontierGraphics_New(UnkStruct_0209B75C *param0) +FrontierGraphics *FrontierGraphics_New(BattleFrontier *frontier) { FrontierGraphics *graphics; - UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(param0); - const TrainerInfo *playerInfo = SaveData_GetTrainerInfo(v3->saveData); - int sceneID = v3->sceneID; + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(frontier); + const TrainerInfo *playerInfo = SaveData_GetTrainerInfo(fieldData->saveData); + int sceneID = fieldData->sceneID; SetVBlankCallback(NULL, NULL); DisableHBlank(); @@ -140,7 +139,7 @@ FrontierGraphics *FrontierGraphics_New(UnkStruct_0209B75C *param0) graphics = Heap_Alloc(HEAP_ID_94, sizeof(FrontierGraphics)); MI_CpuClear8(graphics, sizeof(FrontierGraphics)); - graphics->unk_08 = param0; + graphics->frontier = frontier; graphics->sceneID = sceneID; for (int i = 0; i < 8; i++) { @@ -181,7 +180,7 @@ FrontierGraphics *FrontierGraphics_New(UnkStruct_0209B75C *param0) GXLayers_TurnBothDispOn(); GXLayers_EngineAToggleLayers(GX_PLANEMASK_OBJ, TRUE); GXLayers_EngineBToggleLayers(GX_PLANEMASK_OBJ, TRUE); - Sound_SetSceneAndPlayBGM(SOUND_SCENE_FIELD, GetFrontierSceneValue(sceneID, FR_SCENE_BGM_ID), 1); + Sound_SetSceneAndPlayBGM(SOUND_SCENE_FIELD, FrontierScene_GetParam(sceneID, FR_SCENE_BGM_ID), 1); RenderControlFlags_SetAutoScrollFlags(AUTO_SCROLL_ENABLED); RenderControlFlags_SetCanABSpeedUpPrint(FALSE); @@ -189,7 +188,7 @@ FrontierGraphics *FrontierGraphics_New(UnkStruct_0209B75C *param0) SetVBlankCallback(VBlankCallback, graphics); graphics->dummyExecuteOnVBlank = SysTask_ExecuteOnVBlank(DummyExecuteOnVBlank, graphics, 10); - ov104_0222EB8C(graphics, &graphics->unk_90, graphics->sceneID); + FrontierScene_CallSetupFunc(graphics, &graphics->unk_90, graphics->sceneID); NetworkIcon_Init(); return graphics; @@ -197,8 +196,8 @@ FrontierGraphics *FrontierGraphics_New(UnkStruct_0209B75C *param0) void FrontierGraphics_Free(FrontierGraphics *graphics) { - UnkStruct_ov104_02230BE4 *v1 = sub_0209B970(graphics->unk_08); - ov104_0222EBA4(graphics, &graphics->unk_90, graphics->sceneID); + UNUSED(BattleFrontier_GetFieldData(graphics->frontier)); + FrontierScene_CallDestroyFunc(graphics, &graphics->unk_90, graphics->sceneID); ov104_0223CEEC(graphics); @@ -262,7 +261,7 @@ void ov104_0223C634(FrontierGraphics *param0) UnkStruct_ov104_0223C634 *v1; for (v0 = 0; v0 < 32; v0++) { - v1 = sub_0209B9D4(param0->unk_08, v0); + v1 = sub_0209B9D4(param0->frontier, v0); if (v1->unk_00 != NULL) { v1->unk_08.unk_0A = ov63_0222BF90(v1->unk_00, 6); @@ -284,7 +283,7 @@ void ov104_0223C688(FrontierGraphics *param0) { UnkStruct_ov104_0223C688 *v1; - v1 = sub_0209B9CC(param0->unk_08); + v1 = sub_0209B9CC(param0->frontier); for (v0 = 0; v0 < 24; v0++) { if (v1[v0].unk_00 != 0xffff) { @@ -298,7 +297,7 @@ void ov104_0223C688(FrontierGraphics *param0) UnkStruct_ov104_0223D570 v3; for (v0 = 0; v0 < 32; v0++) { - v2 = sub_0209B9D4(param0->unk_08, v0); + v2 = sub_0209B9D4(param0->frontier, v0); if (v2->unk_08.unk_04 != 0xffff) { ov104_0223D570(v2, &v3); @@ -345,7 +344,7 @@ static void ov104_0223C738(SysTask *param0, void *param1) { UnkStruct_ov104_0223C634 *v1; - v1 = sub_0209B9D4(v0->unk_08, 32 - 1); + v1 = sub_0209B9D4(v0->frontier, 32 - 1); if (v1->unk_00 != NULL) { ov63_0222D160(&v0->unk_1C, v1->unk_00); @@ -379,9 +378,9 @@ static void ov104_0223C738(SysTask *param0, void *param1) static void ov104_0223C798(FrontierGraphics *param0) { int v0; - UnkStruct_ov104_02230BE4 *v1 = sub_0209B970(param0->unk_08); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(param0->frontier); - v0 = GetFrontierSceneValue(v1->sceneID, FR_SCENE_FLAG_1); + v0 = FrontierScene_GetParam(fieldData->sceneID, FR_SCENE_FLAG_1); switch (v0) { case 0: @@ -390,7 +389,7 @@ static void ov104_0223C798(FrontierGraphics *param0) ov63_0222D228(param0->unk_24, ¶m0->unk_1C); } - if ((param0->unk_28 != NULL) && (GetFrontierSceneValue(v1->sceneID, FR_SCENE_FLAG_2) == 1)) { + if ((param0->unk_28 != NULL) && (FrontierScene_GetParam(fieldData->sceneID, FR_SCENE_FLAG_2) == 1)) { ov63_0222D228(param0->unk_28, ¶m0->unk_1C); } break; @@ -404,7 +403,7 @@ static void ov104_0223C7EC(FrontierGraphics *param0) { s16 v0; s16 v1; - UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(param0->unk_08); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(param0->frontier); v1 = ov63_0222D1B0(¶m0->unk_1C) + param0->unk_A4.unk_06; v0 = ov63_0222D1B8(¶m0->unk_1C) + param0->unk_A4.unk_04; @@ -413,7 +412,7 @@ static void ov104_0223C7EC(FrontierGraphics *param0) Bg_ScheduleScroll(param0->bgConfig, 3, 0, v0); Bg_ScheduleScroll(param0->bgConfig, 3, 3, v1); - if ((GetFrontierSceneValue(v2->sceneID, FR_SCENE_SUB_TILEMAP_IDX) != 0xffff) && (GetFrontierSceneValue(v2->sceneID, FR_SCENE_FLAG_2) == 1)) { + if ((FrontierScene_GetParam(fieldData->sceneID, FR_SCENE_SUB_TILEMAP_IDX) != 0xffff) && (FrontierScene_GetParam(fieldData->sceneID, FR_SCENE_FLAG_2) == 1)) { Bg_ScheduleScroll(param0->bgConfig, 2, 0, v0); Bg_ScheduleScroll(param0->bgConfig, 2, 3, v1); } @@ -440,7 +439,7 @@ static void ov104_0223C8E8(FrontierGraphics *param0) static void InitBackgrounds(BgConfig *bgConfig, int sceneID) { - GXBGMode bgMode = GetFrontierSceneValue(sceneID, FR_SCENE_BGMODE); + GXBGMode bgMode = FrontierScene_GetParam(sceneID, FR_SCENE_BGMODE); GXLayers_DisableEngineALayers(); GXBanks banks = { @@ -525,10 +524,10 @@ static void InitBackgrounds(BgConfig *bgConfig, int sceneID) bgTemplates[2].bgExtPltt = GX_BG_EXTPLTT_01; } - u16 screenSize = GetFrontierSceneValue(sceneID, FR_SCENE_SCREEN_SIZE); + u16 screenSize = FrontierScene_GetParam(sceneID, FR_SCENE_SCREEN_SIZE); bgTemplates[2].screenSize = screenSize; - if (GetFrontierSceneValue(sceneID, FR_SCENE_SUB_TILEMAP_IDX) != 0xffff) { + if (FrontierScene_GetParam(sceneID, FR_SCENE_SUB_TILEMAP_IDX) != 0xffff) { bgTemplates[1].screenSize = screenSize; } @@ -591,9 +590,9 @@ static void LoadMessageBoxAndWindowGraphics(FrontierGraphics *graphics) PaletteData_LoadBufferFromFileStart(graphics->plttData, NARC_INDEX_GRAPHIC__PL_FONT, font_NCLR, HEAP_ID_94, PLTTBUF_MAIN_BG, PALETTE_SIZE_BYTES, PLTT_DEST(14)); PaletteData_LoadBufferFromFileStart(graphics->plttData, NARC_INDEX_GRAPHIC__PL_FONT, screen_indicators_NCLR, HEAP_ID_94, PLTTBUF_MAIN_BG, PALETTE_SIZE_BYTES, PLTT_DEST(13)); - UnkStruct_ov104_02230BE4 *v0 = sub_0209B970(graphics->unk_08); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(graphics->frontier); - LoadMessageBoxGraphics(graphics->bgConfig, BG_LAYER_MAIN_1, BASE_TILE_SCROLLING_MESSAGE_BOX, 11, Options_Frame(v0->options), HEAP_ID_94); + LoadMessageBoxGraphics(graphics->bgConfig, BG_LAYER_MAIN_1, BASE_TILE_SCROLLING_MESSAGE_BOX, 11, Options_Frame(fieldData->options), HEAP_ID_94); PaletteData_LoadBufferFromHardware(graphics->plttData, PLTTBUF_MAIN_BG, 11 * SLOTS_PER_PALETTE, PALETTE_SIZE_BYTES); LoadStandardWindowGraphics(graphics->bgConfig, BG_LAYER_MAIN_1, BASE_TILE_STANDARD_WINDOW_FRAME, 12, STANDARD_WINDOW_SYSTEM, HEAP_ID_94); @@ -635,16 +634,16 @@ static void ov104_0223CC74(FrontierGraphics *param0, int sceneID, const TrainerI }; int v1; - v0.narcID = GetFrontierSceneValue(sceneID, FR_SCENE_NARC_ID); - v0.unk_09 = GetFrontierSceneValue(sceneID, FR_SCENE_TILEMAP_IDX); - v1 = GetFrontierSceneValue(sceneID, FR_SCENE_FLAG_1); + v0.narcID = FrontierScene_GetParam(sceneID, FR_SCENE_NARC_ID); + v0.unk_09 = FrontierScene_GetParam(sceneID, FR_SCENE_TILEMAP_IDX); + v1 = FrontierScene_GetParam(sceneID, FR_SCENE_FLAG_1); if (v1 == 0) { param0->unk_24 = ov63_0222D1C0(SpriteSystem_GetRenderer(param0->spriteSystem), param0->bgConfig, &v0, HEAP_ID_94); } - if (GetFrontierSceneValue(sceneID, FR_SCENE_SUB_TILEMAP_IDX) != 0xffff) { - v0.unk_09 = GetFrontierSceneValue(sceneID, FR_SCENE_SUB_TILEMAP_IDX); + if (FrontierScene_GetParam(sceneID, FR_SCENE_SUB_TILEMAP_IDX) != 0xffff) { + v0.unk_09 = FrontierScene_GetParam(sceneID, FR_SCENE_SUB_TILEMAP_IDX); v0.unk_01 = 2; v0.unk_03 = (GX_BG_SCRBASE_0x0800); v0.unk_04 = (GX_BG_CHARBASE_0x20000); @@ -662,19 +661,19 @@ static void ov104_0223CC74(FrontierGraphics *param0, int sceneID, const TrainerI ov63_0222BD50(param0->unk_18, Unk_ov104_022413D8); { - GXBGMode bgMode = GetFrontierSceneValue(sceneID, FR_SCENE_BGMODE); + GXBGMode bgMode = FrontierScene_GetParam(sceneID, FR_SCENE_BGMODE); - u32 narcID = GetFrontierSceneValue(sceneID, FR_SCENE_NARC_ID); + u32 narcID = FrontierScene_GetParam(sceneID, FR_SCENE_NARC_ID); NARC *narc = NARC_ctor(narcID, HEAP_ID_94); - Graphics_LoadTilesToBgLayerFromOpenNARC(narc, GetFrontierSceneValue(sceneID, FR_SCENE_TILES_IDX), param0->bgConfig, 3, 0, 0, 1, HEAP_ID_94); + Graphics_LoadTilesToBgLayerFromOpenNARC(narc, FrontierScene_GetParam(sceneID, FR_SCENE_TILES_IDX), param0->bgConfig, 3, 0, 0, 1, HEAP_ID_94); if (bgMode == GX_BGMODE_0) { - PaletteData_LoadBufferFromFileStart(param0->plttData, narcID, GetFrontierSceneValue(sceneID, FR_SCENE_PLTT_IDX), 94, 0, (10 - 0 + 1) * 0x20, 0 * 16); + PaletteData_LoadBufferFromFileStart(param0->plttData, narcID, FrontierScene_GetParam(sceneID, FR_SCENE_PLTT_IDX), 94, 0, (10 - 0 + 1) * 0x20, 0 * 16); } else { NNSG2dPaletteData *plttData; - void *pltt = Graphics_GetPlttDataFromOpenNARC(narc, GetFrontierSceneValue(sceneID, FR_SCENE_PLTT_IDX), &plttData, HEAP_ID_94); + void *pltt = Graphics_GetPlttDataFromOpenNARC(narc, FrontierScene_GetParam(sceneID, FR_SCENE_PLTT_IDX), &plttData, HEAP_ID_94); DC_FlushRange(plttData->pRawData, plttData->szByte); GX_BeginLoadBGExtPltt(); @@ -685,16 +684,16 @@ static void ov104_0223CC74(FrontierGraphics *param0, int sceneID, const TrainerI } PaletteData_FillBufferRange(param0->plttData, 0, 2, 0x0, 0, 1); - Graphics_LoadTilemapToBgLayerFromOpenNARC(narc, GetFrontierSceneValue(sceneID, FR_SCENE_TILEMAP_IDX), param0->bgConfig, 3, 0, 0, 1, HEAP_ID_94); + Graphics_LoadTilemapToBgLayerFromOpenNARC(narc, FrontierScene_GetParam(sceneID, FR_SCENE_TILEMAP_IDX), param0->bgConfig, 3, 0, 0, 1, HEAP_ID_94); - if (GetFrontierSceneValue(sceneID, FR_SCENE_SUB_TILEMAP_IDX) != 0xffff) { - Graphics_LoadTilesToBgLayerFromOpenNARC(narc, GetFrontierSceneValue(sceneID, FR_SCENE_SUB_TILES_IDX), param0->bgConfig, 2, 0, 0, 1, HEAP_ID_94); - Graphics_LoadTilemapToBgLayerFromOpenNARC(narc, GetFrontierSceneValue(sceneID, FR_SCENE_SUB_TILEMAP_IDX), param0->bgConfig, 2, 0, 0, 1, HEAP_ID_94); + if (FrontierScene_GetParam(sceneID, FR_SCENE_SUB_TILEMAP_IDX) != 0xffff) { + Graphics_LoadTilesToBgLayerFromOpenNARC(narc, FrontierScene_GetParam(sceneID, FR_SCENE_SUB_TILES_IDX), param0->bgConfig, 2, 0, 0, 1, HEAP_ID_94); + Graphics_LoadTilemapToBgLayerFromOpenNARC(narc, FrontierScene_GetParam(sceneID, FR_SCENE_SUB_TILEMAP_IDX), param0->bgConfig, 2, 0, 0, 1, HEAP_ID_94); if (bgMode != GX_BGMODE_0) { NNSG2dPaletteData *plttData; - void *pltt = Graphics_GetPlttDataFromOpenNARC(narc, GetFrontierSceneValue(sceneID, FR_SCENE_SUB_PLTT_IDX), &plttData, HEAP_ID_94); + void *pltt = Graphics_GetPlttDataFromOpenNARC(narc, FrontierScene_GetParam(sceneID, FR_SCENE_SUB_PLTT_IDX), &plttData, HEAP_ID_94); DC_FlushRange(plttData->pRawData, plttData->szByte); GX_BeginLoadBGExtPltt(); @@ -717,7 +716,7 @@ static void ov104_0223CEEC(FrontierGraphics *param0) { UnkStruct_ov104_0223C634 *v1; - v1 = sub_0209B9D0(param0->unk_08); + v1 = sub_0209B9D0(param0->frontier); for (v0 = 0; v0 < 32; v0++) { if (v1[v0].unk_00 != NULL) { @@ -817,7 +816,7 @@ void ov104_0223D0EC(FrontierGraphics *param0, const UnkStruct_ov104_0223C688 *pa UnkStruct_ov104_0223C688 *v0; int v1, v2; - v0 = sub_0209B9CC(param0->unk_08); + v0 = sub_0209B9CC(param0->frontier); for (v1 = 0; v1 < 24; v1++) { if (v0[v1].unk_00 == param1->unk_00) { @@ -842,7 +841,7 @@ void ov104_0223D0EC(FrontierGraphics *param0, const UnkStruct_ov104_0223C688 *pa void ov104_0223D148(FrontierGraphics *param0, int param1) { int v0; - UnkStruct_ov104_0223C688 *v1 = sub_0209B9CC(param0->unk_08); + UnkStruct_ov104_0223C688 *v1 = sub_0209B9CC(param0->frontier); for (v0 = 0; v0 < 24; v0++) { if (v1[v0].unk_00 == param1) { @@ -861,7 +860,7 @@ UnkStruct_ov63_0222BEC0 *ov104_0223D180(FrontierGraphics *param0, const UnkStruc UnkStruct_ov63_0222BEC0 *v4; UnkStruct_ov63_0222CE44 *v5; - v0 = sub_0209B9D0(param0->unk_08); + v0 = sub_0209B9D0(param0->frontier); if (param2 == -1) { for (v1 = 0; v1 < 32; v1++) { @@ -887,7 +886,7 @@ UnkStruct_ov63_0222BEC0 *ov104_0223D180(FrontierGraphics *param0, const UnkStruc v5 = ov63_0222CE44(param0->unk_20, v4, 0, HEAP_ID_94); ov63_0222D008(v5, param1->unk_0B); - ov104_0223D584(param0->unk_08, v2, v4, v5, param1); + ov104_0223D584(param0->frontier, v2, v4, v5, param1); return v4; } @@ -895,7 +894,7 @@ UnkStruct_ov63_0222BEC0 *ov104_0223D180(FrontierGraphics *param0, const UnkStruc void ov104_0223D200(FrontierGraphics *param0, UnkStruct_ov63_0222BEC0 *param1) { int v0; - UnkStruct_ov104_0223C634 *v1 = sub_0209B9D0(param0->unk_08); + UnkStruct_ov104_0223C634 *v1 = sub_0209B9D0(param0->frontier); for (v0 = 0; v0 < 32; v0++) { if (v1[v0].unk_00 == param1) { @@ -914,7 +913,7 @@ void ov104_0223D200(FrontierGraphics *param0, UnkStruct_ov63_0222BEC0 *param1) void ov104_0223D258(FrontierGraphics *param0, u16 param1, UnkStruct_ov63_0222BEC0 **param2, UnkStruct_ov63_0222CE44 **param3) { int v0; - UnkStruct_ov104_0223C634 *v1 = sub_0209B9D0(param0->unk_08); + UnkStruct_ov104_0223C634 *v1 = sub_0209B9D0(param0->frontier); for (v0 = 0; v0 < 32; v0++) { if (v1[v0].unk_08.unk_04 == param1) { @@ -1006,7 +1005,7 @@ u32 ov104_0223D3A4(FrontierGraphics *param0, u16 param1) static void ov104_0223D3B0(FrontierGraphics *param0) { int v0; - UnkStruct_ov104_0223D3B0 *v1 = sub_0209B9E0(param0->unk_08); + UnkStruct_ov104_0223D3B0 *v1 = sub_0209B9E0(param0->frontier); UnkStruct_ov104_0223D3B0_1 *v2 = ¶m0->unk_3C; for (v0 = 0; v0 < 8; v0++) { @@ -1038,7 +1037,7 @@ static void ov104_0223D498(FrontierGraphics *param0) UnkStruct_ov104_0223D3B0 *v2; ManagedSprite *v3; - v2 = sub_0209B9E0(param0->unk_08); + v2 = sub_0209B9E0(param0->frontier); v1 = NARC_ctor(NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_OBJ, HEAP_ID_94); for (v0 = 0; v0 < 8; v0++) { @@ -1062,7 +1061,7 @@ static void ov104_0223D498(FrontierGraphics *param0) } NARC_dtor(v1); - sub_0209B9EC(param0->unk_08); + sub_0209B9EC(param0->frontier); } void ov104_0223D554(FrontierGraphics *param0, s16 *param1, s16 *param2) @@ -1076,7 +1075,7 @@ static void ov104_0223D570(UnkStruct_ov104_0223C634 *param0, UnkStruct_ov104_022 *param1 = param0->unk_08; } -static void ov104_0223D584(UnkStruct_0209B75C *param0, int param1, UnkStruct_ov63_0222BEC0 *param2, UnkStruct_ov63_0222CE44 *param3, const UnkStruct_ov104_0223D570 *param4) +static void ov104_0223D584(BattleFrontier *param0, int param1, UnkStruct_ov63_0222BEC0 *param2, UnkStruct_ov63_0222CE44 *param3, const UnkStruct_ov104_0223D570 *param4) { UnkStruct_ov104_0223C634 *v0 = sub_0209B9D4(param0, param1); @@ -1085,7 +1084,7 @@ static void ov104_0223D584(UnkStruct_0209B75C *param0, int param1, UnkStruct_ov6 v0->unk_08 = *param4; } -UnkStruct_ov104_0223C634 *ov104_0223D5A8(UnkStruct_0209B75C *param0, int param1) +UnkStruct_ov104_0223C634 *ov104_0223D5A8(BattleFrontier *param0, int param1) { int v0; UnkStruct_ov104_0223C634 *v1 = sub_0209B9D0(param0); diff --git a/src/overlay104/ov104_0222EA90.c b/src/overlay104/frontier_scenes.c similarity index 64% rename from src/overlay104/ov104_0222EA90.c rename to src/overlay104/frontier_scenes.c index 649d9aa774..a617891588 100644 --- a/src/overlay104/ov104_0222EA90.c +++ b/src/overlay104/frontier_scenes.c @@ -1,7 +1,8 @@ -#include "overlay104/ov104_0222EA90.h" +#include "overlay104/frontier_scenes.h" #include +#include "constants/battle_frontier.h" #include "generated/sdat.h" #include "generated/text_banks.h" @@ -15,12 +16,12 @@ #include "res/field/frontier_scripts/fr_script.naix" -typedef void (*UnkFuncPtr_ov104_0223F394)(FrontierGraphics *, void **); +typedef void (*FrontierSceneSetupDestroyFunc)(FrontierGraphics *, void **); typedef struct FrontierScene { GXBGMode bgMode; - UnkFuncPtr_ov104_0223F394 unk_04; - UnkFuncPtr_ov104_0223F394 unk_08; + FrontierSceneSetupDestroyFunc setupFunc; + FrontierSceneSetupDestroyFunc destroyFunc; u16 scriptID; u16 textBankID; u16 bgmID; @@ -37,28 +38,28 @@ typedef struct FrontierScene { u16 unused; } FrontierScene; -static void ov104_0222EBBC(FrontierGraphics *param0, void **param1); -static void ov104_0222EBCC(FrontierGraphics *param0, void **param1); -static void ov104_0222EBD8(FrontierGraphics *param0, void **param1); -static void ov104_0222EC0C(FrontierGraphics *param0, void **param1); -static void ov104_0222EC18(FrontierGraphics *param0, void **param1); -static void ov104_0222EC1C(FrontierGraphics *param0, void **param1); -static void ov104_0222EC20(FrontierGraphics *param0, void **param1); -static void ov104_0222EC58(FrontierGraphics *param0, void **param1); -static void ov104_0222EC5C(FrontierGraphics *param0, void **param1); -static void ov104_0222EC70(FrontierGraphics *param0, void **param1); -static void ov104_0222EC74(FrontierGraphics *param0, void **param1); -static void ov104_0222EC8C(FrontierGraphics *param0, void **param1); -static void ov104_0222EC90(FrontierGraphics *param0, void **param1); -static void ov104_0222ECA0(FrontierGraphics *param0, void **param1); -static void ov104_0222ECAC(FrontierGraphics *param0, void **param1); -static void ov104_0222ECE4(FrontierGraphics *param0, void **param1); +static void ov104_0222EBBC(FrontierGraphics *graphics, void **sceneData); +static void ov104_0222EBCC(FrontierGraphics *graphics, void **sceneData); +static void BattleHallBattleRoomSceneSetup(FrontierGraphics *graphics, void **sceneData); +static void BattleHallBattleRoomSceneDestroy(FrontierGraphics *graphics, void **sceneData); +static void BattleArcadeCorridorSceneSetup(FrontierGraphics *graphics, void **sceneData); +static void BattleArcadeCorridorSceneDestroy(FrontierGraphics *graphics, void **sceneData); +static void BattleArcadeBattleRoomSceneSetup(FrontierGraphics *graphics, void **sceneData); +static void BattleArcadeBattleRoomSceneDestroy(FrontierGraphics *graphics, void **sceneData); +static void BattleFactoryCorridorSceneSetup(FrontierGraphics *graphics, void **sceneData); +static void BattleFactoryCorridorSceneDestroy(FrontierGraphics *graphics, void **sceneData); +static void BattleFactoryBattleRoomSceneSetup(FrontierGraphics *graphics, void **sceneData); +static void BattleFactoryBattleRoomSceneDestroy(FrontierGraphics *graphics, void **sceneData); +static void ov104_0222EC90(FrontierGraphics *graphics, void **sceneData); +static void ov104_0222ECA0(FrontierGraphics *graphics, void **sceneData); +static void BattleCastleBattleRoomSceneSetup(FrontierGraphics *graphics, void **sceneData); +static void BattleCastleBattleRoomSceneDestroy(FrontierGraphics *graphics, void **sceneData); static const FrontierScene sFrontierScenes[] = { - { + [FRONTIER_SCENE_0] = { .bgMode = GX_BGMODE_0, - ov104_0222EBBC, - ov104_0222EBCC, + .setupFunc = ov104_0222EBBC, + .destroyFunc = ov104_0222EBCC, 0x4, .textBankID = 204, .bgmID = SEQ_BF_TOWWER, @@ -73,10 +74,10 @@ static const FrontierScene sFrontierScenes[] = { .unk_22 = 0, .unk_23 = 1, }, - { + [FRONTIER_SCENE_1] = { .bgMode = GX_BGMODE_0, - NULL, - NULL, + .setupFunc = NULL, + .destroyFunc = NULL, 0x0, .textBankID = 0xCC, .bgmID = SEQ_BF_TOWWER, @@ -91,10 +92,10 @@ static const FrontierScene sFrontierScenes[] = { .unk_22 = 0, .unk_23 = 1, }, - { + [FRONTIER_SCENE_2] = { .bgMode = GX_BGMODE_0, - NULL, - NULL, + .setupFunc = NULL, + .destroyFunc = NULL, 0x5, .textBankID = 206, .bgmID = SEQ_BF_TOWWER, @@ -109,10 +110,10 @@ static const FrontierScene sFrontierScenes[] = { .unk_22 = 0, .unk_23 = 1, }, - { + [FRONTIER_SCENE_FACTORY_CORRIDOR] = { .bgMode = GX_BGMODE_5, - ov104_0222EC5C, - ov104_0222EC70, + .setupFunc = BattleFactoryCorridorSceneSetup, + .destroyFunc = BattleFactoryCorridorSceneDestroy, .scriptID = frontier_scripts_battle_factory, .textBankID = TEXT_BANK_BATTLE_FACTORY_SCENE, .bgmID = SEQ_PL_BF_FACTORY, @@ -127,10 +128,10 @@ static const FrontierScene sFrontierScenes[] = { .unk_22 = 1, .unk_23 = 0, }, - { + [FRONTIER_SCENE_FACTORY_BATTLE_ROOM] = { .bgMode = GX_BGMODE_5, - ov104_0222EC74, - ov104_0222EC8C, + .setupFunc = BattleFactoryBattleRoomSceneSetup, + .destroyFunc = BattleFactoryBattleRoomSceneDestroy, .scriptID = frontier_scripts_battle_factory, .textBankID = TEXT_BANK_BATTLE_FACTORY_SCENE, .bgmID = SEQ_PL_BF_FACTORY, @@ -145,10 +146,10 @@ static const FrontierScene sFrontierScenes[] = { .unk_22 = 1, .unk_23 = 1, }, - { + [FRONTIER_SCENE_TOWER_CORRIDOR] = { .bgMode = GX_BGMODE_5, - NULL, - NULL, + .setupFunc = NULL, + .destroyFunc = NULL, .scriptID = frontier_scripts_battle_tower_corridor, .textBankID = TEXT_BANK_BATTLE_TOWER, .bgmID = SEQ_BF_TOWWER, @@ -163,10 +164,10 @@ static const FrontierScene sFrontierScenes[] = { .unk_22 = 1, .unk_23 = 1, }, - { + [FRONTIER_SCENE_TOWER_MULTI_CORRIDOR] = { .bgMode = GX_BGMODE_5, - NULL, - NULL, + .setupFunc = NULL, + .destroyFunc = NULL, .scriptID = frontier_scripts_battle_tower_corridor_multi, .textBankID = TEXT_BANK_BATTLE_TOWER, .bgmID = SEQ_BF_TOWWER, @@ -181,10 +182,10 @@ static const FrontierScene sFrontierScenes[] = { .unk_22 = 1, .unk_23 = 1, }, - { + [FRONTIER_SCENE_TOWER_BATTLE_ROOM] = { .bgMode = GX_BGMODE_5, - NULL, - NULL, + .setupFunc = NULL, + .destroyFunc = NULL, .scriptID = frontier_scripts_battle_tower_battle_room, .textBankID = TEXT_BANK_BATTLE_TOWER_BATTLE_ROOM, .bgmID = SEQ_BF_TOWWER, @@ -199,10 +200,10 @@ static const FrontierScene sFrontierScenes[] = { .unk_22 = 1, .unk_23 = 1, }, - { + [FRONTIER_SCENE_TOWER_MULTI_BATTLE_ROOM] = { .bgMode = GX_BGMODE_5, - NULL, - NULL, + .setupFunc = NULL, + .destroyFunc = NULL, .scriptID = frontier_scripts_battle_tower_multi_battle_room, .textBankID = TEXT_BANK_BATTLE_TOWER_MULTI_BATTLE_ROOM, .bgmID = SEQ_BF_TOWWER, @@ -217,10 +218,10 @@ static const FrontierScene sFrontierScenes[] = { .unk_22 = 1, .unk_23 = 1, }, - { + [FRONTIER_SCENE_HALL_CORRIDOR] = { .bgMode = GX_BGMODE_5, - NULL, - NULL, + .setupFunc = NULL, + .destroyFunc = NULL, .scriptID = frontier_scripts_battle_hall, .textBankID = TEXT_BANK_BATTLE_HALL_SCENE, .bgmID = SEQ_PL_BF_STAGE, @@ -235,10 +236,10 @@ static const FrontierScene sFrontierScenes[] = { .unk_22 = 1, .unk_23 = 1, }, - { + [FRONTIER_SCENE_HALL_BATTLE_ROOM] = { .bgMode = GX_BGMODE_5, - ov104_0222EBD8, - ov104_0222EC0C, + .setupFunc = BattleHallBattleRoomSceneSetup, + .destroyFunc = BattleHallBattleRoomSceneDestroy, .scriptID = frontier_scripts_battle_hall, .textBankID = TEXT_BANK_BATTLE_HALL_SCENE, .bgmID = SEQ_PL_BF_STAGE, @@ -253,10 +254,10 @@ static const FrontierScene sFrontierScenes[] = { .unk_22 = 1, .unk_23 = 1, }, - { + [FRONTIER_SCENE_CASTLE_CORRIDOR] = { .bgMode = GX_BGMODE_5, - NULL, - NULL, + .setupFunc = NULL, + .destroyFunc = NULL, .scriptID = frontier_scripts_battle_castle, .textBankID = TEXT_BANK_BATTLE_CASTLE_SCENE, .bgmID = SEQ_PL_BF_CASTLE, @@ -271,10 +272,10 @@ static const FrontierScene sFrontierScenes[] = { .unk_22 = 1, .unk_23 = 1, }, - { + [FRONTIER_SCENE_CASTLE_BATTLE_ROOM] = { .bgMode = GX_BGMODE_5, - ov104_0222ECAC, - ov104_0222ECE4, + .setupFunc = BattleCastleBattleRoomSceneSetup, + .destroyFunc = BattleCastleBattleRoomSceneDestroy, .scriptID = frontier_scripts_battle_castle, .textBankID = TEXT_BANK_BATTLE_CASTLE_SCENE, .bgmID = SEQ_PL_BF_CASTLE, @@ -289,10 +290,10 @@ static const FrontierScene sFrontierScenes[] = { .unk_22 = 1, .unk_23 = 1, }, - { + [FRONTIER_SCENE_13] = { .bgMode = GX_BGMODE_5, - NULL, - NULL, + .setupFunc = NULL, + .destroyFunc = NULL, .scriptID = frontier_scripts_battle_castle, .textBankID = TEXT_BANK_BATTLE_CASTLE_SCENE, .bgmID = SEQ_PL_BF_CASTLE, @@ -307,10 +308,10 @@ static const FrontierScene sFrontierScenes[] = { .unk_22 = 1, .unk_23 = 1, }, - { + [FRONTIER_SCENE_14] = { .bgMode = GX_BGMODE_5, - ov104_0222EC90, - ov104_0222ECA0, + .setupFunc = ov104_0222EC90, + .destroyFunc = ov104_0222ECA0, .scriptID = frontier_scripts_unknown_10, .textBankID = TEXT_BANK_UNK_0015, .bgmID = SEQ_BF_TOWWER, @@ -325,10 +326,10 @@ static const FrontierScene sFrontierScenes[] = { .unk_22 = 1, .unk_23 = 1, }, - { + [FRONTIER_SCENE_ARCADE_CORRIDOR] = { .bgMode = GX_BGMODE_5, - ov104_0222EC18, - ov104_0222EC1C, + .setupFunc = BattleArcadeCorridorSceneSetup, + .destroyFunc = BattleArcadeCorridorSceneDestroy, .scriptID = frontier_scripts_battle_arcade, .textBankID = TEXT_BANK_BATTLE_ARCADE_SCENE, .bgmID = SEQ_PL_BF_ROULETTE, @@ -343,10 +344,10 @@ static const FrontierScene sFrontierScenes[] = { .unk_22 = 1, .unk_23 = 1, }, - { + [FRONTIER_SCENE_ARCADE_BATTLE_ROOM] = { .bgMode = GX_BGMODE_5, - ov104_0222EC20, - ov104_0222EC58, + .setupFunc = BattleArcadeBattleRoomSceneSetup, + .destroyFunc = BattleArcadeBattleRoomSceneDestroy, .scriptID = frontier_scripts_battle_arcade, .textBankID = TEXT_BANK_BATTLE_ARCADE_SCENE, .bgmID = SEQ_PL_BF_ROULETTE, @@ -363,148 +364,134 @@ static const FrontierScene sFrontierScenes[] = { }, }; -int GetFrontierSceneValue(int scene, enum FrontierSceneParam sceneParam) +int FrontierScene_GetParam(enum BattleFrontierScene sceneID, enum FrontierSceneParam sceneParam) { switch (sceneParam) { case FR_SCENE_BGMODE: - return sFrontierScenes[scene].bgMode; + return sFrontierScenes[sceneID].bgMode; case FR_SCENE_SCRIPT_ID: - return sFrontierScenes[scene].scriptID; + return sFrontierScenes[sceneID].scriptID; case FR_SCENE_BANK_ID: - return sFrontierScenes[scene].textBankID; + return sFrontierScenes[sceneID].textBankID; case FR_SCENE_BGM_ID: - return sFrontierScenes[scene].bgmID; + return sFrontierScenes[sceneID].bgmID; case FR_SCENE_SCREEN_SIZE: - return sFrontierScenes[scene].screenSize; + return sFrontierScenes[sceneID].screenSize; case FR_SCENE_NARC_ID: - return sFrontierScenes[scene].narcID; + return sFrontierScenes[sceneID].narcID; case FR_SCENE_TILEMAP_IDX: - return sFrontierScenes[scene].tilemapIdx; + return sFrontierScenes[sceneID].tilemapIdx; case FR_SCENE_TILES_IDX: - return sFrontierScenes[scene].tilesIdx; + return sFrontierScenes[sceneID].tilesIdx; case FR_SCENE_PLTT_IDX: - return sFrontierScenes[scene].plttIdx; + return sFrontierScenes[sceneID].plttIdx; case FR_SCENE_SUB_TILEMAP_IDX: - return sFrontierScenes[scene].subTilemapIdx; + return sFrontierScenes[sceneID].subTilemapIdx; case FR_SCENE_SUB_TILES_IDX: - return sFrontierScenes[scene].subTilesIdx; + return sFrontierScenes[sceneID].subTilesIdx; case FR_SCENE_SUB_PLTT_IDX: - return sFrontierScenes[scene].subPlttIdx; + return sFrontierScenes[sceneID].subPlttIdx; case FR_SCENE_FLAG_1: - return sFrontierScenes[scene].unk_22; + return sFrontierScenes[sceneID].unk_22; case FR_SCENE_FLAG_2: - return sFrontierScenes[scene].unk_23; + return sFrontierScenes[sceneID].unk_23; } GF_ASSERT(FALSE); return 0; } -void ov104_0222EB8C(FrontierGraphics *param0, void **param1, int sceneID) +void FrontierScene_CallSetupFunc(FrontierGraphics *graphics, void **sceneData, enum BattleFrontierScene sceneID) { - if (sFrontierScenes[sceneID].unk_04 != NULL) { - sFrontierScenes[sceneID].unk_04(param0, param1); + if (sFrontierScenes[sceneID].setupFunc != NULL) { + sFrontierScenes[sceneID].setupFunc(graphics, sceneData); } } -void ov104_0222EBA4(FrontierGraphics *param0, void **param1, int param2) +void FrontierScene_CallDestroyFunc(FrontierGraphics *graphics, void **sceneData, enum BattleFrontierScene sceneID) { - if (sFrontierScenes[param2].unk_08 != NULL) { - sFrontierScenes[param2].unk_08(param0, param1); + if (sFrontierScenes[sceneID].destroyFunc != NULL) { + sFrontierScenes[sceneID].destroyFunc(graphics, sceneData); } } -static void ov104_0222EBBC(FrontierGraphics *param0, void **param1) +static void ov104_0222EBBC(FrontierGraphics *graphics, void **sceneData) { - *param1 = Heap_Alloc(HEAP_ID_94, 32); + *sceneData = Heap_Alloc(HEAP_ID_94, 32); } -static void ov104_0222EBCC(FrontierGraphics *param0, void **param1) +static void ov104_0222EBCC(FrontierGraphics *graphics, void **sceneData) { - Heap_Free(*param1); + Heap_Free(*sceneData); } -static void ov104_0222EBD8(FrontierGraphics *param0, void **param1) +static void BattleHallBattleRoomSceneSetup(FrontierGraphics *graphics, void **sceneData) { - *param1 = ov104_0223D9E4(param0->bgConfig, param0->plttData); + *sceneData = ov104_0223D9E4(graphics->bgConfig, graphics->plttData); Bg_SetPriority(BG_LAYER_MAIN_0, 1); Bg_SetPriority(BG_LAYER_MAIN_2, 2); Bg_SetPriority(BG_LAYER_MAIN_3, 3); - GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 0); - - return; + GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, FALSE); } -static void ov104_0222EC0C(FrontierGraphics *param0, void **param1) +static void BattleHallBattleRoomSceneDestroy(FrontierGraphics *graphics, void **sceneData) { - ov104_0223DA28(*param1); - return; + ov104_0223DA28(*sceneData); } -static void ov104_0222EC18(FrontierGraphics *param0, void **param1) +static void BattleArcadeCorridorSceneSetup(FrontierGraphics *graphics, void **sceneData) { - return; } -static void ov104_0222EC1C(FrontierGraphics *param0, void **param1) +static void BattleArcadeCorridorSceneDestroy(FrontierGraphics *graphics, void **sceneData) { - return; } -static void ov104_0222EC20(FrontierGraphics *param0, void **param1) +static void BattleArcadeBattleRoomSceneSetup(FrontierGraphics *graphics, void **sceneData) { Bg_SetPriority(BG_LAYER_MAIN_0, 1); Bg_SetPriority(BG_LAYER_MAIN_2, 2); Bg_SetPriority(BG_LAYER_MAIN_3, 3); G2_SetBlendAlpha(GX_BLEND_PLANEMASK_BG0, GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BD, 20, 20); - GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 0); - - return; + GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, FALSE); } -static void ov104_0222EC58(FrontierGraphics *param0, void **param1) +static void BattleArcadeBattleRoomSceneDestroy(FrontierGraphics *graphics, void **sceneData) { - return; } -static void ov104_0222EC5C(FrontierGraphics *param0, void **param1) +static void BattleFactoryCorridorSceneSetup(FrontierGraphics *graphics, void **sceneData) { Bg_SetPriority(BG_LAYER_MAIN_2, 3); Bg_SetPriority(BG_LAYER_MAIN_3, 2); - return; } -static void ov104_0222EC70(FrontierGraphics *param0, void **param1) +static void BattleFactoryCorridorSceneDestroy(FrontierGraphics *graphics, void **sceneData) { - return; } -static void ov104_0222EC74(FrontierGraphics *param0, void **param1) +static void BattleFactoryBattleRoomSceneSetup(FrontierGraphics *graphics, void **sceneData) { G2_SetBlendAlpha(GX_BLEND_PLANEMASK_BG0, GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BD, 20, 20); - return; } -static void ov104_0222EC8C(FrontierGraphics *param0, void **param1) +static void BattleFactoryBattleRoomSceneDestroy(FrontierGraphics *graphics, void **sceneData) { - return; } -static void ov104_0222EC90(FrontierGraphics *param0, void **param1) +static void ov104_0222EC90(FrontierGraphics *graphics, void **sceneData) { - *param1 = ov104_0223C164(param0->bgConfig); - return; + *sceneData = ov104_0223C164(graphics->bgConfig); } -static void ov104_0222ECA0(FrontierGraphics *param0, void **param1) +static void ov104_0222ECA0(FrontierGraphics *graphics, void **sceneData) { - ov104_0223C23C(*param1); - return; + ov104_0223C23C(*sceneData); } -static void ov104_0222ECAC(FrontierGraphics *param0, void **param1) +static void BattleCastleBattleRoomSceneSetup(FrontierGraphics *graphics, void **sceneData) { Bg_SetPriority(BG_LAYER_MAIN_1, 0); Bg_SetPriority(BG_LAYER_MAIN_0, 2); @@ -512,10 +499,8 @@ static void ov104_0222ECAC(FrontierGraphics *param0, void **param1) Bg_SetPriority(BG_LAYER_MAIN_3, 3); G2_SetBlendAlpha(GX_BLEND_PLANEMASK_BG0, GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BD, 20, 20); - return; } -static void ov104_0222ECE4(FrontierGraphics *param0, void **param1) +static void BattleCastleBattleRoomSceneDestroy(FrontierGraphics *graphics, void **sceneData) { - return; } diff --git a/src/overlay104/frontier_script_manager.c b/src/overlay104/frontier_script_manager.c index 259e5c05b5..98562c0fdb 100644 --- a/src/overlay104/frontier_script_manager.c +++ b/src/overlay104/frontier_script_manager.c @@ -2,21 +2,21 @@ #include -#include "struct_decls/struct_0209B75C_decl.h" +#include "struct_decls/battle_frontier_decl.h" #include "overlay104/defs.h" +#include "overlay104/frontier_scenes.h" #include "overlay104/frontier_script_context.h" #include "overlay104/frscrcmd.h" -#include "overlay104/ov104_0222EA90.h" #include "overlay104/ov104_0223D860.h" #include "overlay104/struct_ov104_0222E8C8.h" +#include "battle_frontier.h" #include "heap.h" #include "message.h" #include "narc.h" #include "string_gf.h" #include "string_template.h" -#include "unk_0209B6F8.h" static BOOL FrontierScriptManager_SetContext(FrontierScriptManager *scriptMan, FrontierScriptContext *ctx); static void FrontierScriptContext_Free(FrontierScriptManager *scriptMan, FrontierScriptContext *ctx); @@ -24,12 +24,12 @@ static void Dummy(FrontierScriptManager *scriptMan, u16 scene, u32 *null1, void static void FrontierScriptManager_LoadScriptData(u8 **script, MessageLoader **msgLoader, int scene, enum HeapID heapID); static void FrontierScriptContext_JumpToOffsetID(FrontierScriptContext *ctx, int offsetID); -FrontierScriptManager *FrontierScriptManager_New(UnkStruct_0209B75C *param0, enum HeapID heapID, int scene) +FrontierScriptManager *FrontierScriptManager_New(BattleFrontier *frontier, enum HeapID heapID, int scene) { FrontierScriptManager *scriptMan = Heap_Alloc(heapID, sizeof(FrontierScriptManager)); MI_CpuClear8(scriptMan, sizeof(FrontierScriptManager)); - scriptMan->unk_00 = param0; + scriptMan->frontier = frontier; scriptMan->heapID = heapID; scriptMan->scene = scene; @@ -44,7 +44,7 @@ FrontierScriptManager *FrontierScriptManager_New(UnkStruct_0209B75C *param0, enu return scriptMan; } -BOOL ov104_0222E6A8(FrontierScriptManager *scriptMan) +BOOL FrontierScriptManager_RunScript(FrontierScriptManager *scriptMan) { if (scriptMan->numSetContexts == 0) { return TRUE; @@ -55,7 +55,7 @@ BOOL ov104_0222E6A8(FrontierScriptManager *scriptMan) FrontierScriptContext *ctx = scriptMan->ctx[i]; if (ctx != NULL) { - if (FrontierScriptContext_Run(ctx) == 0) { + if (!FrontierScriptContext_Run(ctx)) { FrontierScriptContext_Free(scriptMan, ctx); scriptMan->ctx[i] = NULL; scriptMan->numSetContexts--; @@ -63,7 +63,7 @@ BOOL ov104_0222E6A8(FrontierScriptManager *scriptMan) } } - ov104_0223D8C4(scriptMan->unk_00); + ov104_0223D8C4(scriptMan->frontier); } return scriptMan->numSetContexts == 0; @@ -136,8 +136,8 @@ static void Dummy(FrontierScriptManager *scriptMan, u16 scene, u32 *null1, void static void FrontierScriptManager_LoadScriptData(u8 **script, MessageLoader **msgLoader, int scene, enum HeapID heapID) { - int scriptID = GetFrontierSceneValue(scene, FR_SCENE_SCRIPT_ID); - int bankID = GetFrontierSceneValue(scene, FR_SCENE_BANK_ID); + int scriptID = FrontierScene_GetParam(scene, FR_SCENE_SCRIPT_ID); + int bankID = FrontierScene_GetParam(scene, FR_SCENE_BANK_ID); *script = NARC_AllocAndReadWholeMemberByIndexPair(NARC_INDEX_FRONTIER__SCRIPT__FR_SCRIPT, scriptID, heapID); *msgLoader = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, bankID, heapID); @@ -145,8 +145,8 @@ static void FrontierScriptManager_LoadScriptData(u8 **script, MessageLoader **ms void FrontierScriptManager_UpdateMessageLoader(FrontierScriptManager *scriptMan, int scene, enum HeapID heapID) { - int currentBankID = GetFrontierSceneValue(scriptMan->scene, FR_SCENE_BANK_ID); - int newBankID = GetFrontierSceneValue(scene, FR_SCENE_BANK_ID); + int currentBankID = FrontierScene_GetParam(scriptMan->scene, FR_SCENE_BANK_ID); + int newBankID = FrontierScene_GetParam(scene, FR_SCENE_BANK_ID); if (currentBankID == newBankID) { return; @@ -195,5 +195,5 @@ u16 *ov104_0222E91C(FrontierScriptManager *param0, int param1) FrontierGraphics *FrontierScriptManager_GetGraphics(FrontierScriptManager *scriptMan) { - return sub_0209B974(scriptMan->unk_00); + return BattleFrontier_GetGraphics(scriptMan->frontier); } diff --git a/src/overlay104/frscrcmd.c b/src/overlay104/frscrcmd.c index e7e5dbde2a..4fb1297abe 100644 --- a/src/overlay104/frscrcmd.c +++ b/src/overlay104/frscrcmd.c @@ -49,6 +49,7 @@ #include "overlay104/struct_ov104_0223F1B4.h" #include "savedata/save_table.h" +#include "battle_frontier.h" #include "battle_frontier_stats.h" #include "bg_window.h" #include "brightness_controller.h" @@ -87,7 +88,6 @@ #include "unk_0202F1D4.h" #include "unk_02033200.h" #include "unk_020363E8.h" -#include "unk_0209B6F8.h" #include "vars_flags.h" #include "wifi_list.h" @@ -364,7 +364,7 @@ static BOOL FrontierScrCmd_End(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_02(FrontierScriptContext *ctx) { FrontierScriptContext_Stop(ctx); - sub_0209B9B4(ctx->scriptMan->unk_00); + sub_0209B9B4(ctx->scriptMan->frontier); return FALSE; } @@ -372,9 +372,9 @@ static BOOL FrontierScrCmd_02(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_03(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - u16 v1 = FrontierScriptContext_GetVar(ctx); + u16 sceneID = FrontierScriptContext_GetVar(ctx); - sub_0209B9BC(v0->unk_00, v1, 0xFFFF); + sub_0209B9BC(v0->frontier, sceneID, 0xFFFF); FrontierScriptContext_Pause(ctx, Resume); return TRUE; @@ -388,10 +388,10 @@ static BOOL Resume(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_04(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - u16 v1 = FrontierScriptContext_GetVar(ctx); + u16 sceneID = FrontierScriptContext_GetVar(ctx); u16 v2 = FrontierScriptContext_GetVar(ctx); - sub_0209B9BC(v0->unk_00, v1, v2); + sub_0209B9BC(v0->frontier, sceneID, v2); FrontierScriptContext_Stop(ctx); return FALSE; @@ -754,7 +754,7 @@ static BOOL WaitForYesNoResult(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_22(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - FrontierGraphics *v1 = sub_0209B974(v0->unk_00); + FrontierGraphics *v1 = BattleFrontier_GetGraphics(v0->frontier); const u8 *currScriptPtr; UnkStruct_ov104_0223C688 v3; s32 offset = FrontierScriptContext_ReadWord(ctx); @@ -772,8 +772,8 @@ static BOOL FrontierScrCmd_22(FrontierScriptContext *ctx) v3.unk_02 = FrontierScriptContext_ReadByte(ctx); if (v3.unk_00 == 0xEEEE) { - UnkStruct_ov104_02230BE4 *v6 = sub_0209B970(v0->unk_00); - const TrainerInfo *trainerInfo = SaveData_GetTrainerInfo(v6->saveData); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(v0->frontier); + const TrainerInfo *trainerInfo = SaveData_GetTrainerInfo(fieldData->saveData); v3.unk_00 = BattleFrontier_GetPlayerObjEventGfx(trainerInfo); ov104_0223D0EC(v1, &v3); @@ -802,7 +802,7 @@ static BOOL FrontierScrCmd_22(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_23(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - FrontierGraphics *v1 = sub_0209B974(v0->unk_00); + FrontierGraphics *v1 = BattleFrontier_GetGraphics(v0->frontier); u16 v2 = FrontierScriptContext_GetVar(ctx); ov104_0223D148(v1, v2); @@ -812,7 +812,7 @@ static BOOL FrontierScrCmd_23(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_24(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - FrontierGraphics *v1 = sub_0209B974(v0->unk_00); + FrontierGraphics *v1 = BattleFrontier_GetGraphics(v0->frontier); const u8 *currScriptPtr; s32 offset = FrontierScriptContext_ReadWord(ctx); UnkStruct_ov104_0223D570 v4; @@ -840,10 +840,10 @@ static BOOL FrontierScrCmd_24(FrontierScriptContext *ctx) if (v4.unk_00 == 0xEEEE) { const TrainerInfo *trainerInfo; - UnkStruct_ov104_02230BE4 *v7; + FieldFrontierDTO *fieldData; - v7 = sub_0209B970(v0->unk_00); - trainerInfo = SaveData_GetTrainerInfo(v7->saveData); + fieldData = BattleFrontier_GetFieldData(v0->frontier); + trainerInfo = SaveData_GetTrainerInfo(fieldData->saveData); v4.unk_00 = BattleFrontier_GetPlayerObjEventGfx(trainerInfo); v5 = (32 - 1); } else if (v4.unk_00 == 0xEEEF) { @@ -864,7 +864,7 @@ static BOOL FrontierScrCmd_24(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_25(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - FrontierGraphics *v1 = sub_0209B974(v0->unk_00); + FrontierGraphics *v1 = BattleFrontier_GetGraphics(v0->frontier); UnkStruct_ov63_0222BEC0 *v2; u16 v3 = FrontierScriptContext_GetVar(ctx); v2 = ov63_0222BF18(v1->unk_14, v3); @@ -877,7 +877,7 @@ static BOOL FrontierScrCmd_25(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_26(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - FrontierGraphics *v1 = sub_0209B974(v0->unk_00); + FrontierGraphics *v1 = BattleFrontier_GetGraphics(v0->frontier); u16 v2 = FrontierScriptContext_GetVar(ctx); u8 v3 = FrontierScriptContext_ReadByte(ctx); UnkStruct_ov63_0222CE44 *v4 = NULL; @@ -897,10 +897,10 @@ static BOOL FrontierScrCmd_Dummy27(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_ApplyMovement(FrontierScriptContext *ctx) { FrontierScriptManager *scriptMan = ctx->scriptMan; - FrontierGraphics *graphics = sub_0209B974(scriptMan->unk_00); + FrontierGraphics *graphics = BattleFrontier_GetGraphics(scriptMan->frontier); u16 localID = FrontierScriptContext_GetVar(ctx); u32 offset = FrontierScriptContext_ReadWord(ctx); - UnkStruct_ov104_0223C634 *object = ov104_0223D5A8(scriptMan->unk_00, localID); + UnkStruct_ov104_0223C634 *object = ov104_0223D5A8(scriptMan->frontier, localID); if (object == NULL) { GF_ASSERT(FALSE); @@ -944,7 +944,7 @@ static BOOL WaitForMovement(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_2A(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - FrontierGraphics *v1 = sub_0209B974(v0->unk_00); + FrontierGraphics *v1 = BattleFrontier_GetGraphics(v0->frontier); const u8 *currScriptPtr; s32 offset = FrontierScriptContext_ReadWord(ctx); u16 v4; @@ -974,7 +974,7 @@ static BOOL FrontierScrCmd_2A(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_2B(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - FrontierGraphics *v1 = sub_0209B974(v0->unk_00); + FrontierGraphics *v1 = BattleFrontier_GetGraphics(v0->frontier); u16 v2 = FrontierScriptContext_GetVar(ctx); ov104_0223D7EC(v1->spriteMan, v2); @@ -986,7 +986,7 @@ static BOOL FrontierScrCmd_2B(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_2C(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - FrontierGraphics *v1 = sub_0209B974(v0->unk_00); + FrontierGraphics *v1 = BattleFrontier_GetGraphics(v0->frontier); const u8 *currScriptPtr; s32 offset = FrontierScriptContext_ReadWord(ctx); u16 v4, x, y, draw, v8, v9; @@ -1023,7 +1023,7 @@ static BOOL FrontierScrCmd_2D(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; u16 v1; - FrontierGraphics *v2 = sub_0209B974(v0->unk_00); + FrontierGraphics *v2 = BattleFrontier_GetGraphics(v0->frontier); v1 = FrontierScriptContext_GetVar(ctx); ov104_0223D348(v2, v1); @@ -1034,7 +1034,7 @@ static BOOL FrontierScrCmd_2D(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_2E(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - FrontierGraphics *v1 = sub_0209B974(v0->unk_00); + FrontierGraphics *v1 = BattleFrontier_GetGraphics(v0->frontier); u16 v2 = FrontierScriptContext_GetVar(ctx); u8 draw = FrontierScriptContext_ReadByte(ctx); ManagedSprite *managedSprite = ov104_0223D370(v1, v2); @@ -1048,7 +1048,7 @@ static BOOL FrontierScrCmd_2E(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_2F(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - FrontierGraphics *v1 = sub_0209B974(v0->unk_00); + FrontierGraphics *v1 = BattleFrontier_GetGraphics(v0->frontier); u16 v2 = FrontierScriptContext_GetVar(ctx); ManagedSprite *managedSprite = ov104_0223D370(v1, v2); @@ -1062,7 +1062,7 @@ static BOOL FrontierScrCmd_30(FrontierScriptContext *ctx) { ManagedSprite *managedSprite; FrontierScriptManager *v1 = ctx->scriptMan; - FrontierGraphics *v2 = sub_0209B974(v1->unk_00); + FrontierGraphics *v2 = BattleFrontier_GetGraphics(v1->frontier); u16 v3 = FrontierScriptContext_GetVar(ctx); u16 v4 = FrontierScriptContext_GetVar(ctx); @@ -1083,7 +1083,7 @@ static BOOL FrontierScrCmd_31(FrontierScriptContext *ctx) u16 v0 = FrontierScriptContext_GetVar(ctx); u16 animID = FrontierScriptContext_GetVar(ctx); ManagedSprite *managedSprite; - FrontierGraphics *v3 = sub_0209B974(ctx->scriptMan->unk_00); + FrontierGraphics *v3 = BattleFrontier_GetGraphics(ctx->scriptMan->frontier); managedSprite = ov104_0223D370(v3, v0); @@ -1096,7 +1096,7 @@ static BOOL FrontierScrCmd_31(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_32(FrontierScriptContext *ctx) { u16 v0 = FrontierScriptContext_GetVar(ctx); - FrontierGraphics *v1 = sub_0209B974(ctx->scriptMan->unk_00); + FrontierGraphics *v1 = BattleFrontier_GetGraphics(ctx->scriptMan->frontier); ov104_0223D378(v1, v0, 0); return FALSE; @@ -1115,7 +1115,7 @@ static BOOL FrontierScrCmd_33(FrontierScriptContext *ctx) static BOOL ov104_02230850(FrontierScriptContext *ctx) { ManagedSprite *managedSprite; - FrontierGraphics *v1 = sub_0209B974(ctx->scriptMan->unk_00); + FrontierGraphics *v1 = BattleFrontier_GetGraphics(ctx->scriptMan->frontier); managedSprite = ov104_0223D370(v1, ctx->data[0]); @@ -1142,14 +1142,14 @@ static void ov104_0223088C(FrontierScriptContext *ctx, int param1, int param2) v1[v3] = FrontierScriptContext_GetVar(ctx); } - ov104_0223D860(v0->unk_00, v2, 1, v1, 3); + ov104_0223D860(v0->frontier, v2, 1, v1, 3); Heap_Free(v1); } static BOOL FrontierScrCmd_53(FrontierScriptContext *ctx) { u16 v0 = FrontierScriptContext_GetVar(ctx); - ov104_0223D860(ctx->scriptMan->unk_00, v0, 0, NULL, 0); + ov104_0223D860(ctx->scriptMan->frontier, v0, 0, NULL, 0); return FALSE; } @@ -1162,10 +1162,10 @@ static BOOL FrontierScrCmd_54(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_34(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v1 = sub_0209B970(ctx->scriptMan->unk_00); - void *namingScreenArgs = NamingScreenArgs_Init(HEAP_ID_FIELD2, NAMING_SCREEN_TYPE_PLAYER, 0, 8, (void *)v1->options); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); + void *namingScreenArgs = NamingScreenArgs_Init(HEAP_ID_FIELD2, NAMING_SCREEN_TYPE_PLAYER, 0, 8, (void *)fieldData->options); - sub_0209B988(ctx->scriptMan->unk_00, &gNamingScreenAppTemplate, namingScreenArgs, 0, ov104_02230950); + sub_0209B988(ctx->scriptMan->frontier, &gNamingScreenAppTemplate, namingScreenArgs, 0, ov104_02230950); return TRUE; } @@ -1178,9 +1178,9 @@ static void ov104_02230950(void *namingScreenArgs) static BOOL FrontierScrCmd_InitNewBattleRecording(FrontierScriptContext *ctx) { int resultCode; - UnkStruct_ov104_02230BE4 *v1 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); - BattleRecording_New(v1->saveData, HEAP_ID_FIELD2, &resultCode); + BattleRecording_New(fieldData->saveData, HEAP_ID_FIELD2, &resultCode); return FALSE; } @@ -1209,8 +1209,8 @@ static BOOL FrontierScrCmd_6D(FrontierScriptContext *ctx) static BOOL ov104_022309DC(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - UnkStruct_ov104_02230BE4 *v1 = sub_0209B970(ctx->scriptMan->unk_00); - int v2 = sub_0202F41C(v1->saveData, v0->unk_B4, v0->unk_B6, 0, &v0->unk_B0, &v0->unk_B2); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); + int v2 = sub_0202F41C(fieldData->saveData, v0->unk_B4, v0->unk_B6, 0, &v0->unk_B0, &v0->unk_B2); if ((v2 == 2) || (v2 == 3)) { if (v2 == 2) { @@ -1346,14 +1346,14 @@ static BOOL FrontierScrCmd_6E(FrontierScriptContext *ctx) { int v0; FieldBattleDTO *dto; - UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); dto = Heap_Alloc(HEAP_ID_FIELD2, sizeof(FieldBattleDTO)); MI_CpuClear8(dto, sizeof(FieldBattleDTO)); - sub_0202F298(v2->saveData, 11, &v0, dto, 0); + sub_0202F298(fieldData->saveData, 11, &v0, dto, 0); Sound_SetSceneAndPlayBGM(SOUND_SCENE_BATTLE, SEQ_BATTLE_TRAINER, 1); - sub_0209B988(ctx->scriptMan->unk_00, &gBattleApplicationTemplate, dto, 1, NULL); + sub_0209B988(ctx->scriptMan->frontier, &gBattleApplicationTemplate, dto, 1, NULL); return TRUE; } @@ -1367,30 +1367,30 @@ static BOOL FrontierScrCmd_FreeBattleRecording(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_70(FrontierScriptContext *ctx) { int v0; - UnkStruct_ov104_02230BE4 *v1 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); u16 *v2 = FrontierScriptContext_TryGetVarPointer(ctx); - *v2 = sub_0202F330(v1->saveData, 11, &v0, 0); + *v2 = sub_0202F330(fieldData->saveData, 11, &v0, 0); return FALSE; } static BOOL FrontierScrCmd_72(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v0 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); u16 *unused = FrontierScriptContext_TryGetVarPointer(ctx); - SaveData_Save(v0->saveData); + SaveData_Save(fieldData->saveData); return FALSE; } static BOOL FrontierScrCmd_73(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - UnkStruct_ov104_02230BE4 *v1 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); u16 *v2 = FrontierScriptContext_TryGetVarPointer(ctx); ResetLock(RESET_LOCK_SOFT_RESET); InitHeapCanary(v0->heapID); - SaveData_SaveStateInit(v1->saveData, 2); + SaveData_SaveStateInit(fieldData->saveData, 2); FrontierScriptContext_Pause(ctx, WaitForSaveStateFinish); return TRUE; @@ -1398,8 +1398,8 @@ static BOOL FrontierScrCmd_73(FrontierScriptContext *ctx) static BOOL WaitForSaveStateFinish(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v1 = sub_0209B970(ctx->scriptMan->unk_00); - int saveResult = SaveData_SaveStateMain(v1->saveData); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); + int saveResult = SaveData_SaveStateMain(fieldData->saveData); if (saveResult == SAVE_RESULT_OK) { FreeHeapCanary(); @@ -1418,18 +1418,18 @@ static BOOL WaitForSaveStateFinish(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_SaveDataExtraInit(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v0 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); - SaveDataExtra_Init(v0->saveData); + SaveDataExtra_Init(fieldData->saveData); return FALSE; } static BOOL FrontierScrCmd_GetMiscSaveBlockInitFlag(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v0 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); u16 *destVar = FrontierScriptContext_TryGetVarPointer(ctx); - *destVar = SaveData_MiscSaveBlock_InitFlag(v0->saveData); + *destVar = SaveData_MiscSaveBlock_InitFlag(fieldData->saveData); return FALSE; } @@ -1490,16 +1490,16 @@ static u16 GetNumberDigitCount(u32 number) static BOOL FrontierScrCmd_BufferPlayerName(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v0 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); u8 templateArg = FrontierScriptContext_ReadByte(ctx); - StringTemplate_SetPlayerName(ctx->scriptMan->strTemplate, templateArg, SaveData_GetTrainerInfo(v0->saveData)); + StringTemplate_SetPlayerName(ctx->scriptMan->strTemplate, templateArg, SaveData_GetTrainerInfo(fieldData->saveData)); return FALSE; } static BOOL FrontierScrCmd_BufferPartnerName(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v0 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); u8 templateArg = FrontierScriptContext_ReadByte(ctx); StringTemplate_SetPlayerName(ctx->scriptMan->strTemplate, templateArg, CommInfo_TrainerInfo(CommSys_CurNetId() ^ 1)); @@ -1548,44 +1548,44 @@ static BOOL FrontierScrCmd_BufferTypeName(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_BufferRivalName(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v0 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); u8 templateArg = FrontierScriptContext_ReadByte(ctx); - StringTemplate_SetRivalName(ctx->scriptMan->strTemplate, templateArg, v0->saveData); + StringTemplate_SetRivalName(ctx->scriptMan->strTemplate, templateArg, fieldData->saveData); return FALSE; } static BOOL FrontierScrCmd_GetNumBattlePoints(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v0 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); u16 *destVar = FrontierScriptContext_TryGetVarPointer(ctx); - *destVar = BattlePoints_ApplyFuncAndGet(sub_0202D750(v0->saveData), 0, BATTLE_POINTS_FUNC_NONE); + *destVar = BattlePoints_ApplyFuncAndGet(sub_0202D750(fieldData->saveData), 0, BATTLE_POINTS_FUNC_NONE); return FALSE; } static BOOL FrontierScrCmd_GiveBattlePoints(FrontierScriptContext *ctx) { TVBroadcast *broadcast; - UnkStruct_ov104_02230BE4 *v1 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); u16 battlePoints = FrontierScriptContext_GetVar(ctx); - broadcast = SaveData_GetTVBroadcast(v1->saveData); + broadcast = SaveData_GetTVBroadcast(fieldData->saveData); sub_0206D0C8(broadcast, battlePoints); - GameRecords_AddToRecordValue(SaveData_GetGameRecords(v1->saveData), RECORD_BATTLE_POINTS_RECEIVED, battlePoints); - BattlePoints_ApplyFuncAndGet(sub_0202D750(v1->saveData), battlePoints, BATTLE_POINTS_FUNC_ADD); + GameRecords_AddToRecordValue(SaveData_GetGameRecords(fieldData->saveData), RECORD_BATTLE_POINTS_RECEIVED, battlePoints); + BattlePoints_ApplyFuncAndGet(sub_0202D750(fieldData->saveData), battlePoints, BATTLE_POINTS_FUNC_ADD); return FALSE; } static BOOL FrontierScrCmd_RemoteBattlePoints(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v0 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); u16 battlePoints = FrontierScriptContext_GetVar(ctx); - GameRecords_AddToRecordValue(SaveData_GetGameRecords(v0->saveData), RECORD_BATTLE_POINTS_SPENT, battlePoints); - BattlePoints_ApplyFuncAndGet(sub_0202D750(v0->saveData), battlePoints, BATTLE_POINTS_FUNC_SUB); + GameRecords_AddToRecordValue(SaveData_GetGameRecords(fieldData->saveData), RECORD_BATTLE_POINTS_SPENT, battlePoints); + BattlePoints_ApplyFuncAndGet(sub_0202D750(fieldData->saveData), battlePoints, BATTLE_POINTS_FUNC_SUB); return FALSE; } @@ -1645,8 +1645,8 @@ static BOOL FrontierScrCmd_GetRandom(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_HealParty(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v0 = sub_0209B970(ctx->scriptMan->unk_00); - Party_HealAllMembers(SaveData_GetParty(v0->saveData)); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); + Party_HealAllMembers(SaveData_GetParty(fieldData->saveData)); return FALSE; } @@ -1690,9 +1690,9 @@ BOOL FrontierScrCmd_SetSystemVar(FrontierScriptContext *ctx) { u16 destVarID = FrontierScriptContext_ReadHalfWord(ctx); u16 value = FrontierScriptContext_GetVar(ctx); - UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); - u16 *destVar = VarsFlags_GetVarAddress(SaveData_GetVarsFlags(v3->saveData), destVarID); + u16 *destVar = VarsFlags_GetVarAddress(SaveData_GetVarsFlags(fieldData->saveData), destVarID); *destVar = value; return FALSE; @@ -1702,9 +1702,9 @@ BOOL FrontierScrCmd_GetSystemVar(FrontierScriptContext *ctx) { u16 srcVarID = FrontierScriptContext_ReadHalfWord(ctx); u16 *dest = FrontierScriptContext_TryGetVarPointer(ctx); - UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); - u16 *srcVar = VarsFlags_GetVarAddress(SaveData_GetVarsFlags(v3->saveData), srcVarID); + u16 *srcVar = VarsFlags_GetVarAddress(SaveData_GetVarsFlags(fieldData->saveData), srcVarID); *dest = *srcVar; return FALSE; @@ -2146,21 +2146,21 @@ static BOOL ov104_022319CC(UnkStruct_ov104_02231148 *param0) static BOOL FrontierScrCmd_3F(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v0; + FieldFrontierDTO *fieldData; UnkStruct_ov104_02231148 *v1; - v0 = sub_0209B970(ctx->scriptMan->unk_00); + fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); ctx->data[0] = FrontierScriptContext_GetVar(ctx); Sound_SetSceneAndPlayBGM(SOUND_SCENE_BATTLE, SEQ_BATTLE_TRAINER, 1); v1 = Heap_Alloc(HEAP_ID_FIELD2, sizeof(UnkStruct_ov104_02231148)); - v1->unk_14 = sub_0209B978(ctx->scriptMan->unk_00); + v1->unk_14 = sub_0209B978(ctx->scriptMan->frontier); v1->unk_04 = 0; v1->unk_08 = ctx->data[0]; v1->unk_00 = FrontierScriptManager_GetGraphics(ctx->scriptMan); - sub_0209B980(ctx->scriptMan->unk_00, v1); + sub_0209B980(ctx->scriptMan->frontier, v1); FrontierScriptContext_Pause(ctx, ov104_02231AA8); PaletteData_FillBufferRange(v1->unk_00->plttData, 0, 2, 0x0, 0, 1); @@ -2170,14 +2170,14 @@ static BOOL FrontierScrCmd_3F(FrontierScriptContext *ctx) static BOOL ov104_02231AA8(FrontierScriptContext *ctx) { BOOL v0; - UnkStruct_ov104_02231148 *v1 = sub_0209B978(ctx->scriptMan->unk_00); + UnkStruct_ov104_02231148 *v1 = sub_0209B978(ctx->scriptMan->frontier); v0 = Unk_ov104_0223F65C[v1->unk_08](v1); if (v0 == 0) { SetScreenColorBrightness(DS_SCREEN_MAIN, COLOR_BLACK); SetScreenColorBrightness(DS_SCREEN_SUB, COLOR_BLACK); - sub_0209B980(ctx->scriptMan->unk_00, v1->unk_14); + sub_0209B980(ctx->scriptMan->frontier, v1->unk_14); Heap_Free(v1); } @@ -2187,12 +2187,12 @@ static BOOL ov104_02231AA8(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_GetPlayerObjEventGfx(FrontierScriptContext *ctx) { u16 objEventGfx; - UnkStruct_ov104_02230BE4 *v1; + FieldFrontierDTO *fieldData; u16 *destVar = FrontierScriptContext_TryGetVarPointer(ctx); - v1 = sub_0209B970(ctx->scriptMan->unk_00); + fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); - if (TrainerInfo_Gender(SaveData_GetTrainerInfo(v1->saveData)) == GENDER_MALE) { + if (TrainerInfo_Gender(SaveData_GetTrainerInfo(fieldData->saveData)) == GENDER_MALE) { objEventGfx = OBJ_EVENT_GFX_PLAYER_M; } else { objEventGfx = OBJ_EVENT_GFX_PLAYER_F; @@ -2205,7 +2205,7 @@ static BOOL FrontierScrCmd_GetPlayerObjEventGfx(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_InitParticleSystem(FrontierScriptContext *ctx) { FrontierScriptManager *scriptMan = ctx->scriptMan; - FrontierGraphics *graphics = sub_0209B974(scriptMan->unk_00); + FrontierGraphics *graphics = BattleFrontier_GetGraphics(scriptMan->frontier); u16 index = FrontierScriptContext_GetVar(ctx); u16 narcIdx = FrontierScriptContext_GetVar(ctx); u16 projection = FrontierScriptContext_GetVar(ctx); @@ -2218,7 +2218,7 @@ static BOOL FrontierScrCmd_InitParticleSystem(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_FreeParticleSystem(FrontierScriptContext *ctx) { FrontierScriptManager *scriptMan = ctx->scriptMan; - FrontierGraphics *graphics = sub_0209B974(scriptMan->unk_00); + FrontierGraphics *graphics = BattleFrontier_GetGraphics(scriptMan->frontier); u16 index = FrontierScriptContext_GetVar(ctx); FrontierParticleSystem_FreeParticleSystem(graphics->particleSys, index); @@ -2228,7 +2228,7 @@ static BOOL FrontierScrCmd_FreeParticleSystem(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_CreateParticleSystemEmitter(FrontierScriptContext *ctx) { FrontierScriptManager *scriptMan = ctx->scriptMan; - FrontierGraphics *graphics = sub_0209B974(scriptMan->unk_00); + FrontierGraphics *graphics = BattleFrontier_GetGraphics(scriptMan->frontier); u16 index = FrontierScriptContext_GetVar(ctx); u16 resourceID = FrontierScriptContext_GetVar(ctx); ParticleSystem *particleSystem = FrontierParticleSystem_GetParticleSystem(graphics->particleSys, index); @@ -2247,7 +2247,7 @@ static BOOL FrontierScrCmd_WaitForParticleSystemEmitters(FrontierScriptContext * static BOOL WaitForEmitters(FrontierScriptContext *ctx) { FrontierScriptManager *scriptMan = ctx->scriptMan; - FrontierGraphics *graphics = sub_0209B974(scriptMan->unk_00); + FrontierGraphics *graphics = BattleFrontier_GetGraphics(scriptMan->frontier); return FrontierParticleSystem_NoActiveEmitters(graphics->particleSys) == TRUE; } @@ -2255,7 +2255,7 @@ static BOOL WaitForEmitters(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_4C(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - FrontierGraphics *v1 = sub_0209B974(v0->unk_00); + FrontierGraphics *v1 = BattleFrontier_GetGraphics(v0->frontier); u16 v2, v3, v4, v5; UnkStruct_ov104_0223319C *v6 = &v1->unk_A4; @@ -2289,7 +2289,7 @@ static BOOL FrontierScrCmd_4D(FrontierScriptContext *ctx) static BOOL ov104_02231C54(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - FrontierGraphics *v1 = sub_0209B974(v0->unk_00); + FrontierGraphics *v1 = BattleFrontier_GetGraphics(v0->frontier); if (v1->unk_A4.unk_00 == NULL) { return TRUE; @@ -2301,7 +2301,7 @@ static BOOL ov104_02231C54(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_4E(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - FrontierGraphics *v1 = sub_0209B974(v0->unk_00); + FrontierGraphics *v1 = BattleFrontier_GetGraphics(v0->frontier); u16 v2, v3, v4, v5; UnkStruct_ov104_022331E8 *v6 = &v1->unk_B0; @@ -2332,7 +2332,7 @@ static BOOL FrontierScrCmd_4F(FrontierScriptContext *ctx) static BOOL ov104_02231CF4(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - FrontierGraphics *v1 = sub_0209B974(v0->unk_00); + FrontierGraphics *v1 = BattleFrontier_GetGraphics(v0->frontier); if (v1->unk_B0.unk_00 == NULL) { return TRUE; @@ -2352,7 +2352,7 @@ static BOOL FrontierScrCmd_45(FrontierScriptContext *ctx) { Party *party; Pokemon *mon; - UnkStruct_ov104_02230BE4 *v2; + FieldFrontierDTO *fieldData; FrontierGraphics *v3 = FrontierScriptManager_GetGraphics(ctx->scriptMan); u16 slot = FrontierScriptContext_GetVar(ctx); u16 x = FrontierScriptContext_GetVar(ctx); @@ -2361,8 +2361,8 @@ static BOOL FrontierScrCmd_45(FrontierScriptContext *ctx) u16 blendFraction = FrontierScriptContext_ReadHalfWord(ctx); u16 blendTarget = FrontierScriptContext_ReadHalfWord(ctx); - v2 = sub_0209B970(ctx->scriptMan->unk_00); - party = SaveData_GetParty(v2->saveData); + fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); + party = SaveData_GetParty(fieldData->saveData); mon = Party_GetPokemonBySlotIndex(party, slot); blendFraction = 8; blendTarget = GX_RGB(0, 0, 0); @@ -2397,7 +2397,7 @@ static BOOL FrontierScrCmd_47(FrontierScriptContext *ctx) static BOOL ov104_02231E14(FrontierScriptContext *ctx) { FrontierScriptManager *v0 = ctx->scriptMan; - FrontierGraphics *v1 = sub_0209B974(v0->unk_00); + FrontierGraphics *v1 = BattleFrontier_GetGraphics(v0->frontier); if (ctx->data[0] == 1) { return TRUE; @@ -2408,45 +2408,45 @@ static BOOL ov104_02231E14(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_IncrementRecordValue(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v0; + FieldFrontierDTO *fieldData; u16 recordID = FrontierScriptContext_ReadHalfWord(ctx); - v0 = sub_0209B970(ctx->scriptMan->unk_00); - GameRecords_IncrementRecordValue(SaveData_GetGameRecords(v0->saveData), recordID); + fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); + GameRecords_IncrementRecordValue(SaveData_GetGameRecords(fieldData->saveData), recordID); return FALSE; } static BOOL FrontierScrCmd_AddToRecordValue(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v0; + FieldFrontierDTO *fieldData; u16 recordID = FrontierScriptContext_ReadHalfWord(ctx); u16 value = FrontierScriptContext_GetVar(ctx); - v0 = sub_0209B970(ctx->scriptMan->unk_00); - GameRecords_AddToRecordValue(SaveData_GetGameRecords(v0->saveData), recordID, value); + fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); + GameRecords_AddToRecordValue(SaveData_GetGameRecords(fieldData->saveData), recordID, value); return FALSE; } static BOOL FrontierScrCmd_IncrementTrainerScore(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v0; + FieldFrontierDTO *fieldData; u16 scoreID = FrontierScriptContext_ReadHalfWord(ctx); - v0 = sub_0209B970(ctx->scriptMan->unk_00); - GameRecords_IncrementTrainerScore(SaveData_GetGameRecords(v0->saveData), scoreID); + fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); + GameRecords_IncrementTrainerScore(SaveData_GetGameRecords(fieldData->saveData), scoreID); return FALSE; } static BOOL FrontierScrCmd_4B(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v0; + FieldFrontierDTO *fieldData; u16 *destVar = FrontierScriptContext_TryGetVarPointer(ctx); - v0 = sub_0209B970(ctx->scriptMan->unk_00); - *destVar = sub_0205E6D8(v0->saveData); + fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); + *destVar = sub_0205E6D8(fieldData->saveData); return FALSE; } @@ -2461,8 +2461,8 @@ static BOOL FrontierScrCmd_71(FrontierScriptContext *ctx) static BOOL FrontierScrCmd_SetWiFiListHostFriendCurrentDate(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v1 = sub_0209B970(ctx->scriptMan->unk_00); - WiFiList *wiFiList = SaveData_GetWiFiList(v1->saveData); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); + WiFiList *wiFiList = SaveData_GetWiFiList(fieldData->saveData); WiFiList_SetHostFriendCurrentDate(wiFiList, NintendoWFC_GetHostFriendIdx()); return FALSE; @@ -2473,8 +2473,8 @@ static BOOL FrontierScrCmd_C8(FrontierScriptContext *ctx) u16 v0; TVBroadcast *broadcast; TrainerInfo *trainerInfo; - UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(ctx->scriptMan->unk_00); - broadcast = SaveData_GetTVBroadcast(v3->saveData); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); + broadcast = SaveData_GetTVBroadcast(fieldData->saveData); v0 = FrontierScriptContext_GetVar(ctx); trainerInfo = CommInfo_TrainerInfo(1 - CommSys_CurNetId()); diff --git a/src/overlay104/frscrcmd_battle_arcade.c b/src/overlay104/frscrcmd_battle_arcade.c index 61e02d31df..7a1898b517 100644 --- a/src/overlay104/frscrcmd_battle_arcade.c +++ b/src/overlay104/frscrcmd_battle_arcade.c @@ -22,6 +22,7 @@ #include "overlay104/struct_ov104_02230BE4.h" #include "overlay104/struct_ov104_0223C634.h" +#include "battle_frontier.h" #include "communication_information.h" #include "field_battle_data_transfer.h" #include "gx_layers.h" @@ -35,7 +36,6 @@ #include "string_template.h" #include "trainer_info.h" #include "unk_02030494.h" -#include "unk_0209B6F8.h" #include "unk_0209BA80.h" #include "constdata/const_020EA358.h" @@ -53,7 +53,7 @@ static void StoreBattleArcadeAppResults(void *data); BOOL FrontierScrCmd_B8(FrontierScriptContext *param0) { BattleArcade *v0; - UnkStruct_ov104_02230BE4 *v1; + FieldFrontierDTO *fieldData; u16 v2 = FrontierScriptContext_GetVar(param0); u16 v3 = FrontierScriptContext_GetVar(param0); u16 v4 = FrontierScriptContext_GetVar(param0); @@ -61,10 +61,10 @@ BOOL FrontierScrCmd_B8(FrontierScriptContext *param0) u16 v6 = FrontierScriptContext_GetVar(param0); u16 *v7 = FrontierScriptContext_TryGetVarPointer(param0); - v1 = sub_0209B970(param0->scriptMan->unk_00); - v0 = ov104_02237DD8(v1->saveData, v2, v3, v4, v5, v6, v7); + fieldData = BattleFrontier_GetFieldData(param0->scriptMan->frontier); + v0 = ov104_02237DD8(fieldData->saveData, v2, v3, v4, v5, v6, v7); - sub_0209B980(param0->scriptMan->unk_00, v0); + sub_0209B980(param0->scriptMan->frontier, v0); return 0; } @@ -73,7 +73,7 @@ BOOL FrontierScrCmd_B9(FrontierScriptContext *param0) BattleArcade *v0; u16 v1 = FrontierScriptContext_GetVar(param0); - v0 = sub_0209B978(param0->scriptMan->unk_00); + v0 = sub_0209B978(param0->scriptMan->frontier); ov104_0223806C(v0, v1); return 0; @@ -81,7 +81,7 @@ BOOL FrontierScrCmd_B9(FrontierScriptContext *param0) BOOL FrontierScrCmd_BA(FrontierScriptContext *param0) { - BattleArcade *v0 = sub_0209B978(param0->scriptMan->unk_00); + BattleArcade *v0 = sub_0209B978(param0->scriptMan->frontier); ov104_02238210(v0); return 0; @@ -89,7 +89,7 @@ BOOL FrontierScrCmd_BA(FrontierScriptContext *param0) BOOL FrontierScrCmd_OpenBattleArcadeApp(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); FS_EXTERN_OVERLAY(battle_arcade_app); @@ -100,14 +100,14 @@ BOOL FrontierScrCmd_OpenBattleArcadeApp(FrontierScriptContext *ctx) FS_OVERLAY_ID(battle_arcade_app) }; - BattleArcade *battleArcade = sub_0209B978(ctx->scriptMan->unk_00); + BattleArcade *battleArcade = sub_0209B978(ctx->scriptMan->frontier); BattleArcadeAppArgs *args = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleArcadeAppArgs)); MI_CpuClear8(args, sizeof(BattleArcadeAppArgs)); - args->saveData = v3->saveData; + args->saveData = fieldData->saveData; SetupBattleArcadeAppArgs(args, battleArcade); - sub_0209B988(ctx->scriptMan->unk_00, &sBattleArcadeAppTemplate, args, 0, StoreBattleArcadeAppResults); + sub_0209B988(ctx->scriptMan->frontier, &sBattleArcadeAppTemplate, args, 0, StoreBattleArcadeAppResults); return TRUE; } @@ -116,7 +116,7 @@ BOOL FrontierScrCmd_BattleArcade_CleanupBattle(FrontierScriptContext *ctx) { int i, partyIdx1, partyIdx2, numMons, stat; - BattleArcade *battleArcade = sub_0209B978(ctx->scriptMan->unk_00); + BattleArcade *battleArcade = sub_0209B978(ctx->scriptMan->frontier); FieldBattleDTO *dto = battleArcade->dto; battleArcade->unk_1D = ov104_02238538(battleArcade, dto->parties[0], dto->parties[2], dto->totalTurnsElapsed); @@ -184,13 +184,13 @@ BOOL FrontierScrCmd_BattleArcade_CleanupBattle(FrontierScriptContext *ctx) BOOL FrontierScrCmd_BattleArcade_StartBattle(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(ctx->scriptMan->unk_00); - BattleArcade *battleArcade = sub_0209B978(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); + BattleArcade *battleArcade = sub_0209B978(ctx->scriptMan->frontier); - FieldBattleDTO *dto = FieldBattleDTO_NewBattleArcade(battleArcade, v2); + FieldBattleDTO *dto = FieldBattleDTO_NewBattleArcade(battleArcade, fieldData); battleArcade->dto = dto; - sub_0209B988(ctx->scriptMan->unk_00, &gBattleApplicationTemplate, dto, 0, NULL); + sub_0209B988(ctx->scriptMan->frontier, &gBattleApplicationTemplate, dto, 0, NULL); return TRUE; } @@ -236,7 +236,7 @@ static void StoreBattleArcadeAppResults(void *data) BOOL FrontierScrCmd_BD(FrontierScriptContext *param0) { - BattleArcade *v0 = sub_0209B978(param0->scriptMan->unk_00); + BattleArcade *v0 = sub_0209B978(param0->scriptMan->frontier); ov104_022384D4(v0); return 0; @@ -244,7 +244,7 @@ BOOL FrontierScrCmd_BD(FrontierScriptContext *param0) BOOL FrontierScrCmd_BE(FrontierScriptContext *param0) { - BattleArcade *v0 = sub_0209B978(param0->scriptMan->unk_00); + BattleArcade *v0 = sub_0209B978(param0->scriptMan->frontier); ov104_022384DC(v0); return 0; @@ -259,8 +259,8 @@ BOOL FrontierScrCmd_CallBattleArcadeFunction(FrontierScriptContext *ctx) u8 arg2 = FrontierScriptContext_GetVar(ctx); u16 *destVar = FrontierScriptContext_TryGetVarPointer(ctx); - BattleArcade *battleArcade = sub_0209B978(ctx->scriptMan->unk_00); - UnkStruct_ov104_02230BE4 *v14 = sub_0209B970(ctx->scriptMan->unk_00); + BattleArcade *battleArcade = sub_0209B978(ctx->scriptMan->frontier); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); FrontierGraphics *graphics = FrontierScriptManager_GetGraphics(ctx->scriptMan); switch (command) { @@ -306,7 +306,7 @@ BOOL FrontierScrCmd_CallBattleArcadeFunction(FrontierScriptContext *ctx) *destVar = battleArcade->activeEffect; break; case BA_FUNC_UNK_18: { - Party *v2 = SaveData_GetParty(v14->saveData); + Party *v2 = SaveData_GetParty(fieldData->saveData); for (v11 = 0; v11 < 3; v11++) { v1 = Party_GetPokemonBySlotIndex(v2, battleArcade->unk_2C[v11]); @@ -426,7 +426,7 @@ BOOL FrontierScrCmd_CallBattleArcadeFunction(FrontierScriptContext *ctx) StringTemplate_SetFrontierTrainerName(ctx->scriptMan->strTemplate, arg1, battleArcade->trainerIDs[ov104_02238498(battleArcade, arg2)]); } else { if (BattleArcade_IsMultiPlayerChallenge(battleArcade->challengeType) == 0) { - v16 = SaveData_GetTrainerInfo(v14->saveData); + v16 = SaveData_GetTrainerInfo(fieldData->saveData); } else { v16 = CommInfo_TrainerInfo(arg2); } @@ -460,7 +460,7 @@ BOOL FrontierScrCmd_CallBattleArcadeFunction(FrontierScriptContext *ctx) UnkStruct_ov104_0223C634 *v26; Sprite *v27; - v26 = ov104_0223D5A8(ctx->scriptMan->unk_00, arg2); + v26 = ov104_0223D5A8(ctx->scriptMan->frontier, arg2); v25 = ov63_0222D050(v26->sprite); PaletteData_Blend(graphics->plttData, 2, v25 * 16, 16, arg1, 0x0); @@ -537,7 +537,7 @@ BOOL FrontierScrCmd_BattleArcade_CheckWonBattle(FrontierScriptContext *ctx) { u16 *destVar = FrontierScriptContext_TryGetVarPointer(ctx); - BattleArcade *battleArcade = sub_0209B978(ctx->scriptMan->unk_00); + BattleArcade *battleArcade = sub_0209B978(ctx->scriptMan->frontier); *destVar = battleArcade->wonBattle; return FALSE; @@ -550,7 +550,7 @@ BOOL FrontierScrCmd_C1(FrontierScriptContext *param0) u16 v2 = FrontierScriptContext_GetVar(param0); u16 *v3 = FrontierScriptContext_TryGetVarPointer(param0); - v0 = sub_0209B978(param0->scriptMan->unk_00); + v0 = sub_0209B978(param0->scriptMan->frontier); *v3 = ov104_02238B40(v0, v1, v2); return 1; @@ -571,7 +571,7 @@ static BOOL ov104_02237D18(FrontierScriptContext *param0) BattleArcade *v0; u16 v1 = FrontierScriptContext_TryGetVar(param0, param0->data[0]); - v0 = sub_0209B978(param0->scriptMan->unk_00); + v0 = sub_0209B978(param0->scriptMan->frontier); if (v0->unk_A7C >= 2) { v0->unk_A7C = 0; @@ -585,10 +585,10 @@ BOOL FrontierScrCmd_C4(FrontierScriptContext *param0) { u16 *v0; BattleArcade *v1; - UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(param0->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(param0->scriptMan->frontier); u16 v3 = FrontierScriptContext_ReadByte(param0); - v1 = sub_0209B978(param0->scriptMan->unk_00); + v1 = sub_0209B978(param0->scriptMan->frontier); if (v1 == NULL) { return 0; @@ -602,7 +602,7 @@ BOOL FrontierScrCmd_C4(FrontierScriptContext *param0) BOOL FrontierScrCmd_C5(FrontierScriptContext *param0) { - BattleArcade *v0 = sub_0209B978(param0->scriptMan->unk_00); + BattleArcade *v0 = sub_0209B978(param0->scriptMan->frontier); ov104_02238B88(v0, v0->activeEffect); return 1; @@ -616,7 +616,7 @@ BOOL FrontierScrCmd_C6(FrontierScriptContext *param0) u16 v3 = FrontierScriptContext_GetVar(param0); u16 v4 = FrontierScriptContext_GetVar(param0); - v0 = sub_0209B978(param0->scriptMan->unk_00); + v0 = sub_0209B978(param0->scriptMan->frontier); ov104_022389F4(v0, v1, v2, v3, v4); return 0; diff --git a/src/overlay104/frscrcmd_battle_castle.c b/src/overlay104/frscrcmd_battle_castle.c index f443272d1e..c28b2eff1b 100644 --- a/src/overlay104/frscrcmd_battle_castle.c +++ b/src/overlay104/frscrcmd_battle_castle.c @@ -17,6 +17,7 @@ #include "overlay104/struct_battle_castle.h" #include "overlay104/struct_ov104_02230BE4.h" +#include "battle_frontier.h" #include "battle_frontier_save.h" #include "battle_frontier_stats.h" #include "communication_system.h" @@ -25,7 +26,6 @@ #include "party.h" #include "pokemon.h" #include "unk_020302D0.h" -#include "unk_0209B6F8.h" #include "unk_0209BA80.h" #include "constdata/const_020EA358.h" @@ -42,7 +42,7 @@ static void StoreBattleCastleAppResult(void *data); BOOL FrontierScrCmd_97(FrontierScriptContext *param0) { BattleCastle *v0; - UnkStruct_ov104_02230BE4 *v1; + FieldFrontierDTO *fieldData; u16 v2 = FrontierScriptContext_GetVar(param0); u16 v3 = FrontierScriptContext_GetVar(param0); u16 v4 = FrontierScriptContext_GetVar(param0); @@ -50,10 +50,10 @@ BOOL FrontierScrCmd_97(FrontierScriptContext *param0) u16 v6 = FrontierScriptContext_GetVar(param0); u16 *v7 = FrontierScriptContext_TryGetVarPointer(param0); - v1 = sub_0209B970(param0->scriptMan->unk_00); - v0 = ov104_022361B4(v1->saveData, v2, v3, v4, v5, v6, v7); + fieldData = BattleFrontier_GetFieldData(param0->scriptMan->frontier); + v0 = ov104_022361B4(fieldData->saveData, v2, v3, v4, v5, v6, v7); - sub_0209B980(param0->scriptMan->unk_00, v0); + sub_0209B980(param0->scriptMan->frontier, v0); return 0; } @@ -63,7 +63,7 @@ BOOL FrontierScrCmd_98(FrontierScriptContext *param0) BattleCastle *v0; u16 v1 = FrontierScriptContext_GetVar(param0); - v0 = sub_0209B978(param0->scriptMan->unk_00); + v0 = sub_0209B978(param0->scriptMan->frontier); ov104_02236514(v0, v1); return 0; @@ -71,7 +71,7 @@ BOOL FrontierScrCmd_98(FrontierScriptContext *param0) BOOL FrontierScrCmd_99(FrontierScriptContext *param0) { - BattleCastle *v0 = sub_0209B978(param0->scriptMan->unk_00); + BattleCastle *v0 = sub_0209B978(param0->scriptMan->frontier); ov104_022367AC(v0); return 0; @@ -79,7 +79,7 @@ BOOL FrontierScrCmd_99(FrontierScriptContext *param0) BOOL FrontierScrCmd_OpenBattleCastleSelfApp(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); FS_EXTERN_OVERLAY(battle_castle_app); @@ -90,20 +90,20 @@ BOOL FrontierScrCmd_OpenBattleCastleSelfApp(FrontierScriptContext *ctx) FS_OVERLAY_ID(battle_castle_app) }; - BattleCastle *battleCastle = sub_0209B978(ctx->scriptMan->unk_00); + BattleCastle *battleCastle = sub_0209B978(ctx->scriptMan->frontier); BattleCastleAppArgs *args = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleCastleAppArgs)); MI_CpuClear8(args, sizeof(BattleCastleAppArgs)); - args->saveData = v3->saveData; + args->saveData = fieldData->saveData; SetupBattleCastleAppArgs(args, battleCastle); - sub_0209B988(ctx->scriptMan->unk_00, &sBattleCastleSelfAppTemplate, args, 0, StoreBattleCastleAppResult); + sub_0209B988(ctx->scriptMan->frontier, &sBattleCastleSelfAppTemplate, args, 0, StoreBattleCastleAppResult); return TRUE; } BOOL FrontierScrCmd_A4(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); FS_EXTERN_OVERLAY(battle_castle_app); @@ -114,21 +114,21 @@ BOOL FrontierScrCmd_A4(FrontierScriptContext *ctx) FS_OVERLAY_ID(battle_castle_app) }; - BattleCastle *battleCastle = sub_0209B978(ctx->scriptMan->unk_00); + BattleCastle *battleCastle = sub_0209B978(ctx->scriptMan->frontier); BattleCastleAppArgs *args = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleCastleAppArgs)); MI_CpuClear8(args, sizeof(BattleCastleAppArgs)); - args->saveData = v3->saveData; + args->saveData = fieldData->saveData; SetupBattleCastleAppArgs(args, battleCastle); - sub_0209B988(ctx->scriptMan->unk_00, &sBattleCastleNullTemplate, args, 0, StoreBattleCastleAppResult); + sub_0209B988(ctx->scriptMan->frontier, &sBattleCastleNullTemplate, args, 0, StoreBattleCastleAppResult); return TRUE; } BOOL FrontierScrCmd_BattleCastle_CleanupBattle(FrontierScriptContext *ctx) { - BattleCastle *battleCastle = sub_0209B978(ctx->scriptMan->unk_00); + BattleCastle *battleCastle = sub_0209B978(ctx->scriptMan->frontier); FieldBattleDTO *dto = battleCastle->dto; Pokemon *mon = Party_GetPokemonBySlotIndex(dto->parties[BATTLER_PLAYER_1], 0); @@ -155,19 +155,19 @@ BOOL FrontierScrCmd_BattleCastle_CleanupBattle(FrontierScriptContext *ctx) BOOL FrontierScrCmd_BattleCastle_StartBattle(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(ctx->scriptMan->unk_00); - BattleCastle *battleCastle = sub_0209B978(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); + BattleCastle *battleCastle = sub_0209B978(ctx->scriptMan->frontier); - FieldBattleDTO *dto = FieldBattleDTO_NewBattleCastle(battleCastle, v2); + FieldBattleDTO *dto = FieldBattleDTO_NewBattleCastle(battleCastle, fieldData); battleCastle->dto = dto; - sub_0209B988(ctx->scriptMan->unk_00, &gBattleApplicationTemplate, dto, 0, NULL); + sub_0209B988(ctx->scriptMan->frontier, &gBattleApplicationTemplate, dto, 0, NULL); return TRUE; } BOOL FrontierScrCmd_OpenBattleCastleOpponentApp(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); FS_EXTERN_OVERLAY(battle_castle_app); @@ -178,14 +178,14 @@ BOOL FrontierScrCmd_OpenBattleCastleOpponentApp(FrontierScriptContext *ctx) FS_OVERLAY_ID(battle_castle_app) }; - BattleCastle *battleCastle = sub_0209B978(ctx->scriptMan->unk_00); + BattleCastle *battleCastle = sub_0209B978(ctx->scriptMan->frontier); BattleCastleAppArgs *args = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleCastleAppArgs)); MI_CpuClear8(args, sizeof(BattleCastleAppArgs)); - args->saveData = v3->saveData; + args->saveData = fieldData->saveData; SetupBattleCastleAppArgs(args, battleCastle); - sub_0209B988(ctx->scriptMan->unk_00, &sBattleCastleOpponentAppTemplate, args, 0, StoreBattleCastleAppResult); + sub_0209B988(ctx->scriptMan->frontier, &sBattleCastleOpponentAppTemplate, args, 0, StoreBattleCastleAppResult); return TRUE; } @@ -214,7 +214,7 @@ static void StoreBattleCastleAppResult(void *data) BOOL FrontierScrCmd_9E(FrontierScriptContext *param0) { - BattleCastle *v0 = sub_0209B978(param0->scriptMan->unk_00); + BattleCastle *v0 = sub_0209B978(param0->scriptMan->frontier); ov104_02236BF0(v0); return 0; @@ -222,7 +222,7 @@ BOOL FrontierScrCmd_9E(FrontierScriptContext *param0) BOOL FrontierScrCmd_9F(FrontierScriptContext *param0) { - BattleCastle *v0 = sub_0209B978(param0->scriptMan->unk_00); + BattleCastle *v0 = sub_0209B978(param0->scriptMan->frontier); ov104_02236BF8(v0); return 0; @@ -230,14 +230,14 @@ BOOL FrontierScrCmd_9F(FrontierScriptContext *param0) BOOL FrontierScrCmd_CallBattleCastleFunction(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v11; + FieldFrontierDTO *fieldData; u8 command = FrontierScriptContext_ReadByte(ctx); u8 arg1 = FrontierScriptContext_ReadByte(ctx); u8 arg2 = FrontierScriptContext_ReadByte(ctx); u16 *returnVar = FrontierScriptContext_TryGetVarPointer(ctx); - BattleCastle *battleCastle = sub_0209B978(ctx->scriptMan->unk_00); - v11 = sub_0209B970(ctx->scriptMan->unk_00); + BattleCastle *battleCastle = sub_0209B978(ctx->scriptMan->frontier); + fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); switch (command) { case BC_FUNC_SET_CHALLENGE_TYPE: @@ -273,7 +273,7 @@ BOOL FrontierScrCmd_CallBattleCastleFunction(FrontierScriptContext *ctx) *returnVar = battleCastle->unk_288[arg1].moves[arg2]; break; case BC_FUNC_UNK_18: { - Party *v2 = SaveData_GetParty(v11->saveData); + Party *v2 = SaveData_GetParty(fieldData->saveData); for (int v8 = 0; v8 < 3; v8++) { Pokemon *v1 = Party_GetPokemonBySlotIndex(v2, battleCastle->unk_24[v8]); @@ -340,7 +340,7 @@ BOOL FrontierScrCmd_CallBattleCastleFunction(FrontierScriptContext *ctx) } if (v10 == 1) { - ov104_0223BC2C(SaveData_GetBattleFrontier(v11->saveData), battleCastle->challengeType, 50); + ov104_0223BC2C(SaveData_GetBattleFrontier(fieldData->saveData), battleCastle->challengeType, 50); } else { battleCastle->partnersCP -= 50; } @@ -382,9 +382,9 @@ BOOL FrontierScrCmd_CallBattleCastleFunction(FrontierScriptContext *ctx) break; case BC_FUNC_UNK_39: { u8 v13[4]; - *returnVar = (u16)sub_02030470(sub_0203041C(v11->saveData), 10, 0, 0, NULL); + *returnVar = (u16)sub_02030470(sub_0203041C(fieldData->saveData), 10, 0, 0, NULL); v13[0] = 1; - sub_02030430(sub_0203041C(v11->saveData), 10, 0, 0, v13); + sub_02030430(sub_0203041C(fieldData->saveData), 10, 0, 0, v13); } break; case BC_FUNC_UNK_40: *returnVar = 0; @@ -410,10 +410,10 @@ BOOL FrontierScrCmd_CallBattleCastleFunction(FrontierScriptContext *ctx) case BC_FUNC_UNK_44: if (battleCastle->challengeType == 3) { if (arg1 == 0) { - battleCastle->unk_22 = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v11->saveData), BattleFrontierStats_GetCastleLatestCPIndex(battleCastle->challengeType)); - BattleFrontierSave_SetStatAutoHostIdx(SaveData_GetBattleFrontier(v11->saveData), BattleFrontierStats_GetCastleLatestCPIndex(battleCastle->challengeType), battleCastle->unk_20); + battleCastle->unk_22 = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(fieldData->saveData), BattleFrontierStats_GetCastleLatestCPIndex(battleCastle->challengeType)); + BattleFrontierSave_SetStatAutoHostIdx(SaveData_GetBattleFrontier(fieldData->saveData), BattleFrontierStats_GetCastleLatestCPIndex(battleCastle->challengeType), battleCastle->unk_20); } else { - BattleFrontierSave_SetStatAutoHostIdx(SaveData_GetBattleFrontier(v11->saveData), BattleFrontierStats_GetCastleLatestCPIndex(battleCastle->challengeType), battleCastle->unk_22); + BattleFrontierSave_SetStatAutoHostIdx(SaveData_GetBattleFrontier(fieldData->saveData), BattleFrontierStats_GetCastleLatestCPIndex(battleCastle->challengeType), battleCastle->unk_22); } } break; @@ -427,7 +427,7 @@ BOOL FrontierScrCmd_BattleCastle_CheckWonBattle(FrontierScriptContext *ctx) BattleCastle *battleCastle; u16 *destVar = FrontierScriptContext_TryGetVarPointer(ctx); - battleCastle = sub_0209B978(ctx->scriptMan->unk_00); + battleCastle = sub_0209B978(ctx->scriptMan->frontier); *destVar = battleCastle->wonBattle; return FALSE; @@ -440,7 +440,7 @@ BOOL FrontierScrCmd_A2(FrontierScriptContext *param0) u16 v2 = FrontierScriptContext_GetVar(param0); u16 *v3 = FrontierScriptContext_TryGetVarPointer(param0); - v0 = sub_0209B978(param0->scriptMan->unk_00); + v0 = sub_0209B978(param0->scriptMan->frontier); *v3 = ov104_02236F70(v0, v1, v2); return 1; @@ -461,7 +461,7 @@ static BOOL ov104_02236008(FrontierScriptContext *param0) BattleCastle *v0; u16 v1 = FrontierScriptContext_TryGetVar(param0, param0->data[0]); - v0 = sub_0209B978(param0->scriptMan->unk_00); + v0 = sub_0209B978(param0->scriptMan->frontier); if (v0->unk_A1A >= 2) { v0->unk_A1A = 0; @@ -486,7 +486,7 @@ static BOOL ov104_02236058(FrontierScriptContext *param0) BattleCastle *v0; u16 *v1 = FrontierScriptContext_GetVarPointer(param0, param0->data[0]); - v0 = sub_0209B978(param0->scriptMan->unk_00); + v0 = sub_0209B978(param0->scriptMan->frontier); if (v0->unk_A1B == 0) { return 0; @@ -500,7 +500,7 @@ static BOOL ov104_02236058(FrontierScriptContext *param0) BOOL FrontierScrCmd_50(FrontierScriptContext *param0) { - BattleCastle *v0 = sub_0209B978(param0->scriptMan->unk_00); + BattleCastle *v0 = sub_0209B978(param0->scriptMan->frontier); ov104_02236FC0(param0->scriptMan, v0); return 0; @@ -508,7 +508,7 @@ BOOL FrontierScrCmd_50(FrontierScriptContext *param0) BOOL FrontierScrCmd_51(FrontierScriptContext *param0) { - BattleCastle *v0 = sub_0209B978(param0->scriptMan->unk_00); + BattleCastle *v0 = sub_0209B978(param0->scriptMan->frontier); ov104_022370E0(param0->scriptMan, v0); return 0; @@ -516,7 +516,7 @@ BOOL FrontierScrCmd_51(FrontierScriptContext *param0) BOOL FrontierScrCmd_52(FrontierScriptContext *param0) { - BattleCastle *v0 = sub_0209B978(param0->scriptMan->unk_00); + BattleCastle *v0 = sub_0209B978(param0->scriptMan->frontier); ov104_02237180(param0->scriptMan, v0); return 0; @@ -524,24 +524,24 @@ BOOL FrontierScrCmd_52(FrontierScriptContext *param0) BOOL FrontierScrCmd_A6(FrontierScriptContext *param0) { - UnkStruct_ov104_02230BE4 *v0; + FieldFrontierDTO *fieldData; u16 v1 = FrontierScriptContext_GetVar(param0); u16 *v2 = FrontierScriptContext_TryGetVarPointer(param0); - v0 = sub_0209B970(param0->scriptMan->unk_00); - *v2 = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v0->saveData), BattleFrontierStats_GetCastleLatestCPIndex(v1)); + fieldData = BattleFrontier_GetFieldData(param0->scriptMan->frontier); + *v2 = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(fieldData->saveData), BattleFrontierStats_GetCastleLatestCPIndex(v1)); return 0; } BOOL FrontierScrCmd_A7(FrontierScriptContext *param0) { - UnkStruct_ov104_02230BE4 *v0; + FieldFrontierDTO *fieldData; u16 v1 = FrontierScriptContext_GetVar(param0); u16 v2 = FrontierScriptContext_GetVar(param0); - v0 = sub_0209B970(param0->scriptMan->unk_00); - ov104_0223BC2C(SaveData_GetBattleFrontier(v0->saveData), v1, v2); + fieldData = BattleFrontier_GetFieldData(param0->scriptMan->frontier); + ov104_0223BC2C(SaveData_GetBattleFrontier(fieldData->saveData), v1, v2); return 0; } @@ -549,12 +549,12 @@ BOOL FrontierScrCmd_A7(FrontierScriptContext *param0) BOOL FrontierScrCmd_A8(FrontierScriptContext *param0) { u16 v0; - UnkStruct_ov104_02230BE4 *v1; + FieldFrontierDTO *fieldData; u16 v2 = FrontierScriptContext_GetVar(param0); u16 v3 = FrontierScriptContext_GetVar(param0); - v1 = sub_0209B970(param0->scriptMan->unk_00); - ov104_02236ED8(v1->saveData, v2, v3); + fieldData = BattleFrontier_GetFieldData(param0->scriptMan->frontier); + ov104_02236ED8(fieldData->saveData, v2, v3); return 0; } @@ -563,10 +563,10 @@ BOOL FrontierScrCmd_A9(FrontierScriptContext *param0) { u16 *v0; BattleCastle *v1; - UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(param0->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(param0->scriptMan->frontier); u16 v3 = FrontierScriptContext_ReadByte(param0); - v1 = sub_0209B978(param0->scriptMan->unk_00); + v1 = sub_0209B978(param0->scriptMan->frontier); if (v1 == NULL) { return 0; diff --git a/src/overlay104/frscrcmd_battle_factory.c b/src/overlay104/frscrcmd_battle_factory.c index dfcb5bceef..e83decac13 100644 --- a/src/overlay104/frscrcmd_battle_factory.c +++ b/src/overlay104/frscrcmd_battle_factory.c @@ -16,6 +16,7 @@ #include "overlay104/struct_battle_factory.h" #include "overlay104/struct_ov104_02230BE4.h" +#include "battle_frontier.h" #include "bg_window.h" #include "field_battle_data_transfer.h" #include "heap.h" @@ -25,7 +26,6 @@ #include "sys_task.h" #include "sys_task_manager.h" #include "unk_0202FF4C.h" -#include "unk_0209B6F8.h" #include "unk_0209BA80.h" #include "constdata/const_020EA358.h" @@ -41,15 +41,15 @@ static void StoreBattleFactoryAppResult(void *data); BOOL FrontierScrCmd_5C(FrontierScriptContext *param0) { BattleFactory *v0; - UnkStruct_ov104_02230BE4 *v1; + FieldFrontierDTO *fieldData; u16 v2 = FrontierScriptContext_GetVar(param0); u16 v3 = FrontierScriptContext_GetVar(param0); u16 v4 = FrontierScriptContext_GetVar(param0); - v1 = sub_0209B970(param0->scriptMan->unk_00); - v0 = ov104_022339B4(v1->saveData, v2, v3, v4); + fieldData = BattleFrontier_GetFieldData(param0->scriptMan->frontier); + v0 = ov104_022339B4(fieldData->saveData, v2, v3, v4); - sub_0209B980(param0->scriptMan->unk_00, v0); + sub_0209B980(param0->scriptMan->frontier, v0); return 0; } @@ -59,7 +59,7 @@ BOOL FrontierScrCmd_5D(FrontierScriptContext *param0) BattleFactory *v0; u16 v1 = FrontierScriptContext_GetVar(param0); - v0 = sub_0209B978(param0->scriptMan->unk_00); + v0 = sub_0209B978(param0->scriptMan->frontier); ov104_02233B98(v0, v1); return 0; @@ -67,7 +67,7 @@ BOOL FrontierScrCmd_5D(FrontierScriptContext *param0) BOOL FrontierScrCmd_5E(FrontierScriptContext *param0) { - BattleFactory *v0 = sub_0209B978(param0->scriptMan->unk_00); + BattleFactory *v0 = sub_0209B978(param0->scriptMan->frontier); ov104_022340D0(v0); return 0; @@ -75,7 +75,7 @@ BOOL FrontierScrCmd_5E(FrontierScriptContext *param0) BOOL FrontierScrCmd_OpenBattleFactoryAppInitial(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); FS_EXTERN_OVERLAY(battle_factory_app); @@ -86,12 +86,12 @@ BOOL FrontierScrCmd_OpenBattleFactoryAppInitial(FrontierScriptContext *ctx) FS_OVERLAY_ID(battle_factory_app) }; - BattleFactory *battleFactory = sub_0209B978(ctx->scriptMan->unk_00); + BattleFactory *battleFactory = sub_0209B978(ctx->scriptMan->frontier); BattleFactoryAppArgs *args = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleFactoryAppArgs)); MI_CpuClear8(args, sizeof(BattleFactoryAppArgs)); - args->saveData = v3->saveData; + args->saveData = fieldData->saveData; args->challengeType = battleFactory->challengeType; args->unk_05 = battleFactory->unk_05; args->isExchangeMode = FALSE; @@ -99,13 +99,13 @@ BOOL FrontierScrCmd_OpenBattleFactoryAppInitial(FrontierScriptContext *ctx) args->receivableParty = battleFactory->opponentsParty; args->battleFactory = battleFactory; - sub_0209B988(ctx->scriptMan->unk_00, &sBattleFactoryAppTemplate, args, 0, StoreBattleFactoryAppResult); + sub_0209B988(ctx->scriptMan->frontier, &sBattleFactoryAppTemplate, args, 0, StoreBattleFactoryAppResult); return TRUE; } BOOL FrontierScrCmd_BattleFactory_CleanupBattle(FrontierScriptContext *ctx) { - BattleFactory *battleFactory = sub_0209B978(ctx->scriptMan->unk_00); + BattleFactory *battleFactory = sub_0209B978(ctx->scriptMan->frontier); FieldBattleDTO *dto = battleFactory->dto; battleFactory->wonBattle = CheckPlayerWonBattle(dto->resultMask); @@ -116,20 +116,20 @@ BOOL FrontierScrCmd_BattleFactory_CleanupBattle(FrontierScriptContext *ctx) BOOL FrontierScrCmd_BattleFactory_StartBattle(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(ctx->scriptMan->unk_00); - BattleFactory *battleFactory = sub_0209B978(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); + BattleFactory *battleFactory = sub_0209B978(ctx->scriptMan->frontier); - FieldBattleDTO *dto = FieldBattleDTO_NewBattleFactory(battleFactory, v2); + FieldBattleDTO *dto = FieldBattleDTO_NewBattleFactory(battleFactory, fieldData); battleFactory->dto = dto; - sub_0209B988(ctx->scriptMan->unk_00, &gBattleApplicationTemplate, dto, 0, NULL); + sub_0209B988(ctx->scriptMan->frontier, &gBattleApplicationTemplate, dto, 0, NULL); return TRUE; } BOOL FrontierScrCmd_OpenBattleFactoryAppForTrade(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); FS_EXTERN_OVERLAY(battle_factory_app); @@ -140,7 +140,7 @@ BOOL FrontierScrCmd_OpenBattleFactoryAppForTrade(FrontierScriptContext *ctx) FS_OVERLAY_ID(battle_factory_app) }; - BattleFactory *battleFactory = sub_0209B978(ctx->scriptMan->unk_00); + BattleFactory *battleFactory = sub_0209B978(ctx->scriptMan->frontier); for (int i = 0; i < 6; i++) { battleFactory->unk_4DC[i] = 0; @@ -149,7 +149,7 @@ BOOL FrontierScrCmd_OpenBattleFactoryAppForTrade(FrontierScriptContext *ctx) BattleFactoryAppArgs *args = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleFactoryAppArgs)); MI_CpuClear8(args, sizeof(BattleFactoryAppArgs)); - args->saveData = v3->saveData; + args->saveData = fieldData->saveData; args->challengeType = battleFactory->challengeType; args->unk_05 = battleFactory->unk_05; args->isExchangeMode = TRUE; @@ -157,7 +157,7 @@ BOOL FrontierScrCmd_OpenBattleFactoryAppForTrade(FrontierScriptContext *ctx) args->receivableParty = battleFactory->opponentsParty; args->battleFactory = battleFactory; - sub_0209B988(ctx->scriptMan->unk_00, &sBattleFactoryAppTradeTemplate, args, 0, StoreBattleFactoryAppResult); + sub_0209B988(ctx->scriptMan->frontier, &sBattleFactoryAppTradeTemplate, args, 0, StoreBattleFactoryAppResult); return TRUE; } @@ -170,7 +170,7 @@ static void StoreBattleFactoryAppResult(void *data) BOOL FrontierScrCmd_63(FrontierScriptContext *param0) { - BattleFactory *v0 = sub_0209B978(param0->scriptMan->unk_00); + BattleFactory *v0 = sub_0209B978(param0->scriptMan->frontier); ov104_0223449C(v0); return 0; @@ -178,7 +178,7 @@ BOOL FrontierScrCmd_63(FrontierScriptContext *param0) BOOL FrontierScrCmd_64(FrontierScriptContext *param0) { - BattleFactory *v0 = sub_0209B978(param0->scriptMan->unk_00); + BattleFactory *v0 = sub_0209B978(param0->scriptMan->frontier); ov104_02234570(v0); return 0; @@ -186,7 +186,7 @@ BOOL FrontierScrCmd_64(FrontierScriptContext *param0) BOOL FrontierScrCmd_65(FrontierScriptContext *param0) { - BattleFactory *v0 = sub_0209B978(param0->scriptMan->unk_00); + BattleFactory *v0 = sub_0209B978(param0->scriptMan->frontier); ov104_022346A4(v0); return 0; @@ -194,7 +194,7 @@ BOOL FrontierScrCmd_65(FrontierScriptContext *param0) BOOL FrontierScrCmd_66(FrontierScriptContext *param0) { - BattleFactory *v0 = sub_0209B978(param0->scriptMan->unk_00); + BattleFactory *v0 = sub_0209B978(param0->scriptMan->frontier); ov104_0223470C(v0); return 0; @@ -208,7 +208,7 @@ BOOL FrontierScrCmd_CallBattleFactoryFunction(FrontierScriptContext *ctx) u8 arg2 = FrontierScriptContext_ReadByte(ctx); u16 *returnVar = FrontierScriptContext_TryGetVarPointer(ctx); - BattleFactory *battleFactory = sub_0209B978(ctx->scriptMan->unk_00); + BattleFactory *battleFactory = sub_0209B978(ctx->scriptMan->frontier); FrontierGraphics *graphics = FrontierScriptManager_GetGraphics(ctx->scriptMan); switch (command) { @@ -409,7 +409,7 @@ BOOL FrontierScrCmd_BattleFactory_CheckWonBattle(FrontierScriptContext *ctx) { u16 *destVar = FrontierScriptContext_TryGetVarPointer(ctx); - BattleFactory *battleFactory = sub_0209B978(ctx->scriptMan->unk_00); + BattleFactory *battleFactory = sub_0209B978(ctx->scriptMan->frontier); *destVar = battleFactory->wonBattle; return FALSE; @@ -422,7 +422,7 @@ BOOL FrontierScrCmd_69(FrontierScriptContext *param0) u16 v2 = FrontierScriptContext_GetVar(param0); u16 *v3 = FrontierScriptContext_TryGetVarPointer(param0); - v0 = sub_0209B978(param0->scriptMan->unk_00); + v0 = sub_0209B978(param0->scriptMan->frontier); *v3 = ov104_022347A4(v0, v1, v2); return 1; @@ -443,7 +443,7 @@ static BOOL ov104_0223394C(FrontierScriptContext *param0) BattleFactory *v0; u16 v1 = FrontierScriptContext_TryGetVar(param0, param0->data[0]); - v0 = sub_0209B978(param0->scriptMan->unk_00); + v0 = sub_0209B978(param0->scriptMan->frontier); if (v0->unk_702 >= 2) { v0->unk_702 = 0; @@ -457,10 +457,10 @@ BOOL FrontierScrCmd_6B(FrontierScriptContext *param0) { u16 *v0; BattleFactory *v1; - UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(param0->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(param0->scriptMan->frontier); u16 v3 = FrontierScriptContext_ReadByte(param0); - v1 = sub_0209B978(param0->scriptMan->unk_00); + v1 = sub_0209B978(param0->scriptMan->frontier); if (v1 == NULL) { return 0; diff --git a/src/overlay104/frscrcmd_battle_hall.c b/src/overlay104/frscrcmd_battle_hall.c index 6c2d9d088a..ae3ea3bfa8 100644 --- a/src/overlay104/frscrcmd_battle_hall.c +++ b/src/overlay104/frscrcmd_battle_hall.c @@ -19,6 +19,7 @@ #include "overlay104/struct_ov104_02230BE4.h" #include "savedata/save_table.h" +#include "battle_frontier.h" #include "battle_hall_save.h" #include "field_battle_data_transfer.h" #include "gx_layers.h" @@ -27,7 +28,6 @@ #include "pokemon.h" #include "sound.h" #include "tv_segment.h" -#include "unk_0209B6F8.h" #include "unk_0209BA80.h" #include "constdata/const_020EA358.h" @@ -46,10 +46,10 @@ BOOL FrontierScrCmd_InitBattleHall(FrontierScriptContext *ctx) u16 partySlot1 = FrontierScriptContext_GetVar(ctx); u16 partySlot2 = FrontierScriptContext_GetVar(ctx); - UnkStruct_ov104_02230BE4 *v1 = sub_0209B970(ctx->scriptMan->unk_00); - BattleHall *battleHall = BattleHall_Init(v1->saveData, resumingFromSave, challengeType, partySlot1, partySlot2); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); + BattleHall *battleHall = BattleHall_Init(fieldData->saveData, resumingFromSave, challengeType, partySlot1, partySlot2); - sub_0209B980(ctx->scriptMan->unk_00, battleHall); + sub_0209B980(ctx->scriptMan->frontier, battleHall); return FALSE; } @@ -59,7 +59,7 @@ BOOL FrontierScrCmd_8C(FrontierScriptContext *param0) BattleHall *v0; u16 v1 = FrontierScriptContext_GetVar(param0); - v0 = sub_0209B978(param0->scriptMan->unk_00); + v0 = sub_0209B978(param0->scriptMan->frontier); ov104_022350B0(v0, v1); return 0; @@ -67,7 +67,7 @@ BOOL FrontierScrCmd_8C(FrontierScriptContext *param0) BOOL FrontierScrCmd_FreeBattleHall(FrontierScriptContext *ctx) { - BattleHall *battleHall = sub_0209B978(ctx->scriptMan->unk_00); + BattleHall *battleHall = sub_0209B978(ctx->scriptMan->frontier); BattleHall_Free(battleHall); return FALSE; @@ -75,7 +75,7 @@ BOOL FrontierScrCmd_FreeBattleHall(FrontierScriptContext *ctx) BOOL FrontierScrCmd_OpenBattleHallApp(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v5 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); FS_EXTERN_OVERLAY(battle_hall_app); @@ -86,12 +86,12 @@ BOOL FrontierScrCmd_OpenBattleHallApp(FrontierScriptContext *ctx) FS_OVERLAY_ID(battle_hall_app) }; - BattleHall *battleHall = sub_0209B978(ctx->scriptMan->unk_00); + BattleHall *battleHall = sub_0209B978(ctx->scriptMan->frontier); BattleHallAppArgs *args = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleHallAppArgs)); MI_CpuClear8(args, sizeof(BattleHallAppArgs)); - args->saveData = v5->saveData; + args->saveData = fieldData->saveData; args->challengeType = battleHall->challengeType; args->battleHall = battleHall; args->typeRanks = &battleHall->typeRanks[battleHall->challengeType][0]; @@ -102,7 +102,7 @@ BOOL FrontierScrCmd_OpenBattleHallApp(FrontierScriptContext *ctx) Party_Init(args->party); - Party *party = SaveData_GetParty(v5->saveData); + Party *party = SaveData_GetParty(fieldData->saveData); Pokemon *mon = Party_GetPokemonBySlotIndex(party, battleHall->partySlots[0]); Party_AddPokemon(args->party, mon); @@ -114,13 +114,13 @@ BOOL FrontierScrCmd_OpenBattleHallApp(FrontierScriptContext *ctx) Party_AddPokemon(args->party, battleHall->partnersMon); } - sub_0209B988(ctx->scriptMan->unk_00, &sBattleHallAppTemplate, args, 0, StoreBattleHallAppResult); + sub_0209B988(ctx->scriptMan->frontier, &sBattleHallAppTemplate, args, 0, StoreBattleHallAppResult); return TRUE; } BOOL FrontierScrCmd_BattleHall_CleanupBattle(FrontierScriptContext *ctx) { - BattleHall *battleHall = sub_0209B978(ctx->scriptMan->unk_00); + BattleHall *battleHall = sub_0209B978(ctx->scriptMan->frontier); FieldBattleDTO *dto = battleHall->dto; battleHall->wonBattle = CheckPlayerWonBattle(dto->resultMask); @@ -131,14 +131,14 @@ BOOL FrontierScrCmd_BattleHall_CleanupBattle(FrontierScriptContext *ctx) BOOL FrontierScrCmd_BattleHall_StartBattle(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(ctx->scriptMan->unk_00); - BattleHall *battleHall = sub_0209B978(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); + BattleHall *battleHall = sub_0209B978(ctx->scriptMan->frontier); - FieldBattleDTO *dto = FieldBattleDTO_NewBattleHall(battleHall, v2); + FieldBattleDTO *dto = FieldBattleDTO_NewBattleHall(battleHall, fieldData); battleHall->dto = dto; Sound_SetSceneAndPlayBGM(SOUND_SCENE_BATTLE, SEQ_BATTLE_TRAINER, 1); - sub_0209B988(ctx->scriptMan->unk_00, &gBattleApplicationTemplate, dto, 0, NULL); + sub_0209B988(ctx->scriptMan->frontier, &gBattleApplicationTemplate, dto, 0, NULL); return TRUE; } @@ -159,8 +159,8 @@ BOOL FrontierScrCmd_CallBattleHallFunction(FrontierScriptContext *ctx) u8 arg2 = FrontierScriptContext_ReadByte(ctx); u16 *returnVar = FrontierScriptContext_TryGetVarPointer(ctx); - UnkStruct_ov104_02230BE4 *v0 = sub_0209B970(ctx->scriptMan->unk_00); - BattleHall *battleHall = sub_0209B978(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); + BattleHall *battleHall = sub_0209B978(ctx->scriptMan->frontier); switch (command) { case BH_FUNC_SET_CHALLENGE_TYPE: @@ -212,7 +212,7 @@ BOOL FrontierScrCmd_CallBattleHallFunction(FrontierScriptContext *ctx) *returnVar = battleHall->unk_D88; break; case BH_FUNC_RESTORE_HELD_ITEMS: { - Party *party = SaveData_GetParty(v0->saveData); + Party *party = SaveData_GetParty(fieldData->saveData); partySize = BattleHall_GetPlayerPartySize(battleHall->challengeType); for (int i = 0; i < partySize; i++) { @@ -254,7 +254,7 @@ BOOL FrontierScrCmd_CallBattleHallFunction(FrontierScriptContext *ctx) *returnVar = ov104_02235578(battleHall); break; case BH_FUNC_UNK_15: { - Party *v2 = SaveData_GetParty(v0->saveData); + Party *v2 = SaveData_GetParty(fieldData->saveData); Pokemon *v1 = Party_GetPokemonBySlotIndex(v2, battleHall->partySlots[0]); *returnVar = Pokemon_GetValue(v1, MON_DATA_SPECIES, NULL); } break; @@ -286,7 +286,7 @@ BOOL FrontierScrCmd_BattleHall_CheckWonBattle(FrontierScriptContext *ctx) { u16 *destVar = FrontierScriptContext_TryGetVarPointer(ctx); - BattleHall *battleHall = sub_0209B978(ctx->scriptMan->unk_00); + BattleHall *battleHall = sub_0209B978(ctx->scriptMan->frontier); *destVar = battleHall->wonBattle; return FALSE; @@ -299,7 +299,7 @@ BOOL FrontierScrCmd_93(FrontierScriptContext *param0) u16 v2 = FrontierScriptContext_GetVar(param0); u16 *v3 = FrontierScriptContext_TryGetVarPointer(param0); - v0 = sub_0209B978(param0->scriptMan->unk_00); + v0 = sub_0209B978(param0->scriptMan->frontier); *v3 = ov104_02235534(v0, v1, v2); return 1; @@ -320,7 +320,7 @@ static BOOL ov104_02234CEC(FrontierScriptContext *param0) BattleHall *v0; u16 v1 = FrontierScriptContext_TryGetVar(param0, param0->data[0]); - v0 = sub_0209B978(param0->scriptMan->unk_00); + v0 = sub_0209B978(param0->scriptMan->frontier); if (v0->unk_D90 >= 2) { v0->unk_D90 = 0; @@ -334,10 +334,10 @@ BOOL FrontierScrCmd_95(FrontierScriptContext *param0) { u16 *v0; BattleHall *v1; - UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(param0->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(param0->scriptMan->frontier); u16 v3 = FrontierScriptContext_ReadByte(param0); - v1 = sub_0209B978(param0->scriptMan->unk_00); + v1 = sub_0209B978(param0->scriptMan->frontier); if (v1 == NULL) { return 0; @@ -352,7 +352,7 @@ BOOL FrontierScrCmd_95(FrontierScriptContext *param0) BOOL FrontierScrCmd_BattleHall_UpdateWinRecord(FrontierScriptContext *ctx) { u16 *destVar = FrontierScriptContext_TryGetVarPointer(ctx); - BattleHall *battleHall = sub_0209B978(ctx->scriptMan->unk_00); + BattleHall *battleHall = sub_0209B978(ctx->scriptMan->frontier); BattleHall_UpdateWinRecordForCurrentMon(battleHall, destVar); return TRUE; @@ -365,15 +365,15 @@ BOOL FrontierScrCmd_C7(FrontierScriptContext *param0) Party *v2; Pokemon *v3; BattleHall *v4; - UnkStruct_ov104_02230BE4 *v5 = sub_0209B970(param0->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(param0->scriptMan->frontier); - v4 = sub_0209B978(param0->scriptMan->unk_00); - v2 = SaveData_GetParty(v5->saveData); + v4 = sub_0209B978(param0->scriptMan->frontier); + v2 = SaveData_GetParty(fieldData->saveData); v3 = Party_GetPokemonBySlotIndex(v2, v4->partySlots[0]); v1 = Pokemon_GetValue(v3, MON_DATA_SPECIES, NULL); if (v4->challengeType == 0) { - broadcast = SaveData_GetTVBroadcast(v5->saveData); + broadcast = SaveData_GetTVBroadcast(fieldData->saveData); sub_0206D048(broadcast, v3); } diff --git a/src/overlay104/frscrcmd_battle_tower.c b/src/overlay104/frscrcmd_battle_tower.c index bae7531764..6e8c7d4639 100644 --- a/src/overlay104/frscrcmd_battle_tower.c +++ b/src/overlay104/frscrcmd_battle_tower.c @@ -21,6 +21,7 @@ #include "overlay104/struct_ov104_02230BE4.h" #include "savedata/save_table.h" +#include "battle_frontier.h" #include "communication_system.h" #include "field_battle_data_transfer.h" #include "game_records.h" @@ -29,7 +30,6 @@ #include "tv_segment.h" #include "unk_020363E8.h" #include "unk_02049D08.h" -#include "unk_0209B6F8.h" #include "constdata/const_020EA358.h" @@ -41,12 +41,12 @@ BOOL FrontierScrCmd_CallBattleTowerFunction(FrontierScriptContext *ctx) { u16 functionIndex, functionArgument; u16 *destVar; - UnkStruct_ov104_02230BE4 *v8 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); functionIndex = FrontierScriptContext_ReadHalfWord(ctx); functionArgument = FrontierScriptContext_GetVar(ctx); destVar = FrontierScriptContext_TryGetVarPointer(ctx); - BattleTower *battleTower = sub_0209B978(ctx->scriptMan->unk_00); + BattleTower *battleTower = sub_0209B978(ctx->scriptMan->frontier); switch (functionIndex) { case BT_FUNC_RESET_SYSTEM: @@ -54,9 +54,9 @@ BOOL FrontierScrCmd_CallBattleTowerFunction(FrontierScriptContext *ctx) break; case BT_FUNC_UNK_46: *destVar = BattleTower_GiveBattlePointsReward(battleTower); - TVBroadcast *broadcast = SaveData_GetTVBroadcast(v8->saveData); + TVBroadcast *broadcast = SaveData_GetTVBroadcast(fieldData->saveData); sub_0206D0C8(broadcast, *destVar); - GameRecords_AddToRecordValue(SaveData_GetGameRecords(v8->saveData), RECORD_BATTLE_POINTS_RECEIVED, *destVar); + GameRecords_AddToRecordValue(SaveData_GetGameRecords(fieldData->saveData), RECORD_BATTLE_POINTS_RECEIVED, *destVar); break; case BT_FUNC_GET_PARTNER_PARAM: *destVar = BattleTower_GetPartnerParam(battleTower, functionArgument); @@ -77,7 +77,7 @@ BOOL FrontierScrCmd_CallBattleTowerFunction(FrontierScriptContext *ctx) *destVar = (u16)BattleTower_GetChallengeMode(battleTower); break; case BT_FUNC_SET_OPPONENT_TEAMS: - BattleTower_CreateOpponentParties(battleTower, v8->saveData); + BattleTower_CreateOpponentParties(battleTower, fieldData->saveData); break; case BT_FUNC_GET_OPPONENT_OBJECT_ID: *destVar = BattleTower_GetObjectIDFromOpponentIDInFrontierScript(battleTower, functionArgument); @@ -86,10 +86,10 @@ BOOL FrontierScrCmd_CallBattleTowerFunction(FrontierScriptContext *ctx) BattleTower_SetBeatPalmer(battleTower, functionArgument); break; case BT_FUNC_UPDATE_GAME_RECORDS: - BattleTower_UpdateGameRecords(battleTower, v8->saveData); + BattleTower_UpdateGameRecords(battleTower, fieldData->saveData); break; case BT_FUNC_UPDATE_GAME_RECORDS_AND_JOURNAL: - BattleTower_UpdateGameRecordsAndJournal(battleTower, v8->saveData, v8->journalEntry); + BattleTower_UpdateGameRecordsAndJournal(battleTower, fieldData->saveData, fieldData->journalEntry); break; case BT_FUNC_UNK_39: sub_0204A8C8(battleTower); @@ -153,10 +153,10 @@ BOOL FrontierScrCmd_85(FrontierScriptContext *param0) u8 v0; u16 *v1; BattleTower *battleTower; - UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(param0->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(param0->scriptMan->frontier); u16 v4 = FrontierScriptContext_ReadByte(param0); - battleTower = sub_0209B978(param0->scriptMan->unk_00); + battleTower = sub_0209B978(param0->scriptMan->frontier); if (battleTower == NULL) { return 0; @@ -170,7 +170,7 @@ BOOL FrontierScrCmd_85(FrontierScriptContext *param0) BOOL FrontierScrCmd_FreeTowerStruct(FrontierScriptContext *ctx) { - BattleTower *battleTower = sub_0209B978(ctx->scriptMan->unk_00); + BattleTower *battleTower = sub_0209B978(ctx->scriptMan->frontier); BattleTower_Free(battleTower); return FALSE; @@ -178,21 +178,21 @@ BOOL FrontierScrCmd_FreeTowerStruct(FrontierScriptContext *ctx) BOOL FrontierScrCmd_BattleTower_StartBattle(FrontierScriptContext *ctx) { - UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(ctx->scriptMan->unk_00); - BattleTower *battleTower = sub_0209B978(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); + BattleTower *battleTower = sub_0209B978(ctx->scriptMan->frontier); - FieldBattleDTO *dto = FieldBattleDTO_NewBattleTower(battleTower, v2); + FieldBattleDTO *dto = FieldBattleDTO_NewBattleTower(battleTower, fieldData); battleTower->dto = dto; Sound_SetSceneAndPlayBGM(SOUND_SCENE_BATTLE, SEQ_BATTLE_TRAINER, 1); - sub_0209B988(ctx->scriptMan->unk_00, &gBattleApplicationTemplate, dto, 0, NULL); + sub_0209B988(ctx->scriptMan->frontier, &gBattleApplicationTemplate, dto, 0, NULL); return TRUE; } BOOL FrontierScrCmd_BattleTower_CheckWonBattle(FrontierScriptContext *ctx) { - BattleTower *battleTower = sub_0209B978(ctx->scriptMan->unk_00); + BattleTower *battleTower = sub_0209B978(ctx->scriptMan->frontier); u16 *destVar = FrontierScriptContext_TryGetVarPointer(ctx); FieldBattleDTO *dto = battleTower->dto; @@ -206,12 +206,12 @@ BOOL FrontierScrCmd_BattleTower_CheckWonBattle(FrontierScriptContext *ctx) BOOL FrontierScrCmd_89(FrontierScriptContext *param0) { BattleTower *battleTower; - UnkStruct_ov104_02230BE4 *v1 = sub_0209B970(param0->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(param0->scriptMan->frontier); u16 v2 = FrontierScriptContext_GetVar(param0); u16 v3 = FrontierScriptContext_GetVar(param0); u16 *v4 = FrontierScriptContext_TryGetVarPointer(param0); - battleTower = sub_0209B978(param0->scriptMan->unk_00); + battleTower = sub_0209B978(param0->scriptMan->frontier); switch (v2) { case 2: @@ -247,11 +247,11 @@ BOOL FrontierScrCmd_8A(FrontierScriptContext *param0) static BOOL ov104_0223942C(FrontierScriptContext *param0) { BattleTower *battleTower; - UnkStruct_ov104_02230BE4 *v1 = sub_0209B970(param0->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(param0->scriptMan->frontier); - battleTower = sub_0209B978(param0->scriptMan->unk_00); + battleTower = sub_0209B978(param0->scriptMan->frontier); - if (ov104_02239464(param0, battleTower, v1->saveData, param0->data[0], param0->data[1]) == 1) { + if (ov104_02239464(param0, battleTower, fieldData->saveData, param0->data[0], param0->data[1]) == 1) { return 1; } diff --git a/src/overlay104/ov104_02231F74.c b/src/overlay104/ov104_02231F74.c index b2c8f553c8..9d3117c1e3 100644 --- a/src/overlay104/ov104_02231F74.c +++ b/src/overlay104/ov104_02231F74.c @@ -21,6 +21,7 @@ #include "overlay104/struct_ov104_0223319C.h" #include "overlay104/struct_ov104_022331E8.h" +#include "battle_frontier.h" #include "bg_window.h" #include "character_sprite.h" #include "easy_chat_sentence.h" @@ -49,7 +50,6 @@ #include "sys_task_manager.h" #include "system.h" #include "text.h" -#include "unk_0209B6F8.h" #define LIST_MENU_ENTRY_NO_ALT_TEXT 0xFF #define LIST_MENU_BUILDER_HEADER 0xFA @@ -95,9 +95,9 @@ void FrontierShowMessage(FrontierScriptManager *scriptMan, const MessageLoader * if (msgOptions == NULL) { FrontierGraphics *graphics = FrontierScriptManager_GetGraphics(scriptMan); - UnkStruct_ov104_02230BE4 *v4 = sub_0209B970(graphics->unk_08); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(graphics->frontier); - renderDelay = Options_TextFrameDelay(v4->options); + renderDelay = Options_TextFrameDelay(fieldData->options); autoScroll = AUTO_SCROLL_DISABLED; font = FONT_MESSAGE; } else { @@ -952,7 +952,7 @@ void ov104_022330FC(FrontierScriptContext *ctx, u16 *args) void ov104_0223310C(FrontierScriptContext *ctx, u16 *args, u32 bankID) { MessageLoader *msgLoader; - UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(ctx->scriptMan->unk_00); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(ctx->scriptMan->frontier); if (args[0] == 0xFFFF) { msgLoader = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, bankID, HEAP_ID_FIELD3); @@ -960,7 +960,7 @@ void ov104_0223310C(FrontierScriptContext *ctx, u16 *args, u32 bankID) FrontierShowMessage(ctx->scriptMan, msgLoader, args[1], 1, NULL); MessageLoader_Free(msgLoader); } else { - u8 frameDelay = Options_TextFrameDelay(SaveData_GetOptions(v2->saveData)); + u8 frameDelay = Options_TextFrameDelay(SaveData_GetOptions(fieldData->saveData)); ShowSentence(ctx->scriptMan, frameDelay, args[0], args[1], args[2], args[3], TRUE); } diff --git a/src/overlay104/ov104_022395F0.c b/src/overlay104/ov104_022395F0.c index 4c4efdd16c..3416e65e4d 100644 --- a/src/overlay104/ov104_022395F0.c +++ b/src/overlay104/ov104_022395F0.c @@ -17,6 +17,7 @@ #include "overlay104/ov104_0223C164.h" #include "overlay104/struct_ov104_02230BE4.h" +#include "battle_frontier.h" #include "battle_frontier_save.h" #include "battle_frontier_stats.h" #include "battle_hall_save.h" @@ -27,7 +28,6 @@ #include "unk_0202D05C.h" #include "unk_02049D08.h" #include "unk_0204FA34.h" -#include "unk_0209B6F8.h" #include "unk_0209BA80.h" static BOOL ov104_02239680(FrontierScriptContext *param0); @@ -35,16 +35,16 @@ static BOOL ov104_02239C20(FrontierScriptContext *param0); BOOL FrontierScrCmd_AA(FrontierScriptContext *param0) { - UnkStruct_ov104_02230BE4 *v1 = sub_0209B970(param0->scriptMan->unk_00); - UnkStruct_0209BBA4 *v0 = ov104_02239C58(v1->saveData); + FieldFrontierDTO *fieldData = BattleFrontier_GetFieldData(param0->scriptMan->frontier); + UnkStruct_0209BBA4 *v0 = ov104_02239C58(fieldData->saveData); - sub_0209B980(param0->scriptMan->unk_00, v0); + sub_0209B980(param0->scriptMan->frontier, v0); return 0; } BOOL FrontierScrCmd_AB(FrontierScriptContext *param0) { - UnkStruct_0209BBA4 *v0 = sub_0209B978(param0->scriptMan->unk_00); + UnkStruct_0209BBA4 *v0 = sub_0209B978(param0->scriptMan->frontier); ov104_02239C7C(v0); return 0; @@ -58,7 +58,7 @@ BOOL FrontierScrCmd_AC(FrontierScriptContext *param0) u16 v3 = FrontierScriptContext_GetVar(param0); u16 *v4 = FrontierScriptContext_TryGetVarPointer(param0); - v0 = sub_0209B978(param0->scriptMan->unk_00); + v0 = sub_0209B978(param0->scriptMan->frontier); *v4 = ov104_02239C88(v0, v1, v2, v3); return 1; @@ -76,7 +76,7 @@ BOOL FrontierScrCmd_AD(FrontierScriptContext *param0) static BOOL ov104_02239680(FrontierScriptContext *param0) { - UnkStruct_0209BBA4 *v0 = sub_0209B978(param0->scriptMan->unk_00); + UnkStruct_0209BBA4 *v0 = sub_0209B978(param0->scriptMan->frontier); if (v0->unk_6F >= 2) { v0->unk_6F = 0; @@ -92,7 +92,7 @@ BOOL FrontierScrCmd_AE(FrontierScriptContext *param0) u16 v1 = FrontierScriptContext_GetVar(param0); u16 *v2 = FrontierScriptContext_TryGetVarPointer(param0); - v0 = sub_0209B978(param0->scriptMan->unk_00); + v0 = sub_0209B978(param0->scriptMan->frontier); if (v1 == v0->unk_6E) { *v2 = 1; @@ -106,18 +106,18 @@ BOOL FrontierScrCmd_AE(FrontierScriptContext *param0) BOOL FrontierScrCmd_AF(FrontierScriptContext *param0) { UnkStruct_0209BBA4 *v0; - UnkStruct_ov104_02230BE4 *v1; + FieldFrontierDTO *fieldData; u16 v2 = FrontierScriptContext_GetVar(param0); u16 v3 = FrontierScriptContext_GetVar(param0); u16 *v4 = FrontierScriptContext_TryGetVarPointer(param0); - v0 = sub_0209B978(param0->scriptMan->unk_00); - v1 = sub_0209B970(param0->scriptMan->unk_00); + v0 = sub_0209B978(param0->scriptMan->frontier); + fieldData = BattleFrontier_GetFieldData(param0->scriptMan->frontier); - v0->fieldSystem = v1->fieldSystem; + v0->fieldSystem = fieldData->fieldSystem; v0->unk_B0 = v4; - ov104_02239CD0(param0->scriptMan->unk_00, v0, v3); + ov104_02239CD0(param0->scriptMan->frontier, v0, v3); return 1; } @@ -130,7 +130,7 @@ BOOL FrontierScrCmd_B0(FrontierScriptContext *param0) u16 *v3 = FrontierScriptContext_TryGetVarPointer(param0); u16 *v4 = FrontierScriptContext_TryGetVarPointer(param0); - v1 = sub_0209B978(param0->scriptMan->unk_00); + v1 = sub_0209B978(param0->scriptMan->frontier); if (v1->partyMenu->selectedMonSlot == 7) { *v3 = 0xff; @@ -160,7 +160,7 @@ BOOL FrontierScrCmd_B1(FrontierScriptContext *param0) UnkStruct_0209BBA4 *v0; u16 *v1 = FrontierScriptContext_TryGetVarPointer(param0); - v0 = sub_0209B978(param0->scriptMan->unk_00); + v0 = sub_0209B978(param0->scriptMan->frontier); *v1 = v0->unk_59; return 0; @@ -172,14 +172,14 @@ BOOL FrontierScrCmd_B2(FrontierScriptContext *param0) u16 v1, v2; UnkStruct_0202D750 *v3; UnkStruct_0209BBA4 *v4; - UnkStruct_ov104_02230BE4 *v5; + FieldFrontierDTO *fieldData; u8 v6 = FrontierScriptContext_ReadByte(param0); u8 v7 = FrontierScriptContext_ReadByte(param0); u8 v8 = FrontierScriptContext_ReadByte(param0); u16 *v9 = FrontierScriptContext_TryGetVarPointer(param0); - v4 = sub_0209B978(param0->scriptMan->unk_00); - v5 = sub_0209B970(param0->scriptMan->unk_00); + v4 = sub_0209B978(param0->scriptMan->frontier); + fieldData = BattleFrontier_GetFieldData(param0->scriptMan->frontier); switch (v6) { case 0: @@ -220,16 +220,16 @@ BOOL FrontierScrCmd_B2(FrontierScriptContext *param0) break; case 3: - *v9 = (u16)BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v5->saveData), STAT_HALL_WFC_STREAK_ACTIVE); + *v9 = (u16)BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(fieldData->saveData), STAT_HALL_WFC_STREAK_ACTIVE); break; case 4: - *v9 = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(v5->saveData), BattleFrontierStats_GetHallLatestSpeciesIndex(3)); + *v9 = BattleFrontierSave_GetStatAutoHostIdx(SaveData_GetBattleFrontier(fieldData->saveData), BattleFrontierStats_GetHallLatestSpeciesIndex(3)); break; case 5: *v9 = v4->unk_76[v7]; break; case 6: - sub_0204FA50(v5->saveData, BattleHallStreakFlags_Get(v5->saveData), 3); + sub_0204FA50(fieldData->saveData, BattleHallStreakFlags_Get(fieldData->saveData), 3); break; case 7: v4->unk_A0 = v7; @@ -302,21 +302,21 @@ BOOL FrontierScrCmd_B3(FrontierScriptContext *param0) { int v0; BattleTower *battleTower; - UnkStruct_ov104_02230BE4 *v2; + FieldFrontierDTO *fieldData; UnkStruct_0209BBA4 *v3; UnkStruct_0209BBA4 v4; - v2 = sub_0209B970(param0->scriptMan->unk_00); - v3 = sub_0209B978(param0->scriptMan->unk_00); + fieldData = BattleFrontier_GetFieldData(param0->scriptMan->frontier); + v3 = sub_0209B978(param0->scriptMan->frontier); v4 = *v3; ov104_02239C7C(v3); - battleTower = BattleTower_Init(v2->saveData, 0, BATTLE_TOWER_MODE_6); - sub_0209B980(param0->scriptMan->unk_00, battleTower); + battleTower = BattleTower_Init(fieldData->saveData, 0, BATTLE_TOWER_MODE_6); + sub_0209B980(param0->scriptMan->frontier, battleTower); if (battleTower->challengeMode == BATTLE_TOWER_MODE_6) { - BattleFrontier_FlagGeonetLinkInfo(v2->saveData); + BattleFrontier_FlagGeonetLinkInfo(fieldData->saveData); } for (v0 = 0; v0 < battleTower->partySize; v0++) { @@ -331,10 +331,10 @@ BOOL FrontierScrCmd_B3(FrontierScriptContext *param0) battleTower->partnerID = BT_PARTNERS_COUNT + battleTower->partnerGender; if (CommSys_CurNetId() == 0) { - sub_0204A4C8(battleTower, v2->saveData); + sub_0204A4C8(battleTower, fieldData->saveData); } - Party_HealAllMembers(SaveData_GetParty(v2->saveData)); + Party_HealAllMembers(SaveData_GetParty(fieldData->saveData)); sub_0209BA80(battleTower); battleTower->unk_8D4 = 0; @@ -347,7 +347,7 @@ BOOL FrontierScrCmd_B4(FrontierScriptContext *param0) BattleTower *battleTower; u16 *v1 = FrontierScriptContext_TryGetVarPointer(param0); - battleTower = sub_0209B978(param0->scriptMan->unk_00); + battleTower = sub_0209B978(param0->scriptMan->frontier); *v1 = sub_0209BB08(battleTower); return 1; @@ -361,7 +361,7 @@ BOOL FrontierScrCmd_B5(FrontierScriptContext *param0) static BOOL ov104_02239C20(FrontierScriptContext *param0) { - BattleTower *battleTower = sub_0209B978(param0->scriptMan->unk_00); + BattleTower *battleTower = sub_0209B978(param0->scriptMan->frontier); if (battleTower->unk_8D4 < 2) { return 0; @@ -373,7 +373,7 @@ static BOOL ov104_02239C20(FrontierScriptContext *param0) BOOL FrontierScrCmd_ClearTowerStruct(FrontierScriptContext *ctx) { - BattleTower *battleTower = sub_0209B978(ctx->scriptMan->unk_00); + BattleTower *battleTower = sub_0209B978(ctx->scriptMan->frontier); BattleTower_Free(battleTower); battleTower = NULL; diff --git a/src/overlay104/ov104_02239C58.c b/src/overlay104/ov104_02239C58.c index 415b05983b..fd45164a73 100644 --- a/src/overlay104/ov104_02239C58.c +++ b/src/overlay104/ov104_02239C58.c @@ -3,7 +3,7 @@ #include #include -#include "struct_decls/struct_0209B75C_decl.h" +#include "struct_decls/battle_frontier_decl.h" #include "struct_defs/struct_0209BBA4.h" #include "applications/party_menu/defs.h" @@ -12,6 +12,7 @@ #include "field/field_system.h" #include "bag.h" +#include "battle_frontier.h" #include "dexmode_checker.h" #include "heap.h" #include "mail.h" @@ -19,18 +20,17 @@ #include "save_player.h" #include "savedata.h" #include "unk_0202D778.h" -#include "unk_0209B6F8.h" #include "unk_0209BA80.h" #include "constdata/const_020F410C.h" void ov104_02239C7C(UnkStruct_0209BBA4 *param0); BOOL ov104_02239C88(UnkStruct_0209BBA4 *param0, u16 param1, u16 param2, u16 param3); -void ov104_02239CD0(UnkStruct_0209B75C *param0, UnkStruct_0209BBA4 *param1, u16 param2); -static void ov104_02239D1C(UnkStruct_0209B75C *param0, UnkStruct_0209BBA4 *param1, FieldSystem *fieldSystem, int param3); -static void ov104_02239F38(UnkStruct_0209B75C *param0, UnkStruct_0209BBA4 *param1, FieldSystem *fieldSystem, int param3); -static void ov104_02239FB0(UnkStruct_0209B75C *param0, UnkStruct_0209BBA4 *param1, FieldSystem *fieldSystem, enum HeapID heapID); -static void ov104_0223A090(UnkStruct_0209B75C *param0, UnkStruct_0209BBA4 *param1, FieldSystem *fieldSystem, int param3); +void ov104_02239CD0(BattleFrontier *param0, UnkStruct_0209BBA4 *param1, u16 param2); +static void ov104_02239D1C(BattleFrontier *param0, UnkStruct_0209BBA4 *param1, FieldSystem *fieldSystem, int param3); +static void ov104_02239F38(BattleFrontier *param0, UnkStruct_0209BBA4 *param1, FieldSystem *fieldSystem, int param3); +static void ov104_02239FB0(BattleFrontier *param0, UnkStruct_0209BBA4 *param1, FieldSystem *fieldSystem, enum HeapID heapID); +static void ov104_0223A090(BattleFrontier *param0, UnkStruct_0209BBA4 *param1, FieldSystem *fieldSystem, int param3); UnkStruct_0209BBA4 *ov104_02239C58(SaveData *saveData) { @@ -78,7 +78,7 @@ BOOL ov104_02239C88(UnkStruct_0209BBA4 *param0, u16 param1, u16 param2, u16 para return v0; } -void ov104_02239CD0(UnkStruct_0209B75C *param0, UnkStruct_0209BBA4 *param1, u16 param2) +void ov104_02239CD0(BattleFrontier *param0, UnkStruct_0209BBA4 *param1, u16 param2) { FieldSystem *fieldSystem = param1->fieldSystem; @@ -100,7 +100,7 @@ void ov104_02239CD0(UnkStruct_0209B75C *param0, UnkStruct_0209BBA4 *param1, u16 } } -static void ov104_02239D1C(UnkStruct_0209B75C *param0, UnkStruct_0209BBA4 *param1, FieldSystem *fieldSystem, int param3) +static void ov104_02239D1C(BattleFrontier *param0, UnkStruct_0209BBA4 *param1, FieldSystem *fieldSystem, int param3) { u8 v0; @@ -155,7 +155,7 @@ static void ov104_02239D1C(UnkStruct_0209B75C *param0, UnkStruct_0209BBA4 *param sub_0209B988(param0, &gPokemonPartyAppTemplate, param1->partyMenu, 0, NULL); } -static void ov104_02239F38(UnkStruct_0209B75C *param0, UnkStruct_0209BBA4 *param1, FieldSystem *fieldSystem, int param3) +static void ov104_02239F38(BattleFrontier *param0, UnkStruct_0209BBA4 *param1, FieldSystem *fieldSystem, int param3) { switch (param1->partyMenu->selectedMonSlot) { case 7: @@ -179,7 +179,7 @@ static void ov104_02239F38(UnkStruct_0209B75C *param0, UnkStruct_0209BBA4 *param param1->unk_9D = 2; } -static void ov104_02239FB0(UnkStruct_0209B75C *param0, UnkStruct_0209BBA4 *param1, FieldSystem *fieldSystem, enum HeapID heapID) +static void ov104_02239FB0(BattleFrontier *param0, UnkStruct_0209BBA4 *param1, FieldSystem *fieldSystem, enum HeapID heapID) { static const u8 visiblePages[] = { SUMMARY_PAGE_INFO, @@ -212,7 +212,7 @@ static void ov104_02239FB0(UnkStruct_0209B75C *param0, UnkStruct_0209BBA4 *param sub_0209B988(param0, &gPokemonSummaryScreenApp, param1->unk_AC, 0, NULL); } -static void ov104_0223A090(UnkStruct_0209B75C *param0, UnkStruct_0209BBA4 *param1, FieldSystem *fieldSystem, int param3) +static void ov104_0223A090(BattleFrontier *param0, UnkStruct_0209BBA4 *param1, FieldSystem *fieldSystem, int param3) { param1->unk_9F = param1->unk_AC->monIndex; Heap_Free(param1->unk_AC); diff --git a/src/overlay104/ov104_0223A0C4.c b/src/overlay104/ov104_0223A0C4.c index ad106ef7fc..8fe6910b5e 100644 --- a/src/overlay104/ov104_0223A0C4.c +++ b/src/overlay104/ov104_0223A0C4.c @@ -630,7 +630,6 @@ static const UnkStruct_ov104_0223FCB4 Unk_ov104_0223FCB4[] = { void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *dto); void BattleTower_CreateWiFiTrainerParty(SaveData *saveData, FrontierDataDTO *dto, const u8 opponentID); -FieldBattleDTO *FieldBattleDTO_NewBattleTower(BattleTower *battleTower, UnkStruct_ov104_02230BE4 *param1); void ov104_0223A734(BattleTower *battleTower, u16 param1); u16 ov104_0223A750(BattleTower *battleTower, const u16 *param1); int BattleTower_GetPokemonDataNarcID(u8 challengeMode); @@ -889,15 +888,15 @@ static u32 BattleTower_CopySetToPokemonDataDTO(BattleTower *battleTower, Frontie return randomPersonality; } -FieldBattleDTO *FieldBattleDTO_NewBattleTower(BattleTower *battleTower, UnkStruct_ov104_02230BE4 *param1) +FieldBattleDTO *FieldBattleDTO_NewBattleTower(BattleTower *battleTower, FieldFrontierDTO *fieldData) { int i; FieldBattleDTO *dto = FieldBattleDTO_New(battleTower->heapID, BattleTower_GetBattleTypeFromChallengeMode(battleTower->challengeMode)); - SaveData *saveData = param1->saveData; + SaveData *saveData = fieldData->saveData; Party *party = SaveData_GetParty(saveData); - FieldBattleDTO_InitFromGameState(dto, NULL, param1->saveData, param1->mapHeaderID, param1->journalEntry, param1->bagCursor, param1->subscreenCursorOn); + FieldBattleDTO_InitFromGameState(dto, NULL, fieldData->saveData, fieldData->mapHeaderID, fieldData->journalEntry, fieldData->bagCursor, fieldData->subscreenCursorOn); dto->background = BACKGROUND_BATTLE_TOWER; dto->terrain = TERRAIN_BATTLE_TOWER; diff --git a/src/overlay104/ov104_0223A7F4.c b/src/overlay104/ov104_0223A7F4.c index a5d1e1df51..6e28822432 100644 --- a/src/overlay104/ov104_0223A7F4.c +++ b/src/overlay104/ov104_0223A7F4.c @@ -331,7 +331,7 @@ void ov104_0223AB0C(u8 param0, u16 param1, u8 param2, FrontierPokemonDataDTO *pa return; } -FieldBattleDTO *FieldBattleDTO_NewBattleFactory(BattleFactory *battleFactory, UnkStruct_ov104_02230BE4 *param1) +FieldBattleDTO *FieldBattleDTO_NewBattleFactory(BattleFactory *battleFactory, FieldFrontierDTO *fieldData) { int i; FrontierTrainerDataDTO trDataDTO; @@ -343,7 +343,7 @@ FieldBattleDTO *FieldBattleDTO_NewBattleFactory(BattleFactory *battleFactory, Un Party_HealAllMembers(battleFactory->opponentsParty); FieldBattleDTO *battleDTO = FieldBattleDTO_New(HEAP_ID_FIELD2, BattleFactory_GetBattleType(battleFactory->challengeType)); - FieldBattleDTO_InitFromGameState(battleDTO, NULL, param1->saveData, param1->mapHeaderID, param1->journalEntry, param1->bagCursor, param1->subscreenCursorOn); + FieldBattleDTO_InitFromGameState(battleDTO, NULL, fieldData->saveData, fieldData->mapHeaderID, fieldData->journalEntry, fieldData->bagCursor, fieldData->subscreenCursorOn); battleDTO->background = BACKGROUND_BATTLE_FACTORY; battleDTO->terrain = TERRAIN_BATTLE_FACTORY; diff --git a/src/overlay104/ov104_0223AF58.c b/src/overlay104/ov104_0223AF58.c index e8b6208113..5581bb6c1b 100644 --- a/src/overlay104/ov104_0223AF58.c +++ b/src/overlay104/ov104_0223AF58.c @@ -38,7 +38,6 @@ void ov104_0223AFB4(u8 param0, u8 param1, int param2, u8 param3, u8 param4, u16 void ov104_0223B0C8(u8 param0, u8 param1, u8 param2, u8 param3, u16 param4, u16 param5[], u8 param6); u8 BattleHall_GetPlayerPartySize(u8 challengeType); u8 BattleHall_GetOpponentPartySize(u8 challengeType); -FieldBattleDTO *FieldBattleDTO_NewBattleHall(BattleHall *battleHall, UnkStruct_ov104_02230BE4 *param1); static u32 BattleHall_GetBattleType(u8 challengeType); static void ov104_0223B518(FrontierPokemonDataDTO *param0, u8 param1, u16 param2, u16 param3[], int param4, int param5, int param6); static u32 BattleHall_GetOpponentLevel(BattleHall *battleHall, u8 param1); @@ -1563,7 +1562,7 @@ void ov104_0223B0C8(u8 param0, u8 param1, u8 param2, u8 param3, u16 param4, u16 return; } -FieldBattleDTO *FieldBattleDTO_NewBattleHall(BattleHall *battleHall, UnkStruct_ov104_02230BE4 *param1) +FieldBattleDTO *FieldBattleDTO_NewBattleHall(BattleHall *battleHall, FieldFrontierDTO *fieldData) { int i; u8 rank; @@ -1578,7 +1577,7 @@ FieldBattleDTO *FieldBattleDTO_NewBattleHall(BattleHall *battleHall, UnkStruct_o Party_HealAllMembers(party); FieldBattleDTO *battleDTO = FieldBattleDTO_New(HEAP_ID_FIELD2, BattleHall_GetBattleType(battleHall->challengeType)); - FieldBattleDTO_InitFromGameState(battleDTO, NULL, param1->saveData, param1->mapHeaderID, param1->journalEntry, param1->bagCursor, param1->subscreenCursorOn); + FieldBattleDTO_InitFromGameState(battleDTO, NULL, fieldData->saveData, fieldData->mapHeaderID, fieldData->journalEntry, fieldData->bagCursor, fieldData->subscreenCursorOn); battleDTO->background = BACKGROUND_BATTLE_HALL; battleDTO->terrain = TERRAIN_BATTLE_HALL; diff --git a/src/overlay104/ov104_0223B6F4.c b/src/overlay104/ov104_0223B6F4.c index 6e146d73a5..3ba22b7fdb 100644 --- a/src/overlay104/ov104_0223B6F4.c +++ b/src/overlay104/ov104_0223B6F4.c @@ -31,7 +31,6 @@ static int ov104_0223B6F4(u8 param0, int param1, int param2); void ov104_0223B760(u8 param0, int param1, u16 param2[], u8 param3); u8 BattleCastle_GetOpponentPartySize(u8 challengeType, BOOL param1); -FieldBattleDTO *FieldBattleDTO_NewBattleCastle(BattleCastle *battleCastle, UnkStruct_ov104_02230BE4 *param1); static u32 BattleCastle_GetBattleType(u8 challengeType); u8 BattleCastle_GetOpponentLevel(BattleCastle *battleCastle); void ov104_0223BA24(Party *param0); @@ -153,7 +152,7 @@ u8 BattleCastle_GetOpponentPartySize(u8 challengeType, BOOL param1) return 3; } -FieldBattleDTO *FieldBattleDTO_NewBattleCastle(BattleCastle *battleCastle, UnkStruct_ov104_02230BE4 *param1) +FieldBattleDTO *FieldBattleDTO_NewBattleCastle(BattleCastle *battleCastle, FieldFrontierDTO *fieldData) { int i; u8 baseSlotID; @@ -165,7 +164,7 @@ FieldBattleDTO *FieldBattleDTO_NewBattleCastle(BattleCastle *battleCastle, UnkSt Party_HealAllMembers(battleCastle->opponentsParty); FieldBattleDTO *battleDTO = FieldBattleDTO_New(HEAP_ID_FIELD2, BattleCastle_GetBattleType(battleCastle->challengeType)); - FieldBattleDTO_InitFromGameState(battleDTO, NULL, param1->saveData, param1->mapHeaderID, param1->journalEntry, param1->bagCursor, param1->subscreenCursorOn); + FieldBattleDTO_InitFromGameState(battleDTO, NULL, fieldData->saveData, fieldData->mapHeaderID, fieldData->journalEntry, fieldData->bagCursor, fieldData->subscreenCursorOn); battleDTO->background = BACKGROUND_BATTLE_CASTLE; battleDTO->terrain = TERRAIN_BATTLE_CASTLE; diff --git a/src/overlay104/ov104_0223BCBC.c b/src/overlay104/ov104_0223BCBC.c index 2ea523d3d1..40da92c684 100644 --- a/src/overlay104/ov104_0223BCBC.c +++ b/src/overlay104/ov104_0223BCBC.c @@ -26,7 +26,6 @@ #include "string_gf.h" #include "trainer_info.h" -FieldBattleDTO *FieldBattleDTO_NewBattleArcade(BattleArcade *battleArcade, UnkStruct_ov104_02230BE4 *param1); static u32 BattleArcade_GetBattleType(u8 challengeType); u8 BattleArcade_GetPokemonLevel(BattleArcade *battleArcade); void ov104_0223C04C(BattleArcade *battleArcade); @@ -157,7 +156,7 @@ u8 BattleArcade_GetOpponentPartySize(u8 challengeType, BOOL includeBothOpponents return ARCADE_PARTY_SIZE_SOLO; } -FieldBattleDTO *FieldBattleDTO_NewBattleArcade(BattleArcade *battleArcade, UnkStruct_ov104_02230BE4 *param1) +FieldBattleDTO *FieldBattleDTO_NewBattleArcade(BattleArcade *battleArcade, FieldFrontierDTO *fieldData) { int i; u8 baseSlotID; @@ -167,7 +166,7 @@ FieldBattleDTO *FieldBattleDTO_NewBattleArcade(BattleArcade *battleArcade, UnkSt u8 opponentPartySize = BattleArcade_GetOpponentPartySize(battleArcade->challengeType, 0); FieldBattleDTO *battleDTO = FieldBattleDTO_New(HEAP_ID_FIELD2, BattleArcade_GetBattleType(battleArcade->challengeType)); - FieldBattleDTO_InitFromGameState(battleDTO, NULL, param1->saveData, param1->mapHeaderID, param1->journalEntry, param1->bagCursor, param1->subscreenCursorOn); + FieldBattleDTO_InitFromGameState(battleDTO, NULL, fieldData->saveData, fieldData->mapHeaderID, fieldData->journalEntry, fieldData->bagCursor, fieldData->subscreenCursorOn); battleDTO->background = BACKGROUND_BATTLE_ARCADE; battleDTO->terrain = TERRAIN_BATTLE_ARCADE; diff --git a/src/overlay104/ov104_0223D860.c b/src/overlay104/ov104_0223D860.c index 8671a50231..b309d6ba82 100644 --- a/src/overlay104/ov104_0223D860.c +++ b/src/overlay104/ov104_0223D860.c @@ -3,7 +3,7 @@ #include #include -#include "struct_decls/struct_0209B75C_decl.h" +#include "struct_decls/battle_frontier_decl.h" #include "overlay063/ov63_0222D77C.h" #include "overlay063/struct_ov63_0222CCB8.h" @@ -12,21 +12,21 @@ #include "overlay104/struct_ov104_0223C634.h" #include "overlay104/struct_ov104_0223D8F0.h" -#include "unk_0209B6F8.h" +#include "battle_frontier.h" -typedef BOOL (*UnkFuncPtr_ov104_022418A8)(UnkStruct_0209B75C *, UnkStruct_ov104_0223C634 *); +typedef BOOL (*UnkFuncPtr_ov104_022418A8)(BattleFrontier *, UnkStruct_ov104_0223C634 *); -static void ov104_0223D898(UnkStruct_0209B75C *param0, UnkStruct_ov104_0223C634 *param1); -void ov104_0223D860(UnkStruct_0209B75C *param0, u16 param1, u8 param2, s16 param3[], int param4); -void ov104_0223D8C4(UnkStruct_0209B75C *param0); -static BOOL ov104_0223D8F0(UnkStruct_0209B75C *param0, UnkStruct_ov104_0223C634 *param1); +static void ov104_0223D898(BattleFrontier *param0, UnkStruct_ov104_0223C634 *param1); +void ov104_0223D860(BattleFrontier *param0, u16 param1, u8 param2, s16 param3[], int param4); +void ov104_0223D8C4(BattleFrontier *param0); +static BOOL ov104_0223D8F0(BattleFrontier *param0, UnkStruct_ov104_0223C634 *param1); static const UnkFuncPtr_ov104_022418A8 Unk_ov104_022418A8[] = { NULL, ov104_0223D8F0 }; -void ov104_0223D860(UnkStruct_0209B75C *param0, u16 param1, u8 param2, s16 param3[], int param4) +void ov104_0223D860(BattleFrontier *param0, u16 param1, u8 param2, s16 param3[], int param4) { UnkStruct_ov104_0223C634 *v0; int v1; @@ -41,7 +41,7 @@ void ov104_0223D860(UnkStruct_0209B75C *param0, u16 param1, u8 param2, s16 param } } -static void ov104_0223D898(UnkStruct_0209B75C *param0, UnkStruct_ov104_0223C634 *param1) +static void ov104_0223D898(BattleFrontier *param0, UnkStruct_ov104_0223C634 *param1) { int v0; @@ -56,7 +56,7 @@ static void ov104_0223D898(UnkStruct_0209B75C *param0, UnkStruct_ov104_0223C634 } } -void ov104_0223D8C4(UnkStruct_0209B75C *param0) +void ov104_0223D8C4(BattleFrontier *param0) { UnkStruct_ov104_0223C634 *v0; int v1; @@ -72,11 +72,11 @@ void ov104_0223D8C4(UnkStruct_0209B75C *param0) } } -static BOOL ov104_0223D8F0(UnkStruct_0209B75C *param0, UnkStruct_ov104_0223C634 *param1) +static BOOL ov104_0223D8F0(BattleFrontier *param0, UnkStruct_ov104_0223C634 *param1) { UnkStruct_ov104_0223D8F0 *v0 = ¶m1->unk_26; UnkStruct_ov63_0222CCB8 v1; - FrontierGraphics *v2 = sub_0209B974(param0); + FrontierGraphics *v2 = BattleFrontier_GetGraphics(param0); if (v0->unk_02[2] > 0) { v0->unk_02[2]--; diff --git a/src/scrcmd.c b/src/scrcmd.c index ca68244eea..4f9bdedc9f 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -6,6 +6,7 @@ #include "constants/accessories.h" #include "constants/battle.h" +#include "constants/battle_frontier.h" #include "constants/daycare.h" #include "constants/field/dynamic_map_features.h" #include "constants/field/window.h" @@ -92,6 +93,7 @@ #include "appearance.h" #include "bag.h" +#include "battle_frontier.h" #include "bg_window.h" #include "binoculars_vista_lighthouse.h" #include "camera.h" @@ -220,7 +222,6 @@ #include "vars_flags.h" #include "wifi_list.h" -#include "constdata/const_020F8BE0.h" #include "res/text/bank/mystery_gift_phrase.h" #include "res/text/bank/tough_words.h" @@ -702,7 +703,7 @@ static BOOL ScrCmd_CloseSaveInfo(ScriptContext *ctx); static BOOL ScrCmd_Unused_2C3(ScriptContext *ctx); static BOOL ScrCmd_SetMenuXOriginSide(ScriptContext *ctx); static BOOL ScrCmd_SetMenuYOriginSide(ScriptContext *ctx); -static BOOL ScrCmd_2C4(ScriptContext *ctx); +static BOOL ScrCmd_LaunchBattleFrontierScene(ScriptContext *ctx); static BOOL ScrCmd_2C6(ScriptContext *ctx); static BOOL ScrCmd_IsCommGameCodePlatinum(ScriptContext *ctx); static BOOL ScrCmd_AdvanceEternaGymClock(ScriptContext *ctx); @@ -6568,31 +6569,31 @@ static BOOL ScrCmd_Unused_2C3(ScriptContext *ctx) return FALSE; } -static BOOL ScrCmd_2C4(ScriptContext *ctx) +static BOOL ScrCmd_LaunchBattleFrontierScene(ScriptContext *ctx) { - void **v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA); - u8 v1 = ScriptContext_ReadByte(ctx); - UnkStruct_ov104_02230BE4 *v2 = Heap_AllocAtEnd(HEAP_ID_FIELD2, sizeof(UnkStruct_ov104_02230BE4)); + void **dataPtr = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA); + u8 sceneID = ScriptContext_ReadByte(ctx); + FieldFrontierDTO *fieldData = Heap_AllocAtEnd(HEAP_ID_FIELD2, sizeof(FieldFrontierDTO)); - MI_CpuClear8(v2, sizeof(UnkStruct_ov104_02230BE4)); + MI_CpuClear8(fieldData, sizeof(FieldFrontierDTO)); - *v0 = v2; + *dataPtr = fieldData; - if (v1 == 5 || v1 == 6) { - v2->unk_00 = ctx->fieldSystem->battleTower; + if (sceneID == FRONTIER_SCENE_TOWER_CORRIDOR || sceneID == FRONTIER_SCENE_TOWER_MULTI_CORRIDOR) { + fieldData->unk_00 = ctx->fieldSystem->battleTower; } else { - v2->unk_00 = NULL; + fieldData->unk_00 = NULL; } - v2->options = SaveData_GetOptions(ctx->fieldSystem->saveData); - v2->sceneID = v1; - v2->saveData = ctx->fieldSystem->saveData; - v2->mapHeaderID = ctx->fieldSystem->location->mapId; - v2->journalEntry = ctx->fieldSystem->journalEntry; - v2->bagCursor = ctx->fieldSystem->bagCursor; - v2->subscreenCursorOn = ctx->fieldSystem->battleSubscreenCursorOn; + fieldData->options = SaveData_GetOptions(ctx->fieldSystem->saveData); + fieldData->sceneID = sceneID; + fieldData->saveData = ctx->fieldSystem->saveData; + fieldData->mapHeaderID = ctx->fieldSystem->location->mapId; + fieldData->journalEntry = ctx->fieldSystem->journalEntry; + fieldData->bagCursor = ctx->fieldSystem->bagCursor; + fieldData->subscreenCursorOn = ctx->fieldSystem->battleSubscreenCursorOn; - FieldTask_RunApplication(ctx->task, &Unk_020F8BE0, v2); + FieldTask_RunApplication(ctx->task, &gBattleFrontierAppTemplate, fieldData); ScriptContext_Pause(ctx, sub_02041CC8); return TRUE; diff --git a/src/unk_0207DA28.c b/src/unk_0207DA28.c index b23dc87835..91deabd13e 100644 --- a/src/unk_0207DA28.c +++ b/src/unk_0207DA28.c @@ -20,6 +20,7 @@ #include "overlay117/struct_ov117_02260440.h" #include "wfc_settings/wfc_settings.h" +#include "battle_frontier.h" #include "communication_system.h" #include "encounter.h" #include "field_system.h" @@ -31,7 +32,6 @@ #include "unk_02038FFC.h" #include "unk_0203D1B8.h" #include "unk_02099604.h" -#include "unk_0209BA18.h" #include "vars_flags.h" #include "wifi_overlays.h" diff --git a/src/unk_0209B6F8.c b/src/unk_0209B6F8.c deleted file mode 100644 index 63c823d52c..0000000000 --- a/src/unk_0209B6F8.c +++ /dev/null @@ -1,305 +0,0 @@ -#include "unk_0209B6F8.h" - -#include -#include - -#include "constants/heap.h" - -#include "functypes/funcptr_0209B988.h" -#include "overlay104/defs.h" -#include "overlay104/frontier_graphics.h" -#include "overlay104/frontier_script_manager.h" -#include "overlay104/struct_ov104_0222E8C8.h" -#include "overlay104/struct_ov104_02230BE4.h" -#include "overlay104/struct_ov104_0223C634.h" -#include "overlay104/struct_ov104_0223C688.h" -#include "overlay104/struct_ov104_0223D3B0.h" -#include "overlay104/struct_ov104_0223D3B0_sub1.h" -#include "overlay104/struct_ov104_0223D8F0.h" - -#include "game_overlay.h" -#include "heap.h" -#include "overlay_manager.h" -#include "system.h" - -#include "constdata/const_020F8BE0.h" - -FS_EXTERN_OVERLAY(overlay63); -FS_EXTERN_OVERLAY(overlay104); -FS_EXTERN_OVERLAY(battle_factory_app); - -typedef struct UnkStruct_0209B75C_t { - UnkStruct_ov104_02230BE4 *unk_00; - ApplicationManager *appMan; - void *unk_08; - UnkFuncPtr_0209B988 unk_0C; - u8 unk_10; - FrontierScriptManager *unk_14; - FrontierGraphics *graphics; - u8 unk_1C; - u8 isGraphicsInitialized; - u8 unk_1E; - u16 unk_20; - u8 unk_22; - UnkStruct_ov104_0223C688 unk_24[24]; - UnkStruct_ov104_0223C634 unk_6C[32]; - UnkStruct_ov104_0223D8F0 unk_78C[32]; - UnkStruct_ov104_0223D3B0 unk_98C; -} UnkStruct_0209B75C; - -static BOOL sub_0209B6F8(ApplicationManager *appMan, int *state); -int sub_0209B75C(ApplicationManager *appMan, int *param1); -int sub_0209B8A4(ApplicationManager *appMan, int *param1); -static void InitFrontierGraphics(UnkStruct_0209B75C *param0); -static void FreeFrontierGraphics(UnkStruct_0209B75C *param0); -static void LoadBattleFrontierOverlays(void); -static void UnloadBattleFrontierOverlays(void); -static void sub_0209B8E8(UnkStruct_0209B75C *param0); - -const ApplicationManagerTemplate Unk_020F8BE0 = { - sub_0209B6F8, - sub_0209B75C, - sub_0209B8A4, - 0xffffffff -}; - -static BOOL sub_0209B6F8(ApplicationManager *appMan, int *state) -{ - - LoadBattleFrontierOverlays(); - - UnkStruct_0209B75C *v0 = ApplicationManager_NewData(appMan, sizeof(UnkStruct_0209B75C), HEAP_ID_FIELD2); - MI_CpuClear8(v0, sizeof(UnkStruct_0209B75C)); - - sub_0209B8E8(v0); - sub_0209B9EC(v0); - - v0->unk_00 = ApplicationManager_Args(appMan); - GF_ASSERT(v0->unk_00 != NULL); - - v0->unk_14 = FrontierScriptManager_New(v0, HEAP_ID_FIELD2, v0->unk_00->sceneID); - FrontierScriptManager_Load(v0->unk_14, v0->unk_00->sceneID, 0); - - InitFrontierGraphics(v0); - - return TRUE; -} - -int sub_0209B75C(ApplicationManager *appMan, int *param1) -{ - UnkStruct_0209B75C *v0 = ApplicationManager_Data(appMan); - int v1; - - switch (*param1) { - case 0: - *param1 = 1; - break; - case 1: - if (v0->unk_22 == 1) { - *param1 = 2; - break; - } - - if (v0->isGraphicsInitialized == 0) { - break; - } - - if (v0->unk_1E == 1) { - *param1 = 5; - break; - } - - if (ov104_0222E6A8(v0->unk_14) == 1) { - if (gSystem.pressedKeys & PAD_BUTTON_B) { - *param1 = 2; - } - } - - if (v0->appMan != NULL) { - *param1 = 3; - } - break; - case 2: - return 1; - case 3: - ov104_0223C634(v0->graphics); - FreeFrontierGraphics(v0); - UnloadBattleFrontierOverlays(); - *param1 = 4; - break; - case 4: - if (ApplicationManager_Exec(v0->appMan) == 1) { - ApplicationManager_Free(v0->appMan); - LoadBattleFrontierOverlays(); - - if (v0->unk_0C != NULL) { - v0->unk_0C(v0->unk_08); - } - - if ((v0->unk_08 != NULL) && (v0->unk_10 == 1)) { - Heap_Free(v0->unk_08); - } - - v0->appMan = NULL; - v0->unk_0C = NULL; - v0->unk_08 = NULL; - - InitFrontierGraphics(v0); - ov104_0223C688(v0->graphics); - *param1 = 1; - } - break; - case 5: - FreeFrontierGraphics(v0); - sub_0209B8E8(v0); - *param1 = 6; - break; - case 6: - InitFrontierGraphics(v0); - - if (v0->unk_20 == 0xffff) { - FrontierScriptManager_UpdateMessageLoader(v0->unk_14, v0->unk_00->sceneID, HEAP_ID_FIELD2); - } else { - UnkStruct_ov104_0222E8C8 *v2; - - v2 = ov104_0222E8C8(v0->unk_14, HEAP_ID_FIELD2); - FrontierScriptManager_Free(v0->unk_14); - - v0->unk_14 = FrontierScriptManager_New(v0, HEAP_ID_FIELD2, v0->unk_00->sceneID); - FrontierScriptManager_Load(v0->unk_14, v0->unk_00->sceneID, v0->unk_20); - ov104_0222E8E8(v0->unk_14, v2); - } - - v0->unk_1E = 0; - *param1 = 1; - break; - } - - return 0; -} - -int sub_0209B8A4(ApplicationManager *appMan, int *param1) -{ - UnkStruct_0209B75C *v0 = ApplicationManager_Data(appMan); - - FrontierScriptManager_Free(v0->unk_14); - - FreeFrontierGraphics(v0); - ApplicationManager_FreeData(appMan); - UnloadBattleFrontierOverlays(); - - return 1; -} - -static void InitFrontierGraphics(UnkStruct_0209B75C *param0) -{ - param0->graphics = FrontierGraphics_New(param0); - param0->isGraphicsInitialized = TRUE; -} - -static void FreeFrontierGraphics(UnkStruct_0209B75C *param0) -{ - FrontierGraphics_Free(param0->graphics); - param0->isGraphicsInitialized = FALSE; -} - -static void sub_0209B8E8(UnkStruct_0209B75C *param0) -{ - int v0; - - for (v0 = 0; v0 < 24; v0++) { - param0->unk_24[v0].unk_00 = 0xffff; - } - - MI_CpuClear8(param0->unk_6C, sizeof(UnkStruct_ov104_0223C634) * 32); - - for (v0 = 0; v0 < 32; v0++) { - param0->unk_6C[v0].unk_08.unk_04 = 0xffff; - } -} - -static void LoadBattleFrontierOverlays(void) -{ - Overlay_LoadByID(FS_OVERLAY_ID(overlay104), OVERLAY_LOAD_ASYNC); - Overlay_LoadByID(FS_OVERLAY_ID(battle_factory_app), OVERLAY_LOAD_ASYNC); - Overlay_LoadByID(FS_OVERLAY_ID(overlay63), OVERLAY_LOAD_ASYNC); -} - -static void UnloadBattleFrontierOverlays(void) -{ - Overlay_UnloadByID(FS_OVERLAY_ID(overlay104)); - Overlay_UnloadByID(FS_OVERLAY_ID(battle_factory_app)); - Overlay_UnloadByID(FS_OVERLAY_ID(overlay63)); -} - -UnkStruct_ov104_02230BE4 *sub_0209B970(UnkStruct_0209B75C *param0) -{ - return param0->unk_00; -} - -FrontierGraphics *sub_0209B974(UnkStruct_0209B75C *param0) -{ - return param0->graphics; -} - -void *sub_0209B978(UnkStruct_0209B75C *param0) -{ - return param0->unk_00->unk_00; -} - -void sub_0209B980(UnkStruct_0209B75C *param0, void *param1) -{ - param0->unk_00->unk_00 = param1; -} - -void sub_0209B988(UnkStruct_0209B75C *param0, const ApplicationManagerTemplate *param1, void *param2, int param3, UnkFuncPtr_0209B988 param4) -{ - GF_ASSERT(param0->appMan == NULL); - param0->appMan = ApplicationManager_New(param1, param2, HEAP_ID_FIELD2); - param0->unk_08 = param2; - param0->unk_10 = param3; - param0->unk_0C = param4; -} - -void sub_0209B9B4(UnkStruct_0209B75C *param0) -{ - param0->unk_22 = 1; -} - -void sub_0209B9BC(UnkStruct_0209B75C *param0, u16 param1, u16 param2) -{ - param0->unk_00->sceneID = param1; - param0->unk_1E = 1; - param0->unk_20 = param2; -} - -UnkStruct_ov104_0223C688 *sub_0209B9CC(UnkStruct_0209B75C *param0) -{ - return param0->unk_24; -} - -UnkStruct_ov104_0223C634 *sub_0209B9D0(UnkStruct_0209B75C *param0) -{ - return param0->unk_6C; -} - -UnkStruct_ov104_0223C634 *sub_0209B9D4(UnkStruct_0209B75C *param0, int param1) -{ - return ¶m0->unk_6C[param1]; -} - -UnkStruct_ov104_0223D3B0 *sub_0209B9E0(UnkStruct_0209B75C *param0) -{ - return ¶m0->unk_98C; -} - -void sub_0209B9EC(UnkStruct_0209B75C *param0) -{ - int v0; - - MI_CpuClear8(¶m0->unk_98C, sizeof(UnkStruct_ov104_0223D3B0_sub1)); - - for (v0 = 0; v0 < 8; v0++) { - param0->unk_98C.unk_00[v0] = 0xffff; - } -} diff --git a/src/unk_0209BA18.c b/src/unk_0209BA18.c deleted file mode 100644 index 7b7d6c5125..0000000000 --- a/src/unk_0209BA18.c +++ /dev/null @@ -1,38 +0,0 @@ -#include "unk_0209BA18.h" - -#include -#include - -#include "constants/heap.h" - -#include "field/field_system.h" -#include "overlay104/struct_ov104_02230BE4.h" - -#include "field_system.h" -#include "heap.h" -#include "save_player.h" - -#include "constdata/const_020F8BE0.h" - -UnkStruct_ov104_02230BE4 *sub_0209BA18(FieldSystem *fieldSystem, void *param1) -{ - UnkStruct_ov104_02230BE4 *v0 = Heap_AllocAtEnd(HEAP_ID_FIELD2, sizeof(UnkStruct_ov104_02230BE4)); - - MI_CpuClear8(v0, sizeof(UnkStruct_ov104_02230BE4)); - - v0->unk_00 = param1; - v0->options = SaveData_GetOptions(fieldSystem->saveData); - v0->saveData = fieldSystem->saveData; - v0->journalEntry = fieldSystem->journalEntry; - v0->bagCursor = fieldSystem->bagCursor; - v0->subscreenCursorOn = fieldSystem->battleSubscreenCursorOn; - v0->unk_14 = 0; - v0->unk_18 = 0; - v0->mapHeaderID = fieldSystem->location->mapId; - v0->sceneID = 14; - v0->fieldSystem = fieldSystem; - - FieldSystem_StartChildProcess(fieldSystem, &Unk_020F8BE0, v0); - - return v0; -}