Document some facility-specific frscrcmds and structs (#1127)

This commit is contained in:
VicSevenT
2026-05-12 21:55:53 -05:00
committed by GitHub
parent a383c1712e
commit fde87529c1
63 changed files with 3334 additions and 3300 deletions

View File

@@ -1,4 +1,3 @@
#include "generated/battle_tower_functions.h"
#include "generated/battle_tower_modes.h"
#include "generated/fade_types.h"
#include "generated/game_records.h"
@@ -6,6 +5,7 @@
#include "generated/trainer_score_events.h"
#include "generated/vars_flags.h"
#include "constants/battle_frontier_movements.h"
#include "constants/battle_tower_functions.h"
#include "constants/battle_tower.h"
#include "constants/colors.h"
#include "constants/fade_screen.h"
@@ -534,20 +534,20 @@
.short FRSCRCMD_5E
.endm
.macro FrontierScrCmd_5F
.short FRSCRCMD_5F
.macro OpenBattleFactoryAppInitial
.short FRSCRCMD_OPENBATTLEFACTORYAPPINITIAL
.endm
.macro FrontierScrCmd_60
.short FRSCRCMD_60
.macro BattleFactory_CleanupBattle
.short FRSCRCMD_BATTLEFACTORY_CLEANUPBATTLE
.endm
.macro FrontierScrCmd_61
.short FRSCRCMD_61
.macro BattleFactory_StartBattle
.short FRSCRCMD_BATTLEFACTORY_STARTBATTLE
.endm
.macro FrontierScrCmd_62
.short FRSCRCMD_62
.macro OpenBattleFactoryAppForTrade
.short FRSCRCMD_OPENBATTLEFACTORYAPPFORTRADE
.endm
.macro FrontierScrCmd_63
@@ -566,17 +566,17 @@
.short FRSCRCMD_66
.endm
.macro FrontierScrCmd_67 arg0, arg1, arg2, arg3
.short FRSCRCMD_67
.byte \arg0
.macro CallBattleFactoryFunction command, arg1, arg2, destVar
.short FRSCRCMD_CALLBATTLEFACTORYFUNCTION
.byte \command
.byte \arg1
.byte \arg2
.short \arg3
.short \destVar
.endm
.macro FrontierScrCmd_68 arg0
.short FRSCRCMD_68
.short \arg0
.macro BattleFactory_CheckWonBattle destVar
.short FRSCRCMD_BATTLEFACTORY_CHECKWONBATTLE
.short \destVar
.endm
.macro FrontierScrCmd_69 arg0, arg1, arg2
@@ -736,12 +736,12 @@
.short FRSCRCMD_FREETOWERSTRUCT
.endm
.macro FrontierScrCmd_87
.short FRSCRCMD_87
.macro BattleTower_StartBattle
.short FRSCRCMD_BATTLETOWER_STARTBATTLE
.endm
.macro CheckWonTowerBattle destVar
.short FRSCRCMD_CHECKWONTOWERBATTLE
.macro BattleTower_CheckWonBattle destVar
.short FRSCRCMD_BATTLETOWER_CHECKWONBATTLE
.short \destVar
.endm
@@ -779,8 +779,8 @@
.short FRSCRCMD_OPENBATTLEHALLAPP
.endm
.macro BattleHall_CheckWonBattle
.short FRSCRCMD_BATTLEHALL_CHECKWONBATTLE
.macro BattleHall_CleanupBattle
.short FRSCRCMD_BATTLEHALL_CLEANUPBATTLE
.endm
.macro BattleHall_StartBattle
@@ -795,8 +795,8 @@
.short \returnVar
.endm
.macro BattleHall_GetBattleResult destVar
.short FRSCRCMD_BATTLEHALL_GETBATTLERESULT
.macro BattleHall_CheckWonBattle destVar
.short FRSCRCMD_BATTLEHALL_CHECKWONBATTLE
.short \destVar
.endm
@@ -841,20 +841,20 @@
.short FRSCRCMD_99
.endm
.macro FrontierScrCmd_9A
.short FRSCRCMD_9A
.macro OpenBattleCastleSelfApp
.short FRSCRCMD_OPENBATTLECASTLESELFAPP
.endm
.macro FrontierScrCmd_9B
.short FRSCRCMD_9B
.macro BattleCastle_CleanupBattle
.short FRSCRCMD_BATTLECASTLE_CLEANUPBATTLE
.endm
.macro FrontierScrCmd_9C
.short FRSCRCMD_9C
.macro BattleCastle_StartBattle
.short FRSCRCMD_BATTLECASTLE_STARTBATTLE
.endm
.macro FrontierScrCmd_9D
.short FRSCRCMD_9D
.macro OpenBattleCastleOpponentApp
.short FRSCRCMD_OPENBATTLECASTLEOPPONENTAPP
.endm
.macro FrontierScrCmd_9E
@@ -865,17 +865,17 @@
.short FRSCRCMD_9F
.endm
.macro FrontierScrCmd_A0 arg0, arg1, arg2, arg3
.short FRSCRCMD_A0
.byte \arg0
.macro CallBattleCastleFunction command, arg1, arg2, destVar
.short FRSCRCMD_CALLBATTLECASTLEFUNCTION
.byte \command
.byte \arg1
.byte \arg2
.short \arg3
.short \destVar
.endm
.macro FrontierScrCmd_A1 arg0
.short FRSCRCMD_A1
.short \arg0
.macro BattleCastle_CheckWonBattle destVar
.short FRSCRCMD_BATTLECASTLE_CHECKWONBATTLE
.short \destVar
.endm
.macro FrontierScrCmd_A2 arg0, arg1, arg2
@@ -1015,12 +1015,12 @@
.short FRSCRCMD_BA
.endm
.macro FrontierScrCmd_BB
.short FRSCRCMD_BB
.macro BattleArcade_CleanupBattle
.short FRSCRCMD_BATTLEARCADE_CLEANUPBATTLE
.endm
.macro FrontierScrCmd_BC
.short FRSCRCMD_BC
.macro BattleArcade_StartBattle
.short FRSCRCMD_BATTLEARCADE_STARTBATTLE
.endm
.macro FrontierScrCmd_BD
@@ -1031,17 +1031,17 @@
.short FRSCRCMD_BE
.endm
.macro FrontierScrCmd_BF arg0, arg1, arg2, arg3
.short FRSCRCMD_BF
.byte \arg0
.macro CallBattleArcadeFunction command, arg1, arg2, destVar
.short FRSCRCMD_CALLBATTLEARCADEFUNCTION
.byte \command
.short \arg1
.short \arg2
.short \arg3
.short \destVar
.endm
.macro FrontierScrCmd_C0 arg0
.short FRSCRCMD_C0
.short \arg0
.macro BattleArcade_CheckWonBattle destVar
.short FRSCRCMD_BATTLEARCADE_CHECKWONBATTLE
.short \destVar
.endm
.macro FrontierScrCmd_C1 arg0, arg1, arg2
@@ -1056,8 +1056,8 @@
.short \arg0
.endm
.macro FrontierScrCmd_C3
.short FRSCRCMD_C3
.macro OpenBattleArcadeApp
.short FRSCRCMD_OPENBATTLEARCADEAPP
.endm
.macro FrontierScrCmd_C4 arg0

View File

@@ -1,6 +1,5 @@
#include "generated/badges.h"
#include "generated/battle_tower_modes.h"
#include "generated/battle_tower_functions.h"
#include "generated/berry_growth_stages.h"
#include "generated/catching_show_points_category.h"
#include "generated/comm_club_ret_codes.h"
@@ -37,6 +36,7 @@
#include "constants/animation_tags.h"
#include "constants/battle.h"
#include "constants/battle_tower.h"
#include "constants/battle_tower_functions.h"
#include "constants/battle/battle_script.h"
#include "constants/boat_cutscene.h"
#include "constants/colors.h"

View File

@@ -1,45 +0,0 @@
BT_FUNC_CHECK_ENOUGH_VALID_POKEMON = 1
BT_FUNC_RESET_SYSTEM
BT_FUNC_UNK_03
BT_FUNC_UNK_04
BT_FUNC_SET_COMMUNICATION_CLUB_ACCESSIBLE
BT_FUNC_CLEAR_COMMUNICATION_CLUB_ACCESSIBLE
BT_FUNC_UNK_08 = 8
BT_FUNC_UNK_09
BT_FUNC_UNK_10
BT_FUNC_UNK_11
BT_FUNC_UNK_12
BT_FUNC_UNK_14 = 14
BT_FUNC_UNK_15
BT_FUNC_UNK_16
BT_FUNC_UNK_30 = 30
BT_FUNC_UNK_31
BT_FUNC_CHECK_DUPLICATE_SPECIES_AND_HELD_ITEMS
BT_FUNC_GET_NEXT_OPPONENT_NUM
BT_FUNC_UNK_34
BT_FUNC_HAS_DEFEATED_SEVEN_TRAINERS
BT_FUNC_UNK_36
BT_FUNC_UPDATE_GAME_RECORDS
BT_FUNC_UPDATE_GAME_RECORDS_AND_JOURNAL
BT_FUNC_UNK_39
BT_FUNC_SET_OPPONENT_TEAMS
BT_FUNC_GET_OPPONENT_OBJECT_ID
BT_FUNC_UNK_42
BT_FUNC_GET_CHALLENGE_MODE
BT_FUNC_SET_BEAT_PALMER
BT_FUNC_GET_BEAT_PALMER
BT_FUNC_UNK_46
BT_FUNC_UNK_47
BT_FUNC_UNK_48
BT_FUNC_UNK_49
BT_FUNC_SET_PARTNER_ID
BT_FUNC_GET_PARTNER_ID
BT_FUNC_UNK_52
BT_FUNC_GET_SLOT_INDEX
BT_FUNC_UNK_54
BT_FUNC_GET_PARTNER_PARAM
BT_FUNC_UNK_56
BT_FUNC_UNK_57
BT_FUNC_UNK_58
BT_FUNC_UNK_59
BT_FUNC_CHECK_IS_NULL = 100

View File

@@ -38,7 +38,6 @@ metang_generators = {
'battle_sub_animations': { 'type': 'enum', 'tag': 'BattleSubAnimation' },
'battle_subscripts': { 'type': 'enum', 'tag': 'BattleSubscript' }, # functionally pre-generating the NARC index
'battle_terrains': { 'type': 'enum', 'tag': 'BattleTerrain' },
'battle_tower_functions': { 'type': 'enum', 'tag': 'BattleTowerFunction' },
'battle_tower_modes': { 'type': 'enum', 'tag': 'BattleTowerMode' },
'berry_growth_stages': { 'type': 'enum', 'tag': 'BerryGrowthStage' },
'bg_event_dirs': { 'type': 'enum', 'tag': 'BgEventDir' },

View File

@@ -2,6 +2,32 @@
#define POKEPLATINUM_APPLICATIONS_BATTLE_ARCADE_MAIN_H
#include "overlay_manager.h"
#include "party.h"
#include "savedata.h"
typedef struct BattleArcadeAppArgs {
SaveData *saveData;
u8 challengeType;
u8 padding_05[2];
u8 unk_07;
int *unk_08;
u8 *rouletteSpeed;
u8 *selectedEffect;
u16 *unk_14;
u16 partnersStreak;
u8 padding_1A[2];
u16 currentStreak;
u16 round;
u8 padding_20[16];
Party *party;
Party *opponentsParty;
u16 cursorPos;
u8 padding_3A[2];
void *battleArcade;
u8 padding_3E[2];
u8 randomizeCursorMovement;
u8 padding_41[3];
} BattleArcadeAppArgs;
BOOL BattleArcadeApp_Init(ApplicationManager *appMan, int *state);
BOOL BattleArcadeApp_Main(ApplicationManager *appMan, int *state);

View File

@@ -0,0 +1,24 @@
#ifndef POKEPLATINUM_APPLICATIONS_BATTLE_CASTLE_ARGS_H
#define POKEPLATINUM_APPLICATIONS_BATTLE_CASTLE_ARGS_H
#include "party.h"
#include "savedata.h"
typedef struct BattleCastleAppArgs {
SaveData *saveData;
u8 challengeType;
u8 unused[3];
u8 identityUnlocked[4];
u8 levelAdjustmentUnlocked[4];
u8 statsUnlocked[4];
u8 movesUnlocked[4];
Party *party;
Party *opponentsParty;
u16 selectedMonSlot;
u8 padding[2];
void *battleCastle;
u16 partnersCP;
u8 padding2[6];
} BattleCastleAppArgs;
#endif // POKEPLATINUM_APPLICATIONS_BATTLE_CASTLE_ARGS_H

View File

@@ -2,6 +2,21 @@
#define POKEPLATINUM_APPLICATIONS_BATTLE_FACTORY_MAIN_H
#include "overlay_manager.h"
#include "party.h"
#include "savedata.h"
typedef struct BattleFactoryAppArgs {
SaveData *saveData;
u8 challengeType;
u8 unk_05;
u8 isExchangeMode;
u8 padding_07;
Party *personalParty;
Party *receivableParty;
u16 selectedIndices[6];
void *battleFactory;
u8 padding_20[4];
} BattleFactoryAppArgs;
int BattleFactoryApp_Init(ApplicationManager *appMan, int *state);
int BattleFactoryApp_Main(ApplicationManager *appMan, int *state);

View File

@@ -0,0 +1,60 @@
#ifndef POKEPLATINUM_CONSTANTS_BATTLE_ARCADE_FUNCTIONS_H
#define POKEPLATINUM_CONSTANTS_BATTLE_ARCADE_FUNCTIONS_H
enum BattleArcadeFunction {
BA_FUNC_UNK_0 = 0,
BA_FUNC_UNK_1,
BA_FUNC_SET_CHALLENGE_TYPE,
BA_FUNC_UNK_3,
BA_FUNC_UNK_4,
BA_FUNC_INCREMENT_CURRENT_STREAK,
BA_FUNC_UNK_6,
BA_FUNC_RESET_SYSTEM,
BA_FUNC_UNK_8,
BA_FUNC_UNK_9,
BA_FUNC_UNK_10,
BA_FUNC_UNK_11,
BA_FUNC_UNK_12,
BA_FUNC_UNK_13,
BA_FUNC_UNK_14,
BA_FUNC_UNK_15,
BA_FUNC_UNK_16,
BA_FUNC_GET_CHALLENGE_TYPE,
BA_FUNC_UNK_18,
BA_FUNC_UNK_19,
BA_FUNC_UNK_20,
BA_FUNC_UNK_21,
BA_FUNC_UNK_22,
BA_FUNC_UNK_23,
BA_FUNC_UNK_24,
BA_FUNC_UNK_25,
BA_FUNC_UNK_26,
BA_FUNC_UNK_27,
BA_FUNC_IS_MULTIPLAYER_CHALLENGE,
BA_FUNC_UNK_29,
BA_FUNC_UNK_30,
BA_FUNC_UNK_31,
BA_FUNC_UNK_32,
BA_FUNC_UNK_33,
BA_FUNC_UNK_34,
BA_FUNC_UNK_35,
BA_FUNC_UNK_36,
BA_FUNC_UNK_37,
BA_FUNC_UNK_38,
BA_FUNC_UNK_39,
BA_FUNC_UNK_40,
BA_FUNC_UNK_41,
BA_FUNC_UNK_42,
BA_FUNC_UNK_43,
BA_FUNC_UNK_44,
BA_FUNC_UNK_45,
BA_FUNC_UNK_46,
BA_FUNC_UNK_47,
BA_FUNC_UNK_48,
BA_FUNC_UNK_49,
BA_FUNC_UNK_50,
BA_FUNC_UNK_51,
BA_FUNC_UNK_52,
};
#endif // POKEPLATINUM_CONSTANTS_BATTLE_ARCADE_FUNCTIONS_H

View File

@@ -0,0 +1,52 @@
#ifndef POKEPLATINUM_CONSTANTS_BATTLE_CASTLE_FUNCTIONS_H
#define POKEPLATINUM_CONSTANTS_BATTLE_CASTLE_FUNCTIONS_H
enum BattleCastleFunction {
BC_FUNC_UNK_0 = 0,
BC_FUNC_UNK_1,
BC_FUNC_SET_CHALLENGE_TYPE,
BC_FUNC_UNK_3,
BC_FUNC_GET_CURRENT_STREAK,
BC_FUNC_INCREMENT_CURRENT_STREAK,
BC_FUNC_UNK_6,
BC_FUNC_RESET_SYSTEM,
BC_FUNC_UNK_8,
BC_FUNC_UNK_9,
BC_FUNC_UNK_10,
BC_FUNC_UNK_11,
BC_FUNC_UNK_12,
BC_FUNC_UNK_13,
BC_FUNC_UNK_14,
BC_FUNC_UNK_15,
BC_FUNC_UNK_16,
BC_FUNC_GET_CHALLENGE_TYPE,
BC_FUNC_UNK_18,
BC_FUNC_UNK_19,
BC_FUNC_UNK_20,
BC_FUNC_UNK_21,
BC_FUNC_UNK_22,
BC_FUNC_UNK_23,
BC_FUNC_UNK_24,
BC_FUNC_UNK_25,
BC_FUNC_UNK_26,
BC_FUNC_UNK_27,
BC_FUNC_UNK_28,
BC_FUNC_UNK_29,
BC_FUNC_UNK_30,
BC_FUNC_UNK_31,
BC_FUNC_UNK_32,
BC_FUNC_UNK_33,
BC_FUNC_UNK_34,
BC_FUNC_IS_MULTIPLAYER_CHALLENGE,
BC_FUNC_UNK_36,
BC_FUNC_UNK_37,
BC_FUNC_UNK_38,
BC_FUNC_UNK_39,
BC_FUNC_UNK_40,
BC_FUNC_UNK_41,
BC_FUNC_UNK_42,
BC_FUNC_UNK_43,
BC_FUNC_UNK_44,
};
#endif // POKEPLATINUM_CONSTANTS_BATTLE_CASTLE_FUNCTIONS_H

View File

@@ -0,0 +1,49 @@
#ifndef POKEPLATINUM_CONSTANTS_BATTLE_FACTORY_FUNCTIONS_H
#define POKEPLATINUM_CONSTANTS_BATTLE_FACTORY_FUNCTIONS_H
enum BattleFactoryFunction {
BF_FUNC_UNK_0 = 0,
BF_FUNC_UNK_1,
BF_FUNC_SET_CHALLENGE_TYPE,
BF_FUNC_UNK_3,
BF_FUNC_GET_CURRENT_STREAK,
BF_FUNC_INCREMENT_CURRENT_STREAK,
BF_FUNC_UNK_6,
BF_FUNC_RESET_SYSTEM,
BF_FUNC_UNK_8,
BF_FUNC_UNK_9,
BF_FUNC_UNK_10,
BF_FUNC_UNK_11,
BF_FUNC_UNK_12,
BF_FUNC_UNK_13,
BF_FUNC_UNK_14,
BF_FUNC_UNK_15,
BF_FUNC_UNK_16,
BF_FUNC_UNK_17,
BF_FUNC_UNK_18,
BF_FUNC_UNK_19,
BF_FUNC_UNK_20,
BF_FUNC_UNK_21,
BF_FUNC_UNK_22,
BF_FUNC_UNK_23,
BF_FUNC_UNK_24,
BF_FUNC_UNK_25,
BF_FUNC_UNK_26,
BF_FUNC_UNK_27,
BF_FUNC_IS_MULTIPLAYER_CHALLENGE,
BF_FUNC_GET_CHALLENGE_TYPE,
BF_FUNC_UNK_30,
BF_FUNC_UNK_31,
BF_FUNC_UNK_32,
BF_FUNC_UNK_33,
BF_FUNC_UNK_34,
BF_FUNC_UNK_35,
BF_FUNC_UNK_36,
BF_FUNC_UNK_37,
BF_FUNC_UNK_38,
BF_FUNC_UNK_39,
BF_FUNC_UNK_40,
BF_FUNC_UNK_41,
};
#endif // POKEPLATINUM_CONSTANTS_BATTLE_FACTORY_FUNCTIONS_H

View File

@@ -25,7 +25,7 @@
#define ARCADE_EFFECT_FREEZE_FOE 5
#define ARCADE_EFFECT_FOE_GET_BERRY 6
#define ARCADE_EFFECT_FOE_GET_ITEM 7
#define ARCADE_EFFECT_FOE_GET_LEVELS 8
#define ARCADE_EFFECT_FOE_LEVEL_UP 8
#define ARCADE_EFFECT_LOWER_ALLY_HP 9
#define ARCADE_EFFECT_POISON_ALLY 10
#define ARCADE_EFFECT_PARALYZE_ALLY 11
@@ -34,17 +34,17 @@
#define ARCADE_EFFECT_FREEZE_ALLY 14
#define ARCADE_EFFECT_ALLY_GET_BERRY 15
#define ARCADE_EFFECT_ALLY_GET_ITEM 16
#define ARCADE_EFFECT_ALLY_GET_LEVELS 17
#define ARCADE_EFFECT_ALLY_LEVEL_UP 17
#define ARCADE_EFFECT_SUNNY_BATTLE 18
#define ARCADE_EFFECT_RAINY_BATTLE 19
#define ARCADE_EFFECT_SANDY_BATTLE 20
#define ARCADE_EFFECT_HAIL_BATTLE 21
#define ARCADE_EFFECT_FOGGY_BATTLE 22
#define ARCADE_EFFECT_TRICK_ROOM 23
#define ARCADE_EFFECT_SWAP_MONS 24
#define ARCADE_EFFECT_SPEED_UP 25
#define ARCADE_EFFECT_SLOW_DOWN 26
#define ARCADE_EFFECT_RANDOMIZE_CURSOR 27
#define ARCADE_EFFECT_SPEED_UP 24
#define ARCADE_EFFECT_SLOW_DOWN 25
#define ARCADE_EFFECT_RANDOMIZE_CURSOR 26
#define ARCADE_EFFECT_SWAP_MONS 27
#define ARCADE_EFFECT_GET_1_BP 28
#define ARCADE_EFFECT_NO_BATTLE 29
#define ARCADE_EFFECT_NO_EVENT 30

View File

@@ -1,44 +1,46 @@
#ifndef POKEPLATINUM_CONSTANTS_BATTLE_HALL_FUNCTIONS_H
#define POKEPLATINUM_CONSTANTS_BATTLE_HALL_FUNCTIONS_H
#define BH_FUNC_UNK_0 0
#define BH_FUNC_UNK_1 1
#define BH_FUNC_SET_CHALLENGE_TYPE 2
#define BH_FUNC_GET_SELECTED_TYPE_INDEX 3
#define BH_FUNC_GET_CURRENT_STREAK 4
#define BH_FUNC_INCREMENT_CURRENT_STEAK 5
#define BH_FUNC_UNK_6 6
#define BH_FUNC_RESET_SYSTEM 7
#define BH_FUNC_UNK_8 8
#define BH_FUNC_UNK_9 9
#define BH_FUNC_UNK_10 10
#define BH_FUNC_UNK_11 11
#define BH_FUNC_UNK_12 12
#define BH_FUNC_UNK_13 13
#define BH_FUNC_UNK_14 14
#define BH_FUNC_UNK_15 15
#define BH_FUNC_UNK_16 16
#define BH_FUNC_GET_CHALLENGE_TYPE 17
#define BH_FUNC_UNK_18 18
#define BH_FUNC_UNK_19 19
#define BH_FUNC_UNK_20 20
#define BH_FUNC_UNK_21 21
#define BH_FUNC_UNK_22 22
#define BH_FUNC_UNK_23 23
#define BH_FUNC_UNK_24 24
#define BH_FUNC_UNK_25 25
#define BH_FUNC_UNK_26 26
#define BH_FUNC_UPDATE_HELD_ITEMS 27
#define BH_FUNC_UNK_28 28
#define BH_FUNC_UNK_29 29
#define BH_FUNC_IS_MULTIPLAYER_CHALLENGE 30
#define BH_FUNC_TOGGLE_ENGINE_LAYER 31
#define BH_FUNC_UNK_32 32
#define BH_FUNC_UNK_33 33
#define BH_FUNC_UNK_34 34
#define BH_FUNC_UNK_35 35
#define BH_FUNC_SET_BASE_LEVEL 36
#define BH_FUNC_UNK_37 37
#define BH_FUNC_DUMMY 38
enum BattleHallFunction {
BH_FUNC_UNK_0 = 0,
BH_FUNC_UNK_1,
BH_FUNC_SET_CHALLENGE_TYPE,
BH_FUNC_GET_SELECTED_TYPE_INDEX,
BH_FUNC_GET_CURRENT_STREAK,
BH_FUNC_INCREMENT_CURRENT_STREAK,
BH_FUNC_UNK_6,
BH_FUNC_RESET_SYSTEM,
BH_FUNC_UNK_8,
BH_FUNC_UNK_9,
BH_FUNC_UNK_10,
BH_FUNC_UNK_11,
BH_FUNC_UNK_12,
BH_FUNC_UNK_13,
BH_FUNC_UNK_14,
BH_FUNC_UNK_15,
BH_FUNC_UNK_16,
BH_FUNC_GET_CHALLENGE_TYPE,
BH_FUNC_UNK_18,
BH_FUNC_UNK_19,
BH_FUNC_UNK_20,
BH_FUNC_UNK_21,
BH_FUNC_UNK_22,
BH_FUNC_UNK_23,
BH_FUNC_UNK_24,
BH_FUNC_UNK_25,
BH_FUNC_UNK_26,
BH_FUNC_UPDATE_HELD_ITEMS,
BH_FUNC_UNK_28,
BH_FUNC_UNK_29,
BH_FUNC_IS_MULTIPLAYER_CHALLENGE,
BH_FUNC_TOGGLE_ENGINE_LAYER,
BH_FUNC_UNK_32,
BH_FUNC_UNK_33,
BH_FUNC_UNK_34,
BH_FUNC_UNK_35,
BH_FUNC_SET_BASE_LEVEL,
BH_FUNC_UNK_37,
BH_FUNC_DUMMY,
};
#endif // POKEPLATINUM_CONSTANTS_BATTLE_HALL_FUNCTIONS_H

View File

@@ -0,0 +1,52 @@
#ifndef POKEPLATINUM_CONSTANTS_BATTLE_TOWER_FUNCTIONS_H
#define POKEPLATINUM_CONSTANTS_BATTLE_TOWER_FUNCTIONS_H
enum BattleTowerFunction {
BT_FUNC_CHECK_ENOUGH_VALID_POKEMON = 1,
BT_FUNC_RESET_SYSTEM,
BT_FUNC_UNK_03,
BT_FUNC_UNK_04,
BT_FUNC_SET_COMMUNICATION_CLUB_ACCESSIBLE,
BT_FUNC_CLEAR_COMMUNICATION_CLUB_ACCESSIBLE,
BT_FUNC_UNK_08 = 8,
BT_FUNC_UNK_09,
BT_FUNC_UNK_10,
BT_FUNC_UNK_11,
BT_FUNC_UNK_12,
BT_FUNC_UNK_14 = 14,
BT_FUNC_UNK_15,
BT_FUNC_UNK_16,
BT_FUNC_UNK_30 = 30,
BT_FUNC_UNK_31,
BT_FUNC_CHECK_DUPLICATE_SPECIES_AND_HELD_ITEMS,
BT_FUNC_GET_NEXT_OPPONENT_NUM,
BT_FUNC_UNK_34,
BT_FUNC_HAS_DEFEATED_SEVEN_TRAINERS,
BT_FUNC_UNK_36,
BT_FUNC_UPDATE_GAME_RECORDS,
BT_FUNC_UPDATE_GAME_RECORDS_AND_JOURNAL,
BT_FUNC_UNK_39,
BT_FUNC_SET_OPPONENT_TEAMS,
BT_FUNC_GET_OPPONENT_OBJECT_ID,
BT_FUNC_UNK_42,
BT_FUNC_GET_CHALLENGE_MODE,
BT_FUNC_SET_BEAT_PALMER,
BT_FUNC_GET_BEAT_PALMER,
BT_FUNC_UNK_46,
BT_FUNC_UNK_47,
BT_FUNC_UNK_48,
BT_FUNC_UNK_49,
BT_FUNC_SET_PARTNER_ID,
BT_FUNC_GET_PARTNER_ID,
BT_FUNC_UNK_52,
BT_FUNC_GET_SLOT_INDEX,
BT_FUNC_UNK_54,
BT_FUNC_GET_PARTNER_PARAM,
BT_FUNC_UNK_56,
BT_FUNC_UNK_57,
BT_FUNC_UNK_58,
BT_FUNC_UNK_59,
BT_FUNC_CHECK_IS_NULL = 100,
};
#endif // POKEPLATINUM_CONSTANTS_BATTLE_TOWER_FUNCTIONS_H

View File

@@ -100,16 +100,16 @@ ScriptCommand(FRSCRCMD_STOPBGM, FrontierScrCmd_StopBGM)
ScriptCommand(FRSCRCMD_5C, FrontierScrCmd_5C)
ScriptCommand(FRSCRCMD_5D, FrontierScrCmd_5D)
ScriptCommand(FRSCRCMD_5E, FrontierScrCmd_5E)
ScriptCommand(FRSCRCMD_5F, FrontierScrCmd_5F)
ScriptCommand(FRSCRCMD_60, FrontierScrCmd_60)
ScriptCommand(FRSCRCMD_61, FrontierScrCmd_61)
ScriptCommand(FRSCRCMD_62, FrontierScrCmd_62)
ScriptCommand(FRSCRCMD_OPENBATTLEFACTORYAPPINITIAL, FrontierScrCmd_OpenBattleFactoryAppInitial)
ScriptCommand(FRSCRCMD_BATTLEFACTORY_CLEANUPBATTLE, FrontierScrCmd_BattleFactory_CleanupBattle)
ScriptCommand(FRSCRCMD_BATTLEFACTORY_STARTBATTLE, FrontierScrCmd_BattleFactory_StartBattle)
ScriptCommand(FRSCRCMD_OPENBATTLEFACTORYAPPFORTRADE, FrontierScrCmd_OpenBattleFactoryAppForTrade)
ScriptCommand(FRSCRCMD_63, FrontierScrCmd_63)
ScriptCommand(FRSCRCMD_64, FrontierScrCmd_64)
ScriptCommand(FRSCRCMD_65, FrontierScrCmd_65)
ScriptCommand(FRSCRCMD_66, FrontierScrCmd_66)
ScriptCommand(FRSCRCMD_67, FrontierScrCmd_67)
ScriptCommand(FRSCRCMD_68, FrontierScrCmd_68)
ScriptCommand(FRSCRCMD_CALLBATTLEFACTORYFUNCTION, FrontierScrCmd_CallBattleFactoryFunction)
ScriptCommand(FRSCRCMD_BATTLEFACTORY_CHECKWONBATTLE, FrontierScrCmd_BattleFactory_CheckWonBattle)
ScriptCommand(FRSCRCMD_69, FrontierScrCmd_69)
ScriptCommand(FRSCRCMD_6A, FrontierScrCmd_6A)
ScriptCommand(FRSCRCMD_6B, FrontierScrCmd_6B)
@@ -140,18 +140,18 @@ ScriptCommand(FRSCRCMD_REMOTEBATTLEPOINTS, FrontierScrCmd_RemoteBa
ScriptCommand(FRSCRCMD_CALLBATTLETOWERFUNCTION, FrontierScrCmd_CallBattleTowerFunction)
ScriptCommand(FRSCRCMD_85, FrontierScrCmd_85)
ScriptCommand(FRSCRCMD_FREETOWERSTRUCT, FrontierScrCmd_FreeTowerStruct)
ScriptCommand(FRSCRCMD_87, FrontierScrCmd_87)
ScriptCommand(FRSCRCMD_CHECKWONTOWERBATTLE, FrontierScrCmd_CheckWonTowerBattle)
ScriptCommand(FRSCRCMD_BATTLETOWER_STARTBATTLE, FrontierScrCmd_BattleTower_StartBattle)
ScriptCommand(FRSCRCMD_BATTLETOWER_CHECKWONBATTLE, FrontierScrCmd_BattleTower_CheckWonBattle)
ScriptCommand(FRSCRCMD_89, FrontierScrCmd_89)
ScriptCommand(FRSCRCMD_8A, FrontierScrCmd_8A)
ScriptCommand(FRSCRCMD_8B, FrontierScrCmd_8B)
ScriptCommand(FRSCRCMD_8C, FrontierScrCmd_8C)
ScriptCommand(FRSCRCMD_8D, FrontierScrCmd_8D)
ScriptCommand(FRSCRCMD_OPENBATTLEHALLAPP, FrontierScrCmd_OpenBattleHallApp)
ScriptCommand(FRSCRCMD_BATTLEHALL_CHECKWONBATTLE, FrontierScrCmd_BattleHall_CheckWonBattle)
ScriptCommand(FRSCRCMD_BATTLEHALL_CLEANUPBATTLE, FrontierScrCmd_BattleHall_CleanupBattle)
ScriptCommand(FRSCRCMD_BATTLEHALL_STARTBATTLE, FrontierScrCmd_BattleHall_StartBattle)
ScriptCommand(FRSCRCMD_CALLBATTLEHALLFUNCTION, FrontierScrCmd_CallBattleHallFunction)
ScriptCommand(FRSCRCMD_BATTLEHALL_GETBATTLERESULT, FrontierScrCmd_BattleHall_GetBattleResult)
ScriptCommand(FRSCRCMD_BATTLEHALL_CHECKWONBATTLE, FrontierScrCmd_BattleHall_CheckWonBattle)
ScriptCommand(FRSCRCMD_93, FrontierScrCmd_93)
ScriptCommand(FRSCRCMD_94, FrontierScrCmd_94)
ScriptCommand(FRSCRCMD_95, FrontierScrCmd_95)
@@ -159,14 +159,14 @@ ScriptCommand(FRSCRCMD_DUMMY96, FrontierScrCmd_Dummy96)
ScriptCommand(FRSCRCMD_97, FrontierScrCmd_97)
ScriptCommand(FRSCRCMD_98, FrontierScrCmd_98)
ScriptCommand(FRSCRCMD_99, FrontierScrCmd_99)
ScriptCommand(FRSCRCMD_9A, FrontierScrCmd_9A)
ScriptCommand(FRSCRCMD_9B, FrontierScrCmd_9B)
ScriptCommand(FRSCRCMD_9C, FrontierScrCmd_9C)
ScriptCommand(FRSCRCMD_9D, FrontierScrCmd_9D)
ScriptCommand(FRSCRCMD_OPENBATTLECASTLESELFAPP, FrontierScrCmd_OpenBattleCastleSelfApp)
ScriptCommand(FRSCRCMD_BATTLECASTLE_CLEANUPBATTLE, FrontierScrCmd_BattleCastle_CleanupBattle)
ScriptCommand(FRSCRCMD_BATTLECASTLE_STARTBATTLE, FrontierScrCmd_BattleCastle_StartBattle)
ScriptCommand(FRSCRCMD_OPENBATTLECASTLEOPPONENTAPP, FrontierScrCmd_OpenBattleCastleOpponentApp)
ScriptCommand(FRSCRCMD_9E, FrontierScrCmd_9E)
ScriptCommand(FRSCRCMD_9F, FrontierScrCmd_9F)
ScriptCommand(FRSCRCMD_A0, FrontierScrCmd_A0)
ScriptCommand(FRSCRCMD_A1, FrontierScrCmd_A1)
ScriptCommand(FRSCRCMD_CALLBATTLECASTLEFUNCTION, FrontierScrCmd_CallBattleCastleFunction)
ScriptCommand(FRSCRCMD_BATTLECASTLE_CHECKWONBATTLE, FrontierScrCmd_BattleCastle_CheckWonBattle)
ScriptCommand(FRSCRCMD_A2, FrontierScrCmd_A2)
ScriptCommand(FRSCRCMD_A3, FrontierScrCmd_A3)
ScriptCommand(FRSCRCMD_A4, FrontierScrCmd_A4)
@@ -192,15 +192,15 @@ ScriptCommand(FRSCRCMD_SETWIFILISTHOSTFRIENDCURRENTDATE, FrontierScrCmd_SetWiFiL
ScriptCommand(FRSCRCMD_B8, FrontierScrCmd_B8)
ScriptCommand(FRSCRCMD_B9, FrontierScrCmd_B9)
ScriptCommand(FRSCRCMD_BA, FrontierScrCmd_BA)
ScriptCommand(FRSCRCMD_BB, FrontierScrCmd_BB)
ScriptCommand(FRSCRCMD_BC, FrontierScrCmd_BC)
ScriptCommand(FRSCRCMD_BATTLEARCADE_CLEANUPBATTLE, FrontierScrCmd_BattleArcade_CleanupBattle)
ScriptCommand(FRSCRCMD_BATTLEARCADE_STARTBATTLE, FrontierScrCmd_BattleArcade_StartBattle)
ScriptCommand(FRSCRCMD_BD, FrontierScrCmd_BD)
ScriptCommand(FRSCRCMD_BE, FrontierScrCmd_BE)
ScriptCommand(FRSCRCMD_BF, FrontierScrCmd_BF)
ScriptCommand(FRSCRCMD_C0, FrontierScrCmd_C0)
ScriptCommand(FRSCRCMD_CALLBATTLEARCADEFUNCTION, FrontierScrCmd_CallBattleArcadeFunction)
ScriptCommand(FRSCRCMD_BATTLEARCADE_CHECKWONBATTLE, FrontierScrCmd_BattleArcade_CheckWonBattle)
ScriptCommand(FRSCRCMD_C1, FrontierScrCmd_C1)
ScriptCommand(FRSCRCMD_C2, FrontierScrCmd_C2)
ScriptCommand(FRSCRCMD_C3, FrontierScrCmd_C3)
ScriptCommand(FRSCRCMD_OPENBATTLEARCADEAPP, FrontierScrCmd_OpenBattleArcadeApp)
ScriptCommand(FRSCRCMD_C4, FrontierScrCmd_C4)
ScriptCommand(FRSCRCMD_C5, FrontierScrCmd_C5)
ScriptCommand(FRSCRCMD_C6, FrontierScrCmd_C6)

View File

@@ -1,22 +1,22 @@
#ifndef POKEPLATINUM_OV104_02237378_H
#define POKEPLATINUM_OV104_02237378_H
#ifndef POKEPLATINUM_FRSCRCMD_BATTLE_ARCADE_H
#define POKEPLATINUM_FRSCRCMD_BATTLE_ARCADE_H
#include "overlay104/defs.h"
BOOL FrontierScrCmd_B8(FrontierScriptContext *param0);
BOOL FrontierScrCmd_B9(FrontierScriptContext *param0);
BOOL FrontierScrCmd_BA(FrontierScriptContext *param0);
BOOL FrontierScrCmd_C3(FrontierScriptContext *param0);
BOOL FrontierScrCmd_BB(FrontierScriptContext *param0);
BOOL FrontierScrCmd_BC(FrontierScriptContext *param0);
BOOL FrontierScrCmd_OpenBattleArcadeApp(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BattleArcade_CleanupBattle(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BattleArcade_StartBattle(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BD(FrontierScriptContext *param0);
BOOL FrontierScrCmd_BE(FrontierScriptContext *param0);
BOOL FrontierScrCmd_BF(FrontierScriptContext *param0);
BOOL FrontierScrCmd_C0(FrontierScriptContext *param0);
BOOL FrontierScrCmd_CallBattleArcadeFunction(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BattleArcade_CheckWonBattle(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_C1(FrontierScriptContext *param0);
BOOL FrontierScrCmd_C2(FrontierScriptContext *param0);
BOOL FrontierScrCmd_C4(FrontierScriptContext *param0);
BOOL FrontierScrCmd_C5(FrontierScriptContext *param0);
BOOL FrontierScrCmd_C6(FrontierScriptContext *param0);
#endif // POKEPLATINUM_OV104_02237378_H
#endif // POKEPLATINUM_FRSCRCMD_BATTLE_ARCADE_H

View File

@@ -1,20 +1,20 @@
#ifndef POKEPLATINUM_OV104_022358E8_H
#define POKEPLATINUM_OV104_022358E8_H
#ifndef POKEPLATINUM_FRSCRCMD_BATTLE_CASTLE_H
#define POKEPLATINUM_FRSCRCMD_BATTLE_CASTLE_H
#include "overlay104/defs.h"
BOOL FrontierScrCmd_97(FrontierScriptContext *param0);
BOOL FrontierScrCmd_98(FrontierScriptContext *param0);
BOOL FrontierScrCmd_99(FrontierScriptContext *param0);
BOOL FrontierScrCmd_9A(FrontierScriptContext *param0);
BOOL FrontierScrCmd_A4(FrontierScriptContext *param0);
BOOL FrontierScrCmd_9B(FrontierScriptContext *param0);
BOOL FrontierScrCmd_9C(FrontierScriptContext *param0);
BOOL FrontierScrCmd_9D(FrontierScriptContext *param0);
BOOL FrontierScrCmd_OpenBattleCastleSelfApp(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_A4(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BattleCastle_CleanupBattle(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BattleCastle_StartBattle(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_OpenBattleCastleOpponentApp(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_9E(FrontierScriptContext *param0);
BOOL FrontierScrCmd_9F(FrontierScriptContext *param0);
BOOL FrontierScrCmd_A0(FrontierScriptContext *param0);
BOOL FrontierScrCmd_A1(FrontierScriptContext *param0);
BOOL FrontierScrCmd_CallBattleCastleFunction(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BattleCastle_CheckWonBattle(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_A2(FrontierScriptContext *param0);
BOOL FrontierScrCmd_A3(FrontierScriptContext *param0);
BOOL FrontierScrCmd_A5(FrontierScriptContext *param0);
@@ -26,4 +26,4 @@ BOOL FrontierScrCmd_A7(FrontierScriptContext *param0);
BOOL FrontierScrCmd_A8(FrontierScriptContext *param0);
BOOL FrontierScrCmd_A9(FrontierScriptContext *param0);
#endif // POKEPLATINUM_OV104_022358E8_H
#endif // POKEPLATINUM_FRSCRCMD_BATTLE_CASTLE_H

View File

@@ -0,0 +1,23 @@
#ifndef POKEPLATINUM_FRSCRCMD_BATTLE_FACTORY_H
#define POKEPLATINUM_FRSCRCMD_BATTLE_FACTORY_H
#include "overlay104/defs.h"
BOOL FrontierScrCmd_5C(FrontierScriptContext *param0);
BOOL FrontierScrCmd_5D(FrontierScriptContext *param0);
BOOL FrontierScrCmd_5E(FrontierScriptContext *param0);
BOOL FrontierScrCmd_OpenBattleFactoryAppInitial(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BattleFactory_CleanupBattle(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BattleFactory_StartBattle(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_OpenBattleFactoryAppForTrade(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_63(FrontierScriptContext *param0);
BOOL FrontierScrCmd_64(FrontierScriptContext *param0);
BOOL FrontierScrCmd_65(FrontierScriptContext *param0);
BOOL FrontierScrCmd_66(FrontierScriptContext *param0);
BOOL FrontierScrCmd_CallBattleFactoryFunction(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BattleFactory_CheckWonBattle(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_69(FrontierScriptContext *param0);
BOOL FrontierScrCmd_6A(FrontierScriptContext *param0);
BOOL FrontierScrCmd_6B(FrontierScriptContext *param0);
#endif // POKEPLATINUM_FRSCRCMD_BATTLE_FACTORY_H

View File

@@ -7,10 +7,10 @@ BOOL FrontierScrCmd_8B(FrontierScriptContext *param0);
BOOL FrontierScrCmd_8C(FrontierScriptContext *param0);
BOOL FrontierScrCmd_8D(FrontierScriptContext *param0);
BOOL FrontierScrCmd_OpenBattleHallApp(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BattleHall_CheckWonBattle(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BattleHall_CleanupBattle(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BattleHall_StartBattle(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_CallBattleHallFunction(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BattleHall_GetBattleResult(FrontierScriptContext *param0);
BOOL FrontierScrCmd_BattleHall_CheckWonBattle(FrontierScriptContext *param0);
BOOL FrontierScrCmd_93(FrontierScriptContext *param0);
BOOL FrontierScrCmd_94(FrontierScriptContext *param0);
BOOL FrontierScrCmd_95(FrontierScriptContext *param0);

View File

@@ -1,14 +1,14 @@
#ifndef POKEPLATINUM_OV104_02239130_H
#define POKEPLATINUM_OV104_02239130_H
#ifndef POKEPLATINUM_FRSCRCMD_BATTLE_TOWER_H
#define POKEPLATINUM_FRSCRCMD_BATTLE_TOWER_H
#include "overlay104/defs.h"
BOOL FrontierScrCmd_CallBattleTowerFunction(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_85(FrontierScriptContext *param0);
BOOL FrontierScrCmd_FreeTowerStruct(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_87(FrontierScriptContext *param0);
BOOL FrontierScrCmd_CheckWonTowerBattle(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BattleTower_StartBattle(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_BattleTower_CheckWonBattle(FrontierScriptContext *ctx);
BOOL FrontierScrCmd_89(FrontierScriptContext *param0);
BOOL FrontierScrCmd_8A(FrontierScriptContext *param0);
#endif // POKEPLATINUM_OV104_02239130_H
#endif // POKEPLATINUM_FRSCRCMD_BATTLE_TOWER_H

View File

@@ -1,10 +1,10 @@
#ifndef POKEPLATINUM_OV104_0222ECE8_H
#define POKEPLATINUM_OV104_0222ECE8_H
#include "overlay104/struct_battle_arcade.h"
#include "overlay104/struct_battle_castle.h"
#include "overlay104/struct_battle_factory.h"
#include "overlay104/struct_battle_hall.h"
#include "overlay104/struct_ov104_0223ADA0.h"
#include "overlay104/struct_ov104_0223BA10.h"
#include "overlay104/struct_ov104_0223BFFC.h"
void ov104_0222ECE8(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222ED00(BattleHall *param0);
@@ -18,46 +18,46 @@ void ov104_0222EE38(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222EE60(BattleHall *param0);
void ov104_0222EEA8(int param0, int param1, void *param2, void *param3);
u8 *ov104_0222EED8(int param0, void *param1, int param2);
BOOL ov104_0222EEF8(UnkStruct_ov104_0223ADA0 *param0);
BOOL ov104_0222EEF8(BattleFactory *param0);
void ov104_0222EF30(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222EF64(UnkStruct_ov104_0223ADA0 *param0);
BOOL ov104_0222EF64(BattleFactory *param0);
void ov104_0222EF94(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222EFCC(UnkStruct_ov104_0223ADA0 *param0);
BOOL ov104_0222EFCC(BattleFactory *param0);
void ov104_0222F03C(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F0B4(UnkStruct_ov104_0223ADA0 *param0);
BOOL ov104_0222F0B4(BattleFactory *param0);
void ov104_0222F124(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F1A0(UnkStruct_ov104_0223ADA0 *param0, u8 param1);
BOOL ov104_0222F1A0(BattleFactory *param0, u8 param1);
void ov104_0222F1C4(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F1EC(UnkStruct_ov104_0223ADA0 *param0, u8 param1);
BOOL ov104_0222F1EC(BattleFactory *param0, u8 param1);
void ov104_0222F210(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F238(UnkStruct_ov104_0223ADA0 *param0);
BOOL ov104_0222F238(BattleFactory *param0);
void ov104_0222F31C(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F3B8(UnkStruct_ov104_0223BA10 *param0);
BOOL ov104_0222F3B8(BattleCastle *param0);
void ov104_0222F418(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F44C(UnkStruct_ov104_0223BA10 *param0);
BOOL ov104_0222F44C(BattleCastle *param0);
void ov104_0222F480(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F4B8(UnkStruct_ov104_0223BA10 *param0);
BOOL ov104_0222F4B8(BattleCastle *param0);
void ov104_0222F530(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F5D4(UnkStruct_ov104_0223BA10 *param0);
BOOL ov104_0222F5D4(BattleCastle *param0);
void ov104_0222F650(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F6C8(UnkStruct_ov104_0223BA10 *param0, u16 param1);
BOOL ov104_0222F6C8(BattleCastle *param0, u16 param1);
void ov104_0222F6E8(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F710(UnkStruct_ov104_0223BA10 *param0, u16 param1);
BOOL ov104_0222F710(BattleCastle *param0, u16 param1);
void ov104_0222F730(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F758(UnkStruct_ov104_0223BA10 *param0);
BOOL ov104_0222F758(BattleCastle *param0);
void ov104_0222F7BC(int param0, int param1, void *param2, void *param3);
u8 *ov104_0222F84C(int param0, void *param1, int param2);
BOOL ov104_0222F86C(UnkStruct_ov104_0223BFFC *param0);
BOOL ov104_0222F86C(BattleArcade *param0);
void ov104_0222F8A0(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F8D0(UnkStruct_ov104_0223BFFC *param0);
BOOL ov104_0222F8D0(BattleArcade *param0);
void ov104_0222F908(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F944(UnkStruct_ov104_0223BFFC *param0);
BOOL ov104_0222F944(BattleArcade *param0);
void ov104_0222F9C0(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222FA38(UnkStruct_ov104_0223BFFC *param0, u16 param1);
BOOL ov104_0222FA38(BattleArcade *param0, u16 param1);
void ov104_0222FA5C(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222FA84(UnkStruct_ov104_0223BFFC *param0, u16 param1);
BOOL ov104_0222FA84(BattleArcade *param0, u16 param1);
void ov104_0222FAA8(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222FAD0(UnkStruct_ov104_0223BFFC *param0);
BOOL ov104_0222FAD0(BattleArcade *param0);
void ov104_0222FB34(int param0, int param1, void *param2, void *param3);
u8 *ov104_0222FBC4(int param0, void *param1, int param2);

View File

@@ -1,23 +0,0 @@
#ifndef POKEPLATINUM_OV104_022332B4_H
#define POKEPLATINUM_OV104_022332B4_H
#include "overlay104/defs.h"
BOOL FrontierScrCmd_5C(FrontierScriptContext *param0);
BOOL FrontierScrCmd_5D(FrontierScriptContext *param0);
BOOL FrontierScrCmd_5E(FrontierScriptContext *param0);
BOOL FrontierScrCmd_5F(FrontierScriptContext *param0);
BOOL FrontierScrCmd_60(FrontierScriptContext *param0);
BOOL FrontierScrCmd_61(FrontierScriptContext *param0);
BOOL FrontierScrCmd_62(FrontierScriptContext *param0);
BOOL FrontierScrCmd_63(FrontierScriptContext *param0);
BOOL FrontierScrCmd_64(FrontierScriptContext *param0);
BOOL FrontierScrCmd_65(FrontierScriptContext *param0);
BOOL FrontierScrCmd_66(FrontierScriptContext *param0);
BOOL FrontierScrCmd_67(FrontierScriptContext *param0);
BOOL FrontierScrCmd_68(FrontierScriptContext *param0);
BOOL FrontierScrCmd_69(FrontierScriptContext *param0);
BOOL FrontierScrCmd_6A(FrontierScriptContext *param0);
BOOL FrontierScrCmd_6B(FrontierScriptContext *param0);
#endif // POKEPLATINUM_OV104_022332B4_H

View File

@@ -1,27 +1,27 @@
#ifndef POKEPLATINUM_OV104_022339B4_H
#define POKEPLATINUM_OV104_022339B4_H
#include "overlay104/struct_ov104_0223ADA0.h"
#include "applications/frontier/battle_factory/main.h"
#include "overlay104/struct_battle_factory.h"
#include "savedata.h"
UnkStruct_ov104_0223ADA0 *ov104_022339B4(SaveData *saveData, u16 param1, u8 param2, u8 param3);
void ov104_02233B98(UnkStruct_ov104_0223ADA0 *param0, u16 param1);
void ov104_022340D0(UnkStruct_ov104_0223ADA0 *param0);
void ov104_0223410C(UnkStruct_ov104_0223ADA0 *param0, void *param1);
u16 ov104_02234130(void *param0, u8 param1);
void ov104_02234148(UnkStruct_ov104_0223ADA0 *param0, u8 param1);
u16 ov104_02234430(UnkStruct_ov104_0223ADA0 *param0);
u16 ov104_0223443C(UnkStruct_ov104_0223ADA0 *param0);
u16 ov104_02234440(UnkStruct_ov104_0223ADA0 *param0, u8 param1);
void ov104_02234474(UnkStruct_ov104_0223ADA0 *param0);
void ov104_02234480(UnkStruct_ov104_0223ADA0 *param0);
void ov104_0223449C(UnkStruct_ov104_0223ADA0 *param0);
void ov104_02234570(UnkStruct_ov104_0223ADA0 *param0);
void ov104_022346A4(UnkStruct_ov104_0223ADA0 *param0);
void ov104_0223470C(UnkStruct_ov104_0223ADA0 *param0);
void ov104_02234790(UnkStruct_ov104_0223ADA0 *param0);
BOOL ov104_022347A4(UnkStruct_ov104_0223ADA0 *param0, u16 param1, u16 param2);
u16 ov104_022347F8(UnkStruct_ov104_0223ADA0 *param0);
BattleFactory *ov104_022339B4(SaveData *saveData, u16 param1, u8 param2, u8 param3);
void ov104_02233B98(BattleFactory *param0, u16 param1);
void ov104_022340D0(BattleFactory *param0);
void BattleFactory_GetMonSelectionAppResult(BattleFactory *battleFactory, BattleFactoryAppArgs *args);
void ov104_02234148(BattleFactory *param0, u8 param1);
u16 ov104_02234430(BattleFactory *param0);
u16 ov104_0223443C(BattleFactory *param0);
u16 ov104_02234440(BattleFactory *param0, u8 param1);
void ov104_02234474(BattleFactory *param0);
void ov104_02234480(BattleFactory *param0);
void ov104_0223449C(BattleFactory *param0);
void ov104_02234570(BattleFactory *param0);
void ov104_022346A4(BattleFactory *param0);
void ov104_0223470C(BattleFactory *param0);
void ov104_02234790(BattleFactory *param0);
BOOL ov104_022347A4(BattleFactory *param0, u16 param1, u16 param2);
u16 ov104_022347F8(BattleFactory *param0);
#endif // POKEPLATINUM_OV104_022339B4_H

View File

@@ -1,31 +1,31 @@
#ifndef POKEPLATINUM_OV104_022361B4_H
#define POKEPLATINUM_OV104_022361B4_H
#include "applications/frontier/battle_castle/args.h"
#include "overlay104/defs.h"
#include "overlay104/struct_ov104_0223BA10.h"
#include "overlay104/struct_battle_castle.h"
#include "savedata.h"
UnkStruct_ov104_0223BA10 *ov104_022361B4(SaveData *saveData, u16 param1, u8 param2, u16 param3, u16 param4, u16 param5, u16 *param6);
void ov104_02236514(UnkStruct_ov104_0223BA10 *param0, u16 param1);
void ov104_022367AC(UnkStruct_ov104_0223BA10 *param0);
void ov104_022367DC(UnkStruct_ov104_0223BA10 *param0, void *param1);
u16 ov104_02236834(void *param0, u8 param1);
void ov104_02236848(UnkStruct_ov104_0223BA10 *param0, u8 param1);
u16 ov104_02236B48(UnkStruct_ov104_0223BA10 *param0);
u16 ov104_02236B54(UnkStruct_ov104_0223BA10 *param0);
u16 ov104_02236B58(UnkStruct_ov104_0223BA10 *param0, u8 param1);
void ov104_02236B8C(UnkStruct_ov104_0223BA10 *param0);
void ov104_02236BD0(UnkStruct_ov104_0223BA10 *param0);
void ov104_02236BF0(UnkStruct_ov104_0223BA10 *param0);
void ov104_02236BF8(UnkStruct_ov104_0223BA10 *param0);
void ov104_02236C50(UnkStruct_ov104_0223BA10 *param0);
int ov104_02236D10(UnkStruct_ov104_0223BA10 *param0);
BattleCastle *ov104_022361B4(SaveData *saveData, u16 param1, u8 param2, u16 param3, u16 param4, u16 param5, u16 *param6);
void ov104_02236514(BattleCastle *param0, u16 param1);
void ov104_022367AC(BattleCastle *param0);
void BattleCastle_StoreAppResults(BattleCastle *battleCastle, BattleCastleAppArgs *args);
void ov104_02236848(BattleCastle *param0, u8 param1);
u16 ov104_02236B48(BattleCastle *param0);
u16 ov104_02236B54(BattleCastle *param0);
u16 ov104_02236B58(BattleCastle *param0, u8 param1);
void ov104_02236B8C(BattleCastle *param0);
void ov104_02236BD0(BattleCastle *param0);
void ov104_02236BF0(BattleCastle *param0);
void ov104_02236BF8(BattleCastle *param0);
void ov104_02236C50(BattleCastle *param0);
int ov104_02236D10(BattleCastle *param0);
void ov104_02236ED8(SaveData *saveData, u8 param1, int param2);
BOOL ov104_02236F70(UnkStruct_ov104_0223BA10 *param0, u16 param1, u16 param2);
void ov104_02236FC0(FrontierScriptManager *param0, UnkStruct_ov104_0223BA10 *param1);
void ov104_022370E0(FrontierScriptManager *param0, UnkStruct_ov104_0223BA10 *param1);
void ov104_02237180(FrontierScriptManager *param0, UnkStruct_ov104_0223BA10 *param1);
u16 ov104_02237338(UnkStruct_ov104_0223BA10 *param0);
BOOL ov104_02236F70(BattleCastle *param0, u16 param1, u16 param2);
void ov104_02236FC0(FrontierScriptManager *param0, BattleCastle *param1);
void ov104_022370E0(FrontierScriptManager *param0, BattleCastle *param1);
void ov104_02237180(FrontierScriptManager *param0, BattleCastle *param1);
u16 ov104_02237338(BattleCastle *param0);
#endif // POKEPLATINUM_OV104_022361B4_H

View File

@@ -1,40 +1,40 @@
#ifndef POKEPLATINUM_OV104_02237DD8_H
#define POKEPLATINUM_OV104_02237DD8_H
#include "applications/frontier/battle_arcade/main.h"
#include "overlay104/frontier_graphics.h"
#include "overlay104/struct_ov104_0223BFFC.h"
#include "overlay104/struct_battle_arcade.h"
#include "party.h"
#include "savedata.h"
UnkStruct_ov104_0223BFFC *ov104_02237DD8(SaveData *saveData, u16 param1, u8 param2, u16 param3, u16 param4, u16 param5, u16 *param6);
void ov104_0223806C(UnkStruct_ov104_0223BFFC *param0, u16 param1);
void ov104_02238210(UnkStruct_ov104_0223BFFC *param0);
void ov104_02238240(UnkStruct_ov104_0223BFFC *param0, void *param1);
u16 ov104_02238264(void *param0, u8 param1);
void ov104_02238278(UnkStruct_ov104_0223BFFC *param0, u8 param1);
u16 ov104_02238454(UnkStruct_ov104_0223BFFC *param0);
u16 ov104_02238460(UnkStruct_ov104_0223BFFC *param0);
u16 ov104_02238464(UnkStruct_ov104_0223BFFC *param0, u8 param1);
u16 ov104_02238498(UnkStruct_ov104_0223BFFC *param0, u8 param1);
void ov104_022384A8(UnkStruct_ov104_0223BFFC *param0);
void ov104_022384B4(UnkStruct_ov104_0223BFFC *param0);
void ov104_022384D4(UnkStruct_ov104_0223BFFC *param0);
void ov104_022384DC(UnkStruct_ov104_0223BFFC *param0);
int ov104_02238538(UnkStruct_ov104_0223BFFC *param0, Party *param1, Party *param2, int param3);
BattleArcade *ov104_02237DD8(SaveData *saveData, u16 param1, u8 param2, u16 param3, u16 param4, u16 param5, u16 *param6);
void ov104_0223806C(BattleArcade *param0, u16 param1);
void ov104_02238210(BattleArcade *param0);
void BattleArcade_StoreAppResults(BattleArcade *battleArcade, BattleArcadeAppArgs *args);
void ov104_02238278(BattleArcade *param0, u8 param1);
u16 ov104_02238454(BattleArcade *param0);
u16 ov104_02238460(BattleArcade *param0);
u16 ov104_02238464(BattleArcade *param0, u8 param1);
u16 ov104_02238498(BattleArcade *param0, u8 param1);
void ov104_022384A8(BattleArcade *param0);
void ov104_022384B4(BattleArcade *param0);
void ov104_022384D4(BattleArcade *param0);
void ov104_022384DC(BattleArcade *param0);
int ov104_02238538(BattleArcade *param0, Party *param1, Party *param2, int param3);
void ov104_02238658(void *param0, FrontierGraphics *param1);
void ov104_02238728(void *param0, FrontierGraphics *param1);
void ov104_02238764(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2);
void ov104_02238814(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2);
void ov104_0223886C(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2, u16 param3);
void ov104_022388A4(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2, u16 param3);
void ov104_022388DC(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2);
void ov104_022389A0(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2);
void ov104_022389F4(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2, u16 param3, u16 param4);
void ov104_02238764(BattleArcade *param0, FrontierGraphics *param1, u16 param2);
void ov104_02238814(BattleArcade *param0, FrontierGraphics *param1, u16 param2);
void ov104_0223886C(BattleArcade *param0, FrontierGraphics *param1, u16 param2, u16 param3);
void ov104_022388A4(BattleArcade *param0, FrontierGraphics *param1, u16 param2, u16 param3);
void ov104_022388DC(BattleArcade *param0, FrontierGraphics *param1, u16 param2);
void ov104_022389A0(BattleArcade *param0, FrontierGraphics *param1, u16 param2);
void ov104_022389F4(BattleArcade *param0, FrontierGraphics *param1, u16 param2, u16 slot, u16 param4);
void ov104_02238AB4(u8 param0, u8 param1);
BOOL ov104_02238B40(UnkStruct_ov104_0223BFFC *param0, u16 param1, u16 param2);
void ov104_02238B88(UnkStruct_ov104_0223BFFC *param0, u8 param1);
u16 ov104_02239014(UnkStruct_ov104_0223BFFC *param0);
BOOL ov104_02238B40(BattleArcade *param0, u16 param1, u16 param2);
void ov104_02238B88(BattleArcade *param0, u8 param1);
u16 ov104_02239014(BattleArcade *param0);
void ov104_02239054(Party *param0, Party *param1, int param2, int param3);
#endif // POKEPLATINUM_OV104_02237DD8_H

View File

@@ -2,8 +2,8 @@
#define POKEPLATINUM_OV104_0223A7F4_H
#include "overlay104/frontier_data_transfer.h"
#include "overlay104/struct_battle_factory.h"
#include "overlay104/struct_ov104_02230BE4.h"
#include "overlay104/struct_ov104_0223ADA0.h"
#include "overlay104/struct_ov104_0224028C.h"
#include "field_battle_data_transfer.h"
@@ -15,11 +15,11 @@ u8 BattleFactory_GetPartySize(u8 param0);
u8 ov104_0223AA74(u8 param0, 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 *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104_02230BE4 *param1);
u8 ov104_0223ADA0(UnkStruct_ov104_0223ADA0 *param0);
void ov104_0223ADB0(UnkStruct_ov104_0223ADA0 *param0);
void ov104_0223AE30(UnkStruct_ov104_0223ADA0 *param0);
FieldBattleDTO *ov104_0223ABA0(BattleFactory *param0, UnkStruct_ov104_02230BE4 *param1);
u8 ov104_0223ADA0(BattleFactory *param0);
void ov104_0223ADB0(BattleFactory *param0);
void ov104_0223AE30(BattleFactory *param0);
BOOL BattleFactory_IsMultiplayerChallenge(u8 challengeType);
u16 ov104_0223AF34(UnkStruct_ov104_0223ADA0 *param0);
u16 ov104_0223AF34(BattleFactory *param0);
#endif // POKEPLATINUM_OV104_0223A7F4_H

View File

@@ -3,8 +3,8 @@
#include "struct_defs/battle_frontier.h"
#include "overlay104/struct_battle_castle.h"
#include "overlay104/struct_ov104_02230BE4.h"
#include "overlay104/struct_ov104_0223BA10.h"
#include "bg_window.h"
#include "field_battle_data_transfer.h"
@@ -14,15 +14,15 @@
void ov104_0223B760(u8 param0, int param1, u16 param2[], u8 param3);
u8 BattleCastle_GetPartySize(u8 challengeType, BOOL includePartnersMons);
u8 ov104_0223B7DC(u8 param0, BOOL param1);
FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104_02230BE4 *param1);
u8 ov104_0223BA10(UnkStruct_ov104_0223BA10 *param0);
FieldBattleDTO *ov104_0223B810(BattleCastle *param0, UnkStruct_ov104_02230BE4 *param1);
u8 ov104_0223BA10(BattleCastle *param0);
BOOL BattleCastle_IsMultiPlayerChallenge(u8 challengeType);
void ov104_0223BA24(Party *param0);
void ov104_0223BA7C(UnkStruct_ov104_0223BA10 *param0, Pokemon *param1);
void ov104_0223BAA0(UnkStruct_ov104_0223BA10 *param0, Party *param1, Pokemon *param2);
void ov104_0223BAB8(UnkStruct_ov104_0223BA10 *param0);
u16 ov104_0223BB60(UnkStruct_ov104_0223BA10 *param0);
void ov104_0223BB84(BgConfig *param0, UnkStruct_ov104_0223BA10 *param1, u32 param2);
void ov104_0223BA7C(BattleCastle *param0, Pokemon *param1);
void ov104_0223BAA0(BattleCastle *param0, Party *param1, Pokemon *param2);
void ov104_0223BAB8(BattleCastle *param0);
u16 ov104_0223BB60(BattleCastle *param0);
void ov104_0223BB84(BgConfig *param0, BattleCastle *param1, u32 param2);
u16 ov104_0223BC24(u16 param0);
void ov104_0223BC2C(BattleFrontier *frontier, u8 challengeType, int castlePoints);

View File

@@ -1,8 +1,8 @@
#ifndef POKEPLATINUM_OV104_0223BCBC_H
#define POKEPLATINUM_OV104_0223BCBC_H
#include "overlay104/struct_battle_arcade.h"
#include "overlay104/struct_ov104_02230BE4.h"
#include "overlay104/struct_ov104_0223BFFC.h"
#include "field_battle_data_transfer.h"
#include "party.h"
@@ -11,14 +11,14 @@
void ov104_0223BD28(u8 param0, int param1, u16 param2[], u8 param3);
u8 BattleArcade_GetPartySize(u8 challengeType, BOOL includePartnerMons);
u8 BattleArcade_GetOpponentPartySize(u8 challengeType, BOOL includeBothOpponents);
FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104_02230BE4 *param1);
u8 ov104_0223BFFC(UnkStruct_ov104_0223BFFC *param0);
FieldBattleDTO *ov104_0223BDD8(BattleArcade *param0, UnkStruct_ov104_02230BE4 *param1);
u8 ov104_0223BFFC(BattleArcade *param0);
BOOL BattleArcade_IsMultiPlayerChallenge(u8 challengeType);
void ov104_0223C010(UnkStruct_ov104_0223BFFC *param0, Pokemon *param1);
void ov104_0223C034(UnkStruct_ov104_0223BFFC *param0, Party *param1, Pokemon *param2);
void ov104_0223C04C(UnkStruct_ov104_0223BFFC *param0);
u16 ov104_0223C0BC(UnkStruct_ov104_0223BFFC *param0, u8 param1);
u16 ov104_0223C124(UnkStruct_ov104_0223BFFC *param0);
void ov104_0223C010(BattleArcade *param0, Pokemon *param1);
void ov104_0223C034(BattleArcade *param0, Party *param1, Pokemon *param2);
void ov104_0223C04C(BattleArcade *param0);
u16 ov104_0223C0BC(BattleArcade *param0, u8 param1);
u16 ov104_0223C124(BattleArcade *param0);
u8 BattleArcade_GetCategoryFromEffect(u8 effect);
#endif // POKEPLATINUM_OV104_0223BCBC_H

View File

@@ -1,5 +1,5 @@
#ifndef POKEPLATINUM_STRUCT_OV104_0223BFFC_H
#define POKEPLATINUM_STRUCT_OV104_0223BFFC_H
#ifndef POKEPLATINUM_STRUCT_BATTLE_ARCADE_H
#define POKEPLATINUM_STRUCT_BATTLE_ARCADE_H
#include "struct_decls/struct_020304A0_decl.h"
@@ -7,19 +7,19 @@
#include "party.h"
#include "savedata.h"
#include "sprite_system.h"
#include "sprite.h"
typedef struct {
typedef struct BattleArcade {
int unk_00;
SaveData *saveData;
UnkStruct_020304A0 *unk_08;
void *unk_0C;
u8 unk_10;
void *dto;
u8 challengeType;
u8 unk_11;
u8 unk_12;
u8 unk_13;
u8 activeEffect;
int unk_14;
u16 unk_18;
u16 currentStreak;
u16 unk_1A;
u8 unk_1C;
u8 unk_1D;
@@ -28,7 +28,7 @@ typedef struct {
u16 unk_20;
u16 unk_22;
u32 unk_24;
int unk_28;
int wonBattle;
u8 unk_2C[3];
u8 unk_2F;
ManagedSprite *unk_30[4];
@@ -38,12 +38,12 @@ typedef struct {
Party *unk_70;
Party *unk_74;
u16 unk_78[14];
u32 unk_94[4];
u32 unk_A4[4];
u32 unk_B4[4];
u32 unk_C4[4];
u32 unk_D4[4];
u32 unk_E4[4];
u32 monHP[4];
u32 monAtk[4];
u32 monDef[4];
u32 monSpeed[4];
u32 monSpAtk[4];
u32 monSpDef[4];
FrontierDataDTO unk_F4[2];
u16 unk_314[4];
u8 unk_31C[4];
@@ -51,7 +51,7 @@ typedef struct {
FrontierPokemonDataDTO unk_330[4];
u16 unk_410;
u16 unk_412[3];
u16 unk_418[6];
u16 appCursorPos[6];
u16 unk_424[40];
u8 unk_474[512];
u8 unk_674[2][512];
@@ -65,6 +65,6 @@ typedef struct {
u8 unk_A7D;
u16 *unk_A80;
u32 unk_A84;
} UnkStruct_ov104_0223BFFC;
} BattleArcade;
#endif // POKEPLATINUM_STRUCT_OV104_0223BFFC_H
#endif // POKEPLATINUM_STRUCT_BATTLE_ARCADE_H

View File

@@ -1,5 +1,5 @@
#ifndef POKEPLATINUM_STRUCT_OV104_0223BA10_H
#define POKEPLATINUM_STRUCT_OV104_0223BA10_H
#ifndef POKEPLATINUM_STRUCT_BATTLE_CASTLE_H
#define POKEPLATINUM_STRUCT_BATTLE_CASTLE_H
#include "struct_decls/struct_020302DC_decl.h"
@@ -8,19 +8,19 @@
#include "party.h"
#include "savedata.h"
typedef struct {
typedef struct BattleCastle {
int unk_00;
SaveData *saveData;
UnkStruct_020302DC *unk_08;
void *unk_0C;
u8 unk_10;
u8 challengeType;
u8 unk_11;
u8 unk_12;
u8 unk_13;
u16 unk_14;
u16 currentStreak;
u16 unk_16;
u32 unk_18;
int unk_1C;
int wonBattle;
u16 unk_20;
u16 unk_22;
u8 unk_24[3];
@@ -35,10 +35,10 @@ typedef struct {
FrontierPokemonDataDTO unk_288[4];
u16 unk_368;
u16 unk_36A[3];
u8 unk_370[4];
u8 unk_374[4];
u8 unk_378[4];
u8 unk_37C[4];
u8 appIdentityUnlocked[4];
u8 appLevelAdjustmentsUnlocked[4];
u8 appStatsUnlocked[4];
u8 appMovesUnlocked[4];
u16 unk_380[6];
u16 unk_38C[4];
u16 unk_394[4][4];
@@ -56,9 +56,9 @@ typedef struct {
u8 unk_A19;
u8 unk_A1A;
u8 unk_A1B;
u16 unk_A1C;
u16 partnersCP;
u16 *unk_A20;
u32 unk_A24;
} UnkStruct_ov104_0223BA10;
} BattleCastle;
#endif // POKEPLATINUM_STRUCT_OV104_0223BA10_H
#endif // POKEPLATINUM_STRUCT_BATTLE_CASTLE_H

View File

@@ -1,5 +1,5 @@
#ifndef POKEPLATINUM_STRUCT_OV104_0223ADA0_H
#define POKEPLATINUM_STRUCT_OV104_0223ADA0_H
#ifndef POKEPLATINUM_STRUCT_BATTLE_FACTORY_H
#define POKEPLATINUM_STRUCT_BATTLE_FACTORY_H
#include "struct_defs/struct_0202FF58.h"
@@ -9,19 +9,19 @@
#include "savedata.h"
#include "sys_task_manager.h"
typedef struct {
typedef struct BattleFactory {
int unk_00;
u8 unk_04;
u8 challengeType;
u8 unk_05;
u8 unk_06;
u8 unk_07;
u16 unk_08;
u8 unk_0A;
u8 unk_0B;
u16 unk_0C;
u16 currentStreak;
u16 unk_0E;
u32 unk_10;
int unk_14;
int wonBattle;
u16 unk_18[14];
FrontierDataDTO unk_34[2];
u16 unk_254[6];
@@ -55,6 +55,6 @@ typedef struct {
u16 unk_700;
u8 unk_702;
u32 unk_704;
} UnkStruct_ov104_0223ADA0;
} BattleFactory;
#endif // POKEPLATINUM_STRUCT_OV104_0223ADA0_H
#endif // POKEPLATINUM_STRUCT_BATTLE_FACTORY_H

View File

@@ -1,20 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_OV104_02234130_H
#define POKEPLATINUM_STRUCT_OV104_02234130_H
#include "party.h"
#include "savedata.h"
typedef struct {
SaveData *saveData;
u8 unk_04;
u8 unk_05;
u8 unk_06;
u8 padding_07;
Party *unk_08;
Party *unk_0C;
u16 unk_10[6];
void *unk_1C;
u8 padding_20[4];
} UnkStruct_ov104_02234130;
#endif // POKEPLATINUM_STRUCT_OV104_02234130_H

View File

@@ -1,26 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_OV104_0223597C_H
#define POKEPLATINUM_STRUCT_OV104_0223597C_H
#include "party.h"
#include "savedata.h"
typedef struct {
SaveData *saveData;
u8 unk_04;
u8 unk_05;
u8 unk_06;
u8 unk_07;
u8 unk_08[4];
u8 unk_0C[4];
u8 unk_10[4];
u8 unk_14[4];
Party *unk_18;
Party *unk_1C;
u16 unk_20;
u8 padding[2];
void *unk_24;
u16 unk_28;
u8 padding2[6];
} UnkStruct_ov104_0223597C;
#endif // POKEPLATINUM_STRUCT_OV104_0223597C_H

View File

@@ -1,31 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_OV104_02238240_H
#define POKEPLATINUM_STRUCT_OV104_02238240_H
#include "party.h"
#include "savedata.h"
typedef struct {
SaveData *saveData;
u8 unk_04;
u8 padding_05[2];
u8 unk_07;
int *unk_08;
u8 *unk_0C;
u8 *unk_10;
u16 *unk_14;
u16 unk_18;
u8 padding_1A[2];
u16 unk_1C;
u16 unk_1E;
u8 padding_20[16];
Party *unk_30;
Party *unk_34;
u16 unk_38;
u8 padding_3A[2];
void *unk_3C;
u8 padding_3E[2];
u8 unk_40;
u8 padding_41[3];
} UnkStruct_ov104_02238240;
#endif // POKEPLATINUM_STRUCT_OV104_02238240_H

View File

@@ -47,7 +47,7 @@ typedef struct BattleTower {
u8 unk_838[BT_PARTNERS_COUNT];
u16 unk_83E[35];
u16 unk_884[35];
int unk_8CC;
int wonBattle;
void *unk_8D0;
u8 unk_8D4;
u8 unk_8D5;

View File

@@ -1541,16 +1541,16 @@ Overlay overlay104
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
Object main.nef.p/src_overlay104_ov104_022332B4.c.o
Object main.nef.p/src_overlay104_frscrcmd_battle_factory.c.o
Object main.nef.p/src_overlay104_ov104_022339B4.c.o
Object main.nef.p/src_overlay104_frscrcmd_battle_hall.c.o
Object main.nef.p/src_overlay104_ov104_02234DB4.c.o
Object main.nef.p/src_overlay104_ov104_022358E8.c.o
Object main.nef.p/src_overlay104_frscrcmd_battle_castle.c.o
Object main.nef.p/src_overlay104_ov104_022361B4.c.o
Object main.nef.p/src_overlay104_ov104_02237378.c.o
Object main.nef.p/src_overlay104_frscrcmd_battle_arcade.c.o
Object main.nef.p/src_overlay104_ov104_02237DD8.c.o
Object main.nef.p/src_overlay104_frscrcmd_sound.c.o
Object main.nef.p/src_overlay104_ov104_02239130.c.o
Object main.nef.p/src_overlay104_frscrcmd_battle_tower.c.o
Object main.nef.p/src_overlay104_ov104_022394A4.c.o
Object main.nef.p/src_overlay104_ov104_022395F0.c.o
Object main.nef.p/src_overlay104_ov104_02239C58.c.o

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,7 @@
# include "macros/frscrcmd.inc"
# include "res/graphics/frontier/particles/frontier_particles.naix"
# include "res/text/bank/battle_castle_scene.h"
# include "constants/battle_castle_functions.h"
# include "constants/battle_frontier.h"
# include "constants/battle_frontier_emitters.h"
@@ -594,7 +595,7 @@ _043C:
FadeScreenIn
InitNewBattleRecording
FrontierScrCmd_97 VAR_0x8003, VAR_0x8001, VAR_0x8004, VAR_0x8005, VAR_0x8006, VAR_0x8008
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0480
GoTo _04F0
End
@@ -631,7 +632,7 @@ _04CD:
_04F0:
FrontierScrCmd_98 VAR_0x8003
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0510
GoTo _058A
End
@@ -671,7 +672,7 @@ _0555:
_058A:
SetVar VAR_0x8003, 0
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _05C6
ApplyMovement 0, _01F0
ApplyMovement 4, _01F0
@@ -690,14 +691,14 @@ _05C6:
End
_05F0:
FrontierScrCmd_A0 23, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_23, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 0, _0612
SetVar VAR_0x8003, 1
GoTo _1349
End
_0612:
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
CallIfEq VAR_0x8008, 1, _0630
FrontierScrCmd_9E
GoTo _0679
@@ -719,12 +720,12 @@ _0640:
ClearReceivedTempDataAllPlayers
SyncConnectedPlayers 214
ClearReceivedTempDataAllPlayers
FrontierScrCmd_A0 41, 0, 0, VAR_0x8008
FrontierScrCmd_A0 42, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_41, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_42, 0, 0, VAR_0x8008
Return
_0679:
FrontierScrCmd_A0 39, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_39, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 0, _0695
GoTo _06A1
End
@@ -741,10 +742,10 @@ _06A1:
End
_06B0:
FrontierScrCmd_A0 19, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_19, 0, 0, VAR_0x8008
CallIfEq VAR_0x8008, 3, _06E4
Message BattleCastleScene_Text_Choose
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _06EA
GoTo _0706
End
@@ -772,14 +773,14 @@ _0706:
End
_0714:
FrontierScrCmd_A0 19, 0, 0, VAR_0x8006
CallBattleCastleFunction BC_FUNC_UNK_19, 0, 0, VAR_0x8006
CallIfLt VAR_0x8006, 3, _07A2
CallIfGe VAR_0x8006, 3, _07AC
SetMenuXOriginSide 1
AddListMenuEntry BattleCastleScene_Text_SelfOption, BattleCastleScene_Text_HealOrRentItem, 1
AddListMenuEntry BattleCastleScene_Text_OpponentOption, BattleCastleScene_Text_CheckOpponentsMons, 2
AddListMenuEntry BattleCastleScene_Text_BattleOption, BattleCastleScene_Text_BattleTrainer, 4
FrontierScrCmd_A0 19, 0, 0, VAR_0x8006
CallBattleCastleFunction BC_FUNC_UNK_19, 0, 0, VAR_0x8006
CallIfGe VAR_0x8006, 3, _07D7
ShowListMenu
GoToIfEq VAR_0x8008, 1, _0804
@@ -794,14 +795,14 @@ _07A2:
Return
_07AC:
FrontierScrCmd_A0 40, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_40, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _07A2
GoToIfEq VAR_0x8008, 2, _07A2
InitLocalTextListMenu 31, 9, 0, 0, VAR_0x8008
Return
_07D7:
FrontierScrCmd_A0 40, 0, 0, VAR_0x800D
CallBattleCastleFunction BC_FUNC_UNK_40, 0, 0, VAR_0x800D
GoToIfEq VAR_0x800D, 1, _0802
GoToIfEq VAR_0x800D, 2, _0802
AddListMenuEntry BattleCastleScene_Text_PassOption, BattleCastleScene_Text_PassOnBattle, 5
@@ -811,8 +812,8 @@ _0802:
Return
_0804:
FrontierScrCmd_A0 32, 1, 0, VAR_0x8008
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_32, 1, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0827
GoTo _0833
End
@@ -823,17 +824,17 @@ _0827:
End
_0833:
FrontierScrCmd_A0 34, 0, 0, VAR_0x8008
FrontierScrCmd_A0 31, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_34, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_31, 0, 0, VAR_0x8008
FadeScreenOut
CloseMessage
FrontierScrCmd_51
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
CallIfEq VAR_0x8008, 1, _08AC
FrontierScrCmd_9A
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
OpenBattleCastleSelfApp
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
CallIfEq VAR_0x8008, 1, _09C5
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
CallIfEq VAR_0x8008, 1, _04C5
FadeScreenIn
GoTo _0706
@@ -851,8 +852,8 @@ _08AC:
Return
_08B6:
FrontierScrCmd_A0 32, 2, 0, VAR_0x8008
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_32, 2, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _08D9
GoTo _08E5
End
@@ -863,17 +864,17 @@ _08D9:
End
_08E5:
FrontierScrCmd_A0 34, 0, 0, VAR_0x8008
FrontierScrCmd_A0 31, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_34, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_31, 0, 0, VAR_0x8008
FadeScreenOut
CloseMessage
FrontierScrCmd_51
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
CallIfEq VAR_0x8008, 1, _095A
FrontierScrCmd_9D
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
OpenBattleCastleOpponentApp
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
CallIfEq VAR_0x8008, 1, _09E2
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
CallIfEq VAR_0x8008, 1, _04C5
FadeScreenIn
GoTo _0706
@@ -890,15 +891,15 @@ _095A:
Return
_0964:
FrontierScrCmd_A0 32, 4, 0, VAR_0x8008
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_32, 4, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _099C
GoTo _0987
End
_0987:
SetVar VAR_0x8005, 0
FrontierScrCmd_A0 31, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_31, 0, 0, VAR_0x8008
GoTo _0C47
End
@@ -909,7 +910,7 @@ _099C:
_09A8:
WaitTime 1, VAR_0x8008
FrontierScrCmd_A0 29, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_29, 0, 0, VAR_0x8008
WaitTime 1, VAR_0x8008
ClearReceivedTempDataAllPlayers
SyncConnectedPlayers 190
@@ -918,7 +919,7 @@ _09A8:
_09C5:
WaitTime 1, VAR_0x8008
FrontierScrCmd_A0 29, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_29, 0, 0, VAR_0x8008
WaitTime 1, VAR_0x8008
ClearReceivedTempDataAllPlayers
SyncConnectedPlayers 191
@@ -927,7 +928,7 @@ _09C5:
_09E2:
WaitTime 1, VAR_0x8008
FrontierScrCmd_A0 29, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_29, 0, 0, VAR_0x8008
WaitTime 1, VAR_0x8008
ClearReceivedTempDataAllPlayers
SyncConnectedPlayers 192
@@ -936,7 +937,7 @@ _09E2:
_09FF:
WaitTime 1, VAR_0x8008
FrontierScrCmd_A0 29, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_29, 0, 0, VAR_0x8008
WaitTime 1, VAR_0x8008
ClearReceivedTempDataAllPlayers
SyncConnectedPlayers 193
@@ -950,8 +951,8 @@ _0A1C:
GoToIfEq VAR_0x8008, 1, _0714
FrontierScrCmd_A6 VAR_0x8001, VAR_0x8008
GoToIfLt VAR_0x8008, 50, _0A6D
FrontierScrCmd_A0 32, 5, 0, VAR_0x8008
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_32, 5, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _1974
GoTo _0A79
End
@@ -963,20 +964,20 @@ _0A6D:
_0A79:
SetVar VAR_0x8005, 1
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0A9B
GoTo _0AB8
End
_0A9B:
FrontierScrCmd_A0 34, 0, 0, VAR_0x8008
FrontierScrCmd_A0 33, 0, 0, VAR_0x8008
FrontierScrCmd_A0 31, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_34, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_33, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_31, 0, 0, VAR_0x8008
GoTo _0C47
End
_0AB8:
FrontierScrCmd_A0 17, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_GET_CHALLENGE_TYPE, 0, 0, VAR_0x8008
FrontierScrCmd_A7 VAR_0x8008, 50
GoTo _0C47
End
@@ -984,7 +985,7 @@ _0AB8:
_0ACD:
CloseMessage
FrontierScrCmd_51
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0B0C
ApplyMovement 0, _0248
ApplyMovement 3, _0274
@@ -1010,7 +1011,7 @@ _0B36:
PlaySoundEffect SEQ_SE_DP_KAIDAN2
WaitSoundEffect SEQ_SE_DP_KAIDAN2
FadeScreenOut
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0BBA
FrontierScrCmd_25 0
FrontierScrCmd_25 3
@@ -1052,15 +1053,15 @@ _0BBA:
_0C1E:
Call _10CA
FrontierScrCmd_A0 28, 0, 0, VAR_0x8008
FrontierScrCmd_A0 23, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_28, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_23, 0, 0, VAR_0x8008
GoToIfNe VAR_0x8008, 7, _1349
GoTo _12D3
End
_0C47:
FrontierScrCmd_51
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0C7F
Message BattleCastleScene_Text_Proceed
WaitABPress
@@ -1087,7 +1088,7 @@ _0CAD:
WaitSoundEffect SEQ_SE_DP_KAIDAN2
FadeScreenOut
CallIfEq FR_VAR_0x800E, 0, _0E64
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0DA3
FrontierScrCmd_25 0
FrontierScrCmd_25 3
@@ -1103,7 +1104,7 @@ _0CAD:
WaitMovement
CreateParticleSystemEmitter 0, CASTLE_EMITTER_TWINKLE
GoToIfEq VAR_0x8005, 1, _0E89
FrontierScrCmd_A0 40, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_40, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _1A9B
GoToIfEq VAR_0x8008, 2, _1ABA
Call _1B75
@@ -1114,7 +1115,7 @@ _0CAD:
WaitTime 15, VAR_0x8008
ApplyMovement 98, _0284
WaitMovement
FrontierScrCmd_A0 37, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_37, 0, 0, VAR_0x8008
FrontierScrCmd_A9 0
WaitABPress
CloseMessage
@@ -1148,13 +1149,13 @@ _0DA3:
WaitTime 15, VAR_0x8008
ApplyMovement 98, _0284
WaitMovement
FrontierScrCmd_A0 37, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_37, 0, 0, VAR_0x8008
FrontierScrCmd_A9 0
WaitTime 30, VAR_0x8008
CloseMessage
ApplyMovement 99, _0284
WaitMovement
FrontierScrCmd_A0 37, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_37, 0, 0, VAR_0x8008
FrontierScrCmd_A9 1
WaitTime 30, VAR_0x8008
CloseMessage
@@ -1170,12 +1171,12 @@ _0E64:
_0E74:
InitParticleSystem 0, battle_castle_spa
FrontierScrCmd_A0 36, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_36, 0, 0, VAR_0x8008
GetPlayerObjEventGfx VAR_0x8007
Return
_0E89:
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0EAD
Message BattleCastleScene_Text_UsingPass
WaitABPress
@@ -1194,17 +1195,17 @@ _0EAD:
End
_0ED1:
FrontierScrCmd_A0 20, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_20, 0, 0, VAR_0x8008
SetVar VAR_0x800B, VAR_0x8008
FrontierScrCmd_22 _0154
FrontierScrCmd_24 _0164
Return
_0EEC:
FrontierScrCmd_A0 20, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_20, 0, 0, VAR_0x8008
SetVar VAR_0x800B, VAR_0x8008
FrontierScrCmd_22 _0154
FrontierScrCmd_A0 20, 1, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_20, 1, 0, VAR_0x8008
SetVar VAR_0x800C, VAR_0x8008
FrontierScrCmd_22 _015C
FrontierScrCmd_24 _0174
@@ -1218,9 +1219,9 @@ _0F1A:
_0F2E:
FreeParticleSystem 0
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0F83
FrontierScrCmd_A0 40, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_40, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0F73
GoToIfEq VAR_0x8008, 2, _0F73
FrontierScrCmd_3F 4
@@ -1245,18 +1246,18 @@ _0F83:
_0F99:
Call _1B75
BufferNumber 0, VAR_0x8008
FrontierScrCmd_9C
FrontierScrCmd_9B
BattleCastle_StartBattle
BattleCastle_CleanupBattle
InitParticleSystem 0, battle_castle_spa
CreateParticleSystemEmitter 0, CASTLE_EMITTER_TWINKLE
FrontierScrCmd_A0 36, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_36, 0, 0, VAR_0x8008
FadeScreenIn
FrontierScrCmd_A1 VAR_0x8008
BattleCastle_CheckWonBattle VAR_0x8008
GoToIfEq VAR_0x8008, 0, _180E
IncrementRecordValue RECORD_BATTLE_CASTLE_VICTORIES
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _1040
FrontierScrCmd_A0 40, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_40, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _1AF8
GoToIfEq VAR_0x8008, 2, _1B2F
Call _1B75
@@ -1311,24 +1312,24 @@ _10C2:
End
_10CA:
FrontierScrCmd_A0 14, 1, 0, VAR_0x8008
FrontierScrCmd_A0 5, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_14, 1, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_INCREMENT_CURRENT_STREAK, 0, 0, VAR_0x8008
Return
_10DA:
BufferPlayerName 1
FrontierScrCmd_A0 27, 0, 0, VAR_0x800D
CallBattleCastleFunction BC_FUNC_UNK_27, 0, 0, VAR_0x800D
BufferNumber 0, VAR_0x800D
ApplyMovement 5, _03BC
WaitMovement
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _1BA1
GoTo _1B93
End
_110F:
CloseMessage
FrontierScrCmd_A0 28, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_28, 0, 0, VAR_0x8008
FrontierScrCmd_22 _00F8
FrontierScrCmd_24 _018C
ApplyMovement 6, _03A4
@@ -1341,31 +1342,31 @@ _110F:
End
_1160:
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _1BBF
GoTo _1BB3
End
_117C:
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _1BDD
GoTo _1BD1
End
_1198:
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _1BFB
GoTo _1BEF
End
_11B4:
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _1C19
GoTo _1C0D
End
_11D0:
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _1C37
GoTo _1C2B
End
@@ -1378,7 +1379,7 @@ _11EC:
WaitMovement
FrontierScrCmd_25 6
FrontierScrCmd_23 217
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _121C
Return
@@ -1389,13 +1390,13 @@ _121C:
Return
_122A:
FrontierScrCmd_A0 28, 0, 0, VAR_0x8008
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_28, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
CallIfEq VAR_0x8008, 1, _04C5
Return
_1247:
FrontierScrCmd_A0 23, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_23, 0, 0, VAR_0x8008
GoToIfNe VAR_0x8008, 7, _1314
GoTo _1263
End
@@ -1423,12 +1424,12 @@ _12C5:
End
_12D3:
FrontierScrCmd_A0 22, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_22, 0, 0, VAR_0x8008
FrontierScrCmd_3D VAR_BATTLE_CASTLE_LOBBY_LOAD_ACTION, 1
BufferPlayerName 0
Message BattleCastleScene_Text_BPEarned
BufferPlayerName 0
FrontierScrCmd_A0 38, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_38, 0, 0, VAR_0x8008
BufferNumber 1, VAR_0x8008
GiveBattlePoints VAR_0x8008
Message BattleCastleScene_Text_ReceiveBP
@@ -1443,7 +1444,7 @@ _130C:
_1314:
GoToIfEq VAR_0x8005, 1, _1349
FrontierScrCmd_A0 25, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_25, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 0, _1349
Message BattleCastleScene_Text_RevivePokemon
PlaySoundEffect SEQ_SE_DP_UG_020
@@ -1452,7 +1453,7 @@ _1314:
End
_1349:
FrontierScrCmd_A0 40, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_40, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _1A60
GoToIfEq VAR_0x8008, 2, _1A60
GoTo _1372
@@ -1461,9 +1462,9 @@ _1349:
_1372:
Call _1B75
BufferNumber 0, VAR_0x8008
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _13AF
FrontierScrCmd_A0 23, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_23, 0, 0, VAR_0x8008
AddVar VAR_0x8008, 1
BufferNumber 0, VAR_0x8008
Message BattleCastleScene_Text_AreYouReady
@@ -1477,7 +1478,7 @@ _13AF:
ClearReceivedTempDataAllPlayers
Call _1B75
BufferNumber 0, VAR_0x8008
FrontierScrCmd_A0 23, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_23, 0, 0, VAR_0x8008
AddVar VAR_0x8008, 1
BufferNumber 0, VAR_0x8008
MessageInstant BattleCastleScene_Text_AreYouReady
@@ -1489,7 +1490,7 @@ _13E4:
End
_13EC:
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _1422
GoToIfEq VAR_0x8005, 1, _1471
GoToIfEq VAR_0x8003, 0, _147F
@@ -1578,7 +1579,7 @@ _1561:
End
_159D:
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _15B9
GoTo _1622
End
@@ -1595,7 +1596,7 @@ _15C8:
GoToIfEq VAR_0x8008, 0, _15C8
FrontierScrCmd_A3 VAR_0x8002
ClearReceivedTempDataAllPlayers
FrontierScrCmd_A0 24, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_24, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _160D
ClearReceivedTempDataAllPlayers
SyncConnectedPlayers 122
@@ -1613,7 +1614,7 @@ _160D:
_1622:
SetVar VAR_0x8003, 0
FrontierScrCmd_9F
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
CallIfEq VAR_0x8008, 1, _0630
GoTo _0706
End
@@ -1648,7 +1649,7 @@ _16A2:
End
_16B6:
FrontierScrCmd_A0 4, 0, 0, VAR_0x8009
CallBattleCastleFunction BC_FUNC_GET_CURRENT_STREAK, 0, 0, VAR_0x8009
Return
_16BF:
@@ -1657,13 +1658,13 @@ _16BF:
_16C7:
SetVar VAR_0x8003, 1
FrontierScrCmd_A0 44, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_44, 0, 0, VAR_0x8008
MessageInstant BattleCastleScene_Text_Saving
FrontierScrCmd_A0 17, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_GET_CHALLENGE_TYPE, 0, 0, VAR_0x8008
ShowSavingIcon
FrontierScrCmd_6D 4, VAR_0x8008, VAR_0x8009, VAR_0x8009
HideSavingIcon
FrontierScrCmd_A0 44, 1, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_44, 1, 0, VAR_0x8008
GoToIfEq VAR_0x8009, 1, _1707
Message BattleCastleScene_Text_VideoSaveFailed
Return
@@ -1691,13 +1692,13 @@ _1720:
_173E:
FrontierScrCmd_3D VAR_BATTLE_CASTLE_LOBBY_LOAD_ACTION, 2
FrontierScrCmd_A0 10, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_10, 0, 0, VAR_0x8008
FreeBattleRecording
FrontierScrCmd_99
Call _195E
FadeScreenOut
CloseMessage
FrontierScrCmd_A0 7, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_RESET_SYSTEM, 0, 0, VAR_0x8008
End
_176C:
@@ -1708,7 +1709,7 @@ _1774:
Message BattleCastleScene_Text_RetireQuestion
ShowYesNoMenu VAR_0x8008, MENU_NO
GoToIfEq VAR_0x8008, 1, _1806
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _17AA
Message BattleCastleScene_Text_ReturnItems
GoTo _17F1
@@ -1736,7 +1737,7 @@ _17D9:
End
_17F1:
FrontierScrCmd_A0 21, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_21, 0, 0, VAR_0x8008
FrontierScrCmd_3D VAR_BATTLE_CASTLE_LOBBY_LOAD_ACTION, 3
GoTo _18E4
End
@@ -1777,14 +1778,14 @@ _1893:
End
_189B:
FrontierScrCmd_A0 21, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_21, 0, 0, VAR_0x8008
FrontierScrCmd_3D VAR_BATTLE_CASTLE_LOBBY_LOAD_ACTION, 3
GoTo _18B0
End
_18B0:
Message BattleCastleScene_Text_ReturnItems
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _18D0
GoTo _18E4
End
@@ -1804,12 +1805,12 @@ _18E4:
End
_18F4:
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
CallIfEq VAR_0x8008, 1, _1948
FadeScreenOut
FrontierScrCmd_A0 17, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_GET_CHALLENGE_TYPE, 0, 0, VAR_0x8008
CallIfEq VAR_0x8008, 2, _1942
FrontierScrCmd_A0 17, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_GET_CHALLENGE_TYPE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 3, _1952
FreeBattleRecording
FrontierScrCmd_99
@@ -1853,7 +1854,7 @@ _199D:
ClearReceivedTempDataAllPlayers
SyncConnectedPlayers 126
ClearReceivedTempDataAllPlayers
FrontierScrCmd_A0 30, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_30, 0, 0, VAR_0x8008
SetVar FR_VAR_0x8010, VAR_0x8008
GoToIfEq FR_VAR_0x8010, 1, _0833
GoToIfEq FR_VAR_0x8010, 2, _08E5
@@ -1863,7 +1864,7 @@ _199D:
_19E8:
FreeParticleSystem 0
FrontierScrCmd_A0 35, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _1A30
FrontierScrCmd_25 0
FrontierScrCmd_25 4
@@ -1888,7 +1889,7 @@ _1A30:
_1A60:
GoToIfEq VAR_0x8003, 1, _1372
FrontierScrCmd_A0 43, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_UNK_43, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _1372
Call _1B75
BufferNumber 0, VAR_0x8008
@@ -1960,7 +1961,7 @@ _1B63:
End
_1B75:
FrontierScrCmd_A0 4, 0, 0, VAR_0x8008
CallBattleCastleFunction BC_FUNC_GET_CURRENT_STREAK, 0, 0, VAR_0x8008
GoToIfGe VAR_0x8008, 9999, _1B91
AddVar VAR_0x8008, 1
Return

View File

@@ -1,6 +1,7 @@
# include "macros/frscrcmd.inc"
# include "res/graphics/frontier/particles/frontier_particles.naix"
# include "res/text/bank/battle_factory_scene.h"
# include "constants/battle_factory_functions.h"
# include "constants/battle_frontier.h"
# include "constants/battle_frontier_emitters.h"
@@ -451,8 +452,8 @@ _033E:
FrontierScrCmd_24 _0088
InitNewBattleRecording
FrontierScrCmd_5C VAR_0x8003, VAR_0x8001, VAR_0x8002
FrontierScrCmd_67 31, 0, 0, VAR_0x8008
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_31, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0377
GoTo _03B6
End
@@ -476,7 +477,7 @@ _0385:
_03B6:
FrontierScrCmd_5D VAR_0x8003
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _03D6
GoTo _0407
End
@@ -496,7 +497,7 @@ _03D6:
_0407:
FadeScreenIn
SetVar VAR_0x8003, 0
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0447
ApplyMovement 4, _0188
ApplyMovement 5, _0198
@@ -516,7 +517,7 @@ _0447:
_0471:
FrontierScrCmd_25 5
FrontierScrCmd_23 FR_VAR_0x800F
FrontierScrCmd_67 23, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_23, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 0, _049B
SetVar VAR_0x8003, 1
GoTo _0C29
@@ -528,7 +529,7 @@ _049B:
End
_04A9:
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _04C5
GoTo _05F3
End
@@ -549,8 +550,8 @@ _04D5:
ClearReceivedTempDataAllPlayers
SyncConnectedPlayers 232
ClearReceivedTempDataAllPlayers
FrontierScrCmd_67 39, 0, 0, VAR_0x8008
FrontierScrCmd_67 19, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_39, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_19, 0, 0, VAR_0x8008
SetVar VAR_0x8009, VAR_0x8008
CallIfEq VAR_0x8009, 0, _0555
CallIfEq VAR_0x8009, 1, _0597
@@ -560,35 +561,35 @@ _04D5:
Return
_0555:
FrontierScrCmd_67 15, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_15, 0, 0, VAR_0x8008
BufferSpeciesName 1, VAR_0x8008
FrontierScrCmd_67 15, 1, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_15, 1, 0, VAR_0x8008
BufferSpeciesName 2, VAR_0x8008
FrontierScrCmd_67 15, 2, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_15, 2, 0, VAR_0x8008
BufferSpeciesName 3, VAR_0x8008
FrontierScrCmd_67 15, 3, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_15, 3, 0, VAR_0x8008
BufferSpeciesName 4, VAR_0x8008
Message BattleFactoryScene_Text_MultiOpponentInfo4Mon
Return
_0597:
FrontierScrCmd_67 15, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_15, 0, 0, VAR_0x8008
BufferSpeciesName 1, VAR_0x8008
FrontierScrCmd_67 15, 2, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_15, 2, 0, VAR_0x8008
BufferSpeciesName 2, VAR_0x8008
Message BattleFactoryScene_Text_MultiOpponentInfo2Mon
Return
_05BB:
FrontierScrCmd_67 16, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_16, 0, 0, VAR_0x8008
BufferMoveName 0, VAR_0x8008
FrontierScrCmd_67 16, 2, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_16, 2, 0, VAR_0x8008
BufferMoveName 1, VAR_0x8008
Message BattleFactoryScene_Text_MultiOpponentInfoFirstMoves
Return
_05D9:
FrontierScrCmd_67 16, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_16, 0, 0, VAR_0x8008
BufferMoveName 0, VAR_0x8008
Message BattleFactoryScene_Text_MultiOpponentInfoCommonType
Return
@@ -598,7 +599,7 @@ _05EB:
End
_05F3:
FrontierScrCmd_67 19, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_19, 0, 0, VAR_0x8008
SetVar VAR_0x8009, VAR_0x8008
CallIfEq VAR_0x8009, 0, _0643
CallIfEq VAR_0x8009, 1, _0676
@@ -608,39 +609,39 @@ _05F3:
Return
_0643:
FrontierScrCmd_67 15, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_15, 0, 0, VAR_0x8008
BufferSpeciesName 1, VAR_0x8008
FrontierScrCmd_67 15, 1, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_15, 1, 0, VAR_0x8008
BufferSpeciesName 3, VAR_0x8008
FrontierScrCmd_67 15, 2, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_15, 2, 0, VAR_0x8008
BufferSpeciesName 5, VAR_0x8008
Message BattleFactoryScene_Text_OpponentInfo3Mon
Return
_0676:
FrontierScrCmd_67 15, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_15, 0, 0, VAR_0x8008
BufferSpeciesName 1, VAR_0x8008
FrontierScrCmd_67 15, 1, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_15, 1, 0, VAR_0x8008
BufferSpeciesName 3, VAR_0x8008
Message BattleFactoryScene_Text_OpponentInfo2Mon
Return
_069A:
FrontierScrCmd_67 16, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_16, 0, 0, VAR_0x8008
BufferMoveName 0, VAR_0x8008
FrontierScrCmd_67 15, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_15, 0, 0, VAR_0x8008
BufferSpeciesName 1, VAR_0x8008
Message BattleFactoryScene_Text_OpponentInfo1Mon
Return
_06BB:
FrontierScrCmd_67 16, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_16, 0, 0, VAR_0x8008
BufferMoveName 0, VAR_0x8008
Message BattleFactoryScene_Text_OpponentInfoFirstMove
Return
_06CD:
FrontierScrCmd_67 18, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_18, 0, 0, VAR_0x8008
CallIfNe VAR_0x8008, 255, _06F0
CallIfEq VAR_0x8008, 255, _06FB
Return
@@ -656,7 +657,7 @@ _06FB:
_0701:
Message BattleFactoryScene_Text_ChoosePokemon
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0721
GoTo _0765
End
@@ -672,7 +673,7 @@ _072D:
GoToIfEq VAR_0x8008, 0, _072D
FrontierScrCmd_6A VAR_0x8002
ClearReceivedTempDataAllPlayers
FrontierScrCmd_67 40, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_40, 0, 0, VAR_0x8008
ClearReceivedTempDataAllPlayers
SyncConnectedPlayers 160
ClearReceivedTempDataAllPlayers
@@ -682,14 +683,14 @@ _072D:
_0765:
FadeScreenOut
CloseMessage
FrontierScrCmd_67 32, 0, 0, VAR_0x8008
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_32, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
CallIfEq VAR_0x8008, 1, _07D2
FrontierScrCmd_5F
FrontierScrCmd_67 36, 0, 0, VAR_0x8008
OpenBattleFactoryAppInitial
CallBattleFactoryFunction BF_FUNC_UNK_36, 0, 0, VAR_0x8008
FrontierScrCmd_63
FrontierScrCmd_67 31, 0, 0, VAR_0x8008
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_31, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
CallIfEq VAR_0x8008, 1, _07C8
FadeScreenIn
GoTo _07DC
@@ -708,7 +709,7 @@ _07D2:
Return
_07DC:
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0812
Message BattleFactoryScene_Text_GoIn
WaitABPress
@@ -736,13 +737,13 @@ _084E:
PlaySoundEffect SEQ_SE_DP_KAIDAN2
WaitSoundEffect SEQ_SE_DP_KAIDAN2
FadeScreenOut
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0927
FrontierScrCmd_25 0
FrontierScrCmd_25 3
FrontierScrCmd_25 4
FrontierScrCmd_23 30
FrontierScrCmd_67 32, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_32, 0, 0, VAR_0x8008
FrontierScrCmd_03 4
GetPlayerObjEventGfx VAR_0x8007
FrontierScrCmd_22 _00F8
@@ -751,7 +752,7 @@ _084E:
ApplyMovement 4, _01F4
WaitMovement
Call _1471
FrontierScrCmd_67 37, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_37, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _14E6
GoToIfEq VAR_0x8008, 2, _150B
Call _1612
@@ -762,7 +763,7 @@ _084E:
WaitTime 15, VAR_0x8008
ApplyMovement 98, _01EC
WaitMovement
FrontierScrCmd_67 33, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_33, 0, 0, VAR_0x8008
FrontierScrCmd_6B 0
WaitABPress
CloseMessage
@@ -779,7 +780,7 @@ _0927:
FrontierScrCmd_25 3
FrontierScrCmd_25 4
FrontierScrCmd_23 30
FrontierScrCmd_67 32, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_32, 0, 0, VAR_0x8008
FrontierScrCmd_03 4
GetPlayerObjEventGfx VAR_0x8007
FrontierScrCmd_22 _0100
@@ -797,13 +798,13 @@ _0927:
WaitTime 15, VAR_0x8008
ApplyMovement 98, _01EC
WaitMovement
FrontierScrCmd_67 33, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_33, 0, 0, VAR_0x8008
FrontierScrCmd_6B 0
WaitTime 30, VAR_0x8008
CloseMessage
ApplyMovement 99, _01EC
WaitMovement
FrontierScrCmd_67 33, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_33, 0, 0, VAR_0x8008
FrontierScrCmd_6B 1
WaitTime 30, VAR_0x8008
CloseMessage
@@ -812,17 +813,17 @@ _0927:
End
_09E4:
FrontierScrCmd_67 20, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_20, 0, 0, VAR_0x8008
SetVar VAR_0x800B, VAR_0x8008
FrontierScrCmd_22 _0150
FrontierScrCmd_24 _0160
Return
_09FF:
FrontierScrCmd_67 20, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_20, 0, 0, VAR_0x8008
SetVar VAR_0x800B, VAR_0x8008
FrontierScrCmd_22 _0150
FrontierScrCmd_67 20, 1, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_20, 1, 0, VAR_0x8008
SetVar VAR_0x800C, VAR_0x8008
FrontierScrCmd_22 _0158
FrontierScrCmd_24 _0170
@@ -835,9 +836,9 @@ _0A2D:
Return
_0A41:
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0A92
FrontierScrCmd_67 37, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_37, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0A82
GoToIfEq VAR_0x8008, 2, _0A82
FrontierScrCmd_3F 3
@@ -856,7 +857,7 @@ _0A92:
GoToIfEq VAR_0x8008, 0, _0A92
FrontierScrCmd_6A VAR_0x8002
ClearReceivedTempDataAllPlayers
FrontierScrCmd_67 38, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_38, 0, 0, VAR_0x8008
ClearReceivedTempDataAllPlayers
SyncConnectedPlayers 161
ClearReceivedTempDataAllPlayers
@@ -866,14 +867,14 @@ _0A92:
End
_0AD0:
FrontierScrCmd_61
FrontierScrCmd_60
FrontierScrCmd_67 30, 4, 0, VAR_0x8008
BattleFactory_StartBattle
BattleFactory_CleanupBattle
CallBattleFactoryFunction BF_FUNC_UNK_30, 4, 0, VAR_0x8008
FadeScreenIn
FrontierScrCmd_68 VAR_0x8008
BattleFactory_CheckWonBattle VAR_0x8008
GoToIfEq VAR_0x8008, 0, _1233
IncrementRecordValue RECORD_BATTLE_FACTORY_VICTORIES
FrontierScrCmd_67 37, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_37, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _15AA
GoToIfEq VAR_0x8008, 2, _15DE
Call _1612
@@ -892,9 +893,9 @@ _0B3E:
End
_0B4C:
FrontierScrCmd_67 14, 1, 0, VAR_0x8008
FrontierScrCmd_67 5, 0, 0, VAR_0x8008
FrontierScrCmd_67 23, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_14, 1, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_INCREMENT_CURRENT_STREAK, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_23, 0, 0, VAR_0x8008
GoToIfNe VAR_0x8008, 7, _0C17
GoTo _0B76
End
@@ -921,11 +922,11 @@ _0BCB:
End
_0BD9:
FrontierScrCmd_67 22, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_22, 0, 0, VAR_0x8008
FrontierScrCmd_3D VAR_BATTLE_FACTORY_LOBBY_LOAD_ACTION, 1
Message BattleFactoryScene_Text_BPEarned
BufferPlayerName 0
FrontierScrCmd_67 35, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_35, 0, 0, VAR_0x8008
BufferNumber 1, VAR_0x8008
GiveBattlePoints VAR_0x8008
Message BattleFactoryScene_Text_ReceiveBP
@@ -946,7 +947,7 @@ _0C17:
End
_0C29:
FrontierScrCmd_67 37, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_37, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _14AE
GoToIfEq VAR_0x8008, 2, _14AE
GoTo _0C52
@@ -959,7 +960,7 @@ _0C52:
End
_0C65:
FrontierScrCmd_67 23, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_23, 0, 0, VAR_0x8008
AddVar VAR_0x8008, 1
BufferNumber 0, VAR_0x8008
Message BattleFactoryScene_Text_AreYouReady
@@ -967,7 +968,7 @@ _0C65:
End
_0C83:
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0CAC
GoToIfEq VAR_0x8003, 0, _0CFC
GoTo _0CEE
@@ -1054,7 +1055,7 @@ _0DDE:
End
_0E1A:
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0E36
GoTo _0E9F
End
@@ -1071,7 +1072,7 @@ _0E45:
GoToIfEq VAR_0x8008, 0, _0E45
FrontierScrCmd_6A VAR_0x8002
ClearReceivedTempDataAllPlayers
FrontierScrCmd_67 24, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_24, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0E8A
ClearReceivedTempDataAllPlayers
SyncConnectedPlayers 162
@@ -1090,7 +1091,7 @@ _0E9F:
SetVar VAR_0x8003, 0
FrontierScrCmd_64
Call _04A9
FrontierScrCmd_67 0, 1, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_0, 1, 0, VAR_0x8008
Message BattleFactoryScene_Text_TradeQuestion
ShowYesNoMenu VAR_0x8008, MENU_YES
GoToIfEq VAR_0x8008, 1, _0FBF
@@ -1098,7 +1099,7 @@ _0E9F:
End
_0ED2:
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0EEE
GoTo _0F23
End
@@ -1120,7 +1121,7 @@ _0EFA:
_0F23:
FadeScreenOut
CloseMessage
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0F4D
GoTo _0F5D
End
@@ -1133,13 +1134,13 @@ _0F4D:
End
_0F5D:
FrontierScrCmd_67 32, 0, 0, VAR_0x8008
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_32, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
CallIfEq VAR_0x8008, 1, _0FAB
FrontierScrCmd_62
OpenBattleFactoryAppForTrade
FrontierScrCmd_65
FrontierScrCmd_67 31, 0, 0, VAR_0x8008
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_31, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
CallIfEq VAR_0x8008, 1, _0FB5
FadeScreenIn
GoTo _102C
@@ -1158,7 +1159,7 @@ _0FB5:
Return
_0FBF:
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0FDB
GoTo _1022
End
@@ -1173,7 +1174,7 @@ _0FE5:
GoToIfEq VAR_0x8008, 0, _0FE5
FrontierScrCmd_6A VAR_0x8002
ClearReceivedTempDataAllPlayers
FrontierScrCmd_67 26, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_26, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 0, _0F23
GoTo _1022
End
@@ -1218,7 +1219,7 @@ _1092:
End
_10A6:
FrontierScrCmd_67 4, 0, 0, VAR_0x8005
CallBattleFactoryFunction BF_FUNC_GET_CURRENT_STREAK, 0, 0, VAR_0x8005
Return
_10AF:
@@ -1235,13 +1236,13 @@ _10B7:
End
_10DE:
FrontierScrCmd_67 29, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_GET_CHALLENGE_TYPE, 0, 0, VAR_0x8008
FrontierScrCmd_6D 2, VAR_0x8008, VAR_0x8005, VAR_0x8005
GoTo _1110
End
_10F7:
FrontierScrCmd_67 29, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_GET_CHALLENGE_TYPE, 0, 0, VAR_0x8008
FrontierScrCmd_6D 3, VAR_0x8008, VAR_0x8005, VAR_0x8005
GoTo _1110
End
@@ -1275,14 +1276,14 @@ _113E:
_115C:
FrontierScrCmd_3D VAR_BATTLE_FACTORY_LOBBY_LOAD_ACTION, 2
FrontierScrCmd_67 10, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_10, 0, 0, VAR_0x8008
Call _137B
CloseMessage
FadeScreenOut
FrontierScrCmd_67 32, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_32, 0, 0, VAR_0x8008
FreeBattleRecording
FrontierScrCmd_5E
FrontierScrCmd_67 7, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_RESET_SYSTEM, 0, 0, VAR_0x8008
End
_1191:
@@ -1293,7 +1294,7 @@ _1199:
Message BattleFactoryScene_Text_RetireQuestion
ShowYesNoMenu VAR_0x8008, MENU_NO
GoToIfEq VAR_0x8008, 1, _122B
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _11CF
Message BattleFactoryScene_Text_ReturnPokemon
GoTo _1216
@@ -1321,7 +1322,7 @@ _11FE:
End
_1216:
FrontierScrCmd_67 21, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_21, 0, 0, VAR_0x8008
FrontierScrCmd_3D VAR_BATTLE_FACTORY_LOBBY_LOAD_ACTION, 3
GoTo _12F3
End
@@ -1358,14 +1359,14 @@ _12A2:
End
_12AA:
FrontierScrCmd_67 21, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_21, 0, 0, VAR_0x8008
FrontierScrCmd_3D VAR_BATTLE_FACTORY_LOBBY_LOAD_ACTION, 3
GoTo _12BF
End
_12BF:
Message BattleFactoryScene_Text_ReturnPokemon
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _12DF
GoTo _12F3
End
@@ -1385,14 +1386,14 @@ _12F3:
End
_1303:
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
CallIfEq VAR_0x8008, 1, _135E
FadeScreenOut
FrontierScrCmd_67 29, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_GET_CHALLENGE_TYPE, 0, 0, VAR_0x8008
CallIfEq VAR_0x8008, 2, _1358
FrontierScrCmd_67 29, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_GET_CHALLENGE_TYPE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 3, _1368
FrontierScrCmd_67 32, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_32, 0, 0, VAR_0x8008
FreeBattleRecording
FrontierScrCmd_5E
FrontierScrCmd_02
@@ -1408,7 +1409,7 @@ _135E:
Return
_1368:
FrontierScrCmd_67 32, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_32, 0, 0, VAR_0x8008
FreeBattleRecording
FrontierScrCmd_5E
FrontierScrCmd_04 14, 1
@@ -1427,12 +1428,12 @@ _1391:
PlaySoundEffect SEQ_SE_DP_KAIDAN2
WaitSoundEffect SEQ_SE_DP_KAIDAN2
FadeScreenOut
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _13EA
FrontierScrCmd_25 0
FrontierScrCmd_25 4
FrontierScrCmd_03 3
FrontierScrCmd_67 31, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_31, 0, 0, VAR_0x8008
GetPlayerObjEventGfx VAR_0x8007
FrontierScrCmd_22 _0008
FrontierScrCmd_24 _0098
@@ -1444,7 +1445,7 @@ _13EA:
FrontierScrCmd_25 2
FrontierScrCmd_25 4
FrontierScrCmd_03 3
FrontierScrCmd_67 31, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_31, 0, 0, VAR_0x8008
GetPlayerObjEventGfx VAR_0x8007
FrontierScrCmd_22 _0014
FrontierScrCmd_24 _00BC
@@ -1452,7 +1453,7 @@ _13EA:
Return
_141F:
FrontierScrCmd_67 28, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_IS_MULTIPLAYER_CHALLENGE, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _1447
ApplyMovement 98, _0278
WaitMovement
@@ -1472,20 +1473,20 @@ _1447:
Return
_1471:
FrontierScrCmd_67 30, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_30, 0, 0, VAR_0x8008
WaitTime 3, VAR_0x8008
FrontierScrCmd_67 30, 1, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_30, 1, 0, VAR_0x8008
WaitTime 3, VAR_0x8008
FrontierScrCmd_67 30, 2, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_30, 2, 0, VAR_0x8008
WaitTime 3, VAR_0x8008
FrontierScrCmd_67 30, 3, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_30, 3, 0, VAR_0x8008
WaitTime 3, VAR_0x8008
FrontierScrCmd_67 30, 4, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_30, 4, 0, VAR_0x8008
Return
_14AE:
GoToIfEq VAR_0x8003, 1, _0C52
FrontierScrCmd_67 41, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_41, 0, 0, VAR_0x8008
GoToIfEq VAR_0x8008, 1, _0C52
Call _1612
BufferNumber 0, VAR_0x8008
@@ -1514,7 +1515,7 @@ _150B:
End
_1530:
FrontierScrCmd_67 34, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_34, 0, 0, VAR_0x8008
GetRandom VAR_0x8008, 90
AddVar VAR_0x8008, 10
BufferNumber 3, VAR_0x8008
@@ -1569,7 +1570,7 @@ _160A:
Return
_1612:
FrontierScrCmd_67 4, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_GET_CURRENT_STREAK, 0, 0, VAR_0x8008
GoToIfGe VAR_0x8008, 9999, _162E
AddVar VAR_0x8008, 1
Return
@@ -1579,7 +1580,7 @@ _162E:
_1630:
WaitTime 1, VAR_0x8008
FrontierScrCmd_67 27, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_27, 0, 0, VAR_0x8008
WaitTime 1, VAR_0x8008
ClearReceivedTempDataAllPlayers
SyncConnectedPlayers 195
@@ -1588,7 +1589,7 @@ _1630:
_164D:
WaitTime 1, VAR_0x8008
FrontierScrCmd_67 27, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_27, 0, 0, VAR_0x8008
WaitTime 1, VAR_0x8008
ClearReceivedTempDataAllPlayers
SyncConnectedPlayers 196
@@ -1597,7 +1598,7 @@ _164D:
_166A:
WaitTime 1, VAR_0x8008
FrontierScrCmd_67 27, 0, 0, VAR_0x8008
CallBattleFactoryFunction BF_FUNC_UNK_27, 0, 0, VAR_0x8008
WaitTime 1, VAR_0x8008
ClearReceivedTempDataAllPlayers
SyncConnectedPlayers 197

View File

@@ -786,11 +786,11 @@ _08F1:
_0907:
BattleHall_StartBattle
BattleHall_CheckWonBattle
BattleHall_CleanupBattle
CallBattleHallFunction BH_FUNC_UPDATE_HELD_ITEMS, 0, 0, VAR_0x8008
CallBattleHallFunction BH_FUNC_TOGGLE_ENGINE_LAYER, 0, 0, VAR_0x8008
FadeScreenIn
BattleHall_GetBattleResult VAR_0x8008
BattleHall_CheckWonBattle VAR_0x8008
GoToIfEq VAR_0x8008, 0, _0F5D
IncrementRecordValue RECORD_BATTLE_HALL_VICTORIES
CallBattleHallFunction BH_FUNC_UNK_28, 0, 0, VAR_0x8008
@@ -851,7 +851,7 @@ _0A41:
_0A49:
CallBattleHallFunction BH_FUNC_UNK_14, 1, 0, VAR_0x8008
CallBattleHallFunction BH_FUNC_INCREMENT_CURRENT_STEAK, 0, 0, VAR_0x8008
CallBattleHallFunction BH_FUNC_INCREMENT_CURRENT_STREAK, 0, 0, VAR_0x8008
CallBattleHallFunction BH_FUNC_UNK_23, 0, 0, VAR_0x8008
GoToIfNe VAR_0x8008, 10, _0B25
GoTo _0A73

View File

@@ -349,8 +349,8 @@ _046D:
Call _04C8
FrontierScrCmd_3F 0
CallBattleTowerFunction BT_FUNC_UNK_59, 0, VAR_0x8008
FrontierScrCmd_87
CheckWonTowerBattle VAR_0x800C
BattleTower_StartBattle
BattleTower_CheckWonBattle VAR_0x800C
FadeScreenIn
Return
@@ -573,8 +573,8 @@ _086E:
Call _04C8
IncrementRecordValue RECORD_UNK_059
FrontierScrCmd_47 1
FrontierScrCmd_87
CheckWonTowerBattle VAR_0x800C
BattleTower_StartBattle
BattleTower_CheckWonBattle VAR_0x800C
FadeScreenIn
GoToIfEq VAR_0x800C, 0, _020F
CallBattleTowerFunction BT_FUNC_UNK_36, 0, VAR_0x8008

View File

@@ -722,8 +722,8 @@ _0A1B:
CloseMessage
Call _0A91
FrontierScrCmd_3F 0
FrontierScrCmd_87
CheckWonTowerBattle VAR_0x8003
BattleTower_StartBattle
BattleTower_CheckWonBattle VAR_0x8003
FadeScreenIn
Return
@@ -772,8 +772,8 @@ _0ACD:
SyncConnectedPlayers 4
CloseMessage
FrontierScrCmd_3F 0
FrontierScrCmd_87
CheckWonTowerBattle VAR_0x8003
BattleTower_StartBattle
BattleTower_CheckWonBattle VAR_0x8003
FadeScreenIn
Return

View File

@@ -14,7 +14,6 @@
#include "applications/frontier/battle_arcade/sprites.h"
#include "applications/frontier/battle_arcade/windows.h"
#include "overlay104/ov104_0223BCBC.h"
#include "overlay104/struct_ov104_02238240.h"
#include "battle_frontier_stats.h"
#include "bg_window.h"
@@ -108,7 +107,7 @@ static const struct {
[ARCADE_EFFECT_FREEZE_FOE] = { 0, 0, 0, 0, 1, 1, 1 },
[ARCADE_EFFECT_FOE_GET_BERRY] = { 1, 1, 1, 0, 0, 0, 1 },
[ARCADE_EFFECT_FOE_GET_ITEM] = { 0, 0, 0, 1, 1, 1, 1 },
[ARCADE_EFFECT_FOE_GET_LEVELS] = { 0, 1, 1, 1, 1, 1, 1 },
[ARCADE_EFFECT_FOE_LEVEL_UP] = { 0, 1, 1, 1, 1, 1, 1 },
[ARCADE_EFFECT_LOWER_ALLY_HP] = { 0, 1, 1, 1, 1, 1, 1 },
[ARCADE_EFFECT_POISON_ALLY] = { 1, 0, 1, 0, 0, 0, 1 },
[ARCADE_EFFECT_PARALYZE_ALLY] = { 1, 0, 1, 0, 0, 0, 1 },
@@ -117,17 +116,17 @@ static const struct {
[ARCADE_EFFECT_FREEZE_ALLY] = { 0, 0, 0, 0, 1, 1, 1 },
[ARCADE_EFFECT_ALLY_GET_BERRY] = { 1, 1, 1, 0, 0, 0, 1 },
[ARCADE_EFFECT_ALLY_GET_ITEM] = { 0, 0, 0, 1, 1, 1, 1 },
[ARCADE_EFFECT_ALLY_GET_LEVELS] = { 0, 1, 1, 1, 1, 1, 1 },
[ARCADE_EFFECT_ALLY_LEVEL_UP] = { 0, 1, 1, 1, 1, 1, 1 },
[ARCADE_EFFECT_SUNNY_BATTLE] = { 0, 1, 1, 0, 0, 0, 1 },
[ARCADE_EFFECT_RAINY_BATTLE] = { 0, 1, 1, 0, 0, 0, 1 },
[ARCADE_EFFECT_SANDY_BATTLE] = { 0, 1, 1, 0, 0, 0, 1 },
[ARCADE_EFFECT_HAIL_BATTLE] = { 0, 1, 1, 0, 0, 0, 1 },
[ARCADE_EFFECT_FOGGY_BATTLE] = { 0, 0, 0, 1, 0, 1, 1 },
[ARCADE_EFFECT_TRICK_ROOM] = { 0, 0, 0, 1, 0, 1, 1 },
[ARCADE_EFFECT_SWAP_MONS] = { 1, 1, 1, 1, 1, 1, 1 },
[ARCADE_EFFECT_SPEED_UP] = { 1, 1, 1, 0, 0, 0, 1 },
[ARCADE_EFFECT_SLOW_DOWN] = { 1, 1, 1, 1, 1, 1, 1 },
[ARCADE_EFFECT_RANDOMIZE_CURSOR] = { 0, 0, 0, 0, 1, 1, 1 },
[ARCADE_EFFECT_SPEED_UP] = { 1, 1, 1, 1, 1, 1, 1 },
[ARCADE_EFFECT_SLOW_DOWN] = { 1, 1, 1, 0, 0, 0, 1 },
[ARCADE_EFFECT_RANDOMIZE_CURSOR] = { 1, 1, 1, 1, 1, 1, 1 },
[ARCADE_EFFECT_SWAP_MONS] = { 0, 0, 0, 0, 1, 1, 1 },
[ARCADE_EFFECT_GET_1_BP] = { 0, 0, 0, 1, 1, 1, 1 },
[ARCADE_EFFECT_NO_BATTLE] = { 0, 0, 0, 0, 1, 1, 1 },
[ARCADE_EFFECT_NO_EVENT] = { 1, 1, 1, 1, 1, 1, 1 },
@@ -144,10 +143,10 @@ static const struct {
u8 battle6 : 1;
u8 battle7 : 1;
} sEffectAvailabilityByBattle[BATTLES_PER_ROUND_ARCADE] = {
{ 1, 1, 1, 1, 1, 1, 0 }, // ARCADE_EFFECT_RANDOMIZE_CURSOR
{ 1, 1, 1, 1, 1, 1, 0 }, // ARCADE_EFFECT_SWAP_MONS
{ 1, 1, 1, 1, 1, 1, 0 }, // ARCADE_EFFECT_SPEED_UP
{ 1, 1, 1, 1, 1, 1, 0 }, // ARCADE_EFFECT_SLOW_DOWN
{ 1, 1, 1, 1, 1, 1, 0 }, // ARCADE_EFFECT_RANDOMIZE_CURSOR
{ 1, 0, 1, 0, 1, 0, 0 }, // ARCADE_EFFECT_GET_1_BP
{ 0, 1, 0, 1, 0, 1, 0 }, // ARCADE_EFFECT_NO_BATTLE
{ 0, 1, 0, 1, 0, 1, 0 }, // ARCADE_EFFECT_GET_3_BP
@@ -294,28 +293,28 @@ BOOL BattleArcadeApp_Init(ApplicationManager *appMan, int *state)
app->bgConfig = BgConfig_New(HEAP_ID_BATTLE_ARCADE_APP);
app->appMan = appMan;
UnkStruct_ov104_02238240 *v2 = ApplicationManager_Args(appMan);
BattleArcadeAppArgs *args = ApplicationManager_Args(appMan);
app->saveData = v2->saveData;
app->saveData = args->saveData;
app->unk_E0 = sub_020304A0(app->saveData);
app->unk_E4 = sub_020305B8(app->saveData);
app->challengeType = v2->unk_04;
app->round = v2->unk_1E;
app->battleStreak = v2->unk_1C;
app->partnerBattleStreak = v2->unk_18;
app->unk_12 = v2->unk_07;
app->cursorPosPtr = &v2->unk_38;
app->challengeType = args->challengeType;
app->round = args->round;
app->battleStreak = args->currentStreak;
app->partnerBattleStreak = args->partnersStreak;
app->unk_12 = args->unk_07;
app->cursorPosPtr = &args->cursorPos;
app->options = SaveData_GetOptions(app->saveData);
app->party = v2->unk_30;
app->opponentsParty = v2->unk_34;
app->party = args->party;
app->opponentsParty = args->opponentsParty;
app->cursorPosID = 0xff;
app->frontier = SaveData_GetBattleFrontier(app->saveData);
app->unused6 = v2->unk_08;
app->rouletteSpeed = v2->unk_0C;
app->selectedEffect = v2->unk_10;
app->unk_24 = v2->unk_14;
app->unused6 = args->unk_08;
app->rouletteSpeed = args->rouletteSpeed;
app->selectedEffect = args->selectedEffect;
app->unk_24 = args->unk_14;
app->rouletteTimer = 30 * 30; // 30 Seconds at 30FPS
app->randomizeCursorMovement = v2->unk_40;
app->randomizeCursorMovement = args->randomizeCursorMovement;
for (int i = 0; i < NUM_ARCADE_EFFECTS; i++) {
app->availableEffects[i] = NUM_ARCADE_EFFECTS;
@@ -1252,16 +1251,16 @@ static void GetAvailableEffects(BattleArcadeApp *app)
u8 effectIndex = 0xff;
switch (effect) {
case ARCADE_EFFECT_RANDOMIZE_CURSOR:
case ARCADE_EFFECT_SWAP_MONS:
effectIndex = 0;
break;
case ARCADE_EFFECT_SWAP_MONS:
case ARCADE_EFFECT_SPEED_UP:
effectIndex = 1;
break;
case ARCADE_EFFECT_SPEED_UP:
case ARCADE_EFFECT_SLOW_DOWN:
effectIndex = 2;
break;
case ARCADE_EFFECT_SLOW_DOWN:
case ARCADE_EFFECT_RANDOMIZE_CURSOR:
effectIndex = 3;
break;
case ARCADE_EFFECT_GET_1_BP:

View File

@@ -9,13 +9,13 @@
#include "struct_decls/struct_0203041C_decl.h"
#include "struct_defs/battle_frontier.h"
#include "applications/frontier/battle_castle/args.h"
#include "applications/frontier/battle_castle/helpers.h"
#include "applications/frontier/battle_castle/sprite_manager.h"
#include "applications/frontier/battle_castle/sprites.h"
#include "applications/frontier/battle_castle/windows.h"
#include "overlay104/ov104_0222DCE0.h"
#include "overlay104/ov104_0223B6F4.h"
#include "overlay104/struct_ov104_0223597C.h"
#include "battle_frontier_stats.h"
#include "bg_window.h"
@@ -299,21 +299,21 @@ BOOL BattleCastleOpponentApp_Init(ApplicationManager *appMan, int *state)
app->bgConfig = BgConfig_New(HEAP_ID_BATTLE_CASTLE_APP);
app->appMan = appMan;
UnkStruct_ov104_0223597C *v2 = ApplicationManager_Args(appMan);
BattleCastleAppArgs *args = ApplicationManager_Args(appMan);
app->saveData = v2->saveData;
app->saveData = args->saveData;
app->unk_150 = sub_020302DC(app->saveData);
app->unk_154 = sub_0203041C(app->saveData);
app->challengeType = v2->unk_04;
app->selectedMonSlotPtr = &v2->unk_20;
app->challengeType = args->challengeType;
app->selectedMonSlotPtr = &args->selectedMonSlot;
app->options = SaveData_GetOptions(app->saveData);
app->opponentsParty = v2->unk_1C;
app->identityUnlockedForSlot = &v2->unk_08[0];
app->levelAdjustmentForSlot = &v2->unk_0C[0];
app->statsUnlockedForSlot = &v2->unk_10[0];
app->movesUnlockedForSlot = &v2->unk_14[0];
app->opponentsParty = args->opponentsParty;
app->identityUnlockedForSlot = &args->identityUnlocked[0];
app->levelAdjustmentForSlot = &args->levelAdjustmentUnlocked[0];
app->statsUnlockedForSlot = &args->statsUnlocked[0];
app->movesUnlockedForSlot = &args->movesUnlocked[0];
app->slotID = 0xff;
app->partnersCP = v2->unk_28;
app->partnersCP = args->partnersCP;
app->frontier = SaveData_GetBattleFrontier(app->saveData);
for (int i = 0; i < BATTLE_CASTLE_NUM_RANK_TYPES; i++) {

View File

@@ -7,13 +7,13 @@
#include "struct_decls/struct_0203041C_decl.h"
#include "struct_defs/battle_frontier.h"
#include "applications/frontier/battle_castle/args.h"
#include "applications/frontier/battle_castle/helpers.h"
#include "applications/frontier/battle_castle/sprite_manager.h"
#include "applications/frontier/battle_castle/sprites.h"
#include "applications/frontier/battle_castle/windows.h"
#include "overlay104/ov104_0222DCE0.h"
#include "overlay104/ov104_0223B6F4.h"
#include "overlay104/struct_ov104_0223597C.h"
#include "battle_frontier_stats.h"
#include "bg_window.h"
@@ -505,17 +505,17 @@ BOOL BattleCastleSelfApp_Init(ApplicationManager *appMan, int *state)
app->bgConfig = BgConfig_New(HEAP_ID_BATTLE_CASTLE_APP);
app->appMan = appMan;
UnkStruct_ov104_0223597C *v2 = ApplicationManager_Args(appMan);
BattleCastleAppArgs *args = ApplicationManager_Args(appMan);
app->saveData = v2->saveData;
app->saveData = args->saveData;
app->unk_1D0 = sub_020302DC(app->saveData);
app->unk_1D4 = sub_0203041C(app->saveData);
app->challengeType = v2->unk_04;
app->selectedMonSlotPtr = &v2->unk_20;
app->challengeType = args->challengeType;
app->selectedMonSlotPtr = &args->selectedMonSlot;
app->options = SaveData_GetOptions(app->saveData);
app->party = v2->unk_18;
app->party = args->party;
app->slotID = 0xff;
app->partnersCP = v2->unk_28;
app->partnersCP = args->partnersCP;
app->frontier = SaveData_GetBattleFrontier(app->saveData);
for (int i = 0; i < BATTLE_CASTLE_NUM_RANK_TYPES; i++) {

View File

@@ -15,7 +15,6 @@
#include "applications/pokemon_summary_screen/main.h"
#include "overlay104/ov104_0222DCE0.h"
#include "overlay104/ov104_0223A7F4.h"
#include "overlay104/struct_ov104_02234130.h"
#include "bg_window.h"
#include "communication_information.h"
@@ -386,15 +385,15 @@ int BattleFactoryApp_Init(ApplicationManager *appMan, int *state)
app->bgConfig = BgConfig_New(HEAP_ID_BATTLE_FACTORY_APP);
app->appMan = appMan;
UnkStruct_ov104_02234130 *v2 = ApplicationManager_Args(appMan);
BattleFactoryAppArgs *args = ApplicationManager_Args(appMan);
app->saveData = v2->saveData;
app->challengeType = v2->unk_04;
app->unk_0A = v2->unk_05;
app->isExchangeMode = v2->unk_06;
app->personalParty = v2->unk_08;
app->receivableParty = v2->unk_0C;
app->selectedIndicesFinal = &v2->unk_10[0];
app->saveData = args->saveData;
app->challengeType = args->challengeType;
app->unk_0A = args->unk_05;
app->isExchangeMode = args->isExchangeMode;
app->personalParty = args->personalParty;
app->receivableParty = args->receivableParty;
app->selectedIndicesFinal = &args->selectedIndices[0];
app->options = SaveData_GetOptions(app->saveData);
app->wheelPaletteCounter = 8;

View File

@@ -925,16 +925,16 @@ pokeplatinum_c = files(
'overlay104/ov104_0222ECE8.c',
'overlay104/frscrcmd.c',
'overlay104/ov104_02231F74.c',
'overlay104/ov104_022332B4.c',
'overlay104/frscrcmd_battle_factory.c',
'overlay104/ov104_022339B4.c',
'overlay104/frscrcmd_battle_hall.c',
'overlay104/ov104_02234DB4.c',
'overlay104/ov104_022358E8.c',
'overlay104/frscrcmd_battle_castle.c',
'overlay104/ov104_022361B4.c',
'overlay104/ov104_02237378.c',
'overlay104/frscrcmd_battle_arcade.c',
'overlay104/ov104_02237DD8.c',
'overlay104/frscrcmd_sound.c',
'overlay104/ov104_02239130.c',
'overlay104/frscrcmd_battle_tower.c',
'overlay104/ov104_022394A4.c',
'overlay104/ov104_022395F0.c',
'overlay104/ov104_02239C58.c',

View File

@@ -24,14 +24,14 @@
#include "overlay104/frontier_particle_system.h"
#include "overlay104/frontier_script_context.h"
#include "overlay104/frontier_script_manager.h"
#include "overlay104/frscrcmd_battle_arcade.h"
#include "overlay104/frscrcmd_battle_castle.h"
#include "overlay104/frscrcmd_battle_factory.h"
#include "overlay104/frscrcmd_battle_hall.h"
#include "overlay104/frscrcmd_battle_tower.h"
#include "overlay104/frscrcmd_sound.h"
#include "overlay104/ov104_0222DCE0.h"
#include "overlay104/ov104_02231F74.h"
#include "overlay104/ov104_022332B4.h"
#include "overlay104/ov104_022358E8.h"
#include "overlay104/ov104_02237378.h"
#include "overlay104/ov104_02239130.h"
#include "overlay104/ov104_022395F0.h"
#include "overlay104/ov104_0223D768.h"
#include "overlay104/ov104_0223D860.h"

View File

@@ -0,0 +1,623 @@
#include "overlay104/frscrcmd_battle_arcade.h"
#include <nitro.h>
#include "constants/battle_arcade_functions.h"
#include "constants/battle_frontier.h"
#include "applications/frontier/battle_arcade/main.h"
#include "overlay063/ov63_0222CCE4.h"
#include "overlay104/defs.h"
#include "overlay104/frontier_graphics.h"
#include "overlay104/frontier_particle_system.h"
#include "overlay104/frontier_script_context.h"
#include "overlay104/frontier_script_manager.h"
#include "overlay104/frscrcmd.h"
#include "overlay104/ov104_0222DCE0.h"
#include "overlay104/ov104_02231F74.h"
#include "overlay104/ov104_02237DD8.h"
#include "overlay104/ov104_0223B6F4.h"
#include "overlay104/ov104_0223BCBC.h"
#include "overlay104/struct_battle_arcade.h"
#include "overlay104/struct_ov104_02230BE4.h"
#include "overlay104/struct_ov104_0223C634.h"
#include "communication_information.h"
#include "field_battle_data_transfer.h"
#include "gx_layers.h"
#include "heap.h"
#include "palette.h"
#include "particle_system.h"
#include "party.h"
#include "pokemon.h"
#include "save_player.h"
#include "sprite.h"
#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"
FS_EXTERN_OVERLAY(battle_arcade_app);
#include <nitro/code16.h>
static BOOL ov104_02237D18(FrontierScriptContext *param0);
static void SetupBattleArcadeAppArgs(BattleArcadeAppArgs *args, BattleArcade *battleArcade);
static void ov104_02237C30(SPLEmitter *param0);
static void ov104_02237C0C(FrontierScriptContext *param0, BattleArcade *param1, u16 param2);
static void StoreBattleArcadeAppResults(void *data);
BOOL FrontierScrCmd_B8(FrontierScriptContext *param0)
{
BattleArcade *v0;
UnkStruct_ov104_02230BE4 *v1;
u16 v2 = FrontierScriptContext_GetVar(param0);
u16 v3 = FrontierScriptContext_GetVar(param0);
u16 v4 = FrontierScriptContext_GetVar(param0);
u16 v5 = FrontierScriptContext_GetVar(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);
sub_0209B980(param0->scriptMan->unk_00, v0);
return 0;
}
BOOL FrontierScrCmd_B9(FrontierScriptContext *param0)
{
BattleArcade *v0;
u16 v1 = FrontierScriptContext_GetVar(param0);
v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_0223806C(v0, v1);
return 0;
}
BOOL FrontierScrCmd_BA(FrontierScriptContext *param0)
{
BattleArcade *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_02238210(v0);
return 0;
}
BOOL FrontierScrCmd_OpenBattleArcadeApp(FrontierScriptContext *ctx)
{
UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(ctx->scriptMan->unk_00);
FS_EXTERN_OVERLAY(battle_arcade_app);
static const ApplicationManagerTemplate sBattleArcadeAppTemplate = {
BattleArcadeApp_Init,
BattleArcadeApp_Main,
BattleArcadeApp_Exit,
FS_OVERLAY_ID(battle_arcade_app)
};
BattleArcade *battleArcade = sub_0209B978(ctx->scriptMan->unk_00);
BattleArcadeAppArgs *args = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleArcadeAppArgs));
MI_CpuClear8(args, sizeof(BattleArcadeAppArgs));
args->saveData = v3->saveData;
SetupBattleArcadeAppArgs(args, battleArcade);
sub_0209B988(ctx->scriptMan->unk_00, &sBattleArcadeAppTemplate, args, 0, StoreBattleArcadeAppResults);
return TRUE;
}
BOOL FrontierScrCmd_BattleArcade_CleanupBattle(FrontierScriptContext *ctx)
{
int i, partyIdx1, partyIdx2, numMons, stat;
BattleArcade *battleArcade = sub_0209B978(ctx->scriptMan->unk_00);
FieldBattleDTO *dto = battleArcade->dto;
battleArcade->unk_1D = ov104_02238538(battleArcade, dto->parties[0], dto->parties[2], dto->totalTurnsElapsed);
battleArcade->wonBattle = CheckPlayerWonBattle(dto->resultMask);
if (battleArcade->activeEffect == ARCADE_EFFECT_SWAP_MONS) {
partyIdx1 = BATTLER_ENEMY_1;
partyIdx2 = BATTLER_ENEMY_2;
} else {
partyIdx1 = BATTLER_PLAYER_1;
partyIdx2 = BATTLER_PLAYER_2;
}
ov104_02239054(dto->parties[partyIdx1], battleArcade->unk_70, 0, 0);
ov104_02239054(dto->parties[partyIdx1], battleArcade->unk_70, 1, 1);
if (!BattleCastle_IsMultiPlayerChallenge(battleArcade->challengeType)) {
ov104_02239054(dto->parties[partyIdx1], battleArcade->unk_70, 2, 2);
} else {
ov104_02239054(dto->parties[partyIdx2], battleArcade->unk_70, 0, 2);
ov104_02239054(dto->parties[partyIdx2], battleArcade->unk_70, 1, 3);
}
if (battleArcade->activeEffect == ARCADE_EFFECT_ALLY_LEVEL_UP) {
u8 numMons = BattleArcade_GetPartySize(battleArcade->challengeType, FRONTIER_CHALLENGE_DOUBLE);
for (i = 0; i < numMons; i++) {
Pokemon *mon = Party_GetPokemonBySlotIndex(battleArcade->unk_70, i);
u32 level = Pokemon_GetValue(mon, MON_DATA_LEVEL, NULL);
level -= 3;
u32 exp = Pokemon_GetSpeciesBaseExpAt(Pokemon_GetValue(mon, MON_DATA_SPECIES, NULL), level);
Pokemon_SetValue(mon, MON_DATA_EXPERIENCE, &exp);
Pokemon_CalcLevelAndStats(mon);
}
}
numMons = Party_GetCurrentCount(battleArcade->unk_70);
for (i = 0; i < numMons; i++) {
Pokemon *mon = Party_GetPokemonBySlotIndex(battleArcade->unk_70, i);
stat = battleArcade->monHP[i];
Pokemon_SetValue(mon, MON_DATA_MAX_HP, &stat);
Pokemon_SetValue(mon, MON_DATA_HP, &stat);
stat = battleArcade->monAtk[i];
Pokemon_SetValue(mon, MON_DATA_ATK, &stat);
stat = battleArcade->monDef[i];
Pokemon_SetValue(mon, MON_DATA_DEF, &stat);
stat = battleArcade->monSpeed[i];
Pokemon_SetValue(mon, MON_DATA_SPEED, &stat);
stat = battleArcade->monSpAtk[i];
Pokemon_SetValue(mon, MON_DATA_SP_ATK, &stat);
stat = battleArcade->monSpDef[i];
Pokemon_SetValue(mon, MON_DATA_SP_DEF, &stat);
}
FieldBattleDTO_Free(dto);
return FALSE;
}
BOOL FrontierScrCmd_BattleArcade_StartBattle(FrontierScriptContext *ctx)
{
UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(ctx->scriptMan->unk_00);
BattleArcade *battleArcade = sub_0209B978(ctx->scriptMan->unk_00);
FieldBattleDTO *dto = ov104_0223BDD8(battleArcade, v2);
battleArcade->dto = dto;
sub_0209B988(ctx->scriptMan->unk_00, &gBattleApplicationTemplate, dto, 0, NULL);
return TRUE;
}
static void SetupBattleArcadeAppArgs(BattleArcadeAppArgs *args, BattleArcade *battleArcade)
{
args->challengeType = battleArcade->challengeType;
args->round = ov104_0223C124(battleArcade);
args->unk_14 = &battleArcade->unk_20;
args->selectedEffect = &battleArcade->activeEffect;
args->unk_07 = battleArcade->unk_1D;
args->currentStreak = battleArcade->currentStreak;
args->partnersStreak = battleArcade->unk_A78;
args->rouletteSpeed = &battleArcade->unk_1C;
args->party = battleArcade->unk_70;
args->opponentsParty = battleArcade->unk_74;
args->battleArcade = battleArcade;
battleArcade->unk_14 = 0;
args->unk_08 = &battleArcade->unk_14;
args->randomizeCursorMovement = battleArcade->unk_12;
battleArcade->unk_12 = 0;
battleArcade->unk_1F = 0;
int numMons = Party_GetCurrentCount(battleArcade->unk_70);
for (int i = 0; i < numMons; i++) {
Pokemon *mon = Party_GetPokemonBySlotIndex(battleArcade->unk_70, i);
battleArcade->monHP[i] = Pokemon_GetValue(mon, MON_DATA_MAX_HP, NULL);
battleArcade->monAtk[i] = Pokemon_GetValue(mon, MON_DATA_ATK, NULL);
battleArcade->monDef[i] = Pokemon_GetValue(mon, MON_DATA_DEF, NULL);
battleArcade->monSpeed[i] = Pokemon_GetValue(mon, MON_DATA_SPEED, NULL);
battleArcade->monSpAtk[i] = Pokemon_GetValue(mon, MON_DATA_SP_ATK, NULL);
battleArcade->monSpDef[i] = Pokemon_GetValue(mon, MON_DATA_SP_DEF, NULL);
}
}
static void StoreBattleArcadeAppResults(void *data)
{
BattleArcadeAppArgs *args = data;
BattleArcade_StoreAppResults(args->battleArcade, data);
Heap_Free(data);
}
BOOL FrontierScrCmd_BD(FrontierScriptContext *param0)
{
BattleArcade *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_022384D4(v0);
return 0;
}
BOOL FrontierScrCmd_BE(FrontierScriptContext *param0)
{
BattleArcade *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_022384DC(v0);
return 0;
}
BOOL FrontierScrCmd_CallBattleArcadeFunction(FrontierScriptContext *ctx)
{
Pokemon *v1;
int v11;
u8 command = FrontierScriptContext_ReadByte(ctx);
u8 arg1 = FrontierScriptContext_GetVar(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);
FrontierGraphics *graphics = FrontierScriptManager_GetGraphics(ctx->scriptMan);
switch (command) {
case BA_FUNC_SET_CHALLENGE_TYPE:
battleArcade->challengeType = arg1;
break;
case BA_FUNC_UNK_3:
*destVar = battleArcade->appCursorPos[arg1];
break;
case BA_FUNC_UNK_4:
*destVar = battleArcade->currentStreak;
break;
case BA_FUNC_INCREMENT_CURRENT_STREAK:
if (battleArcade->currentStreak < 9999) {
battleArcade->currentStreak++;
}
break;
case BA_FUNC_RESET_SYSTEM:
OS_ResetSystem(0);
break;
case BA_FUNC_UNK_9:
*destVar = sub_020304B0(battleArcade->unk_08);
break;
case BA_FUNC_UNK_10:
ov104_02238278(battleArcade, 2);
break;
case BA_FUNC_UNK_12:
*destVar = ov104_0223C0BC(battleArcade, battleArcade->activeEffect);
break;
case BA_FUNC_UNK_14:
*destVar = ov104_02238454(battleArcade);
break;
case BA_FUNC_UNK_15:
if (arg1 == 0) {
v1 = Party_GetPokemonBySlotIndex(battleArcade->unk_70, 0);
} else {
v1 = Party_GetPokemonBySlotIndex(battleArcade->unk_74, 0);
}
*destVar = Pokemon_GetValue(v1, MON_DATA_HELD_ITEM, NULL);
break;
case BA_FUNC_UNK_16:
*destVar = battleArcade->activeEffect;
break;
case BA_FUNC_UNK_18: {
Party *v2 = SaveData_GetParty(v14->saveData);
for (v11 = 0; v11 < 3; v11++) {
v1 = Party_GetPokemonBySlotIndex(v2, battleArcade->unk_2C[v11]);
Pokemon_SetValue(v1, MON_DATA_HELD_ITEM, &battleArcade->unk_412[v11]);
}
} break;
case BA_FUNC_UNK_19:
*destVar = ov104_0223C124(battleArcade);
break;
case BA_FUNC_UNK_20:
*destVar = ov104_02238464(battleArcade, arg1);
break;
case BA_FUNC_UNK_21:
ov104_022384A8(battleArcade);
break;
case BA_FUNC_UNK_22:
ov104_022384B4(battleArcade);
break;
case BA_FUNC_UNK_23:
*destVar = ov104_02238460(battleArcade);
break;
case BA_FUNC_UNK_24:
*destVar = battleArcade->unk_A74;
break;
case BA_FUNC_UNK_25:
if (battleArcade->activeEffect == 27) {
u8 v4 = BattleArcade_GetPartySize(battleArcade->challengeType, 1);
u8 v5 = BattleArcade_GetOpponentPartySize(battleArcade->challengeType, 1);
{
VecFx32 v21;
VecFx32 v22;
Sprite *v23;
Sprite *v24;
for (v11 = 0; v11 < v4; v11++) {
v23 = battleArcade->unk_30[v11]->sprite;
v21 = *(Sprite_GetPosition((const Sprite *)v23));
v24 = battleArcade->unk_40[v11]->sprite;
v22 = *(Sprite_GetPosition((const Sprite *)v24));
Sprite_SetPosition(v23, &v22);
Sprite_SetPosition(v24, &v21);
v23 = battleArcade->unk_50[v11]->sprite;
v21 = *(Sprite_GetPosition((const Sprite *)v23));
v24 = battleArcade->unk_60[v11]->sprite;
v22 = *(Sprite_GetPosition((const Sprite *)v24));
Sprite_SetPosition(v23, &v22);
Sprite_SetPosition(v24, &v21);
}
}
}
break;
case BA_FUNC_UNK_6:
sub_0209BA80(battleArcade);
break;
case BA_FUNC_IS_MULTIPLAYER_CHALLENGE:
*destVar = BattleArcade_IsMultiPlayerChallenge(battleArcade->challengeType);
break;
case BA_FUNC_GET_CHALLENGE_TYPE:
*destVar = battleArcade->challengeType;
break;
case BA_FUNC_UNK_29:
ov104_02232EC0(graphics);
break;
case BA_FUNC_UNK_30:
ov104_02232F28(graphics);
break;
case BA_FUNC_UNK_31:
ov104_02238764(battleArcade, graphics, arg1);
u8 v4 = BattleArcade_GetPartySize(battleArcade->challengeType, 1);
u8 v5 = BattleArcade_GetOpponentPartySize(battleArcade->challengeType, 1);
if (arg1 == 0) {
for (v11 = 0; v11 < v4; v11++) {
Sprite_SetExplicitPriority(battleArcade->unk_30[v11]->sprite, 2);
}
} else {
for (v11 = 0; v11 < v5; v11++) {
Sprite_SetExplicitPriority(battleArcade->unk_40[v11]->sprite, 2);
}
}
break;
case BA_FUNC_UNK_32:
ov104_02238814(battleArcade, graphics, arg1);
break;
case BA_FUNC_UNK_33:
ov104_02232FEC(graphics);
break;
case BA_FUNC_UNK_34:
ov104_0223307C(graphics);
break;
case BA_FUNC_UNK_35:
ov104_022388DC(battleArcade, graphics, arg1);
break;
case BA_FUNC_UNK_36:
ov104_022389A0(battleArcade, graphics, arg1);
break;
case BA_FUNC_UNK_11:
ov104_02238658(battleArcade, graphics);
break;
case BA_FUNC_UNK_37:
if (BattleArcade_IsMultiPlayerChallenge(battleArcade->challengeType) == 1) {
ov104_02238728(battleArcade, graphics);
}
break;
case BA_FUNC_UNK_38: {
u8 v6 = BattleArcade_GetCategoryFromEffect(battleArcade->activeEffect);
TrainerInfo *v16;
if (v6 == 0) {
StringTemplate_SetFrontierTrainerName(ctx->scriptMan->strTemplate, arg1, battleArcade->unk_78[ov104_02238498(battleArcade, arg2)]);
} else {
if (BattleArcade_IsMultiPlayerChallenge(battleArcade->challengeType) == 0) {
v16 = SaveData_GetTrainerInfo(v14->saveData);
} else {
v16 = CommInfo_TrainerInfo(arg2);
}
StringTemplate_SetPlayerName(ctx->scriptMan->strTemplate, arg1, v16);
}
} break;
case BA_FUNC_UNK_39:
battleArcade->unk_A7A = arg2;
ov104_02237C0C(ctx, battleArcade, arg1);
break;
case BA_FUNC_UNK_40:
ov104_0222E278(&(battleArcade->unk_F4[0]), battleArcade->unk_78[battleArcade->unk_11], HEAP_ID_FIELD2, 178);
ov104_0222E278(&(battleArcade->unk_F4[1]), battleArcade->unk_78[battleArcade->unk_11 + 7], HEAP_ID_FIELD2, 178);
break;
case BA_FUNC_UNK_41:
ov104_0223886C(battleArcade, graphics, arg1, arg2);
break;
case BA_FUNC_UNK_42:
ov104_022388A4(battleArcade, graphics, arg1, arg2);
break;
case BA_FUNC_UNK_43:
ov104_02238AB4(arg1, arg2);
break;
case BA_FUNC_UNK_44:
if (arg1 == 0) {
PaletteData_Blend(graphics->plttData, 2, 0, 16 * 16, arg1, 0x0);
} else {
{
u32 v25;
UnkStruct_ov104_0223C634 *v26;
Sprite *v27;
v26 = ov104_0223D5A8(ctx->scriptMan->unk_00, arg2);
v25 = ov63_0222D050(v26->sprite);
PaletteData_Blend(graphics->plttData, 2, v25 * 16, 16, arg1, 0x0);
}
}
break;
case BA_FUNC_UNK_45:
*destVar = ov104_02239014(battleArcade);
break;
case BA_FUNC_UNK_46:
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, FALSE);
break;
case BA_FUNC_UNK_47:
*destVar = battleArcade->unk_1F;
break;
case BA_FUNC_UNK_48:
*destVar = 0;
if (battleArcade->challengeType == 0) {
if ((battleArcade->currentStreak + 1) == 21) {
*destVar = 1;
} else if ((battleArcade->currentStreak + 1) == 49) {
*destVar = 2;
}
}
break;
case BA_FUNC_UNK_49:
ov104_0222E330(battleArcade->unk_330, battleArcade->unk_314, battleArcade->unk_31C, battleArcade->unk_320, NULL, 4, 11, 179);
break;
case BA_FUNC_UNK_50:
ov104_0223C04C(battleArcade);
break;
case BA_FUNC_UNK_51:
*destVar = battleArcade->unk_1E;
battleArcade->unk_1E = 1;
break;
case BA_FUNC_UNK_52:
battleArcade->unk_A7C = 0;
break;
}
return FALSE;
}
static void ov104_02237C0C(FrontierScriptContext *param0, BattleArcade *param1, u16 param2)
{
FrontierScriptManager *v0 = param0->scriptMan;
FrontierGraphics *v1 = FrontierScriptManager_GetGraphics(param0->scriptMan);
ParticleSystem *v2 = FrontierParticleSystem_GetParticleSystem(v1->particleSys, 0);
ParticleSystem_CreateEmitterWithCallback(v2, param2, ov104_02237C30, param1);
return;
}
static void ov104_02237C30(SPLEmitter *param0)
{
VecFx32 v0;
VecFx16 v1;
BattleArcade *v2 = ParticleSystem_GetEmitterCallbackParam();
const VecFx32 v3[] = { FX32_ONE * -1, 0, 0 };
if (v2->unk_A7A == 1) {
ParticleSystem_GetEmitterAxis(param0, &v1);
v1.x *= -1;
SPLEmitter_SetAxis(param0, &v1);
SPLEmitter_SetPos(param0, v3);
}
return;
}
BOOL FrontierScrCmd_BattleArcade_CheckWonBattle(FrontierScriptContext *ctx)
{
u16 *destVar = FrontierScriptContext_TryGetVarPointer(ctx);
BattleArcade *battleArcade = sub_0209B978(ctx->scriptMan->unk_00);
*destVar = battleArcade->wonBattle;
return FALSE;
}
BOOL FrontierScrCmd_C1(FrontierScriptContext *param0)
{
BattleArcade *v0;
u16 v1 = FrontierScriptContext_GetVar(param0);
u16 v2 = FrontierScriptContext_GetVar(param0);
u16 *v3 = FrontierScriptContext_TryGetVarPointer(param0);
v0 = sub_0209B978(param0->scriptMan->unk_00);
*v3 = ov104_02238B40(v0, v1, v2);
return 1;
}
BOOL FrontierScrCmd_C2(FrontierScriptContext *param0)
{
u16 v0 = FrontierScriptContext_ReadHalfWord(param0);
param0->data[0] = v0;
FrontierScriptContext_Pause(param0, ov104_02237D18);
return 1;
}
static BOOL ov104_02237D18(FrontierScriptContext *param0)
{
BattleArcade *v0;
u16 v1 = FrontierScriptContext_TryGetVar(param0, param0->data[0]);
v0 = sub_0209B978(param0->scriptMan->unk_00);
if (v0->unk_A7C >= 2) {
v0->unk_A7C = 0;
return 1;
}
return 0;
}
BOOL FrontierScrCmd_C4(FrontierScriptContext *param0)
{
u16 *v0;
BattleArcade *v1;
UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(param0->scriptMan->unk_00);
u16 v3 = FrontierScriptContext_ReadByte(param0);
v1 = sub_0209B978(param0->scriptMan->unk_00);
if (v1 == NULL) {
return 0;
}
v0 = v1->unk_F4[v3].trDataDTO.unk_18;
ov104_022330FC(param0, v0);
return 1;
}
BOOL FrontierScrCmd_C5(FrontierScriptContext *param0)
{
BattleArcade *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_02238B88(v0, v0->activeEffect);
return 1;
}
BOOL FrontierScrCmd_C6(FrontierScriptContext *param0)
{
BattleArcade *v0;
FrontierGraphics *v1 = FrontierScriptManager_GetGraphics(param0->scriptMan);
u16 v2 = FrontierScriptContext_GetVar(param0);
u16 v3 = FrontierScriptContext_GetVar(param0);
u16 v4 = FrontierScriptContext_GetVar(param0);
v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_022389F4(v0, v1, v2, v3, v4);
return 0;
}

View File

@@ -0,0 +1,579 @@
#include "overlay104/frscrcmd_battle_castle.h"
#include <nitro.h>
#include "constants/battle_castle_functions.h"
#include "applications/frontier/battle_castle/args.h"
#include "applications/frontier/battle_castle/opponent_app.h"
#include "applications/frontier/battle_castle/self_app.h"
#include "overlay104/frontier_script_context.h"
#include "overlay104/frontier_script_manager.h"
#include "overlay104/frscrcmd.h"
#include "overlay104/ov104_0222DCE0.h"
#include "overlay104/ov104_02231F74.h"
#include "overlay104/ov104_022361B4.h"
#include "overlay104/ov104_0223B6F4.h"
#include "overlay104/struct_battle_castle.h"
#include "overlay104/struct_ov104_02230BE4.h"
#include "battle_frontier_stats.h"
#include "communication_system.h"
#include "field_battle_data_transfer.h"
#include "heap.h"
#include "party.h"
#include "pokemon.h"
#include "unk_020302D0.h"
#include "unk_0205DFC4.h"
#include "unk_0209B6F8.h"
#include "unk_0209BA80.h"
#include "constdata/const_020EA358.h"
FS_EXTERN_OVERLAY(battle_castle_app);
#include <nitro/code16.h>
static BOOL ov104_02236008(FrontierScriptContext *param0);
static void SetupBattleCastleAppArgs(BattleCastleAppArgs *args, BattleCastle *battleCastle);
static BOOL ov104_02236058(FrontierScriptContext *param0);
static void StoreBattleCastleAppResult(void *data);
BOOL FrontierScrCmd_97(FrontierScriptContext *param0)
{
BattleCastle *v0;
UnkStruct_ov104_02230BE4 *v1;
u16 v2 = FrontierScriptContext_GetVar(param0);
u16 v3 = FrontierScriptContext_GetVar(param0);
u16 v4 = FrontierScriptContext_GetVar(param0);
u16 v5 = FrontierScriptContext_GetVar(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);
sub_0209B980(param0->scriptMan->unk_00, v0);
return 0;
}
BOOL FrontierScrCmd_98(FrontierScriptContext *param0)
{
BattleCastle *v0;
u16 v1 = FrontierScriptContext_GetVar(param0);
v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_02236514(v0, v1);
return 0;
}
BOOL FrontierScrCmd_99(FrontierScriptContext *param0)
{
BattleCastle *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_022367AC(v0);
return 0;
}
BOOL FrontierScrCmd_OpenBattleCastleSelfApp(FrontierScriptContext *ctx)
{
UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(ctx->scriptMan->unk_00);
FS_EXTERN_OVERLAY(battle_castle_app);
static const ApplicationManagerTemplate sBattleCastleSelfAppTemplate = {
BattleCastleSelfApp_Init,
BattleCastleSelfApp_Main,
BattleCastleSelfApp_Exit,
FS_OVERLAY_ID(battle_castle_app)
};
BattleCastle *battleCastle = sub_0209B978(ctx->scriptMan->unk_00);
BattleCastleAppArgs *args = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleCastleAppArgs));
MI_CpuClear8(args, sizeof(BattleCastleAppArgs));
args->saveData = v3->saveData;
SetupBattleCastleAppArgs(args, battleCastle);
sub_0209B988(ctx->scriptMan->unk_00, &sBattleCastleSelfAppTemplate, args, 0, StoreBattleCastleAppResult);
return TRUE;
}
BOOL FrontierScrCmd_A4(FrontierScriptContext *ctx)
{
UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(ctx->scriptMan->unk_00);
FS_EXTERN_OVERLAY(battle_castle_app);
static const ApplicationManagerTemplate sBattleCastleNullTemplate = {
NULL,
NULL,
NULL,
FS_OVERLAY_ID(battle_castle_app)
};
BattleCastle *battleCastle = sub_0209B978(ctx->scriptMan->unk_00);
BattleCastleAppArgs *args = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleCastleAppArgs));
MI_CpuClear8(args, sizeof(BattleCastleAppArgs));
args->saveData = v3->saveData;
SetupBattleCastleAppArgs(args, battleCastle);
sub_0209B988(ctx->scriptMan->unk_00, &sBattleCastleNullTemplate, args, 0, StoreBattleCastleAppResult);
return TRUE;
}
BOOL FrontierScrCmd_BattleCastle_CleanupBattle(FrontierScriptContext *ctx)
{
BattleCastle *battleCastle = sub_0209B978(ctx->scriptMan->unk_00);
FieldBattleDTO *dto = battleCastle->unk_0C;
Pokemon *mon = Party_GetPokemonBySlotIndex(dto->parties[BATTLER_PLAYER_1], 0);
Party_AddPokemonBySlotIndex(battleCastle->unk_28, 0, mon);
mon = Party_GetPokemonBySlotIndex(dto->parties[BATTLER_PLAYER_1], 1);
Party_AddPokemonBySlotIndex(battleCastle->unk_28, 1, mon);
if (!BattleCastle_IsMultiPlayerChallenge(battleCastle->challengeType)) {
mon = Party_GetPokemonBySlotIndex(dto->parties[BATTLER_PLAYER_1], 2);
Party_AddPokemonBySlotIndex(battleCastle->unk_28, 2, mon);
} else {
mon = Party_GetPokemonBySlotIndex(dto->parties[BATTLER_PLAYER_2], 0);
Party_AddPokemonBySlotIndex(battleCastle->unk_28, 2, mon);
mon = Party_GetPokemonBySlotIndex(dto->parties[BATTLER_PLAYER_2], 1);
Party_AddPokemonBySlotIndex(battleCastle->unk_28, 3, mon);
}
battleCastle->wonBattle = CheckPlayerWonBattle(dto->resultMask);
FieldBattleDTO_Free(dto);
return FALSE;
}
BOOL FrontierScrCmd_BattleCastle_StartBattle(FrontierScriptContext *ctx)
{
UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(ctx->scriptMan->unk_00);
BattleCastle *battleCastle = sub_0209B978(ctx->scriptMan->unk_00);
FieldBattleDTO *dto = ov104_0223B810(battleCastle, v2);
battleCastle->unk_0C = dto;
sub_0209B988(ctx->scriptMan->unk_00, &gBattleApplicationTemplate, dto, 0, NULL);
return TRUE;
}
BOOL FrontierScrCmd_OpenBattleCastleOpponentApp(FrontierScriptContext *ctx)
{
UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(ctx->scriptMan->unk_00);
FS_EXTERN_OVERLAY(battle_castle_app);
static const ApplicationManagerTemplate sBattleCastleOpponentAppTemplate = {
BattleCastleOpponentApp_Init,
BattleCastleOpponentApp_Main,
BattleCastleOpponentApp_Exit,
FS_OVERLAY_ID(battle_castle_app)
};
BattleCastle *battleCastle = sub_0209B978(ctx->scriptMan->unk_00);
BattleCastleAppArgs *args = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleCastleAppArgs));
MI_CpuClear8(args, sizeof(BattleCastleAppArgs));
args->saveData = v3->saveData;
SetupBattleCastleAppArgs(args, battleCastle);
sub_0209B988(ctx->scriptMan->unk_00, &sBattleCastleOpponentAppTemplate, args, 0, StoreBattleCastleAppResult);
return TRUE;
}
static void SetupBattleCastleAppArgs(BattleCastleAppArgs *args, BattleCastle *battleCastle)
{
args->challengeType = battleCastle->challengeType;
args->party = battleCastle->unk_28;
args->opponentsParty = battleCastle->unk_2C;
args->battleCastle = battleCastle;
args->partnersCP = battleCastle->partnersCP;
for (int i = 0; i < 4; i++) {
args->identityUnlocked[i] = battleCastle->appIdentityUnlocked[i];
args->levelAdjustmentUnlocked[i] = battleCastle->appLevelAdjustmentsUnlocked[i];
args->statsUnlocked[i] = battleCastle->appStatsUnlocked[i];
args->movesUnlocked[i] = battleCastle->appMovesUnlocked[i];
}
}
static void StoreBattleCastleAppResult(void *data)
{
BattleCastleAppArgs *args = data;
BattleCastle_StoreAppResults(args->battleCastle, data);
Heap_Free(data);
}
BOOL FrontierScrCmd_9E(FrontierScriptContext *param0)
{
BattleCastle *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_02236BF0(v0);
return 0;
}
BOOL FrontierScrCmd_9F(FrontierScriptContext *param0)
{
BattleCastle *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_02236BF8(v0);
return 0;
}
BOOL FrontierScrCmd_CallBattleCastleFunction(FrontierScriptContext *ctx)
{
UnkStruct_ov104_02230BE4 *v11;
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);
switch (command) {
case BC_FUNC_SET_CHALLENGE_TYPE:
battleCastle->challengeType = arg1;
break;
case BC_FUNC_UNK_3:
*returnVar = battleCastle->unk_380[arg1];
break;
case BC_FUNC_GET_CURRENT_STREAK:
*returnVar = battleCastle->currentStreak;
break;
case BC_FUNC_INCREMENT_CURRENT_STREAK:
if (battleCastle->currentStreak < 9999) {
battleCastle->currentStreak++;
}
break;
case BC_FUNC_RESET_SYSTEM:
OS_ResetSystem(0);
break;
case BC_FUNC_UNK_9:
*returnVar = sub_020302EC(battleCastle->unk_08);
break;
case BC_FUNC_UNK_10:
ov104_02236848(battleCastle, 2);
break;
case BC_FUNC_UNK_14:
*returnVar = ov104_02236B48(battleCastle);
break;
case BC_FUNC_UNK_15:
*returnVar = battleCastle->unk_288[arg1].species;
break;
case BC_FUNC_UNK_16:
*returnVar = battleCastle->unk_288[arg1].moves[arg2];
break;
case BC_FUNC_UNK_18: {
Party *v2 = SaveData_GetParty(v11->saveData);
for (int v8 = 0; v8 < 3; v8++) {
Pokemon *v1 = Party_GetPokemonBySlotIndex(v2, battleCastle->unk_24[v8]);
Pokemon_SetValue(v1, MON_DATA_HELD_ITEM, &battleCastle->unk_36A[v8]);
}
} break;
case BC_FUNC_UNK_19:
*returnVar = ov104_0223BB60(battleCastle);
break;
case BC_FUNC_UNK_20:
*returnVar = ov104_02236B58(battleCastle, arg1);
break;
case BC_FUNC_UNK_21:
ov104_02236B8C(battleCastle);
break;
case BC_FUNC_UNK_22:
ov104_02236BD0(battleCastle);
break;
case BC_FUNC_UNK_23:
*returnVar = ov104_02236B54(battleCastle);
break;
case BC_FUNC_UNK_24:
*returnVar = battleCastle->unk_A10;
break;
case BC_FUNC_UNK_26:
*returnVar = battleCastle->unk_A11;
break;
case BC_FUNC_UNK_27:
*returnVar = ov104_02236D10(battleCastle);
ov104_02236ED8(battleCastle->saveData, battleCastle->challengeType, *returnVar);
break;
case BC_FUNC_UNK_28:
ov104_02236C50(battleCastle);
break;
case BC_FUNC_UNK_29:
sub_0209BA80(battleCastle);
break;
case BC_FUNC_UNK_30:
if (battleCastle->unk_A1B >= 6) {
*returnVar = (battleCastle->unk_A1B - 6);
} else {
*returnVar = battleCastle->unk_A1B;
}
break;
case BC_FUNC_UNK_31:
battleCastle->unk_A1B = 0;
battleCastle->unk_A19 = 0;
battleCastle->unk_A18 = 0;
break;
case BC_FUNC_UNK_32:
battleCastle->unk_A18 = arg1;
break;
case BC_FUNC_UNK_33: {
int v10 = 0;
if (battleCastle->unk_A1B >= 6) {
if (CommSys_CurNetId() != 0) {
v10 = 1;
}
} else {
if (CommSys_CurNetId() == 0) {
v10 = 1;
}
}
if (v10 == 1) {
ov104_0223BC2C(SaveData_GetBattleFrontier(v11->saveData), battleCastle->challengeType, 50);
} else {
battleCastle->partnersCP -= 50;
}
} break;
case BC_FUNC_UNK_34:
*returnVar = 0;
if (BattleCastle_IsMultiPlayerChallenge(battleCastle->challengeType) == 1) {
if (battleCastle->unk_A1B >= 6) {
if (CommSys_CurNetId() == 0) {
*returnVar = 1;
}
} else {
if (CommSys_CurNetId() != 0) {
*returnVar = 1;
}
}
}
break;
case BC_FUNC_IS_MULTIPLAYER_CHALLENGE:
*returnVar = BattleCastle_IsMultiPlayerChallenge(battleCastle->challengeType);
break;
case BC_FUNC_GET_CHALLENGE_TYPE:
*returnVar = battleCastle->challengeType;
break;
case BC_FUNC_UNK_25:
*returnVar = battleCastle->unk_12;
break;
case BC_FUNC_UNK_36: {
FrontierGraphics *v12 = FrontierScriptManager_GetGraphics(ctx->scriptMan);
ov104_0223BB84(v12->bgConfig, battleCastle, 3);
} break;
case BC_FUNC_UNK_37:
ov104_0222E278(&(battleCastle->unk_4C[0]), battleCastle->unk_30[battleCastle->unk_11], HEAP_ID_FIELD2, 178);
ov104_0222E278(&(battleCastle->unk_4C[1]), battleCastle->unk_30[battleCastle->unk_11 + 7], HEAP_ID_FIELD2, 178);
break;
case BC_FUNC_UNK_38:
*returnVar = ov104_02237338(battleCastle);
break;
case BC_FUNC_UNK_39: {
u8 v13[4];
*returnVar = (u16)sub_02030470(sub_0203041C(v11->saveData), 10, 0, 0, NULL);
v13[0] = 1;
sub_02030430(sub_0203041C(v11->saveData), 10, 0, 0, v13);
} break;
case BC_FUNC_UNK_40:
*returnVar = 0;
if (battleCastle->challengeType == 0) {
if ((battleCastle->currentStreak + 1) == 21) {
*returnVar = 1;
} else if ((battleCastle->currentStreak + 1) == 49) {
*returnVar = 2;
}
}
break;
case BC_FUNC_UNK_41:
ov104_0222E330(battleCastle->unk_288, battleCastle->unk_26C, battleCastle->unk_274, battleCastle->unk_278, NULL, 4, 11, 179);
break;
case BC_FUNC_UNK_42:
ov104_0223BAB8(battleCastle);
break;
case BC_FUNC_UNK_43:
*returnVar = battleCastle->unk_13;
battleCastle->unk_13 = 1;
break;
case BC_FUNC_UNK_44:
if (battleCastle->challengeType == 3) {
if (arg1 == 0) {
battleCastle->unk_22 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v11->saveData), BattleFrontierStats_GetCastleLatestCPIndex(battleCastle->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(battleCastle->challengeType)));
BattleFrontierStats_SetStat(SaveData_GetBattleFrontier(v11->saveData), BattleFrontierStats_GetCastleLatestCPIndex(battleCastle->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(battleCastle->challengeType)), battleCastle->unk_20);
} else {
BattleFrontierStats_SetStat(SaveData_GetBattleFrontier(v11->saveData), BattleFrontierStats_GetCastleLatestCPIndex(battleCastle->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(battleCastle->challengeType)), battleCastle->unk_22);
}
}
break;
}
return FALSE;
}
BOOL FrontierScrCmd_BattleCastle_CheckWonBattle(FrontierScriptContext *ctx)
{
BattleCastle *battleCastle;
u16 *destVar = FrontierScriptContext_TryGetVarPointer(ctx);
battleCastle = sub_0209B978(ctx->scriptMan->unk_00);
*destVar = battleCastle->wonBattle;
return FALSE;
}
BOOL FrontierScrCmd_A2(FrontierScriptContext *param0)
{
BattleCastle *v0;
u16 v1 = FrontierScriptContext_GetVar(param0);
u16 v2 = FrontierScriptContext_GetVar(param0);
u16 *v3 = FrontierScriptContext_TryGetVarPointer(param0);
v0 = sub_0209B978(param0->scriptMan->unk_00);
*v3 = ov104_02236F70(v0, v1, v2);
return 1;
}
BOOL FrontierScrCmd_A3(FrontierScriptContext *param0)
{
u16 v0 = FrontierScriptContext_ReadHalfWord(param0);
param0->data[0] = v0;
FrontierScriptContext_Pause(param0, ov104_02236008);
return 1;
}
static BOOL ov104_02236008(FrontierScriptContext *param0)
{
BattleCastle *v0;
u16 v1 = FrontierScriptContext_TryGetVar(param0, param0->data[0]);
v0 = sub_0209B978(param0->scriptMan->unk_00);
if (v0->unk_A1A >= 2) {
v0->unk_A1A = 0;
return 1;
}
return 0;
}
BOOL FrontierScrCmd_A5(FrontierScriptContext *param0)
{
u16 v0 = FrontierScriptContext_ReadHalfWord(param0);
param0->data[0] = v0;
FrontierScriptContext_Pause(param0, ov104_02236058);
return 1;
}
static BOOL ov104_02236058(FrontierScriptContext *param0)
{
BattleCastle *v0;
u16 *v1 = FrontierScriptContext_GetVarPointer(param0, param0->data[0]);
v0 = sub_0209B978(param0->scriptMan->unk_00);
if (v0->unk_A1B == 0) {
return 0;
}
v0->unk_A1A = 0;
*v1 = v0->unk_A1B;
return 1;
}
BOOL FrontierScrCmd_50(FrontierScriptContext *param0)
{
BattleCastle *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_02236FC0(param0->scriptMan, v0);
return 0;
}
BOOL FrontierScrCmd_51(FrontierScriptContext *param0)
{
BattleCastle *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_022370E0(param0->scriptMan, v0);
return 0;
}
BOOL FrontierScrCmd_52(FrontierScriptContext *param0)
{
BattleCastle *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_02237180(param0->scriptMan, v0);
return 0;
}
BOOL FrontierScrCmd_A6(FrontierScriptContext *param0)
{
UnkStruct_ov104_02230BE4 *v0;
u16 v1 = FrontierScriptContext_GetVar(param0);
u16 *v2 = FrontierScriptContext_TryGetVarPointer(param0);
v0 = sub_0209B970(param0->scriptMan->unk_00);
*v2 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v0->saveData), BattleFrontierStats_GetCastleLatestCPIndex(v1), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(v1)));
return 0;
}
BOOL FrontierScrCmd_A7(FrontierScriptContext *param0)
{
UnkStruct_ov104_02230BE4 *v0;
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);
return 0;
}
BOOL FrontierScrCmd_A8(FrontierScriptContext *param0)
{
u16 v0;
UnkStruct_ov104_02230BE4 *v1;
u16 v2 = FrontierScriptContext_GetVar(param0);
u16 v3 = FrontierScriptContext_GetVar(param0);
v1 = sub_0209B970(param0->scriptMan->unk_00);
ov104_02236ED8(v1->saveData, v2, v3);
return 0;
}
BOOL FrontierScrCmd_A9(FrontierScriptContext *param0)
{
u16 *v0;
BattleCastle *v1;
UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(param0->scriptMan->unk_00);
u16 v3 = FrontierScriptContext_ReadByte(param0);
v1 = sub_0209B978(param0->scriptMan->unk_00);
if (v1 == NULL) {
return 0;
}
v0 = v1->unk_4C[v3].trDataDTO.unk_18;
ov104_022330FC(param0, v0);
return 1;
}

View File

@@ -0,0 +1,473 @@
#include "overlay104/frscrcmd_battle_factory.h"
#include <nitro.h>
#include "constants/battle_factory_functions.h"
#include "constants/heap.h"
#include "applications/frontier/battle_factory/main.h"
#include "overlay104/frontier_script_context.h"
#include "overlay104/frontier_script_manager.h"
#include "overlay104/frscrcmd.h"
#include "overlay104/ov104_0222DCE0.h"
#include "overlay104/ov104_02231F74.h"
#include "overlay104/ov104_022339B4.h"
#include "overlay104/ov104_0223A7F4.h"
#include "overlay104/struct_battle_factory.h"
#include "overlay104/struct_ov104_02230BE4.h"
#include "bg_window.h"
#include "field_battle_data_transfer.h"
#include "heap.h"
#include "party.h"
#include "pokemon.h"
#include "string_template.h"
#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"
FS_EXTERN_OVERLAY(battle_factory_app);
#include <nitro/code16.h>
static BOOL ov104_0223394C(FrontierScriptContext *param0);
static void ov104_022338B4(SysTask *param0, void *param1);
static void StoreBattleFactoryAppResult(void *data);
BOOL FrontierScrCmd_5C(FrontierScriptContext *param0)
{
BattleFactory *v0;
UnkStruct_ov104_02230BE4 *v1;
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);
sub_0209B980(param0->scriptMan->unk_00, v0);
return 0;
}
BOOL FrontierScrCmd_5D(FrontierScriptContext *param0)
{
BattleFactory *v0;
u16 v1 = FrontierScriptContext_GetVar(param0);
v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_02233B98(v0, v1);
return 0;
}
BOOL FrontierScrCmd_5E(FrontierScriptContext *param0)
{
BattleFactory *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_022340D0(v0);
return 0;
}
BOOL FrontierScrCmd_OpenBattleFactoryAppInitial(FrontierScriptContext *ctx)
{
UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(ctx->scriptMan->unk_00);
FS_EXTERN_OVERLAY(battle_factory_app);
static const ApplicationManagerTemplate sBattleFactoryAppTemplate = {
BattleFactoryApp_Init,
BattleFactoryApp_Main,
BattleFactoryApp_Exit,
FS_OVERLAY_ID(battle_factory_app)
};
BattleFactory *battleFactory = sub_0209B978(ctx->scriptMan->unk_00);
BattleFactoryAppArgs *args = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleFactoryAppArgs));
MI_CpuClear8(args, sizeof(BattleFactoryAppArgs));
args->saveData = v3->saveData;
args->challengeType = battleFactory->challengeType;
args->unk_05 = battleFactory->unk_05;
args->isExchangeMode = FALSE;
args->personalParty = battleFactory->unk_4D4;
args->receivableParty = battleFactory->unk_4D8;
args->battleFactory = battleFactory;
sub_0209B988(ctx->scriptMan->unk_00, &sBattleFactoryAppTemplate, args, 0, StoreBattleFactoryAppResult);
return TRUE;
}
BOOL FrontierScrCmd_BattleFactory_CleanupBattle(FrontierScriptContext *ctx)
{
BattleFactory *battleFactory = sub_0209B978(ctx->scriptMan->unk_00);
FieldBattleDTO *dto = battleFactory->unk_4FC;
battleFactory->wonBattle = CheckPlayerWonBattle(dto->resultMask);
FieldBattleDTO_Free(dto);
return FALSE;
}
BOOL FrontierScrCmd_BattleFactory_StartBattle(FrontierScriptContext *ctx)
{
UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(ctx->scriptMan->unk_00);
BattleFactory *battleFactory = sub_0209B978(ctx->scriptMan->unk_00);
FieldBattleDTO *dto = ov104_0223ABA0(battleFactory, v2);
battleFactory->unk_4FC = dto;
sub_0209B988(ctx->scriptMan->unk_00, &gBattleApplicationTemplate, dto, 0, NULL);
return TRUE;
}
BOOL FrontierScrCmd_OpenBattleFactoryAppForTrade(FrontierScriptContext *ctx)
{
UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(ctx->scriptMan->unk_00);
FS_EXTERN_OVERLAY(battle_factory_app);
static const ApplicationManagerTemplate sBattleFactoryAppTradeTemplate = {
BattleFactoryApp_Init,
BattleFactoryApp_Main,
BattleFactoryApp_Exit,
FS_OVERLAY_ID(battle_factory_app)
};
BattleFactory *battleFactory = sub_0209B978(ctx->scriptMan->unk_00);
for (int i = 0; i < 6; i++) {
battleFactory->unk_4DC[i] = 0;
}
BattleFactoryAppArgs *args = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleFactoryAppArgs));
MI_CpuClear8(args, sizeof(BattleFactoryAppArgs));
args->saveData = v3->saveData;
args->challengeType = battleFactory->challengeType;
args->unk_05 = battleFactory->unk_05;
args->isExchangeMode = TRUE;
args->personalParty = battleFactory->unk_4D4;
args->receivableParty = battleFactory->unk_4D8;
args->battleFactory = battleFactory;
sub_0209B988(ctx->scriptMan->unk_00, &sBattleFactoryAppTradeTemplate, args, 0, StoreBattleFactoryAppResult);
return TRUE;
}
static void StoreBattleFactoryAppResult(void *data)
{
BattleFactoryAppArgs *args = data;
BattleFactory_GetMonSelectionAppResult(args->battleFactory, data);
Heap_Free(data);
}
BOOL FrontierScrCmd_63(FrontierScriptContext *param0)
{
BattleFactory *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_0223449C(v0);
return 0;
}
BOOL FrontierScrCmd_64(FrontierScriptContext *param0)
{
BattleFactory *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_02234570(v0);
return 0;
}
BOOL FrontierScrCmd_65(FrontierScriptContext *param0)
{
BattleFactory *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_022346A4(v0);
return 0;
}
BOOL FrontierScrCmd_66(FrontierScriptContext *param0)
{
BattleFactory *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_0223470C(v0);
return 0;
}
BOOL FrontierScrCmd_CallBattleFactoryFunction(FrontierScriptContext *ctx)
{
int i;
u8 command = FrontierScriptContext_ReadByte(ctx);
u8 arg1 = FrontierScriptContext_ReadByte(ctx);
u8 arg2 = FrontierScriptContext_ReadByte(ctx);
u16 *returnVar = FrontierScriptContext_TryGetVarPointer(ctx);
BattleFactory *battleFactory = sub_0209B978(ctx->scriptMan->unk_00);
FrontierGraphics *graphics = FrontierScriptManager_GetGraphics(ctx->scriptMan);
switch (command) {
case BF_FUNC_UNK_0:
battleFactory->unk_07 = arg1;
break;
case BF_FUNC_UNK_1:
battleFactory->unk_05 = arg1;
break;
case BF_FUNC_SET_CHALLENGE_TYPE:
battleFactory->challengeType = arg1;
break;
case BF_FUNC_UNK_3:
*returnVar = battleFactory->unk_4DC[arg1];
break;
case BF_FUNC_GET_CURRENT_STREAK:
*returnVar = battleFactory->currentStreak;
break;
case BF_FUNC_INCREMENT_CURRENT_STREAK:
if (battleFactory->currentStreak < 9999) {
battleFactory->currentStreak++;
}
break;
case BF_FUNC_RESET_SYSTEM:
OS_ResetSystem(0);
break;
case BF_FUNC_UNK_9:
*returnVar = sub_0202FF68(battleFactory->unk_4F4);
break;
case BF_FUNC_UNK_10:
ov104_02234148(battleFactory, 2);
break;
case BF_FUNC_UNK_14:
*returnVar = ov104_02234430(battleFactory);
break;
case BF_FUNC_UNK_15:
*returnVar = battleFactory->unk_3F0[arg1].species;
break;
case BF_FUNC_UNK_16:
*returnVar = battleFactory->unk_3F0[arg1].moves[arg2];
break;
case BF_FUNC_UNK_17: {
Pokemon *v3 = Pokemon_New(HEAP_ID_FIELD2);
ov104_0222DF40(&battleFactory->unk_3F0[arg1], v3, ov104_0223ADA0(battleFactory));
*returnVar = Pokemon_GetValue(v3, MON_DATA_TYPE_1, NULL);
Heap_Free(v3);
} break;
case BF_FUNC_UNK_18: {
int v0[18];
u8 v5 = ov104_0223AA74(battleFactory->challengeType, 1);
for (i = 0; i < (17 + 1); i++) {
v0[i] = 0;
}
Pokemon *v3 = Pokemon_New(HEAP_ID_FIELD2);
for (i = 0; i < v5; i++) {
ov104_0222DF40(&battleFactory->unk_3F0[i], v3, ov104_0223ADA0(battleFactory));
u32 v7 = Pokemon_GetValue(v3, MON_DATA_TYPE_1, NULL);
u32 v8 = Pokemon_GetValue(v3, MON_DATA_TYPE_2, NULL);
if (v7 == v8) {
v8 = 0xff;
}
v0[v7]++;
if (v8 != 0xff) {
v0[v8]++;
}
}
Heap_Free(v3);
u32 v9 = 0;
for (i = 0; i < (17 + 1); i++) {
if (v0[v9] < v0[i]) {
v9 = i;
}
}
if (v0[v9] <= 1) {
*returnVar = 0xff;
} else {
*returnVar = v9;
}
} break;
case BF_FUNC_UNK_19:
*returnVar = ov104_0223AF34(battleFactory);
break;
case BF_FUNC_UNK_20:
*returnVar = ov104_02234440(battleFactory, arg1);
break;
case BF_FUNC_UNK_21:
ov104_02234474(battleFactory);
break;
case BF_FUNC_UNK_22:
ov104_02234480(battleFactory);
break;
case BF_FUNC_UNK_23:
*returnVar = ov104_0223443C(battleFactory);
break;
case BF_FUNC_UNK_24:
*returnVar = battleFactory->unk_57C;
break;
case BF_FUNC_UNK_26:
*returnVar = battleFactory->unk_57D;
break;
case BF_FUNC_UNK_27:
sub_0209BA80(battleFactory);
break;
case BF_FUNC_IS_MULTIPLAYER_CHALLENGE:
*returnVar = BattleFactory_IsMultiplayerChallenge(battleFactory->challengeType);
break;
case BF_FUNC_GET_CHALLENGE_TYPE:
*returnVar = battleFactory->challengeType;
break;
case BF_FUNC_UNK_30:
Bg_ChangeTilemapRectPalette(graphics->bgConfig, 3, 3, 10, 26, 11, arg1);
Bg_ScheduleTilemapTransfer(graphics->bgConfig, 3);
break;
case BF_FUNC_UNK_31:
battleFactory->unk_500 = SysTask_Start(ov104_022338B4, FrontierScriptManager_GetGraphics(ctx->scriptMan), 5);
break;
case BF_FUNC_UNK_32:
if (battleFactory->unk_500 != NULL) {
SysTask_Done(battleFactory->unk_500);
battleFactory->unk_500 = NULL;
}
break;
case BF_FUNC_UNK_33:
ov104_0222E278(&(battleFactory->unk_34[0]), battleFactory->unk_18[battleFactory->unk_06], HEAP_ID_FIELD2, 178);
ov104_0222E278(&(battleFactory->unk_34[1]), battleFactory->unk_18[battleFactory->unk_06 + 7], HEAP_ID_FIELD2, 178);
break;
case BF_FUNC_UNK_34: {
u8 v6 = BattleFactory_GetPartySize(battleFactory->challengeType);
for (i = 0; i < v6; i++) {
Pokemon *v3 = Party_GetPokemonBySlotIndex(battleFactory->unk_4D4, i);
StringTemplate_SetSpeciesName(ctx->scriptMan->strTemplate, i, Pokemon_GetBoxPokemon(v3));
}
} break;
case BF_FUNC_UNK_35:
*returnVar = ov104_022347F8(battleFactory);
break;
case BF_FUNC_UNK_36:
ov104_02234790(battleFactory);
break;
case BF_FUNC_UNK_37:
*returnVar = 0;
if (battleFactory->challengeType == 0) {
if ((battleFactory->currentStreak + 1) == 21) {
*returnVar = 1;
} else if ((battleFactory->currentStreak + 1) == 49) {
*returnVar = 2;
}
}
break;
case BF_FUNC_UNK_38:
ov104_0223AE30(battleFactory);
break;
case BF_FUNC_UNK_39:
ov104_0222E330(battleFactory->unk_3F0, battleFactory->unk_3D2, battleFactory->unk_3DA, battleFactory->unk_3E0, NULL, 4, 11, 179);
break;
case BF_FUNC_UNK_40:
ov104_0223ADB0(battleFactory);
break;
case BF_FUNC_UNK_41:
*returnVar = battleFactory->unk_0B;
battleFactory->unk_0B = 1;
break;
}
return FALSE;
}
void ov104_022338B4(SysTask *param0, void *param1)
{
int v0;
FrontierGraphics *v1 = param1;
v0 = Bg_GetYOffset(v1->bgConfig, 2);
if (v0 >= 255) {
Bg_ScheduleScroll(v1->bgConfig, 2, 3, 0);
} else {
Bg_ScheduleScroll(v1->bgConfig, 2, 4, 1);
}
return;
}
BOOL FrontierScrCmd_BattleFactory_CheckWonBattle(FrontierScriptContext *ctx)
{
u16 *destVar = FrontierScriptContext_TryGetVarPointer(ctx);
BattleFactory *battleFactory = sub_0209B978(ctx->scriptMan->unk_00);
*destVar = battleFactory->wonBattle;
return FALSE;
}
BOOL FrontierScrCmd_69(FrontierScriptContext *param0)
{
BattleFactory *v0;
u16 v1 = FrontierScriptContext_GetVar(param0);
u16 v2 = FrontierScriptContext_GetVar(param0);
u16 *v3 = FrontierScriptContext_TryGetVarPointer(param0);
v0 = sub_0209B978(param0->scriptMan->unk_00);
*v3 = ov104_022347A4(v0, v1, v2);
return 1;
}
BOOL FrontierScrCmd_6A(FrontierScriptContext *param0)
{
u16 v0 = FrontierScriptContext_ReadHalfWord(param0);
param0->data[0] = v0;
FrontierScriptContext_Pause(param0, ov104_0223394C);
return 1;
}
static BOOL ov104_0223394C(FrontierScriptContext *param0)
{
BattleFactory *v0;
u16 v1 = FrontierScriptContext_TryGetVar(param0, param0->data[0]);
v0 = sub_0209B978(param0->scriptMan->unk_00);
if (v0->unk_702 >= 2) {
v0->unk_702 = 0;
return 1;
}
return 0;
}
BOOL FrontierScrCmd_6B(FrontierScriptContext *param0)
{
u16 *v0;
BattleFactory *v1;
UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(param0->scriptMan->unk_00);
u16 v3 = FrontierScriptContext_ReadByte(param0);
v1 = sub_0209B978(param0->scriptMan->unk_00);
if (v1 == NULL) {
return 0;
}
v0 = v1->unk_34[v3].trDataDTO.unk_18;
ov104_022330FC(param0, v0);
return 1;
}

View File

@@ -120,7 +120,7 @@ BOOL FrontierScrCmd_OpenBattleHallApp(FrontierScriptContext *ctx)
return TRUE;
}
BOOL FrontierScrCmd_BattleHall_CheckWonBattle(FrontierScriptContext *ctx)
BOOL FrontierScrCmd_BattleHall_CleanupBattle(FrontierScriptContext *ctx)
{
BattleHall *battleHall = sub_0209B978(ctx->scriptMan->unk_00);
FieldBattleDTO *dto = battleHall->unk_700;
@@ -174,7 +174,7 @@ BOOL FrontierScrCmd_CallBattleHallFunction(FrontierScriptContext *ctx)
case BH_FUNC_GET_CURRENT_STREAK:
*returnVar = battleHall->currentStreak;
break;
case BH_FUNC_INCREMENT_CURRENT_STEAK:
case BH_FUNC_INCREMENT_CURRENT_STREAK:
if (battleHall->currentStreak < 9999) {
battleHall->currentStreak++;
}
@@ -284,11 +284,11 @@ BOOL FrontierScrCmd_CallBattleHallFunction(FrontierScriptContext *ctx)
return FALSE;
}
BOOL FrontierScrCmd_BattleHall_GetBattleResult(FrontierScriptContext *param0)
BOOL FrontierScrCmd_BattleHall_CheckWonBattle(FrontierScriptContext *ctx)
{
u16 *destVar = FrontierScriptContext_TryGetVarPointer(param0);
u16 *destVar = FrontierScriptContext_TryGetVarPointer(ctx);
BattleHall *battleHall = sub_0209B978(param0->scriptMan->unk_00);
BattleHall *battleHall = sub_0209B978(ctx->scriptMan->unk_00);
*destVar = battleHall->wonBattle;
return FALSE;

View File

@@ -1,9 +1,10 @@
#include "overlay104/frscrcmd_battle_tower.h"
#include <nitro.h>
#include <nitro/code16.h>
#include <string.h>
#include "constants/battle_tower.h"
#include "generated/battle_tower_functions.h"
#include "constants/battle_tower_functions.h"
#include "generated/battle_tower_modes.h"
#include "generated/game_records.h"
#include "generated/object_events_gfx.h"
@@ -23,7 +24,6 @@
#include "communication_system.h"
#include "field_battle_data_transfer.h"
#include "game_records.h"
#include "pokemon.h"
#include "savedata.h"
#include "sound.h"
#include "tv_segment.h"
@@ -39,8 +39,6 @@ static BOOL ov104_02239464(FrontierScriptContext *param0, BattleTower *battleTow
BOOL FrontierScrCmd_CallBattleTowerFunction(FrontierScriptContext *ctx)
{
TVBroadcast *broadcast;
BattleTower *battleTower;
u16 functionIndex, functionArgument;
u16 *destVar;
UnkStruct_ov104_02230BE4 *v8 = sub_0209B970(ctx->scriptMan->unk_00);
@@ -48,7 +46,7 @@ BOOL FrontierScrCmd_CallBattleTowerFunction(FrontierScriptContext *ctx)
functionIndex = FrontierScriptContext_ReadHalfWord(ctx);
functionArgument = FrontierScriptContext_GetVar(ctx);
destVar = FrontierScriptContext_TryGetVarPointer(ctx);
battleTower = sub_0209B978(ctx->scriptMan->unk_00);
BattleTower *battleTower = sub_0209B978(ctx->scriptMan->unk_00);
switch (functionIndex) {
case BT_FUNC_RESET_SYSTEM:
@@ -56,7 +54,7 @@ BOOL FrontierScrCmd_CallBattleTowerFunction(FrontierScriptContext *ctx)
break;
case BT_FUNC_UNK_46:
*destVar = BattleTower_GiveBattlePointsReward(battleTower);
broadcast = SaveData_GetTVBroadcast(v8->saveData);
TVBroadcast *broadcast = SaveData_GetTVBroadcast(v8->saveData);
sub_0206D0C8(broadcast, *destVar);
GameRecords_AddToRecordValue(SaveData_GetGameRecords(v8->saveData), RECORD_BATTLE_POINTS_RECEIVED, *destVar);
break;
@@ -170,39 +168,36 @@ BOOL FrontierScrCmd_85(FrontierScriptContext *param0)
return 1;
}
BOOL FrontierScrCmd_FreeTowerStruct(FrontierScriptContext *param0)
BOOL FrontierScrCmd_FreeTowerStruct(FrontierScriptContext *ctx)
{
BattleTower *battleTower = sub_0209B978(param0->scriptMan->unk_00);
BattleTower *battleTower = sub_0209B978(ctx->scriptMan->unk_00);
BattleTower_Free(battleTower);
return FALSE;
}
BOOL FrontierScrCmd_87(FrontierScriptContext *param0)
BOOL FrontierScrCmd_BattleTower_StartBattle(FrontierScriptContext *ctx)
{
FieldBattleDTO *v0;
BattleTower *battleTower;
UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(param0->scriptMan->unk_00);
UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(ctx->scriptMan->unk_00);
BattleTower *battleTower = sub_0209B978(ctx->scriptMan->unk_00);
battleTower = sub_0209B978(param0->scriptMan->unk_00);
v0 = ov104_0223A580(battleTower, v2);
battleTower->unk_8D0 = v0;
FieldBattleDTO *dto = ov104_0223A580(battleTower, v2);
battleTower->unk_8D0 = dto;
Sound_SetSceneAndPlayBGM(SOUND_SCENE_BATTLE, SEQ_BATTLE_TRAINER, 1);
sub_0209B988(param0->scriptMan->unk_00, &gBattleApplicationTemplate, v0, 0, NULL);
sub_0209B988(ctx->scriptMan->unk_00, &gBattleApplicationTemplate, dto, 0, NULL);
return 1;
return TRUE;
}
BOOL FrontierScrCmd_CheckWonTowerBattle(FrontierScriptContext *ctx)
BOOL FrontierScrCmd_BattleTower_CheckWonBattle(FrontierScriptContext *ctx)
{
BattleTower *battleTower = sub_0209B978(ctx->scriptMan->unk_00);
u16 *destVar = FrontierScriptContext_TryGetVarPointer(ctx);
FieldBattleDTO *dto = battleTower->unk_8D0;
battleTower->unk_8CC = CheckPlayerWonBattle(dto->resultMask);
*destVar = battleTower->unk_8CC;
battleTower->wonBattle = CheckPlayerWonBattle(dto->resultMask);
*destVar = battleTower->wonBattle;
FieldBattleDTO_Free(dto);
return FALSE;

View File

@@ -9,10 +9,10 @@
#include "overlay104/ov104_0223A7F4.h"
#include "overlay104/ov104_0223B6F4.h"
#include "overlay104/ov104_0223BCBC.h"
#include "overlay104/struct_battle_arcade.h"
#include "overlay104/struct_battle_castle.h"
#include "overlay104/struct_battle_factory.h"
#include "overlay104/struct_battle_hall.h"
#include "overlay104/struct_ov104_0223ADA0.h"
#include "overlay104/struct_ov104_0223BA10.h"
#include "overlay104/struct_ov104_0223BFFC.h"
#include "battle_frontier_stats.h"
#include "communication_system.h"
@@ -25,19 +25,19 @@
#include "unk_02030494.h"
#include "unk_0205DFC4.h"
BOOL ov104_0222EEF8(UnkStruct_ov104_0223ADA0 *param0);
BOOL ov104_0222EEF8(BattleFactory *param0);
void ov104_0222EF30(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222EF64(UnkStruct_ov104_0223ADA0 *param0);
BOOL ov104_0222EF64(BattleFactory *param0);
void ov104_0222EF94(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222EFCC(UnkStruct_ov104_0223ADA0 *param0);
BOOL ov104_0222EFCC(BattleFactory *param0);
void ov104_0222F03C(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F0B4(UnkStruct_ov104_0223ADA0 *param0);
BOOL ov104_0222F0B4(BattleFactory *param0);
void ov104_0222F124(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F1A0(UnkStruct_ov104_0223ADA0 *param0, u8 param1);
BOOL ov104_0222F1A0(BattleFactory *param0, u8 param1);
void ov104_0222F1C4(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F1EC(UnkStruct_ov104_0223ADA0 *param0, u8 param1);
BOOL ov104_0222F1EC(BattleFactory *param0, u8 param1);
void ov104_0222F210(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F238(UnkStruct_ov104_0223ADA0 *param0);
BOOL ov104_0222F238(BattleFactory *param0);
void ov104_0222F31C(int param0, int param1, void *param2, void *param3);
void ov104_0222ECE8(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222ED00(BattleHall *param0);
@@ -51,32 +51,32 @@ void ov104_0222EE38(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222EE60(BattleHall *param0);
void ov104_0222EEA8(int param0, int param1, void *param2, void *param3);
u8 *ov104_0222EED8(int param0, void *param1, int param2);
BOOL ov104_0222F3B8(UnkStruct_ov104_0223BA10 *param0);
BOOL ov104_0222F3B8(BattleCastle *param0);
void ov104_0222F418(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F44C(UnkStruct_ov104_0223BA10 *param0);
BOOL ov104_0222F44C(BattleCastle *param0);
void ov104_0222F480(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F4B8(UnkStruct_ov104_0223BA10 *param0);
BOOL ov104_0222F4B8(BattleCastle *param0);
void ov104_0222F530(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F5D4(UnkStruct_ov104_0223BA10 *param0);
BOOL ov104_0222F5D4(BattleCastle *param0);
void ov104_0222F650(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F6C8(UnkStruct_ov104_0223BA10 *param0, u16 param1);
BOOL ov104_0222F6C8(BattleCastle *param0, u16 param1);
void ov104_0222F6E8(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F710(UnkStruct_ov104_0223BA10 *param0, u16 param1);
BOOL ov104_0222F710(BattleCastle *param0, u16 param1);
void ov104_0222F730(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F758(UnkStruct_ov104_0223BA10 *param0);
BOOL ov104_0222F758(BattleCastle *param0);
void ov104_0222F7BC(int param0, int param1, void *param2, void *param3);
u8 *ov104_0222F84C(int param0, void *param1, int param2);
BOOL ov104_0222F86C(UnkStruct_ov104_0223BFFC *param0);
BOOL ov104_0222F86C(BattleArcade *param0);
void ov104_0222F8A0(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F8D0(UnkStruct_ov104_0223BFFC *param0);
BOOL ov104_0222F8D0(BattleArcade *param0);
void ov104_0222F908(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222F944(UnkStruct_ov104_0223BFFC *param0);
BOOL ov104_0222F944(BattleArcade *param0);
void ov104_0222F9C0(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222FA38(UnkStruct_ov104_0223BFFC *param0, u16 param1);
BOOL ov104_0222FA38(BattleArcade *param0, u16 param1);
void ov104_0222FA5C(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222FA84(UnkStruct_ov104_0223BFFC *param0, u16 param1);
BOOL ov104_0222FA84(BattleArcade *param0, u16 param1);
void ov104_0222FAA8(int param0, int param1, void *param2, void *param3);
BOOL ov104_0222FAD0(UnkStruct_ov104_0223BFFC *param0);
BOOL ov104_0222FAD0(BattleArcade *param0);
void ov104_0222FB34(int param0, int param1, void *param2, void *param3);
u8 *ov104_0222FBC4(int param0, void *param1, int param2);
@@ -318,7 +318,7 @@ u8 *ov104_0222EED8(int param0, void *param1, int param2)
return v0->unk_984[param0];
}
BOOL ov104_0222EEF8(UnkStruct_ov104_0223ADA0 *param0)
BOOL ov104_0222EEF8(BattleFactory *param0)
{
int v0, v1;
TrainerInfo *v2;
@@ -329,7 +329,7 @@ BOOL ov104_0222EEF8(UnkStruct_ov104_0223ADA0 *param0)
v2 = SaveData_GetTrainerInfo(param0->saveData);
v3[1] = param0->unk_08;
v3[2] = param0->unk_0C;
v3[2] = param0->currentStreak;
v3[3] = param0->unk_0E;
v1 += 4;
@@ -347,7 +347,7 @@ BOOL ov104_0222EEF8(UnkStruct_ov104_0223ADA0 *param0)
void ov104_0222EF30(int param0, int param1, void *param2, void *param3)
{
int v0, v1;
UnkStruct_ov104_0223ADA0 *v2 = param3;
BattleFactory *v2 = param3;
const u16 *v3 = param2;
v1 = 0;
@@ -367,7 +367,7 @@ void ov104_0222EF30(int param0, int param1, void *param2, void *param3)
return;
}
BOOL ov104_0222EF64(UnkStruct_ov104_0223ADA0 *param0)
BOOL ov104_0222EF64(BattleFactory *param0)
{
int v0, v1;
u16 *v2;
@@ -393,7 +393,7 @@ BOOL ov104_0222EF64(UnkStruct_ov104_0223ADA0 *param0)
void ov104_0222EF94(int param0, int param1, void *param2, void *param3)
{
int v0, v1;
UnkStruct_ov104_0223ADA0 *v2 = param3;
BattleFactory *v2 = param3;
const u16 *v3 = param2;
v1 = 0;
@@ -416,7 +416,7 @@ void ov104_0222EF94(int param0, int param1, void *param2, void *param3)
return;
}
BOOL ov104_0222EFCC(UnkStruct_ov104_0223ADA0 *param0)
BOOL ov104_0222EFCC(BattleFactory *param0)
{
int v0, v1;
u16 *v2;
@@ -456,7 +456,7 @@ void ov104_0222F03C(int param0, int param1, void *param2, void *param3)
{
int v0, v1;
Pokemon *v2;
UnkStruct_ov104_0223ADA0 *v3 = param3;
BattleFactory *v3 = param3;
const u16 *v4 = param2;
v1 = 0;
@@ -492,7 +492,7 @@ void ov104_0222F03C(int param0, int param1, void *param2, void *param3)
return;
}
BOOL ov104_0222F0B4(UnkStruct_ov104_0223ADA0 *param0)
BOOL ov104_0222F0B4(BattleFactory *param0)
{
int v0, v1;
u16 *v2;
@@ -531,7 +531,7 @@ BOOL ov104_0222F0B4(UnkStruct_ov104_0223ADA0 *param0)
void ov104_0222F124(int param0, int param1, void *param2, void *param3)
{
int v0, v1;
UnkStruct_ov104_0223ADA0 *v2 = param3;
BattleFactory *v2 = param3;
const u16 *v3 = param2;
v1 = 0;
@@ -567,7 +567,7 @@ void ov104_0222F124(int param0, int param1, void *param2, void *param3)
return;
}
BOOL ov104_0222F1A0(UnkStruct_ov104_0223ADA0 *param0, u8 param1)
BOOL ov104_0222F1A0(BattleFactory *param0, u8 param1)
{
u16 *v0;
int v1, v2 = 60;
@@ -586,7 +586,7 @@ BOOL ov104_0222F1A0(UnkStruct_ov104_0223ADA0 *param0, u8 param1)
void ov104_0222F1C4(int param0, int param1, void *param2, void *param3)
{
UnkStruct_ov104_0223ADA0 *v0 = param3;
BattleFactory *v0 = param3;
const u16 *v1 = param2;
v0->unk_702++;
@@ -600,7 +600,7 @@ void ov104_0222F1C4(int param0, int param1, void *param2, void *param3)
return;
}
BOOL ov104_0222F1EC(UnkStruct_ov104_0223ADA0 *param0, u8 param1)
BOOL ov104_0222F1EC(BattleFactory *param0, u8 param1)
{
u16 *v0;
int v1, v2 = 60;
@@ -619,7 +619,7 @@ BOOL ov104_0222F1EC(UnkStruct_ov104_0223ADA0 *param0, u8 param1)
void ov104_0222F210(int param0, int param1, void *param2, void *param3)
{
UnkStruct_ov104_0223ADA0 *v0 = param3;
BattleFactory *v0 = param3;
const u16 *v1 = param2;
v0->unk_702++;
@@ -632,7 +632,7 @@ void ov104_0222F210(int param0, int param1, void *param2, void *param3)
return;
}
BOOL ov104_0222F238(UnkStruct_ov104_0223ADA0 *param0)
BOOL ov104_0222F238(BattleFactory *param0)
{
u8 v0;
int v1, v2;
@@ -645,7 +645,7 @@ BOOL ov104_0222F238(UnkStruct_ov104_0223ADA0 *param0)
v5 = 60;
v3 = param0->unk_504;
v2 = 0;
v0 = BattleFactory_GetPartySize(param0->unk_04);
v0 = BattleFactory_GetPartySize(param0->challengeType);
for (v1 = 0; v1 < v0; v1++) {
v8 = Party_GetPokemonBySlotIndex(param0->unk_4D4, v1);
@@ -688,7 +688,7 @@ void ov104_0222F31C(int param0, int param1, void *param2, void *param3)
u32 v3[2];
u8 v4[2];
Pokemon *v5;
UnkStruct_ov104_0223ADA0 *v6 = param3;
BattleFactory *v6 = param3;
const u16 *v7 = param2;
v1 = 0;
@@ -698,7 +698,7 @@ void ov104_0222F31C(int param0, int param1, void *param2, void *param3)
return;
}
v2 = BattleFactory_GetPartySize(v6->unk_04);
v2 = BattleFactory_GetPartySize(v6->challengeType);
for (v0 = 0; v0 < v2; v0++) {
v6->unk_584[v0] = v7[v0];
@@ -722,20 +722,20 @@ void ov104_0222F31C(int param0, int param1, void *param2, void *param3)
return;
}
BOOL ov104_0222F3B8(UnkStruct_ov104_0223BA10 *param0)
BOOL ov104_0222F3B8(BattleCastle *param0)
{
int v0, v1, v2, v3;
UnkStruct_0203041C *v4 = sub_0203041C(param0->saveData);
v3 = 40;
v1 = 0;
param0->unk_3C0[1] = param0->unk_14;
param0->unk_3C0[1] = param0->currentStreak;
param0->unk_3C0[2] = param0->unk_16;
v1 += 3;
v1 += (7 + 1);
param0->unk_3C0[v1] = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(param0->saveData), BattleFrontierStats_GetCastleLatestCPIndex(param0->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(param0->unk_10)));
param0->unk_3C0[v1] = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(param0->saveData), BattleFrontierStats_GetCastleLatestCPIndex(param0->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(param0->challengeType)));
v1 += 1;
if (CommSys_SendData(42, param0->unk_3C0, v3) == 1) {
@@ -750,7 +750,7 @@ BOOL ov104_0222F3B8(UnkStruct_ov104_0223BA10 *param0)
void ov104_0222F418(int param0, int param1, void *param2, void *param3)
{
int v0, v1;
UnkStruct_ov104_0223BA10 *v2 = param3;
BattleCastle *v2 = param3;
const u16 *v3 = param2;
v1 = 0;
@@ -766,13 +766,13 @@ void ov104_0222F418(int param0, int param1, void *param2, void *param3)
v1 += 3;
v1 += (7 + 1);
v2->unk_A1C = v3[v1];
v2->partnersCP = v3[v1];
v1 += 1;
return;
}
BOOL ov104_0222F44C(UnkStruct_ov104_0223BA10 *param0)
BOOL ov104_0222F44C(BattleCastle *param0)
{
int v0, v1, v2, v3;
@@ -797,7 +797,7 @@ BOOL ov104_0222F44C(UnkStruct_ov104_0223BA10 *param0)
void ov104_0222F480(int param0, int param1, void *param2, void *param3)
{
int v0, v1;
UnkStruct_ov104_0223BA10 *v2 = param3;
BattleCastle *v2 = param3;
const u16 *v3 = param2;
v1 = 0;
@@ -820,7 +820,7 @@ void ov104_0222F480(int param0, int param1, void *param2, void *param3)
return;
}
BOOL ov104_0222F4B8(UnkStruct_ov104_0223BA10 *param0)
BOOL ov104_0222F4B8(BattleCastle *param0)
{
int v0, v1, v2, v3;
TrainerInfo *v4;
@@ -863,7 +863,7 @@ void ov104_0222F530(int param0, int param1, void *param2, void *param3)
{
Pokemon *v0;
int v1, v2;
UnkStruct_ov104_0223BA10 *v3 = param3;
BattleCastle *v3 = param3;
const u16 *v4 = param2;
v2 = 0;
@@ -909,7 +909,7 @@ void ov104_0222F530(int param0, int param1, void *param2, void *param3)
return;
}
BOOL ov104_0222F5D4(UnkStruct_ov104_0223BA10 *param0)
BOOL ov104_0222F5D4(BattleCastle *param0)
{
int v0, v1, v2, v3;
@@ -947,7 +947,7 @@ BOOL ov104_0222F5D4(UnkStruct_ov104_0223BA10 *param0)
void ov104_0222F650(int param0, int param1, void *param2, void *param3)
{
int v0, v1;
UnkStruct_ov104_0223BA10 *v2 = param3;
BattleCastle *v2 = param3;
const u16 *v3 = param2;
v1 = 0;
@@ -983,7 +983,7 @@ void ov104_0222F650(int param0, int param1, void *param2, void *param3)
return;
}
BOOL ov104_0222F6C8(UnkStruct_ov104_0223BA10 *param0, u16 param1)
BOOL ov104_0222F6C8(BattleCastle *param0, u16 param1)
{
int v0, v1 = 40;
param0->unk_3C0[0] = param1;
@@ -1000,7 +1000,7 @@ BOOL ov104_0222F6C8(UnkStruct_ov104_0223BA10 *param0, u16 param1)
void ov104_0222F6E8(int param0, int param1, void *param2, void *param3)
{
int v0;
UnkStruct_ov104_0223BA10 *v1 = param3;
BattleCastle *v1 = param3;
const u16 *v2 = param2;
v0 = 0;
@@ -1014,7 +1014,7 @@ void ov104_0222F6E8(int param0, int param1, void *param2, void *param3)
return;
}
BOOL ov104_0222F710(UnkStruct_ov104_0223BA10 *param0, u16 param1)
BOOL ov104_0222F710(BattleCastle *param0, u16 param1)
{
int v0, v1 = 40;
param0->unk_3C0[0] = param1;
@@ -1031,7 +1031,7 @@ BOOL ov104_0222F710(UnkStruct_ov104_0223BA10 *param0, u16 param1)
void ov104_0222F730(int param0, int param1, void *param2, void *param3)
{
int v0;
UnkStruct_ov104_0223BA10 *v1 = param3;
BattleCastle *v1 = param3;
const u16 *v2 = param2;
v0 = 0;
@@ -1045,7 +1045,7 @@ void ov104_0222F730(int param0, int param1, void *param2, void *param3)
return;
}
BOOL ov104_0222F758(UnkStruct_ov104_0223BA10 *param0)
BOOL ov104_0222F758(BattleCastle *param0)
{
int v0, v1, v2, v3, v4;
u8 v5;
@@ -1053,7 +1053,7 @@ BOOL ov104_0222F758(UnkStruct_ov104_0223BA10 *param0)
v1 = 0;
v3 = 512;
v5 = BattleCastle_GetPartySize(param0->unk_10, 0);
v5 = BattleCastle_GetPartySize(param0->challengeType, 0);
v4 = Pokemon_StructSize();
for (v0 = 0; v0 < v5; v0++) {
@@ -1075,7 +1075,7 @@ void ov104_0222F7BC(int param0, int param1, void *param2, void *param3)
u8 v0;
int v1, v2, v3;
Pokemon *v4;
UnkStruct_ov104_0223BA10 *v5 = param3;
BattleCastle *v5 = param3;
const u8 *v6 = param2;
v2 = 0;
@@ -1085,7 +1085,7 @@ void ov104_0222F7BC(int param0, int param1, void *param2, void *param3)
return;
}
v0 = BattleCastle_GetPartySize(v5->unk_10, 0);
v0 = BattleCastle_GetPartySize(v5->challengeType, 0);
v3 = Pokemon_StructSize();
v4 = Pokemon_New(HEAP_ID_FIELD2);
@@ -1106,20 +1106,20 @@ void ov104_0222F7BC(int param0, int param1, void *param2, void *param3)
u8 *ov104_0222F84C(int param0, void *param1, int param2)
{
UnkStruct_ov104_0223BA10 *v0 = param1;
BattleCastle *v0 = param1;
GF_ASSERT(param2 <= 512);
return v0->unk_610[param0];
}
BOOL ov104_0222F86C(UnkStruct_ov104_0223BFFC *param0)
BOOL ov104_0222F86C(BattleArcade *param0)
{
int v0, v1, v2, v3;
UnkStruct_020305B8 *v4 = sub_020305B8(param0->saveData);
v3 = 40;
v1 = 0;
param0->unk_424[1] = param0->unk_18;
param0->unk_424[1] = param0->currentStreak;
param0->unk_424[2] = param0->unk_1A;
v1 += 3;
@@ -1136,7 +1136,7 @@ BOOL ov104_0222F86C(UnkStruct_ov104_0223BFFC *param0)
void ov104_0222F8A0(int param0, int param1, void *param2, void *param3)
{
int v0, v1;
UnkStruct_ov104_0223BFFC *v2 = param3;
BattleArcade *v2 = param3;
const u16 *v3 = param2;
v1 = 0;
@@ -1154,7 +1154,7 @@ void ov104_0222F8A0(int param0, int param1, void *param2, void *param3)
return;
}
BOOL ov104_0222F8D0(UnkStruct_ov104_0223BFFC *param0)
BOOL ov104_0222F8D0(BattleArcade *param0)
{
int v0, v1, v2, v3;
@@ -1179,7 +1179,7 @@ BOOL ov104_0222F8D0(UnkStruct_ov104_0223BFFC *param0)
void ov104_0222F908(int param0, int param1, void *param2, void *param3)
{
int v0, v1;
UnkStruct_ov104_0223BFFC *v2 = param3;
BattleArcade *v2 = param3;
const u16 *v3 = param2;
v1 = 0;
@@ -1202,7 +1202,7 @@ void ov104_0222F908(int param0, int param1, void *param2, void *param3)
return;
}
BOOL ov104_0222F944(UnkStruct_ov104_0223BFFC *param0)
BOOL ov104_0222F944(BattleArcade *param0)
{
int v0, v1, v2, v3;
@@ -1240,7 +1240,7 @@ BOOL ov104_0222F944(UnkStruct_ov104_0223BFFC *param0)
void ov104_0222F9C0(int param0, int param1, void *param2, void *param3)
{
int v0, v1;
UnkStruct_ov104_0223BFFC *v2 = param3;
BattleArcade *v2 = param3;
const u16 *v3 = param2;
v1 = 0;
@@ -1276,7 +1276,7 @@ void ov104_0222F9C0(int param0, int param1, void *param2, void *param3)
return;
}
BOOL ov104_0222FA38(UnkStruct_ov104_0223BFFC *param0, u16 param1)
BOOL ov104_0222FA38(BattleArcade *param0, u16 param1)
{
int v0, v1 = 40;
param0->unk_424[0] = param1;
@@ -1293,7 +1293,7 @@ BOOL ov104_0222FA38(UnkStruct_ov104_0223BFFC *param0, u16 param1)
void ov104_0222FA5C(int param0, int param1, void *param2, void *param3)
{
int v0;
UnkStruct_ov104_0223BFFC *v1 = param3;
BattleArcade *v1 = param3;
const u16 *v2 = param2;
v0 = 0;
@@ -1307,7 +1307,7 @@ void ov104_0222FA5C(int param0, int param1, void *param2, void *param3)
return;
}
BOOL ov104_0222FA84(UnkStruct_ov104_0223BFFC *param0, u16 param1)
BOOL ov104_0222FA84(BattleArcade *param0, u16 param1)
{
int v0, v1 = 40;
param0->unk_424[0] = param1;
@@ -1324,7 +1324,7 @@ BOOL ov104_0222FA84(UnkStruct_ov104_0223BFFC *param0, u16 param1)
void ov104_0222FAA8(int param0, int param1, void *param2, void *param3)
{
int v0;
UnkStruct_ov104_0223BFFC *v1 = param3;
BattleArcade *v1 = param3;
const u16 *v2 = param2;
v0 = 0;
@@ -1338,7 +1338,7 @@ void ov104_0222FAA8(int param0, int param1, void *param2, void *param3)
return;
}
BOOL ov104_0222FAD0(UnkStruct_ov104_0223BFFC *param0)
BOOL ov104_0222FAD0(BattleArcade *param0)
{
int v0, v1, v2, v3, v4;
u8 v5;
@@ -1346,7 +1346,7 @@ BOOL ov104_0222FAD0(UnkStruct_ov104_0223BFFC *param0)
v1 = 0;
v3 = 512;
v5 = BattleArcade_GetPartySize(param0->unk_10, 0);
v5 = BattleArcade_GetPartySize(param0->challengeType, 0);
v4 = Pokemon_StructSize();
for (v0 = 0; v0 < v5; v0++) {
@@ -1368,7 +1368,7 @@ void ov104_0222FB34(int param0, int param1, void *param2, void *param3)
u8 v0;
int v1, v2, v3;
Pokemon *v4;
UnkStruct_ov104_0223BFFC *v5 = param3;
BattleArcade *v5 = param3;
const u8 *v6 = param2;
v2 = 0;
@@ -1378,7 +1378,7 @@ void ov104_0222FB34(int param0, int param1, void *param2, void *param3)
return;
}
v0 = BattleArcade_GetPartySize(v5->unk_10, 0);
v0 = BattleArcade_GetPartySize(v5->challengeType, 0);
v3 = Pokemon_StructSize();
v4 = Pokemon_New(HEAP_ID_FIELD2);
@@ -1399,7 +1399,7 @@ void ov104_0222FB34(int param0, int param1, void *param2, void *param3)
u8 *ov104_0222FBC4(int param0, void *param1, int param2)
{
UnkStruct_ov104_0223BFFC *v0 = param1;
BattleArcade *v0 = param1;
GF_ASSERT(param2 <= 512);
return v0->unk_674[param0];

View File

@@ -1,492 +0,0 @@
#include <nitro.h>
#include <string.h>
#include "constants/heap.h"
#include "applications/frontier/battle_factory/main.h"
#include "overlay104/frontier_script_context.h"
#include "overlay104/frontier_script_manager.h"
#include "overlay104/frscrcmd.h"
#include "overlay104/ov104_0222DCE0.h"
#include "overlay104/ov104_02231F74.h"
#include "overlay104/ov104_022339B4.h"
#include "overlay104/ov104_0223A7F4.h"
#include "overlay104/struct_ov104_02230BE4.h"
#include "overlay104/struct_ov104_02234130.h"
#include "overlay104/struct_ov104_0223ADA0.h"
#include "bg_window.h"
#include "field_battle_data_transfer.h"
#include "heap.h"
#include "party.h"
#include "pokemon.h"
#include "string_gf.h"
#include "string_template.h"
#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"
FS_EXTERN_OVERLAY(battle_factory_app);
#include <nitro/code16.h>
static BOOL ov104_0223394C(FrontierScriptContext *param0);
static void ov104_022338B4(SysTask *param0, void *param1);
static void ov104_02233478(void *param0);
BOOL FrontierScrCmd_5C(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223ADA0 *v0;
UnkStruct_ov104_02230BE4 *v1;
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);
sub_0209B980(param0->scriptMan->unk_00, v0);
return 0;
}
BOOL FrontierScrCmd_5D(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223ADA0 *v0;
u16 v1 = FrontierScriptContext_GetVar(param0);
v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_02233B98(v0, v1);
return 0;
}
BOOL FrontierScrCmd_5E(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223ADA0 *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_022340D0(v0);
return 0;
}
BOOL FrontierScrCmd_5F(FrontierScriptContext *param0)
{
int v0;
UnkStruct_ov104_0223ADA0 *v1;
UnkStruct_ov104_02234130 *v2;
UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(param0->scriptMan->unk_00);
FS_EXTERN_OVERLAY(battle_factory_app);
static const ApplicationManagerTemplate v4 = {
BattleFactoryApp_Init,
BattleFactoryApp_Main,
BattleFactoryApp_Exit,
FS_OVERLAY_ID(battle_factory_app)
};
v1 = sub_0209B978(param0->scriptMan->unk_00);
v2 = Heap_Alloc(HEAP_ID_FIELD2, sizeof(UnkStruct_ov104_02234130));
MI_CpuClear8(v2, sizeof(UnkStruct_ov104_02234130));
v2->saveData = v3->saveData;
v2->unk_04 = v1->unk_04;
v2->unk_05 = v1->unk_05;
v2->unk_06 = 0;
v2->unk_08 = v1->unk_4D4;
v2->unk_0C = v1->unk_4D8;
v2->unk_1C = v1;
sub_0209B988(param0->scriptMan->unk_00, &v4, v2, 0, ov104_02233478);
return 1;
}
BOOL FrontierScrCmd_60(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223ADA0 *v0 = sub_0209B978(param0->scriptMan->unk_00);
FieldBattleDTO *v1 = v0->unk_4FC;
v0->unk_14 = CheckPlayerWonBattle(v1->resultMask);
FieldBattleDTO_Free(v1);
return 0;
}
BOOL FrontierScrCmd_61(FrontierScriptContext *param0)
{
FieldBattleDTO *v0;
UnkStruct_ov104_0223ADA0 *v1;
UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(param0->scriptMan->unk_00);
v1 = sub_0209B978(param0->scriptMan->unk_00);
v0 = ov104_0223ABA0(v1, v2);
v1->unk_4FC = v0;
sub_0209B988(param0->scriptMan->unk_00, &gBattleApplicationTemplate, v0, 0, NULL);
return 1;
}
BOOL FrontierScrCmd_62(FrontierScriptContext *param0)
{
int v0;
UnkStruct_ov104_0223ADA0 *v1;
UnkStruct_ov104_02234130 *v2;
UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(param0->scriptMan->unk_00);
FS_EXTERN_OVERLAY(battle_factory_app);
static const ApplicationManagerTemplate v4 = {
BattleFactoryApp_Init,
BattleFactoryApp_Main,
BattleFactoryApp_Exit,
FS_OVERLAY_ID(battle_factory_app)
};
v1 = sub_0209B978(param0->scriptMan->unk_00);
for (v0 = 0; v0 < 6; v0++) {
v1->unk_4DC[v0] = 0;
}
v2 = Heap_Alloc(HEAP_ID_FIELD2, sizeof(UnkStruct_ov104_02234130));
MI_CpuClear8(v2, sizeof(UnkStruct_ov104_02234130));
v2->saveData = v3->saveData;
v2->unk_04 = v1->unk_04;
v2->unk_05 = v1->unk_05;
v2->unk_06 = 1;
v2->unk_08 = v1->unk_4D4;
v2->unk_0C = v1->unk_4D8;
v2->unk_1C = v1;
sub_0209B988(param0->scriptMan->unk_00, &v4, v2, 0, ov104_02233478);
return 1;
}
static void ov104_02233478(void *param0)
{
int v0;
UnkStruct_ov104_02234130 *v1 = param0;
ov104_0223410C(v1->unk_1C, param0);
Heap_Free(param0);
return;
}
BOOL FrontierScrCmd_63(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223ADA0 *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_0223449C(v0);
return 0;
}
BOOL FrontierScrCmd_64(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223ADA0 *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_02234570(v0);
return 0;
}
BOOL FrontierScrCmd_65(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223ADA0 *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_022346A4(v0);
return 0;
}
BOOL FrontierScrCmd_66(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223ADA0 *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_0223470C(v0);
return 0;
}
BOOL FrontierScrCmd_67(FrontierScriptContext *param0)
{
int v0[18];
FrontierGraphics *v1;
String *v2;
Pokemon *v3;
UnkStruct_ov104_0223ADA0 *v4;
u8 v5, v6;
u32 v7, v8, v9;
int v10, v11;
u8 v12 = FrontierScriptContext_ReadByte(param0);
u8 v13 = FrontierScriptContext_ReadByte(param0);
u8 v14 = FrontierScriptContext_ReadByte(param0);
u16 *v15 = FrontierScriptContext_TryGetVarPointer(param0);
v4 = sub_0209B978(param0->scriptMan->unk_00);
v1 = FrontierScriptManager_GetGraphics(param0->scriptMan);
switch (v12) {
case 0:
v4->unk_07 = v13;
break;
case 1:
v4->unk_05 = v13;
break;
case 2:
v4->unk_04 = v13;
break;
case 3:
*v15 = v4->unk_4DC[v13];
break;
case 4:
*v15 = v4->unk_0C;
break;
case 5:
if (v4->unk_0C < 9999) {
v4->unk_0C++;
}
break;
case 7:
OS_ResetSystem(0);
break;
case 9:
*v15 = sub_0202FF68(v4->unk_4F4);
break;
case 10:
ov104_02234148(v4, 2);
break;
case 14:
*v15 = ov104_02234430(v4);
break;
case 15:
*v15 = v4->unk_3F0[v13].species;
break;
case 16:
*v15 = v4->unk_3F0[v13].moves[v14];
break;
case 17:
v3 = Pokemon_New(HEAP_ID_FIELD2);
ov104_0222DF40(&v4->unk_3F0[v13], v3, ov104_0223ADA0(v4));
*v15 = Pokemon_GetValue(v3, MON_DATA_TYPE_1, NULL);
Heap_Free(v3);
break;
case 18:
v5 = ov104_0223AA74(v4->unk_04, 1);
for (v10 = 0; v10 < (17 + 1); v10++) {
v0[v10] = 0;
}
v3 = Pokemon_New(HEAP_ID_FIELD2);
for (v10 = 0; v10 < v5; v10++) {
ov104_0222DF40(&v4->unk_3F0[v10], v3, ov104_0223ADA0(v4));
v7 = Pokemon_GetValue(v3, MON_DATA_TYPE_1, NULL);
v8 = Pokemon_GetValue(v3, MON_DATA_TYPE_2, NULL);
if (v7 == v8) {
v8 = 0xff;
}
v0[v7]++;
if (v8 != 0xff) {
v0[v8]++;
}
}
Heap_Free(v3);
v9 = 0;
for (v10 = 0; v10 < (17 + 1); v10++) {
if (v0[v9] < v0[v10]) {
v9 = v10;
}
}
if (v0[v9] <= 1) {
*v15 = 0xff;
} else {
*v15 = v9;
}
break;
case 19:
*v15 = ov104_0223AF34(v4);
break;
case 20:
*v15 = ov104_02234440(v4, v13);
break;
case 21:
ov104_02234474(v4);
break;
case 22:
ov104_02234480(v4);
break;
case 23:
*v15 = ov104_0223443C(v4);
break;
case 24:
*v15 = v4->unk_57C;
break;
case 26:
*v15 = v4->unk_57D;
break;
case 27:
sub_0209BA80(v4);
break;
case 28:
*v15 = BattleFactory_IsMultiplayerChallenge(v4->unk_04);
break;
case 29:
*v15 = v4->unk_04;
break;
case 30:
Bg_ChangeTilemapRectPalette(v1->bgConfig, 3, 3, 10, 26, 11, v13);
Bg_ScheduleTilemapTransfer(v1->bgConfig, 3);
break;
case 31:
v4->unk_500 = SysTask_Start(ov104_022338B4, FrontierScriptManager_GetGraphics(param0->scriptMan), 5);
break;
case 32:
if (v4->unk_500 != NULL) {
SysTask_Done(v4->unk_500);
v4->unk_500 = NULL;
}
break;
case 33:
ov104_0222E278(&(v4->unk_34[0]), v4->unk_18[v4->unk_06], HEAP_ID_FIELD2, 178);
ov104_0222E278(&(v4->unk_34[1]), v4->unk_18[v4->unk_06 + 7], HEAP_ID_FIELD2, 178);
break;
case 34:
v6 = BattleFactory_GetPartySize(v4->unk_04);
for (v10 = 0; v10 < v6; v10++) {
v3 = Party_GetPokemonBySlotIndex(v4->unk_4D4, v10);
StringTemplate_SetSpeciesName(param0->scriptMan->strTemplate, v10, Pokemon_GetBoxPokemon(v3));
}
break;
case 35:
*v15 = ov104_022347F8(v4);
break;
case 36:
ov104_02234790(v4);
break;
case 37:
*v15 = 0;
if (v4->unk_04 == 0) {
if ((v4->unk_0C + 1) == 21) {
*v15 = 1;
} else if ((v4->unk_0C + 1) == 49) {
*v15 = 2;
}
}
break;
case 38:
ov104_0223AE30(v4);
break;
case 39:
ov104_0222E330(v4->unk_3F0, v4->unk_3D2, v4->unk_3DA, v4->unk_3E0, NULL, 4, 11, 179);
break;
case 40:
ov104_0223ADB0(v4);
break;
case 41:
*v15 = v4->unk_0B;
v4->unk_0B = 1;
break;
}
return 0;
}
void ov104_022338B4(SysTask *param0, void *param1)
{
int v0;
FrontierGraphics *v1 = param1;
v0 = Bg_GetYOffset(v1->bgConfig, 2);
if (v0 >= 255) {
Bg_ScheduleScroll(v1->bgConfig, 2, 3, 0);
} else {
Bg_ScheduleScroll(v1->bgConfig, 2, 4, 1);
}
return;
}
BOOL FrontierScrCmd_68(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223ADA0 *v0;
u16 *v1 = FrontierScriptContext_TryGetVarPointer(param0);
v0 = sub_0209B978(param0->scriptMan->unk_00);
*v1 = v0->unk_14;
return 0;
}
BOOL FrontierScrCmd_69(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223ADA0 *v0;
u16 v1 = FrontierScriptContext_GetVar(param0);
u16 v2 = FrontierScriptContext_GetVar(param0);
u16 *v3 = FrontierScriptContext_TryGetVarPointer(param0);
v0 = sub_0209B978(param0->scriptMan->unk_00);
*v3 = ov104_022347A4(v0, v1, v2);
return 1;
}
BOOL FrontierScrCmd_6A(FrontierScriptContext *param0)
{
u16 v0 = FrontierScriptContext_ReadHalfWord(param0);
param0->data[0] = v0;
FrontierScriptContext_Pause(param0, ov104_0223394C);
return 1;
}
static BOOL ov104_0223394C(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223ADA0 *v0;
u16 v1 = FrontierScriptContext_TryGetVar(param0, param0->data[0]);
v0 = sub_0209B978(param0->scriptMan->unk_00);
if (v0->unk_702 >= 2) {
v0->unk_702 = 0;
return 1;
}
return 0;
}
BOOL FrontierScrCmd_6B(FrontierScriptContext *param0)
{
u16 *v0;
UnkStruct_ov104_0223ADA0 *v1;
UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(param0->scriptMan->unk_00);
u16 v3 = FrontierScriptContext_ReadByte(param0);
v1 = sub_0209B978(param0->scriptMan->unk_00);
if (v1 == NULL) {
return 0;
}
v0 = v1->unk_34[v3].trDataDTO.unk_18;
ov104_022330FC(param0, v0);
return 1;
}

View File

@@ -1,7 +1,6 @@
#include "overlay104/ov104_022339B4.h"
#include <nitro.h>
#include <string.h>
#include "generated/game_records.h"
@@ -12,8 +11,7 @@
#include "overlay104/ov104_0222DCE0.h"
#include "overlay104/ov104_0222ECE8.h"
#include "overlay104/ov104_0223A7F4.h"
#include "overlay104/struct_ov104_02234130.h"
#include "overlay104/struct_ov104_0223ADA0.h"
#include "overlay104/struct_battle_factory.h"
#include "overlay104/struct_ov104_0224028C.h"
#include "battle_frontier_stats.h"
@@ -28,28 +26,27 @@
#include "unk_0205DFC4.h"
#include "vars_flags.h"
void ov104_02233B98(UnkStruct_ov104_0223ADA0 *param0, u16 param1);
static void ov104_02233BAC(UnkStruct_ov104_0223ADA0 *param0);
static void ov104_02233F1C(UnkStruct_ov104_0223ADA0 *param0);
void ov104_022340D0(UnkStruct_ov104_0223ADA0 *param0);
void ov104_0223410C(UnkStruct_ov104_0223ADA0 *param0, void *param1);
u16 ov104_02234130(void *param0, u8 param1);
void ov104_0223449C(UnkStruct_ov104_0223ADA0 *param0);
void ov104_02234570(UnkStruct_ov104_0223ADA0 *param0);
void ov104_022346A4(UnkStruct_ov104_0223ADA0 *param0);
void ov104_0223470C(UnkStruct_ov104_0223ADA0 *param0);
void ov104_02234790(UnkStruct_ov104_0223ADA0 *param0);
static void ov104_02233D80(UnkStruct_ov104_0223ADA0 *param0, u8 param1, u8 param2);
BOOL ov104_022347A4(UnkStruct_ov104_0223ADA0 *param0, u16 param1, u16 param2);
void ov104_02234148(UnkStruct_ov104_0223ADA0 *param0, u8 param1);
u16 ov104_02234430(UnkStruct_ov104_0223ADA0 *param0);
u16 ov104_0223443C(UnkStruct_ov104_0223ADA0 *param0);
u16 ov104_02234440(UnkStruct_ov104_0223ADA0 *param0, u8 param1);
void ov104_02234474(UnkStruct_ov104_0223ADA0 *param0);
void ov104_02234480(UnkStruct_ov104_0223ADA0 *param0);
u16 ov104_022347F8(UnkStruct_ov104_0223ADA0 *param0);
void ov104_02233B98(BattleFactory *param0, u16 param1);
static void ov104_02233BAC(BattleFactory *param0);
static void ov104_02233F1C(BattleFactory *param0);
void ov104_022340D0(BattleFactory *param0);
static u16 ov104_02234130(BattleFactoryAppArgs *args, u8 i);
void ov104_0223449C(BattleFactory *param0);
void ov104_02234570(BattleFactory *param0);
void ov104_022346A4(BattleFactory *param0);
void ov104_0223470C(BattleFactory *param0);
void ov104_02234790(BattleFactory *param0);
static void ov104_02233D80(BattleFactory *param0, u8 param1, u8 param2);
BOOL ov104_022347A4(BattleFactory *param0, u16 param1, u16 param2);
void ov104_02234148(BattleFactory *param0, u8 param1);
u16 ov104_02234430(BattleFactory *param0);
u16 ov104_0223443C(BattleFactory *param0);
u16 ov104_02234440(BattleFactory *param0, u8 param1);
void ov104_02234474(BattleFactory *param0);
void ov104_02234480(BattleFactory *param0);
u16 ov104_022347F8(BattleFactory *param0);
UnkStruct_ov104_0223ADA0 *ov104_022339B4(SaveData *saveData, u16 param1, u8 param2, u8 param3)
BattleFactory *ov104_022339B4(SaveData *saveData, u16 param1, u8 param2, u8 param3)
{
UnkStruct_0202FF58 *v0;
UnkStruct_020300F4 *v1;
@@ -57,10 +54,10 @@ UnkStruct_ov104_0223ADA0 *ov104_022339B4(SaveData *saveData, u16 param1, u8 para
u8 v3;
u16 v4, v5;
u32 v6;
static UnkStruct_ov104_0223ADA0 *v7;
static BattleFactory *v7;
v7 = Heap_Alloc(HEAP_ID_FIELD2, sizeof(UnkStruct_ov104_0223ADA0));
MI_CpuClear8(v7, sizeof(UnkStruct_ov104_0223ADA0));
v7 = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleFactory));
MI_CpuClear8(v7, sizeof(BattleFactory));
v7->unk_4F4 = sub_0202FF58(saveData);
v7->saveData = saveData;
@@ -72,13 +69,13 @@ UnkStruct_ov104_0223ADA0 *ov104_022339B4(SaveData *saveData, u16 param1, u8 para
v1 = sub_020300F4(saveData);
if (param1 == 0) {
v7->unk_04 = param2;
v7->challengeType = param2;
v7->unk_05 = param3;
v7->unk_06 = 0;
sub_0202FF4C(v0);
if (v7->unk_04 == 3) {
if (v7->challengeType == 3) {
if (v7->unk_05 == 0) {
v6 = 102;
} else {
@@ -87,36 +84,36 @@ UnkStruct_ov104_0223ADA0 *ov104_022339B4(SaveData *saveData, u16 param1, u8 para
v3 = SystemVars_GetWiFiFrontierCleared(SaveData_GetVarsFlags(v7->saveData));
} else {
v3 = (u8)sub_020300E0(v1, 10, (v7->unk_05 * 4) + v7->unk_04, NULL);
v3 = (u8)sub_020300E0(v1, 10, (v7->unk_05 * 4) + v7->challengeType, NULL);
}
if (v3 == 1) {
v7->unk_0C = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestStreakIdx(v7->unk_05, v7->unk_04), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryLatestStreakIdx(v7->unk_05, v7->unk_04)));
v7->unk_08 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestTradeCountIndex(v7->unk_05, v7->unk_04), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryLatestTradeCountIndex(v7->unk_05, v7->unk_04)));
v7->currentStreak = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestStreakIdx(v7->unk_05, v7->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryLatestStreakIdx(v7->unk_05, v7->challengeType)));
v7->unk_08 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestTradeCountIndex(v7->unk_05, v7->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryLatestTradeCountIndex(v7->unk_05, v7->challengeType)));
} else {
v7->unk_0C = 0;
v7->currentStreak = 0;
v7->unk_08 = 0;
}
v7->unk_10 = 0;
} else {
v7->unk_04 = (u8)sub_02030030(v0, 1, 0, NULL);
v7->challengeType = (u8)sub_02030030(v0, 1, 0, NULL);
v7->unk_05 = (u8)sub_02030030(v0, 0, 0, NULL);
v7->unk_06 = (u8)sub_02030030(v0, 2, 0, NULL);
v7->unk_0C = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestStreakIdx(v7->unk_05, v7->unk_04), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryLatestStreakIdx(v7->unk_05, v7->unk_04)));
v7->unk_08 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestTradeCountIndex(v7->unk_05, v7->unk_04), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryLatestTradeCountIndex(v7->unk_05, v7->unk_04)));
v7->currentStreak = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestStreakIdx(v7->unk_05, v7->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryLatestStreakIdx(v7->unk_05, v7->challengeType)));
v7->unk_08 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v7->saveData), BattleFrontierStats_GetFactoryLatestTradeCountIndex(v7->unk_05, v7->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryLatestTradeCountIndex(v7->unk_05, v7->challengeType)));
}
v7->unk_0E = (u16)(v7->unk_0C / 7);
v7->unk_0E = (u16)(v7->currentStreak / 7);
if (BattleFactory_IsMultiplayerChallenge(v7->unk_04) == 1) {
if (BattleFactory_IsMultiplayerChallenge(v7->challengeType) == 1) {
ov104_0222E630(v7->saveData);
}
return v7;
}
void ov104_02233B98(UnkStruct_ov104_0223ADA0 *param0, u16 param1)
void ov104_02233B98(BattleFactory *param0, u16 param1)
{
if (param1 == 0) {
ov104_02233BAC(param0);
@@ -127,7 +124,7 @@ void ov104_02233B98(UnkStruct_ov104_0223ADA0 *param0, u16 param1)
return;
}
static void ov104_02233BAC(UnkStruct_ov104_0223ADA0 *param0)
static void ov104_02233BAC(BattleFactory *param0)
{
int v0, v1;
FrontierPokemonDataDTO v2[6 * 2];
@@ -135,7 +132,7 @@ static void ov104_02233BAC(UnkStruct_ov104_0223ADA0 *param0)
u16 v5[6];
u16 v6[6];
ov104_0223A860(param0->unk_04, ov104_0223AF34(param0), param0->unk_18, 7 * 2);
ov104_0223A860(param0->challengeType, ov104_0223AF34(param0), param0->unk_18, 7 * 2);
ov104_0223AAA0(ov104_0223AF34(param0), param0->unk_05, param0->unk_254, param0->unk_280, param0->unk_260, param0->unk_268, param0->unk_08, NULL, NULL);
@@ -148,7 +145,7 @@ static void ov104_02233BAC(UnkStruct_ov104_0223ADA0 *param0)
v2[v0] = param0->unk_280[v0];
}
if (BattleFactory_IsMultiplayerChallenge(param0->unk_04) == 1) {
if (BattleFactory_IsMultiplayerChallenge(param0->challengeType) == 1) {
for (v0 = 0; v0 < 6; v0++) {
v5[v0] = param0->unk_280[v0].species;
v6[v0] = param0->unk_280[v0].item;
@@ -166,7 +163,7 @@ static void ov104_02233BAC(UnkStruct_ov104_0223ADA0 *param0)
}
}
ov104_0223AB0C(ov104_0223AA74(param0->unk_04, 1), param0->unk_18[param0->unk_06], param0->unk_05, v2, param0->unk_3D2, param0->unk_3F0, param0->unk_3DA, param0->unk_3E0, v1);
ov104_0223AB0C(ov104_0223AA74(param0->challengeType, 1), param0->unk_18[param0->unk_06], param0->unk_05, v2, param0->unk_3D2, param0->unk_3F0, param0->unk_3DA, param0->unk_3E0, v1);
for (v0 = 0; v0 < 6; v0++) {
v4 = Pokemon_New(HEAP_ID_FIELD2);
@@ -182,7 +179,7 @@ static void ov104_02233BAC(UnkStruct_ov104_0223ADA0 *param0)
return;
}
static void ov104_02233D80(UnkStruct_ov104_0223ADA0 *param0, u8 param1, u8 param2)
static void ov104_02233D80(BattleFactory *param0, u8 param1, u8 param2)
{
u16 v0;
u16 v1;
@@ -227,7 +224,7 @@ static void ov104_02233D80(UnkStruct_ov104_0223ADA0 *param0, u8 param1, u8 param
return;
}
static void ov104_02233F1C(UnkStruct_ov104_0223ADA0 *param0)
static void ov104_02233F1C(BattleFactory *param0)
{
int v0;
FrontierPokemonDataDTO v4[6];
@@ -235,7 +232,7 @@ static void ov104_02233F1C(UnkStruct_ov104_0223ADA0 *param0)
u16 v6[6];
u32 v7[6];
u8 v3 = BattleFactory_GetPartySize(param0->unk_04);
u8 v3 = BattleFactory_GetPartySize(param0->challengeType);
for (v0 = 0; v0 < (7 * 2); v0++) {
param0->unk_18[v0] = (u16)sub_02030030(param0->unk_4F4, 3, v0, NULL);
@@ -282,7 +279,7 @@ static void ov104_02233F1C(UnkStruct_ov104_0223ADA0 *param0)
return;
}
void ov104_022340D0(UnkStruct_ov104_0223ADA0 *param0)
void ov104_022340D0(BattleFactory *param0)
{
int v0;
@@ -298,7 +295,7 @@ void ov104_022340D0(UnkStruct_ov104_0223ADA0 *param0)
Heap_Free(param0->unk_4D8);
}
MI_CpuClear8(param0, sizeof(UnkStruct_ov104_0223ADA0));
MI_CpuClear8(param0, sizeof(BattleFactory));
Heap_Free(param0);
param0 = NULL;
@@ -306,30 +303,24 @@ void ov104_022340D0(UnkStruct_ov104_0223ADA0 *param0)
return;
}
void ov104_0223410C(UnkStruct_ov104_0223ADA0 *param0, void *param1)
void BattleFactory_GetMonSelectionAppResult(BattleFactory *battleFactory, BattleFactoryAppArgs *args)
{
int v0;
for (v0 = 0; v0 < 6; v0++) {
param0->unk_4DC[v0] = ov104_02234130(param1, v0);
for (int i = 0; i < 6; i++) {
battleFactory->unk_4DC[i] = ov104_02234130(args, i);
}
return;
}
u16 ov104_02234130(void *param0, u8 param1)
static u16 ov104_02234130(BattleFactoryAppArgs *args, u8 i)
{
UnkStruct_ov104_02234130 *v0 = param0;
if (param1 >= 6) {
if (i >= 6) {
GF_ASSERT(0);
return 0;
}
return v0->unk_10[param1];
return args->selectedIndices[i];
}
void ov104_02234148(UnkStruct_ov104_0223ADA0 *param0, u8 param1)
void ov104_02234148(BattleFactory *param0, u8 param1)
{
u16 v0, v1, v2;
u8 v3, v4;
@@ -343,36 +334,36 @@ void ov104_02234148(UnkStruct_ov104_0223ADA0 *param0, u8 param1)
UnkStruct_020300F4 *v14 = sub_020300F4(param0->saveData);
frontier = SaveData_GetBattleFrontier(param0->saveData);
v3 = BattleFactory_GetPartySize(param0->unk_04);
v4 = ov104_0223AA74(param0->unk_04, 1);
v3 = BattleFactory_GetPartySize(param0->challengeType);
v4 = ov104_0223AA74(param0->challengeType, 1);
v5[0] = param0->unk_05;
sub_0202FF84(param0->unk_4F4, 0, 0, v5);
v5[0] = param0->unk_04;
v5[0] = param0->challengeType;
sub_0202FF84(param0->unk_4F4, 1, 0, v5);
sub_0202FF70(param0->unk_4F4, 1);
v5[0] = param0->unk_06;
sub_0202FF84(param0->unk_4F4, 2, 0, v5);
BattleFrontierStats_SetStat(frontier, BattleFrontierStats_GetFactoryLatestTradeCountIndex(param0->unk_05, param0->unk_04), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryLatestTradeCountIndex(param0->unk_05, param0->unk_04)), param0->unk_08);
BattleFrontierStats_SetStat(frontier, BattleFrontierStats_GetFactoryLatestStreakIdx(param0->unk_05, param0->unk_04), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryLatestStreakIdx(param0->unk_05, param0->unk_04)), param0->unk_0C);
BattleFrontierStats_SetStat(frontier, BattleFrontierStats_GetFactoryLatestTradeCountIndex(param0->unk_05, param0->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryLatestTradeCountIndex(param0->unk_05, param0->challengeType)), param0->unk_08);
BattleFrontierStats_SetStat(frontier, BattleFrontierStats_GetFactoryLatestStreakIdx(param0->unk_05, param0->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryLatestStreakIdx(param0->unk_05, param0->challengeType)), param0->currentStreak);
if (param1 != 2) {
v1 = BattleFrontierStats_GetStat(frontier, BattleFrontierStats_GetFactoryRecordStreakIdx(param0->unk_05, param0->unk_04), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryRecordStreakIdx(param0->unk_05, param0->unk_04)));
v8 = BattleFrontierStats_SetIfBetter(frontier, BattleFrontierStats_GetFactoryRecordStreakIdx(param0->unk_05, param0->unk_04), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryRecordStreakIdx(param0->unk_05, param0->unk_04)), param0->unk_0C);
v2 = BattleFrontierStats_GetStat(frontier, BattleFrontierStats_GetFactoryRecordStreakIdx(param0->unk_05, param0->unk_04), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryRecordStreakIdx(param0->unk_05, param0->unk_04)));
v1 = BattleFrontierStats_GetStat(frontier, BattleFrontierStats_GetFactoryRecordStreakIdx(param0->unk_05, param0->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryRecordStreakIdx(param0->unk_05, param0->challengeType)));
v8 = BattleFrontierStats_SetIfBetter(frontier, BattleFrontierStats_GetFactoryRecordStreakIdx(param0->unk_05, param0->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryRecordStreakIdx(param0->unk_05, param0->challengeType)), param0->currentStreak);
v2 = BattleFrontierStats_GetStat(frontier, BattleFrontierStats_GetFactoryRecordStreakIdx(param0->unk_05, param0->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryRecordStreakIdx(param0->unk_05, param0->challengeType)));
if (param0->unk_0C == v1) {
BattleFrontierStats_SetIfBetter(frontier, BattleFrontierStats_GetFactoryRecordTradeCountIndex(param0->unk_05, param0->unk_04), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryRecordTradeCountIndex(param0->unk_05, param0->unk_04)), param0->unk_08);
if (param0->currentStreak == v1) {
BattleFrontierStats_SetIfBetter(frontier, BattleFrontierStats_GetFactoryRecordTradeCountIndex(param0->unk_05, param0->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryRecordTradeCountIndex(param0->unk_05, param0->challengeType)), param0->unk_08);
} else if (v1 < v2) {
BattleFrontierStats_SetStat(frontier, BattleFrontierStats_GetFactoryRecordTradeCountIndex(param0->unk_05, param0->unk_04), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryRecordTradeCountIndex(param0->unk_05, param0->unk_04)), param0->unk_08);
BattleFrontierStats_SetStat(frontier, BattleFrontierStats_GetFactoryRecordTradeCountIndex(param0->unk_05, param0->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetFactoryRecordTradeCountIndex(param0->unk_05, param0->challengeType)), param0->unk_08);
}
v5[0] = param0->unk_0A;
sub_020300B0(v14, 10, (param0->unk_05 * 4) + param0->unk_04, v5);
sub_020300B0(v14, 10, (param0->unk_05 * 4) + param0->challengeType, v5);
if (param0->unk_04 == 3) {
if (param0->challengeType == 3) {
if (param0->unk_05 == 0) {
v10 = 102;
} else {
@@ -421,18 +412,18 @@ void ov104_02234148(UnkStruct_ov104_0223ADA0 *param0, u8 param1)
return;
}
u16 ov104_02234430(UnkStruct_ov104_0223ADA0 *param0)
u16 ov104_02234430(BattleFactory *param0)
{
param0->unk_06++;
return param0->unk_06;
}
u16 ov104_0223443C(UnkStruct_ov104_0223ADA0 *param0)
u16 ov104_0223443C(BattleFactory *param0)
{
return param0->unk_06;
}
u16 ov104_02234440(UnkStruct_ov104_0223ADA0 *param0, u8 param1)
u16 ov104_02234440(BattleFactory *param0, u8 param1)
{
FrontierTrainerDataDTO v0;
u8 v2 = param0->unk_06 + (param1 * 7);
@@ -442,13 +433,13 @@ u16 ov104_02234440(UnkStruct_ov104_0223ADA0 *param0, u8 param1)
return BattleTower_GetObjectIDFromTrainerClass(v0.trainerType);
}
void ov104_02234474(UnkStruct_ov104_0223ADA0 *param0)
void ov104_02234474(BattleFactory *param0)
{
ov104_02234148(param0, 1);
return;
}
void ov104_02234480(UnkStruct_ov104_0223ADA0 *param0)
void ov104_02234480(BattleFactory *param0)
{
param0->unk_0A = 1;
@@ -462,15 +453,15 @@ void ov104_02234480(UnkStruct_ov104_0223ADA0 *param0)
return;
}
void ov104_0223449C(UnkStruct_ov104_0223ADA0 *param0)
void ov104_0223449C(BattleFactory *param0)
{
int v0;
u8 v1, v2;
Pokemon *v3;
const UnkStruct_ov104_0224028C *v4;
v1 = BattleFactory_GetPartySize(param0->unk_04);
v2 = ov104_0223AA74(param0->unk_04, 1);
v1 = BattleFactory_GetPartySize(param0->challengeType);
v2 = ov104_0223AA74(param0->challengeType, 1);
Party_Init(param0->unk_4D4);
@@ -492,7 +483,7 @@ void ov104_0223449C(UnkStruct_ov104_0223ADA0 *param0)
return;
}
void ov104_02234570(UnkStruct_ov104_0223ADA0 *param0)
void ov104_02234570(BattleFactory *param0)
{
int v0, v1, v2;
u8 v3;
@@ -506,7 +497,7 @@ void ov104_02234570(UnkStruct_ov104_0223ADA0 *param0)
v5[v0] = 0;
}
v3 = ov104_0223AA74(param0->unk_04, 1);
v3 = ov104_0223AA74(param0->challengeType, 1);
v1 = Party_GetCurrentCount(param0->unk_4D4);
for (v0 = 0; v0 < v1; v0++) {
@@ -534,7 +525,7 @@ void ov104_02234570(UnkStruct_ov104_0223ADA0 *param0)
return;
}
void ov104_022346A4(UnkStruct_ov104_0223ADA0 *param0)
void ov104_022346A4(BattleFactory *param0)
{
Pokemon *v0;
@@ -553,15 +544,15 @@ void ov104_022346A4(UnkStruct_ov104_0223ADA0 *param0)
return;
}
void ov104_0223470C(UnkStruct_ov104_0223ADA0 *param0)
void ov104_0223470C(BattleFactory *param0)
{
int v0;
u8 v1, v2;
Pokemon *v3;
int v4;
v1 = BattleFactory_GetPartySize(param0->unk_04);
v2 = ov104_0223AA74(param0->unk_04, 1);
v1 = BattleFactory_GetPartySize(param0->challengeType);
v2 = ov104_0223AA74(param0->challengeType, 1);
Party_Init(param0->unk_4D8);
@@ -581,7 +572,7 @@ void ov104_0223470C(UnkStruct_ov104_0223ADA0 *param0)
return;
}
void ov104_02234790(UnkStruct_ov104_0223ADA0 *param0)
void ov104_02234790(BattleFactory *param0)
{
if (param0->unk_08 < 9999) {
param0->unk_08++;
@@ -590,7 +581,7 @@ void ov104_02234790(UnkStruct_ov104_0223ADA0 *param0)
return;
}
BOOL ov104_022347A4(UnkStruct_ov104_0223ADA0 *param0, u16 param1, u16 param2)
BOOL ov104_022347A4(BattleFactory *param0, u16 param1, u16 param2)
{
int v0;
@@ -621,7 +612,7 @@ BOOL ov104_022347A4(UnkStruct_ov104_0223ADA0 *param0, u16 param1, u16 param2)
return v0;
}
u16 ov104_022347F8(UnkStruct_ov104_0223ADA0 *param0)
u16 ov104_022347F8(BattleFactory *param0)
{
u8 v0;
u16 v1;
@@ -630,7 +621,7 @@ u16 ov104_022347F8(UnkStruct_ov104_0223ADA0 *param0)
v1 = param0->unk_0E;
if ((param0->unk_04 == 0) || (param0->unk_04 == 1)) {
if ((param0->challengeType == 0) || (param0->challengeType == 1)) {
if (v1 >= 8) {
v0 = v2[8];
} else {
@@ -644,8 +635,8 @@ u16 ov104_022347F8(UnkStruct_ov104_0223ADA0 *param0)
}
}
if (param0->unk_04 == 0) {
if ((param0->unk_0C == 21) || (param0->unk_0C == 49)) {
if (param0->challengeType == 0) {
if ((param0->currentStreak == 21) || (param0->currentStreak == 49)) {
v0 = 20;
}
}

View File

@@ -1,614 +0,0 @@
#include <nitro.h>
#include <string.h>
#include "applications/frontier/battle_castle/opponent_app.h"
#include "applications/frontier/battle_castle/self_app.h"
#include "overlay104/frontier_script_context.h"
#include "overlay104/frontier_script_manager.h"
#include "overlay104/frscrcmd.h"
#include "overlay104/ov104_0222DCE0.h"
#include "overlay104/ov104_02231F74.h"
#include "overlay104/ov104_022361B4.h"
#include "overlay104/ov104_0223B6F4.h"
#include "overlay104/struct_ov104_02230BE4.h"
#include "overlay104/struct_ov104_0223597C.h"
#include "overlay104/struct_ov104_0223BA10.h"
#include "battle_frontier_stats.h"
#include "communication_system.h"
#include "field_battle_data_transfer.h"
#include "heap.h"
#include "party.h"
#include "pokemon.h"
#include "string_gf.h"
#include "unk_020302D0.h"
#include "unk_0205DFC4.h"
#include "unk_0209B6F8.h"
#include "unk_0209BA80.h"
#include "constdata/const_020EA358.h"
FS_EXTERN_OVERLAY(battle_castle_app);
#include <nitro/code16.h>
static BOOL ov104_02236008(FrontierScriptContext *param0);
static void ov104_02235B3C(UnkStruct_ov104_0223597C *param0, UnkStruct_ov104_0223BA10 *param1);
static BOOL ov104_02236058(FrontierScriptContext *param0);
static void ov104_02235B84(void *param0);
BOOL FrontierScrCmd_97(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BA10 *v0;
UnkStruct_ov104_02230BE4 *v1;
u16 v2 = FrontierScriptContext_GetVar(param0);
u16 v3 = FrontierScriptContext_GetVar(param0);
u16 v4 = FrontierScriptContext_GetVar(param0);
u16 v5 = FrontierScriptContext_GetVar(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);
sub_0209B980(param0->scriptMan->unk_00, v0);
return 0;
}
BOOL FrontierScrCmd_98(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BA10 *v0;
u16 v1 = FrontierScriptContext_GetVar(param0);
v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_02236514(v0, v1);
return 0;
}
BOOL FrontierScrCmd_99(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BA10 *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_022367AC(v0);
return 0;
}
BOOL FrontierScrCmd_9A(FrontierScriptContext *param0)
{
int v0;
UnkStruct_ov104_0223BA10 *v1;
UnkStruct_ov104_0223597C *v2;
UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(param0->scriptMan->unk_00);
FS_EXTERN_OVERLAY(battle_castle_app);
static const ApplicationManagerTemplate v4 = {
BattleCastleSelfApp_Init,
BattleCastleSelfApp_Main,
BattleCastleSelfApp_Exit,
FS_OVERLAY_ID(battle_castle_app)
};
v1 = sub_0209B978(param0->scriptMan->unk_00);
v2 = Heap_Alloc(HEAP_ID_FIELD2, sizeof(UnkStruct_ov104_0223597C));
MI_CpuClear8(v2, sizeof(UnkStruct_ov104_0223597C));
v2->saveData = v3->saveData;
ov104_02235B3C(v2, v1);
sub_0209B988(param0->scriptMan->unk_00, &v4, v2, 0, ov104_02235B84);
return 1;
}
BOOL FrontierScrCmd_A4(FrontierScriptContext *param0)
{
int v0;
UnkStruct_ov104_0223BA10 *v1;
UnkStruct_ov104_0223597C *v2;
UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(param0->scriptMan->unk_00);
FS_EXTERN_OVERLAY(battle_castle_app);
static const ApplicationManagerTemplate v4 = {
NULL,
NULL,
NULL,
FS_OVERLAY_ID(battle_castle_app)
};
v1 = sub_0209B978(param0->scriptMan->unk_00);
v2 = Heap_Alloc(HEAP_ID_FIELD2, sizeof(UnkStruct_ov104_0223597C));
MI_CpuClear8(v2, sizeof(UnkStruct_ov104_0223597C));
v2->saveData = v3->saveData;
ov104_02235B3C(v2, v1);
sub_0209B988(param0->scriptMan->unk_00, &v4, v2, 0, ov104_02235B84);
return 1;
}
BOOL FrontierScrCmd_9B(FrontierScriptContext *param0)
{
int v0;
UnkStruct_ov104_0223BA10 *v1;
FieldBattleDTO *v2;
Pokemon *v3;
v1 = sub_0209B978(param0->scriptMan->unk_00);
v2 = v1->unk_0C;
v3 = Party_GetPokemonBySlotIndex(v2->parties[0], 0);
Party_AddPokemonBySlotIndex(v1->unk_28, 0, v3);
v3 = Party_GetPokemonBySlotIndex(v2->parties[0], 1);
Party_AddPokemonBySlotIndex(v1->unk_28, 1, v3);
if (BattleCastle_IsMultiPlayerChallenge(v1->unk_10) == 0) {
v3 = Party_GetPokemonBySlotIndex(v2->parties[0], 2);
Party_AddPokemonBySlotIndex(v1->unk_28, 2, v3);
} else {
v3 = Party_GetPokemonBySlotIndex(v2->parties[2], 0);
Party_AddPokemonBySlotIndex(v1->unk_28, 2, v3);
v3 = Party_GetPokemonBySlotIndex(v2->parties[2], 1);
Party_AddPokemonBySlotIndex(v1->unk_28, 3, v3);
}
v1->unk_1C = CheckPlayerWonBattle(v2->resultMask);
FieldBattleDTO_Free(v2);
return 0;
}
BOOL FrontierScrCmd_9C(FrontierScriptContext *param0)
{
FieldBattleDTO *v0;
UnkStruct_ov104_0223BA10 *v1;
UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(param0->scriptMan->unk_00);
v1 = sub_0209B978(param0->scriptMan->unk_00);
v0 = ov104_0223B810(v1, v2);
v1->unk_0C = v0;
sub_0209B988(param0->scriptMan->unk_00, &gBattleApplicationTemplate, v0, 0, NULL);
return 1;
}
BOOL FrontierScrCmd_9D(FrontierScriptContext *param0)
{
int v0;
UnkStruct_ov104_0223BA10 *v1;
UnkStruct_ov104_0223597C *v2;
UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(param0->scriptMan->unk_00);
FS_EXTERN_OVERLAY(battle_castle_app);
static const ApplicationManagerTemplate v4 = {
BattleCastleOpponentApp_Init,
BattleCastleOpponentApp_Main,
BattleCastleOpponentApp_Exit,
FS_OVERLAY_ID(battle_castle_app)
};
v1 = sub_0209B978(param0->scriptMan->unk_00);
v2 = Heap_Alloc(HEAP_ID_FIELD2, sizeof(UnkStruct_ov104_0223597C));
MI_CpuClear8(v2, sizeof(UnkStruct_ov104_0223597C));
v2->saveData = v3->saveData;
ov104_02235B3C(v2, v1);
sub_0209B988(param0->scriptMan->unk_00, &v4, v2, 0, ov104_02235B84);
return 1;
}
static void ov104_02235B3C(UnkStruct_ov104_0223597C *param0, UnkStruct_ov104_0223BA10 *param1)
{
int v0;
param0->unk_04 = param1->unk_10;
param0->unk_18 = param1->unk_28;
param0->unk_1C = param1->unk_2C;
param0->unk_24 = param1;
param0->unk_28 = param1->unk_A1C;
for (v0 = 0; v0 < 4; v0++) {
param0->unk_08[v0] = param1->unk_370[v0];
param0->unk_0C[v0] = param1->unk_374[v0];
param0->unk_10[v0] = param1->unk_378[v0];
param0->unk_14[v0] = param1->unk_37C[v0];
}
return;
}
static void ov104_02235B84(void *param0)
{
int v0;
UnkStruct_ov104_0223597C *v1 = param0;
ov104_022367DC(v1->unk_24, param0);
Heap_Free(param0);
return;
}
BOOL FrontierScrCmd_9E(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BA10 *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_02236BF0(v0);
return 0;
}
BOOL FrontierScrCmd_9F(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BA10 *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_02236BF8(v0);
return 0;
}
BOOL FrontierScrCmd_A0(FrontierScriptContext *param0)
{
String *v0;
Pokemon *v1;
Party *v2;
UnkStruct_ov104_0223BA10 *v3;
u8 v4;
u32 v5[9][2];
u32 v6, v7;
int v8, v9, v10;
UnkStruct_ov104_02230BE4 *v11;
FrontierGraphics *v12;
u8 v13[4];
u8 v14 = FrontierScriptContext_ReadByte(param0);
u8 v15 = FrontierScriptContext_ReadByte(param0);
u8 v16 = FrontierScriptContext_ReadByte(param0);
u16 *v17 = FrontierScriptContext_TryGetVarPointer(param0);
v3 = sub_0209B978(param0->scriptMan->unk_00);
v11 = sub_0209B970(param0->scriptMan->unk_00);
switch (v14) {
case 2:
v3->unk_10 = v15;
break;
case 3:
*v17 = v3->unk_380[v15];
break;
case 4:
*v17 = v3->unk_14;
break;
case 5:
if (v3->unk_14 < 9999) {
v3->unk_14++;
}
break;
case 7:
OS_ResetSystem(0);
break;
case 9:
*v17 = sub_020302EC(v3->unk_08);
break;
case 10:
ov104_02236848(v3, 2);
break;
case 14:
*v17 = ov104_02236B48(v3);
break;
case 15:
*v17 = v3->unk_288[v15].species;
break;
case 16:
*v17 = v3->unk_288[v15].moves[v16];
break;
case 18:
v2 = SaveData_GetParty(v11->saveData);
for (v8 = 0; v8 < 3; v8++) {
v1 = Party_GetPokemonBySlotIndex(v2, v3->unk_24[v8]);
Pokemon_SetValue(v1, MON_DATA_HELD_ITEM, &v3->unk_36A[v8]);
}
break;
case 19:
*v17 = ov104_0223BB60(v3);
break;
case 20:
*v17 = ov104_02236B58(v3, v15);
break;
case 21:
ov104_02236B8C(v3);
break;
case 22:
ov104_02236BD0(v3);
break;
case 23:
*v17 = ov104_02236B54(v3);
break;
case 24:
*v17 = v3->unk_A10;
break;
case 26:
*v17 = v3->unk_A11;
break;
case 27:
*v17 = ov104_02236D10(v3);
ov104_02236ED8(v3->saveData, v3->unk_10, *v17);
break;
case 28:
ov104_02236C50(v3);
break;
case 29:
sub_0209BA80(v3);
break;
case 30:
if (v3->unk_A1B >= 6) {
*v17 = (v3->unk_A1B - 6);
} else {
*v17 = v3->unk_A1B;
}
break;
case 31:
v3->unk_A1B = 0;
v3->unk_A19 = 0;
v3->unk_A18 = 0;
break;
case 32:
v3->unk_A18 = v15;
break;
case 33:
v10 = 0;
if (v3->unk_A1B >= 6) {
if (CommSys_CurNetId() != 0) {
v10 = 1;
}
} else {
if (CommSys_CurNetId() == 0) {
v10 = 1;
}
}
if (v10 == 1) {
ov104_0223BC2C(SaveData_GetBattleFrontier(v11->saveData), v3->unk_10, 50);
} else {
v3->unk_A1C -= 50;
}
break;
case 34:
*v17 = 0;
if (BattleCastle_IsMultiPlayerChallenge(v3->unk_10) == 1) {
if (v3->unk_A1B >= 6) {
if (CommSys_CurNetId() == 0) {
*v17 = 1;
}
} else {
if (CommSys_CurNetId() != 0) {
*v17 = 1;
}
}
}
break;
case 35:
*v17 = BattleCastle_IsMultiPlayerChallenge(v3->unk_10);
break;
case 17:
*v17 = v3->unk_10;
break;
case 25:
*v17 = v3->unk_12;
break;
case 36:
v12 = FrontierScriptManager_GetGraphics(param0->scriptMan);
ov104_0223BB84(v12->bgConfig, v3, 3);
break;
case 37:
ov104_0222E278(&(v3->unk_4C[0]), v3->unk_30[v3->unk_11], HEAP_ID_FIELD2, 178);
ov104_0222E278(&(v3->unk_4C[1]), v3->unk_30[v3->unk_11 + 7], HEAP_ID_FIELD2, 178);
break;
case 38:
*v17 = ov104_02237338(v3);
break;
case 39:
*v17 = (u16)sub_02030470(sub_0203041C(v11->saveData), 10, 0, 0, NULL);
v13[0] = 1;
sub_02030430(sub_0203041C(v11->saveData), 10, 0, 0, v13);
break;
case 40:
*v17 = 0;
if (v3->unk_10 == 0) {
if ((v3->unk_14 + 1) == 21) {
*v17 = 1;
} else if ((v3->unk_14 + 1) == 49) {
*v17 = 2;
}
}
break;
case 41:
ov104_0222E330(v3->unk_288, v3->unk_26C, v3->unk_274, v3->unk_278, NULL, 4, 11, 179);
break;
case 42:
ov104_0223BAB8(v3);
break;
case 43:
*v17 = v3->unk_13;
v3->unk_13 = 1;
break;
case 44:
if (v3->unk_10 == 3) {
if (v15 == 0) {
v3->unk_22 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v11->saveData), BattleFrontierStats_GetCastleLatestCPIndex(v3->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(v3->unk_10)));
BattleFrontierStats_SetStat(SaveData_GetBattleFrontier(v11->saveData), BattleFrontierStats_GetCastleLatestCPIndex(v3->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(v3->unk_10)), v3->unk_20);
} else {
BattleFrontierStats_SetStat(SaveData_GetBattleFrontier(v11->saveData), BattleFrontierStats_GetCastleLatestCPIndex(v3->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(v3->unk_10)), v3->unk_22);
}
}
break;
}
return 0;
}
BOOL FrontierScrCmd_A1(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BA10 *v0;
u16 *v1 = FrontierScriptContext_TryGetVarPointer(param0);
v0 = sub_0209B978(param0->scriptMan->unk_00);
*v1 = v0->unk_1C;
return 0;
}
BOOL FrontierScrCmd_A2(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BA10 *v0;
u16 v1 = FrontierScriptContext_GetVar(param0);
u16 v2 = FrontierScriptContext_GetVar(param0);
u16 *v3 = FrontierScriptContext_TryGetVarPointer(param0);
v0 = sub_0209B978(param0->scriptMan->unk_00);
*v3 = ov104_02236F70(v0, v1, v2);
return 1;
}
BOOL FrontierScrCmd_A3(FrontierScriptContext *param0)
{
u16 v0 = FrontierScriptContext_ReadHalfWord(param0);
param0->data[0] = v0;
FrontierScriptContext_Pause(param0, ov104_02236008);
return 1;
}
static BOOL ov104_02236008(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BA10 *v0;
u16 v1 = FrontierScriptContext_TryGetVar(param0, param0->data[0]);
v0 = sub_0209B978(param0->scriptMan->unk_00);
if (v0->unk_A1A >= 2) {
v0->unk_A1A = 0;
return 1;
}
return 0;
}
BOOL FrontierScrCmd_A5(FrontierScriptContext *param0)
{
u16 v0 = FrontierScriptContext_ReadHalfWord(param0);
param0->data[0] = v0;
FrontierScriptContext_Pause(param0, ov104_02236058);
return 1;
}
static BOOL ov104_02236058(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BA10 *v0;
u16 *v1 = FrontierScriptContext_GetVarPointer(param0, param0->data[0]);
v0 = sub_0209B978(param0->scriptMan->unk_00);
if (v0->unk_A1B == 0) {
return 0;
}
v0->unk_A1A = 0;
*v1 = v0->unk_A1B;
return 1;
}
BOOL FrontierScrCmd_50(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BA10 *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_02236FC0(param0->scriptMan, v0);
return 0;
}
BOOL FrontierScrCmd_51(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BA10 *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_022370E0(param0->scriptMan, v0);
return 0;
}
BOOL FrontierScrCmd_52(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BA10 *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_02237180(param0->scriptMan, v0);
return 0;
}
BOOL FrontierScrCmd_A6(FrontierScriptContext *param0)
{
UnkStruct_ov104_02230BE4 *v0;
u16 v1 = FrontierScriptContext_GetVar(param0);
u16 *v2 = FrontierScriptContext_TryGetVarPointer(param0);
v0 = sub_0209B970(param0->scriptMan->unk_00);
*v2 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v0->saveData), BattleFrontierStats_GetCastleLatestCPIndex(v1), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(v1)));
return 0;
}
BOOL FrontierScrCmd_A7(FrontierScriptContext *param0)
{
UnkStruct_ov104_02230BE4 *v0;
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);
return 0;
}
BOOL FrontierScrCmd_A8(FrontierScriptContext *param0)
{
u16 v0;
UnkStruct_ov104_02230BE4 *v1;
u16 v2 = FrontierScriptContext_GetVar(param0);
u16 v3 = FrontierScriptContext_GetVar(param0);
v1 = sub_0209B970(param0->scriptMan->unk_00);
ov104_02236ED8(v1->saveData, v2, v3);
return 0;
}
BOOL FrontierScrCmd_A9(FrontierScriptContext *param0)
{
u16 *v0;
UnkStruct_ov104_0223BA10 *v1;
UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(param0->scriptMan->unk_00);
u16 v3 = FrontierScriptContext_ReadByte(param0);
v1 = sub_0209B978(param0->scriptMan->unk_00);
if (v1 == NULL) {
return 0;
}
v0 = v1->unk_4C[v3].trDataDTO.unk_18;
ov104_022330FC(param0, v0);
return 1;
}

View File

@@ -1,7 +1,6 @@
#include "overlay104/ov104_022361B4.h"
#include <nitro.h>
#include <string.h>
#include "constants/heap.h"
#include "generated/game_records.h"
@@ -10,13 +9,13 @@
#include "struct_decls/struct_0203041C_decl.h"
#include "struct_defs/battle_frontier.h"
#include "applications/frontier/battle_castle/args.h"
#include "overlay104/defs.h"
#include "overlay104/frontier_script_manager.h"
#include "overlay104/ov104_0222DCE0.h"
#include "overlay104/ov104_0222ECE8.h"
#include "overlay104/ov104_0223B6F4.h"
#include "overlay104/struct_ov104_0223597C.h"
#include "overlay104/struct_ov104_0223BA10.h"
#include "overlay104/struct_battle_castle.h"
#include "battle_frontier_stats.h"
#include "bg_window.h"
@@ -39,26 +38,25 @@
#include "unk_0205DFC4.h"
#include "vars_flags.h"
void ov104_02236514(UnkStruct_ov104_0223BA10 *param0, u16 param1);
static void ov104_02236528(UnkStruct_ov104_0223BA10 *param0);
static void ov104_022365F8(UnkStruct_ov104_0223BA10 *param0);
static void ov104_022366A4(UnkStruct_ov104_0223BA10 *param0);
void ov104_022367AC(UnkStruct_ov104_0223BA10 *param0);
void ov104_022367DC(UnkStruct_ov104_0223BA10 *param0, void *param1);
u16 ov104_02236834(void *param0, u8 param1);
void ov104_02236BF0(UnkStruct_ov104_0223BA10 *param0);
void ov104_02236BF8(UnkStruct_ov104_0223BA10 *param0);
void ov104_02236C50(UnkStruct_ov104_0223BA10 *param0);
int ov104_02236D10(UnkStruct_ov104_0223BA10 *param0);
BOOL ov104_02236F70(UnkStruct_ov104_0223BA10 *param0, u16 param1, u16 param2);
void ov104_02236FC0(FrontierScriptManager *param0, UnkStruct_ov104_0223BA10 *param1);
void ov104_022370E0(FrontierScriptManager *param0, UnkStruct_ov104_0223BA10 *param1);
void ov104_02237180(FrontierScriptManager *param0, UnkStruct_ov104_0223BA10 *param1);
void ov104_02236514(BattleCastle *param0, u16 param1);
static void ov104_02236528(BattleCastle *param0);
static void ov104_022365F8(BattleCastle *param0);
static void ov104_022366A4(BattleCastle *param0);
void ov104_022367AC(BattleCastle *param0);
static u16 GetBattleCastleAppSelectedSlot(BattleCastleAppArgs *args, u8 i);
void ov104_02236BF0(BattleCastle *param0);
void ov104_02236BF8(BattleCastle *param0);
void ov104_02236C50(BattleCastle *param0);
int ov104_02236D10(BattleCastle *param0);
BOOL ov104_02236F70(BattleCastle *param0, u16 param1, u16 param2);
void ov104_02236FC0(FrontierScriptManager *param0, BattleCastle *param1);
void ov104_022370E0(FrontierScriptManager *param0, BattleCastle *param1);
void ov104_02237180(FrontierScriptManager *param0, BattleCastle *param1);
static void ov104_022370C0(BgConfig *param0, Window *param1);
static void ov104_02237284(FrontierScriptManager *param0, Window *param1, TrainerInfo *param2, u16 param3);
u16 ov104_02237338(UnkStruct_ov104_0223BA10 *param0);
u16 ov104_02237338(BattleCastle *param0);
UnkStruct_ov104_0223BA10 *ov104_022361B4(SaveData *saveData, u16 param1, u8 param2, u16 param3, u16 param4, u16 param5, u16 *param6)
BattleCastle *ov104_022361B4(SaveData *saveData, u16 param1, u8 param2, u16 param3, u16 param4, u16 param5, u16 *param6)
{
u32 v0, v1;
Party *v2;
@@ -66,11 +64,11 @@ UnkStruct_ov104_0223BA10 *ov104_022361B4(SaveData *saveData, u16 param1, u8 para
UnkStruct_020302DC *v4;
u8 v5, v6;
u16 v7, v8;
static UnkStruct_ov104_0223BA10 *v9;
static BattleCastle *v9;
UnkStruct_0203041C *v10;
v9 = Heap_Alloc(HEAP_ID_FIELD2, sizeof(UnkStruct_ov104_0223BA10));
MI_CpuClear8(v9, sizeof(UnkStruct_ov104_0223BA10));
v9 = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleCastle));
MI_CpuClear8(v9, sizeof(BattleCastle));
v9->unk_08 = sub_020302DC(saveData);
v9->saveData = saveData;
@@ -83,43 +81,43 @@ UnkStruct_ov104_0223BA10 *ov104_022361B4(SaveData *saveData, u16 param1, u8 para
v10 = sub_0203041C(saveData);
if (param1 == 0) {
v9->unk_10 = param2;
v9->challengeType = param2;
v9->unk_11 = 0;
sub_020302D0(v4);
if (v9->unk_10 == 3) {
if (v9->challengeType == 3) {
v5 = SystemVars_GetWiFiFrontierCleared(SaveData_GetVarsFlags(v9->saveData));
} else {
v5 = (u8)sub_02030470(v10, 9, v9->unk_10, 0, NULL);
v5 = (u8)sub_02030470(v10, 9, v9->challengeType, 0, NULL);
}
if (v5 == 1) {
v9->unk_14 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v9->saveData), BattleFrontierStats_GetCastleLatestStreakIndex(v9->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestStreakIndex(v9->unk_10)));
v9->currentStreak = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v9->saveData), BattleFrontierStats_GetCastleLatestStreakIndex(v9->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestStreakIndex(v9->challengeType)));
} else {
v9->unk_14 = 0;
v9->currentStreak = 0;
BattleFrontierStats_SetStat(SaveData_GetBattleFrontier(v9->saveData), BattleFrontierStats_GetCastleLatestCPIndex(v9->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(v9->unk_10)), 0);
BattleFrontierStats_SetStat(SaveData_GetBattleFrontier(v9->saveData), BattleFrontierStats_GetCastleLatestCPIndex(v9->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(v9->challengeType)), 0);
BattleFrontierStats_SetStat(SaveData_GetBattleFrontier(v9->saveData), BattleFrontierStats_GetCastleSpentCPIndex(param2), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleSpentCPIndex(param2)), 0);
for (v7 = 0; v7 < 3; v7++) {
BattleFrontierStats_SetStat(SaveData_GetBattleFrontier(v9->saveData), BattleFrontierStats_GetCastleRankIndex(v9->unk_10, v7), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleRankIndex(v9->unk_10, v7)), 1);
BattleFrontierStats_SetStat(SaveData_GetBattleFrontier(v9->saveData), BattleFrontierStats_GetCastleRankIndex(v9->challengeType, v7), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleRankIndex(v9->challengeType, v7)), 1);
}
}
v9->unk_16 = (u16)(v9->unk_14 / 7);
v9->unk_16 = (u16)(v9->currentStreak / 7);
v9->unk_18 = 0;
v9->unk_24[0] = param3;
v9->unk_24[1] = param4;
v9->unk_24[2] = param5;
v9->unk_20 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v9->saveData), BattleFrontierStats_GetCastleLatestCPIndex(v9->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(v9->unk_10)));
v9->unk_20 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v9->saveData), BattleFrontierStats_GetCastleLatestCPIndex(v9->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(v9->challengeType)));
BattleFrontierStats_AddToStat(SaveData_GetBattleFrontier(v9->saveData), BattleFrontierStats_GetCastleLatestCPIndex(v9->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(v9->unk_10)), 10);
BattleFrontierStats_AddToStat(SaveData_GetBattleFrontier(v9->saveData), BattleFrontierStats_GetCastleLatestCPIndex(v9->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(v9->challengeType)), 10);
} else {
v9->unk_10 = (u8)sub_02030398(v4, 0, 0, 0, NULL);
v9->challengeType = (u8)sub_02030398(v4, 0, 0, 0, NULL);
v9->unk_11 = (u8)sub_02030398(v4, 1, 0, 0, NULL);
v9->unk_14 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v9->saveData), BattleFrontierStats_GetCastleLatestStreakIndex(v9->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestStreakIndex(v9->unk_10)));
v9->unk_16 = (u16)(v9->unk_14 / 7);
v9->currentStreak = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v9->saveData), BattleFrontierStats_GetCastleLatestStreakIndex(v9->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestStreakIndex(v9->challengeType)));
v9->unk_16 = (u16)(v9->currentStreak / 7);
for (v7 = 0; v7 < 3; v7++) {
v9->unk_24[v7] = (u8)sub_02030398(v4, 7, v7, 0, NULL);
@@ -132,7 +130,7 @@ UnkStruct_ov104_0223BA10 *ov104_022361B4(SaveData *saveData, u16 param1, u8 para
}
v2 = SaveData_GetParty(v9->saveData);
v6 = BattleCastle_GetPartySize(v9->unk_10, 0);
v6 = BattleCastle_GetPartySize(v9->challengeType, 0);
for (v7 = 0; v7 < v6; v7++) {
Party_AddPokemon(v9->unk_28, Party_GetPokemonBySlotIndex(v2, v9->unk_24[v7]));
@@ -149,14 +147,14 @@ UnkStruct_ov104_0223BA10 *ov104_022361B4(SaveData *saveData, u16 param1, u8 para
}
}
if (BattleCastle_IsMultiPlayerChallenge(v9->unk_10) == 1) {
if (BattleCastle_IsMultiPlayerChallenge(v9->challengeType) == 1) {
ov104_0222E630(v9->saveData);
}
return v9;
}
void ov104_02236514(UnkStruct_ov104_0223BA10 *param0, u16 param1)
void ov104_02236514(BattleCastle *param0, u16 param1)
{
if (param1 == 0) {
ov104_02236528(param0);
@@ -167,7 +165,7 @@ void ov104_02236514(UnkStruct_ov104_0223BA10 *param0, u16 param1)
return;
}
static void ov104_02236528(UnkStruct_ov104_0223BA10 *param0)
static void ov104_02236528(BattleCastle *param0)
{
u8 v0 = Party_GetCurrentCount(param0->unk_28);
@@ -180,14 +178,14 @@ static void ov104_02236528(UnkStruct_ov104_0223BA10 *param0)
param0->unk_394[i][3] = Pokemon_GetValue(mon, MON_DATA_MOVE4_PP, NULL);
}
ov104_0223B760(param0->unk_10, ov104_0223BB60(param0), param0->unk_30, 7 * 2);
ov104_0223B760(param0->challengeType, ov104_0223BB60(param0), param0->unk_30, 7 * 2);
ov104_0222E4BC(ov104_0223B7DC(param0->unk_10, 1), param0->unk_30[param0->unk_11], param0->unk_30[param0->unk_11 + 7], param0->unk_26C, param0->unk_288, param0->unk_274, param0->unk_278, BattleCastle_IsMultiPlayerChallenge(param0->unk_10));
ov104_0222E4BC(ov104_0223B7DC(param0->challengeType, 1), param0->unk_30[param0->unk_11], param0->unk_30[param0->unk_11 + 7], param0->unk_26C, param0->unk_288, param0->unk_274, param0->unk_278, BattleCastle_IsMultiPlayerChallenge(param0->challengeType));
return;
}
static void ov104_022365F8(UnkStruct_ov104_0223BA10 *param0)
static void ov104_022365F8(BattleCastle *param0)
{
u16 v0;
int v1;
@@ -223,7 +221,7 @@ static void ov104_022365F8(UnkStruct_ov104_0223BA10 *param0)
return;
}
static void ov104_022366A4(UnkStruct_ov104_0223BA10 *param0)
static void ov104_022366A4(BattleCastle *param0)
{
u8 v0;
u32 v1;
@@ -262,7 +260,7 @@ static void ov104_022366A4(UnkStruct_ov104_0223BA10 *param0)
return;
}
void ov104_022367AC(UnkStruct_ov104_0223BA10 *param0)
void ov104_022367AC(BattleCastle *param0)
{
int v0;
@@ -278,7 +276,7 @@ void ov104_022367AC(UnkStruct_ov104_0223BA10 *param0)
Heap_Free(param0->unk_2C);
}
MI_CpuClear8(param0, sizeof(UnkStruct_ov104_0223BA10));
MI_CpuClear8(param0, sizeof(BattleCastle));
Heap_Free(param0);
param0 = NULL;
@@ -286,46 +284,33 @@ void ov104_022367AC(UnkStruct_ov104_0223BA10 *param0)
return;
}
void ov104_022367DC(UnkStruct_ov104_0223BA10 *param0, void *param1)
void BattleCastle_StoreAppResults(BattleCastle *battleCastle, BattleCastleAppArgs *args)
{
int v0;
UnkStruct_ov104_0223597C *v1 = param1;
for (v0 = 0; v0 < 6; v0++) {
param0->unk_380[v0] = ov104_02236834(param1, v0);
for (int i = 0; i < 6; i++) {
battleCastle->unk_380[i] = GetBattleCastleAppSelectedSlot(args, i);
}
for (v0 = 0; v0 < 4; v0++) {
param0->unk_370[v0] = v1->unk_08[v0];
param0->unk_374[v0] = v1->unk_0C[v0];
param0->unk_378[v0] = v1->unk_10[v0];
param0->unk_37C[v0] = v1->unk_14[v0];
for (int i = 0; i < 4; i++) {
battleCastle->appIdentityUnlocked[i] = args->identityUnlocked[i];
battleCastle->appLevelAdjustmentsUnlocked[i] = args->levelAdjustmentUnlocked[i];
battleCastle->appStatsUnlocked[i] = args->statsUnlocked[i];
battleCastle->appMovesUnlocked[i] = args->movesUnlocked[i];
}
param0->unk_A1C = v1->unk_28;
return;
battleCastle->partnersCP = args->partnersCP;
}
u16 ov104_02236834(void *param0, u8 param1)
static u16 GetBattleCastleAppSelectedSlot(BattleCastleAppArgs *args, u8 i)
{
UnkStruct_ov104_0223597C *v0 = param0;
if (param1 >= 6) {
if (i >= 6) {
GF_ASSERT(0);
return 0;
}
return v0->unk_20;
return args->selectedMonSlot;
}
void ov104_02236848(UnkStruct_ov104_0223BA10 *param0, u8 param1);
u16 ov104_02236B48(UnkStruct_ov104_0223BA10 *param0);
u16 ov104_02236B54(UnkStruct_ov104_0223BA10 *param0);
u16 ov104_02236B58(UnkStruct_ov104_0223BA10 *param0, u8 param1);
void ov104_02236B8C(UnkStruct_ov104_0223BA10 *param0);
void ov104_02236BD0(UnkStruct_ov104_0223BA10 *param0);
void ov104_02236848(UnkStruct_ov104_0223BA10 *param0, u8 param1)
void ov104_02236848(BattleCastle *param0, u8 param1)
{
u16 v0, v1, v2;
u8 v3;
@@ -339,8 +324,8 @@ void ov104_02236848(UnkStruct_ov104_0223BA10 *param0, u8 param1)
UnkStruct_0203041C *v13 = sub_0203041C(param0->saveData);
frontier = SaveData_GetBattleFrontier(param0->saveData);
v3 = ov104_0223B7DC(param0->unk_10, 1);
v4[0] = param0->unk_10;
v3 = ov104_0223B7DC(param0->challengeType, 1);
v4[0] = param0->challengeType;
sub_02030308(param0->unk_08, 0, 0, 0, v4);
sub_020302F4(param0->unk_08, 1);
@@ -348,24 +333,24 @@ void ov104_02236848(UnkStruct_ov104_0223BA10 *param0, u8 param1)
v4[0] = param0->unk_11;
sub_02030308(param0->unk_08, 1, 0, 0, v4);
BattleFrontierStats_SetStat(frontier, BattleFrontierStats_GetCastleLatestStreakIndex(param0->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestStreakIndex(param0->unk_10)), param0->unk_14);
BattleFrontierStats_SetStat(frontier, BattleFrontierStats_GetCastleLatestStreakIndex(param0->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestStreakIndex(param0->challengeType)), param0->currentStreak);
if (param1 != 2) {
v1 = BattleFrontierStats_GetStat(frontier, BattleFrontierStats_GetCastleRecordStreakIndex(param0->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleRecordStreakIndex(param0->unk_10)));
v7 = BattleFrontierStats_SetIfBetter(frontier, BattleFrontierStats_GetCastleRecordStreakIndex(param0->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleRecordStreakIndex(param0->unk_10)), param0->unk_14);
v2 = BattleFrontierStats_GetStat(frontier, BattleFrontierStats_GetCastleRecordStreakIndex(param0->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleRecordStreakIndex(param0->unk_10)));
v9 = BattleFrontierStats_GetStat(frontier, BattleFrontierStats_GetCastleLatestCPIndex(param0->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(param0->unk_10)));
v1 = BattleFrontierStats_GetStat(frontier, BattleFrontierStats_GetCastleRecordStreakIndex(param0->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleRecordStreakIndex(param0->challengeType)));
v7 = BattleFrontierStats_SetIfBetter(frontier, BattleFrontierStats_GetCastleRecordStreakIndex(param0->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleRecordStreakIndex(param0->challengeType)), param0->currentStreak);
v2 = BattleFrontierStats_GetStat(frontier, BattleFrontierStats_GetCastleRecordStreakIndex(param0->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleRecordStreakIndex(param0->challengeType)));
v9 = BattleFrontierStats_GetStat(frontier, BattleFrontierStats_GetCastleLatestCPIndex(param0->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(param0->challengeType)));
if (param0->unk_14 == v1) {
BattleFrontierStats_SetIfBetter(frontier, BattleFrontierStats_GetCastleRecordCPIndex(param0->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleRecordCPIndex(param0->unk_10)), v9);
if (param0->currentStreak == v1) {
BattleFrontierStats_SetIfBetter(frontier, BattleFrontierStats_GetCastleRecordCPIndex(param0->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleRecordCPIndex(param0->challengeType)), v9);
} else if (v1 < v2) {
BattleFrontierStats_SetStat(frontier, BattleFrontierStats_GetCastleRecordCPIndex(param0->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleRecordCPIndex(param0->unk_10)), v9);
BattleFrontierStats_SetStat(frontier, BattleFrontierStats_GetCastleRecordCPIndex(param0->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleRecordCPIndex(param0->challengeType)), v9);
}
v4[0] = param0->unk_27;
sub_02030430(v13, 9, param0->unk_10, 0, v4);
sub_02030430(v13, 9, param0->challengeType, 0, v4);
if (param0->unk_10 == 3) {
if (param0->challengeType == 3) {
BattleFrontierStats_SetStat(frontier, STAT_CASTLE_WFC_STREAK_ACTIVE, BattleFrontierStats_GetHostFriendIdx(STAT_CASTLE_WFC_STREAK_ACTIVE), param0->unk_27);
}
}
@@ -419,18 +404,18 @@ void ov104_02236848(UnkStruct_ov104_0223BA10 *param0, u8 param1)
return;
}
u16 ov104_02236B48(UnkStruct_ov104_0223BA10 *param0)
u16 ov104_02236B48(BattleCastle *param0)
{
param0->unk_11++;
return param0->unk_11;
}
u16 ov104_02236B54(UnkStruct_ov104_0223BA10 *param0)
u16 ov104_02236B54(BattleCastle *param0)
{
return param0->unk_11;
}
u16 ov104_02236B58(UnkStruct_ov104_0223BA10 *param0, u8 param1)
u16 ov104_02236B58(BattleCastle *param0, u8 param1)
{
FrontierTrainerDataDTO v0;
u8 v2 = param0->unk_11 + (param1 * 7);
@@ -440,7 +425,7 @@ u16 ov104_02236B58(UnkStruct_ov104_0223BA10 *param0, u8 param1)
return BattleTower_GetObjectIDFromTrainerClass(v0.trainerType);
}
void ov104_02236B8C(UnkStruct_ov104_0223BA10 *param0)
void ov104_02236B8C(BattleCastle *param0)
{
u16 v0[4];
int v1;
@@ -448,7 +433,7 @@ void ov104_02236B8C(UnkStruct_ov104_0223BA10 *param0)
v0[0] = 1;
for (v1 = 0; v1 < 3; v1++) {
BattleFrontierStats_SetStat(SaveData_GetBattleFrontier(param0->saveData), BattleFrontierStats_GetCastleRankIndex(param0->unk_10, v1), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleRankIndex(param0->unk_10, v1)), 1);
BattleFrontierStats_SetStat(SaveData_GetBattleFrontier(param0->saveData), BattleFrontierStats_GetCastleRankIndex(param0->challengeType, v1), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleRankIndex(param0->challengeType, v1)), 1);
}
ov104_02236848(param0, 1);
@@ -456,7 +441,7 @@ void ov104_02236B8C(UnkStruct_ov104_0223BA10 *param0)
return;
}
void ov104_02236BD0(UnkStruct_ov104_0223BA10 *param0)
void ov104_02236BD0(BattleCastle *param0)
{
param0->unk_27 = 1;
@@ -470,17 +455,17 @@ void ov104_02236BD0(UnkStruct_ov104_0223BA10 *param0)
return;
}
void ov104_02236BF0(UnkStruct_ov104_0223BA10 *param0)
void ov104_02236BF0(BattleCastle *param0)
{
ov104_0223BAB8(param0);
return;
}
void ov104_02236BF8(UnkStruct_ov104_0223BA10 *param0)
void ov104_02236BF8(BattleCastle *param0)
{
int v0, v1, v2;
ov104_0222E4BC(ov104_0223B7DC(param0->unk_10, 1), param0->unk_30[param0->unk_11], param0->unk_30[param0->unk_11 + 7], param0->unk_26C, param0->unk_288, param0->unk_274, param0->unk_278, BattleCastle_IsMultiPlayerChallenge(param0->unk_10));
ov104_0222E4BC(ov104_0223B7DC(param0->challengeType, 1), param0->unk_30[param0->unk_11], param0->unk_30[param0->unk_11 + 7], param0->unk_26C, param0->unk_288, param0->unk_274, param0->unk_278, BattleCastle_IsMultiPlayerChallenge(param0->challengeType));
for (v0 = 0; v0 < 4; v0++) {
(void)0;
@@ -490,7 +475,7 @@ void ov104_02236BF8(UnkStruct_ov104_0223BA10 *param0)
return;
}
void ov104_02236C50(UnkStruct_ov104_0223BA10 *param0)
void ov104_02236C50(BattleCastle *param0)
{
u8 v0, v1;
int v2, v3;
@@ -502,7 +487,7 @@ void ov104_02236C50(UnkStruct_ov104_0223BA10 *param0)
v0 = 2;
}
v1 = BattleCastle_GetPartySize(param0->unk_10, 0);
v1 = BattleCastle_GetPartySize(param0->challengeType, 0);
v3 = Party_GetCurrentCount(param0->unk_28);
for (v2 = v0; v2 < (v1 + v0); v2++) {
@@ -517,16 +502,16 @@ void ov104_02236C50(UnkStruct_ov104_0223BA10 *param0)
ov104_0223BA24(param0->unk_28);
for (v2 = 0; v2 < 4; v2++) {
param0->unk_370[v2] = 0;
param0->unk_374[v2] = 0;
param0->unk_378[v2] = 0;
param0->unk_37C[v2] = 0;
param0->appIdentityUnlocked[v2] = 0;
param0->appLevelAdjustmentsUnlocked[v2] = 0;
param0->appStatsUnlocked[v2] = 0;
param0->appMovesUnlocked[v2] = 0;
}
return;
}
int ov104_02236D10(UnkStruct_ov104_0223BA10 *param0)
int ov104_02236D10(BattleCastle *param0)
{
u8 v0, v1, v2;
u32 v3, v4;
@@ -548,8 +533,8 @@ int ov104_02236D10(UnkStruct_ov104_0223BA10 *param0)
v2 = 2;
}
v0 = BattleCastle_GetPartySize(param0->unk_10, 0);
v1 = ov104_0223B7DC(param0->unk_10, 1);
v0 = BattleCastle_GetPartySize(param0->challengeType, 0);
v1 = ov104_0223B7DC(param0->challengeType, 1);
for (v5 = v2; v5 < (v0 + v2); v5++) {
v9 = Party_GetPokemonBySlotIndex(param0->unk_28, v5);
@@ -588,9 +573,9 @@ int ov104_02236D10(UnkStruct_ov104_0223BA10 *param0)
}
for (v5 = 0; v5 < v1; v5++) {
if (param0->unk_374[v5] == 1) {
if (param0->appLevelAdjustmentsUnlocked[v5] == 1) {
v10[8]++;
} else if (param0->unk_374[v5] == 2) {
} else if (param0->appLevelAdjustmentsUnlocked[v5] == 2) {
(void)0;
}
}
@@ -642,7 +627,7 @@ void ov104_02236ED8(SaveData *saveData, u8 param1, int param2)
return;
}
BOOL ov104_02236F70(UnkStruct_ov104_0223BA10 *param0, u16 param1, u16 param2)
BOOL ov104_02236F70(BattleCastle *param0, u16 param1, u16 param2)
{
int v0;
@@ -673,14 +658,14 @@ BOOL ov104_02236F70(UnkStruct_ov104_0223BA10 *param0, u16 param1, u16 param2)
return v0;
}
void ov104_02236FC0(FrontierScriptManager *param0, UnkStruct_ov104_0223BA10 *param1)
void ov104_02236FC0(FrontierScriptManager *param0, BattleCastle *param1)
{
FrontierGraphics *v0 = FrontierScriptManager_GetGraphics(param0);
GF_ASSERT(param0->unk_A8 == NULL);
GF_ASSERT(param0->unk_AC == NULL);
if (BattleCastle_IsMultiPlayerChallenge(param1->unk_10) == 0) {
if (BattleCastle_IsMultiPlayerChallenge(param1->challengeType) == 0) {
param0->unk_A8 = Window_New(HEAP_ID_FIELD2, 1);
Window_Add(v0->bgConfig, param0->unk_A8, 1, 1, 1, 10, 4, 14, ((((1024 - (18 + 12)) - 9) - (27 * 4)) - (11 * 22)) - (10 * 4));
ov104_022370C0(v0->bgConfig, param0->unk_A8);
@@ -707,12 +692,12 @@ static void ov104_022370C0(BgConfig *param0, Window *param1)
return;
}
void ov104_022370E0(FrontierScriptManager *param0, UnkStruct_ov104_0223BA10 *param1)
void ov104_022370E0(FrontierScriptManager *param0, BattleCastle *param1)
{
Window *v0;
Window *v1;
if (BattleCastle_IsMultiPlayerChallenge(param1->unk_10) == 0) {
if (BattleCastle_IsMultiPlayerChallenge(param1->challengeType) == 0) {
GF_ASSERT(param0->unk_A8 != NULL);
v0 = param0->unk_A8;
Window_EraseStandardFrame(v0, 0);
@@ -741,24 +726,24 @@ void ov104_022370E0(FrontierScriptManager *param0, UnkStruct_ov104_0223BA10 *par
return;
}
void ov104_02237180(FrontierScriptManager *param0, UnkStruct_ov104_0223BA10 *param1)
void ov104_02237180(FrontierScriptManager *param0, BattleCastle *param1)
{
u16 v0, v1;
if (BattleCastle_IsMultiPlayerChallenge(param1->unk_10) == 0) {
if (BattleCastle_IsMultiPlayerChallenge(param1->challengeType) == 0) {
GF_ASSERT(param0->unk_A8 != NULL);
v0 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(param1->saveData), BattleFrontierStats_GetCastleLatestCPIndex(param1->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(param1->unk_10)));
v0 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(param1->saveData), BattleFrontierStats_GetCastleLatestCPIndex(param1->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(param1->challengeType)));
ov104_02237284(param0, param0->unk_A8, SaveData_GetTrainerInfo(param1->saveData), v0);
} else {
GF_ASSERT(param0->unk_A8 != NULL);
GF_ASSERT(param0->unk_AC != NULL);
if (CommSys_CurNetId() == 0) {
v0 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(param1->saveData), BattleFrontierStats_GetCastleLatestCPIndex(param1->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(param1->unk_10)));
v1 = param1->unk_A1C;
v0 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(param1->saveData), BattleFrontierStats_GetCastleLatestCPIndex(param1->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(param1->challengeType)));
v1 = param1->partnersCP;
} else {
v0 = param1->unk_A1C;
v1 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(param1->saveData), BattleFrontierStats_GetCastleLatestCPIndex(param1->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(param1->unk_10)));
v0 = param1->partnersCP;
v1 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(param1->saveData), BattleFrontierStats_GetCastleLatestCPIndex(param1->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetCastleLatestCPIndex(param1->challengeType)));
}
ov104_02237284(param0, param0->unk_A8, CommInfo_TrainerInfo(0), v0);
@@ -797,7 +782,7 @@ static void ov104_02237284(FrontierScriptManager *param0, Window *param1, Traine
return;
}
u16 ov104_02237338(UnkStruct_ov104_0223BA10 *param0)
u16 ov104_02237338(BattleCastle *param0)
{
u8 v0;
u16 v1;
@@ -806,7 +791,7 @@ u16 ov104_02237338(UnkStruct_ov104_0223BA10 *param0)
v1 = param0->unk_16;
if ((param0->unk_10 == 0) || (param0->unk_10 == 1)) {
if ((param0->challengeType == 0) || (param0->challengeType == 1)) {
if (v1 >= 8) {
v0 = v2[8];
} else {
@@ -820,8 +805,8 @@ u16 ov104_02237338(UnkStruct_ov104_0223BA10 *param0)
}
}
if (param0->unk_10 == 0) {
if ((param0->unk_14 == 21) || (param0->unk_14 == 49)) {
if (param0->challengeType == 0) {
if ((param0->currentStreak == 21) || (param0->currentStreak == 49)) {
v0 = 20;
}
}

View File

@@ -1,655 +0,0 @@
#include <nitro.h>
#include <string.h>
#include "applications/frontier/battle_arcade/main.h"
#include "overlay063/ov63_0222CCE4.h"
#include "overlay104/defs.h"
#include "overlay104/frontier_graphics.h"
#include "overlay104/frontier_particle_system.h"
#include "overlay104/frontier_script_context.h"
#include "overlay104/frontier_script_manager.h"
#include "overlay104/frscrcmd.h"
#include "overlay104/ov104_0222DCE0.h"
#include "overlay104/ov104_02231F74.h"
#include "overlay104/ov104_02237DD8.h"
#include "overlay104/ov104_0223B6F4.h"
#include "overlay104/ov104_0223BCBC.h"
#include "overlay104/struct_ov104_02230BE4.h"
#include "overlay104/struct_ov104_02238240.h"
#include "overlay104/struct_ov104_0223BFFC.h"
#include "overlay104/struct_ov104_0223C634.h"
#include "communication_information.h"
#include "field_battle_data_transfer.h"
#include "gx_layers.h"
#include "heap.h"
#include "palette.h"
#include "particle_system.h"
#include "party.h"
#include "pokemon.h"
#include "save_player.h"
#include "spl.h"
#include "sprite.h"
#include "sprite_system.h"
#include "string_gf.h"
#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"
FS_EXTERN_OVERLAY(battle_arcade_app);
#include <nitro/code16.h>
static BOOL ov104_02237D18(FrontierScriptContext *param0);
static void ov104_02237634(UnkStruct_ov104_02238240 *param0, UnkStruct_ov104_0223BFFC *param1);
static void ov104_02237C30(SPLEmitter *param0);
static void ov104_02237C0C(FrontierScriptContext *param0, UnkStruct_ov104_0223BFFC *param1, u16 param2);
static void ov104_0223770C(void *param0);
BOOL FrontierScrCmd_B8(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BFFC *v0;
UnkStruct_ov104_02230BE4 *v1;
u16 v2 = FrontierScriptContext_GetVar(param0);
u16 v3 = FrontierScriptContext_GetVar(param0);
u16 v4 = FrontierScriptContext_GetVar(param0);
u16 v5 = FrontierScriptContext_GetVar(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);
sub_0209B980(param0->scriptMan->unk_00, v0);
return 0;
}
BOOL FrontierScrCmd_B9(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BFFC *v0;
u16 v1 = FrontierScriptContext_GetVar(param0);
v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_0223806C(v0, v1);
return 0;
}
BOOL FrontierScrCmd_BA(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BFFC *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_02238210(v0);
return 0;
}
BOOL FrontierScrCmd_C3(FrontierScriptContext *param0)
{
int v0;
UnkStruct_ov104_0223BFFC *v1;
UnkStruct_ov104_02238240 *v2;
UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(param0->scriptMan->unk_00);
FS_EXTERN_OVERLAY(battle_arcade_app);
static const ApplicationManagerTemplate v4 = {
BattleArcadeApp_Init,
BattleArcadeApp_Main,
BattleArcadeApp_Exit,
FS_OVERLAY_ID(battle_arcade_app)
};
v1 = sub_0209B978(param0->scriptMan->unk_00);
v2 = Heap_Alloc(HEAP_ID_FIELD2, sizeof(UnkStruct_ov104_02238240));
MI_CpuClear8(v2, sizeof(UnkStruct_ov104_02238240));
v2->saveData = v3->saveData;
ov104_02237634(v2, v1);
sub_0209B988(param0->scriptMan->unk_00, &v4, v2, 0, ov104_0223770C);
return 1;
}
BOOL FrontierScrCmd_BB(FrontierScriptContext *param0)
{
u8 v0;
int v1, v2, v3, v4, v5;
u32 v6, v7, v8;
UnkStruct_ov104_0223BFFC *v9;
FieldBattleDTO *v10;
Pokemon *v11;
Pokemon *v12;
v9 = sub_0209B978(param0->scriptMan->unk_00);
v10 = v9->unk_0C;
v9->unk_1D = ov104_02238538(v9, v10->parties[0], v10->parties[2], v10->totalTurnsElapsed);
v9->unk_28 = CheckPlayerWonBattle(v10->resultMask);
if (v9->unk_13 == 27) {
v2 = 1;
v3 = 3;
} else {
v2 = 0;
v3 = 2;
}
ov104_02239054(v10->parties[v2], v9->unk_70, 0, 0);
ov104_02239054(v10->parties[v2], v9->unk_70, 1, 1);
if (BattleCastle_IsMultiPlayerChallenge(v9->unk_10) == 0) {
ov104_02239054(v10->parties[v2], v9->unk_70, 2, 2);
} else {
ov104_02239054(v10->parties[v3], v9->unk_70, 0, 2);
ov104_02239054(v10->parties[v3], v9->unk_70, 1, 3);
}
if (v9->unk_13 == 17) {
v0 = BattleArcade_GetPartySize(v9->unk_10, 1);
for (v1 = 0; v1 < v0; v1++) {
v11 = Party_GetPokemonBySlotIndex(v9->unk_70, v1);
v7 = Pokemon_GetValue(v11, MON_DATA_LEVEL, NULL);
v7 -= 3;
v6 = Pokemon_GetSpeciesBaseExpAt(Pokemon_GetValue(v11, MON_DATA_SPECIES, NULL), v7);
Pokemon_SetValue(v11, MON_DATA_EXPERIENCE, &v6);
Pokemon_CalcLevelAndStats(v11);
}
}
v4 = Party_GetCurrentCount(v9->unk_70);
for (v1 = 0; v1 < v4; v1++) {
v11 = Party_GetPokemonBySlotIndex(v9->unk_70, v1);
v5 = v9->unk_94[v1];
Pokemon_SetValue(v11, MON_DATA_MAX_HP, &v5);
Pokemon_SetValue(v11, MON_DATA_HP, &v5);
v5 = v9->unk_A4[v1];
Pokemon_SetValue(v11, MON_DATA_ATK, &v5);
v5 = v9->unk_B4[v1];
Pokemon_SetValue(v11, MON_DATA_DEF, &v5);
v5 = v9->unk_C4[v1];
Pokemon_SetValue(v11, MON_DATA_SPEED, &v5);
v5 = v9->unk_D4[v1];
Pokemon_SetValue(v11, MON_DATA_SP_ATK, &v5);
v5 = v9->unk_E4[v1];
Pokemon_SetValue(v11, MON_DATA_SP_DEF, &v5);
}
FieldBattleDTO_Free(v10);
return 0;
}
BOOL FrontierScrCmd_BC(FrontierScriptContext *param0)
{
FieldBattleDTO *v0;
UnkStruct_ov104_0223BFFC *v1;
UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(param0->scriptMan->unk_00);
v1 = sub_0209B978(param0->scriptMan->unk_00);
v0 = ov104_0223BDD8(v1, v2);
v1->unk_0C = v0;
sub_0209B988(param0->scriptMan->unk_00, &gBattleApplicationTemplate, v0, 0, NULL);
return 1;
}
static void ov104_02237634(UnkStruct_ov104_02238240 *param0, UnkStruct_ov104_0223BFFC *param1)
{
int v0, v1;
Pokemon *v2;
param0->unk_04 = param1->unk_10;
param0->unk_1E = ov104_0223C124(param1);
param0->unk_14 = &param1->unk_20;
param0->unk_10 = &param1->unk_13;
param0->unk_07 = param1->unk_1D;
param0->unk_1C = param1->unk_18;
param0->unk_18 = param1->unk_A78;
param0->unk_0C = &param1->unk_1C;
param0->unk_30 = param1->unk_70;
param0->unk_34 = param1->unk_74;
param0->unk_3C = param1;
param1->unk_14 = 0;
param0->unk_08 = &param1->unk_14;
param0->unk_40 = param1->unk_12;
param1->unk_12 = 0;
param1->unk_1F = 0;
v1 = Party_GetCurrentCount(param1->unk_70);
for (v0 = 0; v0 < v1; v0++) {
v2 = Party_GetPokemonBySlotIndex(param1->unk_70, v0);
param1->unk_94[v0] = Pokemon_GetValue(v2, MON_DATA_MAX_HP, NULL);
param1->unk_A4[v0] = Pokemon_GetValue(v2, MON_DATA_ATK, NULL);
param1->unk_B4[v0] = Pokemon_GetValue(v2, MON_DATA_DEF, NULL);
param1->unk_C4[v0] = Pokemon_GetValue(v2, MON_DATA_SPEED, NULL);
param1->unk_D4[v0] = Pokemon_GetValue(v2, MON_DATA_SP_ATK, NULL);
param1->unk_E4[v0] = Pokemon_GetValue(v2, MON_DATA_SP_DEF, NULL);
}
return;
}
static void ov104_0223770C(void *param0)
{
int v0;
UnkStruct_ov104_02238240 *v1 = param0;
ov104_02238240(v1->unk_3C, param0);
Heap_Free(param0);
return;
}
BOOL FrontierScrCmd_BD(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BFFC *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_022384D4(v0);
return 0;
}
BOOL FrontierScrCmd_BE(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BFFC *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_022384DC(v0);
return 0;
}
BOOL FrontierScrCmd_BF(FrontierScriptContext *param0)
{
String *v0;
Pokemon *v1;
Party *v2;
UnkStruct_ov104_0223BFFC *v3;
u8 v4, v5, v6;
u32 v7[9][2];
u32 v8, v9;
u16 v10;
int v11, v12, v13;
UnkStruct_ov104_02230BE4 *v14;
FrontierGraphics *v15;
TrainerInfo *v16;
u8 v17 = FrontierScriptContext_ReadByte(param0);
u8 v18 = FrontierScriptContext_GetVar(param0);
u8 v19 = FrontierScriptContext_GetVar(param0);
u16 *v20 = FrontierScriptContext_TryGetVarPointer(param0);
v3 = sub_0209B978(param0->scriptMan->unk_00);
v14 = sub_0209B970(param0->scriptMan->unk_00);
v15 = FrontierScriptManager_GetGraphics(param0->scriptMan);
switch (v17) {
case 2:
v3->unk_10 = v18;
break;
case 3:
*v20 = v3->unk_418[v18];
break;
case 4:
*v20 = v3->unk_18;
break;
case 5:
if (v3->unk_18 < 9999) {
v3->unk_18++;
}
break;
case 7:
OS_ResetSystem(0);
break;
case 9:
*v20 = sub_020304B0(v3->unk_08);
break;
case 10:
ov104_02238278(v3, 2);
break;
case 12:
*v20 = ov104_0223C0BC(v3, v3->unk_13);
break;
case 14:
*v20 = ov104_02238454(v3);
break;
case 15:
if (v18 == 0) {
v1 = Party_GetPokemonBySlotIndex(v3->unk_70, 0);
} else {
v1 = Party_GetPokemonBySlotIndex(v3->unk_74, 0);
}
*v20 = Pokemon_GetValue(v1, MON_DATA_HELD_ITEM, NULL);
break;
case 16:
*v20 = v3->unk_13;
break;
case 18:
v2 = SaveData_GetParty(v14->saveData);
for (v11 = 0; v11 < 3; v11++) {
v1 = Party_GetPokemonBySlotIndex(v2, v3->unk_2C[v11]);
Pokemon_SetValue(v1, MON_DATA_HELD_ITEM, &v3->unk_412[v11]);
}
break;
case 19:
*v20 = ov104_0223C124(v3);
break;
case 20:
*v20 = ov104_02238464(v3, v18);
break;
case 21:
ov104_022384A8(v3);
break;
case 22:
ov104_022384B4(v3);
break;
case 23:
*v20 = ov104_02238460(v3);
break;
case 24:
*v20 = v3->unk_A74;
break;
case 25:
if (v3->unk_13 == 27) {
v4 = BattleArcade_GetPartySize(v3->unk_10, 1);
v5 = BattleArcade_GetOpponentPartySize(v3->unk_10, 1);
{
VecFx32 v21;
VecFx32 v22;
Sprite *v23;
Sprite *v24;
for (v11 = 0; v11 < v4; v11++) {
v23 = v3->unk_30[v11]->sprite;
v21 = *(Sprite_GetPosition((const Sprite *)v23));
v24 = v3->unk_40[v11]->sprite;
v22 = *(Sprite_GetPosition((const Sprite *)v24));
Sprite_SetPosition(v23, &v22);
Sprite_SetPosition(v24, &v21);
v23 = v3->unk_50[v11]->sprite;
v21 = *(Sprite_GetPosition((const Sprite *)v23));
v24 = v3->unk_60[v11]->sprite;
v22 = *(Sprite_GetPosition((const Sprite *)v24));
Sprite_SetPosition(v23, &v22);
Sprite_SetPosition(v24, &v21);
}
}
}
break;
case 6:
sub_0209BA80(v3);
break;
case 28:
*v20 = BattleArcade_IsMultiPlayerChallenge(v3->unk_10);
break;
case 17:
*v20 = v3->unk_10;
break;
case 29:
ov104_02232EC0(v15);
break;
case 30:
ov104_02232F28(v15);
break;
case 31:
ov104_02238764(v3, v15, v18);
v4 = BattleArcade_GetPartySize(v3->unk_10, 1);
v5 = BattleArcade_GetOpponentPartySize(v3->unk_10, 1);
if (v18 == 0) {
for (v11 = 0; v11 < v4; v11++) {
Sprite_SetExplicitPriority(v3->unk_30[v11]->sprite, 2);
}
} else {
for (v11 = 0; v11 < v5; v11++) {
Sprite_SetExplicitPriority(v3->unk_40[v11]->sprite, 2);
}
}
break;
case 32:
ov104_02238814(v3, v15, v18);
break;
case 33:
ov104_02232FEC(v15);
break;
case 34:
ov104_0223307C(v15);
break;
case 35:
ov104_022388DC(v3, v15, v18);
break;
case 36:
ov104_022389A0(v3, v15, v18);
break;
case 11:
ov104_02238658(v3, v15);
break;
case 37:
if (BattleArcade_IsMultiPlayerChallenge(v3->unk_10) == 1) {
ov104_02238728(v3, v15);
}
break;
case 38:
v6 = BattleArcade_GetCategoryFromEffect(v3->unk_13);
if (v6 == 0) {
StringTemplate_SetFrontierTrainerName(param0->scriptMan->strTemplate, v18, v3->unk_78[ov104_02238498(v3, v19)]);
} else {
if (BattleArcade_IsMultiPlayerChallenge(v3->unk_10) == 0) {
v16 = SaveData_GetTrainerInfo(v14->saveData);
} else {
v16 = CommInfo_TrainerInfo(v19);
}
StringTemplate_SetPlayerName(param0->scriptMan->strTemplate, v18, v16);
}
break;
case 39:
v3->unk_A7A = v19;
ov104_02237C0C(param0, v3, v18);
break;
case 40:
ov104_0222E278(&(v3->unk_F4[0]), v3->unk_78[v3->unk_11], HEAP_ID_FIELD2, 178);
ov104_0222E278(&(v3->unk_F4[1]), v3->unk_78[v3->unk_11 + 7], HEAP_ID_FIELD2, 178);
break;
case 41:
ov104_0223886C(v3, v15, v18, v19);
break;
case 42:
ov104_022388A4(v3, v15, v18, v19);
break;
case 43:
ov104_02238AB4(v18, v19);
break;
case 44:
if (v18 == 0) {
PaletteData_Blend(v15->plttData, 2, 0, 16 * 16, v18, 0x0);
} else {
{
u32 v25;
UnkStruct_ov104_0223C634 *v26;
Sprite *v27;
v26 = ov104_0223D5A8(param0->scriptMan->unk_00, v19);
v25 = ov63_0222D050(v26->sprite);
PaletteData_Blend(v15->plttData, 2, v25 * 16, 16, v18, 0x0);
}
}
break;
case 45:
*v20 = ov104_02239014(v3);
break;
case 46:
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 0);
break;
case 47:
*v20 = v3->unk_1F;
break;
case 48:
*v20 = 0;
if (v3->unk_10 == 0) {
if ((v3->unk_18 + 1) == 21) {
*v20 = 1;
} else if ((v3->unk_18 + 1) == 49) {
*v20 = 2;
}
}
break;
case 49:
ov104_0222E330(v3->unk_330, v3->unk_314, v3->unk_31C, v3->unk_320, NULL, 4, 11, 179);
break;
case 50:
ov104_0223C04C(v3);
break;
case 51:
*v20 = v3->unk_1E;
v3->unk_1E = 1;
break;
case 52:
v3->unk_A7C = 0;
break;
}
return 0;
}
static void ov104_02237C0C(FrontierScriptContext *param0, UnkStruct_ov104_0223BFFC *param1, u16 param2)
{
FrontierScriptManager *v0 = param0->scriptMan;
FrontierGraphics *v1 = FrontierScriptManager_GetGraphics(param0->scriptMan);
ParticleSystem *v2 = FrontierParticleSystem_GetParticleSystem(v1->particleSys, 0);
ParticleSystem_CreateEmitterWithCallback(v2, param2, ov104_02237C30, param1);
return;
}
static void ov104_02237C30(SPLEmitter *param0)
{
VecFx32 v0;
VecFx16 v1;
UnkStruct_ov104_0223BFFC *v2 = ParticleSystem_GetEmitterCallbackParam();
const VecFx32 v3[] = { FX32_ONE * -1, 0, 0 };
if (v2->unk_A7A == 1) {
ParticleSystem_GetEmitterAxis(param0, &v1);
v1.x *= -1;
SPLEmitter_SetAxis(param0, &v1);
SPLEmitter_SetPos(param0, v3);
}
return;
}
BOOL FrontierScrCmd_C0(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BFFC *v0;
u16 *v1 = FrontierScriptContext_TryGetVarPointer(param0);
v0 = sub_0209B978(param0->scriptMan->unk_00);
*v1 = v0->unk_28;
return 0;
}
BOOL FrontierScrCmd_C1(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BFFC *v0;
u16 v1 = FrontierScriptContext_GetVar(param0);
u16 v2 = FrontierScriptContext_GetVar(param0);
u16 *v3 = FrontierScriptContext_TryGetVarPointer(param0);
v0 = sub_0209B978(param0->scriptMan->unk_00);
*v3 = ov104_02238B40(v0, v1, v2);
return 1;
}
BOOL FrontierScrCmd_C2(FrontierScriptContext *param0)
{
u16 v0 = FrontierScriptContext_ReadHalfWord(param0);
param0->data[0] = v0;
FrontierScriptContext_Pause(param0, ov104_02237D18);
return 1;
}
static BOOL ov104_02237D18(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BFFC *v0;
u16 v1 = FrontierScriptContext_TryGetVar(param0, param0->data[0]);
v0 = sub_0209B978(param0->scriptMan->unk_00);
if (v0->unk_A7C >= 2) {
v0->unk_A7C = 0;
return 1;
}
return 0;
}
BOOL FrontierScrCmd_C4(FrontierScriptContext *param0)
{
u16 *v0;
UnkStruct_ov104_0223BFFC *v1;
UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(param0->scriptMan->unk_00);
u16 v3 = FrontierScriptContext_ReadByte(param0);
v1 = sub_0209B978(param0->scriptMan->unk_00);
if (v1 == NULL) {
return 0;
}
v0 = v1->unk_F4[v3].trDataDTO.unk_18;
ov104_022330FC(param0, v0);
return 1;
}
BOOL FrontierScrCmd_C5(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BFFC *v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_02238B88(v0, v0->unk_13);
return 1;
}
BOOL FrontierScrCmd_C6(FrontierScriptContext *param0)
{
UnkStruct_ov104_0223BFFC *v0;
FrontierGraphics *v1 = FrontierScriptManager_GetGraphics(param0->scriptMan);
u16 v2 = FrontierScriptContext_GetVar(param0);
u16 v3 = FrontierScriptContext_GetVar(param0);
u16 v4 = FrontierScriptContext_GetVar(param0);
v0 = sub_0209B978(param0->scriptMan->unk_00);
ov104_022389F4(v0, v1, v2, v3, v4);
return 0;
}

View File

@@ -13,8 +13,7 @@
#include "overlay104/ov104_0222ECE8.h"
#include "overlay104/ov104_02231F74.h"
#include "overlay104/ov104_0223BCBC.h"
#include "overlay104/struct_ov104_02238240.h"
#include "overlay104/struct_ov104_0223BFFC.h"
#include "overlay104/struct_battle_arcade.h"
#include "battle_frontier_stats.h"
#include "bg_window.h"
@@ -38,61 +37,60 @@ typedef struct {
s16 unk_02;
} UnkStruct_ov104_0223FB18;
typedef void (*UnkFuncPtr_ov104_02238B88)(UnkStruct_ov104_0223BFFC *, Party *, u8);
typedef void (*UnkFuncPtr_ov104_02238B88)(BattleArcade *, Party *, u8);
UnkStruct_ov104_0223BFFC *ov104_02237DD8(SaveData *saveData, u16 param1, u8 param2, u16 param3, u16 param4, u16 param5, u16 *param6);
void ov104_0223806C(UnkStruct_ov104_0223BFFC *param0, u16 param1);
static void ov104_02238080(UnkStruct_ov104_0223BFFC *param0);
static void ov104_02238114(UnkStruct_ov104_0223BFFC *param0);
static void ov104_022381C4(UnkStruct_ov104_0223BFFC *param0);
void ov104_02238210(UnkStruct_ov104_0223BFFC *param0);
void ov104_02238240(UnkStruct_ov104_0223BFFC *param0, void *param1);
u16 ov104_02238264(void *param0, u8 param1);
void ov104_022384D4(UnkStruct_ov104_0223BFFC *param0);
void ov104_022384DC(UnkStruct_ov104_0223BFFC *param0);
int ov104_02238538(UnkStruct_ov104_0223BFFC *param0, Party *param1, Party *param2, int param3);
static int ov104_02238584(UnkStruct_ov104_0223BFFC *param0, Party *param1, Party *param2, u8 param3);
BattleArcade *ov104_02237DD8(SaveData *saveData, u16 param1, u8 param2, u16 param3, u16 param4, u16 param5, u16 *param6);
void ov104_0223806C(BattleArcade *param0, u16 param1);
static void ov104_02238080(BattleArcade *param0);
static void ov104_02238114(BattleArcade *param0);
static void ov104_022381C4(BattleArcade *param0);
void ov104_02238210(BattleArcade *param0);
static u16 ov104_02238264(BattleArcadeAppArgs *param0, u8 param1);
void ov104_022384D4(BattleArcade *param0);
void ov104_022384DC(BattleArcade *param0);
int ov104_02238538(BattleArcade *param0, Party *param1, Party *param2, int param3);
static int ov104_02238584(BattleArcade *param0, Party *param1, Party *param2, u8 param3);
void ov104_02238658(void *param0, FrontierGraphics *param1);
void ov104_02238728(void *param0, FrontierGraphics *param1);
void ov104_02238764(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2);
void ov104_02238814(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2);
void ov104_0223886C(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2, u16 param3);
void ov104_022388A4(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2, u16 param3);
void ov104_022388DC(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2);
void ov104_022389A0(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2);
void ov104_022389F4(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2, u16 param3, u16 param4);
void ov104_02238764(BattleArcade *param0, FrontierGraphics *param1, u16 param2);
void ov104_02238814(BattleArcade *param0, FrontierGraphics *param1, u16 param2);
void ov104_0223886C(BattleArcade *param0, FrontierGraphics *param1, u16 param2, u16 param3);
void ov104_022388A4(BattleArcade *param0, FrontierGraphics *param1, u16 param2, u16 param3);
void ov104_022388DC(BattleArcade *param0, FrontierGraphics *param1, u16 param2);
void ov104_022389A0(BattleArcade *param0, FrontierGraphics *param1, u16 param2);
void ov104_022389F4(BattleArcade *param0, FrontierGraphics *param1, u16 param2, u16 param3, u16 param4);
void ov104_02238AB4(u8 param0, u8 param1);
BOOL ov104_02238B40(UnkStruct_ov104_0223BFFC *param0, u16 param1, u16 param2);
void ov104_02238278(UnkStruct_ov104_0223BFFC *param0, u8 param1);
u16 ov104_02238454(UnkStruct_ov104_0223BFFC *param0);
u16 ov104_02238460(UnkStruct_ov104_0223BFFC *param0);
u16 ov104_02238464(UnkStruct_ov104_0223BFFC *param0, u8 param1);
u16 ov104_02238498(UnkStruct_ov104_0223BFFC *param0, u8 param1);
void ov104_022384A8(UnkStruct_ov104_0223BFFC *param0);
void ov104_022384B4(UnkStruct_ov104_0223BFFC *param0);
static void ov104_02238BBC(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02238C18(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02238C9C(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02238D14(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02238D8C(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02238E08(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02238E9C(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02238EF8(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02238F54(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02238FAC(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02238FB8(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02238FC0(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02238FC8(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02238FD0(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02238FD8(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02238FE4(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02238FF0(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02238FFC(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02239004(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02239008(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_0223900C(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
static void ov104_02239010(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2);
u16 ov104_02239014(UnkStruct_ov104_0223BFFC *param0);
BOOL ov104_02238B40(BattleArcade *param0, u16 param1, u16 param2);
void ov104_02238278(BattleArcade *param0, u8 param1);
u16 ov104_02238454(BattleArcade *param0);
u16 ov104_02238460(BattleArcade *param0);
u16 ov104_02238464(BattleArcade *param0, u8 param1);
u16 ov104_02238498(BattleArcade *param0, u8 param1);
void ov104_022384A8(BattleArcade *param0);
void ov104_022384B4(BattleArcade *param0);
static void ov104_02238BBC(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02238C18(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02238C9C(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02238D14(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02238D8C(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02238E08(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02238E9C(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02238EF8(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02238F54(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02238FAC(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02238FB8(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02238FC0(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02238FC8(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02238FD0(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02238FD8(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02238FE4(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02238FF0(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02238FFC(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02239004(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02239008(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_0223900C(BattleArcade *param0, Party *param1, u8 param2);
static void ov104_02239010(BattleArcade *param0, Party *param1, u8 param2);
u16 ov104_02239014(BattleArcade *param0);
void ov104_02239054(Party *param0, Party *param1, int param2, int param3);
static const u16 Unk_ov104_0223FBBA[32][3] = {
@@ -136,7 +134,7 @@ static const u8 Unk_ov104_0223FAF8[][2] = {
{ 0x0, 0x3 }
};
UnkStruct_ov104_0223BFFC *ov104_02237DD8(SaveData *saveData, u16 param1, u8 param2, u16 param3, u16 param4, u16 param5, u16 *param6)
BattleArcade *ov104_02237DD8(SaveData *saveData, u16 param1, u8 param2, u16 param3, u16 param4, u16 param5, u16 *param6)
{
u32 v0, v1;
Party *v2;
@@ -144,11 +142,11 @@ UnkStruct_ov104_0223BFFC *ov104_02237DD8(SaveData *saveData, u16 param1, u8 para
UnkStruct_020304A0 *v4;
u8 v5, v6;
u16 v7, v8;
static UnkStruct_ov104_0223BFFC *v9;
static BattleArcade *v9;
UnkStruct_020305B8 *v10;
v9 = Heap_Alloc(HEAP_ID_FIELD2, sizeof(UnkStruct_ov104_0223BFFC));
MI_CpuClear8(v9, sizeof(UnkStruct_ov104_0223BFFC));
v9 = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleArcade));
MI_CpuClear8(v9, sizeof(BattleArcade));
v9->unk_08 = sub_020304A0(saveData);
v9->saveData = saveData;
@@ -156,44 +154,44 @@ UnkStruct_ov104_0223BFFC *ov104_02237DD8(SaveData *saveData, u16 param1, u8 para
v9->unk_70 = Party_New(HEAP_ID_FIELD2);
v9->unk_74 = Party_New(HEAP_ID_FIELD2);
v9->unk_A80 = param6;
v9->unk_13 = 32;
v9->activeEffect = 32;
v4 = v9->unk_08;
v10 = sub_020305B8(saveData);
if (param1 == 0) {
v9->unk_10 = param2;
v9->challengeType = param2;
v9->unk_11 = 0;
v9->unk_1C = 3;
v9->unk_12 = 0;
sub_02030494(v4);
if (v9->unk_10 == 3) {
if (v9->challengeType == 3) {
v5 = SystemVars_GetWiFiFrontierCleared(SaveData_GetVarsFlags(v9->saveData));
} else {
v5 = (u8)sub_02030600(v10, 8, v9->unk_10, 0, NULL);
v5 = (u8)sub_02030600(v10, 8, v9->challengeType, 0, NULL);
}
if (v5 == 1) {
v9->unk_18 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v9->saveData), BattleFrontierStats_GetArcadeLatestStreakIndex(v9->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetArcadeLatestStreakIndex(v9->unk_10)));
v9->currentStreak = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v9->saveData), BattleFrontierStats_GetArcadeLatestStreakIndex(v9->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetArcadeLatestStreakIndex(v9->challengeType)));
} else {
v9->unk_18 = 0;
v9->currentStreak = 0;
}
v9->unk_1A = (u16)(v9->unk_18 / 7);
v9->unk_1A = (u16)(v9->currentStreak / 7);
v9->unk_24 = 0;
v9->unk_2C[0] = param3;
v9->unk_2C[1] = param4;
v9->unk_2C[2] = param5;
} else {
v9->unk_10 = (u8)sub_0203054C(v4, 0, 0, 0, NULL);
v9->challengeType = (u8)sub_0203054C(v4, 0, 0, 0, NULL);
v9->unk_11 = (u8)sub_0203054C(v4, 2, 0, 0, NULL);
v9->unk_1C = (u8)sub_0203054C(v4, 3, 0, 0, NULL);
v9->unk_12 = (u8)sub_0203054C(v4, 1, 0, 0, NULL);
v9->unk_18 = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v9->saveData), BattleFrontierStats_GetArcadeLatestStreakIndex(v9->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetArcadeLatestStreakIndex(v9->unk_10)));
v9->unk_1A = (u16)(v9->unk_18 / 7);
v9->currentStreak = BattleFrontierStats_GetStat(SaveData_GetBattleFrontier(v9->saveData), BattleFrontierStats_GetArcadeLatestStreakIndex(v9->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetArcadeLatestStreakIndex(v9->challengeType)));
v9->unk_1A = (u16)(v9->currentStreak / 7);
for (v7 = 0; v7 < 3; v7++) {
v9->unk_2C[v7] = (u8)sub_0203054C(v4, 6, v7, 0, NULL);
@@ -206,7 +204,7 @@ UnkStruct_ov104_0223BFFC *ov104_02237DD8(SaveData *saveData, u16 param1, u8 para
}
v2 = SaveData_GetParty(v9->saveData);
v6 = BattleArcade_GetPartySize(v9->unk_10, 0);
v6 = BattleArcade_GetPartySize(v9->challengeType, 0);
for (v7 = 0; v7 < v6; v7++) {
Party_AddPokemon(v9->unk_70, Party_GetPokemonBySlotIndex(v2, v9->unk_2C[v7]));
@@ -223,14 +221,14 @@ UnkStruct_ov104_0223BFFC *ov104_02237DD8(SaveData *saveData, u16 param1, u8 para
}
}
if (BattleArcade_IsMultiPlayerChallenge(v9->unk_10) == 1) {
if (BattleArcade_IsMultiPlayerChallenge(v9->challengeType) == 1) {
ov104_0222E630(v9->saveData);
}
return v9;
}
void ov104_0223806C(UnkStruct_ov104_0223BFFC *param0, u16 param1)
void ov104_0223806C(BattleArcade *param0, u16 param1)
{
if (param1 == 0) {
ov104_02238080(param0);
@@ -241,11 +239,11 @@ void ov104_0223806C(UnkStruct_ov104_0223BFFC *param0, u16 param1)
return;
}
static void ov104_02238080(UnkStruct_ov104_0223BFFC *param0)
static void ov104_02238080(BattleArcade *param0)
{
ov104_0223BD28(param0->unk_10, ov104_0223C124(param0), param0->unk_78, 7 * 2);
ov104_0223BD28(param0->challengeType, ov104_0223C124(param0), param0->unk_78, 7 * 2);
ov104_0222E4BC(BattleArcade_GetOpponentPartySize(param0->unk_10, 1), param0->unk_78[param0->unk_11], param0->unk_78[param0->unk_11 + 7], param0->unk_314, param0->unk_330, param0->unk_31C, param0->unk_320, BattleArcade_IsMultiPlayerChallenge(param0->unk_10));
ov104_0222E4BC(BattleArcade_GetOpponentPartySize(param0->challengeType, 1), param0->unk_78[param0->unk_11], param0->unk_78[param0->unk_11 + 7], param0->unk_314, param0->unk_330, param0->unk_31C, param0->unk_320, BattleArcade_IsMultiPlayerChallenge(param0->challengeType));
u16 v0 = ov104_0223C124(param0);
@@ -259,7 +257,7 @@ static void ov104_02238080(UnkStruct_ov104_0223BFFC *param0)
return;
}
static void ov104_02238114(UnkStruct_ov104_0223BFFC *param0)
static void ov104_02238114(BattleArcade *param0)
{
int v1;
FrontierPokemonDataDTO v4[6];
@@ -292,7 +290,7 @@ static void ov104_02238114(UnkStruct_ov104_0223BFFC *param0)
return;
}
static void ov104_022381C4(UnkStruct_ov104_0223BFFC *param0)
static void ov104_022381C4(BattleArcade *param0)
{
u8 v0;
u16 v1;
@@ -311,7 +309,7 @@ static void ov104_022381C4(UnkStruct_ov104_0223BFFC *param0)
return;
}
void ov104_02238210(UnkStruct_ov104_0223BFFC *param0)
void ov104_02238210(BattleArcade *param0)
{
int v0;
@@ -327,7 +325,7 @@ void ov104_02238210(UnkStruct_ov104_0223BFFC *param0)
Heap_Free(param0->unk_74);
}
MI_CpuClear8(param0, sizeof(UnkStruct_ov104_0223BFFC));
MI_CpuClear8(param0, sizeof(BattleArcade));
Heap_Free(param0);
param0 = NULL;
@@ -335,31 +333,24 @@ void ov104_02238210(UnkStruct_ov104_0223BFFC *param0)
return;
}
void ov104_02238240(UnkStruct_ov104_0223BFFC *param0, void *param1)
void BattleArcade_StoreAppResults(BattleArcade *battleArcade, BattleArcadeAppArgs *args)
{
int v0;
UnkStruct_ov104_02238240 *v1 = param1;
for (v0 = 0; v0 < 6; v0++) {
param0->unk_418[v0] = ov104_02238264(param1, v0);
for (int i = 0; i < 6; i++) {
battleArcade->appCursorPos[i] = ov104_02238264(args, i);
}
return;
}
u16 ov104_02238264(void *param0, u8 param1)
static u16 ov104_02238264(BattleArcadeAppArgs *args, u8 i)
{
UnkStruct_ov104_02238240 *v0 = param0;
if (param1 >= 6) {
if (i >= 6) {
GF_ASSERT(0);
return 0;
}
return v0->unk_38;
return args->cursorPos;
}
void ov104_02238278(UnkStruct_ov104_0223BFFC *param0, u8 param1)
void ov104_02238278(BattleArcade *param0, u8 param1)
{
u16 v0;
u8 v1;
@@ -371,9 +362,9 @@ void ov104_02238278(UnkStruct_ov104_0223BFFC *param0, u8 param1)
UnkStruct_020304A0 *v8 = param0->unk_08;
UnkStruct_020305B8 *v9 = sub_020305B8(param0->saveData);
v1 = BattleArcade_GetOpponentPartySize(param0->unk_10, 1);
v1 = BattleArcade_GetOpponentPartySize(param0->challengeType, 1);
v2[0] = param0->unk_10;
v2[0] = param0->challengeType;
sub_020304CC(param0->unk_08, 0, 0, 0, v2);
sub_020304B8(param0->unk_08, 1);
@@ -385,15 +376,15 @@ void ov104_02238278(UnkStruct_ov104_0223BFFC *param0, u8 param1)
v2[0] = param0->unk_12;
sub_020304CC(param0->unk_08, 1, 0, 0, v2);
BattleFrontierStats_SetStat(SaveData_GetBattleFrontier(param0->saveData), BattleFrontierStats_GetArcadeLatestStreakIndex(param0->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetArcadeLatestStreakIndex(param0->unk_10)), param0->unk_18);
BattleFrontierStats_SetStat(SaveData_GetBattleFrontier(param0->saveData), BattleFrontierStats_GetArcadeLatestStreakIndex(param0->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetArcadeLatestStreakIndex(param0->challengeType)), param0->currentStreak);
if (param1 != 2) {
v5 = BattleFrontierStats_SetIfBetter(SaveData_GetBattleFrontier(param0->saveData), BattleFrontierStats_GetArcadeCurrentStreakIndex(param0->unk_10), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetArcadeCurrentStreakIndex(param0->unk_10)), param0->unk_18);
v5 = BattleFrontierStats_SetIfBetter(SaveData_GetBattleFrontier(param0->saveData), BattleFrontierStats_GetArcadeCurrentStreakIndex(param0->challengeType), BattleFrontierStats_GetHostFriendIdx(BattleFrontierStats_GetArcadeCurrentStreakIndex(param0->challengeType)), param0->currentStreak);
v2[0] = param0->unk_2F;
sub_020305CC(v9, 8, param0->unk_10, 0, v2);
sub_020305CC(v9, 8, param0->challengeType, 0, v2);
if (param0->unk_10 == 3) {
if (param0->challengeType == 3) {
BattleFrontierStats_SetStat(SaveData_GetBattleFrontier(param0->saveData), STAT_ARCADE_WFC_STREAK_ACTIVE, BattleFrontierStats_GetHostFriendIdx(STAT_ARCADE_WFC_STREAK_ACTIVE), param0->unk_2F);
}
}
@@ -427,18 +418,18 @@ void ov104_02238278(UnkStruct_ov104_0223BFFC *param0, u8 param1)
return;
}
u16 ov104_02238454(UnkStruct_ov104_0223BFFC *param0)
u16 ov104_02238454(BattleArcade *param0)
{
param0->unk_11++;
return param0->unk_11;
}
u16 ov104_02238460(UnkStruct_ov104_0223BFFC *param0)
u16 ov104_02238460(BattleArcade *param0)
{
return param0->unk_11;
}
u16 ov104_02238464(UnkStruct_ov104_0223BFFC *param0, u8 param1)
u16 ov104_02238464(BattleArcade *param0, u8 param1)
{
FrontierTrainerDataDTO v0;
u8 v2 = ov104_02238498(param0, param1);
@@ -448,12 +439,12 @@ u16 ov104_02238464(UnkStruct_ov104_0223BFFC *param0, u8 param1)
return BattleTower_GetObjectIDFromTrainerClass(v0.trainerType);
}
u16 ov104_02238498(UnkStruct_ov104_0223BFFC *param0, u8 param1)
u16 ov104_02238498(BattleArcade *param0, u8 param1)
{
return param0->unk_11 + (param1 * 7);
}
void ov104_022384A8(UnkStruct_ov104_0223BFFC *param0)
void ov104_022384A8(BattleArcade *param0)
{
u16 v0[4];
int v1;
@@ -462,7 +453,7 @@ void ov104_022384A8(UnkStruct_ov104_0223BFFC *param0)
return;
}
void ov104_022384B4(UnkStruct_ov104_0223BFFC *param0)
void ov104_022384B4(BattleArcade *param0)
{
param0->unk_2F = 1;
@@ -476,18 +467,18 @@ void ov104_022384B4(UnkStruct_ov104_0223BFFC *param0)
return;
}
void ov104_022384D4(UnkStruct_ov104_0223BFFC *param0)
void ov104_022384D4(BattleArcade *param0)
{
ov104_0223C04C(param0);
return;
}
void ov104_022384DC(UnkStruct_ov104_0223BFFC *param0)
void ov104_022384DC(BattleArcade *param0)
{
int v0, v1, v2;
u8 v3;
ov104_0222E4BC(BattleArcade_GetOpponentPartySize(param0->unk_10, 1), param0->unk_78[param0->unk_11], param0->unk_78[param0->unk_11 + 7], param0->unk_314, param0->unk_330, param0->unk_31C, param0->unk_320, BattleArcade_IsMultiPlayerChallenge(param0->unk_10));
ov104_0222E4BC(BattleArcade_GetOpponentPartySize(param0->challengeType, 1), param0->unk_78[param0->unk_11], param0->unk_78[param0->unk_11 + 7], param0->unk_314, param0->unk_330, param0->unk_31C, param0->unk_320, BattleArcade_IsMultiPlayerChallenge(param0->challengeType));
for (v0 = 0; v0 < 4; v0++) {
(void)0;
@@ -522,13 +513,13 @@ static const u8 Unk_ov104_0223FAFE[5][2] = {
{ 0xA, 0x0 }
};
int ov104_02238538(UnkStruct_ov104_0223BFFC *param0, Party *param1, Party *param2, int param3)
int ov104_02238538(BattleArcade *param0, Party *param1, Party *param2, int param3)
{
u8 v0;
int v1;
Pokemon *v2;
int v3 = 0;
v0 = BattleArcade_GetPartySize(param0->unk_10, 0);
v0 = BattleArcade_GetPartySize(param0->challengeType, 0);
v3 += ov104_02238584(param0, param1, param2, v0);
@@ -542,7 +533,7 @@ int ov104_02238538(UnkStruct_ov104_0223BFFC *param0, Party *param1, Party *param
return v3;
}
static int ov104_02238584(UnkStruct_ov104_0223BFFC *param0, Party *param1, Party *param2, u8 param3)
static int ov104_02238584(BattleArcade *param0, Party *param1, Party *param2, u8 param3)
{
u32 v0;
u8 v1;
@@ -572,7 +563,7 @@ static int ov104_02238584(UnkStruct_ov104_0223BFFC *param0, Party *param1, Party
}
}
if (BattleArcade_IsMultiPlayerChallenge(param0->unk_10) == 1) {
if (BattleArcade_IsMultiPlayerChallenge(param0->challengeType) == 1) {
for (v3 = 0; v3 < param3; v3++) {
v5 = Party_GetPokemonBySlotIndex(param2, v3);
@@ -601,19 +592,19 @@ static int ov104_02238584(UnkStruct_ov104_0223BFFC *param0, Party *param1, Party
void ov104_02238658(void *param0, FrontierGraphics *param1)
{
NARC *v0;
UnkStruct_ov104_0223BFFC *v1 = (UnkStruct_ov104_0223BFFC *)param0;
BattleArcade *v1 = (BattleArcade *)param0;
if (v1->unk_13 != 32) {
if (v1->activeEffect != 32) {
v0 = NARC_ctor(NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, HEAP_ID_94);
Graphics_LoadTilesToBgLayerFromOpenNARC(v0, Unk_ov104_0223FBBA[v1->unk_13][0], param1->bgConfig, 2, 0, 0, 1, HEAP_ID_94);
Graphics_LoadTilemapToBgLayerFromOpenNARC(v0, Unk_ov104_0223FBBA[v1->unk_13][1], param1->bgConfig, 2, 0, 0, 1, HEAP_ID_94);
Graphics_LoadTilesToBgLayerFromOpenNARC(v0, Unk_ov104_0223FBBA[v1->activeEffect][0], param1->bgConfig, 2, 0, 0, 1, HEAP_ID_94);
Graphics_LoadTilemapToBgLayerFromOpenNARC(v0, Unk_ov104_0223FBBA[v1->activeEffect][1], param1->bgConfig, 2, 0, 0, 1, HEAP_ID_94);
{
NNSG2dPaletteData *v2;
void *v3;
v3 = Graphics_GetPlttDataFromOpenNARC(v0, Unk_ov104_0223FBBA[v1->unk_13][2], &v2, HEAP_ID_94);
v3 = Graphics_GetPlttDataFromOpenNARC(v0, Unk_ov104_0223FBBA[v1->activeEffect][2], &v2, HEAP_ID_94);
DC_FlushRange(v2->pRawData, v2->szByte);
GX_BeginLoadBGExtPltt();
@@ -635,7 +626,7 @@ void ov104_02238658(void *param0, FrontierGraphics *param1)
void ov104_02238728(void *param0, FrontierGraphics *param1)
{
UnkStruct_ov104_0223BFFC *v1 = (UnkStruct_ov104_0223BFFC *)param0;
BattleArcade *v1 = (BattleArcade *)param0;
NARC *v0 = NARC_ctor(NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, HEAP_ID_94);
Graphics_LoadTilemapToBgLayerFromOpenNARC(v0, 53, param1->bgConfig, 3, 0, 0, 1, HEAP_ID_94);
@@ -659,14 +650,14 @@ static const UnkStruct_ov104_0223FB18 Unk_ov104_0223FB28[] = {
{ 0xD2, 0x59 }
};
void ov104_02238764(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2)
void ov104_02238764(BattleArcade *param0, FrontierGraphics *param1, u16 param2)
{
u8 v0, v1;
int v2;
Pokemon *v3;
v0 = BattleArcade_GetPartySize(param0->unk_10, 1);
v1 = BattleArcade_GetOpponentPartySize(param0->unk_10, 1);
v0 = BattleArcade_GetPartySize(param0->challengeType, 1);
v1 = BattleArcade_GetOpponentPartySize(param0->challengeType, 1);
if (param2 == 0) {
for (v2 = 0; v2 < v0; v2++) {
@@ -685,13 +676,13 @@ void ov104_02238764(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1,
return;
}
void ov104_02238814(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2)
void ov104_02238814(BattleArcade *param0, FrontierGraphics *param1, u16 param2)
{
u8 v0, v1;
int v2;
v0 = BattleArcade_GetPartySize(param0->unk_10, 1);
v1 = BattleArcade_GetOpponentPartySize(param0->unk_10, 1);
v0 = BattleArcade_GetPartySize(param0->challengeType, 1);
v1 = BattleArcade_GetOpponentPartySize(param0->challengeType, 1);
if (param2 == 0) {
for (v2 = 0; v2 < v0; v2++) {
@@ -706,9 +697,9 @@ void ov104_02238814(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1,
return;
}
void ov104_0223886C(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2, u16 param3)
void ov104_0223886C(BattleArcade *param0, FrontierGraphics *param1, u16 param2, u16 param3)
{
u8 v0 = BattleArcade_GetPartySize(param0->unk_10, 1);
u8 v0 = BattleArcade_GetPartySize(param0->challengeType, 1);
if (param3 >= v0) {
return;
@@ -723,9 +714,9 @@ void ov104_0223886C(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1,
return;
}
void ov104_022388A4(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2, u16 param3)
void ov104_022388A4(BattleArcade *param0, FrontierGraphics *param1, u16 param2, u16 param3)
{
u8 v0 = BattleArcade_GetOpponentPartySize(param0->unk_10, 1);
u8 v0 = BattleArcade_GetOpponentPartySize(param0->challengeType, 1);
if (param3 >= v0) {
return;
@@ -740,14 +731,14 @@ void ov104_022388A4(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1,
return;
}
void ov104_022388DC(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2)
void ov104_022388DC(BattleArcade *param0, FrontierGraphics *param1, u16 param2)
{
u8 v0, v1;
int v2;
Pokemon *v3;
v0 = BattleArcade_GetPartySize(param0->unk_10, 1);
v1 = BattleArcade_GetOpponentPartySize(param0->unk_10, 1);
v0 = BattleArcade_GetPartySize(param0->challengeType, 1);
v1 = BattleArcade_GetOpponentPartySize(param0->challengeType, 1);
if (param2 == 0) {
for (v2 = 0; v2 < v0; v2++) {
@@ -774,13 +765,13 @@ void ov104_022388DC(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1,
return;
}
void ov104_022389A0(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2)
void ov104_022389A0(BattleArcade *param0, FrontierGraphics *param1, u16 param2)
{
u8 v0, v1;
int v2;
v0 = BattleArcade_GetPartySize(param0->unk_10, 1);
v1 = BattleArcade_GetOpponentPartySize(param0->unk_10, 1);
v0 = BattleArcade_GetPartySize(param0->challengeType, 1);
v1 = BattleArcade_GetOpponentPartySize(param0->challengeType, 1);
if (param2 == 0) {
for (v2 = 0; v2 < v0; v2++) {
@@ -795,14 +786,14 @@ void ov104_022389A0(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1,
return;
}
void ov104_022389F4(UnkStruct_ov104_0223BFFC *param0, FrontierGraphics *param1, u16 param2, u16 slot, u16 param4)
void ov104_022389F4(BattleArcade *param0, FrontierGraphics *param1, u16 param2, u16 slot, u16 param4)
{
u32 item;
u8 v1, v2;
Pokemon *mon;
v1 = BattleArcade_GetPartySize(param0->unk_10, 1);
v2 = BattleArcade_GetOpponentPartySize(param0->unk_10, 1);
v1 = BattleArcade_GetPartySize(param0->challengeType, 1);
v2 = BattleArcade_GetOpponentPartySize(param0->challengeType, 1);
if (param2 == 0) {
if (slot >= v1) {
@@ -879,7 +870,7 @@ void ov104_02238AB4(u8 param0, u8 param1)
return;
}
BOOL ov104_02238B40(UnkStruct_ov104_0223BFFC *param0, u16 param1, u16 param2)
BOOL ov104_02238B40(BattleArcade *param0, u16 param1, u16 param2)
{
int v0;
@@ -1045,7 +1036,7 @@ static void *Unk_ov104_02241A38[] = {
ov104_02239008
};
void ov104_02238B88(UnkStruct_ov104_0223BFFC *param0, u8 param1)
void ov104_02238B88(BattleArcade *param0, u8 param1)
{
u8 v0;
Party *v1;
@@ -1053,10 +1044,10 @@ void ov104_02238B88(UnkStruct_ov104_0223BFFC *param0, u8 param1)
if (param1 < 9) {
v1 = param0->unk_74;
v0 = BattleArcade_GetOpponentPartySize(param0->unk_10, 1);
v0 = BattleArcade_GetOpponentPartySize(param0->challengeType, 1);
} else {
v1 = param0->unk_70;
v0 = BattleArcade_GetPartySize(param0->unk_10, 1);
v0 = BattleArcade_GetPartySize(param0->challengeType, 1);
}
v2 = Unk_ov104_02241A38[param1];
@@ -1065,7 +1056,7 @@ void ov104_02238B88(UnkStruct_ov104_0223BFFC *param0, u8 param1)
return;
}
static void ov104_02238BBC(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02238BBC(BattleArcade *param0, Party *param1, u8 param2)
{
int v0;
u32 v1, v2;
@@ -1084,7 +1075,7 @@ static void ov104_02238BBC(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_02238C18(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02238C18(BattleArcade *param0, Party *param1, u8 param2)
{
int v0, v1;
u32 v2, v3, v4, v5;
@@ -1113,7 +1104,7 @@ static void ov104_02238C18(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_02238C9C(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02238C9C(BattleArcade *param0, Party *param1, u8 param2)
{
int v0, v1;
u32 v2, v3, v4, v5;
@@ -1142,7 +1133,7 @@ static void ov104_02238C9C(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_02238D14(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02238D14(BattleArcade *param0, Party *param1, u8 param2)
{
int v0, v1;
u32 v2, v3, v4, v5;
@@ -1171,7 +1162,7 @@ static void ov104_02238D14(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_02238D8C(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02238D8C(BattleArcade *param0, Party *param1, u8 param2)
{
u8 v0;
int v1, v2;
@@ -1206,7 +1197,7 @@ static void ov104_02238D8C(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_02238E08(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02238E08(BattleArcade *param0, Party *param1, u8 param2)
{
u8 v0;
int v1, v2;
@@ -1244,7 +1235,7 @@ static void ov104_02238E08(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_02238E9C(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02238E9C(BattleArcade *param0, Party *param1, u8 param2)
{
int v0, v1;
const u16 *v2;
@@ -1274,7 +1265,7 @@ static void ov104_02238E9C(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_02238EF8(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02238EF8(BattleArcade *param0, Party *param1, u8 param2)
{
int v0, v1;
const u16 *v2;
@@ -1304,7 +1295,7 @@ static void ov104_02238EF8(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_02238F54(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02238F54(BattleArcade *param0, Party *param1, u8 param2)
{
int v0;
u32 v1, v2;
@@ -1329,7 +1320,7 @@ static void ov104_02238F54(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_02238FAC(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02238FAC(BattleArcade *param0, Party *param1, u8 param2)
{
Pokemon *v0;
@@ -1337,7 +1328,7 @@ static void ov104_02238FAC(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_02238FB8(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02238FB8(BattleArcade *param0, Party *param1, u8 param2)
{
Pokemon *v0;
@@ -1345,7 +1336,7 @@ static void ov104_02238FB8(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_02238FC0(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02238FC0(BattleArcade *param0, Party *param1, u8 param2)
{
Pokemon *v0;
@@ -1353,7 +1344,7 @@ static void ov104_02238FC0(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_02238FC8(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02238FC8(BattleArcade *param0, Party *param1, u8 param2)
{
Pokemon *v0;
@@ -1361,7 +1352,7 @@ static void ov104_02238FC8(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_02238FD0(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02238FD0(BattleArcade *param0, Party *param1, u8 param2)
{
Pokemon *v0;
@@ -1369,7 +1360,7 @@ static void ov104_02238FD0(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_02238FD8(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02238FD8(BattleArcade *param0, Party *param1, u8 param2)
{
Pokemon *v0;
@@ -1377,7 +1368,7 @@ static void ov104_02238FD8(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_02238FE4(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02238FE4(BattleArcade *param0, Party *param1, u8 param2)
{
Pokemon *v0;
@@ -1388,7 +1379,7 @@ static void ov104_02238FE4(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_02238FF0(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02238FF0(BattleArcade *param0, Party *param1, u8 param2)
{
Pokemon *v0;
@@ -1399,7 +1390,7 @@ static void ov104_02238FF0(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_02238FFC(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02238FFC(BattleArcade *param0, Party *param1, u8 param2)
{
Pokemon *v0;
@@ -1407,13 +1398,13 @@ static void ov104_02238FFC(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_02239004(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02239004(BattleArcade *param0, Party *param1, u8 param2)
{
Pokemon *v0;
return;
}
static void ov104_02239008(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02239008(BattleArcade *param0, Party *param1, u8 param2)
{
u16 v0;
Pokemon *v1;
@@ -1421,19 +1412,19 @@ static void ov104_02239008(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 p
return;
}
static void ov104_0223900C(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_0223900C(BattleArcade *param0, Party *param1, u8 param2)
{
Pokemon *v0;
return;
}
static void ov104_02239010(UnkStruct_ov104_0223BFFC *param0, Party *param1, u8 param2)
static void ov104_02239010(BattleArcade *param0, Party *param1, u8 param2)
{
Pokemon *v0;
return;
}
u16 ov104_02239014(UnkStruct_ov104_0223BFFC *param0)
u16 ov104_02239014(BattleArcade *param0)
{
u8 v0;
u16 v1;
@@ -1442,7 +1433,7 @@ u16 ov104_02239014(UnkStruct_ov104_0223BFFC *param0)
v1 = param0->unk_1A;
if ((param0->unk_10 == 0) || (param0->unk_10 == 1)) {
if ((param0->challengeType == 0) || (param0->challengeType == 1)) {
if (v1 >= 8) {
v0 = v2[8];
} else {
@@ -1456,8 +1447,8 @@ u16 ov104_02239014(UnkStruct_ov104_0223BFFC *param0)
}
}
if (param0->unk_10 == 0) {
if ((param0->unk_18 == 21) || (param0->unk_18 == 49)) {
if (param0->challengeType == 0) {
if ((param0->currentStreak == 21) || (param0->currentStreak == 49)) {
v0 = 20;
}
}

View File

@@ -9,8 +9,8 @@
#include "struct_defs/battle_frontier_trainer_data.h"
#include "overlay104/ov104_0222DCE0.h"
#include "overlay104/struct_battle_factory.h"
#include "overlay104/struct_ov104_02230BE4.h"
#include "overlay104/struct_ov104_0223ADA0.h"
#include "overlay104/struct_ov104_0224028C.h"
#include "communication_information.h"
@@ -85,11 +85,11 @@ void ov104_0223A860(u8 param0, int param1, u16 param2[], u8 param3);
u8 BattleFactory_GetPartySize(u8 param0);
u8 ov104_0223AA74(u8 param0, BOOL param1);
static u32 ov104_0223AD74(u8 param0);
u8 ov104_0223ADA0(UnkStruct_ov104_0223ADA0 *param0);
void ov104_0223ADB0(UnkStruct_ov104_0223ADA0 *param0);
void ov104_0223AE30(UnkStruct_ov104_0223ADA0 *param0);
static u16 ov104_0223AEE4(UnkStruct_ov104_0223ADA0 *param0);
u16 ov104_0223AF34(UnkStruct_ov104_0223ADA0 *param0);
u8 ov104_0223ADA0(BattleFactory *param0);
void ov104_0223ADB0(BattleFactory *param0);
void ov104_0223AE30(BattleFactory *param0);
static u16 ov104_0223AEE4(BattleFactory *param0);
u16 ov104_0223AF34(BattleFactory *param0);
void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *param0);
static int ov104_0223A7F4(u8 param0, int param1, int param2)
@@ -329,7 +329,7 @@ void ov104_0223AB0C(u8 param0, u16 param1, u8 param2, FrontierPokemonDataDTO *pa
return;
}
FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104_02230BE4 *param1)
FieldBattleDTO *ov104_0223ABA0(BattleFactory *param0, UnkStruct_ov104_02230BE4 *param1)
{
int v0;
u32 v1;
@@ -338,13 +338,13 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104
Pokemon *v5;
FrontierTrainerDataDTO v6;
v2 = BattleFactory_GetPartySize(param0->unk_04);
v3 = ov104_0223AA74(param0->unk_04, 0);
v2 = BattleFactory_GetPartySize(param0->challengeType);
v3 = ov104_0223AA74(param0->challengeType, 0);
Party_HealAllMembers(param0->unk_4D4);
Party_HealAllMembers(param0->unk_4D8);
v4 = FieldBattleDTO_New(HEAP_ID_FIELD2, ov104_0223AD74(param0->unk_04));
v4 = FieldBattleDTO_New(HEAP_ID_FIELD2, ov104_0223AD74(param0->challengeType));
FieldBattleDTO_InitFromGameState(v4, NULL, param1->saveData, param1->unk_1C, param1->journalEntry, param1->bagCursor, param1->unk_20);
v4->background = BACKGROUND_BATTLE_FACTORY;
@@ -364,7 +364,7 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104
Heap_Free(BattleTower_GetTrainerData(&v6, param0->unk_18[param0->unk_06], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
ov104_0222E284(v4, &v6, v3, 1, 11);
Party_InitWithCapacity(v4->parties[1], ov104_0223AA74(param0->unk_04, 0));
Party_InitWithCapacity(v4->parties[1], ov104_0223AA74(param0->challengeType, 0));
for (v0 = 0; v0 < 4; v0++) {
v4->trainer[v0].header.aiMask = ov104_0223AEE4(param0);
@@ -379,7 +379,7 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104
Heap_Free(v5);
switch (param0->unk_04) {
switch (param0->challengeType) {
case 2:
case 3:
FieldBattleDTO_CopyPlayerInfoToTrainerData(v4);
@@ -389,7 +389,7 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104
Heap_Free(BattleTower_GetTrainerData(&v6, param0->unk_18[param0->unk_06 + 7], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
ov104_0222E284(v4, &v6, v3, 3, 11);
Party_InitWithCapacity(v4->parties[3], ov104_0223AA74(param0->unk_04, 0));
Party_InitWithCapacity(v4->parties[3], ov104_0223AA74(param0->challengeType, 0));
v5 = Pokemon_New(HEAP_ID_FIELD2);
@@ -421,7 +421,7 @@ static u32 ov104_0223AD74(u8 param0)
return (0x0 | 0x1) | 0x80;
}
u8 ov104_0223ADA0(UnkStruct_ov104_0223ADA0 *param0)
u8 ov104_0223ADA0(BattleFactory *param0)
{
if (param0->unk_05 == 0) {
return 50;
@@ -430,7 +430,7 @@ u8 ov104_0223ADA0(UnkStruct_ov104_0223ADA0 *param0)
return 100;
}
void ov104_0223ADB0(UnkStruct_ov104_0223ADA0 *param0)
void ov104_0223ADB0(BattleFactory *param0)
{
int v0;
Pokemon *v1;
@@ -450,7 +450,7 @@ void ov104_0223ADB0(UnkStruct_ov104_0223ADA0 *param0)
return;
}
void ov104_0223AE30(UnkStruct_ov104_0223ADA0 *param0)
void ov104_0223AE30(BattleFactory *param0)
{
int v0, v1;
Pokemon *v2;
@@ -481,11 +481,11 @@ BOOL BattleFactory_IsMultiplayerChallenge(u8 challengeType)
return challengeType == FRONTIER_CHALLENGE_MULTI || challengeType == FRONTIER_CHALLENGE_MULTI_WFC;
}
static u16 ov104_0223AEE4(UnkStruct_ov104_0223ADA0 *param0)
static u16 ov104_0223AEE4(BattleFactory *param0)
{
u16 v0, v1;
if (param0->unk_04 == 0) {
if (param0->challengeType == 0) {
if ((param0->unk_18[param0->unk_06] == 309) || (param0->unk_18[param0->unk_06] == 310)) {
return 0x1 | 0x2 | 0x4;
}
@@ -508,11 +508,11 @@ static u16 ov104_0223AEE4(UnkStruct_ov104_0223ADA0 *param0)
return v0;
}
u16 ov104_0223AF34(UnkStruct_ov104_0223ADA0 *param0)
u16 ov104_0223AF34(BattleFactory *param0)
{
u16 v0 = param0->unk_0E;
if (BattleFactory_IsMultiplayerChallenge(param0->unk_04) == 1) {
if (BattleFactory_IsMultiplayerChallenge(param0->challengeType) == 1) {
if (param0->unk_57E > param0->unk_0E) {
v0 = param0->unk_57E;
}

View File

@@ -8,8 +8,8 @@
#include "struct_defs/battle_frontier.h"
#include "overlay104/ov104_0222DCE0.h"
#include "overlay104/struct_battle_castle.h"
#include "overlay104/struct_ov104_02230BE4.h"
#include "overlay104/struct_ov104_0223BA10.h"
#include "battle_frontier_stats.h"
#include "bg_window.h"
@@ -29,18 +29,18 @@
static int ov104_0223B6F4(u8 param0, int param1, int param2);
void ov104_0223B760(u8 param0, int param1, u16 param2[], u8 param3);
u8 ov104_0223B7DC(u8 param0, BOOL param1);
FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104_02230BE4 *param1);
FieldBattleDTO *ov104_0223B810(BattleCastle *param0, UnkStruct_ov104_02230BE4 *param1);
static u32 ov104_0223B9E4(u8 param0);
u8 ov104_0223BA10(UnkStruct_ov104_0223BA10 *param0);
u8 ov104_0223BA10(BattleCastle *param0);
void ov104_0223BA24(Party *param0);
void ov104_0223BAB8(UnkStruct_ov104_0223BA10 *param0);
void ov104_0223BA7C(UnkStruct_ov104_0223BA10 *param0, Pokemon *param1);
void ov104_0223BAA0(UnkStruct_ov104_0223BA10 *param0, Party *param1, Pokemon *param2);
static u16 ov104_0223BB10(UnkStruct_ov104_0223BA10 *param0);
u16 ov104_0223BB60(UnkStruct_ov104_0223BA10 *param0);
void ov104_0223BAB8(BattleCastle *param0);
void ov104_0223BA7C(BattleCastle *param0, Pokemon *param1);
void ov104_0223BAA0(BattleCastle *param0, Party *param1, Pokemon *param2);
static u16 ov104_0223BB10(BattleCastle *param0);
u16 ov104_0223BB60(BattleCastle *param0);
u16 ov104_0223BC24(u16 param0);
void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *param0);
void ov104_0223BB84(BgConfig *param0, UnkStruct_ov104_0223BA10 *param1, u32 param2);
void ov104_0223BB84(BgConfig *param0, BattleCastle *param1, u32 param2);
static void ov104_0223BBC4(u16 *param0, u16 param1);
static const struct {
@@ -151,7 +151,7 @@ u8 ov104_0223B7DC(u8 param0, BOOL param1)
return 3;
}
FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104_02230BE4 *param1)
FieldBattleDTO *ov104_0223B810(BattleCastle *param0, UnkStruct_ov104_02230BE4 *param1)
{
int v0;
u32 v1;
@@ -159,11 +159,11 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104
Pokemon *v6;
FrontierTrainerDataDTO v7;
u8 v2 = BattleCastle_GetPartySize(param0->unk_10, 0);
u8 v3 = ov104_0223B7DC(param0->unk_10, 0);
u8 v2 = BattleCastle_GetPartySize(param0->challengeType, 0);
u8 v3 = ov104_0223B7DC(param0->challengeType, 0);
Party_HealAllMembers(param0->unk_2C);
FieldBattleDTO *v5 = FieldBattleDTO_New(HEAP_ID_FIELD2, ov104_0223B9E4(param0->unk_10));
FieldBattleDTO *v5 = FieldBattleDTO_New(HEAP_ID_FIELD2, ov104_0223B9E4(param0->challengeType));
FieldBattleDTO_InitFromGameState(v5, NULL, param1->saveData, param1->unk_1C, param1->journalEntry, param1->bagCursor, param1->unk_20);
v5->background = BACKGROUND_BATTLE_CASTLE;
@@ -190,7 +190,7 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104
Heap_Free(BattleTower_GetTrainerData(&v7, param0->unk_30[param0->unk_11], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
ov104_0222E284(v5, &v7, v3, 1, 11);
Party_InitWithCapacity(v5->parties[1], ov104_0223B7DC(param0->unk_10, 0));
Party_InitWithCapacity(v5->parties[1], ov104_0223B7DC(param0->challengeType, 0));
for (v0 = 0; v0 < 4; v0++) {
v5->trainer[v0].header.aiMask = ov104_0223BB10(param0);
@@ -205,7 +205,7 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104
Heap_Free(v6);
switch (param0->unk_10) {
switch (param0->challengeType) {
case 2:
case 3:
FieldBattleDTO_CopyPlayerInfoToTrainerData(v5);
@@ -215,7 +215,7 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104
Heap_Free(BattleTower_GetTrainerData(&v7, param0->unk_30[param0->unk_11 + 7], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
ov104_0222E284(v5, &v7, v3, 3, 11);
Party_InitWithCapacity(v5->parties[3], ov104_0223B7DC(param0->unk_10, 0));
Party_InitWithCapacity(v5->parties[3], ov104_0223B7DC(param0->challengeType, 0));
v6 = Pokemon_New(HEAP_ID_FIELD2);
@@ -247,7 +247,7 @@ static u32 ov104_0223B9E4(u8 param0)
return (0x0 | 0x1) | 0x80;
}
u8 ov104_0223BA10(UnkStruct_ov104_0223BA10 *param0)
u8 ov104_0223BA10(BattleCastle *param0)
{
return 50;
}
@@ -284,20 +284,20 @@ void ov104_0223BA24(Party *param0)
return;
}
void ov104_0223BA7C(UnkStruct_ov104_0223BA10 *param0, Pokemon *param1)
void ov104_0223BA7C(BattleCastle *param0, Pokemon *param1)
{
Pokemon_UpdateAfterCatch(param1, SaveData_GetTrainerInfo(param0->saveData), 4, 0, 0, 11);
return;
}
void ov104_0223BAA0(UnkStruct_ov104_0223BA10 *param0, Party *param1, Pokemon *param2)
void ov104_0223BAA0(BattleCastle *param0, Party *param1, Pokemon *param2)
{
ov104_0223BA7C(param0, param2);
Party_AddPokemon(param1, param2);
return;
}
void ov104_0223BAB8(UnkStruct_ov104_0223BA10 *param0)
void ov104_0223BAB8(BattleCastle *param0)
{
int v0, v1;
u8 v2;
@@ -305,7 +305,7 @@ void ov104_0223BAB8(UnkStruct_ov104_0223BA10 *param0)
Party_Init(param0->unk_2C);
v2 = ov104_0223B7DC(param0->unk_10, 1);
v2 = ov104_0223B7DC(param0->challengeType, 1);
v3 = Pokemon_New(HEAP_ID_FIELD2);
for (v0 = 0; v0 < v2; v0++) {
@@ -318,11 +318,11 @@ void ov104_0223BAB8(UnkStruct_ov104_0223BA10 *param0)
return;
}
static u16 ov104_0223BB10(UnkStruct_ov104_0223BA10 *param0)
static u16 ov104_0223BB10(BattleCastle *param0)
{
u16 v0, v1;
if (param0->unk_10 == 0) {
if (param0->challengeType == 0) {
if ((param0->unk_30[param0->unk_11] == 313) || (param0->unk_30[param0->unk_11] == 314)) {
return 0x1 | 0x2 | 0x4;
}
@@ -345,11 +345,11 @@ static u16 ov104_0223BB10(UnkStruct_ov104_0223BA10 *param0)
return v0;
}
u16 ov104_0223BB60(UnkStruct_ov104_0223BA10 *param0)
u16 ov104_0223BB60(BattleCastle *param0)
{
u16 v0 = param0->unk_16;
if (BattleCastle_IsMultiPlayerChallenge(param0->unk_10) == 1) {
if (BattleCastle_IsMultiPlayerChallenge(param0->challengeType) == 1) {
if (param0->unk_A12 > param0->unk_16) {
v0 = param0->unk_A12;
}
@@ -358,7 +358,7 @@ u16 ov104_0223BB60(UnkStruct_ov104_0223BA10 *param0)
return v0;
}
void ov104_0223BB84(BgConfig *param0, UnkStruct_ov104_0223BA10 *param1, u32 param2)
void ov104_0223BB84(BgConfig *param0, BattleCastle *param1, u32 param2)
{
int v0;
u16 v1[30];

View File

@@ -8,8 +8,8 @@
#include "struct_defs/battle_frontier_trainer_data.h"
#include "overlay104/ov104_0222DCE0.h"
#include "overlay104/struct_battle_arcade.h"
#include "overlay104/struct_ov104_02230BE4.h"
#include "overlay104/struct_ov104_0223BFFC.h"
#include "communication_information.h"
#include "communication_system.h"
@@ -24,15 +24,15 @@
#include "string_gf.h"
#include "trainer_info.h"
FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104_02230BE4 *param1);
FieldBattleDTO *ov104_0223BDD8(BattleArcade *param0, UnkStruct_ov104_02230BE4 *param1);
static u32 ov104_0223BFD0(u8 param0);
u8 ov104_0223BFFC(UnkStruct_ov104_0223BFFC *param0);
void ov104_0223C04C(UnkStruct_ov104_0223BFFC *param0);
void ov104_0223C010(UnkStruct_ov104_0223BFFC *param0, Pokemon *param1);
void ov104_0223C034(UnkStruct_ov104_0223BFFC *param0, Party *param1, Pokemon *param2);
u16 ov104_0223C0BC(UnkStruct_ov104_0223BFFC *param0, u8 param1);
static u16 ov104_0223C0D0(UnkStruct_ov104_0223BFFC *param0);
u16 ov104_0223C124(UnkStruct_ov104_0223BFFC *param0);
u8 ov104_0223BFFC(BattleArcade *param0);
void ov104_0223C04C(BattleArcade *param0);
void ov104_0223C010(BattleArcade *param0, Pokemon *param1);
void ov104_0223C034(BattleArcade *param0, Party *param1, Pokemon *param2);
u16 ov104_0223C0BC(BattleArcade *param0, u8 param1);
static u16 ov104_0223C0D0(BattleArcade *param0);
u16 ov104_0223C124(BattleArcade *param0);
void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *param0);
static int ov104_0223BCBC(u8 param0, int param1, int param2);
void ov104_0223BD28(u8 param0, int param1, u16 param2[], u8 param3);
@@ -155,7 +155,7 @@ u8 BattleArcade_GetOpponentPartySize(u8 challengeType, BOOL includeBothOpponents
return ARCADE_PARTY_SIZE_SOLO;
}
FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104_02230BE4 *param1)
FieldBattleDTO *ov104_0223BDD8(BattleArcade *param0, UnkStruct_ov104_02230BE4 *param1)
{
int v0;
u8 v2, v3, v4;
@@ -164,9 +164,9 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104
Party *v12;
Party *v13;
v2 = BattleArcade_GetPartySize(param0->unk_10, 0);
v3 = BattleArcade_GetOpponentPartySize(param0->unk_10, 0);
FieldBattleDTO *v5 = FieldBattleDTO_New(HEAP_ID_FIELD2, ov104_0223BFD0(param0->unk_10));
v2 = BattleArcade_GetPartySize(param0->challengeType, 0);
v3 = BattleArcade_GetOpponentPartySize(param0->challengeType, 0);
FieldBattleDTO *v5 = FieldBattleDTO_New(HEAP_ID_FIELD2, ov104_0223BFD0(param0->challengeType));
FieldBattleDTO_InitFromGameState(v5, NULL, param1->saveData, param1->unk_1C, param1->journalEntry, param1->bagCursor, param1->unk_20);
@@ -177,7 +177,7 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104
v12 = param0->unk_70;
v13 = param0->unk_74;
if (param0->unk_13 == 27) {
if (param0->activeEffect == 27) {
v12 = param0->unk_74;
v13 = param0->unk_70;
}
@@ -204,7 +204,7 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104
Heap_Free(v8);
ov104_0222E284(v5, &v7, v3, 1, 11);
Party_InitWithCapacity(v5->parties[1], BattleArcade_GetOpponentPartySize(param0->unk_10, 0));
Party_InitWithCapacity(v5->parties[1], BattleArcade_GetOpponentPartySize(param0->challengeType, 0));
for (v0 = 0; v0 < 4; v0++) {
v5->trainer[v0].header.aiMask = ov104_0223C0D0(param0);
@@ -219,7 +219,7 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104
Heap_Free(v6);
switch (param0->unk_10) {
switch (param0->challengeType) {
case 2:
case 3:
FieldBattleDTO_CopyPlayerInfoToTrainerData(v5);
@@ -230,7 +230,7 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104
Heap_Free(v8);
ov104_0222E284(v5, &v7, v3, 3, 11);
Party_InitWithCapacity(v5->parties[3], BattleArcade_GetOpponentPartySize(param0->unk_10, 0));
Party_InitWithCapacity(v5->parties[3], BattleArcade_GetOpponentPartySize(param0->challengeType, 0));
v6 = Pokemon_New(HEAP_ID_FIELD2);
@@ -265,7 +265,7 @@ static u32 ov104_0223BFD0(u8 param0)
return (0x0 | 0x1) | 0x80;
}
u8 ov104_0223BFFC(UnkStruct_ov104_0223BFFC *param0)
u8 ov104_0223BFFC(BattleArcade *param0)
{
return 50;
}
@@ -275,20 +275,20 @@ BOOL BattleArcade_IsMultiPlayerChallenge(u8 challengeType)
return challengeType == FRONTIER_CHALLENGE_MULTI || challengeType == FRONTIER_CHALLENGE_MULTI_WFC;
}
void ov104_0223C010(UnkStruct_ov104_0223BFFC *param0, Pokemon *param1)
void ov104_0223C010(BattleArcade *param0, Pokemon *param1)
{
Pokemon_UpdateAfterCatch(param1, SaveData_GetTrainerInfo(param0->saveData), 4, 0, 0, 11);
return;
}
void ov104_0223C034(UnkStruct_ov104_0223BFFC *param0, Party *param1, Pokemon *param2)
void ov104_0223C034(BattleArcade *param0, Party *param1, Pokemon *param2)
{
ov104_0223C010(param0, param2);
Party_AddPokemon(param1, param2);
return;
}
void ov104_0223C04C(UnkStruct_ov104_0223BFFC *param0)
void ov104_0223C04C(BattleArcade *param0)
{
u32 v0;
int v1, v2;
@@ -299,7 +299,7 @@ void ov104_0223C04C(UnkStruct_ov104_0223BFFC *param0)
Party_Init(param0->unk_74);
v3 = BattleArcade_GetOpponentPartySize(param0->unk_10, 1);
v3 = BattleArcade_GetOpponentPartySize(param0->challengeType, 1);
v5 = Pokemon_New(HEAP_ID_FIELD2);
for (v1 = 0; v1 < v3; v1++) {
@@ -316,7 +316,7 @@ void ov104_0223C04C(UnkStruct_ov104_0223BFFC *param0)
return;
}
u16 ov104_0223C0BC(UnkStruct_ov104_0223BFFC *param0, u8 param1)
u16 ov104_0223C0BC(BattleArcade *param0, u8 param1)
{
u16 v0, v1;
@@ -343,11 +343,11 @@ u16 ov104_0223C0BC(UnkStruct_ov104_0223BFFC *param0, u8 param1)
return v0;
}
static u16 ov104_0223C0D0(UnkStruct_ov104_0223BFFC *param0)
static u16 ov104_0223C0D0(BattleArcade *param0)
{
u16 v0, v1;
if (param0->unk_10 == 0) {
if (param0->challengeType == 0) {
if ((param0->unk_78[param0->unk_11] == 311) || (param0->unk_78[param0->unk_11] == 312)) {
return 0x1 | 0x2 | 0x4;
}
@@ -370,11 +370,11 @@ static u16 ov104_0223C0D0(UnkStruct_ov104_0223BFFC *param0)
return v0;
}
u16 ov104_0223C124(UnkStruct_ov104_0223BFFC *param0)
u16 ov104_0223C124(BattleArcade *param0)
{
u16 v0 = param0->unk_1A;
if (BattleArcade_IsMultiPlayerChallenge(param0->unk_10) == 1) {
if (BattleArcade_IsMultiPlayerChallenge(param0->challengeType) == 1) {
if (param0->unk_A76 > param0->unk_1A) {
v0 = param0->unk_A76;
}
@@ -389,7 +389,7 @@ u8 BattleArcade_GetCategoryFromEffect(u8 effect)
return ARCADE_EFFECT_CATEGORY_FOE;
} else if (effect < ARCADE_EFFECT_SUNNY_BATTLE) {
return ARCADE_EFFECT_CATEGORY_ALLY;
} else if (effect < ARCADE_EFFECT_RANDOMIZE_CURSOR) {
} else if (effect < ARCADE_EFFECT_SWAP_MONS) {
return ARCADE_EFFECT_CATEGORY_ENV;
}

View File

@@ -4,7 +4,7 @@
#include <string.h>
#include "constants/battle_tower.h"
#include "generated/battle_tower_functions.h"
#include "constants/battle_tower_functions.h"
#include "generated/battle_tower_modes.h"
#include "generated/game_records.h"
#include "generated/items.h"