From 74f60d99edddec5c53cf0bea6404f0fda96fa4dc Mon Sep 17 00:00:00 2001 From: Rachel Date: Mon, 4 Nov 2024 21:20:15 -0800 Subject: [PATCH] Document and clean up field_battle_data_transfer.c --- consts/battle.json | 29 ++ include/field_battle_data_transfer.h | 42 +- include/player_avatar.h | 9 +- include/struct_defs/struct_0205EC34.h | 2 +- include/unk_0202631C.h | 2 +- include/unk_02054D00.h | 2 +- include/unk_020559DC.h | 4 +- src/battle/ov16_0223B140.c | 4 +- src/encounter.c | 60 +-- src/field_battle_data_transfer.c | 679 +++++++++++++------------- src/field_map_change.c | 2 +- src/field_menu.c | 2 +- src/map_object_move.c | 8 +- src/overlay005/field_control.c | 10 +- src/overlay005/ov5_021EE75C.c | 2 +- src/overlay005/ov5_021F007C.c | 2 +- src/overlay005/ov5_021F08CC.c | 2 +- src/overlay006/ov6_02240C9C.c | 46 +- src/overlay006/ov6_02246184.c | 2 +- src/overlay008/ov8_02249960.c | 2 +- src/overlay104/ov104_022332B4.c | 4 +- src/overlay104/ov104_02234838.c | 4 +- src/overlay104/ov104_022358E8.c | 4 +- src/overlay104/ov104_02237378.c | 4 +- src/overlay104/ov104_02239130.c | 4 +- src/overlay104/ov104_0223A0C4.c | 10 +- src/overlay104/ov104_0223A7F4.c | 16 +- src/overlay104/ov104_0223AF58.c | 16 +- src/overlay104/ov104_0223B6F4.c | 16 +- src/overlay104/ov104_0223BCBC.c | 16 +- src/player_avatar.c | 27 +- src/pokeradar.c | 2 +- src/scrcmd.c | 2 +- src/unk_0202631C.c | 4 +- src/unk_0202F1D4.c | 2 +- src/unk_0203C954.c | 2 +- src/unk_0203D1B8.c | 2 +- src/unk_02048614.c | 6 +- src/unk_02054D00.c | 25 +- src/unk_020559DC.c | 2 +- src/unk_020562F8.c | 8 +- src/unk_02056B30.c | 6 +- src/unk_0205F180.c | 18 +- src/unk_020683F4.c | 4 +- src/unk_02070428.c | 9 +- src/unk_0207070C.c | 4 +- src/unk_0208BA78.c | 6 +- 47 files changed, 577 insertions(+), 557 deletions(-) diff --git a/consts/battle.json b/consts/battle.json index 8b76bd7330..82864eafda 100644 --- a/consts/battle.json +++ b/consts/battle.json @@ -541,6 +541,35 @@ "TERRAIN_MAX" ] }, + "@BattleBackground": { + "type": "enum", + "values": [ + "BACKGROUND_PLAIN", + "BACKGROUND_WATER", + "BACKGROUND_CITY", + "BACKGROUND_FOREST", + "BACKGROUND_MOUNTAIN", + "BACKGROUND_SNOW", + "BACKGROUND_INDOORS_1", + "BACKGROUND_INDOORS_2", + "BACKGROUND_INDOORS_3", + "BACKGROUND_CAVE_1", + "BACKGROUND_CAVE_2", + "BACKGROUND_CAVE_3", + "BACKGROUND_AARON", + "BACKGROUND_BERTHA", + "BACKGROUND_FLINT", + "BACKGROUND_LUCIAN", + "BACKGROUND_CYNTHIA", + "BACKGROUND_DISTORTION_WORLD", + "BACKGROUND_BATTLE_TOWER", + "BACKGROUND_BATTLE_FACTORY", + "BACKGROUND_BATTLE_ARCADE", + "BACKGROUND_BATTLE_CASTLE", + "BACKGROUND_BATTLE_HALL", + "BACKGROUND_MAX" + ] + }, "@BattleAnimation": { "type": "enum", "values": [ diff --git a/include/field_battle_data_transfer.h b/include/field_battle_data_transfer.h index 44602ea51d..1067b76cfd 100644 --- a/include/field_battle_data_transfer.h +++ b/include/field_battle_data_transfer.h @@ -2,6 +2,7 @@ #define POKEPLATINUM_FIELD_BATTLE_DATA_TRANSFER_H #include "constants/battle.h" +#include "consts/map.h" #include "struct_decls/pokedexdata_decl.h" #include "struct_decls/struct_02027F8C_decl.h" @@ -77,25 +78,26 @@ typedef struct FieldBattleDTO { u32 unk_19C; } FieldBattleDTO; -FieldBattleDTO *sub_02051D8C(int param0, u32 param1); -FieldBattleDTO *sub_02051F24(int param0, int param1); -FieldBattleDTO *sub_02051F38(int param0, int param1); -FieldBattleDTO *sub_02051F4C(int param0, const FieldSystem *fieldSystem); -void sub_020520A4(FieldBattleDTO *param0); -void sub_0205213C(FieldBattleDTO *param0, Pokemon *param1, int param2); -void sub_02052164(FieldBattleDTO *param0, const Party *param1, int param2); -void sub_02052184(FieldBattleDTO *param0, const TrainerInfo *param1, int param2); -void sub_020521A4(FieldBattleDTO *param0, const ChatotCry *param1, int param2); -void sub_020521B8(FieldBattleDTO *param0, const FieldSystem *fieldSystem, SaveData *param2, int param3, Journal *param4, BagCursor *param5, u8 *param6); -void sub_02052314(FieldBattleDTO *param0, const FieldSystem *fieldSystem); -void sub_02052348(FieldBattleDTO *param0, const FieldSystem *fieldSystem, int param2); -void sub_020524E4(FieldBattleDTO *param0, const FieldSystem *fieldSystem, const Party *param2, const u8 *param3); -void sub_020526CC(FieldBattleDTO *param0, const FieldSystem *fieldSystem, const u8 *param2); -void sub_020526E8(const FieldBattleDTO *param0, FieldSystem *fieldSystem); -void sub_02052754(const FieldBattleDTO *param0, FieldSystem *fieldSystem); -void sub_0205285C(FieldBattleDTO *param0); -BOOL FieldBattleDTO_PlayerWon(u32 battleResult); -BOOL FieldBattleDTO_PlayerLost(u32 battleResult); -BOOL FieldBattleDTO_PlayerDidNotCapture(u32 battleResult); +FieldBattleDTO *FieldBattleDTO_New(enum HeapId heapID, u32 battleType); +FieldBattleDTO *FieldBattleDTO_NewSafari(enum HeapId heapID, int countSafariBalls); +FieldBattleDTO *FieldBattleDTO_NewPalPark(enum HeapId heapID, int countParkBalls); +FieldBattleDTO *FieldBattleDTO_NewCatchingTutorial(enum HeapId heapID, const FieldSystem *fieldSystem); +void FieldBattleDTO_Free(FieldBattleDTO *dto); +void FieldBattleDTO_AddPokemonToBattler(FieldBattleDTO *dto, Pokemon *src, int battler); +void FieldBattleDTO_CopyPartyToBattler(FieldBattleDTO *dto, const Party *src, int battler); +void FieldBattleDTO_CopyTrainerInfoToBattler(FieldBattleDTO *dto, const TrainerInfo *src, int battler); +void FieldBattleDTO_CopyChatotCryToBattler(FieldBattleDTO *dto, const ChatotCry *src, int battler); +void FieldBattleDTO_InitFromGameState(FieldBattleDTO *dto, const FieldSystem *fieldSystem, SaveData *save, enum MapHeader mapHeaderID, Journal *journal, BagCursor *bagCursor, u8 *subscreenCursorOn); +void FieldBattleDTO_Init(FieldBattleDTO *dto, const FieldSystem *fieldSystem); +void FieldBattleDTO_InitWithNormalizedMonLevels(FieldBattleDTO *dto, const FieldSystem *fieldSystem, int level); +void FieldBattleDTO_InitWithPartyOrder(FieldBattleDTO *dto, const FieldSystem *fieldSystem, const Party *party, const u8 *partyOrder); +void FieldBattleDTO_InitWithPartyOrderFromSave(FieldBattleDTO *dto, const FieldSystem *fieldSystem, const u8 *partyOrder); +void FieldBattleDTO_UpdateFieldSystem(const FieldBattleDTO *dto, FieldSystem *fieldSystem); +void FieldBattleDTO_UpdatePokedex(const FieldBattleDTO *dto, FieldSystem *fieldSystem); +void FieldBattleDTO_SetWaterTerrain(FieldBattleDTO *dto); +BOOL CheckPlayerWonBattle(u32 battleResult); +BOOL CheckPlayerLostBattle(u32 battleResult); +BOOL CheckPlayerDidNotCaptureWildMon(u32 battleResult); +void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *dto); #endif // POKEPLATINUM_FIELD_BATTLE_DATA_TRANSFER_H diff --git a/include/player_avatar.h b/include/player_avatar.h index e372ee28b5..fbbde271e7 100644 --- a/include/player_avatar.h +++ b/include/player_avatar.h @@ -13,6 +13,12 @@ #include "field/field_system_decl.h" #include "overlay101/struct_ov101_021D5D90_decl.h" +enum PlayerAvatarForm { + PLAYER_AVATAR_WALKING = 0, + PLAYER_AVATAR_BIKING, + PLAYER_AVATAR_SURFING, +}; + PlayerAvatar *PlayerAvatar_Init(const MapObjectManager *param0, int param1, int param2, int param3, int param4, int param5, int param6, PlayerData *param7); PlayerAvatar *sub_0205E820(const MapObjectManager *param0, PlayerData *param1, int gender); void PlayerAvatar_InitDraw(PlayerAvatar *playerAvatar, int param1); @@ -68,9 +74,6 @@ int PlayerData_CyclingGear(PlayerData *param0); void PlayerData_SetCyclingGear(PlayerData *param0, int param1); void PlayerAvatar_SetCyclingGear(PlayerAvatar *playerAvatar, int param1); int PlayerAvatar_CyclingGear(PlayerAvatar *playerAvatar); -u32 sub_0205EC94(PlayerData *param0); -void sub_0205ECA0(PlayerData *param0, u32 param1); -void sub_0205ECA8(PlayerAvatar *playerAvatar, u32 param1); void sub_0205ECB8(PlayerAvatar *playerAvatar, const VecFx32 *param1, int param2); void sub_0205ECE0(PlayerAvatar *playerAvatar, int param1, int param2, int param3); void sub_0205ED0C(PlayerAvatar *playerAvatar, fx32 param1); diff --git a/include/struct_defs/struct_0205EC34.h b/include/struct_defs/struct_0205EC34.h index 909668b1ab..2656601b16 100644 --- a/include/struct_defs/struct_0205EC34.h +++ b/include/struct_defs/struct_0205EC34.h @@ -4,7 +4,7 @@ typedef struct { u16 unk_00; u16 runningShoes; - u32 unk_04; + u32 form; } PlayerData; #endif // POKEPLATINUM_STRUCT_0205EC34_H diff --git a/include/unk_0202631C.h b/include/unk_0202631C.h index 6bc16ba634..0253fcdfec 100644 --- a/include/unk_0202631C.h +++ b/include/unk_0202631C.h @@ -8,7 +8,7 @@ int Pokedex_SaveSize(void); PokedexData *sub_02026324(u32 param0); -void sub_02026338(const PokedexData *param0, PokedexData *param1); +void Pokedex_Copy(const PokedexData *src, PokedexData *dest); void Pokedex_Init(PokedexData *param0); u16 sub_02026DD0(const PokedexData *param0); u16 Pokedex_CountSeenNational(const PokedexData *pokedex); diff --git a/include/unk_02054D00.h b/include/unk_02054D00.h index 93b4549f48..b64f6e4699 100644 --- a/include/unk_02054D00.h +++ b/include/unk_02054D00.h @@ -11,7 +11,7 @@ void sub_02054F44(const TerrainCollisionManager **param0, int param1); BOOL FieldSystem_CheckCollision(const FieldSystem *fieldSystem, const int param1, const int param2); -u8 sub_02054F94(const FieldSystem *fieldSystem, const int param1, const int param2); +u8 FieldSystem_GetTileAttributes(const FieldSystem *fieldSystem, const int x, const int z); const fx32 sub_02054FBC(const FieldSystem *fieldSystem, const fx32 param1, const fx32 param2, const fx32 param3, u8 *param4); BOOL sub_02055024(const FieldSystem *fieldSystem, const VecFx32 *param1, const int param2, const int param3, s8 *param4); BOOL sub_0205507C(FieldSystem *fieldSystem, const VecFx32 *param1, const int param2, const int param3, s8 *param4); diff --git a/include/unk_020559DC.h b/include/unk_020559DC.h index 8f6c17f61f..b87decb07c 100644 --- a/include/unk_020559DC.h +++ b/include/unk_020559DC.h @@ -5,8 +5,10 @@ #include "field/field_system_decl.h" +#include "rtc.h" + void sub_020559DC(FieldSystem *fieldSystem); -int sub_02055BA8(const FieldSystem *fieldSystem); +enum TimeOfDay FieldSystem_GetTimeOfDay(const FieldSystem *fieldSystem); int sub_02055BB8(const FieldSystem *fieldSystem); int sub_02055BC4(const FieldSystem *fieldSystem); int sub_02055BD0(const FieldSystem *fieldSystem); diff --git a/src/battle/ov16_0223B140.c b/src/battle/ov16_0223B140.c index b20f82e921..99ed635663 100644 --- a/src/battle/ov16_0223B140.c +++ b/src/battle/ov16_0223B140.c @@ -731,7 +731,7 @@ static void ov16_0223BCB4(OverlayManager *param0) sub_02015760(v0->unk_1AC); Bag_Copy(v0->unk_58, v1->bag); Heap_FreeToHeap(v0->unk_58); - sub_02026338(v0->pokedex, v1->pokedex); + Pokedex_Copy(v0->pokedex, v1->pokedex); Heap_FreeToHeap(v0->pokedex); v1->pcBoxes = v0->pcBoxes; @@ -1085,7 +1085,7 @@ static void ov16_0223C2C0(BattleSystem *param0, FieldBattleDTO *param1) Bag_Copy(param1->bag, param0->unk_58); param0->pokedex = sub_02026324(5); - sub_02026338(param1->pokedex, param0->pokedex); + Pokedex_Copy(param1->pokedex, param0->pokedex); param0->pcBoxes = param1->pcBoxes; param0->unk_1B0 = param1->options; diff --git a/src/encounter.c b/src/encounter.c index 1dd4cbd748..0368b5e7e9 100644 --- a/src/encounter.c +++ b/src/encounter.c @@ -122,7 +122,7 @@ static UnkStruct_02050ACC *sub_02050ACC(FieldBattleDTO *param0, int param1, int static void sub_02050AF0(UnkStruct_02050ACC *param0) { - sub_020520A4(param0->unk_10); + FieldBattleDTO_Free(param0->unk_10); Heap_FreeToHeap(param0); } @@ -134,7 +134,7 @@ static BOOL sub_02050B04(UnkStruct_02050ACC *param0) *(param0->unk_00) = param0->unk_10->resultMask; } - v0 = FieldBattleDTO_PlayerWon(param0->unk_10->resultMask); + v0 = CheckPlayerWonBattle(param0->unk_10->resultMask); return v0; } @@ -144,7 +144,7 @@ static void sub_02050B1C(const FieldBattleDTO *param0, FieldSystem *fieldSystem) return; } - sub_020526E8(param0, fieldSystem); + FieldBattleDTO_UpdateFieldSystem(param0, fieldSystem); } static BOOL sub_02050B30(FieldTask *taskMan) @@ -256,7 +256,7 @@ static BOOL sub_02050CA8(FieldTask *taskMan) break; case 3: sub_02050C6C(v1->unk_10->resultMask, fieldSystem); - sub_02052754(v1->unk_10, fieldSystem); + FieldBattleDTO_UpdatePokedex(v1->unk_10, fieldSystem); { GameRecords *v3 = SaveData_GetGameRecordsPtr(fieldSystem->saveData); @@ -295,7 +295,7 @@ static BOOL sub_02050D4C(FieldTask *taskMan) break; case 1: { sub_02050C6C(v1->unk_10->resultMask, fieldSystem); - sub_02052754(v1->unk_10, fieldSystem); + FieldBattleDTO_UpdatePokedex(v1->unk_10, fieldSystem); } { GameRecords *v3 = SaveData_GetGameRecordsPtr(fieldSystem->saveData); @@ -334,7 +334,7 @@ static UnkStruct_02050DD4 *sub_02050DD4(FieldBattleDTO *param0, int param1, int static void sub_02050DFC(UnkStruct_02050DD4 *param0) { - sub_020520A4(param0->unk_10); + FieldBattleDTO_Free(param0->unk_10); Heap_FreeToHeap(param0); } @@ -395,7 +395,7 @@ static BOOL sub_02050EE0(FieldTask *taskMan) sub_02050B1C(v1->unk_10, fieldSystem); sub_0206D1B8(fieldSystem, v1->unk_10->unk_10C, v1->unk_10->resultMask); - if (FieldBattleDTO_PlayerWon(v1->unk_10->resultMask) == 0) { + if (CheckPlayerWonBattle(v1->unk_10->resultMask) == 0) { sub_02050DFC(v1); RadarChain_Clear(fieldSystem->chain); FieldTask_InitJump(taskMan, sub_02052B2C, NULL); @@ -541,8 +541,8 @@ void sub_0205120C(FieldTask *taskMan, int *param1) fieldSystem = FieldTask_GetFieldSystem(taskMan); RadarChain_Clear(fieldSystem->chain); - v1 = sub_02051D8C(11, (0x0 | 0x0)); - sub_02052314(v1, fieldSystem); + v1 = FieldBattleDTO_New(11, (0x0 | 0x0)); + FieldBattleDTO_Init(v1, fieldSystem); v1->background = 0; v1->terrain = TERRAIN_PLAIN; @@ -562,8 +562,8 @@ void sub_02051270(FieldTask *taskMan, u16 param1, u8 param2, int *param3, BOOL p fieldSystem = FieldTask_GetFieldSystem(taskMan); RadarChain_Clear(fieldSystem->chain); - v1 = sub_02051D8C(11, (0x0 | 0x0)); - sub_02052314(v1, fieldSystem); + v1 = FieldBattleDTO_New(11, (0x0 | 0x0)); + FieldBattleDTO_Init(v1, fieldSystem); ov6_022420D4(fieldSystem, param1, param2, v1); @@ -586,8 +586,8 @@ void sub_020512E4(FieldTask *taskMan, u16 param1, u8 param2, int *param3, BOOL p fieldSystem = FieldTask_GetFieldSystem(taskMan); RadarChain_Clear(fieldSystem->chain); - v1 = sub_02051D8C(11, (0x0 | 0x0)); - sub_02052314(v1, fieldSystem); + v1 = FieldBattleDTO_New(11, (0x0 | 0x0)); + FieldBattleDTO_Init(v1, fieldSystem); ov6_022420D4(fieldSystem, param1, param2, v1); @@ -674,9 +674,9 @@ void sub_02051480(FieldTask *taskMan, int param1, int param2, int *param3) FieldSystem *fieldSystem; fieldSystem = FieldTask_GetFieldSystem(taskMan); - v1 = sub_02051D8C(11, 0x1); + v1 = FieldBattleDTO_New(11, 0x1); - sub_02052314(v1, fieldSystem); + FieldBattleDTO_Init(v1, fieldSystem); v1->battleStatusMask = BATTLE_STATUS_FIRST_BATTLE; v1->trainerIDs[1] = param1; @@ -735,7 +735,7 @@ void sub_02051590(FieldTask *taskMan) FieldBattleDTO *v1; FieldSystem *fieldSystem = FieldTask_GetFieldSystem(taskMan); - v1 = sub_02051F4C(11, fieldSystem); + v1 = FieldBattleDTO_NewCatchingTutorial(11, fieldSystem); v0 = sub_02050ACC(v1, EncEffects_CutInEffect(v1), EncEffects_BGM(v1), NULL); FieldTask_InitCall(taskMan, sub_020514E8, v0); @@ -763,8 +763,8 @@ void sub_020515CC(FieldTask *taskMan, int param1, int param2, int param3, int pa } RadarChain_Clear(fieldSystem->chain); - v2 = sub_02051D8C(11, v0); - sub_02052314(v2, fieldSystem); + v2 = FieldBattleDTO_New(11, v0); + FieldBattleDTO_Init(v2, fieldSystem); if ((fieldSystem->location->mapId >= MAP_HEADER_DISTORTION_WORLD_1F) && (fieldSystem->location->mapId <= MAP_HEADER_DISTORTION_WORLD_TURNBACK_CAVE_ROOM)) { v2->battleStatusMask |= BATTLE_STATUS_DISTORTION; @@ -785,8 +785,8 @@ void sub_0205167C(FieldTask *taskMan, const u8 *param1, int param2) UnkStruct_02050ACC *v1; FieldBattleDTO *v2; - v2 = sub_02051D8C(11, param2); - sub_020526CC(v2, fieldSystem, param1); + v2 = FieldBattleDTO_New(11, param2); + FieldBattleDTO_InitWithPartyOrderFromSave(v2, fieldSystem, param1); v1 = sub_02050ACC(v2, EncEffects_CutInEffect(v2), EncEffects_BGM(v2), NULL); FieldTask_InitCall(taskMan, sub_02050CA8, v1); @@ -823,15 +823,15 @@ void sub_020516F4(FieldTask *taskMan, int param1, int param2, int param3) if (param3 == 0) { v4 = (0x4 | 0x1); - v2 = sub_02051D8C(11, (0x4 | 0x1)); + v2 = FieldBattleDTO_New(11, (0x4 | 0x1)); v5 = (UnkEnum_0202F510_00); } else if (param3 == 1) { v4 = ((0x4 | 0x1) | 0x2); - v2 = sub_02051D8C(11, ((0x4 | 0x1) | 0x2)); + v2 = FieldBattleDTO_New(11, ((0x4 | 0x1) | 0x2)); v5 = (UnkEnum_0202F510_07); } else { v4 = ((((0x4 | 0x1) | 0x2) | 0x8) | 0x80); - v2 = sub_02051D8C(11, ((((0x4 | 0x1) | 0x2) | 0x8) | 0x80)); + v2 = FieldBattleDTO_New(11, ((((0x4 | 0x1) | 0x2) | 0x8) | 0x80)); v2->trainerIDs[1] = 1; v2->trainerIDs[3] = 2; @@ -841,7 +841,7 @@ void sub_020516F4(FieldTask *taskMan, int param1, int param2, int param3) v5 = (UnkEnum_0202F510_14); } - sub_02052348(v2, fieldSystem, param2); + FieldBattleDTO_InitWithNormalizedMonLevels(v2, fieldSystem, param2); sub_0202F1F8(fieldSystem->saveData, 11, &v3); v2->unk_18A = v5; @@ -881,9 +881,9 @@ void sub_020517E8(FieldSystem *fieldSystem, const u8 *param1, int param2) FieldBattleDTO *v1; int v2; - v1 = sub_02051D8C(11, param2); + v1 = FieldBattleDTO_New(11, param2); - sub_020526CC(v1, fieldSystem, param1); + FieldBattleDTO_InitWithPartyOrderFromSave(v1, fieldSystem, param1); sub_0202F1F8(fieldSystem->saveData, 11, &v2); v1->unk_18A = sub_020516C8(fieldSystem->unk_B0, param2); @@ -898,9 +898,9 @@ void sub_0205184C(FieldSystem *fieldSystem, const Party *param1, int param2) FieldBattleDTO *v1; int v2; - v1 = sub_02051D8C(11, param2); + v1 = FieldBattleDTO_New(11, param2); - sub_020524E4(v1, fieldSystem, param1, NULL); + FieldBattleDTO_InitWithPartyOrder(v1, fieldSystem, param1, NULL); sub_0202F1F8(fieldSystem->saveData, 11, &v2); v1->unk_18A = sub_020516C8(fieldSystem->unk_B0, param2); @@ -1011,8 +1011,8 @@ void sub_02051ABC(FieldTask *taskMan, u16 param1, u8 param2, int *param3, BOOL p fieldSystem = FieldTask_GetFieldSystem(taskMan); RadarChain_Clear(fieldSystem->chain); - v1 = sub_02051D8C(11, (0x0 | 0x0)); - sub_02052314(v1, fieldSystem); + v1 = FieldBattleDTO_New(11, (0x0 | 0x0)); + FieldBattleDTO_Init(v1, fieldSystem); ov6_022420D4(fieldSystem, param1, param2, v1); diff --git a/src/field_battle_data_transfer.c b/src/field_battle_data_transfer.c index 97c9e6a602..486b5bb9ea 100644 --- a/src/field_battle_data_transfer.c +++ b/src/field_battle_data_transfer.c @@ -4,8 +4,13 @@ #include #include "constants/battle.h" +#include "constants/heap.h" +#include "constants/narc.h" +#include "constants/overworld_weather.h" #include "constants/pokemon.h" +#include "constants/string.h" #include "consts/battle.h" +#include "consts/items.h" #include "consts/species.h" #include "struct_decls/pokedexdata_decl.h" @@ -32,6 +37,7 @@ #include "map_header.h" #include "message.h" #include "party.h" +#include "player_avatar.h" #include "pokemon.h" #include "poketch_data.h" #include "rtc.h" @@ -57,485 +63,464 @@ #include "vars_flags.h" #include "res/text/gmm/message_bank_location_names.h" +#include "res/text/pl_msg.naix" -static void sub_0205281C(FieldBattleDTO *param0, const FieldSystem *fieldSystem); -void sub_02052894(FieldBattleDTO *param0); +static int CalcTerrain(const FieldSystem *fieldSystem, enum BattleBackground background); +static void SetBackgroundAndTerrain(FieldBattleDTO *dto, const FieldSystem *fieldSystem); -FieldBattleDTO *sub_02051D8C(int param0, u32 param1) +FieldBattleDTO *FieldBattleDTO_New(enum HeapId heapID, u32 battleType) { - int v0; - FieldBattleDTO *v1; + int i; + FieldBattleDTO *dto = Heap_AllocFromHeap(heapID, sizeof(FieldBattleDTO)); + MI_CpuClear8(dto, sizeof(FieldBattleDTO)); - v1 = Heap_AllocFromHeap(param0, sizeof(FieldBattleDTO)); - MI_CpuClear8(v1, sizeof(FieldBattleDTO)); + dto->battleType = battleType; + dto->battleStatusMask = 0; + dto->resultMask = 0; - v1->battleType = param1; - v1->battleStatusMask = 0; - v1->resultMask = 0; - - for (v0 = 0; v0 < 4; v0++) { - v1->trainerIDs[v0] = 0; - MI_CpuClear32(&v1->trainerData[v0], sizeof(TrainerData)); + for (i = 0; i < MAX_BATTLERS; i++) { + dto->trainerIDs[i] = 0; + MI_CpuClear32(&dto->trainerData[i], sizeof(TrainerData)); } - v1->background = 0; - v1->terrain = TERRAIN_MAX; - v1->mapLabelTextID = pl_msg_00000433_00000; - v1->timeOfDay = TOD_MORNING; - v1->mapEvolutionMethod = 0; - v1->visitedContestHall = 1; - v1->metBebe = 1; - v1->fieldWeather = 0; + dto->background = BACKGROUND_PLAIN; + dto->terrain = TERRAIN_MAX; + dto->mapLabelTextID = pl_msg_00000433_00000; + dto->timeOfDay = TOD_MORNING; + dto->mapEvolutionMethod = 0; + dto->visitedContestHall = TRUE; + dto->metBebe = TRUE; + dto->fieldWeather = OVERWORLD_WEATHER_CLEAR; - for (v0 = 0; v0 < 4; v0++) { - v1->parties[v0] = Party_New(param0); + for (i = 0; i < MAX_BATTLERS; i++) { + dto->parties[i] = Party_New(heapID); } - for (v0 = 0; v0 < 4; v0++) { - v1->trainerInfo[v0] = TrainerInfo_New(param0); + for (i = 0; i < MAX_BATTLERS; i++) { + dto->trainerInfo[i] = TrainerInfo_New(heapID); } - for (v0 = 0; v0 < 4; v0++) { - v1->chatotCries[v0] = AllocateAndInitializeChatotCryData(param0); + for (i = 0; i < MAX_BATTLERS; i++) { + dto->chatotCries[i] = AllocateAndInitializeChatotCryData(heapID); } - v1->bag = Bag_New(param0); - v1->pokedex = sub_02026324(param0); - v1->options = Options_New(param0); - v1->unk_10C = sub_0206D140(param0); - v1->bagCursor = NULL; - v1->subscreenCursorOn = NULL; - v1->countSafariBalls = 0; - v1->unk_104 = NULL; - v1->records = NULL; - v1->journal = NULL; - v1->rulesetMask = 0; + dto->bag = Bag_New(heapID); + dto->pokedex = sub_02026324(heapID); + dto->options = Options_New(heapID); + dto->unk_10C = sub_0206D140(heapID); + dto->bagCursor = NULL; + dto->subscreenCursorOn = NULL; + dto->countSafariBalls = 0; + dto->unk_104 = NULL; + dto->records = NULL; + dto->journal = NULL; + dto->rulesetMask = 0; - { - RTCDate v2; - RTCTime v3; + RTCDate date; + RTCTime time; + GetCurrentDateTime(&date, &time); + dto->seed = date.year + + date.month * 0x100 * date.day * 0x10000 + + time.hour * 0x10000 + + (time.minute + time.second) * 0x1000000 + + gCoreSys.vblankCounter; - GetCurrentDateTime(&v2, &v3); - v1->seed = v2.year + v2.month * 0x100 * v2.day * 0x10000 + v3.hour * 0x10000 + (v3.minute + v3.second) * 0x1000000 + gCoreSys.vblankCounter; - } - - if (CommSys_IsInitialized() == 1) { - for (v0 = 0; v0 < CommSys_ConnectedCount(); v0++) { - v1->unk_178[v0] = sub_020362F4(v0); + if (CommSys_IsInitialized() == TRUE) { + for (i = 0; i < CommSys_ConnectedCount(); i++) { + dto->unk_178[i] = sub_020362F4(i); } - - v1->networkID = CommSys_CurNetId(); + dto->networkID = CommSys_CurNetId(); } - MI_CpuClear8(&(v1->battleRecords), sizeof(BattleRecords)); - return v1; + MI_CpuClear8(&(dto->battleRecords), sizeof(BattleRecords)); + return dto; } -FieldBattleDTO *sub_02051F24(int param0, int param1) +FieldBattleDTO *FieldBattleDTO_NewSafari(enum HeapId heapID, int countSafariBalls) { - FieldBattleDTO *v0; - - v0 = sub_02051D8C(param0, 0x20); - v0->countSafariBalls = param1; - - return v0; + FieldBattleDTO *dto = FieldBattleDTO_New(heapID, BATTLE_TYPE_SAFARI); + dto->countSafariBalls = countSafariBalls; + return dto; } -FieldBattleDTO *sub_02051F38(int param0, int param1) +FieldBattleDTO *FieldBattleDTO_NewPalPark(enum HeapId heapID, int countParkBalls) { - FieldBattleDTO *v0; - - v0 = sub_02051D8C(param0, 0x200); - v0->countSafariBalls = param1; - - return v0; + FieldBattleDTO *dto = FieldBattleDTO_New(heapID, BATTLE_TYPE_PAL_PARK); + dto->countSafariBalls = countParkBalls; + return dto; } -FieldBattleDTO *sub_02051F4C(int param0, const FieldSystem *fieldSystem) +FieldBattleDTO *FieldBattleDTO_NewCatchingTutorial(enum HeapId heapID, const FieldSystem *fieldSystem) { - TrainerInfo *v0 = SaveData_GetTrainerInfo(fieldSystem->saveData); - Options *v1 = SaveData_Options(fieldSystem->saveData); - MessageLoader *v2; - Strbuf *v3; - FieldBattleDTO *v4; - Pokemon *v5; + TrainerInfo *trainerInfo = SaveData_GetTrainerInfo(fieldSystem->saveData); + Options *options = SaveData_Options(fieldSystem->saveData); + MessageLoader *msgLoader; + Strbuf *strbuf; + FieldBattleDTO *dto; + Pokemon *mon; - v4 = sub_02051D8C(param0, 0x400); - v2 = MessageLoader_Init(1, 26, 553, param0); - v3 = Strbuf_Init(8, param0); + dto = FieldBattleDTO_New(heapID, BATTLE_TYPE_CATCH_TUTORIAL); + msgLoader = MessageLoader_Init(MESSAGE_LOADER_NARC_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, message_bank_counterpart_names, heapID); + strbuf = Strbuf_Init(TRAINER_NAME_LEN + 1, heapID); - MessageLoader_GetStrbuf(v2, TrainerInfo_Gender(v0) ^ 1, v3); - TrainerInfo_SetName(v4->trainerInfo[0], Strbuf_GetData(v3)); - Strbuf_Free(v3); - MessageLoader_Free(v2); - TrainerInfo_SetGender(v4->trainerInfo[0], TrainerInfo_Gender(v0) ^ 1); - sub_0205281C(v4, fieldSystem); - Options_Copy(v1, v4->options); + MessageLoader_GetStrbuf(msgLoader, TrainerInfo_Gender(trainerInfo) ^ 1, strbuf); + TrainerInfo_SetName(dto->trainerInfo[BATTLER_PLAYER_SLOT_1], Strbuf_GetData(strbuf)); + Strbuf_Free(strbuf); + MessageLoader_Free(msgLoader); - v4->timeOfDay = sub_02055BA8(fieldSystem); - Bag_TryAddItem(v4->bag, 4, 20, param0); - v5 = Pokemon_New(param0); + TrainerInfo_SetGender(dto->trainerInfo[BATTLER_PLAYER_SLOT_1], TrainerInfo_Gender(trainerInfo) ^ 1); + SetBackgroundAndTerrain(dto, fieldSystem); + Options_Copy(options, dto->options); + dto->timeOfDay = FieldSystem_GetTimeOfDay(fieldSystem); + Bag_TryAddItem(dto->bag, ITEM_POKE_BALL, 20, heapID); - Pokemon_InitWith(v5, sub_0206B08C(SaveData_GetVarsFlags(fieldSystem->saveData)), 5, 32, FALSE, 0, OTID_NOT_SHINY, 0); - Party_AddPokemon(v4->parties[0], v5); - Pokemon_InitWith(v5, SPECIES_BIDOOF, 2, 32, FALSE, 0, OTID_NOT_SHINY, 0); - Party_AddPokemon(v4->parties[1], v5); - Heap_FreeToHeap(v5); + mon = Pokemon_New(heapID); + Pokemon_InitWith(mon, sub_0206B08C(SaveData_GetVarsFlags(fieldSystem->saveData)), 5, 32, FALSE, 0, OTID_NOT_SHINY, 0); + Party_AddPokemon(dto->parties[BATTLER_PLAYER_SLOT_1], mon); + Pokemon_InitWith(mon, SPECIES_BIDOOF, 2, 32, FALSE, 0, OTID_NOT_SHINY, 0); + Party_AddPokemon(dto->parties[BATTLER_ENEMY_SLOT_1], mon); + Heap_FreeToHeap(mon); - v4->pcBoxes = SaveData_PCBoxes(fieldSystem->saveData); - v4->bagCursor = fieldSystem->unk_98; - v4->subscreenCursorOn = NULL; - v4->records = SaveData_GetGameRecordsPtr(fieldSystem->saveData); - v4->journal = fieldSystem->journal; - v4->mapHeaderID = fieldSystem->location->mapId; + dto->pcBoxes = SaveData_PCBoxes(fieldSystem->saveData); + dto->bagCursor = fieldSystem->unk_98; + dto->subscreenCursorOn = NULL; + dto->records = SaveData_GetGameRecordsPtr(fieldSystem->saveData); + dto->journal = fieldSystem->journal; + dto->mapHeaderID = fieldSystem->location->mapId; - sub_02052894(v4); + FieldBattleDTO_CopyPlayerInfoToTrainerData(dto); - return v4; + return dto; } -void sub_020520A4(FieldBattleDTO *param0) +void FieldBattleDTO_Free(FieldBattleDTO *dto) { - int v0; - - for (v0 = 0; v0 < 4; v0++) { - GF_ASSERT(param0->parties[v0] != NULL); - Heap_FreeToHeap(param0->parties[v0]); + int i; + for (i = 0; i < 4; i++) { + GF_ASSERT(dto->parties[i] != NULL); + Heap_FreeToHeap(dto->parties[i]); } - for (v0 = 0; v0 < 4; v0++) { - GF_ASSERT(param0->trainerInfo[v0] != NULL); - Heap_FreeToHeap(param0->trainerInfo[v0]); + for (i = 0; i < 4; i++) { + GF_ASSERT(dto->trainerInfo[i] != NULL); + Heap_FreeToHeap(dto->trainerInfo[i]); } - for (v0 = 0; v0 < 4; v0++) { - GF_ASSERT(param0->chatotCries[v0] != NULL); - Heap_FreeToHeap(param0->chatotCries[v0]); + for (i = 0; i < 4; i++) { + GF_ASSERT(dto->chatotCries[i] != NULL); + Heap_FreeToHeap(dto->chatotCries[i]); } - Heap_FreeToHeap(param0->bag); - Heap_FreeToHeap(param0->pokedex); - Heap_FreeToHeap(param0->options); - sub_0206D158(param0->unk_10C); - Heap_FreeToHeap(param0); + Heap_FreeToHeap(dto->bag); + Heap_FreeToHeap(dto->pokedex); + Heap_FreeToHeap(dto->options); + sub_0206D158(dto->unk_10C); + Heap_FreeToHeap(dto); } -void sub_0205213C(FieldBattleDTO *param0, Pokemon *param1, int param2) +void FieldBattleDTO_AddPokemonToBattler(FieldBattleDTO *dto, Pokemon *src, int battler) { - int v0; - - GF_ASSERT(param2 < 4); - v0 = Party_AddPokemon(param0->parties[param2], param1); - GF_ASSERT(v0); + GF_ASSERT(battler < MAX_BATTLERS); + BOOL success = Party_AddPokemon(dto->parties[battler], src); + GF_ASSERT(success); } -void sub_02052164(FieldBattleDTO *param0, const Party *param1, int param2) +void FieldBattleDTO_CopyPartyToBattler(FieldBattleDTO *dto, const Party *src, int battler) { - GF_ASSERT(param2 < 4); - Party_cpy(param1, param0->parties[param2]); + GF_ASSERT(battler < MAX_BATTLERS); + Party_cpy(src, dto->parties[battler]); } -void sub_02052184(FieldBattleDTO *param0, const TrainerInfo *param1, int param2) +void FieldBattleDTO_CopyTrainerInfoToBattler(FieldBattleDTO *dto, const TrainerInfo *src, int battler) { - GF_ASSERT(param2 < 4); - TrainerInfo_Copy(param1, param0->trainerInfo[param2]); + GF_ASSERT(battler < MAX_BATTLERS); + TrainerInfo_Copy(src, dto->trainerInfo[battler]); } -void sub_020521A4(FieldBattleDTO *param0, const ChatotCry *param1, int param2) +void FieldBattleDTO_CopyChatotCryToBattler(FieldBattleDTO *dto, const ChatotCry *src, int battler) { - CopyChatotCryData(param0->chatotCries[param2], param1); + CopyChatotCryData(dto->chatotCries[battler], src); } -void sub_020521B8(FieldBattleDTO *param0, const FieldSystem *fieldSystem, SaveData *param2, int param3, Journal *param4, BagCursor *param5, u8 *param6) +void FieldBattleDTO_InitFromGameState(FieldBattleDTO *dto, const FieldSystem *fieldSystem, SaveData *save, enum MapHeader mapHeaderID, Journal *journal, BagCursor *bagCursor, u8 *subscreenCursorOn) { - TrainerInfo *v0 = SaveData_GetTrainerInfo(param2); - Party *v1 = Party_GetFromSavedata(param2); - Bag *v2 = SaveData_GetBag(param2); - PokedexData *v3 = SaveData_Pokedex(param2); - ChatotCry *v4 = GetChatotCryDataFromSave(param2); - Options *v5 = SaveData_Options(param2); - FieldOverworldState *v6 = SaveData_GetFieldOverworldState(param2); + TrainerInfo *trainerInfo = SaveData_GetTrainerInfo(save); + Party *party = Party_GetFromSavedata(save); + Bag *bag = SaveData_GetBag(save); + PokedexData *pokedex = SaveData_Pokedex(save); + ChatotCry *chatotCry = GetChatotCryDataFromSave(save); + Options *options = SaveData_Options(save); + FieldOverworldState *fieldOverworldState = SaveData_GetFieldOverworldState(save); if (fieldSystem != NULL) { - sub_0205281C(param0, fieldSystem); - param0->timeOfDay = sub_02055BA8(fieldSystem); + SetBackgroundAndTerrain(dto, fieldSystem); + dto->timeOfDay = FieldSystem_GetTimeOfDay(fieldSystem); } else { - param0->background = MapHeader_GetBattleBG(param3); - param0->terrain = TERRAIN_BUILDING; - { - GameTime *v7 = SaveData_GetGameTime(param2); + dto->background = MapHeader_GetBattleBG(mapHeaderID); + dto->terrain = TERRAIN_BUILDING; - param0->timeOfDay = TimeOfDayForHour(v7->time.hour); - } + GameTime *gameTime = SaveData_GetGameTime(save); + dto->timeOfDay = TimeOfDayForHour(gameTime->time.hour); } - sub_02052184(param0, v0, 0); - sub_02052164(param0, v1, 0); - Bag_Copy(v2, param0->bag); - sub_02026338(v3, param0->pokedex); - Options_Copy(v5, param0->options); - sub_020521A4(param0, v4, 0); + FieldBattleDTO_CopyTrainerInfoToBattler(dto, trainerInfo, BATTLER_PLAYER_SLOT_1); + FieldBattleDTO_CopyPartyToBattler(dto, party, BATTLER_PLAYER_SLOT_1); + Bag_Copy(bag, dto->bag); + Pokedex_Copy(pokedex, dto->pokedex); + Options_Copy(options, dto->options); + FieldBattleDTO_CopyChatotCryToBattler(dto, chatotCry, BATTLER_PLAYER_SLOT_1); - param0->pcBoxes = SaveData_PCBoxes(param2); - param0->mapLabelTextID = MapHeader_GetMapLabelTextID(param3); - param0->mapEvolutionMethod = MapHeader_GetMapEvolutionMethod(param3); - param0->visitedContestHall = PokemonSummaryScreen_ShowContestData(param2); - param0->metBebe = SystemFlag_CheckMetBebe(SaveData_GetVarsFlags(param2)); - param0->fieldWeather = FieldOverworldState_GetWeather(v6); - param0->bagCursor = param5; - param0->subscreenCursorOn = param6; - param0->poketchData = SaveData_PoketchData(param2); - param0->unk_104 = sub_0202C878(param2); - param0->records = SaveData_GetGameRecordsPtr(param2); - param0->journal = param4; - param0->unk_124 = sub_02027F8C(param2); - param0->mapHeaderID = param3; - param0->saveData = param2; + dto->pcBoxes = SaveData_PCBoxes(save); + dto->mapLabelTextID = MapHeader_GetMapLabelTextID(mapHeaderID); + dto->mapEvolutionMethod = MapHeader_GetMapEvolutionMethod(mapHeaderID); + dto->visitedContestHall = PokemonSummaryScreen_ShowContestData(save); + dto->metBebe = SystemFlag_CheckMetBebe(SaveData_GetVarsFlags(save)); + dto->fieldWeather = FieldOverworldState_GetWeather(fieldOverworldState); + dto->bagCursor = bagCursor; + dto->subscreenCursorOn = subscreenCursorOn; + dto->poketchData = SaveData_PoketchData(save); + dto->unk_104 = sub_0202C878(save); + dto->records = SaveData_GetGameRecordsPtr(save); + dto->journal = journal; + dto->unk_124 = sub_02027F8C(save); + dto->mapHeaderID = mapHeaderID; + dto->saveData = save; } -void sub_02052314(FieldBattleDTO *battleParams, const FieldSystem *fieldSystem) +void FieldBattleDTO_Init(FieldBattleDTO *dto, const FieldSystem *fieldSystem) { - sub_020521B8(battleParams, fieldSystem, fieldSystem->saveData, fieldSystem->location->mapId, fieldSystem->journal, fieldSystem->unk_98, fieldSystem->battleSubscreenCursorOn); - sub_02052894(battleParams); + FieldBattleDTO_InitFromGameState(dto, fieldSystem, fieldSystem->saveData, fieldSystem->location->mapId, fieldSystem->journal, fieldSystem->unk_98, fieldSystem->battleSubscreenCursorOn); + FieldBattleDTO_CopyPlayerInfoToTrainerData(dto); } -void sub_02052348(FieldBattleDTO *param0, const FieldSystem *fieldSystem, int param2) +void FieldBattleDTO_InitWithNormalizedMonLevels(FieldBattleDTO *dto, const FieldSystem *fieldSystem, int level) { - int v0; - u32 v1; - TrainerInfo *v2 = SaveData_GetTrainerInfo(fieldSystem->saveData); - Party *v3 = Party_GetFromSavedata(fieldSystem->saveData); - Bag *v4 = SaveData_GetBag(fieldSystem->saveData); - PokedexData *v5 = SaveData_Pokedex(fieldSystem->saveData); - ChatotCry *v6 = GetChatotCryDataFromSave(fieldSystem->saveData); - Options *v7 = SaveData_Options(fieldSystem->saveData); - Pokemon *v8; + int i; + u32 levelBaseExp; + TrainerInfo *trainerInfo = SaveData_GetTrainerInfo(fieldSystem->saveData); + Party *party = Party_GetFromSavedata(fieldSystem->saveData); + Bag *bag = SaveData_GetBag(fieldSystem->saveData); + PokedexData *pokedex = SaveData_Pokedex(fieldSystem->saveData); + ChatotCry *chatotCry = GetChatotCryDataFromSave(fieldSystem->saveData); + Options *options = SaveData_Options(fieldSystem->saveData); - param0->background = 6; - param0->terrain = TERRAIN_BUILDING; + dto->background = BACKGROUND_INDOORS_1; + dto->terrain = TERRAIN_BUILDING; - sub_02052184(param0, v2, 0); - v8 = Pokemon_New(11); - Party_InitWithCapacity(param0->parties[0], Party_GetCurrentCount(v3)); + FieldBattleDTO_CopyTrainerInfoToBattler(dto, trainerInfo, BATTLER_PLAYER_SLOT_1); - for (v0 = 0; v0 < Party_GetCurrentCount(v3); v0++) { - Pokemon_Copy(Party_GetPokemonBySlotIndex(v3, v0), v8); + Pokemon *mon = Pokemon_New(HEAP_ID_FIELDMAP); + Party_InitWithCapacity(dto->parties[BATTLER_PLAYER_SLOT_1], Party_GetCurrentCount(party)); + for (i = 0; i < Party_GetCurrentCount(party); i++) { + Pokemon_Copy(Party_GetPokemonBySlotIndex(party, i), mon); - if ((Pokemon_GetValue(v8, MON_DATA_LEVEL, NULL) != param2) && (param2 != 0)) { - v1 = Pokemon_GetSpeciesBaseExpAt(Pokemon_GetValue(v8, MON_DATA_SPECIES, NULL), param2); - - Pokemon_SetValue(v8, MON_DATA_EXP, &v1); - Pokemon_CalcLevelAndStats(v8); + if (Pokemon_GetValue(mon, MON_DATA_LEVEL, NULL) != level && level != 0) { + levelBaseExp = Pokemon_GetSpeciesBaseExpAt(Pokemon_GetValue(mon, MON_DATA_SPECIES, NULL), level); + Pokemon_SetValue(mon, MON_DATA_EXP, &levelBaseExp); + Pokemon_CalcLevelAndStats(mon); } - sub_0205213C(param0, v8, 0); + FieldBattleDTO_AddPokemonToBattler(dto, mon, BATTLER_PLAYER_SLOT_1); } + Heap_FreeToHeap(mon); - Heap_FreeToHeap(v8); - Bag_Copy(v4, param0->bag); - sub_02026338(v5, param0->pokedex); - Options_Copy(v7, param0->options); - sub_020521A4(param0, v6, 0); + Bag_Copy(bag, dto->bag); + Pokedex_Copy(pokedex, dto->pokedex); + Options_Copy(options, dto->options); + FieldBattleDTO_CopyChatotCryToBattler(dto, chatotCry, BATTLER_PLAYER_SLOT_1); - param0->pcBoxes = SaveData_PCBoxes(fieldSystem->saveData); - param0->timeOfDay = sub_02055BA8(fieldSystem); - param0->bagCursor = fieldSystem->unk_98; - param0->subscreenCursorOn = fieldSystem->battleSubscreenCursorOn; - param0->poketchData = SaveData_PoketchData(fieldSystem->saveData); - param0->unk_104 = sub_0202C878(fieldSystem->saveData); - param0->records = SaveData_GetGameRecordsPtr(fieldSystem->saveData); - param0->journal = fieldSystem->journal; - param0->unk_124 = sub_02027F8C(fieldSystem->saveData); - param0->mapHeaderID = fieldSystem->location->mapId; - param0->saveData = fieldSystem->saveData; + dto->pcBoxes = SaveData_PCBoxes(fieldSystem->saveData); + dto->timeOfDay = FieldSystem_GetTimeOfDay(fieldSystem); + dto->bagCursor = fieldSystem->unk_98; + dto->subscreenCursorOn = fieldSystem->battleSubscreenCursorOn; + dto->poketchData = SaveData_PoketchData(fieldSystem->saveData); + dto->unk_104 = sub_0202C878(fieldSystem->saveData); + dto->records = SaveData_GetGameRecordsPtr(fieldSystem->saveData); + dto->journal = fieldSystem->journal; + dto->unk_124 = sub_02027F8C(fieldSystem->saveData); + dto->mapHeaderID = fieldSystem->location->mapId; + dto->saveData = fieldSystem->saveData; - sub_02052894(param0); + FieldBattleDTO_CopyPlayerInfoToTrainerData(dto); } -void sub_020524E4(FieldBattleDTO *param0, const FieldSystem *fieldSystem, const Party *param2, const u8 *param3) +void FieldBattleDTO_InitWithPartyOrder(FieldBattleDTO *dto, const FieldSystem *fieldSystem, const Party *party, const u8 *partyOrder) { - TrainerInfo *v0 = SaveData_GetTrainerInfo(fieldSystem->saveData); - Bag *v1 = SaveData_GetBag(fieldSystem->saveData); - PokedexData *v2 = SaveData_Pokedex(fieldSystem->saveData); - ChatotCry *v3 = GetChatotCryDataFromSave(fieldSystem->saveData); - Options *v4 = SaveData_Options(fieldSystem->saveData); - const BattleRegulation *v5 = fieldSystem->unk_B0; - int v6, v7, v8; - Pokemon *v9; + TrainerInfo *trainerInfo = SaveData_GetTrainerInfo(fieldSystem->saveData); + Bag *bag = SaveData_GetBag(fieldSystem->saveData); + PokedexData *pokedex = SaveData_Pokedex(fieldSystem->saveData); + ChatotCry *chatotCry = GetChatotCryDataFromSave(fieldSystem->saveData); + Options *options = SaveData_Options(fieldSystem->saveData); + const BattleRegulation *regulation = fieldSystem->unk_B0; + int i; + Pokemon *mon; - param0->background = 6; - param0->terrain = TERRAIN_BUILDING; + dto->background = BACKGROUND_INDOORS_1; + dto->terrain = TERRAIN_BUILDING; - sub_02052184(param0, v0, 0); + FieldBattleDTO_CopyTrainerInfoToBattler(dto, trainerInfo, BATTLER_PLAYER_SLOT_1); - if (param3 == NULL) { - sub_02052164(param0, param2, 0); + if (partyOrder == NULL) { + FieldBattleDTO_CopyPartyToBattler(dto, party, BATTLER_PLAYER_SLOT_1); } else { - int v10; - - v10 = 0; - - for (v8 = 0; v8 < 6; v8++) { - if (param3[v8] != 0) { - v10++; + int numToCopy = 0; + for (i = 0; i < MAX_PARTY_SIZE; i++) { + if (partyOrder[i] != 0) { + numToCopy++; } } - if (v10 == 0) { - sub_02052164(param0, param2, 0); + if (numToCopy == 0) { + FieldBattleDTO_CopyPartyToBattler(dto, party, BATTLER_PLAYER_SLOT_1); } else { - v9 = Pokemon_New(11); - Party_InitWithCapacity(param0->parties[0], v10); - - for (v8 = 0; v8 < v10; v8++) { - Pokemon_Copy(Party_GetPokemonBySlotIndex(param2, param3[v8] - 1), v9); - sub_0205213C(param0, v9, 0); + mon = Pokemon_New(HEAP_ID_FIELDMAP); + Party_InitWithCapacity(dto->parties[BATTLER_PLAYER_SLOT_1], numToCopy); + for (i = 0; i < numToCopy; i++) { + Pokemon_Copy(Party_GetPokemonBySlotIndex(party, partyOrder[i] - 1), mon); + FieldBattleDTO_AddPokemonToBattler(dto, mon, BATTLER_PLAYER_SLOT_1); } - Heap_FreeToHeap(v9); + Heap_FreeToHeap(mon); } } - if (v5) { - if (sub_02026074(v5, 12)) { - param0->rulesetMask = 1; + if (regulation) { + if (sub_02026074(regulation, 12)) { + dto->rulesetMask = 1; } } - Bag_Copy(v1, param0->bag); - sub_02026338(v2, param0->pokedex); - Options_Copy(v4, param0->options); - sub_020521A4(param0, v3, 0); + Bag_Copy(bag, dto->bag); + Pokedex_Copy(pokedex, dto->pokedex); + Options_Copy(options, dto->options); + FieldBattleDTO_CopyChatotCryToBattler(dto, chatotCry, BATTLER_PLAYER_SLOT_1); - param0->pcBoxes = SaveData_PCBoxes(fieldSystem->saveData); - param0->timeOfDay = sub_02055BA8(fieldSystem); - param0->bagCursor = fieldSystem->unk_98; - param0->subscreenCursorOn = fieldSystem->battleSubscreenCursorOn; - param0->unk_104 = sub_0202C878(fieldSystem->saveData); - param0->records = SaveData_GetGameRecordsPtr(fieldSystem->saveData); - param0->journal = fieldSystem->journal; - param0->mapHeaderID = fieldSystem->location->mapId; - param0->unk_124 = sub_02027F8C(fieldSystem->saveData); - param0->saveData = fieldSystem->saveData; + dto->pcBoxes = SaveData_PCBoxes(fieldSystem->saveData); + dto->timeOfDay = FieldSystem_GetTimeOfDay(fieldSystem); + dto->bagCursor = fieldSystem->unk_98; + dto->subscreenCursorOn = fieldSystem->battleSubscreenCursorOn; + dto->unk_104 = sub_0202C878(fieldSystem->saveData); + dto->records = SaveData_GetGameRecordsPtr(fieldSystem->saveData); + dto->journal = fieldSystem->journal; + dto->mapHeaderID = fieldSystem->location->mapId; + dto->unk_124 = sub_02027F8C(fieldSystem->saveData); + dto->saveData = fieldSystem->saveData; if (sub_020326C4(sub_0203895C())) { - int v11 = TrainerInfo_Appearance(v0); - int v12 = TrainerInfo_Gender(v0); + int unionAppearance = TrainerInfo_Appearance(trainerInfo); + int unionGender = TrainerInfo_Gender(trainerInfo); - param0->trainerData[0].class = sub_0205CA14(v12, v11, 1); - CharCode_Copy(¶m0->trainerData[0].name[0], TrainerInfo_Name(param0->trainerInfo[0])); - param0->trainerData[2] = param0->trainerData[0]; + dto->trainerData[BATTLER_PLAYER_SLOT_1].class = sub_0205CA14(unionGender, unionAppearance, 1); + CharCode_Copy(dto->trainerData[BATTLER_PLAYER_SLOT_1].name, TrainerInfo_Name(dto->trainerInfo[BATTLER_PLAYER_SLOT_1])); + dto->trainerData[BATTLER_PLAYER_SLOT_2] = dto->trainerData[BATTLER_PLAYER_SLOT_1]; } else { - sub_02052894(param0); + FieldBattleDTO_CopyPlayerInfoToTrainerData(dto); } } -void sub_020526CC(FieldBattleDTO *param0, const FieldSystem *fieldSystem, const u8 *param2) +void FieldBattleDTO_InitWithPartyOrderFromSave(FieldBattleDTO *dto, const FieldSystem *fieldSystem, const u8 *partyOrder) { - sub_020524E4(param0, fieldSystem, Party_GetFromSavedata(fieldSystem->saveData), param2); + FieldBattleDTO_InitWithPartyOrder(dto, fieldSystem, Party_GetFromSavedata(fieldSystem->saveData), partyOrder); } -void sub_020526E8(const FieldBattleDTO *param0, FieldSystem *fieldSystem) +void FieldBattleDTO_UpdateFieldSystem(const FieldBattleDTO *dto, FieldSystem *fieldSystem) { - TrainerInfo *v0 = SaveData_GetTrainerInfo(fieldSystem->saveData); - Party *v1 = Party_GetFromSavedata(fieldSystem->saveData); - Bag *v2 = SaveData_GetBag(fieldSystem->saveData); - PokedexData *v3 = SaveData_Pokedex(fieldSystem->saveData); - u16 *v4 = sub_0203A784(SaveData_GetFieldOverworldState(fieldSystem->saveData)); + TrainerInfo *trainerInfo = SaveData_GetTrainerInfo(fieldSystem->saveData); + Party *party = Party_GetFromSavedata(fieldSystem->saveData); + Bag *bag = SaveData_GetBag(fieldSystem->saveData); + PokedexData *pokedex = SaveData_Pokedex(fieldSystem->saveData); + u16 *fieldSysSafariBalls = sub_0203A784(SaveData_GetFieldOverworldState(fieldSystem->saveData)); - TrainerInfo_Copy(param0->trainerInfo[0], v0); - Party_cpy(param0->parties[0], v1); - Bag_Copy(param0->bag, v2); - sub_02026338(param0->pokedex, v3); + TrainerInfo_Copy(dto->trainerInfo[BATTLER_PLAYER_SLOT_1], trainerInfo); + Party_cpy(dto->parties[BATTLER_PLAYER_SLOT_1], party); + Bag_Copy(dto->bag, bag); + Pokedex_Copy(dto->pokedex, pokedex); - *v4 = param0->countSafariBalls; + *fieldSysSafariBalls = dto->countSafariBalls; } -void sub_02052754(const FieldBattleDTO *param0, FieldSystem *fieldSystem) +void FieldBattleDTO_UpdatePokedex(const FieldBattleDTO *dto, FieldSystem *fieldSystem) { - TrainerInfo *v0 = SaveData_GetTrainerInfo(fieldSystem->saveData); - Party *v1 = Party_GetFromSavedata(fieldSystem->saveData); - Bag *v2 = SaveData_GetBag(fieldSystem->saveData); - PokedexData *v3 = SaveData_Pokedex(fieldSystem->saveData); + TrainerInfo *trainerInfo = SaveData_GetTrainerInfo(fieldSystem->saveData); + Party *party = Party_GetFromSavedata(fieldSystem->saveData); + Bag *bag = SaveData_GetBag(fieldSystem->saveData); + PokedexData *pokedex = SaveData_Pokedex(fieldSystem->saveData); - sub_02026338(param0->pokedex, v3); + Pokedex_Copy(dto->pokedex, pokedex); } -static int sub_02052780(const FieldSystem *fieldSystem, int param1) -{ - u8 v0 = sub_02054F94(fieldSystem, fieldSystem->location->x, fieldSystem->location->z); - static const v1[] = { - 0, - 7, - 9, - 2, - 4, - 6, - 9, - 9, - 9, - 5, - 5, - 5, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22 - }; +static const enum Terrain sTerrainForBackground[] = { + [BACKGROUND_PLAIN] = TERRAIN_PLAIN, + [BACKGROUND_WATER] = TERRAIN_WATER, + [BACKGROUND_CITY] = TERRAIN_BUILDING, + [BACKGROUND_FOREST] = TERRAIN_GRASS, + [BACKGROUND_MOUNTAIN] = TERRAIN_MOUNTAIN, + [BACKGROUND_SNOW] = TERRAIN_SNOW, + [BACKGROUND_INDOORS_1] = TERRAIN_BUILDING, + [BACKGROUND_INDOORS_2] = TERRAIN_BUILDING, + [BACKGROUND_INDOORS_3] = TERRAIN_BUILDING, + [BACKGROUND_CAVE_1] = TERRAIN_CAVE, + [BACKGROUND_CAVE_2] = TERRAIN_CAVE, + [BACKGROUND_CAVE_3] = TERRAIN_CAVE, + [BACKGROUND_AARON] = TERRAIN_AARON, + [BACKGROUND_BERTHA] = TERRAIN_BERTHA, + [BACKGROUND_FLINT] = TERRAIN_FLINT, + [BACKGROUND_LUCIAN] = TERRAIN_LUCIAN, + [BACKGROUND_CYNTHIA] = TERRAIN_CYNTHIA, + [BACKGROUND_DISTORTION_WORLD] = TERRAIN_DISTORTION_WORLD, + [BACKGROUND_BATTLE_TOWER] = TERRAIN_BATTLE_TOWER, + [BACKGROUND_BATTLE_FACTORY] = TERRAIN_BATTLE_FACTORY, + [BACKGROUND_BATTLE_ARCADE] = TERRAIN_BATTLE_ARCADE, + [BACKGROUND_BATTLE_CASTLE] = TERRAIN_BATTLE_CASTLE, + [BACKGROUND_BATTLE_HALL] = TERRAIN_BATTLE_HALL, +}; - if (sub_0205DC5C(v0)) { - return 8; - } else if (sub_0205DAC8(v0) || sub_0205DAD4(v0)) { - return 2; - } else if (sub_0205DB6C(v0)) { - return 1; - } else if (sub_0205DD18(v0)) { - return 6; - } else if (sub_0205DCE0(v0) || sub_0205DCFC(v0)) { - return 10; - } else if (sub_0205DDA8(v0)) { - return 5; +static int CalcTerrain(const FieldSystem *fieldSystem, enum BattleBackground background) +{ + u8 tileAttr = FieldSystem_GetTileAttributes(fieldSystem, fieldSystem->location->x, fieldSystem->location->z); + if (sub_0205DC5C(tileAttr)) { + return TERRAIN_ICE; + } else if (sub_0205DAC8(tileAttr) || sub_0205DAD4(tileAttr)) { + return TERRAIN_GRASS; + } else if (sub_0205DB6C(tileAttr)) { + return TERRAIN_SAND; + } else if (sub_0205DD18(tileAttr)) { + return TERRAIN_SNOW; + } else if (sub_0205DCE0(tileAttr) || sub_0205DCFC(tileAttr)) { + return TERRAIN_GREAT_MARSH; + } else if (sub_0205DDA8(tileAttr)) { + return TERRAIN_CAVE; } - if (sub_0205DB58(v0)) { - return 7; + if (sub_0205DB58(tileAttr)) { + return TERRAIN_WATER; } - if (param1 < NELEMS(v1)) { - return v1[param1]; + if (background < NELEMS(sTerrainForBackground)) { + return sTerrainForBackground[background]; } - GF_ASSERT(0); - - return 24; + GF_ASSERT(FALSE); + return TERRAIN_MAX; } -static void sub_0205281C(FieldBattleDTO *param0, const FieldSystem *fieldSystem) +static void SetBackgroundAndTerrain(FieldBattleDTO *dto, const FieldSystem *fieldSystem) { - PlayerData *v0 = FieldOverworldState_GetPlayerData(SaveData_GetFieldOverworldState(fieldSystem->saveData)); - - param0->background = MapHeader_GetBattleBG(fieldSystem->location->mapId); - - if (v0->unk_04 == 0x2) { - param0->background = 1; + PlayerData *player = FieldOverworldState_GetPlayerData(SaveData_GetFieldOverworldState(fieldSystem->saveData)); + dto->background = MapHeader_GetBattleBG(fieldSystem->location->mapId); + if (player->form == PLAYER_AVATAR_SURFING) { + dto->background = BACKGROUND_WATER; } - param0->terrain = sub_02052780(fieldSystem, param0->background); + dto->terrain = CalcTerrain(fieldSystem, dto->background); } -void sub_0205285C(FieldBattleDTO *param0) +void FieldBattleDTO_SetWaterTerrain(FieldBattleDTO *dto) { - param0->terrain = TERRAIN_WATER; + dto->terrain = TERRAIN_WATER; } -BOOL FieldBattleDTO_PlayerWon(u32 battleResult) +BOOL CheckPlayerWonBattle(u32 battleResult) { switch (battleResult) { case BATTLE_RESULT_LOSE: @@ -546,7 +531,7 @@ BOOL FieldBattleDTO_PlayerWon(u32 battleResult) } } -BOOL FieldBattleDTO_PlayerLost(u32 battleResult) +BOOL CheckPlayerLostBattle(u32 battleResult) { switch (battleResult) { case BATTLE_RESULT_WIN: @@ -557,7 +542,7 @@ BOOL FieldBattleDTO_PlayerLost(u32 battleResult) } } -BOOL FieldBattleDTO_PlayerDidNotCapture(u32 battleResult) +BOOL CheckPlayerDidNotCaptureWildMon(u32 battleResult) { switch (battleResult) { case BATTLE_RESULT_CAPTURED_MON: @@ -567,9 +552,9 @@ BOOL FieldBattleDTO_PlayerDidNotCapture(u32 battleResult) } } -void sub_02052894(FieldBattleDTO *param0) +void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *dto) { - param0->trainerData[0].class = TrainerInfo_Gender(param0->trainerInfo[0]); - CharCode_Copy(¶m0->trainerData[0].name[0], TrainerInfo_Name(param0->trainerInfo[0])); - param0->trainerData[2] = param0->trainerData[0]; + dto->trainerData[BATTLER_PLAYER_SLOT_1].class = TrainerInfo_Gender(dto->trainerInfo[BATTLER_PLAYER_SLOT_1]); + CharCode_Copy(dto->trainerData[BATTLER_PLAYER_SLOT_1].name, TrainerInfo_Name(dto->trainerInfo[BATTLER_PLAYER_SLOT_1])); + dto->trainerData[BATTLER_PLAYER_SLOT_2] = dto->trainerData[BATTLER_PLAYER_SLOT_1]; } diff --git a/src/field_map_change.c b/src/field_map_change.c index 064e919d2e..5a42083aaf 100644 --- a/src/field_map_change.c +++ b/src/field_map_change.c @@ -339,7 +339,7 @@ static void FieldMapChange_CreateObjects(FieldSystem *fieldSystem) fieldState = SaveData_GetFieldOverworldState(fieldSystem->saveData); playerData = FieldOverworldState_GetPlayerData(fieldState); - fieldSystem->playerAvatar = PlayerAvatar_Init(fieldSystem->mapObjMan, fieldSystem->location->x, fieldSystem->location->z, fieldSystem->location->faceDirection, playerData->unk_04, gender, 0, playerData); + fieldSystem->playerAvatar = PlayerAvatar_Init(fieldSystem->mapObjMan, fieldSystem->location->x, fieldSystem->location->z, fieldSystem->location->faceDirection, playerData->form, gender, 0, playerData); sub_0203A418(fieldSystem); MapObjectMan_StopAllMovement(fieldSystem->mapObjMan); diff --git a/src/field_menu.c b/src/field_menu.c index 2679299a6c..c310f52451 100644 --- a/src/field_menu.c +++ b/src/field_menu.c @@ -954,7 +954,7 @@ static BOOL FieldMenu_Pokedex(FieldTask *taskMan) v2->unk_00 = v3; v2->unk_04 = v4; - v2->timeOfDay = sub_02055BA8(fieldSystem); + v2->timeOfDay = FieldSystem_GetTimeOfDay(fieldSystem); v2->fullmoonIslandVisible = VarFlags_HiddenLocationsUnlocked(v5, HL_FULLMOONISLAND); v2->newmoonIslandVisible = VarFlags_HiddenLocationsUnlocked(v5, HL_NEWMOONISLAND); v2->springPathVisible = VarFlags_HiddenLocationsUnlocked(v5, HL_SPRINGPATH); diff --git a/src/map_object_move.c b/src/map_object_move.c index 29c4d4a64e..e411e4b0cb 100644 --- a/src/map_object_move.c +++ b/src/map_object_move.c @@ -688,7 +688,7 @@ int sub_02064004(const MapObject *mapObj, int param1, int param2, int param3) if (sub_02062FDC(mapObj) == 0) { FieldSystem *fieldSystem = MapObject_FieldSystem(mapObj); u8 v1 = sub_02062BE8(mapObj); - u8 v2 = sub_02054F94(fieldSystem, param1, param2); + u8 v2 = FieldSystem_GetTileAttributes(fieldSystem, param1, param2); if (v2 == sub_0205DF98()) { return 1; @@ -855,7 +855,7 @@ u32 sub_02064238(MapObject *mapObj, int param1) int v0 = MapObject_GetXPos(mapObj) + MapObject_GetDxFromDir(param1); int v1 = MapObject_GetZPos(mapObj) + MapObject_GetDyFromDir(param1); FieldSystem *fieldSystem = MapObject_FieldSystem(mapObj); - u8 v3 = sub_02054F94(fieldSystem, v0, v1); + u8 v3 = FieldSystem_GetTileAttributes(fieldSystem, v0, v1); return v3; } @@ -937,10 +937,10 @@ int sub_02064390(MapObject *mapObj) int z = MapObject_ZPosPrev(mapObj); FieldSystem *fieldSystem = MapObject_FieldSystem(mapObj); - v0 = sub_02054F94(fieldSystem, v2, z); + v0 = FieldSystem_GetTileAttributes(fieldSystem, v2, z); v2 = MapObject_GetXPos(mapObj); z = MapObject_GetZPos(mapObj); - v1 = sub_02054F94(fieldSystem, v2, z); + v1 = FieldSystem_GetTileAttributes(fieldSystem, v2, z); } sub_02062BF0(mapObj, v0); diff --git a/src/overlay005/field_control.c b/src/overlay005/field_control.c index f8154351e3..0d53acf872 100644 --- a/src/overlay005/field_control.c +++ b/src/overlay005/field_control.c @@ -579,7 +579,7 @@ static BOOL Field_CheckMapTransition(FieldSystem *fieldSystem, const FieldInput Location nextMap; if (Field_MapConnection(fieldSystem, playerX, playerZ, &nextMap) && input->transitionDir != DIR_NONE) { - tileBehavior = sub_02054F94(fieldSystem, playerX, playerZ); + tileBehavior = FieldSystem_GetTileAttributes(fieldSystem, playerX, playerZ); if (sub_0205DAEC(tileBehavior)) { int v6 = input->transitionDir; @@ -596,7 +596,7 @@ static BOOL Field_CheckMapTransition(FieldSystem *fieldSystem, const FieldInput Field_GetPlayerPos(fieldSystem, &playerX, &playerZ); - tileBehavior = sub_02054F94(fieldSystem, playerX, playerZ); + tileBehavior = FieldSystem_GetTileAttributes(fieldSystem, playerX, playerZ); if (sub_0205DAF8(tileBehavior) || sub_0205DB28(tileBehavior)) { if (input->transitionDir != DIR_EAST) { @@ -715,7 +715,7 @@ static BOOL Field_ProcessStep(FieldSystem *fieldSystem) int playerX = Player_GetXPos(fieldSystem->playerAvatar); int playerZ = Player_GetZPos(fieldSystem->playerAvatar); - u8 tileBehavior = sub_02054F94(fieldSystem, playerX, playerZ); + u8 tileBehavior = FieldSystem_GetTileAttributes(fieldSystem, playerX, playerZ); if (Field_CheckCoordEvent(fieldSystem) == TRUE) { return TRUE; @@ -982,14 +982,14 @@ static u8 Field_CurrentTileBehavior(const FieldSystem *fieldSystem) { int playerX, playerZ; Field_GetPlayerPos(fieldSystem, &playerX, &playerZ); - return sub_02054F94(fieldSystem, playerX, playerZ); + return FieldSystem_GetTileAttributes(fieldSystem, playerX, playerZ); } static u8 Field_NextTileBehavior(const FieldSystem *fieldSystem) { int playerX, playerZ; Field_Step(fieldSystem, &playerX, &playerZ); - return sub_02054F94(fieldSystem, playerX, playerZ); + return FieldSystem_GetTileAttributes(fieldSystem, playerX, playerZ); } static BOOL Field_MapConnection(const FieldSystem *fieldSystem, int playerX, int playerZ, Location *nextMap) diff --git a/src/overlay005/ov5_021EE75C.c b/src/overlay005/ov5_021EE75C.c index bbeb6370ca..5fcc0fa220 100644 --- a/src/overlay005/ov5_021EE75C.c +++ b/src/overlay005/ov5_021EE75C.c @@ -49,7 +49,7 @@ static void ov5_021EE768(UnkStruct_ov5_021D1BEC *param0, FieldSystem *fieldSyste v4->unk_00 = v1; v4->unk_04 = v2; - v0 = sub_02054F94(fieldSystem, v1, v2); + v0 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2); if (sub_0205DD84(v0)) { v3 = 0; diff --git a/src/overlay005/ov5_021F007C.c b/src/overlay005/ov5_021F007C.c index a46ce6dc50..3cdde706cb 100644 --- a/src/overlay005/ov5_021F007C.c +++ b/src/overlay005/ov5_021F007C.c @@ -485,7 +485,7 @@ BOOL ov5_021F0488(FieldTask *param0) v4 = Player_GetXPos(fieldSystem->playerAvatar); v5 = Player_GetZPos(fieldSystem->playerAvatar); - v3 = (u8)sub_02054F94(fieldSystem, v4, v5); + v3 = (u8)FieldSystem_GetTileAttributes(fieldSystem, v4, v5); if (ov6_02242110(fieldSystem, v3)) { v1->unk_0C = 6; diff --git a/src/overlay005/ov5_021F08CC.c b/src/overlay005/ov5_021F08CC.c index 65ef4c7a4d..a85eb40971 100644 --- a/src/overlay005/ov5_021F08CC.c +++ b/src/overlay005/ov5_021F08CC.c @@ -130,7 +130,7 @@ BOOL ov5_021F08F8(FieldTask *taskMan) } if (v1->unk_10 != NULL) { - sub_020520A4(v1->unk_10); + FieldBattleDTO_Free(v1->unk_10); } MapObjectMan_UnpauseAllMovement(fieldSystem->mapObjMan); diff --git a/src/overlay006/ov6_02240C9C.c b/src/overlay006/ov6_02240C9C.c index 37d0f7ac6a..177937e236 100644 --- a/src/overlay006/ov6_02240C9C.c +++ b/src/overlay006/ov6_02240C9C.c @@ -241,7 +241,7 @@ BOOL ov6_02240D5C(FieldSystem *fieldSystem) int playerX = Player_GetXPos(fieldSystem->playerAvatar); int playerZ = Player_GetZPos(fieldSystem->playerAvatar); - v4 = sub_02054F94(fieldSystem, playerX, playerZ); + v4 = FieldSystem_GetTileAttributes(fieldSystem, playerX, playerZ); u8 encounterRate = ov6_02241874(fieldSystem, v4, &encounterType); @@ -296,9 +296,9 @@ BOOL ov6_02240D5C(FieldSystem *fieldSystem) if (ov6_02242440(fieldSystem, &v17)) { if (!ov6_02242388(sub_0202D93C(v17, 6), &encounterFieldParams)) { - battleParams = sub_02051D8C(11, BATTLE_TYPE_ROAMER); + battleParams = FieldBattleDTO_New(11, BATTLE_TYPE_ROAMER); - sub_02052314(battleParams, fieldSystem); + FieldBattleDTO_Init(battleParams, fieldSystem); ov6_0224239C(encounterFieldParams.trainerID, v17, battleParams); RadarChain_Clear(fieldSystem->chain); sub_02050E10(fieldSystem, battleParams); @@ -313,10 +313,10 @@ BOOL ov6_02240D5C(FieldSystem *fieldSystem) v9 = SystemFlag_CheckSafariGameActive(SaveData_GetVarsFlags(fieldSystem->saveData)); ov6_02242328(fieldSystem, v9, &battleParams); } else { - battleParams = sub_02051D8C(11, BATTLE_TYPE_AI_PARTNER); + battleParams = FieldBattleDTO_New(11, BATTLE_TYPE_AI_PARTNER); } - sub_02052314(battleParams, fieldSystem); + FieldBattleDTO_Init(battleParams, fieldSystem); if (encounterType == ENCOUNTER_TYPE_GRASS) { for (int i = 0; i < MAX_GRASS_ENCOUNTERS; i++) { @@ -353,7 +353,7 @@ BOOL ov6_02240D5C(FieldSystem *fieldSystem) v7 = ov6_02241790(fieldSystem, firstPartyMon, battleParams, v13, &encounterFieldParams); } else { GF_ASSERT(FALSE); - sub_020520A4(battleParams); + FieldBattleDTO_Free(battleParams); return FALSE; } @@ -367,7 +367,7 @@ BOOL ov6_02240D5C(FieldSystem *fieldSystem) GF_ASSERT(GF_heap_c_dummy_return_true(11)); if (!v6) { - sub_020520A4(battleParams); + FieldBattleDTO_Free(battleParams); } fieldSystem->unk_78.unk_00 = 0; @@ -399,8 +399,8 @@ BOOL ov6_0224106C(FieldSystem *fieldSystem, const int fishingRodType, FieldBattl ov6_02242328(fieldSystem, v2, battleParams); - sub_02052314(*battleParams, fieldSystem); - sub_0205285C(*battleParams); + FieldBattleDTO_Init(*battleParams, fieldSystem); + FieldBattleDTO_SetWaterTerrain(*battleParams); if (MapHeader_HasFeebasTiles(fieldSystem->location->mapId) && ov6_02247660(fieldSystem)) { int species; @@ -458,7 +458,7 @@ BOOL ov6_022411C8(FieldSystem *fieldSystem, FieldTask *param1) int playerX = Player_GetXPos(fieldSystem->playerAvatar); int playerZ = Player_GetZPos(fieldSystem->playerAvatar); - u8 v4 = sub_02054F94(fieldSystem, playerX, playerZ); + u8 v4 = FieldSystem_GetTileAttributes(fieldSystem, playerX, playerZ); u8 encounterRate = ov6_02241874(fieldSystem, v4, &encounterType); @@ -487,9 +487,9 @@ BOOL ov6_022411C8(FieldSystem *fieldSystem, FieldTask *param1) UnkStruct_0206C638 *v15; if (ov6_02242440(fieldSystem, &v15)) { - battleParams = sub_02051D8C(11, BATTLE_TYPE_ROAMER); + battleParams = FieldBattleDTO_New(11, BATTLE_TYPE_ROAMER); - sub_02052314(battleParams, fieldSystem); + FieldBattleDTO_Init(battleParams, fieldSystem); ov6_0224239C(encounterFieldParams.trainerID, v15, battleParams); RadarChain_Clear(fieldSystem->chain); sub_02050E78(fieldSystem, param1, battleParams); @@ -501,10 +501,10 @@ BOOL ov6_022411C8(FieldSystem *fieldSystem, FieldTask *param1) v7 = SystemFlag_CheckSafariGameActive(SaveData_GetVarsFlags(fieldSystem->saveData)); ov6_02242328(fieldSystem, v7, &battleParams); } else { - battleParams = sub_02051D8C(11, BATTLE_TYPE_AI_PARTNER); + battleParams = FieldBattleDTO_New(11, BATTLE_TYPE_AI_PARTNER); } - sub_02052314(battleParams, fieldSystem); + FieldBattleDTO_Init(battleParams, fieldSystem); if (encounterType == ENCOUNTER_TYPE_GRASS) { for (int i = 0; i < MAX_GRASS_ENCOUNTERS; i++) { @@ -568,7 +568,7 @@ BOOL ov6_022413E4(FieldSystem *fieldSystem, FieldBattleDTO **battleParams) int playerX = Player_GetXPos(fieldSystem->playerAvatar); int playerZ = Player_GetZPos(fieldSystem->playerAvatar); - u8 v3 = sub_02054F94(fieldSystem, playerX, playerZ); + u8 v3 = FieldSystem_GetTileAttributes(fieldSystem, playerX, playerZ); u8 encounterRate = ov6_02241874(fieldSystem, v3, &encounterType); @@ -614,9 +614,9 @@ BOOL ov6_022413E4(FieldSystem *fieldSystem, FieldBattleDTO **battleParams) if (ov6_02242440(fieldSystem, &v16)) { if (!ov6_02242388(sub_0202D93C(v16, 6), &encounterFieldParams)) { - *battleParams = sub_02051D8C(11, BATTLE_TYPE_ROAMER); + *battleParams = FieldBattleDTO_New(11, BATTLE_TYPE_ROAMER); - sub_02052314(*battleParams, fieldSystem); + FieldBattleDTO_Init(*battleParams, fieldSystem); ov6_0224239C(encounterFieldParams.trainerID, v16, *battleParams); RadarChain_Clear(fieldSystem->chain); return TRUE; @@ -630,10 +630,10 @@ BOOL ov6_022413E4(FieldSystem *fieldSystem, FieldBattleDTO **battleParams) v8 = SystemFlag_CheckSafariGameActive(SaveData_GetVarsFlags(fieldSystem->saveData)); ov6_02242328(fieldSystem, v8, battleParams); } else { - *battleParams = sub_02051D8C(11, BATTLE_TYPE_AI_PARTNER); + *battleParams = FieldBattleDTO_New(11, BATTLE_TYPE_AI_PARTNER); } - sub_02052314(*battleParams, fieldSystem); + FieldBattleDTO_Init(*battleParams, fieldSystem); if (encounterType == ENCOUNTER_TYPE_GRASS) { for (int i = 0; i < MAX_GRASS_ENCOUNTERS; i++) { @@ -662,7 +662,7 @@ BOOL ov6_022413E4(FieldSystem *fieldSystem, FieldBattleDTO **battleParams) } } else { GF_ASSERT(FALSE); - sub_020520A4(*battleParams); + FieldBattleDTO_Free(*battleParams); return FALSE; } @@ -674,7 +674,7 @@ BOOL ov6_022413E4(FieldSystem *fieldSystem, FieldBattleDTO **battleParams) GF_ASSERT(GF_heap_c_dummy_return_true(11)); if (!v5) { - sub_020520A4(*battleParams); + FieldBattleDTO_Free(*battleParams); } else { fieldSystem->unk_78.unk_00 = 0; } @@ -1387,10 +1387,10 @@ static BOOL ov6_022422D0(const WildEncounters_FieldParams *encounterFieldParams, static void ov6_02242328(FieldSystem *fieldSystem, const BOOL param1, FieldBattleDTO **param2) { if (!param1) { - *param2 = sub_02051D8C(11, (0x0 | 0x0)); + *param2 = FieldBattleDTO_New(11, (0x0 | 0x0)); } else { u16 *v0 = sub_0203A784(SaveData_GetFieldOverworldState(fieldSystem->saveData)); - *param2 = sub_02051F24(11, *v0); + *param2 = FieldBattleDTO_NewSafari(11, *v0); } } diff --git a/src/overlay006/ov6_02246184.c b/src/overlay006/ov6_02246184.c index 30d0691ea2..4c3877db53 100644 --- a/src/overlay006/ov6_02246184.c +++ b/src/overlay006/ov6_02246184.c @@ -132,7 +132,7 @@ void ov6_02246254(FieldSystem *fieldSystem, UnkStruct_ov6_02246204 *param1, int param3->unk_10 = 1; param3->unk_14 = SaveData_Options(fieldSystem->saveData); - v4 = sub_02055BA8(fieldSystem); + v4 = FieldSystem_GetTimeOfDay(fieldSystem); if ((v4 == 0) || (v4 == 1)) { param3->unk_0C = 0; diff --git a/src/overlay008/ov8_02249960.c b/src/overlay008/ov8_02249960.c index 91499074c6..9b8c8eccc7 100644 --- a/src/overlay008/ov8_02249960.c +++ b/src/overlay008/ov8_02249960.c @@ -384,7 +384,7 @@ BOOL ov8_02249A40(FieldSystem *fieldSystem, const int param1, const int param2, { u8 v0; - v0 = sub_02054F94(fieldSystem, param1, param2); + v0 = FieldSystem_GetTileAttributes(fieldSystem, param1, param2); if (sub_0205DBFC(v0)) { if (param3 != 0) { diff --git a/src/overlay104/ov104_022332B4.c b/src/overlay104/ov104_022332B4.c index c1fdc01e42..59ee1f2ab3 100644 --- a/src/overlay104/ov104_022332B4.c +++ b/src/overlay104/ov104_022332B4.c @@ -134,9 +134,9 @@ BOOL ov104_0223338C(UnkStruct_ov104_0222E930 *param0) v0 = sub_0209B978(param0->unk_00->unk_00); v1 = v0->unk_4FC; - v0->unk_14 = FieldBattleDTO_PlayerWon(v1->resultMask); + v0->unk_14 = CheckPlayerWonBattle(v1->resultMask); - sub_020520A4(v1); + FieldBattleDTO_Free(v1); return 0; } diff --git a/src/overlay104/ov104_02234838.c b/src/overlay104/ov104_02234838.c index 166d8c81ae..277ad5939e 100644 --- a/src/overlay104/ov104_02234838.c +++ b/src/overlay104/ov104_02234838.c @@ -148,8 +148,8 @@ BOOL ov104_02234994(UnkStruct_ov104_0222E930 *param0) v0 = sub_0209B978(param0->unk_00->unk_00); v1 = v0->unk_700; - v0->unk_14 = FieldBattleDTO_PlayerWon(v1->resultMask); - sub_020520A4(v1); + v0->unk_14 = CheckPlayerWonBattle(v1->resultMask); + FieldBattleDTO_Free(v1); return 0; } diff --git a/src/overlay104/ov104_022358E8.c b/src/overlay104/ov104_022358E8.c index fa9f776248..17abf2f8ac 100644 --- a/src/overlay104/ov104_022358E8.c +++ b/src/overlay104/ov104_022358E8.c @@ -188,8 +188,8 @@ BOOL ov104_02235A24(UnkStruct_ov104_0222E930 *param0) sub_0207A128(v1->unk_28, 3, v3); } - v1->unk_1C = FieldBattleDTO_PlayerWon(v2->resultMask); - sub_020520A4(v2); + v1->unk_1C = CheckPlayerWonBattle(v2->resultMask); + FieldBattleDTO_Free(v2); return 0; } diff --git a/src/overlay104/ov104_02237378.c b/src/overlay104/ov104_02237378.c index 8cf6f5518a..b72de009b5 100644 --- a/src/overlay104/ov104_02237378.c +++ b/src/overlay104/ov104_02237378.c @@ -156,7 +156,7 @@ BOOL ov104_02237460(UnkStruct_ov104_0222E930 *param0) v10 = v9->unk_0C; v9->unk_1D = ov104_02238538(v9, v10->parties[0], v10->parties[2], v10->totalTurnsElapsed); - v9->unk_28 = FieldBattleDTO_PlayerWon(v10->resultMask); + v9->unk_28 = CheckPlayerWonBattle(v10->resultMask); if (v9->unk_13 == 27) { v2 = 1; @@ -215,7 +215,7 @@ BOOL ov104_02237460(UnkStruct_ov104_0222E930 *param0) Pokemon_SetValue(v11, MON_DATA_SP_DEF, &v5); } - sub_020520A4(v10); + FieldBattleDTO_Free(v10); return 0; } diff --git a/src/overlay104/ov104_02239130.c b/src/overlay104/ov104_02239130.c index c451d4b2ad..fb79f81766 100644 --- a/src/overlay104/ov104_02239130.c +++ b/src/overlay104/ov104_02239130.c @@ -214,10 +214,10 @@ BOOL ov104_02239364(UnkStruct_ov104_0222E930 *param0) v2 = ov104_0222FBE4(param0); v1 = v0->unk_8D0; - v0->unk_8CC = FieldBattleDTO_PlayerWon(v1->resultMask); + v0->unk_8CC = CheckPlayerWonBattle(v1->resultMask); *v2 = v0->unk_8CC; - sub_020520A4(v1); + FieldBattleDTO_Free(v1); return 0; } diff --git a/src/overlay104/ov104_0223A0C4.c b/src/overlay104/ov104_0223A0C4.c index d24d3bcfee..98f5bcbc23 100644 --- a/src/overlay104/ov104_0223A0C4.c +++ b/src/overlay104/ov104_0223A0C4.c @@ -628,7 +628,7 @@ static const UnkStruct_ov104_0223FCB4 Unk_ov104_0223FCB4[] = { }, }; -void sub_02052894(FieldBattleDTO *param0); +void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *param0); BOOL ov104_0223A0C4(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_0223A348 *param1, u16 param2, int param3, u16 *param4, u16 *param5, UnkStruct_0204B404 *param6, int param7); void ov104_0223A30C(SaveData *param0, UnkStruct_ov104_0223A348 *param1, const u8 param2); FieldBattleDTO *ov104_0223A580(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_02230BE4 *param1); @@ -912,11 +912,11 @@ FieldBattleDTO *ov104_0223A580(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_02230 Party *v5; Pokemon *v6; - v3 = sub_02051D8C(param0->unk_04, ov104_0223A700(param0->unk_0F)); + v3 = FieldBattleDTO_New(param0->unk_04, ov104_0223A700(param0->unk_0F)); v4 = param1->unk_08; v5 = Party_GetFromSavedata(v4); - sub_020521B8(v3, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20); + FieldBattleDTO_InitFromGameState(v3, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20); v3->background = 18; v3->terrain = TERRAIN_BATTLE_TOWER; @@ -936,11 +936,11 @@ FieldBattleDTO *ov104_0223A580(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_02230 Pokemon_CalcLevelAndStats(v6); } - sub_0205213C(v3, v6, 0); + FieldBattleDTO_AddPokemonToBattler(v3, v6, 0); } Heap_FreeToHeap(v6); - sub_02052894(v3); + FieldBattleDTO_CopyPlayerInfoToTrainerData(v3); ov104_0223A6AC(v3, &(param0->unk_78[0]), param0->unk_0E, 1, param0->unk_04); diff --git a/src/overlay104/ov104_0223A7F4.c b/src/overlay104/ov104_0223A7F4.c index d3dac360c2..4dc2bbdee8 100644 --- a/src/overlay104/ov104_0223A7F4.c +++ b/src/overlay104/ov104_0223A7F4.c @@ -98,7 +98,7 @@ void ov104_0223AE30(UnkStruct_ov104_0223ADA0 *param0); BOOL ov104_0223AED4(u8 param0); static u16 ov104_0223AEE4(UnkStruct_ov104_0223ADA0 *param0); u16 ov104_0223AF34(UnkStruct_ov104_0223ADA0 *param0); -void sub_02052894(FieldBattleDTO *param0); +void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *param0); static int ov104_0223A7F4(u8 param0, int param1, int param2) { @@ -359,8 +359,8 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104 HealAllPokemonInParty(param0->unk_4D4); HealAllPokemonInParty(param0->unk_4D8); - v4 = sub_02051D8C(11, ov104_0223AD74(param0->unk_04)); - sub_020521B8(v4, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20); + v4 = FieldBattleDTO_New(11, ov104_0223AD74(param0->unk_04)); + FieldBattleDTO_InitFromGameState(v4, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20); v4->background = 19; v4->terrain = TERRAIN_BATTLE_FACTORY; @@ -370,11 +370,11 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104 for (v0 = 0; v0 < v2; v0++) { Pokemon_Copy(Party_GetPokemonBySlotIndex(param0->unk_4D4, v0), v5); - sub_0205213C(v4, v5, 0); + FieldBattleDTO_AddPokemonToBattler(v4, v5, 0); } Heap_FreeToHeap(v5); - sub_02052894(v4); + FieldBattleDTO_CopyPlayerInfoToTrainerData(v4); v7 = ov104_0222DD04(&v6, param0->unk_18[param0->unk_06], 11, 178); Heap_FreeToHeap(v7); @@ -390,7 +390,7 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104 for (v0 = 0; v0 < v3; v0++) { Pokemon_Copy(Party_GetPokemonBySlotIndex(param0->unk_4D8, v0), v5); - sub_0205213C(v4, v5, 1); + FieldBattleDTO_AddPokemonToBattler(v4, v5, 1); } Heap_FreeToHeap(v5); @@ -398,7 +398,7 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104 switch (param0->unk_04) { case 2: case 3: - sub_02052894(v4); + FieldBattleDTO_CopyPlayerInfoToTrainerData(v4); v10 = CommInfo_TrainerInfo(1 - CommSys_CurNetId()); TrainerInfo_Copy(v10, v4->trainerInfo[2]); @@ -413,7 +413,7 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104 for (v0 = 0; v0 < v3; v0++) { Pokemon_Copy(Party_GetPokemonBySlotIndex(param0->unk_4D8, (v3 + v0)), v5); - sub_0205213C(v4, v5, 3); + FieldBattleDTO_AddPokemonToBattler(v4, v5, 3); } Heap_FreeToHeap(v5); diff --git a/src/overlay104/ov104_0223AF58.c b/src/overlay104/ov104_0223AF58.c index b83b15b628..a724e30ffb 100644 --- a/src/overlay104/ov104_0223AF58.c +++ b/src/overlay104/ov104_0223AF58.c @@ -36,7 +36,7 @@ typedef struct { u16 unk_02; } UnkStruct_ov104_02240364; -void sub_02052894(FieldBattleDTO *param0); +void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *param0); void ov104_0223AF58(u8 param0, u8 param1, u8 param2, u8 param3, u16 param4[]); void ov104_0223AFB4(u8 param0, u8 param1, int param2, u8 param3, u8 param4, u16 param5[]); void ov104_0223B0C8(u8 param0, u8 param1, u8 param2, u8 param3, u16 param4, u16 param5[], u8 param6); @@ -1590,8 +1590,8 @@ FieldBattleDTO *ov104_0223B250(UnkStruct_ov104_0223B5C0 *param0, UnkStruct_ov104 HealAllPokemonInParty(v13); - v8 = sub_02051D8C(11, ov104_0223B4D4(param0->unk_04)); - sub_020521B8(v8, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20); + v8 = FieldBattleDTO_New(11, ov104_0223B4D4(param0->unk_04)); + FieldBattleDTO_InitFromGameState(v8, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20); v8->background = 22; v8->terrain = TERRAIN_BATTLE_HALL; @@ -1601,11 +1601,11 @@ FieldBattleDTO *ov104_0223B250(UnkStruct_ov104_0223B5C0 *param0, UnkStruct_ov104 for (v1 = 0; v1 < v4; v1++) { Pokemon_Copy(Party_GetPokemonBySlotIndex(v13, param0->unk_260[v1]), v9); - sub_0205213C(v8, v9, 0); + FieldBattleDTO_AddPokemonToBattler(v8, v9, 0); } Heap_FreeToHeap(v9); - sub_02052894(v8); + FieldBattleDTO_CopyPlayerInfoToTrainerData(v8); v11 = ov104_0222DD04(&v10, param0->unk_18[v6], 11, 178); @@ -1639,7 +1639,7 @@ FieldBattleDTO *ov104_0223B250(UnkStruct_ov104_0223B5C0 *param0, UnkStruct_ov104 ov104_0222DF40(¶m0->unk_290[v6], v9, ov104_0223B57C(param0, v7)); Pokemon_CalcAbility(v9); - sub_0205213C(v8, v9, 1); + FieldBattleDTO_AddPokemonToBattler(v8, v9, 1); } Heap_FreeToHeap(v9); @@ -1647,7 +1647,7 @@ FieldBattleDTO *ov104_0223B250(UnkStruct_ov104_0223B5C0 *param0, UnkStruct_ov104 switch (param0->unk_04) { case 2: case 3: - sub_02052894(v8); + FieldBattleDTO_CopyPlayerInfoToTrainerData(v8); v12 = CommInfo_TrainerInfo(1 - CommSys_CurNetId()); TrainerInfo_Copy(v12, v8->trainerInfo[2]); @@ -1669,7 +1669,7 @@ FieldBattleDTO *ov104_0223B250(UnkStruct_ov104_0223B5C0 *param0, UnkStruct_ov104 ov104_0222DF40(¶m0->unk_290[v6], v9, ov104_0223B57C(param0, v7)); Pokemon_CalcAbility(v9); - sub_0205213C(v8, v9, 3); + FieldBattleDTO_AddPokemonToBattler(v8, v9, 3); Heap_FreeToHeap(v9); break; } diff --git a/src/overlay104/ov104_0223B6F4.c b/src/overlay104/ov104_0223B6F4.c index 2b1891117c..535abd4aa6 100644 --- a/src/overlay104/ov104_0223B6F4.c +++ b/src/overlay104/ov104_0223B6F4.c @@ -45,7 +45,7 @@ void ov104_0223BAA0(UnkStruct_ov104_0223BA10 *param0, Party *param1, Pokemon *pa static u16 ov104_0223BB10(UnkStruct_ov104_0223BA10 *param0); u16 ov104_0223BB60(UnkStruct_ov104_0223BA10 *param0); u16 ov104_0223BC24(u16 param0); -void sub_02052894(FieldBattleDTO *param0); +void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *param0); void ov104_0223BB84(BgConfig *param0, UnkStruct_ov104_0223BA10 *param1, u32 param2); static void ov104_0223BBC4(u16 *param0, u16 param1); @@ -174,8 +174,8 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104 v3 = ov104_0223B7DC(param0->unk_10, 0); HealAllPokemonInParty(param0->unk_2C); - v5 = sub_02051D8C(11, ov104_0223B9E4(param0->unk_10)); - sub_020521B8(v5, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20); + v5 = FieldBattleDTO_New(11, ov104_0223B9E4(param0->unk_10)); + FieldBattleDTO_InitFromGameState(v5, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20); v5->background = 21; v5->terrain = TERRAIN_BATTLE_CASTLE; @@ -193,11 +193,11 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104 for (v0 = 0; v0 < v2; v0++) { Pokemon_Copy(Party_GetPokemonBySlotIndex(param0->unk_28, (v4 + v0)), v6); - sub_0205213C(v5, v6, 0); + FieldBattleDTO_AddPokemonToBattler(v5, v6, 0); } Heap_FreeToHeap(v6); - sub_02052894(v5); + FieldBattleDTO_CopyPlayerInfoToTrainerData(v5); v8 = ov104_0222DD04(&v7, param0->unk_30[param0->unk_11], 11, 178); @@ -213,7 +213,7 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104 for (v0 = 0; v0 < v3; v0++) { Pokemon_Copy(Party_GetPokemonBySlotIndex(param0->unk_2C, v0), v6); - sub_0205213C(v5, v6, 1); + FieldBattleDTO_AddPokemonToBattler(v5, v6, 1); } Heap_FreeToHeap(v6); @@ -221,7 +221,7 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104 switch (param0->unk_10) { case 2: case 3: - sub_02052894(v5); + FieldBattleDTO_CopyPlayerInfoToTrainerData(v5); v11 = CommInfo_TrainerInfo(1 - CommSys_CurNetId()); TrainerInfo_Copy(v11, v5->trainerInfo[2]); @@ -236,7 +236,7 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104 for (v0 = 0; v0 < v3; v0++) { Pokemon_Copy(Party_GetPokemonBySlotIndex(param0->unk_2C, (v3 + v0)), v6); - sub_0205213C(v5, v6, 3); + FieldBattleDTO_AddPokemonToBattler(v5, v6, 3); } Heap_FreeToHeap(v6); diff --git a/src/overlay104/ov104_0223BCBC.c b/src/overlay104/ov104_0223BCBC.c index ee8b4b712d..65f6bd3978 100644 --- a/src/overlay104/ov104_0223BCBC.c +++ b/src/overlay104/ov104_0223BCBC.c @@ -37,7 +37,7 @@ u16 ov104_0223C0BC(UnkStruct_ov104_0223BFFC *param0, u8 param1); static u16 ov104_0223C0D0(UnkStruct_ov104_0223BFFC *param0); u16 ov104_0223C124(UnkStruct_ov104_0223BFFC *param0); u8 ov104_0223C148(u8 param0); -void sub_02052894(FieldBattleDTO *param0); +void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *param0); static int ov104_0223BCBC(u8 param0, int param1, int param2); void ov104_0223BD28(u8 param0, int param1, u16 param2[], u8 param3); @@ -176,9 +176,9 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104 v2 = ov104_0223BD70(param0->unk_10, 0); v3 = ov104_0223BDA4(param0->unk_10, 0); - v5 = sub_02051D8C(11, ov104_0223BFD0(param0->unk_10)); + v5 = FieldBattleDTO_New(11, ov104_0223BFD0(param0->unk_10)); - sub_020521B8(v5, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20); + FieldBattleDTO_InitFromGameState(v5, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20); v5->background = 20; v5->terrain = TERRAIN_BATTLE_ARCADE; @@ -204,11 +204,11 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104 for (v0 = 0; v0 < v2; v0++) { Pokemon_Copy(Party_GetPokemonBySlotIndex(v12, (v4 + v0)), v6); - sub_0205213C(v5, v6, 0); + FieldBattleDTO_AddPokemonToBattler(v5, v6, 0); } Heap_FreeToHeap(v6); - sub_02052894(v5); + FieldBattleDTO_CopyPlayerInfoToTrainerData(v5); v8 = ov104_0222DD04(&v7, param0->unk_78[param0->unk_11], 11, 178); @@ -224,7 +224,7 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104 for (v0 = 0; v0 < v3; v0++) { Pokemon_Copy(Party_GetPokemonBySlotIndex(v13, v0), v6); - sub_0205213C(v5, v6, 1); + FieldBattleDTO_AddPokemonToBattler(v5, v6, 1); } Heap_FreeToHeap(v6); @@ -232,7 +232,7 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104 switch (param0->unk_10) { case 2: case 3: - sub_02052894(v5); + FieldBattleDTO_CopyPlayerInfoToTrainerData(v5); v11 = CommInfo_TrainerInfo(1 - CommSys_CurNetId()); TrainerInfo_Copy(v11, v5->trainerInfo[2]); @@ -247,7 +247,7 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104 for (v0 = 0; v0 < v3; v0++) { Pokemon_Copy(Party_GetPokemonBySlotIndex(v13, (v3 + v0)), v6); - sub_0205213C(v5, v6, 3); + FieldBattleDTO_AddPokemonToBattler(v5, v6, 3); } Heap_FreeToHeap(v6); diff --git a/src/player_avatar.c b/src/player_avatar.c index aba76bc02a..f85a39ef24 100644 --- a/src/player_avatar.c +++ b/src/player_avatar.c @@ -43,6 +43,9 @@ static void sub_0205EB9C(PlayerAvatar *playerAvatar, u32 param1); static void sub_0205EBA4(PlayerAvatar *playerAvatar, u32 param1); static u32 sub_0205EBB0(PlayerAvatar *playerAvatar, u32 param1); static void PlayerAvatar_SetPlayerData(PlayerAvatar *playerAvatar, PlayerData *param1); +static u32 GetPlayerForm(PlayerData *player); +static void SetPlayerForm(PlayerData *player, u32 form); +static void SetAvatarForm(PlayerAvatar *playerAvatar, u32 form); PlayerAvatar *PlayerAvatar_Init(const MapObjectManager *mapObjMan, int x, int z, int dir, int param4, int param5, int param6, PlayerData *param7) { @@ -73,7 +76,7 @@ PlayerAvatar *sub_0205E820(const MapObjectManager *mapObjMan, PlayerData *param1 MapObject *mapObj; playerAvatar = PlayerAvatar_Alloc(); - v0 = sub_0205EC94(param1); + v0 = GetPlayerForm(param1); sub_0205E91C(playerAvatar, v0, gender, param1); mapObj = sub_0205EA64(mapObjMan); @@ -293,12 +296,12 @@ const MapObject *PlayerAvatar_ConstMapObject(const PlayerAvatar *playerAvatar) return playerAvatar->mapObject; } -void PlayerAvatar_SetPlayerState(PlayerAvatar *playerAvatar, int param1) +void PlayerAvatar_SetPlayerState(PlayerAvatar *playerAvatar, int form) { - GF_ASSERT(param1 < 0x6); - playerAvatar->unk_1C = param1; + GF_ASSERT(form < 0x6); + playerAvatar->unk_1C = form; - sub_0205ECA8(playerAvatar, param1); + SetAvatarForm(playerAvatar, form); } int PlayerAvatar_GetPlayerState(PlayerAvatar *playerAvatar) @@ -450,7 +453,7 @@ void PlayerData_Init(PlayerData *playerData) { playerData->unk_00 = 0; playerData->runningShoes = FALSE; - playerData->unk_04 = 0x0; + playerData->form = 0x0; } int PlayerData_HasRunningShoes(PlayerData *playerData) @@ -501,26 +504,26 @@ int PlayerAvatar_CyclingGear(PlayerAvatar *playerAvatar) return PlayerData_CyclingGear(player); } -u32 sub_0205EC94(PlayerData *player) +u32 GetPlayerForm(PlayerData *player) { if (player != NULL) { - return player->unk_04; + return player->form; } return 0x0; } -void sub_0205ECA0(PlayerData *player, u32 param1) +void SetPlayerForm(PlayerData *player, u32 form) { if (player != NULL) { - player->unk_04 = param1; + player->form = form; } } -void sub_0205ECA8(PlayerAvatar *playerAvatar, u32 param1) +void SetAvatarForm(PlayerAvatar *playerAvatar, u32 form) { PlayerData *player = PlayerAvatar_PlayerData(playerAvatar); - sub_0205ECA0(player, param1); + SetPlayerForm(player, form); } void sub_0205ECB8(PlayerAvatar *playerAvatar, const VecFx32 *param1, int param2) diff --git a/src/pokeradar.c b/src/pokeradar.c index 3e5c95413c..b4e90ebfd1 100644 --- a/src/pokeradar.c +++ b/src/pokeradar.c @@ -307,7 +307,7 @@ static BOOL CheckTileIsGrass(FieldSystem *fieldSystem, const fx32 param1, const int v1 = (param3 - (9 / 2)) + param5; patch->unk_00 = v0; patch->unk_04 = v1; - u8 v2 = sub_02054F94(fieldSystem, v0, v1); + u8 v2 = FieldSystem_GetTileAttributes(fieldSystem, v0, v1); if (sub_0205DAC8(v2)) { u8 v3; diff --git a/src/scrcmd.c b/src/scrcmd.c index 7de1c5b365..ef3e38b7d1 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -6020,7 +6020,7 @@ static BOOL ScrCmd_1B5(ScriptContext *ctx) static BOOL ScrCmd_GetTimeOfDay(ScriptContext *ctx) { u16 *timeOfDay = ScriptContext_GetVarPointer(ctx); - *timeOfDay = sub_02055BA8(ctx->fieldSystem); + *timeOfDay = FieldSystem_GetTimeOfDay(ctx->fieldSystem); return FALSE; } diff --git a/src/unk_0202631C.c b/src/unk_0202631C.c index 5468a4f25c..699193005f 100644 --- a/src/unk_0202631C.c +++ b/src/unk_0202631C.c @@ -55,9 +55,9 @@ PokedexData *sub_02026324(u32 param0) return v0; } -void sub_02026338(const PokedexData *param0, PokedexData *param1) +void Pokedex_Copy(const PokedexData *src, PokedexData *dest) { - MI_CpuCopy8(param0, param1, sizeof(PokedexData)); + MI_CpuCopy8(src, dest, sizeof(PokedexData)); } static inline void CheckPokedexIntegrity(const PokedexData *param0) diff --git a/src/unk_0202F1D4.c b/src/unk_0202F1D4.c index e1efb2e904..bf1fd59234 100644 --- a/src/unk_0202F1D4.c +++ b/src/unk_0202F1D4.c @@ -561,7 +561,7 @@ void sub_0202FAFC(FieldBattleDTO *param0, SaveData *param1) param0->resultMask = BATTLE_IN_PROGRESS; param0->leveledUpMonsMask = 0; - sub_02026338(SaveData_Pokedex(param1), param0->pokedex); + Pokedex_Copy(SaveData_Pokedex(param1), param0->pokedex); for (v0 = 0; v0 < 4; v0++) { param0->trainerIDs[v0] = v1->unk_00.unk_08[v0]; diff --git a/src/unk_0203C954.c b/src/unk_0203C954.c index 70afcf3b65..3351b11d8b 100644 --- a/src/unk_0203C954.c +++ b/src/unk_0203C954.c @@ -61,7 +61,7 @@ void sub_0203C9D4(FieldSystem *fieldSystem, MapObject **param1) u8 v3; v2 = sub_0203C954(fieldSystem, &v0, &v1); - v3 = sub_02054F94(fieldSystem, v0, v1); + v3 = FieldSystem_GetTileAttributes(fieldSystem, v0, v1); if (sub_0205DAE0(v3) == 1) { switch (v2) { diff --git a/src/unk_0203D1B8.c b/src/unk_0203D1B8.c index f38da18d4c..e1619dac7c 100644 --- a/src/unk_0203D1B8.c +++ b/src/unk_0203D1B8.c @@ -1046,7 +1046,7 @@ BOOL sub_0203DBF0(FieldTask *param0) v2->unk_48.unk_14 = SaveData_Options(fieldSystem->saveData); v2->unk_48.unk_10 = 1; - switch (sub_02055BA8(fieldSystem)) { + switch (FieldSystem_GetTimeOfDay(fieldSystem)) { case 0: case 1: default: diff --git a/src/unk_02048614.c b/src/unk_02048614.c index 0ec39e1c98..41cc50cde6 100644 --- a/src/unk_02048614.c +++ b/src/unk_02048614.c @@ -266,7 +266,7 @@ BOOL ScrCmd_CheckWonBattle(ScriptContext *ctx) BOOL *battleResult = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT); u16 *destVar = ScriptContext_GetVarPointer(ctx); - *destVar = FieldBattleDTO_PlayerWon(*battleResult); + *destVar = CheckPlayerWonBattle(*battleResult); return TRUE; } @@ -275,7 +275,7 @@ BOOL ScrCmd_CheckLostBattle(ScriptContext *ctx) BOOL *battleResult = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT); u16 *destVar = ScriptContext_GetVarPointer(ctx); - *destVar = FieldBattleDTO_PlayerLost(*battleResult); + *destVar = CheckPlayerLostBattle(*battleResult); return TRUE; } @@ -284,7 +284,7 @@ BOOL ScrCmd_CheckDidNotCapture(ScriptContext *ctx) BOOL *battleResult = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT); u16 *destVar = ScriptContext_GetVarPointer(ctx); - *destVar = FieldBattleDTO_PlayerDidNotCapture(*battleResult); + *destVar = CheckPlayerDidNotCaptureWildMon(*battleResult); return TRUE; } diff --git a/src/unk_02054D00.c b/src/unk_02054D00.c index 441d78b8d9..0c3aec4d84 100644 --- a/src/unk_02054D00.c +++ b/src/unk_02054D00.c @@ -285,23 +285,18 @@ BOOL FieldSystem_CheckCollision(const FieldSystem *fieldSystem, const int param1 return 0; } -u8 sub_02054F94(const FieldSystem *fieldSystem, const int param1, const int param2) +u8 FieldSystem_GetTileAttributes(const FieldSystem *fieldSystem, const int x, const int z) { - BOOL v0; - u16 v1; + u16 metaAttributes; + BOOL hasAttributes = fieldSystem->terrainCollisionMan->getAttrFunc(fieldSystem, x, z, &metaAttributes); - v0 = fieldSystem->terrainCollisionMan->getAttrFunc(fieldSystem, param1, param2, &v1); - - if (v0) { - u8 v2; - - v2 = v1; - v2 &= 0xff; - - return v2; + if (hasAttributes) { + u8 attributes = metaAttributes; + attributes &= 0xFF; + return attributes; } - return 0xff; + return 0xFF; } const fx32 sub_02054FBC(const FieldSystem *fieldSystem, const fx32 param1, const fx32 param2, const fx32 param3, u8 *param4) @@ -365,7 +360,7 @@ BOOL sub_02055024(const FieldSystem *fieldSystem, const VecFx32 *param1, const i v2 = FieldSystem_CheckCollision(fieldSystem, param2, param3); if ((!v2) && (v1 == 2)) { - u8 v3 = sub_02054F94(fieldSystem, param2, param3); + u8 v3 = FieldSystem_GetTileAttributes(fieldSystem, param2, param3); if (sub_0205DC20(v3)) { return 1; @@ -399,7 +394,7 @@ BOOL sub_0205507C(FieldSystem *fieldSystem, const VecFx32 *param1, const int par v2 = FieldSystem_CheckCollision(fieldSystem, param2, param3); if ((!v2) && (v1 == 2)) { - u8 v4 = sub_02054F94(fieldSystem, param2, param3); + u8 v4 = FieldSystem_GetTileAttributes(fieldSystem, param2, param3); if (sub_0205DC20(v4)) { return 1; diff --git a/src/unk_020559DC.c b/src/unk_020559DC.c index 4975186df0..67e3ba8461 100644 --- a/src/unk_020559DC.c +++ b/src/unk_020559DC.c @@ -149,7 +149,7 @@ static void sub_02055B64(FieldSystem *fieldSystem, s32 param1, const RTCTime *pa } } -int sub_02055BA8(const FieldSystem *fieldSystem) +enum TimeOfDay FieldSystem_GetTimeOfDay(const FieldSystem *fieldSystem) { GameTime *v0 = SaveData_GetGameTime(fieldSystem->saveData); return TimeOfDayForHour(v0->time.hour); diff --git a/src/unk_020562F8.c b/src/unk_020562F8.c index c04b778eee..237bc56f8a 100644 --- a/src/unk_020562F8.c +++ b/src/unk_020562F8.c @@ -201,7 +201,7 @@ static BOOL sub_020564F4(UnkStruct_020564B4 *param0) static int sub_0205650C(FieldSystem *fieldSystem, int param1, int param2) { - u16 v0 = sub_02054F94(fieldSystem, param1, param2); + u16 v0 = FieldSystem_GetTileAttributes(fieldSystem, param1, param2); int v1; v1 = (param1 < 32) ? 0 : 1; @@ -279,11 +279,11 @@ static FieldBattleDTO *sub_0205664C(FieldSystem *fieldSystem, UnkStruct_020564B4 PalParkTransfer *v2 = SaveData_PalParkTransfer(fieldSystem->saveData); int v3 = sub_020563BC(fieldSystem); - v0 = sub_02051F38(11, v3); + v0 = FieldBattleDTO_NewPalPark(11, v3); - sub_02052314(v0, fieldSystem); + FieldBattleDTO_Init(v0, fieldSystem); sub_0202F000(v2, param1->unk_3C, v1); - sub_0205213C(v0, v1, 1); + FieldBattleDTO_AddPokemonToBattler(v0, v1, 1); Heap_FreeToHeap(v1); return v0; diff --git a/src/unk_02056B30.c b/src/unk_02056B30.c index 4da9537980..8cad8b7a3d 100644 --- a/src/unk_02056B30.c +++ b/src/unk_02056B30.c @@ -431,7 +431,7 @@ static BOOL sub_02057050(FieldTask *taskMan) u8 v4; MapObject *v5 = Player_MapObject(fieldSystem->playerAvatar); - v4 = sub_02054F94(fieldSystem, Player_GetXPos(fieldSystem->playerAvatar), Player_GetZPos(fieldSystem->playerAvatar)); + v4 = FieldSystem_GetTileAttributes(fieldSystem, Player_GetXPos(fieldSystem->playerAvatar), Player_GetZPos(fieldSystem->playerAvatar)); if (sub_0205DAEC(v4)) { MapObject_SetHidden(v5, 1); @@ -482,7 +482,7 @@ static BOOL sub_0205711C(FieldTask *taskMan) u8 v4; MapObject *v5 = Player_MapObject(fieldSystem->playerAvatar); - v4 = sub_02054F94(fieldSystem, Player_GetXPos(fieldSystem->playerAvatar), Player_GetZPos(fieldSystem->playerAvatar)); + v4 = FieldSystem_GetTileAttributes(fieldSystem, Player_GetXPos(fieldSystem->playerAvatar), Player_GetZPos(fieldSystem->playerAvatar)); if (sub_0205DAEC(v4)) { MapObject_SetHidden(v5, 1); @@ -634,7 +634,7 @@ static void sub_02057368(FieldSystem *fieldSystem) v0 = Player_GetXPos(fieldSystem->playerAvatar); v1 = Player_GetZPos(fieldSystem->playerAvatar); - v4 = sub_02054F94(fieldSystem, v0, v1); + v4 = FieldSystem_GetTileAttributes(fieldSystem, v0, v1); if (sub_0205DC44(v4)) { v3.x += (FX32_ONE * 16); diff --git a/src/unk_0205F180.c b/src/unk_0205F180.c index 656c2cd080..8ba6923ad7 100644 --- a/src/unk_0205F180.c +++ b/src/unk_0205F180.c @@ -1778,7 +1778,7 @@ static int sub_02060CE4(PlayerAvatar *playerAvatar, MapObject *mapObj, int param } { - u8 v3 = sub_02054F94(fieldSystem, v1, v2); + u8 v3 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2); switch (param2) { case 0: @@ -1816,7 +1816,7 @@ static int sub_02060D98(PlayerAvatar *playerAvatar, MapObject *mapObj, int param FieldSystem *fieldSystem = MapObject_FieldSystem(mapObj); int v2 = MapObject_GetXPos(mapObj) + MapObject_GetDxFromDir(param2); int v3 = MapObject_GetZPos(mapObj) + MapObject_GetDyFromDir(param2); - u8 v4 = sub_02054F94(fieldSystem, v2, v3); + u8 v4 = FieldSystem_GetTileAttributes(fieldSystem, v2, v3); switch (param2) { case 0: @@ -1851,7 +1851,7 @@ static int sub_02060E40(PlayerAvatar *playerAvatar, MapObject *mapObj, int param FieldSystem *fieldSystem = MapObject_FieldSystem(mapObj); int v1 = MapObject_GetXPos(mapObj); int v2 = MapObject_GetZPos(mapObj); - u8 v3 = sub_02054F94(fieldSystem, v1, v2); + u8 v3 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2); switch (param2) { case 0: @@ -1878,7 +1878,7 @@ static int sub_02060E40(PlayerAvatar *playerAvatar, MapObject *mapObj, int param v1 += MapObject_GetDxFromDir(param2); v2 += MapObject_GetDyFromDir(param2); - v3 = sub_02054F94(fieldSystem, v1, v2); + v3 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2); if (sub_0205DAEC(v3) == 1) { return 1; @@ -1894,7 +1894,7 @@ static int sub_02060EE4(PlayerAvatar *playerAvatar, MapObject *mapObj, int param FieldSystem *fieldSystem = MapObject_FieldSystem(mapObj); int v1 = MapObject_GetXPos(mapObj) + MapObject_GetDxFromDir(param2); int v2 = MapObject_GetZPos(mapObj) + MapObject_GetDyFromDir(param2); - u8 v3 = sub_02054F94(fieldSystem, v1, v2); + u8 v3 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2); if ((param2 == 3) && sub_0205DD90(v3)) { return 1; @@ -1914,7 +1914,7 @@ static int sub_02060F4C(PlayerAvatar *playerAvatar, MapObject *mapObj, int param FieldSystem *fieldSystem = MapObject_FieldSystem(mapObj); int v1 = MapObject_GetXPos(mapObj) + MapObject_GetDxFromDir(param2); int v2 = MapObject_GetZPos(mapObj) + MapObject_GetDyFromDir(param2); - u8 v3 = sub_02054F94(fieldSystem, v1, v2); + u8 v3 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2); if (sub_0206406C(mapObj, v3)) { return 1; @@ -1930,7 +1930,7 @@ static int sub_02060FA8(PlayerAvatar *playerAvatar, MapObject *mapObj, int param FieldSystem *fieldSystem = MapObject_FieldSystem(mapObj); int v1 = MapObject_GetXPos(mapObj) + MapObject_GetDxFromDir(param2); int v2 = MapObject_GetZPos(mapObj) + MapObject_GetDyFromDir(param2); - u8 v3 = sub_02054F94(fieldSystem, v1, v2); + u8 v3 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2); if (PlayerAvatar_GetPlayerState(playerAvatar) == PLAYER_STATE_CYCLING) { if (sub_0206415C(mapObj, v3) == 1) { @@ -1964,7 +1964,7 @@ static int sub_02061058(PlayerAvatar *playerAvatar, MapObject *mapObj, int param FieldSystem *fieldSystem = MapObject_FieldSystem(mapObj); int v1 = MapObject_GetXPos(mapObj) + MapObject_GetDxFromDir(param2); int v2 = MapObject_GetZPos(mapObj) + MapObject_GetDyFromDir(param2); - u8 v3 = sub_02054F94(fieldSystem, v1, v2); + u8 v3 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2); if (sub_0206406C(mapObj, v3)) { return 1; @@ -2468,7 +2468,7 @@ u32 sub_02061760(PlayerAvatar *playerAvatar) int z = MapObject_GetZPos(mapObj); if (PlayerAvatar_DistortionGravityChanged(playerAvatar) == FALSE) { - v0 = sub_02054F94(fieldSystem, x, z); + v0 = FieldSystem_GetTileAttributes(fieldSystem, x, z); } else { ov9_02251044(fieldSystem, x, y, z, &v0); } diff --git a/src/unk_020683F4.c b/src/unk_020683F4.c index 49896c1c27..34eefd23f9 100644 --- a/src/unk_020683F4.c +++ b/src/unk_020683F4.c @@ -222,7 +222,7 @@ void sub_0206842C(FieldSystem *fieldSystem, UnkStruct_020684D0 *param1) v0 = Player_GetXPos(fieldSystem->playerAvatar); v1 = Player_GetZPos(fieldSystem->playerAvatar); - param1->unk_0E = sub_02054F94(fieldSystem, v0, v1); + param1->unk_0E = FieldSystem_GetTileAttributes(fieldSystem, v0, v1); v2 = PlayerAvatar_GetDir(fieldSystem->playerAvatar); @@ -241,7 +241,7 @@ void sub_0206842C(FieldSystem *fieldSystem, UnkStruct_020684D0 *param1) break; } - param1->unk_0C = sub_02054F94(fieldSystem, v0, v1); + param1->unk_0C = FieldSystem_GetTileAttributes(fieldSystem, v0, v1); sub_0203C9D4(fieldSystem, &v3); param1->unk_10 = sub_02055FC8(fieldSystem, v3); diff --git a/src/unk_02070428.c b/src/unk_02070428.c index 876057db5b..cd443a2774 100644 --- a/src/unk_02070428.c +++ b/src/unk_02070428.c @@ -14,6 +14,7 @@ #include "journal.h" #include "location.h" #include "map_header.h" +#include "player_avatar.h" #include "roaming_pokemon.h" #include "save_player.h" #include "system_flags.h" @@ -89,10 +90,10 @@ void FieldSystem_InitFlagsWarp(FieldSystem *fieldSystem) { PlayerData *v2 = FieldOverworldState_GetPlayerData(SaveData_GetFieldOverworldState(fieldSystem->saveData)); - if ((v2->unk_04 == 0x1) && (MapHeader_IsBikeAllowed(fieldSystem->location->mapId) == 0)) { - v2->unk_04 = 0x0; - } else if (v2->unk_04 == 0x2) { - v2->unk_04 = 0x0; + if ((v2->form == PLAYER_AVATAR_BIKING) && (MapHeader_IsBikeAllowed(fieldSystem->location->mapId) == 0)) { + v2->form = PLAYER_AVATAR_WALKING; + } else if (v2->form == PLAYER_AVATAR_SURFING) { + v2->form = PLAYER_AVATAR_WALKING; } } diff --git a/src/unk_0207070C.c b/src/unk_0207070C.c index e26b34d04e..a1ff1cdfd4 100644 --- a/src/unk_0207070C.c +++ b/src/unk_0207070C.c @@ -198,10 +198,10 @@ void sub_02070728(FieldSystem *fieldSystem, UnkStruct_02070950 *param1) v1 = Player_GetXPos(fieldSystem->playerAvatar); v2 = Player_GetZPos(fieldSystem->playerAvatar); - v4 = sub_02054F94(fieldSystem, v1, v2); + v4 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2); sub_020615AC(fieldSystem->playerAvatar, &v1, &v2); - v3 = sub_02054F94(fieldSystem, v1, v2); + v3 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2); if (ov5_021E0118(fieldSystem->playerAvatar, v4, v3)) { param1->unk_0C |= (1 << 2); diff --git a/src/unk_0208BA78.c b/src/unk_0208BA78.c index 743ed9133f..5e277bd158 100644 --- a/src/unk_0208BA78.c +++ b/src/unk_0208BA78.c @@ -256,7 +256,7 @@ static BOOL sub_0208BC8C(UnkStruct_0208BC3C *param0, int param1) case 1: { int v0; - param0->unk_10 = sub_02051D8C(param1, 0x0); + param0->unk_10 = FieldBattleDTO_New(param1, 0x0); if (sub_0202F250() == 0) { sub_0202F298(param0->saveData, param1, &v0, param0->unk_10, param0->unk_14->unk_86C); @@ -277,7 +277,7 @@ static BOOL sub_0208BC8C(UnkStruct_0208BC3C *param0, int param1) if (v0 != 1) { Heap_FreeToHeap(param0->unk_10->bagCursor); - sub_020520A4(param0->unk_10); + FieldBattleDTO_Free(param0->unk_10); param0->unk_00 = 0; return 1; } else { @@ -311,7 +311,7 @@ static BOOL sub_0208BC8C(UnkStruct_0208BC3C *param0, int param1) } Heap_FreeToHeap(param0->unk_10->bagCursor); - sub_020520A4(param0->unk_10); + FieldBattleDTO_Free(param0->unk_10); OverlayManager_Free(param0->unk_08); {