From 930ca358de1d8e4e7a26e83808122eff2d69c6db Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 24 Aug 2025 12:51:49 -0700 Subject: [PATCH] extern cleanup of ground_map --- include/ground_bg.h | 8 ++ include/ground_map.h | 10 ++ include/ground_map_1.h | 30 ++++- include/ground_map_2.h | 30 ----- include/ground_script_file.h | 9 ++ ld_script.ld | 2 +- src/debug_field_map.c | 2 +- src/ground_bg.c | 1 - src/ground_main.c | 11 +- src/ground_map.c | 73 +++++------ src/ground_map_1.c | 221 ++++++++++++++++++++++++++++++++- src/ground_map_2.c | 229 ----------------------------------- src/ground_script_file.c | 3 +- src/ground_sprite.c | 2 +- sym_iwram_init.txt | 2 +- 15 files changed, 312 insertions(+), 321 deletions(-) delete mode 100644 include/ground_map_2.h create mode 100644 include/ground_script_file.h delete mode 100644 src/ground_map_2.c diff --git a/include/ground_bg.h b/include/ground_bg.h index b02b89c99..757b7ad1b 100644 --- a/include/ground_bg.h +++ b/include/ground_bg.h @@ -6,12 +6,20 @@ void GroundBg_Init(GroundBg *groundBg, const SubStruct_52C *a1); void GroundBg_FreeAll(GroundBg *groundBg); +void sub_80A2D68(GroundBg *groundBg); +void sub_80A2D88(GroundBg *groundBg); void sub_80A2FBC(GroundBg *groundBg, s32 mapFileId_); void sub_80A3440(GroundBg *groundBg, s32 mapFileId_, const DungeonLocation *dungLoc, s32 a3); void sub_80A3B80(GroundBg *groundBg, u8 a1, u8 a2); void sub_80A3BB0(GroundBg *groundBg, s32 a0_); void sub_80A4558(GroundBg *groundBg, s32 id, PixelPos *dstPos); +void sub_80A456C(GroundBg *groundBg, s32 id, const PixelPos *srcPos); +void sub_80A4580(GroundBg *groundBg, s32 id, PixelPos *pixPos); void sub_80A4608(GroundBg *groundBg, PixelPos *dstPos); +u16 sub_80A4720(GroundBg *groundBg, s32 id, PixelPos *pixPos); +void sub_80A4740(GroundBg *groundBg, s32 id, PixelPos *pixPos, u32 dstVal); +void sub_80A4764(GroundBg *groundBg); +void sub_80A49E8(GroundBg *groundBg); void GetDungeonBounds(GroundBg *groundBg, PixelPos *dstPos1, PixelPos *dstPos2); #endif // GUARD_GROUND_BG_H diff --git a/include/ground_map.h b/include/ground_map.h index 5ad9b20ae..2f9df06a1 100644 --- a/include/ground_map.h +++ b/include/ground_map.h @@ -1,12 +1,22 @@ #ifndef GUARD_GROUND_MAP_H #define GUARD_GROUND_MAP_H +#include "structs/str_position.h" + void GroundMap_Reset(void); void AllocGroundMapAction(void); void FreeGroundMapAction(void); void sub_80A4B38(void); void sub_80A4B54(void); +void sub_80A56C0(PixelPos *pos); s16 GetAdjustedGroundMap(s32 mapId); s16 GetGroundMapID(void); +void GroundMap_ExecuteEnter(s16); +void GroundMap_ExecuteEvent(s16 scriptIndex, u32); +void GroundMap_ExecuteStation(s32 _map, s32 _group, s32 _sector, bool32 _setScriptState); +bool8 GroundMapNotifyAll(s16); +bool8 sub_80A4D48(s16 index); +void GroundMap_Action(void); + #endif // GUARD_GROUND_MAP_H diff --git a/include/ground_map_1.h b/include/ground_map_1.h index 1b3a1f3df..c725b3a82 100644 --- a/include/ground_map_1.h +++ b/include/ground_map_1.h @@ -1,11 +1,31 @@ #ifndef GUARD_GROUND_MAP_1_H #define GUARD_GROUND_MAP_1_H -void GroundMap_ExecuteEnter(s16); -void GroundMap_ExecuteEvent(s16 scriptIndex, u32); -void GroundMap_ExecuteStation(s32 _map, s32 _group, s32 _sector, bool32 _setScriptState); +// size: 0x24 +#include "structs/str_position.h" -bool8 GroundMapNotifyAll(s16); -bool8 sub_80A4D48(s16 index); +typedef struct unkStruct_3001B74 +{ + s16 unk0; + u8 unk2; + s32 unk4; + s32 unk8; + PixelPos unkC; + u32 unk14; + u32 unk18; + u32 unk1C; + u32 unk20; +} unkStruct_3001B74; + +void GroundWeather_Select(s16); +void nullsub_121(void); +void nullsub_122(void); +void nullsub_123(void); + +void sub_80A5E70(void); +void sub_80A5E8C(u8); +void sub_80A5EBC(void); +void sub_80A5EDC(u8); +void sub_80A60D8(void); #endif // GUARD_GROUND_MAP_1_H diff --git a/include/ground_map_2.h b/include/ground_map_2.h deleted file mode 100644 index 1015be5d1..000000000 --- a/include/ground_map_2.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef GUARD_GROUND_MAP_2_H -#define GUARD_GROUND_MAP_2_H - -// size: 0x24 -typedef struct unkStruct_3001B74 -{ - s16 unk0; - u8 unk2; - s32 unk4; - s32 unk8; - s32 unkC; - s32 unk10; - u32 unk14; - u32 unk18; - u32 unk1C; - u32 unk20; -} unkStruct_3001B74; - -void GroundWeather_Select(s16); -void nullsub_121(void); -void nullsub_122(void); -void nullsub_123(void); - -void sub_80A5E70(void); -void sub_80A5E8C(u8); -void sub_80A5EBC(void); -void sub_80A5EDC(u8); -void sub_80A60D8(void); - -#endif // GUARD_GROUND_MAP_2_H diff --git a/include/ground_script_file.h b/include/ground_script_file.h new file mode 100644 index 000000000..d3ff12d99 --- /dev/null +++ b/include/ground_script_file.h @@ -0,0 +1,9 @@ +#ifndef INCLUDE_GROUND_SCRIPT_FILE_H +#define INCLUDE_GROUND_SCRIPT_FILE_H + +void sub_80A7744(void); +void sub_80A7754(void); +bool8 ChangeScriptFile(s16 a0); +const struct GroundScriptHeader *GetGroundScript(s16 mapId, const DebugLocation *unused); + +#endif /* INCLUDE_GROUND_SCRIPT_FILE_H */ diff --git a/ld_script.ld b/ld_script.ld index 76e068f3e..43a8034e3 100755 --- a/ld_script.ld +++ b/ld_script.ld @@ -346,7 +346,7 @@ SECTIONS { src/ground_place.o(.text); src/ground_bg.o(.text); src/ground_map.o(.text); - src/ground_map_2.o(.text); + src/ground_map_1.o(.text); src/ground_sprite.o(.text); src/ground_sprite_data.o(.text); src/ground_sprite_monster.o(.text); diff --git a/src/debug_field_map.c b/src/debug_field_map.c index 0cc0fe887..a21e8f643 100644 --- a/src/debug_field_map.c +++ b/src/debug_field_map.c @@ -10,7 +10,7 @@ #include "text_2.h" #include "text_3.h" #include "ground_map.h" -#include "ground_map_2.h" +#include "ground_map_1.h" #include "palette_util.h" #include "string_format.h" #include "sprite.h" diff --git a/src/ground_bg.c b/src/ground_bg.c index 263cec9f1..e8b1bac5c 100644 --- a/src/ground_bg.c +++ b/src/ground_bg.c @@ -18,7 +18,6 @@ extern const FileArchive gGroundFileArchive; -void sub_80A456C(GroundBg *groundBg, s32 id, const PixelPos *srcPos); static void CloseOpenedFiles(GroundBg *groundBg); static void sub_80A3EB0(SubStruct_488 *map488); static const u8 *sub_80A3908(u16 **dstArray, const void *src_, SubStruct_52C *a2, SubStruct_448 *a3); diff --git a/src/ground_main.c b/src/ground_main.c index ad8863f45..8fe0f3c0f 100644 --- a/src/ground_main.c +++ b/src/ground_main.c @@ -13,12 +13,14 @@ #include "debug.h" #include "event_flag.h" #include "ground_main.h" -#include "ground_map_2.h" +#include "ground_map.h" +#include "ground_map_1.h" #include "play_time.h" #include "pokemon.h" #include "text_util.h" #include "ground_map_conversion_table.h" #include "ground_lives_helper.h" +#include "ground_script_file.h" #include "script_item.h" #include "unk_ds_only_feature.h" #include "textbox.h" @@ -68,24 +70,20 @@ extern bool8 sub_809AFAC(void); extern bool8 sub_80048BC(void); extern u8 sub_80023E4(u32); extern bool8 sub_8099B94(void); -extern void FreeGroundMapAction(void); extern void FreeGroundLives(void); extern void FreeGroundObjects(void); extern void FreeGroundEffects(void); extern void FreeGroundEvents(void); extern void sub_80A658C(void); extern void sub_809D508(void); -extern void sub_80A7754(void); extern void nullsub_119(void); extern void sub_8099768(void); extern void nullsub_103(void); extern void sub_8099648(void); extern void sub_809975C(void); extern void sub_809D0AC(void); -extern void sub_80A7744(void); extern void sub_809D490(void); extern void sub_80A62F0(void); -extern void AllocGroundMapAction(void); extern void AllocGroundEvents(void); extern void AllocGroundLives(void); extern void AllocGroundObjects(void); @@ -109,7 +107,6 @@ extern void sub_80A5E70(void); extern void sub_809B638(void); extern void sub_80A73EC(void); extern void sub_8099750(void); -extern void GroundMap_Reset(void); extern void sub_809D0BC(void); extern void DeleteGroundEvents(void); extern void DeleteGroundLives(void); @@ -121,9 +118,7 @@ extern void xxx_call_update_bg_sound_input(void); extern void sub_80A6E68(void); extern void sub_80060EC(void); extern void sub_809977C(void); -extern void GroundMap_ExecuteEvent(s32, u32); extern void UpdateFadeInTile(s32); -extern void GroundMap_Action(void); extern void sub_8098C58(void); extern void sub_8001D88(void); extern u32 GroundMainGameCancelRequest(u32 r0); diff --git a/src/ground_map.c b/src/ground_map.c index 90baf8d4f..d8d4009f5 100644 --- a/src/ground_map.c +++ b/src/ground_map.c @@ -4,8 +4,9 @@ #include "ground_bg.h" #include "ground_main.h" #include "ground_map.h" -#include "ground_map_2.h" +#include "ground_map_1.h" #include "ground_script.h" +#include "ground_script_file.h" #include "memory.h" #include "ground_map_conversion_table.h" #include "code_800558C.h" @@ -17,6 +18,16 @@ IWRAM_INIT GroundBg *gGroundMapDungeon_3001B70 = {NULL}; extern const SubStruct_52C gUnknown_8117324; extern const SubStruct_52C gUnknown_811733C; extern const SubStruct_52C gUnknown_8117354; + +struct MapToDungeonStruct +{ + s16 id; + DungeonLocation loc; + u32 unk8; +}; + +extern const struct MapToDungeonStruct gUnknown_81173C0[]; + extern const DebugLocation gUnknown_8117538[]; extern const DebugLocation gUnknown_8117560; extern const u8 gUnknown_811756C[]; @@ -27,27 +38,31 @@ extern const DebugLocation gUnknown_8117644; extern const u8 gUnknown_8117650[]; extern const DebugLocation gUnknown_8117698; extern const u8 gUnknown_81176A4[]; +extern const DebugLocation gUnknown_81176D0; +extern const u8 gUnknown_81176DC[]; +extern const PixelPos gUnknown_81176F8; extern const u8 gUnknown_8117700[]; +extern const DebugLocation gUnknown_8117734; +extern const u8 gUnknown_8117740[]; +extern const PixelPos gUnknown_8117754; extern const DebugLocation gUnknown_8117770; -bool8 ChangeScriptFile(s32 a0); -const struct GroundScriptHeader *GetGroundScript(s32 a0, const DebugLocation *); - - -extern u8 sub_809D678(void *); -extern bool8 GroundScriptNotify(void *, s32); - extern const CallbackData gGroundScriptNullCallbacks; -extern void sub_80A2D68(GroundBg *); -extern void sub_80A2D88(GroundBg *); -extern s16 HandleAction(Action *action, const DebugLocation *debug); -extern void sub_80A4740(void *, s32, s32 *, u32); -extern u32 sub_80A4720(void *, s32, s32 *); +extern u8 sub_809D248(PixelPos *r0); + +extern bool8 sub_809D678(Action *); +extern bool8 GroundScriptNotify(Action*, s32); + extern u8 sub_80A46C0(GroundBg *, u32, s32, s32); extern u8 sub_80A4660(GroundBg *, u32, s32, s32); +extern s16 HandleAction(Action *action, const DebugLocation *debug); + +void GroundMap_SelectDungeon(s32 mapId, const DungeonLocation *loc, u32 param_2); +void sub_80A56D8(const PixelPos*); + void AllocGroundMapAction(void) { gGroundMapAction = MemoryAlloc(sizeof(GroundMapAction), 6); @@ -175,7 +190,7 @@ void GroundMap_ExecuteEnter(s16 param_1) GroundScript_ExecutePP(&gGroundMapAction->action, 0, &script, &gUnknown_8117698); } -UNUSED static u8 sub_80A4D14(void) +UNUSED static bool8 sub_80A4D14(void) { return sub_809D678(&gGroundMapAction->action); } @@ -213,24 +228,6 @@ s16 GetAdjustedGroundMap(s32 mapId) return retMapId; } -struct MapToDungeonStruct -{ - s16 id; - DungeonLocation loc; - u32 unk8; -}; - -extern const struct MapToDungeonStruct gUnknown_81173C0[]; -extern const u8 gUnknown_81176DC[]; -extern const u8 gUnknown_8117740[]; -extern const DebugLocation gUnknown_81176D0; -extern const DebugLocation gUnknown_8117734; -extern const PixelPos gUnknown_81176F8; -extern const PixelPos gUnknown_8117754; - -void GroundMap_SelectDungeon(s32 mapId, const DungeonLocation *loc, u32 param_2); -void sub_80A56D8(const PixelPos*); - void GroundMap_Select(s32 mapId_) { const GroundConversionStruct *ptr; @@ -1063,8 +1060,6 @@ void sub_80A56C0(PixelPos *pos) sub_80A4558(gGroundMapDungeon_3001B70, 0, pos); } -void sub_80A456C(GroundBg *groundBg, s32 id, const PixelPos *srcPos); - void sub_80A56D8(const PixelPos *pos) { sub_80A456C(gGroundMapDungeon_3001B70, 0, pos); @@ -1092,7 +1087,7 @@ UNUSED static const GroundConversionStruct *GetGroundConversionStruct(void) return &gGroundMapConversionTable[gGroundMapAction->groundMapId]; } -bool8 sub_80A5758(PixelPos *pos) +UNUSED static bool8 sub_80A5758(PixelPos *pos) { if(gGroundMapDungeon_3001B70 != NULL) { @@ -1214,12 +1209,12 @@ u8 sub_80A595C(s32 param_1, s32 param_2, s32 param_3) return sub_80A46C0(gGroundMapDungeon_3001B70, param_1_u32, param_2, param_3); } -u16 sub_80A5984(s32 param_1, s32 *param_2) +u16 sub_80A5984(s32 param_1, PixelPos *param_2) { return sub_80A4720(gGroundMapDungeon_3001B70, param_1, param_2); } -void sub_80A59A0(s32 param_1, s32 *param_2, u32 param_3) +void sub_80A59A0(s32 param_1, PixelPos *param_2, u32 param_3) { u32 param_3_u32 = (u16)param_3; sub_80A4740(gGroundMapDungeon_3001B70, param_1, param_2, param_3_u32); @@ -1231,10 +1226,6 @@ void GroundMap_Action(void) HandleAction((Action *)gGroundMapAction, &gUnknown_8117770); } -extern u8 sub_809D248(PixelPos *r0); -extern void sub_80A4580(GroundBg *, u32, PixelPos *); -extern void sub_80A4764(GroundBg *); - void sub_80A59DC(void) { if (gGroundMapDungeon_3001B70 != NULL) { diff --git a/src/ground_map_1.c b/src/ground_map_1.c index 247479de9..f8e0747f6 100644 --- a/src/ground_map_1.c +++ b/src/ground_map_1.c @@ -1,6 +1,223 @@ #include "global.h" +#include "code_800558C.h" +#include "debug.h" +#include "event_flag.h" #include "ground_bg.h" #include "ground_map.h" -#include "ground_map_2.h" -#include "ground_script.h" +#include "ground_map_1.h" +#include "memory.h" +IWRAM_INIT unkStruct_3001B74 *gUnknown_3001B74 = {NULL}; +IWRAM_INIT GroundBg *gUnknown_3001B78 = {NULL}; + +extern const SubStruct_52C gUnknown_8117784; +extern const s16 gUnknown_811E5F4[][2]; +extern const u8 gGroundWeatherSelect[]; +extern const PixelPos gUnknown_81177BC; + +static void sub_80A62D0(void); + +void sub_80A5E70(void) +{ + if (gGroundMapDungeon_3001B70 != NULL) + sub_80A49E8(gGroundMapDungeon_3001B70); + + sub_80A62D0(); +} + +void sub_80A5E8C(u8 param_1) +{ + gUnknown_3001B74 = MemoryAlloc(sizeof(unkStruct_3001B74), 6); + gUnknown_3001B74->unk0 = -1; + gUnknown_3001B74->unk2 = 0; + sub_80A5EDC(param_1); +} + +void sub_80A5EBC(void) +{ + sub_80A5EDC(0); + MemoryFree(gUnknown_3001B74); + gUnknown_3001B74 = NULL; +} + +void sub_80A5EDC(u8 param_1) +{ + SetScriptVarValue(NULL, WEATHER_KIND, -1); + gUnknown_3001B74->unk0 = -1; + gUnknown_3001B74->unk2 = param_1; + + if (gUnknown_3001B78 != NULL) { + GroundBg_FreeAll(gUnknown_3001B78); + MemoryFree(gUnknown_3001B78); + gUnknown_3001B78 = NULL; + } + + if (param_1) { + gUnknown_3001B78 = MemoryAlloc(sizeof(GroundBg), 6); + GroundBg_Init(gUnknown_3001B78, &gUnknown_8117784); + sub_80A2FBC(gUnknown_3001B78, -1); + } +} + +void nullsub_121(void) +{} + +void nullsub_122(void) +{} + +void GroundWeather_Select(s16 param_1) +{ + s32 iVar2; + s32 iVar3; + const s16 *pVar1; + + iVar2 = param_1; + iVar3 = iVar2; + Log(0, gGroundWeatherSelect, iVar2, gUnknown_3001B74->unk2); + SetScriptVarValue(NULL, WEATHER_KIND, iVar2); + gUnknown_3001B74->unk0 = iVar2; + + if (gUnknown_3001B74->unk2 == 0) + return; + + if (iVar2 == -1) { + sub_80A2FBC(gUnknown_3001B78, -1); + return; + } + + pVar1 = gUnknown_811E5F4[iVar3]; + sub_80A2FBC(gUnknown_3001B78, pVar1[1]); + + gUnknown_3001B74->unk4 = 0; + gUnknown_3001B74->unk8 = 0; + gUnknown_3001B74->unkC.x = 0; + gUnknown_3001B74->unkC.y = 0; + gUnknown_3001B74->unk20 = 0; + gUnknown_3001B74->unk1C = 0; + gUnknown_3001B74->unk18 = 0; + gUnknown_3001B74->unk14 = 0; + + switch (gUnknown_3001B74->unk0) { + case 9: + sub_80A3BB0(gUnknown_3001B78, 1); + gUnknown_2026E4E = 0x40c; + break; + case 7: + gUnknown_2026E4E = 0x808; + break; + case 14: + sub_80A3BB0(gUnknown_3001B78, 1); + gUnknown_2026E4E = 0x1010; + break; + case 15: + sub_80A3BB0(gUnknown_3001B78, 1); + gUnknown_2026E4E = 0x40c; + break; + case 0: + case 3: + case 4: + case 5: + case 8: + gUnknown_2026E4E = 0x1010; + break; + default: + if (pVar1[0] == 1) + sub_80A3BB0(gUnknown_3001B78, 1); + + gUnknown_2026E4E = 0x1000; + break; + } +} + +UNUSED static s16 sub_80A60C4(void) +{ + return gUnknown_3001B74->unk0; +} + +void nullsub_123(void) +{} + +void sub_80A60D8(void) +{ + if (gUnknown_3001B74->unk2 == 0) + return; + + switch ((s16)(gUnknown_3001B74->unk0 + 1)) { + case 10: { + PixelPos localArray; + + gUnknown_3001B74->unk4 += 2; + gUnknown_3001B74->unk8 += 1; + gUnknown_3001B74->unkC.x += gUnknown_3001B74->unk4 / 4; + gUnknown_3001B74->unkC.y += gUnknown_3001B74->unk8 / 4; + sub_80A4580(gUnknown_3001B78, 0, &gUnknown_3001B74->unkC); + gUnknown_3001B74->unk4 &= 3; + gUnknown_3001B74->unk8 &= 3; + sub_80A56C0(&localArray); + localArray.x -= gUnknown_3001B74->unkC.x; + localArray.y += gUnknown_3001B74->unkC.y; + sub_80A4580(gUnknown_3001B78, 0, &localArray); + sub_80A456C(gUnknown_3001B78, 0, &localArray); + break; + } + case 11: + case 12: + case 13: + case 14: { + PixelPos localArray; + + sub_80A56C0(&localArray); + sub_80A456C(gUnknown_3001B78,0,&localArray); + break; + } + case 15: { + PixelPos localArray; + + gUnknown_3001B74->unk4++; + gUnknown_3001B74->unkC.x += gUnknown_3001B74->unk4 / 4; + sub_80A4580(gUnknown_3001B78, 0, &gUnknown_3001B74->unkC); + gUnknown_3001B74->unk4 &= 3; + sub_80A56C0(&localArray); + localArray.x -= gUnknown_3001B74->unkC.x; + localArray.y = 0; + sub_80A4580(gUnknown_3001B78, 0, &localArray); + sub_80A456C(gUnknown_3001B78, 0, &localArray); + break; + } + case 16: { + PixelPos localArray; + + gUnknown_3001B74->unk4 += 2; + gUnknown_3001B74->unkC.x += gUnknown_3001B74->unk4 / 4; + sub_80A4580(gUnknown_3001B78, 0, &gUnknown_3001B74->unkC); + gUnknown_3001B74->unk4 &= 3; + sub_80A56C0(&localArray); + localArray.x -= gUnknown_3001B74->unkC.x; + localArray.y = 0; + sub_80A4580(gUnknown_3001B78, 0, &localArray); + sub_80A456C(gUnknown_3001B78, 0, &localArray); + break; + } + default: { + PixelPos localArray; + const s16 *puVar1 = gUnknown_811E5F4[gUnknown_3001B74->unk0]; + if (puVar1[0] == 0) { + sub_80A56C0(&localArray); + sub_80A456C(gUnknown_3001B78,0,&localArray); + break; + } + } + // NOTE: Fallthrough needed here. + case 0: + sub_80A456C(gUnknown_3001B78, 0, &gUnknown_81177BC); + break; + } + + sub_80A4764(gUnknown_3001B78); +} + +static void sub_80A62D0(void) +{ + if (gUnknown_3001B74->unk2 != 0) + sub_80A49E8(gUnknown_3001B78); +} diff --git a/src/ground_map_2.c b/src/ground_map_2.c deleted file mode 100644 index 049ae0016..000000000 --- a/src/ground_map_2.c +++ /dev/null @@ -1,229 +0,0 @@ -#include "global.h" -#include "code_800558C.h" -#include "debug.h" -#include "event_flag.h" -#include "ground_bg.h" -#include "ground_map.h" -#include "ground_map_2.h" -#include "memory.h" - -IWRAM_INIT unkStruct_3001B74 *gUnknown_3001B74 = {NULL}; -IWRAM_INIT GroundBg *gUnknown_3001B78 = {NULL}; - -extern const SubStruct_52C gUnknown_8117784; -extern const s16 gUnknown_811E5F4[][2]; -extern const u8 gGroundWeatherSelect[]; -extern const s32 gUnknown_81177BC[]; - -extern void sub_80A49E8(GroundBg *); -extern void sub_80A456C(GroundBg *, u32, const s32 *); -extern void sub_80A4580(GroundBg *, u32, s32 *); -extern void sub_80A56C0(s32 *); -extern void sub_80A4764(GroundBg *); - -static void sub_80A62D0(void); - -void sub_80A5E70(void) -{ - if (gGroundMapDungeon_3001B70 != NULL) - sub_80A49E8(gGroundMapDungeon_3001B70); - - sub_80A62D0(); -} - -void sub_80A5E8C(u8 param_1) -{ - gUnknown_3001B74 = MemoryAlloc(sizeof(unkStruct_3001B74), 6); - gUnknown_3001B74->unk0 = -1; - gUnknown_3001B74->unk2 = 0; - sub_80A5EDC(param_1); -} - -void sub_80A5EBC(void) -{ - sub_80A5EDC(0); - MemoryFree(gUnknown_3001B74); - gUnknown_3001B74 = NULL; -} - -void sub_80A5EDC(u8 param_1) -{ - SetScriptVarValue(NULL, WEATHER_KIND, -1); - gUnknown_3001B74->unk0 = -1; - gUnknown_3001B74->unk2 = param_1; - - if (gUnknown_3001B78 != NULL) { - GroundBg_FreeAll(gUnknown_3001B78); - MemoryFree(gUnknown_3001B78); - gUnknown_3001B78 = NULL; - } - - if (param_1) { - gUnknown_3001B78 = MemoryAlloc(sizeof(GroundBg), 6); - GroundBg_Init(gUnknown_3001B78, &gUnknown_8117784); - sub_80A2FBC(gUnknown_3001B78, -1); - } -} - -void nullsub_121(void) -{} - -void nullsub_122(void) -{} - -void GroundWeather_Select(s16 param_1) -{ - s32 iVar2; - s32 iVar3; - const s16 *pVar1; - - iVar2 = param_1; - iVar3 = iVar2; - Log(0, gGroundWeatherSelect, iVar2, gUnknown_3001B74->unk2); - SetScriptVarValue(NULL, WEATHER_KIND, iVar2); - gUnknown_3001B74->unk0 = iVar2; - - if (gUnknown_3001B74->unk2 == 0) - return; - - if (iVar2 == -1) { - sub_80A2FBC(gUnknown_3001B78, -1); - return; - } - - pVar1 = gUnknown_811E5F4[iVar3]; - sub_80A2FBC(gUnknown_3001B78, pVar1[1]); - - gUnknown_3001B74->unk4 = 0; - gUnknown_3001B74->unk8 = 0; - gUnknown_3001B74->unkC = 0; - gUnknown_3001B74->unk10 = 0; - gUnknown_3001B74->unk20 = 0; - gUnknown_3001B74->unk1C = 0; - gUnknown_3001B74->unk18 = 0; - gUnknown_3001B74->unk14 = 0; - - switch (gUnknown_3001B74->unk0) { - case 9: - sub_80A3BB0(gUnknown_3001B78, 1); - gUnknown_2026E4E = 0x40c; - break; - case 7: - gUnknown_2026E4E = 0x808; - break; - case 14: - sub_80A3BB0(gUnknown_3001B78, 1); - gUnknown_2026E4E = 0x1010; - break; - case 15: - sub_80A3BB0(gUnknown_3001B78, 1); - gUnknown_2026E4E = 0x40c; - break; - case 0: - case 3: - case 4: - case 5: - case 8: - gUnknown_2026E4E = 0x1010; - break; - default: - if (pVar1[0] == 1) - sub_80A3BB0(gUnknown_3001B78, 1); - - gUnknown_2026E4E = 0x1000; - break; - } -} - -UNUSED static s16 sub_80A60C4(void) -{ - return gUnknown_3001B74->unk0; -} - -void nullsub_123(void) -{} - -void sub_80A60D8(void) -{ - if (gUnknown_3001B74->unk2 == 0) - return; - - switch ((s16)(gUnknown_3001B74->unk0 + 1)) { - case 10: { - s32 localArray[2]; - - gUnknown_3001B74->unk4 += 2; - gUnknown_3001B74->unk8 += 1; - gUnknown_3001B74->unkC += gUnknown_3001B74->unk4 / 4; - gUnknown_3001B74->unk10 += gUnknown_3001B74->unk8 / 4; - sub_80A4580(gUnknown_3001B78, 0, &gUnknown_3001B74->unkC); - gUnknown_3001B74->unk4 &= 3; - gUnknown_3001B74->unk8 &= 3; - sub_80A56C0(localArray); - localArray[0] -= gUnknown_3001B74->unkC; - localArray[1] += gUnknown_3001B74->unk10; - sub_80A4580(gUnknown_3001B78, 0, localArray); - sub_80A456C(gUnknown_3001B78, 0, localArray); - break; - } - case 11: - case 12: - case 13: - case 14: { - s32 localArray[2]; - - sub_80A56C0(localArray); - sub_80A456C(gUnknown_3001B78,0,localArray); - break; - } - case 15: { - s32 localArray[2]; - - gUnknown_3001B74->unk4++; - gUnknown_3001B74->unkC += gUnknown_3001B74->unk4 / 4; - sub_80A4580(gUnknown_3001B78, 0, &gUnknown_3001B74->unkC); - gUnknown_3001B74->unk4 &= 3; - sub_80A56C0(localArray); - localArray[0] -= gUnknown_3001B74->unkC; - localArray[1] = 0; - sub_80A4580(gUnknown_3001B78, 0, localArray); - sub_80A456C(gUnknown_3001B78, 0, localArray); - break; - } - case 16: { - s32 localArray[2]; - - gUnknown_3001B74->unk4 += 2; - gUnknown_3001B74->unkC += gUnknown_3001B74->unk4 / 4; - sub_80A4580(gUnknown_3001B78, 0, &gUnknown_3001B74->unkC); - gUnknown_3001B74->unk4 &= 3; - sub_80A56C0(localArray); - localArray[0] -= gUnknown_3001B74->unkC; - localArray[1] = 0; - sub_80A4580(gUnknown_3001B78, 0, localArray); - sub_80A456C(gUnknown_3001B78, 0, localArray); - break; - } - default: { - s32 localArray[2]; - const s16 *puVar1 = gUnknown_811E5F4[gUnknown_3001B74->unk0]; - if (puVar1[0] == 0) { - sub_80A56C0(localArray); - sub_80A456C(gUnknown_3001B78,0,localArray); - break; - } - } - // NOTE: Fallthrough needed here. - case 0: - sub_80A456C(gUnknown_3001B78, 0, gUnknown_81177BC); - break; - } - - sub_80A4764(gUnknown_3001B78); -} - -static void sub_80A62D0(void) -{ - if (gUnknown_3001B74->unk2 != 0) - sub_80A49E8(gUnknown_3001B78); -} diff --git a/src/ground_script_file.c b/src/ground_script_file.c index 069b27c67..e8d9830e5 100644 --- a/src/ground_script_file.c +++ b/src/ground_script_file.c @@ -1,5 +1,6 @@ #include "global.h" #include "globaldata.h" +#include "debug.h" #include "map_script_table.h" static EWRAM_DATA s16 sScriptFileId = {0}; @@ -50,7 +51,7 @@ bool8 ChangeScriptFile(s16 a0) static const struct GroundScriptHeader sNullGroundScript = {0}; -const struct GroundScriptHeader *GetGroundScript(s16 mapId) +const struct GroundScriptHeader *GetGroundScript(s16 mapId, const DebugLocation *unused) { if (mapId != -1) return gMapScriptTable[mapId]; diff --git a/src/ground_sprite.c b/src/ground_sprite.c index 1202a583c..265ede12c 100644 --- a/src/ground_sprite.c +++ b/src/ground_sprite.c @@ -5,7 +5,7 @@ #include "debug.h" #include "def_filearchives.h" #include "file_system.h" -#include "ground_map_1.h" +#include "ground_map.h" #include "ground_sprite.h" #include "ground_sprite_data.h" #include "memory.h" diff --git a/sym_iwram_init.txt b/sym_iwram_init.txt index a3f8f371f..fad124f42 100644 --- a/sym_iwram_init.txt +++ b/sym_iwram_init.txt @@ -6,7 +6,7 @@ .include "src/textbox.o" .include "src/unk_ds_only_feature.o" .include "src/ground_map.o" -.include "src/ground_map_2.o" +.include "src/ground_map_1.o" .include "src/ground_sprite.o" .include "src/ground_lives.o" .include "src/ground_object.o"