Document battle tower lobby (#802)

This commit is contained in:
Viperio 2025-10-29 23:59:46 +01:00 committed by GitHub
parent 6c51ad190f
commit 06aaecdfc5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
65 changed files with 1767 additions and 1730 deletions

View File

@ -1,7 +1,10 @@
#include "generated/accessories.h"
#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"
#include "generated/days_of_week.h"
#include "generated/fade_types.h"
#include "generated/game_records.h"
@ -1441,20 +1444,20 @@
.long \offset-.-4
.endm
.macro ScrCmd_0F2 arg0, arg1, arg2, arg3
.macro StartBattleClient commType, arg1, arg2, destVarID
.short 242
.short \arg0
.short \commType
.short \arg1
.short \arg2
.short \arg3
.short \destVarID
.endm
.macro ScrCmd_0F3 arg0, arg1, arg2, arg3
.macro StartBattleServer commType, arg1, arg2, destVarID
.short 243
.short \arg0
.short \commType
.short \arg1
.short \arg2
.short \arg3
.short \destVarID
.endm
.macro ScrCmd_Unused_0F4 arg0
@ -1795,12 +1798,12 @@
.short \destVarID
.endm
.macro ScrCmd_135 arg0
.macro ScrCmd_135 syncNo
.short 309
.short \arg0
.short \syncNo
.endm
.macro ScrCmd_136
.macro ClearReceivedTempDataAllPlayers
.short 310
.endm
@ -1924,7 +1927,7 @@
.short 335
.endm
.macro ScrCmd_150
.macro EndCommunication
.short 336
.endm
@ -2684,25 +2687,25 @@
.short \arg1
.endm
.macro ScrCmd_1DA
.macro SetBattleTowerNull
.short 474
.endm
.macro ScrCmd_1DB arg0, arg1
.macro InitBattleTower arg0, challengeMode
.short 475
.short \arg0
.short \arg1
.short \challengeMode
.endm
.macro ScrCmd_1DC
.macro FreeBattleTower
.short 476
.endm
.macro ScrCmd_1DD arg0, arg1, arg2
.macro CallBattleTowerFunction functionIndex, functionArgument, destVar
.short 477
.short \arg0
.short \arg1
.short \arg2
.short \functionIndex
.short \functionArgument
.short \destVar
.endm
.macro ScrCmd_1DE arg0, arg1, arg2, arg3
@ -2891,12 +2894,12 @@
.byte \arg0
.endm
.macro ScrCmd_1FF arg0, arg1, arg2, arg3
.macro PrintBattleFrontierBanlist messageID, numRequiredEligiblePokemon, unused2, unused3
.short 511
.byte \arg0
.short \arg1
.short \arg2
.byte \arg3
.byte \messageID
.short \numRequiredEligiblePokemon
.short \unused2
.byte \unused3
.endm
.macro GetPreviousMapID destVarID
@ -2943,9 +2946,9 @@
.short 518
.endm
.macro ScrCmd_207 arg0
.macro GetCurNetID destVarID
.short 519
.short \arg0
.short \destVarID
.endm
.macro DrawPokemonPreview species, gender
@ -4711,7 +4714,7 @@
.short \destVar
.endm
.macro ScrCmd_330
.macro LogLinkInfoInWiFiHistory
.short 816
.endm

View File

@ -0,0 +1,43 @@
BATTLE_TOWER_FUNCTION_CHECK_ENOUGH_VALID_POKEMON = 1
BATTLE_TOWER_FUNCTION_UNK_02
BATTLE_TOWER_FUNCTION_UNK_03
BATTLE_TOWER_FUNCTION_UNK_04
BATTLE_TOWER_FUNCTION_SET_COMMUNICATION_CLUB_ACCESSIBLE
BATTLE_TOWER_FUNCTION_CLEAR_COMMUNICATION_CLUB_ACCESSIBLE
BATTLE_TOWER_FUNCTION_UNK_08 = 8
BATTLE_TOWER_FUNCTION_UNK_09
BATTLE_TOWER_FUNCTION_UNK_10
BATTLE_TOWER_FUNCTION_UNK_11
BATTLE_TOWER_FUNCTION_UNK_12
BATTLE_TOWER_FUNCTION_UNK_14 = 14
BATTLE_TOWER_FUNCTION_UNK_15
BATTLE_TOWER_FUNCTION_UNK_16
BATTLE_TOWER_FUNCTION_UNK_30 = 30
BATTLE_TOWER_FUNCTION_UNK_31
BATTLE_TOWER_FUNCTION_CHECK_DUPLICATE_SPECIES_AND_HELD_ITEMS
BATTLE_TOWER_FUNCTION_UNK_33
BATTLE_TOWER_FUNCTION_UNK_34
BATTLE_TOWER_FUNCTION_UNK_35
BATTLE_TOWER_FUNCTION_UNK_36
BATTLE_TOWER_FUNCTION_UNK_37
BATTLE_TOWER_FUNCTION_UNK_38
BATTLE_TOWER_FUNCTION_UNK_39
BATTLE_TOWER_FUNCTION_UNK_40
BATTLE_TOWER_FUNCTION_UNK_41
BATTLE_TOWER_FUNCTION_UNK_42
BATTLE_TOWER_FUNCTION_GET_CHALLENGE_MODE
BATTLE_TOWER_FUNCTION_UNK_44
BATTLE_TOWER_FUNCTION_UNK_45
BATTLE_TOWER_FUNCTION_UNK_47 = 47
BATTLE_TOWER_FUNCTION_UNK_48
BATTLE_TOWER_FUNCTION_UNK_49
BATTLE_TOWER_FUNCTION_UNK_50
BATTLE_TOWER_FUNCTION_UNK_51
BATTLE_TOWER_FUNCTION_UNK_52
BATTLE_TOWER_FUNCTION_GET_SLOT_INDEX
BATTLE_TOWER_FUNCTION_UNK_54
BATTLE_TOWER_FUNCTION_UNK_55
BATTLE_TOWER_FUNCTION_UNK_56
BATTLE_TOWER_FUNCTION_UNK_57
BATTLE_TOWER_FUNCTION_UNK_58
BATTLE_TOWER_FUNCTION_CHECK_IS_NULL = 100

View File

@ -0,0 +1,7 @@
BATTLE_TOWER_MODE_SINGLE
BATTLE_TOWER_MODE_DOUBLE
BATTLE_TOWER_MODE_MULTI
BATTLE_TOWER_MODE_LINK_MULTI
BATTLE_TOWER_MODE_WIFI
BATTLE_TOWER_MODE_5
BATTLE_TOWER_MODE_6

View File

@ -0,0 +1,5 @@
COMM_CLUB_RET_0
COMM_CLUB_RET_CANCEL
COMM_CLUB_RET_2
COMM_CLUB_RET_ERROR
COMM_CLUB_RET_4

View File

@ -38,10 +38,13 @@ 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' },
'bg_event_types': { 'type': 'enum', 'tag': 'BgEventType' },
'catching_show_points_category': { 'type': 'enum', 'tag': 'CatchingShowPointsCategory' },
'comm_club_ret_codes': { 'type': 'enum', 'tag': 'CommClubRetCode' },
'days_of_week': { 'type': 'enum', 'tag': 'DayOfWeek' },
'distribution_events': { 'type': 'enum', 'tag': 'DistributionEvent' },
'egg_groups': { 'type': 'enum', 'tag': 'EggGroup' },

View File

@ -253,7 +253,7 @@ FLAG_UNK_0x00FB
FLAG_UNK_0x00FC
FLAG_UNK_0x00FD
FLAG_UNK_0x00FE
FLAG_UNK_0x00FF
FLAG_TALKED_TO_STATS_JUDGE
FLAG_UNK_0x0100
FLAG_UNK_0x0101
FLAG_UNK_0x0102

View File

@ -110,7 +110,7 @@ typedef struct FieldSystem_t {
DynamicTerrainHeightManager *dynamicTerrainHeightMan;
MapPropManager *mapPropManager;
HoneyTreeShakeList *unk_A8;
UnkStruct_0204AFC4 *unk_AC;
BattleTower *battleTower;
const BattleRegulation *unk_B0;
PokedexMemory *pokedexMemory;
BOOL unk_B8;

View File

@ -23,7 +23,7 @@ BOOL ScrCmd_331(ScriptContext *param0);
BOOL ScrCmd_332(ScriptContext *param0);
BOOL ScrCmd_338(ScriptContext *param0);
BOOL ScrCmd_339(ScriptContext *param0);
BOOL ScrCmd_330(ScriptContext *param0);
BOOL ScrCmd_LogLinkInfoInWiFiHistory(ScriptContext *ctx);
BOOL ScrCmd_333(ScriptContext *param0);
#endif // POKEPLATINUM_OV5_021F6454_H

View File

@ -3,12 +3,12 @@
#include "field/field_system_decl.h"
void ov7_0224B414(FieldSystem *fieldSystem, int param1, int param2, int param3);
void ov7_0224B450(void);
u32 ov7_0224B460(void);
void ov7_0224B47C(FieldSystem *fieldSystem, int param1, int param2, int param3);
void ov7_0224B4B8(void);
void CommClub_StartBattleClient(FieldSystem *fieldSystem, int param1, int param2, int param3);
void CommClub_PrintChooseJoinMsg(void);
u32 CommClub_CheckWindowOpenClient(void);
void CommClub_StartBattleServer(FieldSystem *fieldSystem, int param1, int param2, int param3);
void ov7_0224B4B8(void);
u32 CommClub_CheckWindowOpenServer(void);
BOOL ov7_0224B4E4(void);
#endif // POKEPLATINUM_OV7_02249960_H

View File

@ -5,10 +5,10 @@
#include "savedata.h"
void ov104_022394A4(UnkStruct_0204AFC4 *param0, SaveData *saveData);
u16 ov104_02239588(UnkStruct_0204AFC4 *param0, u16 param1);
void ov104_022395A0(UnkStruct_0204AFC4 *param0, u16 param1);
u16 ov104_022395B4(UnkStruct_0204AFC4 *param0);
u16 ov104_022395D8(UnkStruct_0204AFC4 *param0);
void ov104_022394A4(BattleTower *battleTower, SaveData *saveData);
u16 ov104_02239588(BattleTower *battleTower, u16 param1);
void ov104_022395A0(BattleTower *battleTower, u16 param1);
u16 ov104_022395B4(BattleTower *battleTower);
u16 ov104_022395D8(BattleTower *battleTower);
#endif // POKEPLATINUM_OV104_022394A4_H

View File

@ -10,11 +10,11 @@
#include "field_battle_data_transfer.h"
#include "savedata.h"
BOOL ov104_0223A0C4(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_0223A348 *param1, u16 param2, int param3, u16 *param4, u16 *param5, UnkStruct_0204B404 *param6, int heapID);
BOOL ov104_0223A0C4(BattleTower *battleTower, UnkStruct_ov104_0223A348 *param1, u16 param2, int param3, u16 *param4, u16 *param5, UnkStruct_0204B404 *param6, int heapID);
void ov104_0223A30C(SaveData *saveData, UnkStruct_ov104_0223A348 *param1, const u8 param2);
FieldBattleDTO *ov104_0223A580(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_02230BE4 *param1);
void ov104_0223A734(UnkStruct_0204AFC4 *param0, u16 param1);
u16 ov104_0223A750(UnkStruct_0204AFC4 *param0, const u16 *param1);
FieldBattleDTO *ov104_0223A580(BattleTower *battleTower, UnkStruct_ov104_02230BE4 *param1);
void ov104_0223A734(BattleTower *battleTower, u16 param1);
u16 ov104_0223A750(BattleTower *battleTower, const u16 *param1);
int ov104_0223A790(u8 param0);
#endif // POKEPLATINUM_OV104_0223A0C4_H

View File

@ -34,6 +34,8 @@
#define INIT_IVS_RANDOM 32
#define BATTLE_FRONTIER_BANLIST_SIZE 18
enum EvolutionClass {
EVO_CLASS_BY_LEVEL = 0,
EVO_CLASS_BY_TRADE,

View File

@ -9,14 +9,14 @@
#include "location.h"
typedef struct UnkStruct_0204AFC4_t {
typedef struct BattleTower {
int unk_00;
int heapID;
u32 unk_08;
u8 unk_0C;
u8 unk_0D;
u8 unk_0E;
u8 unk_0F;
u8 partySize;
u8 challengeMode;
u8 unk_10_0 : 1;
u8 unk_10_1 : 2;
u8 unk_10_3 : 1;
@ -53,6 +53,6 @@ typedef struct UnkStruct_0204AFC4_t {
u8 unk_8D7;
u16 unk_8D8;
u16 unk_8DA;
} UnkStruct_0204AFC4;
} BattleTower;
#endif // POKEPLATINUM_STRUCT_0204AFC4_H

View File

@ -16,7 +16,7 @@ int sub_02036590(void);
void sub_02036594(u8 param0, u8 param1);
int CommList_Get(int param0, u8 param1);
void CommList_Refresh(void);
void sub_020365F4(void);
void CommTool_ClearReceivedTempDataAllPlayers(void);
BOOL sub_02036614(int param0, const void *param1);
const void *sub_0203664C(int param0);
void sub_02036670(int param0, int param1, void *param2, void *param3);

View File

@ -3,7 +3,7 @@
#include "struct_defs/wi_fi_history.h"
void sub_02038F8C(WiFiHistory *wiFiHistory);
void WiFiHistory_FlagGeonetLinkInfo(WiFiHistory *wiFiHistory);
void WiFiHistory_FlagGeonetCommunicatedWith(WiFiHistory *wiFiHistory, int param1, int param2, int param3);
#endif // POKEPLATINUM_UNK_02038F8C_H

View File

@ -3,24 +3,24 @@
#include "field_script_context.h"
BOOL ScrCmd_1DB(ScriptContext *param0);
BOOL ScrCmd_1DA(ScriptContext *param0);
BOOL ScrCmd_1DC(ScriptContext *param0);
BOOL ScrCmd_1DD(ScriptContext *param0);
BOOL ScrCmd_1DE(ScriptContext *param0);
BOOL ScrCmd_1DF(ScriptContext *param0);
BOOL ScrCmd_1E0(ScriptContext *param0);
BOOL ScrCmd_1E1(ScriptContext *param0);
BOOL ScrCmd_1E2(ScriptContext *param0);
BOOL ScrCmd_1E3(ScriptContext *param0);
BOOL ScrCmd_1E4(ScriptContext *param0);
BOOL ScrCmd_ShowBattlePoints(ScriptContext *param0);
BOOL ScrCmd_HideBattlePoints(ScriptContext *param0);
BOOL ScrCmd_UpdateBPDisplay(ScriptContext *param0);
BOOL ScrCmd_297(ScriptContext *param0);
BOOL ScrCmd_298(ScriptContext *param0);
BOOL ScrCmd_299(ScriptContext *param0);
BOOL ScrCmd_29A(ScriptContext *param0);
BOOL ScrCmd_29B(ScriptContext *param0);
BOOL ScrCmd_InitBattleTower(ScriptContext *ctx);
BOOL ScrCmd_SetBattleTowerNull(ScriptContext *ctx);
BOOL ScrCmd_FreeBattleTower(ScriptContext *ctx);
BOOL ScrCmd_CallBattleTowerFunction(ScriptContext *ctx);
BOOL ScrCmd_1DE(ScriptContext *ctx);
BOOL ScrCmd_1DF(ScriptContext *ctx);
BOOL ScrCmd_1E0(ScriptContext *ctx);
BOOL ScrCmd_1E1(ScriptContext *ctx);
BOOL ScrCmd_1E2(ScriptContext *ctx);
BOOL ScrCmd_1E3(ScriptContext *ctx);
BOOL ScrCmd_1E4(ScriptContext *ctx);
BOOL ScrCmd_ShowBattlePoints(ScriptContext *ctx);
BOOL ScrCmd_HideBattlePoints(ScriptContext *ctx);
BOOL ScrCmd_UpdateBPDisplay(ScriptContext *ctx);
BOOL ScrCmd_297(ScriptContext *ctx);
BOOL ScrCmd_298(ScriptContext *ctx);
BOOL ScrCmd_299(ScriptContext *ctx);
BOOL ScrCmd_29A(ScriptContext *ctx);
BOOL ScrCmd_29B(ScriptContext *ctx);
#endif // POKEPLATINUM_UNK_020494DC_H

View File

@ -10,41 +10,41 @@
#include "journal.h"
#include "savedata.h"
u16 sub_02049D08(u16 param0);
u16 BattleTower_GetPartySizeForChallengeMode(u16 param0);
BOOL sub_02049EC4(u16 param0, SaveData *saveData, u8 param2);
void sub_02049F8C(void);
void sub_02049F98(UnkStruct_0202D060 *param0);
BOOL sub_02049FA0(UnkStruct_0202D060 *param0);
void sub_02049FA8(FieldSystem *fieldSystem);
void sub_02049FE8(FieldSystem *fieldSystem);
void BattleTower_SetCommunicationClubAccessible(FieldSystem *fieldSystem);
void BattleTower_ClearCommunicationClubAccessible(FieldSystem *fieldSystem);
u16 sub_02049FF8(SaveData *saveData, u16 param1);
void sub_0204A030(SaveData *saveData, u8 param1);
u16 sub_0204A050(SaveData *saveData);
u16 sub_0204A064(SaveData *saveData);
u16 sub_0204A100(SaveData *saveData);
void sub_0204A110(UnkStruct_0204AFC4 **param0);
UnkStruct_0204AFC4 *sub_0204A124(SaveData *saveData, u16 param1, u16 param2);
void sub_0204A32C(UnkStruct_0204AFC4 *param0);
void sub_0204A358(UnkStruct_0204AFC4 *param0, FieldTask *param1, void **param2);
BOOL sub_0204A378(UnkStruct_0204AFC4 *param0, void **param1, SaveData *saveData);
int sub_0204A410(UnkStruct_0204AFC4 *param0, SaveData *saveData);
void sub_0204A4C8(UnkStruct_0204AFC4 *param0, SaveData *saveData);
u16 sub_0204A578(UnkStruct_0204AFC4 *param0);
BOOL sub_0204A57C(UnkStruct_0204AFC4 *param0);
void sub_0204A660(UnkStruct_0204AFC4 *param0, SaveData *saveData);
void sub_0204A7A4(UnkStruct_0204AFC4 *param0, SaveData *saveData, JournalEntry *param2);
void sub_0204A8C8(UnkStruct_0204AFC4 *param0);
void sub_0204A97C(UnkStruct_0204AFC4 *param0);
u16 sub_0204A9E0(UnkStruct_0204AFC4 *param0, u16 param1);
u16 sub_0204A9F8(UnkStruct_0204AFC4 *param0);
u16 sub_0204A9FC(UnkStruct_0204AFC4 *param0);
u16 sub_0204AA04(UnkStruct_0204AFC4 *param0);
u16 sub_0204AA7C(UnkStruct_0204AFC4 *param0, SaveData *saveData);
u16 sub_0204AABC(UnkStruct_0204AFC4 *param0, SaveData *saveData, u8 param2);
u16 sub_0204AB68(UnkStruct_0204AFC4 *param0, SaveData *saveData);
u16 sub_0204ABA0(UnkStruct_0204AFC4 *param0, SaveData *saveData);
u16 sub_0204ABF4(UnkStruct_0204AFC4 *param0, SaveData *saveData);
void BattleTower_SetNull(BattleTower **battleTower);
BattleTower *BattleTower_Init(SaveData *saveData, u16 param1, u16 challengeMode);
void BattleTower_Free(BattleTower *battleTower);
void sub_0204A358(BattleTower *battleTower, FieldTask *param1, void **param2);
BOOL sub_0204A378(BattleTower *battleTower, void **param1, SaveData *saveData);
int BattleTower_CheckDuplicateSpeciesAndHeldItems(BattleTower *battleTower, SaveData *saveData);
void sub_0204A4C8(BattleTower *battleTower, SaveData *saveData);
u16 sub_0204A578(BattleTower *battleTower);
BOOL sub_0204A57C(BattleTower *battleTower);
void sub_0204A660(BattleTower *battleTower, SaveData *saveData);
void sub_0204A7A4(BattleTower *battleTower, SaveData *saveData, JournalEntry *param2);
void sub_0204A8C8(BattleTower *battleTower);
void sub_0204A97C(BattleTower *battleTower);
u16 sub_0204A9E0(BattleTower *battleTower, u16 param1);
u16 BattleTower_GetChallengeMode(BattleTower *battleTower);
u16 sub_0204A9FC(BattleTower *battleTower);
u16 sub_0204AA04(BattleTower *battleTower);
u16 sub_0204AA7C(BattleTower *battleTower, SaveData *saveData);
u16 sub_0204AABC(BattleTower *battleTower, SaveData *saveData, u8 param2);
u16 sub_0204AB68(BattleTower *battleTower, SaveData *saveData);
u16 sub_0204ABA0(BattleTower *battleTower, SaveData *saveData);
u16 sub_0204ABF4(BattleTower *battleTower, SaveData *saveData);
u8 sub_0204AE84(u16 param0);
u16 sub_0204AEC0(UnkStruct_0204AFC4 *param0);
u16 sub_0204AEC0(BattleTower *battleTower);
#endif // POKEPLATINUM_UNK_02049D08_H

View File

@ -10,16 +10,16 @@
#include "savedata.h"
#include "string_template.h"
StringTemplate *sub_0204AEE8(SaveData *saveData, u16 param1, u16 param2, u8 param3, u8 *param4);
StringTemplate *BattleFrontier_GetStringWithSeenBannedSpecies(SaveData *saveData, u16 param1, u16 param2, u8 param3, u8 *param4);
u16 sub_0204AF9C(u8 param0);
u16 sub_0204AFC4(FieldSystem *fieldSystem, const u16 *param1);
u16 sub_0204B020(FieldSystem *fieldSystem, const u16 *param1);
u16 sub_0204B044(FieldSystem *fieldSystem, const u16 *param1);
void sub_0204B060(UnkStruct_0204AFC4 *param0, SaveData *saveData);
void sub_0204B0BC(UnkStruct_0204AFC4 *param0);
void sub_0204B0D4(UnkStruct_0204AFC4 *param0, u16 param1);
u16 sub_0204B0F0(UnkStruct_0204AFC4 *param0, u8 param1, u8 param2, int param3);
BOOL sub_0204B3B8(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_0223A348 *param1, u16 param2, int param3, u16 *param4, u16 *param5, UnkStruct_0204B404 *param6, int heapID);
void sub_0204B404(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_0223A348 *param1, u16 param2, BOOL param3, const UnkStruct_0204B404 *param4, int heapID);
void sub_0204B060(BattleTower *battleTower, SaveData *saveData);
void sub_0204B0BC(BattleTower *battleTower);
void sub_0204B0D4(BattleTower *battleTower, u16 param1);
u16 sub_0204B0F0(BattleTower *battleTower, u8 param1, u8 param2, int param3);
BOOL sub_0204B3B8(BattleTower *battleTower, UnkStruct_ov104_0223A348 *param1, u16 param2, int param3, u16 *param4, u16 *param5, UnkStruct_0204B404 *param6, int heapID);
void sub_0204B404(BattleTower *battleTower, UnkStruct_ov104_0223A348 *param1, u16 param2, BOOL param3, const UnkStruct_0204B404 *param4, int heapID);
#endif // POKEPLATINUM_UNK_0204AEE8_H

View File

@ -5,7 +5,7 @@
#include "struct_defs/struct_0209BBA4.h"
void sub_0209BA80(void *param0);
BOOL sub_0209BB08(UnkStruct_0204AFC4 *param0);
BOOL sub_0209BB08(BattleTower *battleTower);
BOOL sub_0209BBA4(UnkStruct_0209BBA4 *param0);
BOOL sub_0209BC1C(UnkStruct_0209BBA4 *param0, u16 param1);
BOOL sub_0209BC64(UnkStruct_0209BBA4 *param0, u16 param1, u16 param2);

View File

@ -116,13 +116,13 @@ _01B8:
_01E5:
Message 8
ScrCmd_1FF 9, 3, 0, 0
PrintBattleFrontierBanlist 9, 3, 0, 0
GoTo _0145
End
_01F8:
Message 8
ScrCmd_1FF 9, 2, 0, 0
PrintBattleFrontierBanlist 9, 2, 0, 0
GoTo _0145
End
@ -183,9 +183,9 @@ _0335:
ShowYesNoMenu VAR_RESULT
GoToIfEq VAR_RESULT, MENU_NO, _02F1
CloseMessage
ScrCmd_0F2 32, 0, 0, VAR_RESULT
GoToIfEq VAR_RESULT, 1, _0377
GoToIfEq VAR_RESULT, 3, _037F
StartBattleClient 32, 0, 0, VAR_RESULT
GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, _0377
GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, _037F
GoTo _03DD
End
@ -194,7 +194,7 @@ _0377:
End
_037F:
ScrCmd_150
EndCommunication
GoTo _02F1
End
@ -203,9 +203,9 @@ _0389:
ShowYesNoMenu VAR_RESULT
GoToIfEq VAR_RESULT, MENU_NO, _02F1
CloseMessage
ScrCmd_0F3 32, 0, 0, VAR_RESULT
GoToIfEq VAR_RESULT, 1, _03CB
GoToIfEq VAR_RESULT, 3, _03D3
StartBattleServer 32, 0, 0, VAR_RESULT
GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, _03CB
GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, _03D3
GoTo _03DD
End
@ -214,12 +214,12 @@ _03CB:
End
_03D3:
ScrCmd_150
EndCommunication
GoTo _02F1
End
_03DD:
ScrCmd_136
ClearReceivedTempDataAllPlayers
ScrCmd_135 154
GetPartyMonSpecies VAR_MAP_LOCAL_2, VAR_0x8000
GetPartyMonSpecies VAR_MAP_LOCAL_5, VAR_0x8001
@ -228,7 +228,7 @@ _03DD:
GoToIfEq VAR_0x8008, 1, _0450
GoToIfEq VAR_0x8008, 2, _0466
GoToIfEq VAR_0x8008, 3, _047C
ScrCmd_136
ClearReceivedTempDataAllPlayers
ScrCmd_135 156
Message 45
CallIfEq VAR_UNK_0x40BE, 2, _0448
@ -267,9 +267,9 @@ _0497:
End
_049F:
ScrCmd_136
ClearReceivedTempDataAllPlayers
ScrCmd_135 157
ScrCmd_150
EndCommunication
Return
_04A9:
@ -298,7 +298,7 @@ _04DC:
End
_0545:
ScrCmd_150
EndCommunication
Return
_0549:
@ -322,7 +322,7 @@ _0564:
_057F:
ScrCmd_02E 32
WaitTime 10, VAR_RESULT
ScrCmd_136
ClearReceivedTempDataAllPlayers
ScrCmd_135 155
CloseMessage
ApplyMovement LOCALID_PLAYER, _0604

View File

@ -113,13 +113,13 @@ _01AC:
_01D9:
Message 8
ScrCmd_1FF 9, 3, 0, 0
PrintBattleFrontierBanlist 9, 3, 0, 0
GoTo _0139
End
_01EC:
Message 8
ScrCmd_1FF 9, 2, 0, 0
PrintBattleFrontierBanlist 9, 2, 0, 0
GoTo _0139
End
@ -180,9 +180,9 @@ _0329:
ShowYesNoMenu VAR_RESULT
GoToIfEq VAR_RESULT, MENU_NO, _02E5
CloseMessage
ScrCmd_0F2 31, 0, 0, VAR_RESULT
GoToIfEq VAR_RESULT, 1, _036B
GoToIfEq VAR_RESULT, 3, _0373
StartBattleClient 31, 0, 0, VAR_RESULT
GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, _036B
GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, _0373
GoTo _03D1
End
@ -191,7 +191,7 @@ _036B:
End
_0373:
ScrCmd_150
EndCommunication
GoTo _02E5
End
@ -200,9 +200,9 @@ _037D:
ShowYesNoMenu VAR_RESULT
GoToIfEq VAR_RESULT, MENU_NO, _02E5
CloseMessage
ScrCmd_0F3 31, 0, 0, VAR_RESULT
GoToIfEq VAR_RESULT, 1, _03BF
GoToIfEq VAR_RESULT, 3, _03C7
StartBattleServer 31, 0, 0, VAR_RESULT
GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, _03BF
GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, _03C7
GoTo _03D1
End
@ -211,12 +211,12 @@ _03BF:
End
_03C7:
ScrCmd_150
EndCommunication
GoTo _02E5
End
_03D1:
ScrCmd_136
ClearReceivedTempDataAllPlayers
ScrCmd_135 136
GetPartyMonSpecies VAR_MAP_LOCAL_2, VAR_0x8000
GetPartyMonSpecies VAR_MAP_LOCAL_5, VAR_0x8001
@ -225,7 +225,7 @@ _03D1:
GoToIfEq VAR_0x8008, 1, _0444
GoToIfEq VAR_0x8008, 2, _045A
GoToIfEq VAR_0x8008, 3, _0470
ScrCmd_136
ClearReceivedTempDataAllPlayers
ScrCmd_135 138
Message 45
CallIfEq VAR_UNK_0x40BD, 2, _043C
@ -264,9 +264,9 @@ _048B:
End
_0493:
ScrCmd_136
ClearReceivedTempDataAllPlayers
ScrCmd_135 139
ScrCmd_150
EndCommunication
Return
_049D:
@ -295,7 +295,7 @@ _04D0:
End
_0539:
ScrCmd_150
EndCommunication
Return
_053D:
@ -319,7 +319,7 @@ _0558:
_0573:
ScrCmd_02E 32
WaitTime 10, VAR_RESULT
ScrCmd_136
ClearReceivedTempDataAllPlayers
ScrCmd_135 137
CloseMessage
ApplyMovement LOCALID_PLAYER, _05F0

View File

@ -159,17 +159,17 @@ _0270:
CloseMessage
CallIfEq VAR_UNK_0x40B9, 0, _02C2
CallIfEq VAR_UNK_0x40B9, 1, _02CE
GoToIfEq VAR_RESULT, 1, _02DA
GoToIfEq VAR_RESULT, 3, _02E2
GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, _02DA
GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, _02E2
GoTo _0368
End
_02C2:
ScrCmd_0F2 27, 0, 0, VAR_RESULT
StartBattleClient 27, 0, 0, VAR_RESULT
Return
_02CE:
ScrCmd_0F2 28, 0, 0, VAR_RESULT
StartBattleClient 28, 0, 0, VAR_RESULT
Return
_02DA:
@ -177,7 +177,7 @@ _02DA:
End
_02E2:
ScrCmd_150
EndCommunication
GoTo _022C
End
@ -188,17 +188,17 @@ _02EC:
CloseMessage
CallIfEq VAR_UNK_0x40B9, 0, _033E
CallIfEq VAR_UNK_0x40B9, 1, _034A
GoToIfEq VAR_RESULT, 1, _0356
GoToIfEq VAR_RESULT, 3, _035E
GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, _0356
GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, _035E
GoTo _0368
End
_033E:
ScrCmd_0F3 27, 0, 0, VAR_RESULT
StartBattleServer 27, 0, 0, VAR_RESULT
Return
_034A:
ScrCmd_0F3 28, 0, 0, VAR_RESULT
StartBattleServer 28, 0, 0, VAR_RESULT
Return
_0356:
@ -206,7 +206,7 @@ _0356:
End
_035E:
ScrCmd_150
EndCommunication
GoTo _022C
End
@ -247,7 +247,7 @@ _03C1:
End
_042A:
ScrCmd_150
EndCommunication
Return
_042E:
@ -271,7 +271,7 @@ _0449:
_0464:
ScrCmd_02E 9
WaitTime 15, VAR_RESULT
ScrCmd_136
ClearReceivedTempDataAllPlayers
ScrCmd_135 169
CloseMessage
ApplyMovement LOCALID_PLAYER, _04DC

View File

@ -239,13 +239,13 @@ _03AC:
_03CF:
Message 35
ScrCmd_1FF 37, 1, 0, 0
PrintBattleFrontierBanlist 37, 1, 0, 0
GoTo _034D
End
_03E2:
Message 36
ScrCmd_1FF 37, 2, 0, 0
PrintBattleFrontierBanlist 37, 2, 0, 0
GoTo _034D
End
@ -326,9 +326,9 @@ _058E:
ShowYesNoMenu VAR_RESULT
GoToIfEq VAR_RESULT, MENU_NO, _054A
CloseMessage
ScrCmd_0F2 30, 0, 0, VAR_RESULT
GoToIfEq VAR_RESULT, 1, _05D0
GoToIfEq VAR_RESULT, 3, _05D8
StartBattleClient 30, 0, 0, VAR_RESULT
GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, _05D0
GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, _05D8
GoTo _0636
End
@ -337,7 +337,7 @@ _05D0:
End
_05D8:
ScrCmd_150
EndCommunication
GoTo _054A
End
@ -346,9 +346,9 @@ _05E2:
ShowYesNoMenu VAR_RESULT
GoToIfEq VAR_RESULT, MENU_NO, _054A
CloseMessage
ScrCmd_0F3 30, 0, 0, VAR_RESULT
GoToIfEq VAR_RESULT, 1, _0624
GoToIfEq VAR_RESULT, 3, _062C
StartBattleServer 30, 0, 0, VAR_RESULT
GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, _0624
GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, _062C
GoTo _0636
End
@ -357,16 +357,16 @@ _0624:
End
_062C:
ScrCmd_150
EndCommunication
GoTo _054A
End
_0636:
ScrCmd_136
ClearReceivedTempDataAllPlayers
ScrCmd_135 108
ScrCmd_2CF VAR_MAP_LOCAL_1, VAR_RESULT
GoToIfEq VAR_RESULT, 1, _067B
ScrCmd_136
ClearReceivedTempDataAllPlayers
ScrCmd_135 110
Message 32
CallIfEq VAR_UNK_0x40BB, 2, _0673
@ -385,7 +385,7 @@ _067B:
End
_068C:
ScrCmd_150
EndCommunication
Return
_0690:
@ -414,7 +414,7 @@ _06C3:
End
_072C:
ScrCmd_150
EndCommunication
Return
_0730:
@ -438,7 +438,7 @@ _074B:
_0766:
ScrCmd_02E 9
WaitTime 10, VAR_RESULT
ScrCmd_136
ClearReceivedTempDataAllPlayers
ScrCmd_135 109
CloseMessage
ApplyMovement LOCALID_PLAYER, _07E4

File diff suppressed because it is too large Load Diff

View File

@ -13,7 +13,7 @@
_0016:
GoToIfEq VAR_UNK_0x40D9, 0, _0035
SetFlag FLAG_UNK_0x01CB
ScrCmd_1DD 55, 0, VAR_MAP_LOCAL_0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_55, 0, VAR_MAP_LOCAL_0
SetVar VAR_OBJ_GFX_ID_0, VAR_MAP_LOCAL_0
_0035:
End
@ -46,10 +46,10 @@ _0070:
_007D:
WaitTime 30, VAR_RESULT
SetVar VAR_UNK_0x40D8, 1
ScrCmd_1DD 43, 0, VAR_RESULT
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_GET_CHALLENGE_MODE, 0, VAR_RESULT
SetVar VAR_0x8008, VAR_RESULT
GoToIfEq VAR_0x8008, 4, _00D9
GoToIfEq VAR_0x8008, 5, _00D9
GoToIfEq VAR_0x8008, BATTLE_TOWER_MODE_WIFI, _00D9
GoToIfEq VAR_0x8008, BATTLE_TOWER_MODE_5, _00D9
FadeScreenOut
WaitFadeScreen
Warp MAP_HEADER_BATTLE_TOWER, 0, 11, 6, 0
@ -70,8 +70,8 @@ _00D9:
_0101:
LockAll
SetVar VAR_UNK_0x40D9, 3
ScrCmd_1DD 100, 0, VAR_RESULT
GoToIfEq VAR_RESULT, 1, _007D
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_CHECK_IS_NULL, 0, VAR_RESULT
GoToIfEq VAR_RESULT, TRUE, _007D
Call _043C
GoTo _0201
End
@ -79,39 +79,39 @@ _0101:
_012C:
LockAll
SetVar VAR_UNK_0x40D9, 3
ScrCmd_1DD 100, 0, VAR_RESULT
GoToIfEq VAR_RESULT, 1, _007D
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_CHECK_IS_NULL, 0, VAR_RESULT
GoToIfEq VAR_RESULT, TRUE, _007D
Call _043C
Call _0448
GoTo _02F7
End
_015D:
ScrCmd_1DD 40, 0, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_40, 0, 0
Call _045C
ScrCmd_1FE 0
WaitABPress
CloseMessage
Call _047E
ScrCmd_1DD 42, 0, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_42, 0, 0
CheckWonBattle VAR_RESULT
SetVar VAR_0x8004, VAR_RESULT
Return
_018C:
ScrCmd_1DD 37, 0, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_37, 0, 0
GoTo _007D
End
_019C:
ScrCmd_1DD 38, 0, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_38, 0, 0
GoTo _007D
End
_01AC:
SetVar VAR_UNK_0x40D8, 2
ScrCmd_1DD 39, 0, 0
ScrCmd_1DC
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_39, 0, 0
FreeBattleTower
Message 4
ShowSavingIcon
TrySaveGame VAR_RESULT
@ -121,7 +121,7 @@ _01AC:
FadeScreenOut
WaitFadeScreen
CloseMessage
ScrCmd_1DD 2, 0, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_02, 0, 0
End
_01E7:
@ -129,8 +129,8 @@ _01E7:
End
_01EF:
ScrCmd_1DD 34, 0, VAR_RESULT
ScrCmd_1DD 35, 0, VAR_RESULT
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_34, 0, VAR_RESULT
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_35, 0, VAR_RESULT
Return
_0201:
@ -145,7 +145,7 @@ _0201:
End
_0241:
ScrCmd_1DD 33, 0, VAR_0x8004
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_33, 0, VAR_0x8004
BufferNumber 0, VAR_0x8004
Message 1
InitGlobalTextListMenu 31, 11, 0, VAR_RESULT, NO_EXIT_ON_B
@ -184,9 +184,9 @@ _02D9:
End
_02F7:
ScrCmd_1DD 43, 0, VAR_RESULT
GoToIfNe VAR_RESULT, 0, _0241
ScrCmd_1DD 36, 0, VAR_RESULT
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_GET_CHALLENGE_MODE, 0, VAR_RESULT
GoToIfNe VAR_RESULT, BATTLE_TOWER_MODE_SINGLE, _0241
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_36, 0, VAR_RESULT
GoToIfEq VAR_RESULT, 20, _0336
GoToIfEq VAR_RESULT, 48, _0336
GoTo _0241
@ -210,9 +210,9 @@ _0336:
_0395:
Call _04BA
ScrCmd_1DD 40, 0, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_40, 0, 0
Call _04CE
ScrCmd_1DD 36, 0, VAR_RESULT
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_36, 0, VAR_RESULT
GoToIfEq VAR_RESULT, 48, _041E
BufferPlayerName 0
BufferRivalName 1
@ -220,14 +220,14 @@ _0395:
_03C7:
CloseMessage
Call _047E
ScrCmd_1DD 42, 0, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_42, 0, 0
CheckWonBattle VAR_RESULT
SetVar VAR_0x8004, VAR_RESULT
GoToIfEq VAR_0x8004, FALSE, _018C
ScrCmd_1DD 36, 0, VAR_RESULT
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_36, 0, VAR_RESULT
GoToIfEq VAR_RESULT, 48, _0429
Message 17
ScrCmd_1DD 44, 1, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_44, 1, 0
_040E:
CloseMessage
Call _01EF
@ -241,7 +241,7 @@ _041E:
_0429:
Message 18
ScrCmd_1DD 44, 2, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_44, 2, 0
GoTo _040E
End
@ -257,7 +257,7 @@ _0448:
Return
_045C:
ScrCmd_1DD 41, 0, VAR_RESULT
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_41, 0, VAR_RESULT
SetVar VAR_OBJ_GFX_ID_1, VAR_RESULT
ClearFlag FLAG_UNK_0x01CB
AddObject 1

View File

@ -18,35 +18,35 @@
_002A:
GoToIfUnset FLAG_UNK_0x00E3, _0121
GoToIfNe VAR_UNK_0x40DF, 2, _0057
ScrCmd_1DD 55, 2, VAR_MAP_LOCAL_9
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_55, 2, VAR_MAP_LOCAL_9
GoToIfEq VAR_MAP_LOCAL_9, 0, _0121
_0057:
ClearFlag FLAG_UNK_0x01EC
_005B:
GoToIfUnset FLAG_UNK_0x00E4, _012D
GoToIfNe VAR_UNK_0x40DF, 2, _0088
ScrCmd_1DD 55, 2, VAR_MAP_LOCAL_9
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_55, 2, VAR_MAP_LOCAL_9
GoToIfEq VAR_MAP_LOCAL_9, 1, _012D
_0088:
ClearFlag FLAG_UNK_0x01ED
_008C:
GoToIfUnset FLAG_UNK_0x00E5, _0139
GoToIfNe VAR_UNK_0x40DF, 2, _00B9
ScrCmd_1DD 55, 2, VAR_MAP_LOCAL_9
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_55, 2, VAR_MAP_LOCAL_9
GoToIfEq VAR_MAP_LOCAL_9, 2, _0139
_00B9:
ClearFlag FLAG_UNK_0x01EE
_00BD:
GoToIfUnset FLAG_UNK_0x00E6, _0145
GoToIfNe VAR_UNK_0x40DF, 2, _00EA
ScrCmd_1DD 55, 2, VAR_MAP_LOCAL_9
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_55, 2, VAR_MAP_LOCAL_9
GoToIfEq VAR_MAP_LOCAL_9, 3, _0145
_00EA:
ClearFlag FLAG_UNK_0x01EF
_00EE:
GoToIfUnset FLAG_UNK_0x00E7, _0151
GoToIfNe VAR_UNK_0x40DF, 2, _011B
ScrCmd_1DD 55, 2, VAR_MAP_LOCAL_9
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_55, 2, VAR_MAP_LOCAL_9
GoToIfEq VAR_MAP_LOCAL_9, 4, _0151
_011B:
ClearFlag FLAG_UNK_0x01F0
@ -97,7 +97,7 @@ _018D:
Call _04A6
Message 0
CloseMessage
ScrCmd_1DD 56, 0, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_56, 0, 0
ReleaseAll
End
@ -172,7 +172,7 @@ _02D2:
End
_02DD:
ScrCmd_1DD 50, VAR_MAP_LOCAL_9, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_50, VAR_MAP_LOCAL_9, 0
SetVar VAR_UNK_0x40DF, 2
Message 8
CloseMessage
@ -200,7 +200,7 @@ _0336:
End
_0341:
ScrCmd_1DD 50, VAR_MAP_LOCAL_9, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_50, VAR_MAP_LOCAL_9, 0
SetVar VAR_UNK_0x40DF, 2
BufferPlayerName 0
Message 17
@ -228,7 +228,7 @@ _039A:
End
_03A5:
ScrCmd_1DD 50, VAR_MAP_LOCAL_9, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_50, VAR_MAP_LOCAL_9, 0
SetVar VAR_UNK_0x40DF, 2
Message 5
CloseMessage
@ -255,7 +255,7 @@ _03FB:
End
_0406:
ScrCmd_1DD 50, VAR_MAP_LOCAL_9, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_50, VAR_MAP_LOCAL_9, 0
SetVar VAR_UNK_0x40DF, 2
Message 14
CloseMessage
@ -282,7 +282,7 @@ _045C:
End
_0467:
ScrCmd_1DD 50, VAR_MAP_LOCAL_9, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_50, VAR_MAP_LOCAL_9, 0
SetVar VAR_UNK_0x40DF, 2
Message 11
CloseMessage

View File

@ -9,19 +9,19 @@
_000E:
GoToIfEq VAR_UNK_0x40DD, 0, _0048
ScrCmd_207 VAR_MAP_LOCAL_0
GetCurNetID VAR_MAP_LOCAL_0
GoToIfEq VAR_MAP_LOCAL_0, 1, _004A
ScrCmd_1DD 55, 0, VAR_MAP_LOCAL_0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_55, 0, VAR_MAP_LOCAL_0
SetVar VAR_OBJ_GFX_ID_0, VAR_MAP_LOCAL_0
ScrCmd_1DD 55, 1, VAR_MAP_LOCAL_0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_55, 1, VAR_MAP_LOCAL_0
SetVar VAR_OBJ_GFX_ID_1, VAR_MAP_LOCAL_0
_0048:
End
_004A:
ScrCmd_1DD 55, 0, VAR_MAP_LOCAL_0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_55, 0, VAR_MAP_LOCAL_0
SetVar VAR_OBJ_GFX_ID_1, VAR_MAP_LOCAL_0
ScrCmd_1DD 55, 1, VAR_MAP_LOCAL_0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_55, 1, VAR_MAP_LOCAL_0
SetVar VAR_OBJ_GFX_ID_0, VAR_MAP_LOCAL_0
End

View File

@ -9,15 +9,15 @@
BattleTowerElevator_Init:
CallIfNe VAR_UNK_0x40DB, 0, _008A
ScrCmd_1DD 43, 0, VAR_MAP_LOCAL_A
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_GET_CHALLENGE_MODE, 0, VAR_MAP_LOCAL_A
Call _008E
CallIfEq VAR_MAP_LOCAL_A, 2, _009E
CallIfEq VAR_MAP_LOCAL_A, 3, _009E
CallIfEq VAR_MAP_LOCAL_A, 0, _008E
CallIfEq VAR_MAP_LOCAL_A, 1, _008E
CallIfEq VAR_MAP_LOCAL_A, 4, _0096
CallIfEq VAR_MAP_LOCAL_A, 5, _0096
CallIfEq VAR_MAP_LOCAL_A, 6, _0096
CallIfEq VAR_MAP_LOCAL_A, BATTLE_TOWER_MODE_MULTI, _009E
CallIfEq VAR_MAP_LOCAL_A, BATTLE_TOWER_MODE_LINK_MULTI, _009E
CallIfEq VAR_MAP_LOCAL_A, BATTLE_TOWER_MODE_SINGLE, _008E
CallIfEq VAR_MAP_LOCAL_A, BATTLE_TOWER_MODE_DOUBLE, _008E
CallIfEq VAR_MAP_LOCAL_A, BATTLE_TOWER_MODE_WIFI, _0096
CallIfEq VAR_MAP_LOCAL_A, BATTLE_TOWER_MODE_5, _0096
CallIfEq VAR_MAP_LOCAL_A, BATTLE_TOWER_MODE_6, _0096
End
_008A:
@ -39,9 +39,9 @@ _009E:
BattleTowerElevator_BattleRoomCheckWiFi:
FadeScreenOut
WaitFadeScreen
ScrCmd_1DD 43, 0, VAR_RESULT
GoToIfEq VAR_RESULT, 4, BattleTowerElevator_WiFiBattleRoom
GoToIfEq VAR_RESULT, 5, BattleTowerElevator_WiFiBattleRoom
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_GET_CHALLENGE_MODE, 0, VAR_RESULT
GoToIfEq VAR_RESULT, BATTLE_TOWER_MODE_WIFI, BattleTowerElevator_WiFiBattleRoom
GoToIfEq VAR_RESULT, BATTLE_TOWER_MODE_5, BattleTowerElevator_WiFiBattleRoom
ScrCmd_1F8
ScrCmd_2C4 5
ReturnToField

View File

@ -13,19 +13,19 @@ _0012:
GoToIfEq VAR_UNK_0x40DE, 0, _0054
SetFlag FLAG_UNK_0x01EA
SetFlag FLAG_UNK_0x01EB
ScrCmd_207 VAR_MAP_LOCAL_0
GetCurNetID VAR_MAP_LOCAL_0
GoToIfEq VAR_MAP_LOCAL_0, 1, _0056
ScrCmd_1DD 55, 0, VAR_MAP_LOCAL_0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_55, 0, VAR_MAP_LOCAL_0
SetVar VAR_OBJ_GFX_ID_0, VAR_MAP_LOCAL_0
ScrCmd_1DD 55, 1, VAR_MAP_LOCAL_0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_55, 1, VAR_MAP_LOCAL_0
SetVar VAR_OBJ_GFX_ID_1, VAR_MAP_LOCAL_0
_0054:
End
_0056:
ScrCmd_1DD 55, 0, VAR_MAP_LOCAL_0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_55, 0, VAR_MAP_LOCAL_0
SetVar VAR_OBJ_GFX_ID_1, VAR_MAP_LOCAL_0
ScrCmd_1DD 55, 1, VAR_MAP_LOCAL_0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_55, 1, VAR_MAP_LOCAL_0
SetVar VAR_OBJ_GFX_ID_0, VAR_MAP_LOCAL_0
End
@ -54,8 +54,8 @@ _00BE:
Return
_00CB:
ScrCmd_1DD 43, 0, VAR_RESULT
GoToIfEq VAR_RESULT, 3, _0114
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_GET_CHALLENGE_MODE, 0, VAR_RESULT
GoToIfEq VAR_RESULT, BATTLE_TOWER_MODE_LINK_MULTI, _0114
WaitTime 30, VAR_RESULT
SetVar VAR_UNK_0x40D8, 1
FadeScreenOut
@ -69,13 +69,13 @@ _00CB:
_0114:
WaitTime 30, VAR_RESULT
SetVar VAR_UNK_0x40D8, 1
ScrCmd_136
ClearReceivedTempDataAllPlayers
ScrCmd_135 6
FadeScreenOut
WaitFadeScreen
ScrCmd_136
ClearReceivedTempDataAllPlayers
ScrCmd_135 8
ScrCmd_150
EndCommunication
Warp MAP_HEADER_BATTLE_TOWER, 0, 7, 6, 0
FadeScreenIn
WaitFadeScreen
@ -86,8 +86,8 @@ _0156:
LockAll
SetVar VAR_UNK_0x40DE, 3
Call _048D
ScrCmd_1DD 43, 0, VAR_RESULT
GoToIfEq VAR_RESULT, 3, _039E
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_GET_CHALLENGE_MODE, 0, VAR_RESULT
GoToIfEq VAR_RESULT, BATTLE_TOWER_MODE_LINK_MULTI, _039E
GoTo _02B0
End
@ -100,7 +100,7 @@ _0181:
End
_019D:
ScrCmd_1DD 40, 0, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_40, 0, 0
Call _04C5
Call _0529
ScrCmd_1FE 0
@ -111,13 +111,13 @@ _019D:
WaitABPress
CloseMessage
Call _0505
ScrCmd_1DD 42, 0, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_42, 0, 0
CheckWonBattle VAR_RESULT
SetVar VAR_0x8004, VAR_RESULT
Return
_01DF:
ScrCmd_1DD 40, 0, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_40, 0, 0
Call _04C5
Call _0529
ScrCmd_1FE 0
@ -128,29 +128,29 @@ _01DF:
WaitTime 30, VAR_RESULT
CloseMessage
Call _0505
ScrCmd_136
ClearReceivedTempDataAllPlayers
ScrCmd_135 4
ScrCmd_1DD 42, 0, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_42, 0, 0
CheckWonBattle VAR_RESULT
SetVar VAR_0x8004, VAR_RESULT
Return
_022F:
ScrCmd_1DD 37, 0, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_37, 0, 0
SetVar VAR_MAP_LOCAL_0, 0
GoTo _00CB
End
_0245:
ScrCmd_1DD 38, 0, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_38, 0, 0
SetVar VAR_MAP_LOCAL_0, 1
GoTo _00CB
End
_025B:
SetVar VAR_UNK_0x40D8, 2
ScrCmd_1DD 39, 0, 0
ScrCmd_1DC
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_39, 0, 0
FreeBattleTower
Message 0
ShowSavingIcon
TrySaveGame VAR_RESULT
@ -160,7 +160,7 @@ _025B:
FadeScreenOut
WaitFadeScreen
CloseMessage
ScrCmd_1DD 2, 0, 0
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_02, 0, 0
End
_0296:
@ -168,8 +168,8 @@ _0296:
End
_029E:
ScrCmd_1DD 34, 0, VAR_RESULT
ScrCmd_1DD 35, 0, VAR_RESULT
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_34, 0, VAR_RESULT
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_35, 0, VAR_RESULT
Return
_02B0:
@ -181,7 +181,7 @@ _02B0:
Call _0565
Call _00BE
_02E8:
ScrCmd_1DD 33, 0, VAR_0x8004
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_33, 0, VAR_0x8004
BufferNumber 0, VAR_0x8004
Message 3
InitGlobalTextListMenu 31, 11, 0, VAR_RESULT, NO_EXIT_ON_B
@ -228,7 +228,7 @@ _039E:
Call _0565
Call _00BE
_03D6:
ScrCmd_1DD 33, 0, VAR_0x8004
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_33, 0, VAR_0x8004
BufferNumber 0, VAR_0x8004
Message 3
InitGlobalTextListMenu 31, 13, 0, VAR_RESULT, NO_EXIT_ON_B
@ -241,7 +241,7 @@ _03D6:
GoToIfEq VAR_RESULT, 1, _0452
_0418:
Message 12
ScrCmd_136
ClearReceivedTempDataAllPlayers
ScrCmd_135 5
ScrCmd_1E1 2, VAR_MAP_LOCAL_0, VAR_RESULT
ScrCmd_1E2 2, VAR_MAP_LOCAL_0
@ -263,7 +263,7 @@ _0452:
_0474:
Message 11
WaitTime 30, VAR_RESULT
ScrCmd_136
ClearReceivedTempDataAllPlayers
ScrCmd_135 7
CloseMessage
GoTo _0296
@ -284,9 +284,9 @@ _04A1:
Return
_04C5:
ScrCmd_1DD 41, 0, VAR_RESULT
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_41, 0, VAR_RESULT
SetVar VAR_OBJ_GFX_ID_2, VAR_RESULT
ScrCmd_1DD 41, 1, VAR_RESULT
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_41, 1, VAR_RESULT
SetVar VAR_OBJ_GFX_ID_3, VAR_RESULT
ClearFlag FLAG_UNK_0x01EA
ClearFlag FLAG_UNK_0x01EB

View File

@ -213,7 +213,7 @@ _0253:
End
_0291:
ScrCmd_150
EndCommunication
SetVar VAR_UNK_0x40D5, 0
ClearFlag FLAG_COMMUNICATION_CLUB_ACCESSIBLE
Message 11
@ -463,9 +463,9 @@ _0669:
ShowYesNoMenu VAR_RESULT
GoToIfEq VAR_RESULT, MENU_NO, _0625
CloseMessage
ScrCmd_0F2 8, VAR_0x8005, VAR_0x8004, VAR_RESULT
GoToIfEq VAR_RESULT, 1, _06AB
GoToIfEq VAR_RESULT, 3, _06B3
StartBattleClient 8, VAR_0x8005, VAR_0x8004, VAR_RESULT
GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, _06AB
GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, _06B3
GoTo _070D
End
@ -482,9 +482,9 @@ _06BB:
ShowYesNoMenu VAR_RESULT
GoToIfEq VAR_RESULT, MENU_NO, _0625
CloseMessage
ScrCmd_0F3 8, VAR_0x8005, VAR_0x8004, VAR_RESULT
GoToIfEq VAR_RESULT, 1, _06FD
GoToIfEq VAR_RESULT, 3, _0705
StartBattleServer 8, VAR_0x8005, VAR_0x8004, VAR_RESULT
GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, _06FD
GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, _0705
GoTo _070D
End
@ -493,7 +493,7 @@ _06FD:
End
_0705:
ScrCmd_150
EndCommunication
CloseMessage
ReleaseAll
End

View File

@ -245,20 +245,20 @@ _0384:
ShowYesNoMenu VAR_RESULT
GoToIfEq VAR_RESULT, MENU_NO, _0305
CloseMessage
ScrCmd_0F2 VAR_0x8004, VAR_0x8005, 0, VAR_RESULT
GoToIfEq VAR_RESULT, 1, _03D3
GoToIfEq VAR_RESULT, 3, _03DD
GoToIfEq VAR_RESULT, 4, _03EA
StartBattleClient VAR_0x8004, VAR_0x8005, 0, VAR_RESULT
GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, _03D3
GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, _03DD
GoToIfEq VAR_RESULT, COMM_CLUB_RET_4, _03EA
GoTo _046A
End
_03D3:
ScrCmd_150
EndCommunication
GoTo _0305
End
_03DD:
ScrCmd_150
EndCommunication
Message 16
WaitABXPadPress
CloseMessage
@ -266,7 +266,7 @@ _03DD:
End
_03EA:
ScrCmd_150
EndCommunication
Message 15
WaitABXPadPress
CloseMessage
@ -278,20 +278,20 @@ _03F7:
ShowYesNoMenu VAR_RESULT
GoToIfEq VAR_RESULT, MENU_NO, _0305
CloseMessage
ScrCmd_0F3 VAR_0x8004, VAR_0x8005, 0, VAR_RESULT
GoToIfEq VAR_RESULT, 1, _0446
GoToIfEq VAR_RESULT, 3, _0450
GoToIfEq VAR_RESULT, 4, _045D
StartBattleServer VAR_0x8004, VAR_0x8005, 0, VAR_RESULT
GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, _0446
GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, _0450
GoToIfEq VAR_RESULT, COMM_CLUB_RET_4, _045D
GoTo _046A
End
_0446:
ScrCmd_150
EndCommunication
GoTo _0305
End
_0450:
ScrCmd_150
EndCommunication
Message 16
WaitABXPadPress
CloseMessage
@ -299,7 +299,7 @@ _0450:
End
_045D:
ScrCmd_150
EndCommunication
Message 15
WaitABXPadPress
CloseMessage
@ -326,13 +326,13 @@ _046A:
WaitMovement
Call _0513
GoToIfEq VAR_0x8004, 4, _04F3
ScrCmd_207 VAR_RESULT
GetCurNetID VAR_RESULT
AddVar VAR_RESULT, 7
ScrCmd_203 0x14C, 0, VAR_RESULT, 11, 0
End
_04F3:
ScrCmd_207 VAR_RESULT
GetCurNetID VAR_RESULT
AddVar VAR_RESULT, 6
ScrCmd_203 0x14D, 0, VAR_RESULT, 11, 0
End

View File

@ -119,19 +119,19 @@ _01B7:
ShowYesNoMenu VAR_RESULT
GoToIfEq VAR_RESULT, MENU_NO, _0173
CloseMessage
ScrCmd_0F2 6, 0, 0, VAR_RESULT
GoToIfEq VAR_RESULT, 1, _01F9
GoToIfEq VAR_RESULT, 3, _0203
StartBattleClient 6, 0, 0, VAR_RESULT
GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, _01F9
GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, _0203
GoTo _0263
End
_01F9:
ScrCmd_150
EndCommunication
GoTo _0173
End
_0203:
ScrCmd_150
EndCommunication
GoTo _0173
End
@ -140,19 +140,19 @@ _020D:
ShowYesNoMenu VAR_RESULT
GoToIfEq VAR_RESULT, MENU_NO, _0173
CloseMessage
ScrCmd_0F3 6, 0, 0, VAR_RESULT
GoToIfEq VAR_RESULT, 1, _024F
GoToIfEq VAR_RESULT, 3, _0259
StartBattleServer 6, 0, 0, VAR_RESULT
GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, _024F
GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, _0259
GoTo _0263
End
_024F:
ScrCmd_150
EndCommunication
GoTo _0173
End
_0259:
ScrCmd_150
EndCommunication
GoTo _0173
End
@ -161,7 +161,7 @@ _0263:
WaitFadeScreen
ReleaseAll
ScrCmd_1D7 1
ScrCmd_150
EndCommunication
Call _0097
GoTo _006D
End

View File

@ -2,7 +2,7 @@
"key": 9338,
"messages": [
{
"id": "pl_msg_00000304_00000",
"id": "BattleTower_Text_GuideToSingleDoubleBattleRooms",
"en_US": [
"Welcome to the Battle Tower!\r",
"I am your guide to the Single\n",
@ -10,18 +10,18 @@
]
},
{
"id": "pl_msg_00000304_00001",
"id": "BattleTower_Text_AskTakeBattleRoomChallenge",
"en_US": [
"Would you like to take the\n",
"Battle Room challenge?"
]
},
{
"id": "pl_msg_00000304_00002",
"id": "BattleTower_Text_WeHopeToSeeYouAgain",
"en_US": "We hope to see you again!"
},
{
"id": "pl_msg_00000304_00003",
"id": "BattleTower_Text_ExplainSingleDoubleBattleRoom",
"en_US": [
"The Battle Tower is a facility for Single\n",
"or Double Battle challenges.\r",
@ -45,52 +45,52 @@
]
},
{
"id": "pl_msg_00000304_00004",
"id": "BattleTower_Text_AskSingleOrDoubleBattleRoom",
"en_US": [
"Which Battle Room would you like?\n",
"Single or Double?"
]
},
{
"id": "pl_msg_00000304_00005",
"id": "BattleTower_Text_00005",
"garbage": 192
},
{
"id": "pl_msg_00000304_00006",
"id": "BattleTower_Text_00006",
"garbage": 258
},
{
"id": "pl_msg_00000304_00007",
"id": "BattleTower_Text_00007",
"garbage": 32
},
{
"id": "pl_msg_00000304_00008",
"id": "BattleTower_Text_SelectPokemonToEnter",
"en_US": [
"Please select the Pokémon you wish\n",
"to enter.\r"
]
},
{
"id": "pl_msg_00000304_00009",
"id": "BattleTower_Text_PokemonMustAllBeDifferent",
"en_US": "Your Pokémon must all be different.\r"
},
{
"id": "pl_msg_00000304_00010",
"id": "BattleTower_Text_ItemsMustAllBeDifferent",
"en_US": "Hold items must all be different.\r"
},
{
"id": "pl_msg_00000304_00011",
"id": "BattleTower_Text_ShowYouToBattleRoom",
"en_US": "I will now show you to the Battle Room."
},
{
"id": "pl_msg_00000304_00012",
"id": "BattleTower_Text_BeatenAllSevenTrainers",
"en_US": [
"Congratulations!\n",
"Youve beaten all seven Trainers!\r"
]
},
{
"id": "pl_msg_00000304_00013",
"id": "BattleTower_Text_BeatenTowerTycoonReceivedBP",
"en_US": [
"Congratulations!\n",
"Youve beaten the Tower Tycoon!\r",
@ -101,18 +101,18 @@
]
},
{
"id": "pl_msg_00000304_00014",
"id": "BattleTower_Text_SavingDontTurnOffPower",
"en_US": [
"Saving...\n",
"Dont turn off the power."
]
},
{
"id": "pl_msg_00000304_00015",
"id": "BattleTower_Text_WeHopeToSeeYouAgain2",
"en_US": "We hope to see you again."
},
{
"id": "pl_msg_00000304_00016",
"id": "BattleTower_Text_SaveBeforeEntering",
"en_US": [
"Weve been waiting for you!\r",
"Before entering a Battle Room, your\n",
@ -120,15 +120,15 @@
]
},
{
"id": "pl_msg_00000304_00017",
"id": "BattleTower_Text_00017",
"garbage": 22
},
{
"id": "pl_msg_00000304_00018",
"id": "BattleTower_Text_00018",
"garbage": 9
},
{
"id": "pl_msg_00000304_00019",
"id": "BattleTower_Text_DidntSaveBeforeQuitting",
"en_US": [
"Excuse me!\r",
"You didnt save before you quit your\n",
@ -138,7 +138,7 @@
]
},
{
"id": "pl_msg_00000304_00020",
"id": "BattleTower_Text_GuideToMultiBattleRooms",
"en_US": [
"Welcome to the Battle Tower!\r",
"I am your guide to the Multi\n",
@ -146,18 +146,18 @@
]
},
{
"id": "pl_msg_00000304_00021",
"id": "BattleTower_Text_AskTakeMultiBattleRoomChallenge",
"en_US": [
"Would you like to take the Multi\n",
"Battle Room challenge?"
]
},
{
"id": "pl_msg_00000304_00022",
"id": "BattleTower_Text_00022",
"garbage": 26
},
{
"id": "pl_msg_00000304_00023",
"id": "BattleTower_Text_ExplainMultiBattleRoom",
"en_US": [
"The Battle Towers Multi Battle Rooms\n",
"are for Multi Battles with a partner.\r",
@ -186,22 +186,22 @@
]
},
{
"id": "pl_msg_00000304_00024",
"id": "BattleTower_Text_00024",
"garbage": 259
},
{
"id": "pl_msg_00000304_00025",
"id": "BattleTower_Text_00025",
"garbage": 32
},
{
"id": "pl_msg_00000304_00026",
"id": "BattleTower_Text_AskCommunicateWithFriend",
"en_US": [
"Would you like to communicate with\n",
"a friend and form a tag team?"
]
},
{
"id": "pl_msg_00000304_00027",
"id": "BattleTower_Text_OneBecomeLeaderOtherJoinGroup",
"en_US": [
"One Trainer should select\n",
"“BECOME LEADER.”\r",
@ -210,30 +210,30 @@
]
},
{
"id": "pl_msg_00000304_00028",
"id": "BattleTower_Text_00028",
"garbage": 26
},
{
"id": "pl_msg_00000304_00029",
"id": "BattleTower_Text_00029",
"garbage": 15
},
{
"id": "pl_msg_00000304_00030",
"id": "BattleTower_Text_00030",
"garbage": 17
},
{
"id": "pl_msg_00000304_00031",
"id": "BattleTower_Text_00031",
"garbage": 21
},
{
"id": "pl_msg_00000304_00032",
"id": "BattleTower_Text_DirectToMultiBattleRoom",
"en_US": [
"Ill direct you to your Multi Battle\n",
"Room now."
]
},
{
"id": "pl_msg_00000304_00033",
"id": "BattleTower_Text_BothTrainersChoseThisPokemon",
"en_US": [
"Both Trainers have chosen the\n",
"Pokémon {STRVAR_1 0, 0, 0}.\r",
@ -242,7 +242,7 @@
]
},
{
"id": "pl_msg_00000304_00034",
"id": "BattleTower_Text_BothTrainersChoseThesePokemon",
"en_US": [
"Both Trainers have chosen the Pokémon\n",
"{STRVAR_1 0, 0, 0} and {STRVAR_1 0, 1, 0}.\r",
@ -251,11 +251,11 @@
]
},
{
"id": "pl_msg_00000304_00035",
"id": "BattleTower_Text_ShowYouToBattleSalon",
"en_US": "I will now show you to the Battle Salon.\r"
},
{
"id": "pl_msg_00000304_00036",
"id": "BattleTower_Text_GuideToWiFiBattleRooms",
"en_US": [
"Welcome to the Battle Tower!\r",
"I am your guide to the Wi-Fi Battle\n",
@ -263,14 +263,14 @@
]
},
{
"id": "pl_msg_00000304_00037",
"id": "BattleTower_Text_AskTakeWifiBattleRoomChallenge",
"en_US": [
"Would you like to take the Wi-Fi\n",
"Battle Room challenge?"
]
},
{
"id": "pl_msg_00000304_00038",
"id": "BattleTower_Text_ExplainWiFiBattleRoom",
"en_US": [
"The Battle Towers Wi-Fi Battle Rooms\n",
"are places to conduct battles over\f",
@ -300,39 +300,39 @@
]
},
{
"id": "pl_msg_00000304_00039",
"id": "BattleTower_Text_WeHopeToSeeYouAgain3",
"en_US": "We hope to see you again!"
},
{
"id": "pl_msg_00000304_00040",
"id": "BattleTower_Text_00040",
"garbage": 32
},
{
"id": "pl_msg_00000304_00041",
"id": "BattleTower_Text_00041",
"garbage": 262
},
{
"id": "pl_msg_00000304_00042",
"id": "BattleTower_Text_00042",
"garbage": 26
},
{
"id": "pl_msg_00000304_00043",
"id": "BattleTower_Text_00043",
"garbage": 15
},
{
"id": "pl_msg_00000304_00044",
"id": "BattleTower_Text_00044",
"garbage": 17
},
{
"id": "pl_msg_00000304_00045",
"id": "BattleTower_Text_00045",
"garbage": 55
},
{
"id": "pl_msg_00000304_00046",
"id": "BattleTower_Text_00046",
"garbage": 29
},
{
"id": "pl_msg_00000304_00047",
"id": "BattleTower_Text_DirectYouToBattleRoom",
"en_US": [
"OK. Ill direct you to your Battle Room\n",
"now.\r",
@ -340,26 +340,26 @@
]
},
{
"id": "pl_msg_00000304_00048",
"id": "BattleTower_Text_AskSaveAndInterruptChallenge",
"en_US": [
"Would you like to save and interrupt\n",
"your challenge?"
]
},
{
"id": "pl_msg_00000304_00049",
"id": "BattleTower_Text_00049",
"garbage": 24
},
{
"id": "pl_msg_00000304_00050",
"id": "BattleTower_Text_00050",
"garbage": 31
},
{
"id": "pl_msg_00000304_00051",
"id": "BattleTower_Text_00051",
"garbage": 22
},
{
"id": "pl_msg_00000304_00052",
"id": "BattleTower_Text_PleaseConfirmPastLeaderHistory",
"en_US": [
"Ive downloaded the Rank {STRVAR_1 51, 0, 0} Battle\n",
"Room {STRVAR_1 52, 1, 0}s past leader history.\r",
@ -368,39 +368,39 @@
]
},
{
"id": "pl_msg_00000304_00053",
"id": "BattleTower_Text_ThankYouForPlaying",
"en_US": "Thank you for playing!\r"
},
{
"id": "pl_msg_00000304_00054",
"id": "BattleTower_Text_BeatenAllSevenTrainers2",
"en_US": [
"Congratulations!\n",
"Youve beaten all seven Trainers!\r"
]
},
{
"id": "pl_msg_00000304_00055",
"id": "BattleTower_Text_PromotedToRank",
"en_US": [
"{STRVAR_1 3, 0, 0}, you have also been\n",
"promoted to Rank {STRVAR_1 51, 1, 0}!\r"
]
},
{
"id": "pl_msg_00000304_00056",
"id": "BattleTower_Text_SavingDontTurnOffPower2",
"en_US": [
"Saving...\n",
"Dont turn off the power."
]
},
{
"id": "pl_msg_00000304_00057",
"id": "BattleTower_Text_AskSendResults",
"en_US": [
"Would you like to send these results\n",
"using Nintendo WFC?"
]
},
{
"id": "pl_msg_00000304_00058",
"id": "BattleTower_Text_EarnedAndReceivedBP",
"en_US": [
"For your 7-win streak, we present\n",
"you with the BP you have earned!\r",
@ -409,18 +409,18 @@
]
},
{
"id": "pl_msg_00000304_00059",
"id": "BattleTower_Text_00059",
"garbage": 26
},
{
"id": "pl_msg_00000304_00060",
"id": "BattleTower_Text_ResultsWereSent",
"en_US": [
"Your results were sent out using\n",
"Nintendo WFC!\r"
]
},
{
"id": "pl_msg_00000304_00061",
"id": "BattleTower_Text_AskSendPreviousResults",
"en_US": [
"Its good to see you back.\r",
"Your previous results were not sent\n",
@ -429,45 +429,45 @@
]
},
{
"id": "pl_msg_00000304_00062",
"id": "BattleTower_Text_00062",
"garbage": 42
},
{
"id": "pl_msg_00000304_00063",
"id": "BattleTower_Text_00063",
"garbage": 26
},
{
"id": "pl_msg_00000304_00064",
"id": "BattleTower_Text_00064",
"garbage": 11
},
{
"id": "pl_msg_00000304_00065",
"id": "BattleTower_Text_DemotedToRank",
"en_US": [
"Unfortunately, you have been\n",
"demoted to Rank {STRVAR_1 51, 0, 0}...\r"
]
},
{
"id": "pl_msg_00000304_00066",
"id": "BattleTower_Text_00066",
"garbage": 33
},
{
"id": "pl_msg_00000304_00067",
"id": "BattleTower_Text_00067",
"garbage": 26
},
{
"id": "pl_msg_00000304_00068",
"id": "BattleTower_Text_00068",
"garbage": 27
},
{
"id": "pl_msg_00000304_00069",
"id": "BattleTower_Text_RecordWillBeSaved",
"en_US": [
"Your record will be saved.\n",
"Please wait."
]
},
{
"id": "pl_msg_00000304_00070",
"id": "BattleTower_Text_CongratulationsOnAchievingRank",
"en_US": [
"Congratulations on achieving Rank {STRVAR_1 51, 0, 0}.\r",
"Your winning Pokémon team has won\n",
@ -475,7 +475,7 @@
]
},
{
"id": "pl_msg_00000304_00071",
"id": "BattleTower_Text_CongratulationsOnAchievingConsecutiveWins",
"en_US": [
"Congratulations on achieving {STRVAR_1 52, 0, 0}\n",
"consecutive wins!\r",
@ -484,11 +484,11 @@
]
},
{
"id": "pl_msg_00000304_00072",
"id": "BattleTower_Text_00072",
"en_US": "{STRVAR_1 3, 0, 0} obtained {STRVAR_1 8, 1, 0}!"
},
{
"id": "pl_msg_00000304_00073",
"id": "BattleTower_Text_CongratulationsOnAchievingYour50WinStreak",
"en_US": [
"Congratulations on achieving your\n",
"50-win streak.\r",
@ -497,7 +497,7 @@
]
},
{
"id": "pl_msg_00000304_00074",
"id": "BattleTower_Text_UsedToLiveInHoenn",
"en_US": [
"Yeah, I used to live in a place\n",
"called Hoenn.\r",
@ -506,7 +506,7 @@
]
},
{
"id": "pl_msg_00000304_00075",
"id": "BattleTower_Text_WiFiBattleRoomsAreFullOfSurprises",
"en_US": [
"The Wi-Fi Battle Rooms are full of\n",
"surprises.\r",
@ -517,7 +517,7 @@
]
},
{
"id": "pl_msg_00000304_00076",
"id": "BattleTower_Text_TheyProfileYouOnTV",
"en_US": [
"They profile you on TV if you set\n",
"a good record here.\r",
@ -526,7 +526,7 @@
]
},
{
"id": "pl_msg_00000304_00077",
"id": "BattleTower_Text_ITrainedMyLittleGuy",
"en_US": [
"I trained my little guy till we\n",
"couldnt take any more.\r",
@ -536,11 +536,11 @@
]
},
{
"id": "pl_msg_00000304_00078",
"id": "BattleTower_Text_PikachuDotDotDot",
"en_US": "PIKACHU: ..."
},
{
"id": "pl_msg_00000304_00079",
"id": "BattleTower_Text_YouLookPowerful",
"en_US": [
"Ooh-la-la!\n",
"You look tremendously powerful!\r",
@ -549,7 +549,7 @@
]
},
{
"id": "pl_msg_00000304_00080",
"id": "BattleTower_Text_ThereAreManyToughTrainers",
"en_US": [
"There are so many tough Trainers\n",
"around...\r",
@ -558,11 +558,11 @@
]
},
{
"id": "pl_msg_00000304_00081",
"id": "BattleTower_Text_PikachuPichuu",
"en_US": "PIKACHU: Pichuu! Pichuu!"
},
{
"id": "pl_msg_00000304_00082",
"id": "BattleTower_Text_CongratulationsOnAchievingA50WinStreak",
"en_US": [
"Congratulations on achieving\n",
"a 50-win streak!\r",
@ -571,7 +571,7 @@
]
},
{
"id": "pl_msg_00000304_00083",
"id": "BattleTower_Text_CongratulationsOnAdvancingToRank",
"en_US": [
"Congratulations on advancing to\n",
"Rank {STRVAR_1 50, 0, 0}!\r",
@ -580,7 +580,7 @@
]
},
{
"id": "pl_msg_00000304_00084",
"id": "BattleTower_Text_CongratulationsOnDefeatingTowerTycoon",
"en_US": [
"Congratulations on defeating\n",
"the Tower Tycoon!\r",
@ -589,7 +589,7 @@
]
},
{
"id": "pl_msg_00000304_00085",
"id": "BattleTower_Text_CommemorativePrint",
"en_US": [
"Congratulations!\r",
"In honor of your victory, we present\n",
@ -597,21 +597,21 @@
]
},
{
"id": "pl_msg_00000304_00086",
"id": "BattleTower_Text_GoldPrintWasAddedToVsRecorder",
"en_US": [
"The Gold Print was added to\n",
"{STRVAR_1 3, 0, 0}s Vs. Recorder!\r"
]
},
{
"id": "pl_msg_00000304_00087",
"id": "BattleTower_Text_SilverPrintWasAddedToVsRecorder",
"en_US": [
"The Silver Print was added to\n",
"{STRVAR_1 3, 0, 0}s Vs. Recorder!\r"
]
},
{
"id": "pl_msg_00000304_00088",
"id": "BattleTower_Text_CongratulationsOnAchievingWinStreak",
"en_US": [
"Congratulations on achieving your\n",
"{STRVAR_1 52, 0, 0}-win streak!\r",
@ -620,7 +620,7 @@
]
},
{
"id": "pl_msg_00000304_00089",
"id": "BattleTower_Text_RunOutOfRoomForDecorationGoods",
"en_US": [
"...Uh-oh... Youve run out of room\n",
"for decoration goods.\r",
@ -629,11 +629,11 @@
]
},
{
"id": "pl_msg_00000304_00090",
"id": "BattleTower_Text_00090",
"garbage": 61
},
{
"id": "pl_msg_00000304_00091",
"id": "BattleTower_Text_NotEnoughEligiblePokemon",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -646,7 +646,7 @@
]
},
{
"id": "pl_msg_00000304_00092",
"id": "BattleTower_Text_NotEnoughEligiblePokemon2",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -660,7 +660,7 @@
]
},
{
"id": "pl_msg_00000304_00093",
"id": "BattleTower_Text_NotEnoughEligiblePokemon3",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -674,7 +674,7 @@
]
},
{
"id": "pl_msg_00000304_00094",
"id": "BattleTower_Text_NotEnoughEligiblePokemon4",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -688,7 +688,7 @@
]
},
{
"id": "pl_msg_00000304_00095",
"id": "BattleTower_Text_NotEnoughEligiblePokemon5",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -703,7 +703,7 @@
]
},
{
"id": "pl_msg_00000304_00096",
"id": "BattleTower_Text_NotEnoughEligiblePokemon6",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -718,7 +718,7 @@
]
},
{
"id": "pl_msg_00000304_00097",
"id": "BattleTower_Text_NotEnoughEligiblePokemon7",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -734,7 +734,7 @@
]
},
{
"id": "pl_msg_00000304_00098",
"id": "BattleTower_Text_NotEnoughEligiblePokemon8",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -750,7 +750,7 @@
]
},
{
"id": "pl_msg_00000304_00099",
"id": "BattleTower_Text_NotEnoughEligiblePokemon9",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -767,7 +767,7 @@
]
},
{
"id": "pl_msg_00000304_00100",
"id": "BattleTower_Text_NotEnoughEligiblePokemon10",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -784,7 +784,7 @@
]
},
{
"id": "pl_msg_00000304_00101",
"id": "BattleTower_Text_NotEnoughEligiblePokemon11",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -802,7 +802,7 @@
]
},
{
"id": "pl_msg_00000304_00102",
"id": "BattleTower_Text_NotEnoughEligiblePokemon12",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -820,7 +820,7 @@
]
},
{
"id": "pl_msg_00000304_00103",
"id": "BattleTower_Text_NotEnoughEligiblePokemon13",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -839,7 +839,7 @@
]
},
{
"id": "pl_msg_00000304_00104",
"id": "BattleTower_Text_NotEnoughEligiblePokemon14",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -858,7 +858,7 @@
]
},
{
"id": "pl_msg_00000304_00105",
"id": "BattleTower_Text_NotEnoughEligiblePokemon15",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -878,7 +878,7 @@
]
},
{
"id": "pl_msg_00000304_00106",
"id": "BattleTower_Text_NotEnoughEligiblePokemon16",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -898,7 +898,7 @@
]
},
{
"id": "pl_msg_00000304_00107",
"id": "BattleTower_Text_NotEnoughEligiblePokemon17",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -919,7 +919,7 @@
]
},
{
"id": "pl_msg_00000304_00108",
"id": "BattleTower_Text_NotEnoughEligiblePokemon18",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -940,7 +940,7 @@
]
},
{
"id": "pl_msg_00000304_00109",
"id": "BattleTower_Text_NotEnoughEligiblePokemon19",
"en_US": [
"Excuse me!\r",
"You dont have {STRVAR_1 50, 0, 0} eligible Pokémon.\r",
@ -962,32 +962,32 @@
]
},
{
"id": "pl_msg_00000304_00110",
"id": "BattleTower_Text_ThankYouForParticipating",
"en_US": [
"Thank you so much for participating!\n",
"Please come again!"
]
},
{
"id": "pl_msg_00000304_00111",
"id": "BattleTower_Text_NoDataYet",
"en_US": [
"There doesnt appear to be any\n",
"data yet..."
]
},
{
"id": "pl_msg_00000304_00112",
"id": "BattleTower_Text_DSWirelessCommunicationWillBeLaunched",
"en_US": [
"DS Wireless Communications will\n",
"be launched."
]
},
{
"id": "pl_msg_00000304_00113",
"id": "BattleTower_Text_WeLookForwardToYourNextVisit",
"en_US": "We look forward to your next visit.\r"
},
{
"id": "pl_msg_00000304_00114",
"id": "BattleTower_Text_JudgeExplanation",
"en_US": [
"You can call me the Judge.\r",
"Heheh, its actually not my real name,\n",
@ -1001,28 +1001,28 @@
]
},
{
"id": "pl_msg_00000304_00115",
"id": "BattleTower_Text_ICouldJudgeYourPokemon",
"en_US": [
"If youd like, I could judge the\n",
"intriguing potential of your Pokémon.\r"
]
},
{
"id": "pl_msg_00000304_00116",
"id": "BattleTower_Text_OhYouDontNeedMeToJudge",
"en_US": [
"...Oh.\n",
"You dont need me to judge. I get it."
]
},
{
"id": "pl_msg_00000304_00117",
"id": "BattleTower_Text_CantJudgeAnEgg",
"en_US": [
"Judge an Egg?!\n",
"Thats a tall order even for me.\r"
]
},
{
"id": "pl_msg_00000304_00118",
"id": "BattleTower_Text_DecentPotential",
"en_US": [
"I see, I see...\r",
"This Pokémons potential is decent all\n",
@ -1031,7 +1031,7 @@
]
},
{
"id": "pl_msg_00000304_00119",
"id": "BattleTower_Text_AboveAveragePotential",
"en_US": [
"I see, I see...\r",
"This Pokémons potential is above\n",
@ -1040,7 +1040,7 @@
]
},
{
"id": "pl_msg_00000304_00120",
"id": "BattleTower_Text_RelativelySuperiorPotential",
"en_US": [
"I see, I see...\r",
"This Pokémon has relatively superior\n",
@ -1049,7 +1049,7 @@
]
},
{
"id": "pl_msg_00000304_00121",
"id": "BattleTower_Text_OutstandingPotential",
"en_US": [
"I see, I see...\r",
"This Pokémon has outstanding potential\n",
@ -1058,77 +1058,77 @@
]
},
{
"id": "pl_msg_00000304_00122",
"id": "BattleTower_Text_BestPotentialInHP",
"en_US": [
"Incidentally, I would say the best\n",
"potential lies in its HP.\r"
]
},
{
"id": "pl_msg_00000304_00123",
"id": "BattleTower_Text_BestPotentialInAttack",
"en_US": [
"Incidentally, I would say the best\n",
"potential lies in its Attack stat.\r"
]
},
{
"id": "pl_msg_00000304_00124",
"id": "BattleTower_Text_BestPotentialInDefense",
"en_US": [
"Incidentally, I would say the best\n",
"potential lies in its Defense stat.\r"
]
},
{
"id": "pl_msg_00000304_00125",
"id": "BattleTower_Text_BestPotentialInSpAtk",
"en_US": [
"Incidentally, I would say the best\n",
"potential lies in its Sp. Atk stat.\r"
]
},
{
"id": "pl_msg_00000304_00126",
"id": "BattleTower_Text_BestPotentialInSpDef",
"en_US": [
"Incidentally, I would say the best\n",
"potential lies in its Sp. Def stat.\r"
]
},
{
"id": "pl_msg_00000304_00127",
"id": "BattleTower_Text_BestPotentialInSpeed",
"en_US": [
"Incidentally, I would say the best\n",
"potential lies in its Speed stat.\r"
]
},
{
"id": "pl_msg_00000304_00128",
"id": "BattleTower_Text_ItsRatherDecent",
"en_US": [
"Its rather decent in that regard.\n",
"Thats how I judged it."
]
},
{
"id": "pl_msg_00000304_00129",
"id": "BattleTower_Text_ItsVeryGood",
"en_US": [
"Its very good in that regard.\n",
"Thats how I judged it."
]
},
{
"id": "pl_msg_00000304_00130",
"id": "BattleTower_Text_ItsFantastic",
"en_US": [
"Its fantastic in that regard.\n",
"Thats how I judged it."
]
},
{
"id": "pl_msg_00000304_00131",
"id": "BattleTower_Text_ItCantBeBetter",
"en_US": [
"It cant be better in that regard.\n",
"Thats how I judged it."
]
},
{
"id": "pl_msg_00000304_00132",
"id": "BattleTower_Text_AwardRibbonToParticipatingPokemon",
"en_US": [
"A Ribbon will be awarded to the\n",
"participating Pokémon!"

View File

@ -22,7 +22,7 @@
"en_US": "FROZEN"
},
{
"id": "pl_msg_00000361_00005",
"id": "MenuEntries_Text_Exit",
"en_US": "EXIT"
},
{
@ -54,11 +54,11 @@
"en_US": "EXIT"
},
{
"id": "pl_msg_00000361_00013",
"id": "MenuEntries_Text_BattleTower_JoinGroup",
"en_US": "JOIN GROUP"
},
{
"id": "pl_msg_00000361_00014",
"id": "MenuEntries_Text_BattleTower_BecomeLeader",
"en_US": "BECOME LEADER"
},
{
@ -402,7 +402,7 @@
"garbage": 7
},
{
"id": "pl_msg_00000361_00094",
"id": "MenuEntries_Text_BattleTower_Cancel",
"en_US": "CANCEL"
},
{
@ -590,15 +590,15 @@
"en_US": "RECORDS"
},
{
"id": "pl_msg_00000361_00141",
"id": "MenuEntries_Text_BattleTower_Challenge",
"en_US": "CHALLENGE"
},
{
"id": "pl_msg_00000361_00142",
"id": "MenuEntries_Text_BattleTower_Info",
"en_US": "INFO"
},
{
"id": "pl_msg_00000361_00143",
"id": "MenuEntries_Text_BattleTower_Exit",
"en_US": "EXIT"
},
{
@ -630,11 +630,11 @@
"en_US": "JOIN GROUP"
},
{
"id": "pl_msg_00000361_00151",
"id": "MenuEntries_Text_BattleTower_CheckLeaders",
"en_US": "CHECK LEADERS"
},
{
"id": "pl_msg_00000361_00152",
"id": "MenuEntries_Text_BattleTower_ChallengeEarlierRoom",
"en_US": "CHALLENGE EARLIER ROOM"
},
{

View File

@ -176,7 +176,7 @@ BOOL Battle_Main(ApplicationManager *appMan, int *param1)
break;
case 1:
ov16_0223D10C(appMan, v0);
sub_02038F8C(v0->wiFiHistory);
WiFiHistory_FlagGeonetLinkInfo(v0->wiFiHistory);
if (!CommMan_IsConnectedToWifi()) {
GameRecords_IncrementRecordValue(v0->records, RECORD_UNK_020);

View File

@ -251,7 +251,7 @@ static void Task_StartBattleClient(void)
return;
}
ov7_0224B450();
CommClub_PrintChooseJoinMsg();
FieldCommMan_SetTask(Task_ClientWait, 0);
}

View File

@ -433,12 +433,12 @@ static void ov5_021F6AD4(UnkStruct_ov5_021F6704 *param0)
}
static const u16 sHighestIVMessageIndices[] = {
pl_msg_00000304_00122,
pl_msg_00000304_00123,
pl_msg_00000304_00124,
pl_msg_00000304_00127,
pl_msg_00000304_00125,
pl_msg_00000304_00126
BattleTower_Text_BestPotentialInHP,
BattleTower_Text_BestPotentialInAttack,
BattleTower_Text_BestPotentialInDefense,
BattleTower_Text_BestPotentialInSpeed,
BattleTower_Text_BestPotentialInSpAtk,
BattleTower_Text_BestPotentialInSpDef
};
BOOL ScrCmd_JudgeStats(ScriptContext *ctx)
@ -1119,12 +1119,12 @@ BOOL ScrCmd_339(ScriptContext *ctx)
return 0;
}
BOOL ScrCmd_330(ScriptContext *ctx)
BOOL ScrCmd_LogLinkInfoInWiFiHistory(ScriptContext *ctx)
{
WiFiHistory *wiFiHistory = SaveData_WiFiHistory(ctx->fieldSystem->saveData);
sub_02038F8C(wiFiHistory);
return 1;
WiFiHistory_FlagGeonetLinkInfo(wiFiHistory);
return TRUE;
}
BOOL ScrCmd_333(ScriptContext *ctx)

