Document Frontier script startup process (#1210)

This commit is contained in:
VicSevenT
2026-06-20 16:54:08 -05:00
committed by GitHub
parent 8b6fa50408
commit 5acff6f73c
60 changed files with 1026 additions and 1053 deletions

View File

@@ -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

View File

@@ -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

31
include/battle_frontier.h Normal file
View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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;

View File

@@ -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

View File

@@ -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

View File

@@ -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);

View File

@@ -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

View File

@@ -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

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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

View File

@@ -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:

View File

@@ -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:

View File

@@ -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:

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

323
src/battle_frontier.c Normal file
View File

@@ -0,0 +1,323 @@
#include "battle_frontier.h"
#include <nitro.h>
#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;
}

View File

@@ -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',

View File

@@ -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, &param0->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, &param0->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(&param0->unk_1C) + param0->unk_A4.unk_06;
v0 = ov63_0222D1B8(&param0->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 = &param0->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);

View File

@@ -1,7 +1,8 @@
#include "overlay104/ov104_0222EA90.h"
#include "overlay104/frontier_scenes.h"
#include <nitro.h>
#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;
}

View File

@@ -2,21 +2,21 @@
#include <nitro.h>
#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);
}

View File

@@ -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());

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -3,7 +3,7 @@
#include <nitro.h>
#include <string.h>
#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);

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -3,7 +3,7 @@
#include <nitro.h>
#include <string.h>
#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 = &param1->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]--;

View File

@@ -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;

View File

@@ -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"

View File

@@ -1,305 +0,0 @@
#include "unk_0209B6F8.h"
#include <nitro.h>
#include <string.h>
#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 &param0->unk_6C[param1];
}
UnkStruct_ov104_0223D3B0 *sub_0209B9E0(UnkStruct_0209B75C *param0)
{
return &param0->unk_98C;
}
void sub_0209B9EC(UnkStruct_0209B75C *param0)
{
int v0;
MI_CpuClear8(&param0->unk_98C, sizeof(UnkStruct_ov104_0223D3B0_sub1));
for (v0 = 0; v0 < 8; v0++) {
param0->unk_98C.unk_00[v0] = 0xffff;
}
}

View File

@@ -1,38 +0,0 @@
#include "unk_0209BA18.h"
#include <nitro.h>
#include <string.h>
#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;
}