View File

@ -367,7 +367,7 @@ BOOL ScrCmd_ShowMoveTutorMoveSelectionMenu(ScriptContext *scriptContext)
miscMessageLoader = MessageLoader_Init(MESSAGE_LOADER_NARC_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_MENU_ENTRIES, HEAP_ID_FIELD3);
MoveTutorManager_SetMessageLoader(moveTutorManager, miscMessageLoader);
MoveTutorManager_AddMenuEntry(moveTutorManager, pl_msg_00000361_00005, 0xff, (u16)LIST_CANCEL); // cast required to match
MoveTutorManager_AddMenuEntry(moveTutorManager, MenuEntries_Text_Exit, 0xff, (u16)LIST_CANCEL); // cast required to match
MessageLoader_Free(miscMessageLoader);
MoveTutorManager_SetMessageLoader(moveTutorManager, moveNamesLoader);

View File

@ -4,6 +4,7 @@
#include <string.h>
#include "constants/communication/comm_type.h"
#include "generated/comm_club_ret_codes.h"
#include "field/field_system.h"
@ -71,19 +72,11 @@ typedef struct CommClubManager {
u8 unk_98;
} CommClubManager;
enum CommClubRetCode {
COMM_CLUB_RET_0,
COMM_CLUB_RET_CANCEL,
COMM_CLUB_RET_2,
COMM_CLUB_RET_ERROR,
COMM_CLUB_RET_4,
};
static void CommClubMan_Run(SysTask *task, void *param1);
static void CommClubMan_SetTask(CommClubManTaskFunc param0);
static void CommClubMan_PrintMessage(int param0, BOOL param1);
static void CommClubMan_StartBattleClient(CommClubManager *param0);
static void ov7_0224A510(CommClubManager *param0);
static void CommClubMan_StartBattleServer(CommClubManager *param0);
static void ov7_02249C44(ListMenu *param0, u32 param1, u8 param2);
static void ov7_02249C64(ListMenu *param0, u32 param1, u8 param2);
static void ov7_02249C94(ListMenu *param0, u32 param1, u8 param2);
@ -216,7 +209,7 @@ static void CommClubMan_Init(FieldSystem *fieldSystem)
sCommClubMan = Heap_Alloc(HEAP_ID_FIELD1, sizeof(CommClubManager));
MI_CpuFill8(sCommClubMan, 0, sizeof(CommClubManager));
sCommClubMan->retCode = 0;
sCommClubMan->retCode = COMM_CLUB_RET_0;
sCommClubMan->fieldSystem = fieldSystem;
sCommClubMan->unk_97 = 0;
sCommClubMan->msgLoader = MessageLoader_Init(MESSAGE_LOADER_NARC_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNK_0353, HEAP_ID_FIELD1);
@ -666,7 +659,7 @@ static void ov7_0224A438(ListMenu *param0, u32 param1, u8 param2)
}
}
static void ov7_0224A510(CommClubManager *commClubMan)
static void CommClubMan_StartBattleServer(CommClubManager *commClubMan)
{
FieldCommMan_StartBattleServer(commClubMan->fieldSystem, commClubMan->commType, CommClubMan_Regulation());
}
@ -1052,7 +1045,7 @@ static void CommClubTask_DifferentRegulation(SysTask *task, void *param1)
if (gSystem.pressedKeys & (PAD_BUTTON_A | PAD_BUTTON_B)) {
CommClubMan_DestroyList(task, commClubMan);
CommClubMan_Disconnect();
sCommClubMan->retCode = 4;
sCommClubMan->retCode = COMM_CLUB_RET_4;
}
}
}
@ -1573,7 +1566,7 @@ static void ov7_0224B370(SysTask *task, void *param1)
static void ov7_0224B3A8(CommClubManager *commClubMan)
{
sub_02036994(0);
sCommClubMan->retCode = 2;
sCommClubMan->retCode = COMM_CLUB_RET_2;
CommMan_SetErrorHandling(1, 1);
CommInfo_SendBattleRegulation();
sub_02033EA8(1);
@ -1594,12 +1587,12 @@ static int CommClubMan_Regulation(void)
return sCommClubMan->unk_92 + (sCommClubMan->unk_93 << 4);
}
void ov7_0224B414(FieldSystem *fieldSystem, int commType, int param2, int param3)
void CommClub_StartBattleClient(FieldSystem *fieldSystem, int commType, int param2, int param3)
{
CommClubMan_Init(fieldSystem);
sCommClubMan->commType = commType;
if ((commType == COMM_TYPE_MIX_BATTLE) || (commType == COMM_TYPE_MULTI_BATTLE_1)) {
if (commType == COMM_TYPE_MIX_BATTLE || commType == COMM_TYPE_MULTI_BATTLE_1) {
fieldSystem->unk_B0 = NULL;
}
@ -1609,35 +1602,35 @@ void ov7_0224B414(FieldSystem *fieldSystem, int commType, int param2, int param3
CommClubMan_StartBattleClient(sCommClubMan);
}
void ov7_0224B450(void)
void CommClub_PrintChooseJoinMsg(void)
{
CommClubMan_PrintChooseJoinMsg(sCommClubMan);
}
u32 ov7_0224B460(void)
u32 CommClub_CheckWindowOpenClient(void)
{
u32 v0 = sCommClubMan->retCode;
u32 ret = sCommClubMan->retCode;
if (0 != v0) {
if (COMM_CLUB_RET_0 != ret) {
CommClubMan_Delete();
}
return v0;
return ret;
}
void ov7_0224B47C(FieldSystem *fieldSystem, int commType, int param2, int param3)
void CommClub_StartBattleServer(FieldSystem *fieldSystem, int commType, int param2, int param3)
{
CommClubMan_Init(fieldSystem);
sCommClubMan->commType = commType;
if ((commType == COMM_TYPE_MIX_BATTLE) || (commType == COMM_TYPE_MULTI_BATTLE_1)) {
if (commType == COMM_TYPE_MIX_BATTLE || commType == COMM_TYPE_MULTI_BATTLE_1) {
fieldSystem->unk_B0 = NULL;
}
sCommClubMan->unk_92 = param2;
sCommClubMan->unk_93 = param3;
ov7_0224A510(sCommClubMan);
CommClubMan_StartBattleServer(sCommClubMan);
}
void ov7_0224B4B8(void)
@ -1645,11 +1638,11 @@ void ov7_0224B4B8(void)
ov7_0224A53C(sCommClubMan);
}
u32 CommClub_CheckWindowOpenClient(void)
u32 CommClub_CheckWindowOpenServer(void)
{
u32 ret = sCommClubMan->retCode;
if (0 != ret) {
if (COMM_CLUB_RET_0 != ret) {
CommClubMan_Delete();
}

View File

@ -4156,7 +4156,7 @@ static int ov65_022321F4(UnkStruct_ov65_0222EBE0 *param0, int param1)
} else {
if (param0->unk_3BC == 0) {
if (CommTiming_IsSyncState(13)) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(14);
param0->unk_3E4 = 0;

View File

@ -1905,7 +1905,7 @@ static BOOL ov65_02237DF8(UnkStruct_ov65_022367A8 *param0, UnkStruct_0207DE04 *p
{
if (CommTiming_IsSyncState(13)) {
ov65_02237498(param0, param1);
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(14);
param0->unk_00.unk_05 = 15;
@ -2375,7 +2375,7 @@ static BOOL ov65_022383D0(UnkStruct_ov65_022367A8 *param0, UnkStruct_0207DE04 *p
}
if (ov65_02237A10(param0) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(14);
ov65_022378C4(param0, param1, param2);

View File

@ -488,7 +488,7 @@ BOOL ov70_02265F38(UnkStruct_ov70_02263344 *param0, UnkStruct_ov70_0225DEE8 *par
ov70_02266CCC(&v0->unk_3C, 0);
ov70_02266CF0(&v0->unk_3C, param1, 0);
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
ov66_0222E238(v2);
ov70_02266B18(v0, param0, 13, 14);

View File

@ -1138,7 +1138,7 @@ static void ov88_0223C370(UnkStruct_02095E80 *param0, ApplicationManager *appMan
param0->unk_18C = TrainerInfo_NameNewStrbuf(v0->unk_04, 26);
param0->unk_190 = MessageLoader_GetNewStrbuf(param0->unk_184, 42);
sub_02038F8C(v0->wiFiHistory);
WiFiHistory_FlagGeonetLinkInfo(v0->wiFiHistory);
}
static void ov88_0223C44C(BgConfig *param0)

View File

@ -612,6 +612,6 @@ void ov104_0222E630(SaveData *saveData)
{
WiFiHistory *wiFiHistory = SaveData_WiFiHistory(saveData);
sub_02038F8C(wiFiHistory);
WiFiHistory_FlagGeonetLinkInfo(wiFiHistory);
return;
}

View File

@ -1912,7 +1912,7 @@ static BOOL ov104_02230FCC(UnkStruct_ov104_0222E930 *param0)
static BOOL ov104_02230FEC(UnkStruct_ov104_0222E930 *param0)
{
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
return 0;
}

View File

@ -39,14 +39,14 @@ BOOL ov104_02239364(UnkStruct_ov104_0222E930 *param0);
BOOL ov104_0223939C(UnkStruct_ov104_0222E930 *param0);
BOOL ov104_02239400(UnkStruct_ov104_0222E930 *param0);
static BOOL ov104_0223942C(UnkStruct_ov104_0222E930 *param0);
static u16 ov104_0223927C(UnkStruct_0204AFC4 *param0, u8 param1);
static BOOL ov104_02239464(UnkStruct_ov104_0222E930 *param0, UnkStruct_0204AFC4 *param1, SaveData *saveData, u16 param3, u16 param4);
static u16 ov104_0223927C(BattleTower *battleTower, u8 param1);
static BOOL ov104_02239464(UnkStruct_ov104_0222E930 *param0, BattleTower *battleTower, SaveData *saveData, u16 param3, u16 param4);
BOOL ov104_02239130(UnkStruct_ov104_0222E930 *param0)
{
TVBroadcast *broadcast;
Pokemon *v1;
UnkStruct_0204AFC4 *v2;
BattleTower *battleTower;
int v3, v4;
u16 v5, v6;
u16 *v7;
@ -55,62 +55,62 @@ BOOL ov104_02239130(UnkStruct_ov104_0222E930 *param0)
v5 = ov104_0222EA48(param0);
v6 = ov104_0222FC00(param0);
v7 = ov104_0222FBE4(param0);
v2 = sub_0209B978(param0->unk_00->unk_00);
battleTower = sub_0209B978(param0->unk_00->unk_00);
switch (v5) {
case 2:
sub_02049F8C();
break;
case (30 + 16):
*v7 = sub_0204AA04(v2);
*v7 = sub_0204AA04(battleTower);
broadcast = SaveData_GetTVBroadcast(v8->saveData);
sub_0206D0C8(broadcast, *v7);
GameRecords_AddToRecordValue(SaveData_GetGameRecords(v8->saveData), RECORD_UNK_068, *v7);
break;
case (30 + 25):
*v7 = ov104_0223927C(v2, v6);
*v7 = ov104_0223927C(battleTower, v6);
break;
case (30 + 3):
*v7 = sub_0204A578(v2);
*v7 = sub_0204A578(battleTower);
break;
case (30 + 4):
*v7 = ov104_022395B4(v2);
*v7 = ov104_022395B4(battleTower);
break;
case (30 + 5):
*v7 = sub_0204A57C(v2);
*v7 = sub_0204A57C(battleTower);
break;
case (30 + 6):
*v7 = ov104_022395D8(v2);
*v7 = ov104_022395D8(battleTower);
break;
case (30 + 13):
*v7 = (u16)sub_0204A9F8(v2);
*v7 = (u16)BattleTower_GetChallengeMode(battleTower);
break;
case (30 + 10):
ov104_022394A4(v2, v8->saveData);
ov104_022394A4(battleTower, v8->saveData);
break;
case (30 + 11):
*v7 = ov104_02239588(v2, v6);
*v7 = ov104_02239588(battleTower, v6);
break;
case (30 + 14):
ov104_022395A0(v2, v6);
ov104_022395A0(battleTower, v6);
break;
case (30 + 7):
sub_0204A660(v2, v8->saveData);
sub_0204A660(battleTower, v8->saveData);
break;
case (30 + 8):
sub_0204A7A4(v2, v8->saveData, v8->journalEntry);
sub_0204A7A4(battleTower, v8->saveData, v8->journalEntry);
break;
case (30 + 9):
sub_0204A8C8(v2);
sub_0204A8C8(battleTower);
break;
case (30 + 28):
MI_CpuClear8(v2->unk_884, 70);
MI_CpuClear8(battleTower->unk_884, 70);
break;
case (30 + 29):
v2->unk_8D6 = 1;
battleTower->unk_8D6 = 1;
break;
case 100:
if (v2 == NULL) {
if (battleTower == NULL) {
*v7 = 1;
} else {
*v7 = 0;
@ -124,7 +124,7 @@ BOOL ov104_02239130(UnkStruct_ov104_0222E930 *param0)
return 0;
}
static u16 ov104_0223927C(UnkStruct_0204AFC4 *param0, u8 param1)
static u16 ov104_0223927C(BattleTower *battleTower, u8 param1)
{
static const u16 v0[] = {
0x8d,
@ -135,14 +135,14 @@ static u16 ov104_0223927C(UnkStruct_0204AFC4 *param0, u8 param1)
};
if (param1 == 2) {
return param0->unk_10_5;
return battleTower->unk_10_5;
}
if (param1 == 1) {
if (param0->unk_0F == 2) {
return v0[param0->unk_10_5];
if (battleTower->challengeMode == 2) {
return v0[battleTower->unk_10_5];
} else {
if (param0->unk_12) {
if (battleTower->unk_12) {
return 0x61;
} else {
return 0x0;
@ -150,7 +150,7 @@ static u16 ov104_0223927C(UnkStruct_0204AFC4 *param0, u8 param1)
}
}
if (param0->unk_11) {
if (battleTower->unk_11) {
return 0x61;
} else {
return 0x0;
@ -161,26 +161,26 @@ BOOL ov104_022392C0(UnkStruct_ov104_0222E930 *param0)
{
u8 v0;
u16 *v1;
UnkStruct_0204AFC4 *v2;
BattleTower *battleTower;
UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(param0->unk_00->unk_00);
u16 v4 = (*((param0)->unk_1C++));
v2 = sub_0209B978(param0->unk_00->unk_00);
battleTower = sub_0209B978(param0->unk_00->unk_00);
if (v2 == NULL) {
if (battleTower == NULL) {
return 0;
}
v1 = v2->unk_78[v4].unk_00.unk_18;
v1 = battleTower->unk_78[v4].unk_00.unk_18;
ov104_0223310C(param0, v1, ov104_0223A790(v2->unk_0F));
ov104_0223310C(param0, v1, ov104_0223A790(battleTower->challengeMode));
return 1;
}
BOOL ov104_02239300(UnkStruct_ov104_0222E930 *param0)
{
UnkStruct_0204AFC4 *v0 = sub_0209B978(param0->unk_00->unk_00);
sub_0204A32C(v0);
BattleTower *battleTower = sub_0209B978(param0->unk_00->unk_00);
BattleTower_Free(battleTower);
return 0;
}
@ -188,13 +188,13 @@ BOOL ov104_02239300(UnkStruct_ov104_0222E930 *param0)
BOOL ov104_02239314(UnkStruct_ov104_0222E930 *param0)
{
FieldBattleDTO *v0;
UnkStruct_0204AFC4 *v1;
BattleTower *battleTower;
UnkStruct_ov104_02230BE4 *v2 = sub_0209B970(param0->unk_00->unk_00);
v1 = sub_0209B978(param0->unk_00->unk_00);
v0 = ov104_0223A580(v1, v2);
battleTower = sub_0209B978(param0->unk_00->unk_00);
v0 = ov104_0223A580(battleTower, v2);
v1->unk_8D0 = v0;
battleTower->unk_8D0 = v0;
Sound_SetSceneAndPlayBGM(SOUND_SCENE_BATTLE, SEQ_BATTLE_TRAINER, 1);
sub_0209B988(param0->unk_00->unk_00, &gBattleApplicationTemplate, v0, 0, NULL);
@ -204,16 +204,16 @@ BOOL ov104_02239314(UnkStruct_ov104_0222E930 *param0)
BOOL ov104_02239364(UnkStruct_ov104_0222E930 *param0)
{
UnkStruct_0204AFC4 *v0;
BattleTower *battleTower;
FieldBattleDTO *v1;
u16 *v2;
v0 = sub_0209B978(param0->unk_00->unk_00);
battleTower = sub_0209B978(param0->unk_00->unk_00);
v2 = ov104_0222FBE4(param0);
v1 = v0->unk_8D0;
v1 = battleTower->unk_8D0;
v0->unk_8CC = CheckPlayerWonBattle(v1->resultMask);
*v2 = v0->unk_8CC;
battleTower->unk_8CC = CheckPlayerWonBattle(v1->resultMask);
*v2 = battleTower->unk_8CC;
FieldBattleDTO_Free(v1);
return 0;
@ -221,24 +221,24 @@ BOOL ov104_02239364(UnkStruct_ov104_0222E930 *param0)
BOOL ov104_0223939C(UnkStruct_ov104_0222E930 *param0)
{
UnkStruct_0204AFC4 *v0;
BattleTower *battleTower;
UnkStruct_ov104_02230BE4 *v1 = sub_0209B970(param0->unk_00->unk_00);
u16 v2 = ov104_0222FC00(param0);
u16 v3 = ov104_0222FC00(param0);
u16 *v4 = ov104_0222FBE4(param0);
v0 = sub_0209B978(param0->unk_00->unk_00);
battleTower = sub_0209B978(param0->unk_00->unk_00);
switch (v2) {
case 2:
ov104_0223A734(v0, v3);
ov104_0223A734(battleTower, v3);
break;
default:
GF_ASSERT(0);
break;
}
if (sub_02036614(CommSys_CurNetId(), v0->unk_83E) == 1) {
if (sub_02036614(CommSys_CurNetId(), battleTower->unk_83E) == 1) {
*v4 = 1;
} else {
*v4 = 0;
@ -262,19 +262,19 @@ BOOL ov104_02239400(UnkStruct_ov104_0222E930 *param0)
static BOOL ov104_0223942C(UnkStruct_ov104_0222E930 *param0)
{
UnkStruct_0204AFC4 *v0;
BattleTower *battleTower;
UnkStruct_ov104_02230BE4 *v1 = sub_0209B970(param0->unk_00->unk_00);
v0 = sub_0209B978(param0->unk_00->unk_00);
battleTower = sub_0209B978(param0->unk_00->unk_00);
if (ov104_02239464(param0, v0, v1->saveData, param0->unk_78[0], param0->unk_78[1]) == 1) {
if (ov104_02239464(param0, battleTower, v1->saveData, param0->unk_78[0], param0->unk_78[1]) == 1) {
return 1;
}
return 0;
}
static BOOL ov104_02239464(UnkStruct_ov104_0222E930 *param0, UnkStruct_0204AFC4 *param1, SaveData *saveData, u16 param3, u16 param4)
static BOOL ov104_02239464(UnkStruct_ov104_0222E930 *param0, BattleTower *battleTower, SaveData *saveData, u16 param3, u16 param4)
{
u16 *v0;
const void *v1 = sub_0203664C(1 - CommSys_CurNetId());
@ -287,7 +287,7 @@ static BOOL ov104_02239464(UnkStruct_ov104_0222E930 *param0, UnkStruct_0204AFC4
switch (param3) {
case 2:
*v0 = ov104_0223A750(param1, v1);
*v0 = ov104_0223A750(battleTower, v1);
break;
default:
GF_ASSERT(0);

View File

@ -9,67 +9,67 @@
#include "savedata.h"
#include "unk_0206B9D8.h"
u16 ov104_02239588(UnkStruct_0204AFC4 *param0, u16 param1);
void ov104_022395A0(UnkStruct_0204AFC4 *param0, u16 param1);
u16 ov104_022395B4(UnkStruct_0204AFC4 *param0);
u16 ov104_022395D8(UnkStruct_0204AFC4 *param0);
u16 ov104_02239588(BattleTower *battleTower, u16 param1);
void ov104_022395A0(BattleTower *battleTower, u16 param1);
u16 ov104_022395B4(BattleTower *battleTower);
u16 ov104_022395D8(BattleTower *battleTower);
void ov104_022394A4(UnkStruct_0204AFC4 *param0, SaveData *saveData)
void ov104_022394A4(BattleTower *battleTower, SaveData *saveData)
{
switch (param0->unk_0F) {
switch (battleTower->challengeMode) {
case 4:
case 5:
ov104_0223A30C(saveData, param0->unk_78, param0->unk_0C - 1);
ov104_0223A30C(saveData, battleTower->unk_78, battleTower->unk_0C - 1);
break;
case 2:
case 3:
case 6:
ov104_0223A0C4(param0, &(param0->unk_78[0]), param0->unk_3E[(param0->unk_0C - 1) * 2 + 0], param0->unk_0E, NULL, NULL, NULL, param0->heapID);
ov104_0223A0C4(battleTower, &(battleTower->unk_78[0]), battleTower->unk_3E[(battleTower->unk_0C - 1) * 2 + 0], battleTower->partySize, NULL, NULL, NULL, battleTower->heapID);
u16 v1[2];
u16 v2[2];
for (int v0 = 0; v0 < param0->unk_0E; v0++) {
v1[v0] = param0->unk_78[0].unk_30[v0].species;
v2[v0] = param0->unk_78[0].unk_30[v0].item;
for (int v0 = 0; v0 < battleTower->partySize; v0++) {
v1[v0] = battleTower->unk_78[0].unk_30[v0].species;
v2[v0] = battleTower->unk_78[0].unk_30[v0].item;
}
ov104_0223A0C4(param0, &(param0->unk_78[1]), param0->unk_3E[(param0->unk_0C - 1) * 2 + 1], param0->unk_0E, v1, v2, NULL, param0->heapID);
ov104_0223A0C4(battleTower, &(battleTower->unk_78[1]), battleTower->unk_3E[(battleTower->unk_0C - 1) * 2 + 1], battleTower->partySize, v1, v2, NULL, battleTower->heapID);
break;
case 1:
case 0:
default:
ov104_0223A0C4(param0, &(param0->unk_78[0]), param0->unk_3E[param0->unk_0C - 1], param0->unk_0E, NULL, NULL, NULL, param0->heapID);
ov104_0223A0C4(battleTower, &(battleTower->unk_78[0]), battleTower->unk_3E[battleTower->unk_0C - 1], battleTower->partySize, NULL, NULL, NULL, battleTower->heapID);
break;
}
}
u16 ov104_02239588(UnkStruct_0204AFC4 *param0, u16 param1)
u16 ov104_02239588(BattleTower *battleTower, u16 param1)
{
return ov104_0222E10C(param0->unk_78[param1].unk_00.trainerType);
return ov104_0222E10C(battleTower->unk_78[param1].unk_00.trainerType);
}
void ov104_022395A0(UnkStruct_0204AFC4 *param0, u16 param1)
void ov104_022395A0(BattleTower *battleTower, u16 param1)
{
param0->unk_10_1 = param1;
battleTower->unk_10_1 = param1;
}
u16 ov104_022395B4(UnkStruct_0204AFC4 *param0)
u16 ov104_022395B4(BattleTower *battleTower)
{
++param0->unk_0D;
++battleTower->unk_0D;
if (param0->unk_0F != 6) {
param0->unk_08 = sub_0206BFF0(param0->unk_08);
if (battleTower->challengeMode != 6) {
battleTower->unk_08 = sub_0206BFF0(battleTower->unk_08);
}
return ++param0->unk_0C;
return ++battleTower->unk_0C;
}
u16 ov104_022395D8(UnkStruct_0204AFC4 *param0)
u16 ov104_022395D8(BattleTower *battleTower)
{
if ((u32)param0->unk_1A + param0->unk_0D > 0xFFFF) {
if ((u32)battleTower->unk_1A + battleTower->unk_0D > 0xFFFF) {
return 0xFFFF;
} else {
return param0->unk_1A + param0->unk_0D;
return battleTower->unk_1A + battleTower->unk_0D;
}
}

View File

@ -313,7 +313,7 @@ BOOL ov104_022397B0(UnkStruct_ov104_0222E930 *param0)
BOOL ov104_02239B14(UnkStruct_ov104_0222E930 *param0)
{
int v0;
UnkStruct_0204AFC4 *v1;
BattleTower *battleTower;
UnkStruct_ov104_02230BE4 *v2;
UnkStruct_0209BBA4 *v3;
UnkStruct_0209BBA4 v4;
@ -324,43 +324,43 @@ BOOL ov104_02239B14(UnkStruct_ov104_0222E930 *param0)
v4 = *v3;
ov104_02239C7C(v3);
v1 = sub_0204A124(v2->saveData, 0, 6);
sub_0209B980(param0->unk_00->unk_00, v1);
battleTower = BattleTower_Init(v2->saveData, 0, 6);
sub_0209B980(param0->unk_00->unk_00, battleTower);
if (v1->unk_0F == 6) {
if (battleTower->challengeMode == 6) {
ov104_0222E630(v2->saveData);
}
for (v0 = 0; v0 < v1->unk_0E; v0++) {
v1->unk_2A[v0] = v4.unk_6A[v0];
v1->unk_2E[v0] = v4.unk_76[v0];
v1->unk_36[v0] = v4.unk_7E[v0];
for (v0 = 0; v0 < battleTower->partySize; v0++) {
battleTower->unk_2A[v0] = v4.unk_6A[v0];
battleTower->unk_2E[v0] = v4.unk_76[v0];
battleTower->unk_36[v0] = v4.unk_7E[v0];
}
v1->unk_16[0] = v4.unk_86[0];
v1->unk_16[1] = v4.unk_86[1];
v1->unk_12 = v4.unk_58;
v1->unk_10_5 = 5 + v1->unk_12;
battleTower->unk_16[0] = v4.unk_86[0];
battleTower->unk_16[1] = v4.unk_86[1];
battleTower->unk_12 = v4.unk_58;
battleTower->unk_10_5 = 5 + battleTower->unk_12;
if (CommSys_CurNetId() == 0) {
sub_0204A4C8(v1, v2->saveData);
sub_0204A4C8(battleTower, v2->saveData);
}
Party_HealAllMembers(SaveData_GetParty(v2->saveData));
sub_0209BA80(v1);
sub_0209BA80(battleTower);
v1->unk_8D4 = 0;
battleTower->unk_8D4 = 0;
return 0;
}
BOOL ov104_02239BF4(UnkStruct_ov104_0222E930 *param0)
{
UnkStruct_0204AFC4 *v0;
BattleTower *battleTower;
u16 *v1 = ov104_0222FBE4(param0);
v0 = sub_0209B978(param0->unk_00->unk_00);
*v1 = sub_0209BB08(v0);
battleTower = sub_0209B978(param0->unk_00->unk_00);
*v1 = sub_0209BB08(battleTower);
return 1;
}
@ -373,21 +373,21 @@ BOOL ov104_02239C10(UnkStruct_ov104_0222E930 *param0)
static BOOL ov104_02239C20(UnkStruct_ov104_0222E930 *param0)
{
UnkStruct_0204AFC4 *v0 = sub_0209B978(param0->unk_00->unk_00);
BattleTower *battleTower = sub_0209B978(param0->unk_00->unk_00);
if (v0->unk_8D4 < 2) {
if (battleTower->unk_8D4 < 2) {
return 0;
}
v0->unk_8D4 = 0;
battleTower->unk_8D4 = 0;
return 1;
}
BOOL ov104_02239C44(UnkStruct_ov104_0222E930 *param0)
{
UnkStruct_0204AFC4 *v0 = sub_0209B978(param0->unk_00->unk_00);
sub_0204A32C(v0);
v0 = NULL;
BattleTower *battleTower = sub_0209B978(param0->unk_00->unk_00);
BattleTower_Free(battleTower);
battleTower = NULL;
return 0;
}

View File

@ -3,6 +3,7 @@
#include <nitro.h>
#include <string.h>
#include "generated/battle_tower_modes.h"
#include "generated/species_data_params.h"
#include "struct_defs/battle_frontier_pokemon_data.h"
@ -624,31 +625,31 @@ static const UnkStruct_ov104_0223FCB4 Unk_ov104_0223FCB4[] = {
void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *param0);
void ov104_0223A30C(SaveData *saveData, UnkStruct_ov104_0223A348 *param1, const u8 param2);
FieldBattleDTO *ov104_0223A580(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_02230BE4 *param1);
void ov104_0223A734(UnkStruct_0204AFC4 *param0, u16 param1);
u16 ov104_0223A750(UnkStruct_0204AFC4 *param0, const u16 *param1);
FieldBattleDTO *ov104_0223A580(BattleTower *battleTower, UnkStruct_ov104_02230BE4 *param1);
void ov104_0223A734(BattleTower *battleTower, u16 param1);
u16 ov104_0223A750(BattleTower *battleTower, const u16 *param1);
int ov104_0223A768(u8 param0);
int ov104_0223A77C(u8 param0);
int ov104_0223A790(u8 param0);
static BOOL ov104_0223A118(UnkStruct_0204AFC4 *param0, BattleFrontierTrainerData *param1, u16 param2, FrontierPokemonDataDTO *param3, u8 param4, u16 *param5, u16 *param6, UnkStruct_0204B404 *param7, int param8);
static BOOL ov104_0223A118(BattleTower *battleTower, BattleFrontierTrainerData *param1, u16 param2, FrontierPokemonDataDTO *param3, u8 param4, u16 *param5, u16 *param6, UnkStruct_0204B404 *param7, int param8);
static void ov104_0223A348(UnkStruct_ov104_0223A348 *param0, const u8 param1);
static u32 ov104_0223A3A8(UnkStruct_0204AFC4 *param0, FrontierPokemonDataDTO *param1, u16 param2, u32 param3, u32 param4, u8 param5, u8 param6, BOOL param7, int param8);
static u32 ov104_0223A700(u8 param0);
static u32 ov104_0223A3A8(BattleTower *battleTower, FrontierPokemonDataDTO *param1, u16 param2, u32 param3, u32 param4, u8 param5, u8 param6, BOOL param7, int param8);
static u32 BattleTower_GetBattleTypeFromChallengeMode(u8 challengeMode);
static void ov104_0223A6AC(FieldBattleDTO *param0, UnkStruct_ov104_0223A348 *param1, int param2, int param3, int param4);
static int ov104_0223A7AC(u8 param0);
BOOL ov104_0223A0C4(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_0223A348 *param1, u16 param2, int param3, u16 *param4, u16 *param5, UnkStruct_0204B404 *param6, int heapID)
BOOL ov104_0223A0C4(BattleTower *battleTower, UnkStruct_ov104_0223A348 *param1, u16 param2, int param3, u16 *param4, u16 *param5, UnkStruct_0204B404 *param6, int heapID)
{
BOOL v0 = 0;
BattleFrontierTrainerData *v1 = ov104_0222DD04(&param1->unk_00, param2, heapID, ov104_0223A77C(param0->unk_0F));
v0 = ov104_0223A118(param0, v1, param2, &param1->unk_30[0], param3, param4, param5, param6, heapID);
BattleFrontierTrainerData *v1 = ov104_0222DD04(&param1->unk_00, param2, heapID, ov104_0223A77C(battleTower->challengeMode));
v0 = ov104_0223A118(battleTower, v1, param2, &param1->unk_30[0], param3, param4, param5, param6, heapID);
Heap_Free(v1);
return v0;
}
static BOOL ov104_0223A118(UnkStruct_0204AFC4 *param0, BattleFrontierTrainerData *param1, u16 param2, FrontierPokemonDataDTO *param3, u8 param4, u16 *param5, u16 *param6, UnkStruct_0204B404 *param7, int param8)
static BOOL ov104_0223A118(BattleTower *battleTower, BattleFrontierTrainerData *param1, u16 param2, FrontierPokemonDataDTO *param3, u8 param4, u16 *param5, u16 *param6, UnkStruct_0204B404 *param7, int param8)
{
int v0;
u8 v2;
@ -669,13 +670,13 @@ static BOOL ov104_0223A118(UnkStruct_0204AFC4 *param0, BattleFrontierTrainerData
v9 = 0;
while (v8 != param4) {
v3 = sub_0204AEC0(param0) % param1->numSets;
v3 = sub_0204AEC0(battleTower) % param1->numSets;
v5 = param1->setIDs[v3];
ov104_0222DCF4(&v12, v5, ov104_0223A768(param0->unk_0F));
ov104_0222DCF4(&v12, v5, ov104_0223A768(battleTower->challengeMode));
for (v0 = 0; v0 < v8; v0++) {
ov104_0222DCF4(&v11, v6[v0], ov104_0223A768(param0->unk_0F));
ov104_0222DCF4(&v11, v6[v0], ov104_0223A768(battleTower->challengeMode));
if (v11.species == v12.species) {
break;
@ -700,7 +701,7 @@ static BOOL ov104_0223A118(UnkStruct_0204AFC4 *param0, BattleFrontierTrainerData
if (v9 < 50) {
for (v0 = 0; v0 < v8; v0++) {
ov104_0222DCF4(&v11, v6[v0], ov104_0223A768(param0->unk_0F));
ov104_0222DCF4(&v11, v6[v0], ov104_0223A768(battleTower->challengeMode));
if ((v11.item) && (v11.item == v12.item)) {
break;
@ -731,14 +732,14 @@ static BOOL ov104_0223A118(UnkStruct_0204AFC4 *param0, BattleFrontierTrainerData
}
v2 = sub_0204AE84(param2);
v4 = (sub_0204AEC0(param0) | (sub_0204AEC0(param0) << 16));
v4 = (sub_0204AEC0(battleTower) | (sub_0204AEC0(battleTower) << 16));
if (v9 >= 50) {
v10 = 1;
}
for (v0 = 0; v0 < v8; v0++) {
v7[v0] = ov104_0223A3A8(param0, &(param3[v0]), v6[v0], v4, 0, v2, v0, v10, param8);
v7[v0] = ov104_0223A3A8(battleTower, &(param3[v0]), v6[v0], v4, 0, v2, v0, v10, param8);
}
if (param7 == NULL) {
@ -793,7 +794,7 @@ static const u16 Unk_ov104_0223FCAC[] = {
ITEM_QUICK_CLAW,
};
static u32 ov104_0223A3A8(UnkStruct_0204AFC4 *param0, FrontierPokemonDataDTO *param1, u16 param2, u32 param3, u32 param4, u8 param5, u8 param6, BOOL param7, int param8)
static u32 ov104_0223A3A8(BattleTower *battleTower, FrontierPokemonDataDTO *param1, u16 param2, u32 param3, u32 param4, u8 param5, u8 param6, BOOL param7, int param8)
{
int v0;
int v1;
@ -801,7 +802,7 @@ static u32 ov104_0223A3A8(UnkStruct_0204AFC4 *param0, FrontierPokemonDataDTO *pa
BattleFrontierPokemonData v4;
MI_CpuClear8(param1, sizeof(FrontierPokemonDataDTO));
ov104_0222DCF4(&v4, param2, ov104_0223A768(param0->unk_0F));
ov104_0222DCF4(&v4, param2, ov104_0223A768(battleTower->challengeMode));
param1->species = v4.species;
param1->form = v4.form;
@ -826,7 +827,7 @@ static u32 ov104_0223A3A8(UnkStruct_0204AFC4 *param0, FrontierPokemonDataDTO *pa
if (param4 == 0) {
do {
v2 = (sub_0204AEC0(param0) | sub_0204AEC0(param0) << 16);
v2 = (sub_0204AEC0(battleTower) | sub_0204AEC0(battleTower) << 16);
} while ((v4.nature != Pokemon_GetNatureOf(v2)) || (Pokemon_IsPersonalityShiny(param3, v2) == 1));
param1->personality = v2;
@ -883,11 +884,11 @@ static u32 ov104_0223A3A8(UnkStruct_0204AFC4 *param0, FrontierPokemonDataDTO *pa
return v2;
}
FieldBattleDTO *ov104_0223A580(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_02230BE4 *param1)
FieldBattleDTO *ov104_0223A580(BattleTower *battleTower, UnkStruct_ov104_02230BE4 *param1)
{
int v0;
FieldBattleDTO *v3 = FieldBattleDTO_New(param0->heapID, ov104_0223A700(param0->unk_0F));
FieldBattleDTO *v3 = FieldBattleDTO_New(battleTower->heapID, BattleTower_GetBattleTypeFromChallengeMode(battleTower->challengeMode));
SaveData *saveData = param1->saveData;
Party *party = SaveData_GetParty(saveData);
@ -896,13 +897,13 @@ FieldBattleDTO *ov104_0223A580(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_02230
v3->background = BACKGROUND_BATTLE_TOWER;
v3->terrain = TERRAIN_BATTLE_TOWER;
Pokemon *mon = Pokemon_New(param0->heapID);
Pokemon *mon = Pokemon_New(battleTower->heapID);
u8 level = 50;
Party_InitWithCapacity(v3->parties[BATTLER_PLAYER_1], param0->unk_0E);
Party_InitWithCapacity(v3->parties[BATTLER_PLAYER_1], battleTower->partySize);
for (v0 = 0; v0 < param0->unk_0E; v0++) {
Pokemon_Copy(Party_GetPokemonBySlotIndex(party, param0->unk_2A[v0]), mon);
for (v0 = 0; v0 < battleTower->partySize; v0++) {
Pokemon_Copy(Party_GetPokemonBySlotIndex(party, battleTower->unk_2A[v0]), mon);
if (Pokemon_GetValue(mon, MON_DATA_LEVEL, NULL) > level) {
u32 v2 = Pokemon_GetSpeciesBaseExpAt(Pokemon_GetValue(mon, MON_DATA_SPECIES, NULL), level);
@ -917,19 +918,19 @@ FieldBattleDTO *ov104_0223A580(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_02230
Heap_Free(mon);
FieldBattleDTO_CopyPlayerInfoToTrainerData(v3);
ov104_0223A6AC(v3, &(param0->unk_78[0]), param0->unk_0E, BATTLER_ENEMY_1, param0->heapID);
ov104_0223A6AC(v3, &(battleTower->unk_78[0]), battleTower->partySize, BATTLER_ENEMY_1, battleTower->heapID);
for (v0 = 0; v0 < MAX_BATTLERS; v0++) {
v3->trainer[v0].header.aiMask = (0x1 | 0x2 | 0x4);
}
switch (param0->unk_0F) {
switch (battleTower->challengeMode) {
case 2:
ov104_0223A6AC(v3, &(param0->unk_298[param0->unk_10_5]), param0->unk_0E, BATTLER_PLAYER_2, param0->heapID);
ov104_0223A6AC(v3, &(battleTower->unk_298[battleTower->unk_10_5]), battleTower->partySize, BATTLER_PLAYER_2, battleTower->heapID);
// fall through
case 3:
case 6:
ov104_0223A6AC(v3, &(param0->unk_78[1]), param0->unk_0E, BATTLER_ENEMY_2, param0->heapID);
ov104_0223A6AC(v3, &(battleTower->unk_78[1]), battleTower->partySize, BATTLER_ENEMY_2, battleTower->heapID);
break;
default:
break;
@ -951,35 +952,35 @@ static void ov104_0223A6AC(FieldBattleDTO *param0, UnkStruct_ov104_0223A348 *par
Heap_Free(mon);
}
static u32 ov104_0223A700(u8 param0)
static u32 BattleTower_GetBattleTypeFromChallengeMode(u8 challengeMode)
{
switch (param0) {
case 0:
case 4:
switch (challengeMode) {
case BATTLE_TOWER_MODE_SINGLE:
case BATTLE_TOWER_MODE_WIFI:
return (BATTLE_TYPE_SINGLES | BATTLE_TYPE_TRAINER) | BATTLE_TYPE_FRONTIER;
case 1:
case BATTLE_TOWER_MODE_DOUBLE:
return BATTLE_TYPE_FRONTIER_DOUBLES;
case 2:
case BATTLE_TOWER_MODE_MULTI:
return BATTLE_TYPE_FRONTIER_WITH_AI_PARTNER;
case 3:
case 6:
case BATTLE_TOWER_MODE_LINK_MULTI:
case BATTLE_TOWER_MODE_6:
return (BATTLE_TYPE_LINK_DOUBLES | BATTLE_TYPE_2vs2) | BATTLE_TYPE_FRONTIER;
}
return (BATTLE_TYPE_SINGLES | BATTLE_TYPE_TRAINER) | BATTLE_TYPE_FRONTIER;
}
void ov104_0223A734(UnkStruct_0204AFC4 *param0, u16 param1)
void ov104_0223A734(BattleTower *battleTower, u16 param1)
{
param0->unk_10_3 = param1;
param0->unk_83E[0] = param1;
battleTower->unk_10_3 = param1;
battleTower->unk_83E[0] = param1;
}
u16 ov104_0223A750(UnkStruct_0204AFC4 *param0, const u16 *param1)
u16 ov104_0223A750(BattleTower *battleTower, const u16 *param1)
{
int v0;
if (param0->unk_10_3 || param1[0]) {
if (battleTower->unk_10_3 || param1[0]) {
return 1;
}

View File

@ -612,7 +612,7 @@ static BOOL ov105_02241FF4(UnkStruct_ov105_02241FF4 *param0)
switch (param0->unk_08) {
case 0:
if (ov104_0223AED4(param0->unk_09) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(237);
}
@ -621,7 +621,7 @@ static BOOL ov105_02241FF4(UnkStruct_ov105_02241FF4 *param0)
case 1:
if (ov104_0223AED4(param0->unk_09) == 1) {
if (CommTiming_IsSyncState(237) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
param0->unk_08++;
}
} else {
@ -1250,14 +1250,14 @@ static BOOL ov105_02242D04(UnkStruct_ov105_02241FF4 *param0)
if (ov105_02245620(param0, 8, 0) == 1) {
param0->unk_10 = ov105_02244D14(param0, 2);
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(164);
param0->unk_08++;
}
break;
case 7:
if (CommTiming_IsSyncState(164) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
return 1;
}
break;
@ -2024,7 +2024,7 @@ static BOOL ov105_0224439C(UnkStruct_ov105_02241FF4 *param0)
case 0:
param0->unk_10 = ov105_02244D14(param0, 15);
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(165);
param0->unk_08++;
@ -2032,7 +2032,7 @@ static BOOL ov105_0224439C(UnkStruct_ov105_02241FF4 *param0)
break;
case 1:
if (CommTiming_IsSyncState(165) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
return 1;
}
break;

View File

@ -324,7 +324,7 @@ static BOOL ov106_02241D28(UnkStruct_ov106_02243118 *param0)
switch (param0->unk_08) {
case 0:
if ((param0->unk_12 == 0) && (ov104_0223B5B0(param0->unk_09) == 1)) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(112);
}
@ -333,7 +333,7 @@ static BOOL ov106_02241D28(UnkStruct_ov106_02243118 *param0)
case 1:
if ((param0->unk_12 == 0) && (ov104_0223B5B0(param0->unk_09) == 1)) {
if (CommTiming_IsSyncState(112) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
param0->unk_12 = 1;
param0->unk_08++;
}
@ -639,13 +639,13 @@ static BOOL ov106_02242108(UnkStruct_ov106_02243118 *param0)
}
break;
case 8:
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(104);
param0->unk_08 = 9;
break;
case 9:
if (CommTiming_IsSyncState(104) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTool_Init(98);
param0->unk_18 = 0xff;
return 1;
@ -662,13 +662,13 @@ static BOOL ov106_0224230C(UnkStruct_ov106_02243118 *param0)
switch (param0->unk_08) {
case 0:
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(104);
param0->unk_08++;
break;
case 1:
if (CommTiming_IsSyncState(104) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
return 1;
}
break;

View File

@ -594,7 +594,7 @@ static BOOL ov107_02241D6C(UnkStruct_ov107_02241D6C *param0)
switch (param0->unk_08) {
case 0:
if (ov104_0223BA14(param0->unk_09) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(215);
}
@ -603,7 +603,7 @@ static BOOL ov107_02241D6C(UnkStruct_ov107_02241D6C *param0)
case 1:
if (ov104_0223BA14(param0->unk_09) == 1) {
if (CommTiming_IsSyncState(215) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
param0->unk_08++;
}
} else {
@ -1277,7 +1277,7 @@ static BOOL ov107_02242C64(UnkStruct_ov107_02241D6C *param0)
param0->unk_0B--;
if (param0->unk_0B == 0) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(130);
param0->unk_08++;
break;
@ -1285,7 +1285,7 @@ static BOOL ov107_02242C64(UnkStruct_ov107_02241D6C *param0)
break;
case 4:
if (CommTiming_IsSyncState(130) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTool_Init(100);
param0->unk_12 = 0xff;
@ -1322,14 +1322,14 @@ static BOOL ov107_02242D60(UnkStruct_ov107_02241D6C *param0)
}
if (param0->unk_0B == 0) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(131);
param0->unk_08++;
}
break;
case 2:
if (CommTiming_IsSyncState(131) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
ov107_02245288(&param0->unk_50[6]);
return 1;
}

View File

@ -389,7 +389,7 @@ static BOOL ov107_02246170(UnkStruct_ov107_02246170 *param0)
switch (param0->unk_08) {
case 0:
if (ov104_0223BA14(param0->unk_09) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(216);
}
@ -398,7 +398,7 @@ static BOOL ov107_02246170(UnkStruct_ov107_02246170 *param0)
case 1:
if (ov104_0223BA14(param0->unk_09) == 1) {
if (CommTiming_IsSyncState(216) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
param0->unk_08++;
}
} else {
@ -955,7 +955,7 @@ static BOOL ov107_02246BDC(UnkStruct_ov107_02246170 *param0)
param0->unk_16--;
if (param0->unk_16 == 0) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(133);
param0->unk_08++;
break;
@ -970,7 +970,7 @@ static BOOL ov107_02246BDC(UnkStruct_ov107_02246170 *param0)
v0 = ov107_02249C9C(param0->unk_15, param0->unk_11);
if (ov107_02248674(param0, v0, param0->unk_13) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTool_Init(100);
param0->unk_11 = 0xff;
param0->unk_436 = 0;
@ -999,14 +999,14 @@ static BOOL ov107_02246CD0(UnkStruct_ov107_02246170 *param0)
}
if (param0->unk_16 == 0) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(134);
param0->unk_08++;
}
break;
case 2:
if (CommTiming_IsSyncState(134) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
ov107_02248860(&param0->unk_50[7]);
return 1;
}

View File

@ -421,7 +421,7 @@ static BOOL ov108_02241DB0(UnkStruct_ov108_02241DB0 *param0)
switch (param0->unk_08) {
case 0:
if (ov104_0223C000(param0->unk_09) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(199);
param0->unk_08++;
} else {
@ -431,7 +431,7 @@ static BOOL ov108_02241DB0(UnkStruct_ov108_02241DB0 *param0)
case 1:
if (ov104_0223C000(param0->unk_09) == 1) {
if (CommTiming_IsSyncState(199) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
param0->unk_08++;
}
} else {
@ -452,7 +452,7 @@ static BOOL ov108_02241DB0(UnkStruct_ov108_02241DB0 *param0)
break;
case 5:
if (ov104_0223C000(param0->unk_09) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(201);
param0->unk_08++;
} else {
@ -462,7 +462,7 @@ static BOOL ov108_02241DB0(UnkStruct_ov108_02241DB0 *param0)
case 6:
if (ov104_0223C000(param0->unk_09) == 1) {
if (CommTiming_IsSyncState(201) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
param0->unk_08++;
}
} else {
@ -654,13 +654,13 @@ static BOOL ov108_02242104(UnkStruct_ov108_02241DB0 *param0)
param0->unk_08++;
break;
case 3:
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(151);
param0->unk_08++;
break;
case 4:
if (CommTiming_IsSyncState(151) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTool_Init(103);
param0->unk_0E = 0xff;
return 1;
@ -684,14 +684,14 @@ static BOOL ov108_02242198(UnkStruct_ov108_02241DB0 *param0)
}
if (param0->unk_0B == 0) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
CommTiming_StartSync(152);
param0->unk_08++;
}
break;
case 2:
if (CommTiming_IsSyncState(152) == 1) {
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
return 1;
}
break;

View File

@ -5001,7 +5001,7 @@ int LowestBit(u32 flag)
return i;
}
static const u16 sBattleFrontierBanlist[] = {
static const u16 sBattleFrontierBanlist[BATTLE_FRONTIER_BANLIST_SIZE] = {
SPECIES_MEWTWO,
SPECIES_MEW,
SPECIES_LUGIA,

View File

@ -15,6 +15,7 @@
#include "constants/species.h"
#include "constants/string.h"
#include "generated/accessories.h"
#include "generated/comm_club_ret_codes.h"
#include "generated/first_arrival_to_zones.h"
#include "generated/journal_location_events.h"
#include "generated/movement_actions.h"
@ -290,7 +291,7 @@ static BOOL ScrCmd_1FB(ScriptContext *ctx);
static BOOL ScrCmd_Unused_1FC(ScriptContext *ctx);
static BOOL ScrCmd_Unused_1FD(ScriptContext *ctx);
static BOOL ScrCmd_1FE(ScriptContext *ctx);
static BOOL ScrCmd_1FF(ScriptContext *ctx);
static BOOL ScrCmd_PrintBattleFrontierBanlist(ScriptContext *ctx);
static BOOL ScrCmd_26D(ScriptContext *ctx);
static BOOL ScrCmd_Message(ScriptContext *ctx);
static BOOL ScrCmd_MessageVar(ScriptContext *ctx);
@ -370,7 +371,7 @@ static BOOL ScrCmd_1F8(ScriptContext *ctx);
static BOOL ScrCmd_0A2(ScriptContext *ctx);
static BOOL ScrCmd_0A3(ScriptContext *ctx);
static BOOL ScrCmd_Unused_0A4(ScriptContext *ctx);
static BOOL ScrCmd_207(ScriptContext *ctx);
static BOOL ScrCmd_GetCurNetID(ScriptContext *ctx);
static BOOL ScrCmd_DrawPokemonPreview(ScriptContext *ctx);
static void FieldSystem_WriteSpeciesSeen(FieldSystem *fieldSystem, u16 param1);
static BOOL ScrCmd_209(ScriptContext *ctx);
@ -426,9 +427,9 @@ static BOOL ScrCmd_ChangePlayerState(ScriptContext *ctx);
static BOOL ScrCmd_GetPlayerStarterSpecies(ScriptContext *ctx);
static BOOL ScrCmd_GetSwarmMapAndSpecies(ScriptContext *ctx);
static BOOL ScrCmd_PrintTrainerDialogue(ScriptContext *ctx);
static BOOL ScrCmd_0F2(ScriptContext *ctx);
static BOOL ScrCmd_StartBattleClient(ScriptContext *ctx);
static BOOL sub_02042F74(ScriptContext *ctx);
static BOOL ScrCmd_0F3(ScriptContext *ctx);
static BOOL ScrCmd_StartBattleServer(ScriptContext *ctx);
static BOOL sub_0204300C(ScriptContext *ctx);
static BOOL ScrCmd_Unused_0F4(ScriptContext *ctx);
static BOOL ScrCmd_Unused_0F5(ScriptContext *ctx);
@ -461,7 +462,7 @@ static BOOL ScrCmd_RegisterPoketchApp(ScriptContext *ctx);
static BOOL ScrCmd_CheckPoketchAppRegistered(ScriptContext *ctx);
static BOOL ScrCmd_135(ScriptContext *ctx);
static BOOL sub_02043678(ScriptContext *ctx);
static BOOL ScrCmd_136(ScriptContext *ctx);
static BOOL ScrCmd_ClearReceivedTempDataAllPlayers(ScriptContext *ctx);
static BOOL ScrCmd_Unused_137(ScriptContext *ctx);
static BOOL ScrCmd_138(ScriptContext *ctx);
static BOOL ScrCmd_139(ScriptContext *ctx);
@ -493,8 +494,8 @@ static BOOL ScrCmd_14C(ScriptContext *ctx);
static BOOL ScrCmd_GetPlayerGender(ScriptContext *ctx);
static BOOL ScrCmd_HealParty(ScriptContext *ctx);
static BOOL ScrCmd_14F(ScriptContext *ctx);
static BOOL ScrCmd_150(ScriptContext *ctx);
static BOOL sub_02043C70(ScriptContext *ctx);
static BOOL ScrCmd_EndCommunication(ScriptContext *ctx);
static BOOL ScriptContext_WaitForCommManIsDeleted(ScriptContext *ctx);
static BOOL ScrCmd_151(ScriptContext *ctx);
static BOOL ScrCmd_152(ScriptContext *ctx);
static BOOL ScrCmd_SetObjectEventPos(ScriptContext *ctx);
@ -1010,8 +1011,8 @@ const ScrCmdFunc Unk_020EAC58[] = {
ScrCmd_StartDummyTrainerBattle,
ScrCmd_SetTargetTrainerDefeated,
ScrCmd_GoToIfTargetTrainerDefeated,
ScrCmd_0F2,
ScrCmd_0F3,
ScrCmd_StartBattleClient,
ScrCmd_StartBattleServer,
ScrCmd_Unused_0F4,
ScrCmd_Unused_0F5,
ScrCmd_StartLinkBattle,
@ -1078,7 +1079,7 @@ const ScrCmdFunc Unk_020EAC58[] = {
ScrCmd_RegisterPoketchApp,
ScrCmd_CheckPoketchAppRegistered,
ScrCmd_135,
ScrCmd_136,
ScrCmd_ClearReceivedTempDataAllPlayers,
ScrCmd_Unused_137,
ScrCmd_138,
ScrCmd_139,
@ -1104,7 +1105,7 @@ const ScrCmdFunc Unk_020EAC58[] = {
ScrCmd_GetPlayerGender,
ScrCmd_HealParty,
ScrCmd_14F,
ScrCmd_150,
ScrCmd_EndCommunication,
ScrCmd_151,
ScrCmd_152,
ScrCmd_153,
@ -1242,10 +1243,10 @@ const ScrCmdFunc Unk_020EAC58[] = {
ScrCmd_1D7,
ScrCmd_1D8,
ScrCmd_1D9,
ScrCmd_1DA,
ScrCmd_1DB,
ScrCmd_1DC,
ScrCmd_1DD,
ScrCmd_SetBattleTowerNull,
ScrCmd_InitBattleTower,
ScrCmd_FreeBattleTower,
ScrCmd_CallBattleTowerFunction,
ScrCmd_1DE,
ScrCmd_1DF,
ScrCmd_1E0,
@ -1279,7 +1280,7 @@ const ScrCmdFunc Unk_020EAC58[] = {
ScrCmd_Unused_1FC,
ScrCmd_Unused_1FD,
ScrCmd_1FE,
ScrCmd_1FF,
ScrCmd_PrintBattleFrontierBanlist,
ScrCmd_GetPreviousMapID,
ScrCmd_GetCurrentMapID,
ScrCmd_StartEndSafariGame,
@ -1287,7 +1288,7 @@ const ScrCmdFunc Unk_020EAC58[] = {
ScrCmd_204,
ScrCmd_205,
ScrCmd_StartGreatMarshLookout,
ScrCmd_207,
ScrCmd_GetCurNetID,
ScrCmd_DrawPokemonPreview,
ScrCmd_209,
ScrCmd_20A,
@ -1584,7 +1585,7 @@ const ScrCmdFunc Unk_020EAC58[] = {
ScrCmd_32D,
ScrCmd_32E,
ScrCmd_CheckPartyHasHeldItem,
ScrCmd_330,
ScrCmd_LogLinkInfoInWiFiHistory,
ScrCmd_331,
ScrCmd_332,
ScrCmd_333,
@ -2093,13 +2094,13 @@ static BOOL ScrCmd_1FE(ScriptContext *ctx)
{
u16 v3 = ScriptContext_ReadByte(ctx);
UnkStruct_0204AFC4 *v1 = ctx->fieldSystem->unk_AC;
BattleTower *battleTower = ctx->fieldSystem->battleTower;
if (v1 == NULL) {
if (battleTower == NULL) {
return FALSE;
}
u16 *v0 = v1->unk_78[v3].unk_00.unk_18;
u16 *v0 = battleTower->unk_78[v3].unk_00.unk_18;
if (v0[0] == 0xFFFF) {
MessageLoader *msgLoader = MessageLoader_Init(MESSAGE_LOADER_NARC_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNK_0613, HEAP_ID_FIELD3);
@ -2113,19 +2114,19 @@ static BOOL ScrCmd_1FE(ScriptContext *ctx)
return TRUE;
}
static BOOL ScrCmd_1FF(ScriptContext *ctx)
static BOOL ScrCmd_PrintBattleFrontierBanlist(ScriptContext *ctx)
{
FieldSystem *fieldSystem = ctx->fieldSystem;
u8 v1 = ScriptContext_ReadByte(ctx);
u16 v2 = ScriptContext_GetVar(ctx);
u16 v3 = ScriptContext_ReadHalfWord(ctx);
u8 v4 = ScriptContext_ReadByte(ctx);
u8 v5 = 0;
u8 messageID = ScriptContext_ReadByte(ctx);
u16 numRequiredEligiblePokemon = ScriptContext_GetVar(ctx);
u16 unused3 = ScriptContext_ReadHalfWord(ctx);
u8 unused4 = ScriptContext_ReadByte(ctx);
u8 numBannedSpeciesSeen = 0;
StringTemplate *v6 = sub_0204AEE8(fieldSystem->saveData, v2, v3, v4, &v5);
StringTemplate *strTemplate = BattleFrontier_GetStringWithSeenBannedSpecies(fieldSystem->saveData, numRequiredEligiblePokemon, unused3, unused4, &numBannedSpeciesSeen);
ScriptMessage_ShowTemplate(ctx, v6, v1 + v5, TRUE);
StringTemplate_Free(v6);
ScriptMessage_ShowTemplate(ctx, strTemplate, messageID + numBannedSpeciesSeen, TRUE);
StringTemplate_Free(strTemplate);
ScriptContext_Pause(ctx, ScriptContext_WaitForFinishedPrinting);
return TRUE;
@ -3836,11 +3837,11 @@ static BOOL ScrCmd_Unused_0A4(ScriptContext *ctx)
return FALSE;
}
static BOOL ScrCmd_207(ScriptContext *ctx)
static BOOL ScrCmd_GetCurNetID(ScriptContext *ctx)
{
u16 *v0 = ScriptContext_GetVarPointer(ctx);
u16 *destVarID = ScriptContext_GetVarPointer(ctx);
*v0 = CommSys_CurNetId();
*destVarID = CommSys_CurNetId();
return TRUE;
}
@ -4650,16 +4651,16 @@ static BOOL ScrCmd_PrintTrainerDialogue(ScriptContext *ctx)
return TRUE;
}
static BOOL ScrCmd_0F2(ScriptContext *ctx)
static BOOL ScrCmd_StartBattleClient(ScriptContext *ctx)
{
FieldSystem *fieldSystem = ctx->fieldSystem;
u16 commType = ScriptContext_GetVar(ctx);
u16 v2 = ScriptContext_GetVar(ctx);
u16 v3 = ScriptContext_GetVar(ctx);
u16 v4 = ScriptContext_ReadHalfWord(ctx);
u16 destVarID = ScriptContext_ReadHalfWord(ctx);
ov7_0224B414(fieldSystem, commType, v2, v3);
ctx->data[0] = v4;
CommClub_StartBattleClient(fieldSystem, commType, v2, v3);
ctx->data[0] = destVarID;
ScriptContext_Pause(ctx, sub_02042F74);
return TRUE;
@ -4668,28 +4669,28 @@ static BOOL ScrCmd_0F2(ScriptContext *ctx)
static BOOL sub_02042F74(ScriptContext *ctx)
{
FieldSystem *fieldSystem = ctx->fieldSystem;
u16 *v2 = FieldSystem_GetVarPointer(fieldSystem, ctx->data[0]);
u16 *destVar = FieldSystem_GetVarPointer(fieldSystem, ctx->data[0]);
u32 v0 = ov7_0224B460();
u32 retCode = CommClub_CheckWindowOpenClient();
if (v0 == 0) {
if (retCode == COMM_CLUB_RET_0) {
return FALSE;
}
*v2 = v0;
*destVar = retCode;
return TRUE;
}
static BOOL ScrCmd_0F3(ScriptContext *ctx)
static BOOL ScrCmd_StartBattleServer(ScriptContext *ctx)
{
FieldSystem *fieldSystem = ctx->fieldSystem;
u16 commType = ScriptContext_GetVar(ctx);
u16 v2 = ScriptContext_GetVar(ctx);
u16 v3 = ScriptContext_GetVar(ctx);
u16 v4 = ScriptContext_ReadHalfWord(ctx);
u16 destVarID = ScriptContext_ReadHalfWord(ctx);
ov7_0224B47C(fieldSystem, commType, v2, v3);
ctx->data[0] = v4;
CommClub_StartBattleServer(fieldSystem, commType, v2, v3);
ctx->data[0] = destVarID;
ScriptContext_Pause(ctx, sub_0204300C);
return TRUE;
@ -4698,15 +4699,15 @@ static BOOL ScrCmd_0F3(ScriptContext *ctx)
static BOOL sub_0204300C(ScriptContext *ctx)
{
FieldSystem *fieldSystem = ctx->fieldSystem;
u16 *v2 = FieldSystem_GetVarPointer(fieldSystem, ctx->data[0]);
u16 *destVar = FieldSystem_GetVarPointer(fieldSystem, ctx->data[0]);
u32 v0 = CommClub_CheckWindowOpenClient();
u32 retCode = CommClub_CheckWindowOpenServer();
if (v0 == 0) {
if (retCode == COMM_CLUB_RET_0) {
return FALSE;
}
*v2 = v0;
*destVar = retCode;
return TRUE;
}
@ -5017,11 +5018,11 @@ static BOOL ScrCmd_CheckPoketchAppRegistered(ScriptContext *ctx)
static BOOL ScrCmd_135(ScriptContext *ctx)
{
u16 v0 = ScriptContext_GetVar(ctx);
u16 syncNo = ScriptContext_GetVar(ctx);
ctx->data[0] = v0;
ctx->data[0] = syncNo;
CommTiming_StartSync(v0);
CommTiming_StartSync(syncNo);
ScriptContext_Pause(ctx, sub_02043678);
return TRUE;
@ -5032,7 +5033,7 @@ static BOOL sub_02043678(ScriptContext *ctx)
int v0;
if (CommSys_ConnectedCount() < 2) {
v0 = 1;
v0 = TRUE;
} else {
v0 = CommTiming_IsSyncState(ctx->data[0]);
}
@ -5040,9 +5041,9 @@ static BOOL sub_02043678(ScriptContext *ctx)
return v0;
}
static BOOL ScrCmd_136(ScriptContext *ctx)
static BOOL ScrCmd_ClearReceivedTempDataAllPlayers(ScriptContext *ctx)
{
sub_020365F4();
CommTool_ClearReceivedTempDataAllPlayers();
return FALSE;
}
@ -5366,14 +5367,14 @@ static BOOL ScrCmd_14F(ScriptContext *ctx)
return FALSE;
}
static BOOL ScrCmd_150(ScriptContext *ctx)
static BOOL ScrCmd_EndCommunication(ScriptContext *ctx)
{
FieldCommMan_EndBattle();
ScriptContext_Pause(ctx, sub_02043C70);
ScriptContext_Pause(ctx, ScriptContext_WaitForCommManIsDeleted);
return TRUE;
}
static BOOL sub_02043C70(ScriptContext *ctx)
static BOOL ScriptContext_WaitForCommManIsDeleted(ScriptContext *ctx)
{
if (CommMan_IsInitialized() != TRUE) {
if (CommServerClient_IsInitialized() != TRUE) {
@ -5387,7 +5388,7 @@ static BOOL sub_02043C70(ScriptContext *ctx)
static BOOL ScrCmd_2BB(ScriptContext *ctx)
{
sub_020598A0();
ScriptContext_Pause(ctx, sub_02043C70);
ScriptContext_Pause(ctx, ScriptContext_WaitForCommManIsDeleted);
return TRUE;
}
@ -7428,7 +7429,7 @@ static BOOL ScrCmd_2C4(ScriptContext *ctx)
*v0 = v2;
if (v1 == 5 || v1 == 6) {
v2->unk_00 = ctx->fieldSystem->unk_AC;
v2->unk_00 = ctx->fieldSystem->battleTower;
} else {
v2->unk_00 = NULL;
}

View File

@ -176,12 +176,10 @@ void CommList_Refresh(void)
}
}
void sub_020365F4(void)
void CommTool_ClearReceivedTempDataAllPlayers(void)
{
int v0;
for (v0 = 0; v0 < MAX_CONNECTED_PLAYERS; v0++) {
sCommTool->hasRecievedTempData[v0] = 0;
for (int i = 0; i < MAX_CONNECTED_PLAYERS; i++) {
sCommTool->hasRecievedTempData[i] = 0;
}
}

View File

@ -10,25 +10,22 @@
#include "trainer_info.h"
#include "unk_0202C858.h"
void sub_02038F8C(WiFiHistory *wiFiHistory)
void WiFiHistory_FlagGeonetLinkInfo(WiFiHistory *wiFiHistory)
{
int v0;
int v1, v2, v3;
TrainerInfo *v4;
int v5 = CommSys_ConnectedCount();
int connectedCnt = CommSys_ConnectedCount();
if (CommInfo_TrainerInfo(0) == NULL) {
return;
}
for (v0 = 0; v0 < v5; v0++) {
if (CommSys_CurNetId() != v0) {
v1 = CommInfo_PlayerCountry(v0);
v2 = CommInfo_PlayerRegion(v0);
v4 = CommInfo_TrainerInfo(v0);
v3 = TrainerInfo_RegionCode(v4);
for (int i = 0; i < connectedCnt; i++) {
if (CommSys_CurNetId() != i) {
int country = CommInfo_PlayerCountry(i);
int region = CommInfo_PlayerRegion(i);
TrainerInfo *trainerInfo = CommInfo_TrainerInfo(i);
int regionCode = TrainerInfo_RegionCode(trainerInfo);
WiFiHistory_FlagGeonetCommunicatedWith(wiFiHistory, v1, v2, v3);
WiFiHistory_FlagGeonetCommunicatedWith(wiFiHistory, country, region, regionCode);
}
}
}

View File

@ -3,6 +3,7 @@
#include <nitro.h>
#include <string.h>
#include "generated/battle_tower_functions.h"
#include "generated/game_records.h"
#include "struct_defs/struct_02049A68.h"
@ -28,301 +29,296 @@
#include "unk_0206B9D8.h"
#include "unk_0209BA80.h"
static u16 sub_02049AE0(UnkStruct_0204AFC4 *param0, u8 param1);
static u16 sub_02049AE0(BattleTower *battleTower, u8 param1);
BOOL ScrCmd_1DB(ScriptContext *param0)
BOOL ScrCmd_InitBattleTower(ScriptContext *ctx)
{
u16 v0 = ScriptContext_ReadHalfWord(param0);
u16 v1 = ScriptContext_ReadHalfWord(param0);
u16 v0 = ScriptContext_ReadHalfWord(ctx);
u16 challengeMode = ScriptContext_ReadHalfWord(ctx);
param0->fieldSystem->unk_AC = sub_0204A124(FieldSystem_GetSaveData(param0->fieldSystem), v0, v1);
ctx->fieldSystem->battleTower = BattleTower_Init(FieldSystem_GetSaveData(ctx->fieldSystem), v0, challengeMode);
return FALSE;
}
BOOL ScrCmd_SetBattleTowerNull(ScriptContext *ctx)
{
BattleTower_SetNull(&(ctx->fieldSystem->battleTower));
return 0;
}
BOOL ScrCmd_1DA(ScriptContext *param0)
BOOL ScrCmd_FreeBattleTower(ScriptContext *ctx)
{
sub_0204A110(&(param0->fieldSystem->unk_AC));
return 0;
BattleTower_Free(ctx->fieldSystem->battleTower);
ctx->fieldSystem->battleTower = NULL;
return FALSE;
}
BOOL ScrCmd_1DC(ScriptContext *param0)
BOOL ScrCmd_CallBattleTowerFunction(ScriptContext *ctx)
{
UnkStruct_0204AFC4 *v0;
void **partyMenu;
sub_0204A32C(param0->fieldSystem->unk_AC);
param0->fieldSystem->unk_AC = NULL;
u16 functionIndex = ScriptContext_ReadHalfWord(ctx);
u16 functionArgument = ScriptContext_GetVar(ctx);
u16 varID = ScriptContext_ReadHalfWord(ctx);
u16 *destVar = FieldSystem_GetVarPointer(ctx->fieldSystem, varID);
BattleTower *battleTower = ctx->fieldSystem->battleTower;
return 0;
}
BOOL ScrCmd_1DD(ScriptContext *param0)
{
u16 v0, v1, v2;
u16 *v3, *v4;
void **v5;
UnkStruct_0204AFC4 *v6;
v0 = ScriptContext_ReadHalfWord(param0);
v1 = ScriptContext_GetVar(param0);
v2 = ScriptContext_ReadHalfWord(param0);
v3 = FieldSystem_GetVarPointer(param0->fieldSystem, v2);
v6 = param0->fieldSystem->unk_AC;
switch (v0) {
case 1:
if (v1 == 0) {
*v3 = sub_02049EC4(v6->unk_0E, param0->fieldSystem->saveData, 1);
switch (functionIndex) {
case BATTLE_TOWER_FUNCTION_CHECK_ENOUGH_VALID_POKEMON: // enough pokemon?
if (functionArgument == 0) {
*destVar = sub_02049EC4(battleTower->partySize, ctx->fieldSystem->saveData, 1);
} else {
*v3 = sub_02049EC4(v1, param0->fieldSystem->saveData, 1);
*destVar = sub_02049EC4(functionArgument, ctx->fieldSystem->saveData, 1);
}
break;
case 2:
case BATTLE_TOWER_FUNCTION_UNK_02:
sub_02049F8C();
break;
case 3:
sub_02049F98(sub_0202D740(param0->fieldSystem->saveData));
case BATTLE_TOWER_FUNCTION_UNK_03:
sub_02049F98(sub_0202D740(ctx->fieldSystem->saveData));
break;
case 4:
*v3 = sub_02049FA0(sub_0202D740(param0->fieldSystem->saveData));
case BATTLE_TOWER_FUNCTION_UNK_04:
*destVar = sub_02049FA0(sub_0202D740(ctx->fieldSystem->saveData));
break;
case 5:
sub_02049FA8(param0->fieldSystem);
case BATTLE_TOWER_FUNCTION_SET_COMMUNICATION_CLUB_ACCESSIBLE:
BattleTower_SetCommunicationClubAccessible(ctx->fieldSystem);
break;
case 6:
sub_02049FE8(param0->fieldSystem);
case BATTLE_TOWER_FUNCTION_CLEAR_COMMUNICATION_CLUB_ACCESSIBLE:
BattleTower_ClearCommunicationClubAccessible(ctx->fieldSystem);
break;
case 8:
*v3 = sub_02049FF8(param0->fieldSystem->saveData, v1);
case BATTLE_TOWER_FUNCTION_UNK_08:
*destVar = sub_02049FF8(ctx->fieldSystem->saveData, functionArgument);
break;
case 9:
*v3 = sub_0204AABC(NULL, param0->fieldSystem->saveData, 2);
case BATTLE_TOWER_FUNCTION_UNK_09:
*destVar = sub_0204AABC(NULL, ctx->fieldSystem->saveData, 2);
break;
case 10:
*v3 = sub_0204AABC(NULL, param0->fieldSystem->saveData, 0);
case BATTLE_TOWER_FUNCTION_UNK_10:
*destVar = sub_0204AABC(NULL, ctx->fieldSystem->saveData, 0);
break;
case 11:
sub_0204A030(param0->fieldSystem->saveData, v1);
case BATTLE_TOWER_FUNCTION_UNK_11:
sub_0204A030(ctx->fieldSystem->saveData, functionArgument);
break;
case 12:
*v3 = sub_0204A050(param0->fieldSystem->saveData);
case BATTLE_TOWER_FUNCTION_UNK_12:
*destVar = sub_0204A050(ctx->fieldSystem->saveData);
break;
case 14:
*v3 = sub_0204A064(param0->fieldSystem->saveData);
case BATTLE_TOWER_FUNCTION_UNK_14:
*destVar = sub_0204A064(ctx->fieldSystem->saveData);
break;
case 15:
*v3 = sub_0204A100(param0->fieldSystem->saveData);
case BATTLE_TOWER_FUNCTION_UNK_15:
*destVar = sub_0204A100(ctx->fieldSystem->saveData);
break;
case 16:
sub_0206BCE4(param0->task, v1, v2, *v3);
return 1;
case (30 + 0):
v5 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, 19);
sub_0204A358(v6, param0->task, v5);
return 1;
case (30 + 1):
v5 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, 19);
*v3 = sub_0204A378(v6, v5, param0->fieldSystem->saveData);
case BATTLE_TOWER_FUNCTION_UNK_16:
sub_0206BCE4(ctx->task, functionArgument, varID, *destVar);
return TRUE;
case BATTLE_TOWER_FUNCTION_UNK_30:
partyMenu = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA);
sub_0204A358(battleTower, ctx->task, partyMenu);
return TRUE;
case BATTLE_TOWER_FUNCTION_UNK_31:
partyMenu = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA);
*destVar = sub_0204A378(battleTower, partyMenu, ctx->fieldSystem->saveData);
break;
case (30 + 2):
*v3 = sub_0204A410(v6, param0->fieldSystem->saveData);
case BATTLE_TOWER_FUNCTION_CHECK_DUPLICATE_SPECIES_AND_HELD_ITEMS:
*destVar = BattleTower_CheckDuplicateSpeciesAndHeldItems(battleTower, ctx->fieldSystem->saveData);
break;
case (30 + 5):
*v3 = sub_0204A57C(v6);
case BATTLE_TOWER_FUNCTION_UNK_35:
*destVar = sub_0204A57C(battleTower);
break;
case (30 + 7):
sub_0204A660(v6, param0->fieldSystem->saveData);
case BATTLE_TOWER_FUNCTION_UNK_37:
sub_0204A660(battleTower, ctx->fieldSystem->saveData);
break;
case (30 + 8):
sub_0204A7A4(v6, param0->fieldSystem->saveData, param0->fieldSystem->journalEntry);
case BATTLE_TOWER_FUNCTION_UNK_38:
sub_0204A7A4(battleTower, ctx->fieldSystem->saveData, ctx->fieldSystem->journalEntry);
break;
case (30 + 9):
sub_0204A8C8(v6);
case BATTLE_TOWER_FUNCTION_UNK_39:
sub_0204A8C8(battleTower);
break;
case (30 + 26):
sub_0204A97C(v6);
case BATTLE_TOWER_FUNCTION_UNK_56:
sub_0204A97C(battleTower);
break;
case (30 + 11):
*v3 = sub_0204A9E0(v6, v1);
case BATTLE_TOWER_FUNCTION_UNK_41:
*destVar = sub_0204A9E0(battleTower, functionArgument);
break;
case (30 + 13):
*v3 = (u16)sub_0204A9F8(v6);
case BATTLE_TOWER_FUNCTION_GET_CHALLENGE_MODE:
*destVar = (u16)BattleTower_GetChallengeMode(battleTower);
break;
case (30 + 15):
*v3 = sub_0204A9FC(v6);
case BATTLE_TOWER_FUNCTION_UNK_45:
*destVar = sub_0204A9FC(battleTower);
break;
case (30 + 17):
sub_0204AA7C(v6, param0->fieldSystem->saveData);
case BATTLE_TOWER_FUNCTION_UNK_47:
sub_0204AA7C(battleTower, ctx->fieldSystem->saveData);
break;
case (30 + 18):
*v3 = sub_0204AB68(v6, param0->fieldSystem->saveData);
case BATTLE_TOWER_FUNCTION_UNK_48:
*destVar = sub_0204AB68(battleTower, ctx->fieldSystem->saveData);
break;
case (30 + 19):
*v3 = sub_0204ABA0(v6, param0->fieldSystem->saveData);
case BATTLE_TOWER_FUNCTION_UNK_49:
*destVar = sub_0204ABA0(battleTower, ctx->fieldSystem->saveData);
break;
case (30 + 20):
v6->unk_10_5 = v1;
case BATTLE_TOWER_FUNCTION_UNK_50:
battleTower->unk_10_5 = functionArgument;
break;
case (30 + 21):
*v3 = v6->unk_10_5;
case BATTLE_TOWER_FUNCTION_UNK_51:
*destVar = battleTower->unk_10_5;
break;
case (30 + 22):
sub_0204A4C8(v6, param0->fieldSystem->saveData);
case BATTLE_TOWER_FUNCTION_UNK_52:
sub_0204A4C8(battleTower, ctx->fieldSystem->saveData);
break;
case (30 + 23):
*v3 = v6->unk_2A[v1];
case BATTLE_TOWER_FUNCTION_GET_SLOT_INDEX:
*destVar = battleTower->unk_2A[functionArgument];
break;
case (30 + 24):
*v3 = sub_0204AABC(v6, param0->fieldSystem->saveData, 1);
case BATTLE_TOWER_FUNCTION_UNK_54:
*destVar = sub_0204AABC(battleTower, ctx->fieldSystem->saveData, 1);
break;
case (30 + 25):
*v3 = sub_02049AE0(v6, v1);
case BATTLE_TOWER_FUNCTION_UNK_55:
*destVar = sub_02049AE0(battleTower, functionArgument);
break;
case (30 + 27):
*v3 = sub_0204ABF4(v6, param0->fieldSystem->saveData);
case BATTLE_TOWER_FUNCTION_UNK_57:
*destVar = sub_0204ABF4(battleTower, ctx->fieldSystem->saveData);
break;
case 100:
if (v6 == NULL) {
*v3 = 1;
case BATTLE_TOWER_FUNCTION_CHECK_IS_NULL:
if (battleTower == NULL) {
*destVar = TRUE;
} else {
*v3 = 0;
*destVar = FALSE;
}
break;
case (30 + 28):
MI_CpuClear8(v6->unk_884, 70);
case BATTLE_TOWER_FUNCTION_UNK_58:
MI_CpuClear8(battleTower->unk_884, 70);
break;
default:
GF_ASSERT(FALSE);
*v3 = 0;
*destVar = 0;
break;
}
return 0;
return FALSE;
}
BOOL ScrCmd_1DE(ScriptContext *param0)
BOOL ScrCmd_1DE(ScriptContext *ctx)
{
u16 v0, v1;
u16 *v2, *v3;
UnkStruct_0204AFC4 *v4 = param0->fieldSystem->unk_AC;
BattleTower *battleTower = ctx->fieldSystem->battleTower;
v0 = ScriptContext_GetVar(param0);
v1 = ScriptContext_GetVar(param0);
v2 = FieldSystem_GetVarPointer(param0->fieldSystem, ScriptContext_ReadHalfWord(param0));
v3 = FieldSystem_GetVarPointer(param0->fieldSystem, ScriptContext_ReadHalfWord(param0));
v0 = ScriptContext_GetVar(ctx);
v1 = ScriptContext_GetVar(ctx);
v2 = FieldSystem_GetVarPointer(ctx->fieldSystem, ScriptContext_ReadHalfWord(ctx));
v3 = FieldSystem_GetVarPointer(ctx->fieldSystem, ScriptContext_ReadHalfWord(ctx));
*v2 = v4->unk_298[v0].unk_30[v1].species;
*v3 = v4->unk_298[v0].unk_30[v1].moves[0];
*v2 = battleTower->unk_298[v0].unk_30[v1].species;
*v3 = battleTower->unk_298[v0].unk_30[v1].moves[0];
return 0;
}
BOOL ScrCmd_1DF(ScriptContext *param0)
BOOL ScrCmd_1DF(ScriptContext *ctx)
{
u16 v0, v1, v2;
u16 *v3;
v0 = ScriptContext_ReadHalfWord(param0);
v3 = FieldSystem_GetVarPointer(param0->fieldSystem, v0);
*v3 = sub_0206BDBC(param0->fieldSystem->saveData);
v0 = ScriptContext_ReadHalfWord(ctx);
v3 = FieldSystem_GetVarPointer(ctx->fieldSystem, v0);
*v3 = sub_0206BDBC(ctx->fieldSystem->saveData);
return 0;
}
BOOL ScrCmd_1E0(ScriptContext *param0)
BOOL ScrCmd_1E0(ScriptContext *ctx)
{
u16 v0, v1, v2;
u16 *v3;
v0 = ScriptContext_ReadHalfWord(param0);
v3 = FieldSystem_GetVarPointer(param0->fieldSystem, v0);
*v3 = sub_0206BF04(param0->fieldSystem->saveData);
v0 = ScriptContext_ReadHalfWord(ctx);
v3 = FieldSystem_GetVarPointer(ctx->fieldSystem, v0);
*v3 = sub_0206BF04(ctx->fieldSystem->saveData);
return 0;
}
BOOL ScrCmd_1E1(ScriptContext *param0)
BOOL ScrCmd_1E1(ScriptContext *ctx)
{
int v0, v1;
int cmd, v1;
const TrainerInfo *v2;
u16 v3 = ScriptContext_GetVar(param0);
u16 v4 = ScriptContext_GetVar(param0);
u16 *v5 = ScriptContext_GetVarPointer(param0);
UnkStruct_0204AFC4 *v6 = param0->fieldSystem->unk_AC;
u16 v3 = ScriptContext_GetVar(ctx);
u16 v4 = ScriptContext_GetVar(ctx);
u16 *destVar = ScriptContext_GetVarPointer(ctx);
BattleTower *battleTower = ctx->fieldSystem->battleTower;
*v5 = 0;
*destVar = 0;
switch (v3) {
case 0:
v0 = 62;
sub_0204B060(param0->fieldSystem->unk_AC, param0->fieldSystem->saveData);
cmd = 62;
sub_0204B060(ctx->fieldSystem->battleTower, ctx->fieldSystem->saveData);
break;
case 1:
v0 = 63;
sub_0204B0BC(param0->fieldSystem->unk_AC);
cmd = 63;
sub_0204B0BC(ctx->fieldSystem->battleTower);
break;
case 2:
v0 = 64;
sub_0204B0D4(param0->fieldSystem->unk_AC, v4);
cmd = 64;
sub_0204B0D4(ctx->fieldSystem->battleTower, v4);
break;
}
if (sub_0205E6D8(param0->fieldSystem->saveData) == 1) {
if (sub_02036614(CommSys_CurNetId(), v6->unk_83E) == 1) {
*v5 = 1;
if (sub_0205E6D8(ctx->fieldSystem->saveData) == 1) {
if (sub_02036614(CommSys_CurNetId(), battleTower->unk_83E) == 1) {
*destVar = 1;
} else {
return 1;
return TRUE;
}
} else {
sub_0209BA80(v6);
sub_0209BA80(battleTower);
v1 = 70;
if (CommSys_SendData(v0, v6->unk_83E, v1) == 1) {
*v5 = 1;
if (CommSys_SendData(cmd, battleTower->unk_83E, v1) == 1) {
*destVar = 1;
}
}
return 0;
return FALSE;
}
static BOOL sub_02049A20(ScriptContext *param0);
static BOOL sub_02049A20(ScriptContext *ctx);
BOOL ScrCmd_1E2(ScriptContext *param0)
BOOL ScrCmd_1E2(ScriptContext *ctx)
{
u16 v0;
u16 v1;
UnkStruct_0204AFC4 *v2 = param0->fieldSystem->unk_AC;
u16 destVarID;
BattleTower *battleTower = ctx->fieldSystem->battleTower;
v1 = ScriptContext_GetVar(param0);
v0 = ScriptContext_ReadHalfWord(param0);
destVarID = ScriptContext_GetVar(ctx);
v0 = ScriptContext_ReadHalfWord(ctx);
if (sub_0205E6D8(param0->fieldSystem->saveData) == 1) {
sub_0206BD88(param0->fieldSystem->task, v1, v0);
if (sub_0205E6D8(ctx->fieldSystem->saveData) == 1) {
sub_0206BD88(ctx->fieldSystem->task, destVarID, v0);
} else {
v2->unk_8DA = v0;
v2->unk_8D5 = v1;
battleTower->unk_8DA = v0;
battleTower->unk_8D5 = destVarID;
ScriptContext_Pause(param0, sub_02049A20);
ScriptContext_Pause(ctx, sub_02049A20);
}
return 1;
return TRUE;
}
static BOOL sub_02049A20(ScriptContext *param0)
static BOOL sub_02049A20(ScriptContext *ctx)
{
u8 v0;
UnkStruct_0204AFC4 *v1 = param0->fieldSystem->unk_AC;
u16 *v2 = FieldSystem_GetVarPointer(param0->fieldSystem, v1->unk_8DA);
BattleTower *battleTower = ctx->fieldSystem->battleTower;
u16 *v2 = FieldSystem_GetVarPointer(ctx->fieldSystem, battleTower->unk_8DA);
if (v1->unk_8D5 == 1) {
if (battleTower->unk_8D5 == 1) {
v0 = 1;
} else {
v0 = 2;
}
if (v1->unk_8D4 == v0) {
v1->unk_8D4 = 0;
*v2 = v1->unk_8D8;
if (battleTower->unk_8D4 == v0) {
battleTower->unk_8D4 = 0;
*v2 = battleTower->unk_8D8;
return 1;
}
@ -330,13 +326,13 @@ static BOOL sub_02049A20(ScriptContext *param0)
return 0;
}
BOOL ScrCmd_1E3(ScriptContext *param0)
BOOL ScrCmd_1E3(ScriptContext *ctx)
{
UnkStruct_02049A68 v0;
u16 *v1 = FieldSystem_GetVarPointer(param0->fieldSystem, ScriptContext_ReadHalfWord(param0));
u16 *v2 = FieldSystem_GetVarPointer(param0->fieldSystem, ScriptContext_ReadHalfWord(param0));
u16 *v1 = FieldSystem_GetVarPointer(ctx->fieldSystem, ScriptContext_ReadHalfWord(ctx));
u16 *v2 = FieldSystem_GetVarPointer(ctx->fieldSystem, ScriptContext_ReadHalfWord(ctx));
sub_0202D708(sub_0202D764(param0->fieldSystem->saveData), &v0);
sub_0202D708(sub_0202D764(ctx->fieldSystem->saveData), &v0);
*v1 = v0.unk_00;
*v2 = v0.unk_04;
@ -344,15 +340,15 @@ BOOL ScrCmd_1E3(ScriptContext *param0)
return 0;
}
BOOL ScrCmd_1E4(ScriptContext *param0)
BOOL ScrCmd_1E4(ScriptContext *ctx)
{
u16 *v0 = FieldSystem_GetVarPointer(param0->fieldSystem, ScriptContext_ReadHalfWord(param0));
u16 *destVar = FieldSystem_GetVarPointer(ctx->fieldSystem, ScriptContext_ReadHalfWord(ctx));
*v0 = sub_0202D5F0(sub_0202D764(param0->fieldSystem->saveData));
return 0;
*destVar = sub_0202D5F0(sub_0202D764(ctx->fieldSystem->saveData));
return FALSE;
}
static u16 sub_02049AE0(UnkStruct_0204AFC4 *param0, u8 param1)
static u16 sub_02049AE0(BattleTower *battleTower, u8 param1)
{
static const u16 v0[] = {
0x8d,
@ -363,14 +359,14 @@ static u16 sub_02049AE0(UnkStruct_0204AFC4 *param0, u8 param1)
};
if (param1 == 2) {
return param0->unk_10_5;
return battleTower->unk_10_5;
}
if (param1 == 1) {
if (param0->unk_0F == 2) {
return v0[param0->unk_10_5];
if (battleTower->challengeMode == 2) {
return v0[battleTower->unk_10_5];
} else {
if (param0->unk_12) {
if (battleTower->unk_12) {
return 0x61;
} else {
return 0x0;
@ -378,83 +374,83 @@ static u16 sub_02049AE0(UnkStruct_0204AFC4 *param0, u8 param1)
}
}
if (param0->unk_11) {
if (battleTower->unk_11) {
return 0x61;
} else {
return 0x0;
}
}
BOOL ScrCmd_ShowBattlePoints(ScriptContext *param0)
BOOL ScrCmd_ShowBattlePoints(ScriptContext *ctx)
{
FieldSystem *fieldSystem = param0->fieldSystem;
u8 tilemapLeft = ScriptContext_ReadByte(param0);
u8 tilemapTop = ScriptContext_ReadByte(param0);
FieldSystem *fieldSystem = ctx->fieldSystem;
u8 tilemapLeft = ScriptContext_ReadByte(ctx);
u8 tilemapTop = ScriptContext_ReadByte(ctx);
Window **bpWindow = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_SPECIAL_CURRENCY_WINDOW);
*bpWindow = FieldMenu_DrawBPWindow(param0->fieldSystem, tilemapLeft, tilemapTop);
*bpWindow = FieldMenu_DrawBPWindow(ctx->fieldSystem, tilemapLeft, tilemapTop);
return FALSE;
}
BOOL ScrCmd_HideBattlePoints(ScriptContext *param0)
BOOL ScrCmd_HideBattlePoints(ScriptContext *ctx)
{
FieldSystem *fieldSystem = param0->fieldSystem;
FieldSystem *fieldSystem = ctx->fieldSystem;
Window **bpWindow = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_SPECIAL_CURRENCY_WINDOW);
FieldMenu_DeleteSpecialCurrencyWindow(*bpWindow);
return FALSE;
}
BOOL ScrCmd_UpdateBPDisplay(ScriptContext *param0)
BOOL ScrCmd_UpdateBPDisplay(ScriptContext *ctx)
{
FieldSystem *fieldSystem = param0->fieldSystem;
FieldSystem *fieldSystem = ctx->fieldSystem;
Window **bpWindow = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_SPECIAL_CURRENCY_WINDOW);
FieldMenu_PrintBPToWindow(param0->fieldSystem, *bpWindow);
FieldMenu_PrintBPToWindow(ctx->fieldSystem, *bpWindow);
return FALSE;
}
BOOL ScrCmd_297(ScriptContext *param0)
BOOL ScrCmd_297(ScriptContext *ctx)
{
FieldSystem *fieldSystem = param0->fieldSystem;
FieldSystem *fieldSystem = ctx->fieldSystem;
SaveData *saveData = fieldSystem->saveData;
u16 *v2 = ScriptContext_GetVarPointer(param0);
u16 *v2 = ScriptContext_GetVarPointer(ctx);
*v2 = sub_0202D230(sub_0202D750(saveData), 0, 0);
return 0;
}
BOOL ScrCmd_298(ScriptContext *param0)
BOOL ScrCmd_298(ScriptContext *ctx)
{
FieldSystem *fieldSystem = param0->fieldSystem;
FieldSystem *fieldSystem = ctx->fieldSystem;
SaveData *saveData = fieldSystem->saveData;
u16 v2 = ScriptContext_GetVar(param0);
u16 v2 = ScriptContext_GetVar(ctx);
GameRecords_AddToRecordValue(SaveData_GetGameRecords(param0->fieldSystem->saveData), RECORD_UNK_068, v2);
GameRecords_AddToRecordValue(SaveData_GetGameRecords(ctx->fieldSystem->saveData), RECORD_UNK_068, v2);
sub_0202D230(sub_0202D750(saveData), v2, 5);
return 0;
}
BOOL ScrCmd_299(ScriptContext *param0)
BOOL ScrCmd_299(ScriptContext *ctx)
{
FieldSystem *fieldSystem = param0->fieldSystem;
FieldSystem *fieldSystem = ctx->fieldSystem;
SaveData *saveData = fieldSystem->saveData;
u16 v2 = ScriptContext_GetVar(param0);
u16 v2 = ScriptContext_GetVar(ctx);
GameRecords_AddToRecordValue(SaveData_GetGameRecords(param0->fieldSystem->saveData), RECORD_UNK_069, v2);
GameRecords_AddToRecordValue(SaveData_GetGameRecords(ctx->fieldSystem->saveData), RECORD_UNK_069, v2);
sub_0202D230(sub_0202D750(saveData), v2, 6);
return 0;
}
BOOL ScrCmd_29A(ScriptContext *param0)
BOOL ScrCmd_29A(ScriptContext *ctx)
{
u16 v0;
FieldSystem *fieldSystem = param0->fieldSystem;
FieldSystem *fieldSystem = ctx->fieldSystem;
SaveData *saveData = fieldSystem->saveData;
u16 v3 = ScriptContext_GetVar(param0);
u16 *v4 = ScriptContext_GetVarPointer(param0);
u16 v3 = ScriptContext_GetVar(ctx);
u16 *v4 = ScriptContext_GetVarPointer(ctx);
v0 = sub_0202D230(
sub_0202D750(saveData), 0, 0);
@ -468,13 +464,13 @@ BOOL ScrCmd_29A(ScriptContext *param0)
return 0;
}
BOOL ScrCmd_29B(ScriptContext *param0)
BOOL ScrCmd_29B(ScriptContext *ctx)
{
u8 v0 = 0;
u16 v1 = ScriptContext_GetVar(param0);
u16 v2 = ScriptContext_GetVar(param0);
u16 *v3 = ScriptContext_GetVarPointer(param0);
u16 *v4 = ScriptContext_GetVarPointer(param0);
u16 v1 = ScriptContext_GetVar(ctx);
u16 v2 = ScriptContext_GetVar(ctx);
u16 *v3 = ScriptContext_GetVarPointer(ctx);
u16 *v4 = ScriptContext_GetVarPointer(ctx);
static const u16 v5[][2] = {
{ 0x2E, 0x1 },
{ 0x31, 0x1 },

View File

@ -3,6 +3,7 @@
#include <nitro.h>
#include <string.h>
#include "generated/battle_tower_modes.h"
#include "generated/game_records.h"
#include "generated/trainer_score_events.h"
@ -46,22 +47,22 @@ typedef struct {
u16 unk_02;
} UnkStruct_02049D38;
static u16 sub_0204AC54(SaveData *saveData, u8 param1, UnkStruct_0204AFC4 *param2);
static u16 sub_0204ACC8(UnkStruct_0204AFC4 *param0);
static void sub_0204AE20(UnkStruct_0204AFC4 *param0, SaveData *saveData, int param2);
static u16 sub_0204AC54(SaveData *saveData, enum PokemonDataParam param, BattleTower *battleTower);
static u16 sub_0204ACC8(BattleTower *battleTower);
static void sub_0204AE20(BattleTower *battleTower, SaveData *saveData, int param2);
u16 sub_02049D08(u16 param0)
u16 BattleTower_GetPartySizeForChallengeMode(u16 challengeMode)
{
switch (param0) {
case 0:
case 4:
case 5:
switch (challengeMode) {
case BATTLE_TOWER_MODE_SINGLE:
case BATTLE_TOWER_MODE_WIFI:
case BATTLE_TOWER_MODE_5:
return 3;
case 1:
case BATTLE_TOWER_MODE_DOUBLE:
return 4;
case 2:
case 3:
case 6:
case BATTLE_TOWER_MODE_MULTI:
case BATTLE_TOWER_MODE_LINK_MULTI:
case BATTLE_TOWER_MODE_6:
return 2;
}
@ -221,7 +222,7 @@ BOOL sub_02049FA0(UnkStruct_0202D060 *param0)
return sub_0202D214(param0);
}
void sub_02049FA8(FieldSystem *fieldSystem)
void BattleTower_SetCommunicationClubAccessible(FieldSystem *fieldSystem)
{
Location *v0 = FieldOverworldState_GetSpecialLocation(SaveData_GetFieldOverworldState(fieldSystem->saveData));
@ -231,7 +232,7 @@ void sub_02049FA8(FieldSystem *fieldSystem)
return;
}
void sub_02049FE8(FieldSystem *fieldSystem)
void BattleTower_ClearCommunicationClubAccessible(FieldSystem *fieldSystem)
{
SystemFlag_ClearCommunicationClubAccessible(SaveData_GetVarsFlags(fieldSystem->saveData));
}
@ -305,123 +306,120 @@ u16 sub_0204A100(SaveData *saveData)
return (u16)sub_0202D5E8(v0);
}
void sub_0204A110(UnkStruct_0204AFC4 **param0)
void BattleTower_SetNull(BattleTower **battleTower)
{
GF_ASSERT(*param0 == NULL);
*param0 = NULL;
GF_ASSERT(*battleTower == NULL);
*battleTower = NULL;
}
UnkStruct_0204AFC4 *sub_0204A124(SaveData *saveData, u16 param1, u16 param2)
BattleTower *BattleTower_Init(SaveData *saveData, u16 param1, u16 challengeMode)
{
u8 v0;
u16 v1, v2;
UnkStruct_0204AFC4 *v3;
BattleTower *battleTower;
BattleFrontier *frontier;
GameRecords *v5;
v3 = Heap_Alloc(HEAP_ID_FIELD2, sizeof(UnkStruct_0204AFC4));
MI_CpuClear8(v3, sizeof(UnkStruct_0204AFC4));
battleTower = Heap_Alloc(HEAP_ID_FIELD2, sizeof(BattleTower));
MI_CpuClear8(battleTower, sizeof(BattleTower));
v3->heapID = HEAP_ID_FIELD2;
v3->unk_70 = sub_0202D740(saveData);
v3->unk_74 = sub_0202D750(saveData);
v3->unk_00 = 0x12345678;
battleTower->heapID = HEAP_ID_FIELD2;
battleTower->unk_70 = sub_0202D740(saveData);
battleTower->unk_74 = sub_0202D750(saveData);
battleTower->unk_00 = 0x12345678;
sub_0202D21C(v3->unk_70, 0);
sub_0202D21C(battleTower->unk_70, 0);
if (param1 == 0) {
v3->unk_0F = param2;
v3->unk_0E = (u8)sub_02049D08(v3->unk_0F);
v3->unk_0C = 1;
v3->unk_0D = 0;
battleTower->challengeMode = challengeMode;
battleTower->partySize = (u8)BattleTower_GetPartySizeForChallengeMode(battleTower->challengeMode);
battleTower->unk_0C = 1;
battleTower->unk_0D = 0;
for (v1 = 0; v1 < 4; v1++) {
v3->unk_2A[v1] = 0xFF;
battleTower->unk_2A[v1] = 0xFF;
}
for (v1 = 0; v1 < 14; v1++) {
v3->unk_3E[v1] = 0xFFFF;
battleTower->unk_3E[v1] = 0xFFFF;
}
sub_0202D060(v3->unk_70);
v0 = v3->unk_0F;
sub_0202D140(v3->unk_70, 0, &v0);
sub_0202D060(battleTower->unk_70);
v0 = battleTower->challengeMode;
sub_0202D140(battleTower->unk_70, 0, &v0);
} else {
v3->unk_0F = (u8)sub_0202D0BC(v3->unk_70, 0, NULL);
v3->unk_0C = (u8)sub_0202D0BC(v3->unk_70, 1, NULL);
v3->unk_0D = v3->unk_0C - 1;
v3->unk_0E = (u8)sub_02049D08(v3->unk_0F);
battleTower->challengeMode = (u8)sub_0202D0BC(battleTower->unk_70, 0, NULL);
battleTower->unk_0C = (u8)sub_0202D0BC(battleTower->unk_70, 1, NULL);
battleTower->unk_0D = battleTower->unk_0C - 1;
battleTower->partySize = (u8)BattleTower_GetPartySizeForChallengeMode(battleTower->challengeMode);
sub_0202D0BC(v3->unk_70, 5, v3->unk_2A);
sub_0202D0BC(v3->unk_70, 8, v3->unk_3E);
sub_0202D0BC(battleTower->unk_70, 5, battleTower->unk_2A);
sub_0202D0BC(battleTower->unk_70, 8, battleTower->unk_3E);
v3->unk_08 = sub_0202D0BC(v3->unk_70, 10, NULL);
battleTower->unk_08 = sub_0202D0BC(battleTower->unk_70, 10, NULL);
if (v3->unk_0F == 2) {
v3->unk_10_5 = (u8)sub_0202D0BC(v3->unk_70, 9, NULL);
if (battleTower->challengeMode == BATTLE_TOWER_MODE_MULTI) {
battleTower->unk_10_5 = (u8)sub_0202D0BC(battleTower->unk_70, 9, NULL);
sub_0202D0BC(v3->unk_70, 6, &(v3->unk_7E8[v3->unk_10_5]));
sub_0204B404(v3, &v3->unk_298[v3->unk_10_5], 300 + v3->unk_10_5, sub_0202D0BC(v3->unk_70, 7, NULL), &(v3->unk_7E8[v3->unk_10_5]), v3->heapID);
sub_0202D0BC(battleTower->unk_70, 6, &(battleTower->unk_7E8[battleTower->unk_10_5]));
sub_0204B404(battleTower, &battleTower->unk_298[battleTower->unk_10_5], 300 + battleTower->unk_10_5, sub_0202D0BC(battleTower->unk_70, 7, NULL), &(battleTower->unk_7E8[battleTower->unk_10_5]), battleTower->heapID);
}
}
v3->unk_11 = TrainerInfo_Gender(SaveData_GetTrainerInfo(saveData));
battleTower->unk_11 = TrainerInfo_Gender(SaveData_GetTrainerInfo(saveData));
if (v3->unk_0F != 5) {
if (battleTower->challengeMode != BATTLE_TOWER_MODE_5) {
frontier = SaveData_GetBattleFrontier(saveData);
v5 = SaveData_GetGameRecords(saveData);
if (v3->unk_0F == 6) {
if (battleTower->challengeMode == BATTLE_TOWER_MODE_6) {
v2 = SystemVars_GetWiFiFrontierCleared(SaveData_GetVarsFlags(saveData));
} else {
v2 = sub_0202D414(v3->unk_74, 8 + v3->unk_0F, 0);
v2 = sub_0202D414(battleTower->unk_74, 8 + battleTower->challengeMode, 0);
}
if (v2) {
if (v3->unk_0F == 6) {
v3->unk_1A = sub_02030698(
if (battleTower->challengeMode == BATTLE_TOWER_MODE_6) {
battleTower->unk_1A = sub_02030698(
frontier, 113, sub_0205E6A8(113));
} else {
v3->unk_1A = sub_02030698(
frontier, 1 + v3->unk_0F * 2, 0xff);
battleTower->unk_1A = sub_02030698(
frontier, 1 + battleTower->challengeMode * 2, 0xff);
}
v3->unk_1C = sub_0202D3B4(v3->unk_74, v3->unk_0F, 0);
battleTower->unk_1C = sub_0202D3B4(battleTower->unk_74, battleTower->challengeMode, 0);
}
v3->unk_20 = GameRecords_GetRecordValue(v5, RECORD_UNK_029);
battleTower->unk_20 = GameRecords_GetRecordValue(v5, RECORD_UNK_029);
}
if (v3->unk_0F == 6) {
v3->unk_1C = sub_0202D3FC(v3->unk_74, 6, (v3->unk_1A / 7));
if (battleTower->challengeMode == BATTLE_TOWER_MODE_6) {
battleTower->unk_1C = sub_0202D3FC(battleTower->unk_74, 6, (battleTower->unk_1A / 7));
}
return v3;
return battleTower;
}
void sub_0204A32C(UnkStruct_0204AFC4 *param0)
void BattleTower_Free(BattleTower *battleTower)
{
int v0;
if (param0 == NULL) {
if (battleTower == NULL) {
return;
}
GF_ASSERT(param0->unk_00 == 0x12345678);
v0 = param0->heapID;
GF_ASSERT(battleTower->unk_00 == 0x12345678);
MI_CpuClear8(param0, sizeof(UnkStruct_0204AFC4));
Heap_Free(param0);
MI_CpuClear8(battleTower, sizeof(BattleTower));
Heap_Free(battleTower);
param0 = NULL;
battleTower = NULL;
}
void sub_0204A358(UnkStruct_0204AFC4 *param0, FieldTask *param1, void **param2)
void sub_0204A358(BattleTower *battleTower, FieldTask *param1, void **param2)
{
sub_0206BBFC(param1, param2, 17, 0, param0->unk_0E, param0->unk_0E, 100, 0);
sub_0206BBFC(param1, param2, 17, 0, battleTower->partySize, battleTower->partySize, 100, 0);
}
BOOL sub_0204A378(UnkStruct_0204AFC4 *param0, void **param1, SaveData *saveData)
BOOL sub_0204A378(BattleTower *battleTower, void **param1, SaveData *saveData)
{
u16 v0 = 0;
PartyMenu *partyMenu = *param1;
@ -436,11 +434,11 @@ BOOL sub_0204A378(UnkStruct_0204AFC4 *param0, void **param1, SaveData *saveData)
v2 = SaveData_GetParty(saveData);
for (v0 = 0; v0 < param0->unk_0E; v0++) {
param0->unk_2A[v0] = partyMenu->selectionOrder[v0] - 1;
v3 = Party_GetPokemonBySlotIndex(v2, param0->unk_2A[v0]);
param0->unk_2E[v0] = Pokemon_GetValue(v3, MON_DATA_SPECIES, NULL);
param0->unk_36[v0] = Pokemon_GetValue(v3, MON_DATA_HELD_ITEM, NULL);
for (v0 = 0; v0 < battleTower->partySize; v0++) {
battleTower->unk_2A[v0] = partyMenu->selectionOrder[v0] - 1;
v3 = Party_GetPokemonBySlotIndex(v2, battleTower->unk_2A[v0]);
battleTower->unk_2E[v0] = Pokemon_GetValue(v3, MON_DATA_SPECIES, NULL);
battleTower->unk_36[v0] = Pokemon_GetValue(v3, MON_DATA_HELD_ITEM, NULL);
}
Heap_Free(*param1);
@ -448,30 +446,27 @@ BOOL sub_0204A378(UnkStruct_0204AFC4 *param0, void **param1, SaveData *saveData)
return 1;
}
int sub_0204A410(UnkStruct_0204AFC4 *param0, SaveData *saveData)
int BattleTower_CheckDuplicateSpeciesAndHeldItems(BattleTower *battleTower, SaveData *saveData)
{
u16 v0 = 0, v1 = 0;
u16 v2[4], v3[4];
Party *v4;
Pokemon *v5;
u16 i = 0, j = 0;
u16 species[4], heldItems[4];
Party *party = SaveData_GetParty(saveData);
v4 = SaveData_GetParty(saveData);
for (i = 0; i < battleTower->partySize; i++) {
Pokemon *mon = Party_GetPokemonBySlotIndex(party, battleTower->unk_2A[i]);
species[i] = Pokemon_GetValue(mon, MON_DATA_SPECIES, NULL);
heldItems[i] = Pokemon_GetValue(mon, MON_DATA_HELD_ITEM, NULL);
for (v0 = 0; v0 < param0->unk_0E; v0++) {
v5 = Party_GetPokemonBySlotIndex(v4, param0->unk_2A[v0]);
v2[v0] = Pokemon_GetValue(v5, MON_DATA_SPECIES, NULL);
v3[v0] = Pokemon_GetValue(v5, MON_DATA_HELD_ITEM, NULL);
if (v0 == 0) {
if (i == 0) {
continue;
}
for (v1 = 0; v1 < v0; v1++) {
if (v2[v0] == v2[v1]) {
for (j = 0; j < i; j++) {
if (species[i] == species[j]) {
return 1;
}
if ((v3[v0] != 0) && (v3[v0] == v3[v1])) {
if (heldItems[i] != 0 && heldItems[i] == heldItems[j]) {
return 2;
}
}
@ -493,101 +488,101 @@ static BOOL sub_0204A4A0(u16 *param0, u16 param1, u16 param2)
return 0;
}
void sub_0204A4C8(UnkStruct_0204AFC4 *param0, SaveData *saveData)
void sub_0204A4C8(BattleTower *battleTower, SaveData *saveData)
{
int v0;
u16 v1, v2;
if ((param0->unk_0F == 2) || (param0->unk_0F == 6) || (param0->unk_0F == 3)) {
if (((param0->unk_0F == 3) && (param0->unk_14 > param0->unk_1C)) || ((param0->unk_0F == 6) && (param0->unk_14 > param0->unk_1C))) {
v2 = param0->unk_14;
if (battleTower->challengeMode == BATTLE_TOWER_MODE_MULTI || battleTower->challengeMode == BATTLE_TOWER_MODE_6 || battleTower->challengeMode == BATTLE_TOWER_MODE_LINK_MULTI) {
if ((battleTower->challengeMode == BATTLE_TOWER_MODE_LINK_MULTI && battleTower->unk_14 > battleTower->unk_1C) || (battleTower->challengeMode == BATTLE_TOWER_MODE_6 && battleTower->unk_14 > battleTower->unk_1C)) {
v2 = battleTower->unk_14;
} else {
v2 = param0->unk_1C;
v2 = battleTower->unk_1C;
}
for (v0 = 0; v0 < 14; v0++) {
do {
v1 = sub_0204B0F0(param0, v2, v0 / 2, param0->unk_0F);
} while (sub_0204A4A0(param0->unk_3E, v1, v0));
v1 = sub_0204B0F0(battleTower, v2, v0 / 2, battleTower->challengeMode);
} while (sub_0204A4A0(battleTower->unk_3E, v1, v0));
param0->unk_3E[v0] = v1;
battleTower->unk_3E[v0] = v1;
}
} else {
for (v0 = 0; v0 < (14 / 2); v0++) {
do {
v1 = sub_0204B0F0(param0, param0->unk_1C, v0, param0->unk_0F);
} while (sub_0204A4A0(param0->unk_3E, v1, v0));
v1 = sub_0204B0F0(battleTower, battleTower->unk_1C, v0, battleTower->challengeMode);
} while (sub_0204A4A0(battleTower->unk_3E, v1, v0));
param0->unk_3E[v0] = v1;
battleTower->unk_3E[v0] = v1;
}
}
}
u16 sub_0204A578(UnkStruct_0204AFC4 *param0)
u16 sub_0204A578(BattleTower *battleTower)
{
return param0->unk_0C;
return battleTower->unk_0C;
}
BOOL sub_0204A57C(UnkStruct_0204AFC4 *param0)
BOOL sub_0204A57C(BattleTower *battleTower)
{
if (param0->unk_10_0) {
if (battleTower->unk_10_0) {
return 1;
}
if (param0->unk_0C > 7) {
param0->unk_10_0 = 1;
if (battleTower->unk_0C > 7) {
battleTower->unk_10_0 = 1;
return 1;
}
return 0;
}
static void sub_0204A5A0(UnkStruct_0204AFC4 *param0, SaveData *saveData, u16 param2)
static void sub_0204A5A0(BattleTower *battleTower, SaveData *saveData, u16 param2)
{
Party *v0;
if ((param0->unk_0F != 0) && (param0->unk_0F != 1)) {
if (battleTower->challengeMode != BATTLE_TOWER_MODE_SINGLE && battleTower->challengeMode != BATTLE_TOWER_MODE_DOUBLE) {
return;
}
v0 = SaveData_GetParty(saveData);
if (param0->unk_0F == 0) {
sub_0206DBB0(saveData, param2, Party_GetPokemonBySlotIndex(v0, param0->unk_2A[0]), 1);
if (battleTower->challengeMode == BATTLE_TOWER_MODE_SINGLE) {
sub_0206DBB0(saveData, param2, Party_GetPokemonBySlotIndex(v0, battleTower->unk_2A[0]), 1);
} else {
sub_0206DBB0(saveData, param2, Party_GetPokemonBySlotIndex(v0, param0->unk_2A[0]), 0);
sub_0206DBB0(saveData, param2, Party_GetPokemonBySlotIndex(v0, battleTower->unk_2A[0]), 0);
}
}
static void sub_0204A5EC(UnkStruct_0204AFC4 *param0, SaveData *saveData, u8 param2, u16 param3)
static void sub_0204A5EC(BattleTower *battleTower, SaveData *saveData, u8 param2, u16 param3)
{
u8 v0;
switch (param0->unk_0F) {
case 0:
sub_0204AE20(param0, saveData, 0);
case 1:
switch (battleTower->challengeMode) {
case BATTLE_TOWER_MODE_SINGLE:
sub_0204AE20(battleTower, saveData, 0);
case BATTLE_TOWER_MODE_DOUBLE:
if (param3 >= 7) {
sub_0206CFE4(SaveData_GetTVBroadcast(saveData), param2, param3);
}
break;
case 4:
sub_0204AE20(param0, saveData, 1);
sub_0202D1E8(param0->unk_70, param0->unk_28, param0->unk_24, param0->unk_26);
case BATTLE_TOWER_MODE_WIFI:
sub_0204AE20(battleTower, saveData, 1);
sub_0202D1E8(battleTower->unk_70, battleTower->unk_28, battleTower->unk_24, battleTower->unk_26);
v0 = param0->unk_0F;
sub_0202D140(param0->unk_70, 0, &v0);
v0 = battleTower->challengeMode;
sub_0202D140(battleTower->unk_70, 0, &v0);
v0 = param0->unk_0C;
sub_0202D140(param0->unk_70, 1, &v0);
sub_0202D334(param0->unk_74, param0->unk_70);
v0 = battleTower->unk_0C;
sub_0202D140(battleTower->unk_70, 1, &v0);
sub_0202D334(battleTower->unk_74, battleTower->unk_70);
break;
default:
break;
}
}
void sub_0204A660(UnkStruct_0204AFC4 *param0, SaveData *saveData)
void sub_0204A660(BattleTower *battleTower, SaveData *saveData)
{
u32 v0 = 0;
int v1;
@ -595,47 +590,47 @@ void sub_0204A660(UnkStruct_0204AFC4 *param0, SaveData *saveData)
GameRecords *v5 = SaveData_GetGameRecords(saveData);
BattleFrontier *frontier = SaveData_GetBattleFrontier(saveData);
if (param0->unk_0F == 5) {
if (battleTower->challengeMode == BATTLE_TOWER_MODE_5) {
return;
}
if (param0->unk_0F == 6) {
if (battleTower->challengeMode == BATTLE_TOWER_MODE_6) {
v1 = 112;
} else {
v1 = param0->unk_0F * 2 + 0;
v1 = battleTower->challengeMode * 2;
}
v2 = sub_02030698(frontier, v1, sub_0205E6A8(v1));
v3 = sub_02030848(frontier, v1, sub_0205E6A8(v1), param0->unk_1A + param0->unk_0D);
v3 = sub_02030848(frontier, v1, sub_0205E6A8(v1), battleTower->unk_1A + battleTower->unk_0D);
if (v3 > 1) {
if ((v2 < v3) || ((v2 == v3) && (v3 % 7 == 0))) {
sub_0204A5A0(param0, saveData, v3);
if (v2 < v3 || (v2 == v3 && v3 % 7 == 0)) {
sub_0204A5A0(battleTower, saveData, v3);
}
}
if (param0->unk_0F == 6) {
if (battleTower->challengeMode == BATTLE_TOWER_MODE_6) {
v4 = sub_02030698(SaveData_GetBattleFrontier(saveData), 100, sub_0205E6A8(100));
} else {
v4 = sub_0202D414(param0->unk_74, 8 + param0->unk_0F, 0);
v4 = sub_0202D414(battleTower->unk_74, 8 + battleTower->challengeMode, 0);
}
v0 = sub_020306E4(frontier, v1 + 1, sub_0205E6A8(v1 + 1), (param0->unk_1A + param0->unk_0D));
v0 = sub_020306E4(frontier, v1 + 1, sub_0205E6A8(v1 + 1), (battleTower->unk_1A + battleTower->unk_0D));
if (param0->unk_0F == 6) {
if (battleTower->challengeMode == BATTLE_TOWER_MODE_6) {
sub_020306E4(SaveData_GetBattleFrontier(saveData), 100, sub_0205E6A8(100), 0);
} else {
sub_0202D414(param0->unk_74, 8 + param0->unk_0F, 2);
sub_0202D414(battleTower->unk_74, 8 + battleTower->challengeMode, 2);
}
GameRecords_AddToRecordValue(v5, RECORD_UNK_029, param0->unk_0D);
sub_0202D3B4(param0->unk_74, param0->unk_0F, 2);
GameRecords_AddToRecordValue(v5, RECORD_UNK_029, battleTower->unk_0D);
sub_0202D3B4(battleTower->unk_74, battleTower->challengeMode, 2);
if (param0->unk_0F != 6) {
if (battleTower->challengeMode != BATTLE_TOWER_MODE_6) {
GameRecords_AddToRecordValue(SaveData_GetGameRecords(saveData), RECORD_UNK_015, 1);
}
sub_0204ACC8(param0);
sub_0204ACC8(battleTower);
v0 += 1;
@ -643,10 +638,10 @@ void sub_0204A660(UnkStruct_0204AFC4 *param0, SaveData *saveData)
v0 = 9999;
}
sub_0204A5EC(param0, saveData, 0, v0);
sub_0204A5EC(battleTower, saveData, 0, v0);
}
void sub_0204A7A4(UnkStruct_0204AFC4 *param0, SaveData *saveData, JournalEntry *journalEntry)
void sub_0204A7A4(BattleTower *battleTower, SaveData *saveData, JournalEntry *journalEntry)
{
u32 v0 = 0;
int v1;
@ -655,106 +650,106 @@ void sub_0204A7A4(UnkStruct_0204AFC4 *param0, SaveData *saveData, JournalEntry *
GameRecords *v6;
BattleFrontier *frontier;
if (param0->unk_0F == 5) {
if (battleTower->challengeMode == BATTLE_TOWER_MODE_5) {
return;
}
v6 = SaveData_GetGameRecords(saveData);
frontier = SaveData_GetBattleFrontier(saveData);
if (param0->unk_0F == 6) {
if (battleTower->challengeMode == BATTLE_TOWER_MODE_6) {
v1 = 112;
} else {
v1 = param0->unk_0F * 2 + 0;
v1 = battleTower->challengeMode * 2;
}
if (param0->unk_0F == 6) {
if (battleTower->challengeMode == BATTLE_TOWER_MODE_6) {
v5 = sub_02030698(SaveData_GetBattleFrontier(saveData), 100, sub_0205E6A8(100));
} else {
v5 = sub_0202D414(param0->unk_74, 8 + param0->unk_0F, 0);
v5 = sub_0202D414(battleTower->unk_74, 8 + battleTower->challengeMode, 0);
}
v0 = sub_020306E4(frontier, v1 + 1, sub_0205E6A8(v1 + 1), (param0->unk_1A + param0->unk_0D));
v0 = sub_020306E4(frontier, v1 + 1, sub_0205E6A8(v1 + 1), (battleTower->unk_1A + battleTower->unk_0D));
if (param0->unk_0F == 6) {
if (battleTower->challengeMode == BATTLE_TOWER_MODE_6) {
sub_020306E4(SaveData_GetBattleFrontier(saveData), 100, sub_0205E6A8(100), 1);
} else {
sub_0202D414(param0->unk_74, 8 + param0->unk_0F, 1);
sub_0202D414(battleTower->unk_74, 8 + battleTower->challengeMode, 1);
}
v3 = sub_02030698(frontier, v1, sub_0205E6A8(v1));
v4 = sub_02030848(frontier, v1, sub_0205E6A8(v1), v0);
GameRecords_AddToRecordValue(v6, RECORD_UNK_029, 7);
sub_0202D3B4(param0->unk_74, param0->unk_0F, 3);
sub_0202D3B4(battleTower->unk_74, battleTower->challengeMode, 3);
if (param0->unk_0F != 6) {
if (battleTower->challengeMode != BATTLE_TOWER_MODE_6) {
GameRecords_AddToRecordValue(v6, RECORD_UNK_015, 1);
}
GameRecords_IncrementTrainerScore(v6, TRAINER_SCORE_EVENT_UNK_14);
sub_0204ACC8(param0);
sub_0204A5EC(param0, saveData, 1, v0);
sub_0204ACC8(battleTower);
sub_0204A5EC(battleTower, saveData, 1, v0);
if (param0->unk_0F == HEAP_ID_FIELD1) {
journalEntryOnlineEvent = JournalEntry_CreateEventBattleRoom(param0->heapID);
if (battleTower->challengeMode == BATTLE_TOWER_MODE_WIFI) {
journalEntryOnlineEvent = JournalEntry_CreateEventBattleRoom(battleTower->heapID);
JournalEntry_SaveData(journalEntry, journalEntryOnlineEvent, JOURNAL_ONLINE_EVENT);
}
}
void sub_0204A8C8(UnkStruct_0204AFC4 *param0)
void sub_0204A8C8(BattleTower *battleTower)
{
u16 v0;
u8 v1[4];
v1[0] = param0->unk_0F;
sub_0202D140(param0->unk_70, 0, v1);
v1[0] = battleTower->challengeMode;
sub_0202D140(battleTower->unk_70, 0, v1);
v1[0] = param0->unk_0C;
sub_0202D140(param0->unk_70, 1, v1);
v1[0] = battleTower->unk_0C;
sub_0202D140(battleTower->unk_70, 1, v1);
sub_0202D140(param0->unk_70, 5, param0->unk_2A);
sub_0202D1E8(param0->unk_70, param0->unk_28, param0->unk_24, param0->unk_26);
sub_0202D140(param0->unk_70, 8, param0->unk_3E);
sub_0202D140(param0->unk_70, 10, &(param0->unk_08));
sub_0202D21C(param0->unk_70, 1);
sub_0202D140(battleTower->unk_70, 5, battleTower->unk_2A);
sub_0202D1E8(battleTower->unk_70, battleTower->unk_28, battleTower->unk_24, battleTower->unk_26);
sub_0202D140(battleTower->unk_70, 8, battleTower->unk_3E);
sub_0202D140(battleTower->unk_70, 10, &(battleTower->unk_08));
sub_0202D21C(battleTower->unk_70, 1);
if (param0->unk_0F != 2) {
if (battleTower->challengeMode != BATTLE_TOWER_MODE_MULTI) {
return;
}
v1[0] = param0->unk_10_5;
sub_0202D140(param0->unk_70, 9, v1);
v1[0] = battleTower->unk_10_5;
sub_0202D140(battleTower->unk_70, 9, v1);
sub_0202D140(param0->unk_70, 6, &(param0->unk_7E8[param0->unk_10_5]));
sub_0202D140(param0->unk_70, 7, &(param0->unk_838[param0->unk_10_5]));
sub_0202D140(battleTower->unk_70, 6, &(battleTower->unk_7E8[battleTower->unk_10_5]));
sub_0202D140(battleTower->unk_70, 7, &(battleTower->unk_838[battleTower->unk_10_5]));
}
void sub_0204A97C(UnkStruct_0204AFC4 *param0)
void sub_0204A97C(BattleTower *battleTower)
{
int v0;
for (v0 = 0; v0 < 5; v0++) {
param0->unk_838[v0] = (u8)sub_0204B3B8(param0, &(param0->unk_298[v0]), 300 + v0, param0->unk_0E, param0->unk_2E, param0->unk_36, &(param0->unk_7E8[v0]), param0->heapID);
battleTower->unk_838[v0] = (u8)sub_0204B3B8(battleTower, &(battleTower->unk_298[v0]), 300 + v0, battleTower->partySize, battleTower->unk_2E, battleTower->unk_36, &(battleTower->unk_7E8[v0]), battleTower->heapID);
}
}
u16 sub_0204A9E0(UnkStruct_0204AFC4 *param0, u16 param1)
u16 sub_0204A9E0(BattleTower *battleTower, u16 param1)
{
return sub_0204AF9C(param0->unk_78[param1].unk_00.trainerType);
return sub_0204AF9C(battleTower->unk_78[param1].unk_00.trainerType);
}
u16 sub_0204A9F8(UnkStruct_0204AFC4 *param0)
u16 BattleTower_GetChallengeMode(BattleTower *battleTower)
{
return param0->unk_0F;
return battleTower->challengeMode;
}
u16 sub_0204A9FC(UnkStruct_0204AFC4 *param0)
u16 sub_0204A9FC(BattleTower *battleTower)
{
return (u16)param0->unk_10_1;
return (u16)battleTower->unk_10_1;
}
u16 sub_0204AA04(UnkStruct_0204AFC4 *param0)
u16 sub_0204AA04(BattleTower *battleTower)
{
u16 v0;
u16 v1 = 0;
@ -762,15 +757,15 @@ u16 sub_0204AA04(UnkStruct_0204AFC4 *param0)
static const u8 v3[] = { 0, 3, 3, 4, 4, 5, 5, 7 };
static const u8 v4[] = { 0, 8, 9, 11, 12, 14, 15, 18 };
if (param0->unk_0F == 5) {
if (battleTower->challengeMode == BATTLE_TOWER_MODE_5) {
return 0;
}
if (param0->unk_0F == 4) {
v1 = v2[sub_0202D2C0(param0->unk_74, 0)];
if (battleTower->challengeMode == BATTLE_TOWER_MODE_WIFI) {
v1 = v2[sub_0202D2C0(battleTower->unk_74, 0)];
} else {
if ((param0->unk_0F == 3) || (param0->unk_0F == 6)) {
v0 = sub_0202D3B4(param0->unk_74, param0->unk_0F, 0);
if (battleTower->challengeMode == BATTLE_TOWER_MODE_LINK_MULTI || battleTower->challengeMode == BATTLE_TOWER_MODE_6) {
v0 = sub_0202D3B4(battleTower->unk_74, battleTower->challengeMode, 0);
if (v0 >= 7) {
v1 = 18;
@ -778,9 +773,9 @@ u16 sub_0204AA04(UnkStruct_0204AFC4 *param0)
v1 = v4[v0];
}
} else {
v0 = sub_0202D3B4(param0->unk_74, param0->unk_0F, 0);
v0 = sub_0202D3B4(battleTower->unk_74, battleTower->challengeMode, 0);
if (param0->unk_10_1) {
if (battleTower->unk_10_1) {
v1 = 20;
} else if (v0 >= 7) {
v1 = 7;
@ -790,27 +785,27 @@ u16 sub_0204AA04(UnkStruct_0204AFC4 *param0)
}
}
sub_0202D230(param0->unk_74, v1, 5);
sub_0202D230(battleTower->unk_74, v1, 5);
return v1;
}
u16 sub_0204AA7C(UnkStruct_0204AFC4 *param0, SaveData *saveData)
u16 sub_0204AA7C(BattleTower *battleTower, SaveData *saveData)
{
u8 v0, v1;
u16 v2, v3, v4;
v2 = sub_02049FF8(saveData, param0->unk_0F);
v2 = sub_02049FF8(saveData, battleTower->challengeMode);
if (v2 < 50) {
return 0;
}
if (v2 >= 100) {
if (sub_0202D414(param0->unk_74, 1, 0)) {
if (sub_0202D414(battleTower->unk_74, 1, 0)) {
return 0;
}
} else {
if (sub_0202D414(param0->unk_74, 0, 0)) {
if (sub_0202D414(battleTower->unk_74, 0, 0)) {
return 0;
}
}
@ -818,7 +813,7 @@ u16 sub_0204AA7C(UnkStruct_0204AFC4 *param0, SaveData *saveData)
return 1;
}
u16 sub_0204AABC(UnkStruct_0204AFC4 *param0, SaveData *saveData, u8 param2)
u16 sub_0204AABC(BattleTower *battleTower, SaveData *saveData, u8 param2)
{
u8 v0, v1;
UnkStruct_0202D750 *v2 = sub_0202D750(saveData);
@ -843,14 +838,14 @@ u16 sub_0204AABC(UnkStruct_0204AFC4 *param0, SaveData *saveData, u8 param2)
v1 = sub_0202D2C0(v2, 0);
if (v1 == 10) {
param0->unk_10_4 = 1;
battleTower->unk_10_4 = 1;
return 0;
}
sub_0202D2C0(v2, 3);
if (v1 + 1 >= 5) {
param0->unk_10_4 = 1;
battleTower->unk_10_4 = 1;
}
return 1;
@ -876,78 +871,76 @@ u16 sub_0204AABC(UnkStruct_0204AFC4 *param0, SaveData *saveData, u8 param2)
return 0;
}
u16 sub_0204AB68(UnkStruct_0204AFC4 *param0, SaveData *saveData)
u16 sub_0204AB68(BattleTower *battleTower, SaveData *saveData)
{
if (param0->unk_0F != 0) {
if (battleTower->challengeMode != BATTLE_TOWER_MODE_SINGLE) {
return 0;
}
switch (param0->unk_10_1) {
switch (battleTower->unk_10_1) {
case 1:
return sub_0204AC54(saveData, 26, param0);
return sub_0204AC54(saveData, MON_DATA_SINNOH_ABILITY_RIBBON, battleTower);
case 2:
return sub_0204AC54(saveData, 27, param0);
return sub_0204AC54(saveData, MON_DATA_SINNOH_GREAT_ABILITY_RIBBON, battleTower);
}
return 0;
}
u16 sub_0204ABA0(UnkStruct_0204AFC4 *param0, SaveData *saveData)
u16 sub_0204ABA0(BattleTower *battleTower, SaveData *saveData)
{
u8 v0, v1;
u16 v2, v3, v4;
Underground *v5;
enum PokemonDataParam param;
if (param0->unk_0F == 5) {
if (battleTower->challengeMode == BATTLE_TOWER_MODE_5) {
return 0;
}
if (param0->unk_0F == 6) {
if (battleTower->challengeMode == BATTLE_TOWER_MODE_6) {
return 0;
}
if (!param0->unk_10_4) {
if (!battleTower->unk_10_4) {
return 0;
}
switch (param0->unk_0F) {
case 1:
v0 = 28;
switch (battleTower->challengeMode) {
case BATTLE_TOWER_MODE_DOUBLE:
param = MON_DATA_SINNOH_DOUBLE_ABILITY_RIBBON;
break;
case 2:
v0 = 29;
case BATTLE_TOWER_MODE_MULTI:
param = MON_DATA_SINNOH_MULTI_ABILITY_RIBBON;
break;
case 3:
v0 = 30;
case BATTLE_TOWER_MODE_LINK_MULTI:
param = MON_DATA_SINNOH_PAIR_ABILITY_RIBBON;
break;
case 4:
v0 = 31;
case BATTLE_TOWER_MODE_WIFI:
param = MON_DATA_SINNOH_WORLD_ABILITY_RIBBON;
break;
}
return sub_0204AC54(saveData, v0, param0);
return sub_0204AC54(saveData, param, battleTower);
}
u16 sub_0204ABF4(UnkStruct_0204AFC4 *param0, SaveData *saveData)
u16 sub_0204ABF4(BattleTower *battleTower, SaveData *saveData)
{
u8 v0;
if (param0->unk_0F == 6) {
if (battleTower->challengeMode == BATTLE_TOWER_MODE_6) {
v0 = sub_02030698(SaveData_GetBattleFrontier(saveData), 100, sub_0205E6A8(100));
} else {
v0 = sub_0202D414(param0->unk_74, 8 + param0->unk_0F, 0);
v0 = sub_0202D414(battleTower->unk_74, 8 + battleTower->challengeMode, 0);
}
if (!v0) {
param0->unk_08 = sub_0206C02C(saveData);
battleTower->unk_08 = sub_0206C02C(saveData);
} else {
param0->unk_08 = sub_0206C068(saveData);
battleTower->unk_08 = sub_0206C068(saveData);
}
return param0->unk_08 / 65535;
return battleTower->unk_08 / 65535;
}
static u16 sub_0204AC54(SaveData *saveData, u8 param1, UnkStruct_0204AFC4 *param2)
static u16 sub_0204AC54(SaveData *saveData, enum PokemonDataParam param, BattleTower *battleTower)
{
u8 v0 = 1;
u8 v1;
@ -958,15 +951,15 @@ static u16 sub_0204AC54(SaveData *saveData, u8 param1, UnkStruct_0204AFC4 *param
v3 = SaveData_GetParty(saveData);
v1 = 0;
for (v2 = 0; v2 < param2->unk_0E; v2++) {
v4 = Party_GetPokemonBySlotIndex(v3, param2->unk_2A[v2]);
for (v2 = 0; v2 < battleTower->partySize; v2++) {
v4 = Party_GetPokemonBySlotIndex(v3, battleTower->unk_2A[v2]);
if (Pokemon_GetValue(v4, param1, NULL)) {
if (Pokemon_GetValue(v4, param, NULL)) {
continue;
}
Pokemon_SetValue(v4, param1, &v0);
sub_0206DDB8(saveData, v4, param1);
Pokemon_SetValue(v4, param, &v0);
sub_0206DDB8(saveData, v4, param);
++v1;
}
@ -977,21 +970,21 @@ static u16 sub_0204AC54(SaveData *saveData, u8 param1, UnkStruct_0204AFC4 *param
return 1;
}
static u16 sub_0204ACC8(UnkStruct_0204AFC4 *param0)
static u16 sub_0204ACC8(BattleTower *battleTower)
{
u16 v0;
if ((param0->unk_0F == 5) || (param0->unk_0F == 0) || (param0->unk_0F == 6) || (param0->unk_0F == 4)) {
if (battleTower->challengeMode == BATTLE_TOWER_MODE_5 || battleTower->challengeMode == BATTLE_TOWER_MODE_SINGLE || battleTower->challengeMode == BATTLE_TOWER_MODE_6 || battleTower->challengeMode == BATTLE_TOWER_MODE_WIFI) {
return 0;
}
v0 = param0->unk_1A + param0->unk_0D;
v0 = battleTower->unk_1A + battleTower->unk_0D;
if (v0 < 50) {
return 0;
}
param0->unk_10_4 = 1;
battleTower->unk_10_4 = 1;
return 1;
}
@ -1023,17 +1016,17 @@ static void sub_0204ACFC(FrontierPokemonDataDTO *param0, Pokemon *mon)
Pokemon_GetValue(mon, MON_DATA_NICKNAME, param0->nickname);
}
static void sub_0204AE20(UnkStruct_0204AFC4 *param0, SaveData *saveData, int param2)
static void sub_0204AE20(BattleTower *battleTower, SaveData *saveData, int param2)
{
FrontierPokemonDataDTO *v1 = Heap_AllocAtEnd(param0->heapID, sizeof(FrontierPokemonDataDTO) * 3);
FrontierPokemonDataDTO *v1 = Heap_AllocAtEnd(battleTower->heapID, sizeof(FrontierPokemonDataDTO) * 3);
MI_CpuClear8(v1, sizeof(FrontierPokemonDataDTO) * 3);
Party *party = SaveData_GetParty(saveData);
for (int i = 0; i < 3; i++) {
sub_0204ACFC(&(v1[i]), Party_GetPokemonBySlotIndex(party, param0->unk_2A[i]));
sub_0204ACFC(&(v1[i]), Party_GetPokemonBySlotIndex(party, battleTower->unk_2A[i]));
}
sub_0202D2F0(param0->unk_74, param2, v1);
sub_0202D2F0(battleTower->unk_74, param2, v1);
MI_CpuClear8(v1, sizeof(FrontierPokemonDataDTO) * 3);
Heap_Free(v1);
}
@ -1063,12 +1056,12 @@ u8 sub_0204AE84(u16 param0)
return v0;
}
u16 sub_0204AEC0(UnkStruct_0204AFC4 *param0)
u16 sub_0204AEC0(BattleTower *battleTower)
{
if (param0->unk_0F == 6) {
if (battleTower->challengeMode == BATTLE_TOWER_MODE_6) {
return LCRNG_Next();
}
param0->unk_08 = sub_0206BFF0(param0->unk_08);
return param0->unk_08 / 65535;
battleTower->unk_08 = sub_0206BFF0(battleTower->unk_08);
return battleTower->unk_08 / 65535;
}

View File

@ -3,6 +3,7 @@
#include <nitro.h>
#include <string.h>
#include "generated/battle_tower_modes.h"
#include "generated/object_events.h"
#include "generated/species_data_params.h"
#include "generated/trainer_classes.h"
@ -32,7 +33,7 @@
#include "unk_0202D05C.h"
#include "unk_02049D08.h"
static BOOL sub_0204B470(UnkStruct_0204AFC4 *param0, BattleFrontierTrainerData *param1, u16 param2, FrontierPokemonDataDTO *param3, u8 param4, u16 *param5, u16 *param6, UnkStruct_0204B404 *param7, int param8);
static BOOL sub_0204B470(BattleTower *battleTower, BattleFrontierTrainerData *param1, u16 param2, FrontierPokemonDataDTO *param3, u8 param4, u16 *param5, u16 *param6, UnkStruct_0204B404 *param7, int param8);
static void *sub_0204B630(u16 param0, int param1);
static void sub_0204B640(BattleFrontierPokemonData *param0, int param1);
@ -102,38 +103,34 @@ static const u16 sTrainerClassToObjectID[][2] = {
{ TRAINER_CLASS_POKE_KID, OBJ_EVENT_GFX_PIKACHU }
};
StringTemplate *sub_0204AEE8(SaveData *saveData, u16 param1, u16 param2, u8 param3, u8 *param4)
StringTemplate *BattleFrontier_GetStringWithSeenBannedSpecies(SaveData *saveData, u16 numRequiredEligiblePokemon, u16 unused2, u8 unused3, u8 *numBannedSpeciesSeen)
{
u8 v0;
u16 v1;
Strbuf *v2, *v3;
Pokedex *pokedex;
StringTemplate *v5;
MessageLoader *v6;
u8 i;
u16 species;
Strbuf *strbufSpeciesName = Strbuf_Init(12 + 2, HEAP_ID_FIELD1);
Strbuf *strbufUnused = Strbuf_Init(2, HEAP_ID_FIELD1);
Pokedex *pokedex = SaveData_GetPokedex(saveData);
StringTemplate *strTemplate;
MessageLoader *msgLoader = MessageLoader_Init(MESSAGE_LOADER_NARC_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_SPECIES_NAME, HEAP_ID_FIELD1);
strTemplate = StringTemplate_New(BATTLE_FRONTIER_BANLIST_SIZE + 1, 12 + 2, HEAP_ID_FIELD1);
v2 = Strbuf_Init(12 + 2, HEAP_ID_FIELD1);
v3 = Strbuf_Init(2, HEAP_ID_FIELD1);
pokedex = SaveData_GetPokedex(saveData);
v6 = MessageLoader_Init(MESSAGE_LOADER_NARC_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_SPECIES_NAME, HEAP_ID_FIELD1);
v5 = StringTemplate_New(18 + 1, 12 + 2, HEAP_ID_FIELD1);
StringTemplate_SetNumber(strTemplate, 0, numRequiredEligiblePokemon, 1, 0, 1);
StringTemplate_SetNumber(v5, 0, param1, 1, 0, 1);
for (i = 0; i < BATTLE_FRONTIER_BANLIST_SIZE; i++) {
species = Pokemon_GetBattleFrontierBanlistEntry(i);
for (v0 = 0; v0 < 18; v0++) {
v1 = Pokemon_GetBattleFrontierBanlistEntry(v0);
if (Pokedex_HasSeenSpecies(pokedex, v1)) {
MessageLoader_GetStrbuf(v6, v1, v2);
StringTemplate_SetStrbuf(v5, (*param4) + 1, v2, param2, param3, GAME_LANGUAGE);
(*param4)++;
if (Pokedex_HasSeenSpecies(pokedex, species)) {
MessageLoader_GetStrbuf(msgLoader, species, strbufSpeciesName);
StringTemplate_SetStrbuf(strTemplate, (*numBannedSpeciesSeen) + 1, strbufSpeciesName, unused2, unused3, GAME_LANGUAGE);
(*numBannedSpeciesSeen)++;
}
}
MessageLoader_Free(v6);
Strbuf_Free(v3);
Strbuf_Free(v2);
MessageLoader_Free(msgLoader);
Strbuf_Free(strbufUnused);
Strbuf_Free(strbufSpeciesName);
return v5;
return strTemplate;
}
u16 sub_0204AF9C(u8 trainerClass)
@ -150,19 +147,19 @@ u16 sub_0204AF9C(u8 trainerClass)
u16 sub_0204AFC4(FieldSystem *fieldSystem, const u16 *param1)
{
u16 v0 = 0;
UnkStruct_0204AFC4 *v1 = fieldSystem->unk_AC;
BattleTower *battleTower = fieldSystem->battleTower;
v1->unk_12 = (u8)param1[0];
v1->unk_16[0] = param1[1];
v1->unk_16[1] = param1[2];
v1->unk_14 = param1[3];
v1->unk_10_5 = 5 + v1->unk_12;
battleTower->unk_12 = (u8)param1[0];
battleTower->unk_16[0] = param1[1];
battleTower->unk_16[1] = param1[2];
battleTower->unk_14 = param1[3];
battleTower->unk_10_5 = 5 + battleTower->unk_12;
if ((v1->unk_2E[0] == v1->unk_16[0]) || (v1->unk_2E[0] == v1->unk_16[1])) {
if ((battleTower->unk_2E[0] == battleTower->unk_16[0]) || (battleTower->unk_2E[0] == battleTower->unk_16[1])) {
v0 += 1;
}
if ((v1->unk_2E[1] == v1->unk_16[0]) || (v1->unk_2E[1] == v1->unk_16[1])) {
if ((battleTower->unk_2E[1] == battleTower->unk_16[0]) || (battleTower->unk_2E[1] == battleTower->unk_16[1])) {
v0 += 2;
}
@ -172,54 +169,54 @@ u16 sub_0204AFC4(FieldSystem *fieldSystem, const u16 *param1)
u16 sub_0204B020(FieldSystem *fieldSystem, const u16 *param1)
{
int v0;
UnkStruct_0204AFC4 *v1 = fieldSystem->unk_AC;
BattleTower *battleTower = fieldSystem->battleTower;
if (CommSys_CurNetId() == 0) {
return 0;
}
MI_CpuCopy8(param1, v1->unk_3E, 14 * 2);
MI_CpuCopy8(param1, battleTower->unk_3E, 14 * 2);
return 1;
}
u16 sub_0204B044(FieldSystem *fieldSystem, const u16 *param1)
{
int v0;
UnkStruct_0204AFC4 *v1 = fieldSystem->unk_AC;
BattleTower *battleTower = fieldSystem->battleTower;
if (v1->unk_10_3 || param1[0]) {
if (battleTower->unk_10_3 || param1[0]) {
return 1;
}
return 0;
}
void sub_0204B060(UnkStruct_0204AFC4 *param0, SaveData *saveData)
void sub_0204B060(BattleTower *battleTower, SaveData *saveData)
{
int v0;
Party *v1;
Pokemon *v2;
TrainerInfo *v3 = SaveData_GetTrainerInfo(saveData);
param0->unk_83E[0] = TrainerInfo_Gender(v3);
battleTower->unk_83E[0] = TrainerInfo_Gender(v3);
v1 = SaveData_GetParty(saveData);
for (v0 = 0; v0 < 2; v0++) {
param0->unk_83E[1 + v0] = Pokemon_GetValue(Party_GetPokemonBySlotIndex(v1, param0->unk_2A[v0]), MON_DATA_SPECIES, NULL);
battleTower->unk_83E[1 + v0] = Pokemon_GetValue(Party_GetPokemonBySlotIndex(v1, battleTower->unk_2A[v0]), MON_DATA_SPECIES, NULL);
}
param0->unk_83E[3] = sub_0202D3B4(param0->unk_74, 3, 0);
battleTower->unk_83E[3] = sub_0202D3B4(battleTower->unk_74, 3, 0);
}
void sub_0204B0BC(UnkStruct_0204AFC4 *param0)
void sub_0204B0BC(BattleTower *battleTower)
{
MI_CpuCopy8(param0->unk_3E, param0->unk_83E, 14 * 2);
MI_CpuCopy8(battleTower->unk_3E, battleTower->unk_83E, 14 * 2);
}
void sub_0204B0D4(UnkStruct_0204AFC4 *param0, u16 param1)
void sub_0204B0D4(BattleTower *battleTower, u16 param1)
{
param0->unk_10_3 = param1;
param0->unk_83E[0] = param1;
battleTower->unk_10_3 = param1;
battleTower->unk_83E[0] = param1;
}
static const u16 Unk_020EBD58[][2] = {
@ -244,16 +241,16 @@ static const u16 Unk_020EBD78[][2] = {
{ 0xC8, 0x12B }
};
u16 sub_0204B0F0(UnkStruct_0204AFC4 *param0, u8 param1, u8 param2, int param3)
u16 sub_0204B0F0(BattleTower *battleTower, u8 param1, u8 param2, int challengeMode)
{
u16 v0;
if (param3 == 0) {
if ((param1 == 2) && (param2 == 6)) {
if (challengeMode == BATTLE_TOWER_MODE_SINGLE) {
if (param1 == 2 && param2 == 6) {
return 305;
}
if ((param1 == 6) && (param2 == 6)) {
if (param1 == 6 && param2 == 6) {
return 306;
}
}
@ -261,14 +258,14 @@ u16 sub_0204B0F0(UnkStruct_0204AFC4 *param0, u8 param1, u8 param2, int param3)
if (param1 < 7) {
if (param2 == (7 - 1)) {
v0 = (Unk_020EBD78[param1][1] - Unk_020EBD78[param1][0]) + 1;
v0 = Unk_020EBD78[param1][0] + (sub_0204AEC0(param0) % v0);
v0 = Unk_020EBD78[param1][0] + (sub_0204AEC0(battleTower) % v0);
} else {
v0 = (Unk_020EBD58[param1][1] - Unk_020EBD58[param1][0]) + 1;
v0 = Unk_020EBD58[param1][0] + (sub_0204AEC0(param0) % v0);
v0 = Unk_020EBD58[param1][0] + (sub_0204AEC0(battleTower) % v0);
}
} else {
v0 = (Unk_020EBD58[7][1] - Unk_020EBD58[7][0]) + 1;
v0 = Unk_020EBD58[7][0] + (sub_0204AEC0(param0) % v0);
v0 = Unk_020EBD58[7][0] + (sub_0204AEC0(battleTower) % v0);
}
return v0;
@ -303,7 +300,7 @@ static const u16 Unk_020EBD50[] = {
ITEM_QUICK_CLAW
};
static u32 sub_0204B1E8(UnkStruct_0204AFC4 *param0, FrontierPokemonDataDTO *param1, u16 param2, u32 param3, u32 param4, u8 param5, u8 param6, BOOL param7, int param8)
static u32 sub_0204B1E8(BattleTower *battleTower, FrontierPokemonDataDTO *param1, u16 param2, u32 param3, u32 param4, u8 param5, u8 param6, BOOL param7, int param8)
{
int v0;
u32 v2;
@ -335,7 +332,7 @@ static u32 sub_0204B1E8(UnkStruct_0204AFC4 *param0, FrontierPokemonDataDTO *para
if (param4 == 0) {
do {
v2 = (sub_0204AEC0(param0) | sub_0204AEC0(param0) << 16);
v2 = (sub_0204AEC0(battleTower) | sub_0204AEC0(battleTower) << 16);
} while ((v4.nature != Pokemon_GetNatureOf(v2)) || (Pokemon_IsPersonalityShiny(param3, v2) == 1));
param1->personality = v2;
@ -392,31 +389,31 @@ static u32 sub_0204B1E8(UnkStruct_0204AFC4 *param0, FrontierPokemonDataDTO *para
return v2;
}
BOOL sub_0204B3B8(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_0223A348 *param1, u16 param2, int param3, u16 *param4, u16 *param5, UnkStruct_0204B404 *param6, int heapID)
BOOL sub_0204B3B8(BattleTower *battleTower, UnkStruct_ov104_0223A348 *param1, u16 param2, int param3, u16 *param4, u16 *param5, UnkStruct_0204B404 *param6, int heapID)
{
BOOL v0 = 0;
BattleFrontierTrainerData *v1 = sub_0204B184(param1, param2, heapID);
v0 = sub_0204B470(param0, v1, param2, &param1->unk_30[0], param3, param4, param5, param6, heapID);
v0 = sub_0204B470(battleTower, v1, param2, &param1->unk_30[0], param3, param4, param5, param6, heapID);
Heap_Free(v1);
return v0;
}
void sub_0204B404(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_0223A348 *param1, u16 param2, BOOL param3, const UnkStruct_0204B404 *param4, int heapID)
void sub_0204B404(BattleTower *battleTower, UnkStruct_ov104_0223A348 *param1, u16 param2, BOOL param3, const UnkStruct_0204B404 *param4, int heapID)
{
u8 v1 = 0;
BattleFrontierTrainerData *v2 = sub_0204B184(param1, param2, heapID);
v1 = sub_0204AE84(param2);
for (int v0 = 0; v0 < 2; v0++) {
sub_0204B1E8(param0, &(param1->unk_30[v0]), param4->unk_04[v0], param4->unk_00, param4->unk_08[v0], v1, v0, param3, heapID);
sub_0204B1E8(battleTower, &(param1->unk_30[v0]), param4->unk_04[v0], param4->unk_00, param4->unk_08[v0], v1, v0, param3, heapID);
}
Heap_Free(v2);
}
static BOOL sub_0204B470(UnkStruct_0204AFC4 *param0, BattleFrontierTrainerData *param1, u16 param2, FrontierPokemonDataDTO *param3, u8 param4, u16 *param5, u16 *param6, UnkStruct_0204B404 *param7, int param8)
static BOOL sub_0204B470(BattleTower *battleTower, BattleFrontierTrainerData *param1, u16 param2, FrontierPokemonDataDTO *param3, u8 param4, u16 *param5, u16 *param6, UnkStruct_0204B404 *param7, int param8)
{
int v0, v1;
u8 v2;
@ -437,7 +434,7 @@ static BOOL sub_0204B470(UnkStruct_0204AFC4 *param0, BattleFrontierTrainerData *
v9 = 0;
while (v8 != param4) {
v3 = sub_0204AEC0(param0) % param1->numSets;
v3 = sub_0204AEC0(battleTower) % param1->numSets;
v5 = param1->setIDs[v3];
sub_0204B640(&v12, v5);
@ -499,14 +496,14 @@ static BOOL sub_0204B470(UnkStruct_0204AFC4 *param0, BattleFrontierTrainerData *
}
v2 = sub_0204AE84(param2);
v4 = (sub_0204AEC0(param0) | (sub_0204AEC0(param0) << 16));
v4 = (sub_0204AEC0(battleTower) | (sub_0204AEC0(battleTower) << 16));
if (v9 >= 50) {
v10 = 1;
}
for (v0 = 0; v0 < v8; v0++) {
v7[v0] = sub_0204B1E8(param0, &(param3[v0]), v6[v0], v4, 0, v2, v0, v10, param8);
v7[v0] = sub_0204B1E8(battleTower, &(param3[v0]), v6[v0], v4, 0, v2, v0, v10, param8);
}
if (param7 == NULL) {

View File

@ -84,7 +84,6 @@ BOOL ScrCmd_2CC(ScriptContext *param0)
u16 v3, v4, v5;
u16 *v6, *v7;
void **v8;
UnkStruct_0204AFC4 *v9;
UnkStruct_02030114 *v10;
UnkStruct_0203026C *v11;

View File

@ -65,7 +65,6 @@ BOOL ScrCmd_2D2(ScriptContext *param0)
u16 v3, v4, v5;
u16 *v6, *v7;
void **v8;
UnkStruct_0204AFC4 *v9;
UnkStruct_020302DC *v10;
UnkStruct_0203041C *v11;

View File

@ -65,7 +65,6 @@ BOOL ScrCmd_2D9(ScriptContext *param0)
u16 v3, v4, v5;
u16 *v6, *v7;
void **v8;
UnkStruct_0204AFC4 *v9;
UnkStruct_020304A0 *v10;
UnkStruct_020305B8 *v11;

View File

@ -23,7 +23,7 @@
#include "unk_0205DFC4.h"
static void sub_0209BA94(int param0, int param1, void *param2, void *param3);
BOOL sub_0209BB08(UnkStruct_0204AFC4 *param0);
BOOL sub_0209BB08(BattleTower *battleTower);
static void sub_0209BB34(int param0, int param1, void *param2, void *param3);
static void sub_0209BB68(int param0, int param1, void *param2, void *param3);
BOOL sub_0209BBA4(UnkStruct_0209BBA4 *param0);
@ -102,44 +102,44 @@ static void sub_0209BA94(int param0, int param1, void *param2, void *param3)
{
u16 v0;
int v1;
UnkStruct_0204AFC4 *v2 = param3;
BattleTower *battleTower = param3;
const u16 *v3 = param2;
v0 = 0;
v1 = 0;
v2->unk_8D4++;
battleTower->unk_8D4++;
if (CommSys_CurNetId() == param0) {
return;
}
v2->unk_12 = (u8)v3[0];
v2->unk_16[0] = v3[1];
v2->unk_16[1] = v3[2];
v2->unk_14 = v3[3];
v2->unk_10_5 = 5 + v2->unk_12;
battleTower->unk_12 = (u8)v3[0];
battleTower->unk_16[0] = v3[1];
battleTower->unk_16[1] = v3[2];
battleTower->unk_14 = v3[3];
battleTower->unk_10_5 = 5 + battleTower->unk_12;
if ((v2->unk_2E[0] == v2->unk_16[0]) || (v2->unk_2E[0] == v2->unk_16[1])) {
if ((battleTower->unk_2E[0] == battleTower->unk_16[0]) || (battleTower->unk_2E[0] == battleTower->unk_16[1])) {
v0 += 1;
}
if ((v2->unk_2E[1] == v2->unk_16[0]) || (v2->unk_2E[1] == v2->unk_16[1])) {
if ((battleTower->unk_2E[1] == battleTower->unk_16[0]) || (battleTower->unk_2E[1] == battleTower->unk_16[1])) {
v0 += 2;
}
v2->unk_8D8 = v0;
battleTower->unk_8D8 = v0;
return;
}
BOOL sub_0209BB08(UnkStruct_0204AFC4 *param0)
BOOL sub_0209BB08(BattleTower *battleTower)
{
int v0, v1;
v1 = (14 * 2);
MI_CpuCopy8(param0->unk_3E, param0->unk_83E, v1);
MI_CpuCopy8(battleTower->unk_3E, battleTower->unk_83E, v1);
if (CommSys_SendData(63, param0->unk_83E, v1) == 1) {
if (CommSys_SendData(63, battleTower->unk_83E, v1) == 1) {
v0 = 1;
} else {
v0 = 0;
@ -151,11 +151,11 @@ BOOL sub_0209BB08(UnkStruct_0204AFC4 *param0)
static void sub_0209BB34(int param0, int param1, void *param2, void *param3)
{
int v0;
UnkStruct_0204AFC4 *v1 = param3;
BattleTower *battleTower = param3;
const u16 *v2 = param2;
v0 = 0;
v1->unk_8D4++;
battleTower->unk_8D4++;
if (CommSys_CurNetId() == param0) {
return;
@ -165,27 +165,27 @@ static void sub_0209BB34(int param0, int param1, void *param2, void *param3)
return;
}
MI_CpuCopy8(v2, v1->unk_3E, 14 * 2);
MI_CpuCopy8(v2, battleTower->unk_3E, 14 * 2);
return;
}
static void sub_0209BB68(int param0, int param1, void *param2, void *param3)
{
int v0;
UnkStruct_0204AFC4 *v1 = param3;
BattleTower *battleTower = param3;
const u16 *v2 = param2;
v0 = 0;
v1->unk_8D8 = 0;
v1->unk_8D4++;
battleTower->unk_8D8 = 0;
battleTower->unk_8D4++;
if (CommSys_CurNetId() == param0) {
return;
}
if (v1->unk_10_3 || v2[0]) {
v1->unk_8D8 = 1;
if (battleTower->unk_10_3 || v2[0]) {
battleTower->unk_8D8 = 1;
}
return;