diff --git a/include/battle.h b/include/battle.h index ba3752717a..15b37d62c8 100644 --- a/include/battle.h +++ b/include/battle.h @@ -13,6 +13,7 @@ #include "battle_util2.h" #include "battle_bg.h" #include "pokeball.h" +#include "main.h" #include "battle_debug.h" #include "battle_dynamax.h" #include "battle_terastal.h" @@ -1118,7 +1119,7 @@ extern u16 gBattleTurnCounter; extern u8 gBattlerAbility; extern struct QueuedStatBoost gQueuedStatBoosts[MAX_BATTLERS_COUNT]; -extern void (*gPreBattleCallback1)(void); +extern MainCallback gPreBattleCallback1; extern void (*gBattleMainFunc)(void); extern struct BattleResults gBattleResults; extern u8 gLeveledUpInBattle; diff --git a/include/battle_pyramid_bag.h b/include/battle_pyramid_bag.h index 258ca56b21..0caf8d302c 100644 --- a/include/battle_pyramid_bag.h +++ b/include/battle_pyramid_bag.h @@ -2,6 +2,7 @@ #define GUARD_BATTLE_PYRAMID_BAG_H #include "list_menu.h" +#include "main.h" enum { PYRAMIDBAG_LOC_FIELD, @@ -29,7 +30,7 @@ enum { struct PyramidBagMenu { - void (*newScreenCallback)(void); + MainCallback newScreenCallback; u8 tilemapBuffer[BG_SCREEN_SIZE]; u8 spriteIds[PBAG_SPRITE_COUNT]; u8 windowIds[5]; @@ -49,7 +50,7 @@ struct PyramidBagMenu struct PyramidBagMenuState { - void (*exitCallback)(void); + MainCallback exitCallback; u8 location; u16 cursorPosition; u16 scrollPosition; @@ -63,7 +64,7 @@ void CB2_PyramidBagMenuFromStartMenu(void); void CB2_ReturnToPyramidBagMenu(void); void UpdatePyramidBagList(void); void UpdatePyramidBagCursorPos(void); -void GoToBattlePyramidBagMenu(u8 location, void (*exitCallback)(void)); +void GoToBattlePyramidBagMenu(u8 location, MainCallback exitCallback); void Task_CloseBattlePyramidBagMessage(u8 taskId); void TryStoreHeldItemsInPyramidBag(void); void ChooseItemsToTossFromPyramidBag(void); diff --git a/include/dodrio_berry_picking.h b/include/dodrio_berry_picking.h index a93fb27cd1..ec62e51947 100644 --- a/include/dodrio_berry_picking.h +++ b/include/dodrio_berry_picking.h @@ -1,7 +1,9 @@ #ifndef GUARD_DODRIO_BERRY_PICKING_H #define GUARD_DODRIO_BERRY_PICKING_H -void StartDodrioBerryPicking(u16 partyId, void (*exitCallback)(void)); +#include "main.h" + +void StartDodrioBerryPicking(u16 partyId, MainCallback exitCallback); void IsDodrioInParty(void); void ShowDodrioBerryPickingRecords(void); diff --git a/include/item_menu.h b/include/item_menu.h index 64d9f7628e..70245f1faa 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -2,6 +2,7 @@ #define GUARD_ITEM_MENU_H #include "item.h" +#include "main.h" #include "menu_helpers.h" enum { @@ -57,7 +58,7 @@ enum { struct BagPosition { - void (*exitCallback)(void); + MainCallback exitCallback; u8 location; u8 pocket; u16 pocketSwitchArrowPos; @@ -69,7 +70,7 @@ extern struct BagPosition gBagPosition; struct BagMenu { - void (*newScreenCallback)(void); + MainCallback newScreenCallback; u8 tilemapBuffer[BG_SCREEN_SIZE]; u8 spriteIds[ITEMMENUSPRITE_COUNT]; u8 windowIds[ITEMWIN_COUNT]; @@ -106,10 +107,10 @@ void CB2_BagMenuFromStartMenu(void); u8 GetItemListPosition(u8 pocketId); bool8 UseRegisteredKeyItemOnField(void); void CB2_GoToSellMenu(void); -void GoToBagMenu(u8 location, u8 pocket, void ( *exitCallback)()); +void GoToBagMenu(u8 location, u8 pocket, MainCallback exitCallback); void DoWallyTutorialBagMenu(void); void ResetBagScrollPositions(void); -void ChooseBerryForMachine(void (*exitCallback)(void)); +void ChooseBerryForMachine(MainCallback exitCallback); void CB2_ChooseBerry(void); void CB2_ChooseMulch(void); void Task_FadeAndCloseBagMenu(u8 taskId); diff --git a/include/mail.h b/include/mail.h index 403078f097..de29b21d42 100644 --- a/include/mail.h +++ b/include/mail.h @@ -1,6 +1,8 @@ #ifndef GUARD_MAIL_H #define GUARD_MAIL_H +#include "main.h" + #define IS_ITEM_MAIL(itemId) ((itemId == ITEM_ORANGE_MAIL \ || itemId == ITEM_HARBOR_MAIL \ || itemId == ITEM_GLITTER_MAIL \ @@ -15,7 +17,7 @@ || itemId == ITEM_RETRO_MAIL)) // mail.h -void ReadMail(struct Mail *mail, void (*exitCallback)(void), bool8 hasText); +void ReadMail(struct Mail *mail, MainCallback exitCallback, bool8 hasText); // mail_data.h void ClearAllMail(void); diff --git a/include/rayquaza_scene.h b/include/rayquaza_scene.h index 422b591273..6a51b9a45f 100644 --- a/include/rayquaza_scene.h +++ b/include/rayquaza_scene.h @@ -1,6 +1,8 @@ #ifndef GUARD_RAYQUAZA_SCENE_H #define GUARD_RAYQUAZA_SCENE_H -void DoRayquazaScene(u8 animId, bool8 endEarly, void (*exitCallback)(void)); +#include "main.h" + +void DoRayquazaScene(u8 animId, bool8 endEarly, MainCallback exitCallback); #endif // GUARD_RAYQUAZA_SCENE_H diff --git a/include/save.h b/include/save.h index aef84c3158..1bc4c02404 100644 --- a/include/save.h +++ b/include/save.h @@ -1,6 +1,8 @@ #ifndef GUARD_SAVE_H #define GUARD_SAVE_H +#include "main.h" + // Each 4 KiB flash sector contains 3968 bytes of actual data followed by 116 bytes of SaveBlock3 and then 12 bytes of footer. #define SECTOR_DATA_SIZE 3968 #define SAVE_BLOCK_3_CHUNK_SIZE 116 @@ -87,7 +89,7 @@ extern u32 gSaveCounter; extern struct SaveSector *gFastSaveSector; extern u16 gIncrementalSectorId; extern u16 gSaveFileStatus; -extern void (*gGameContinueCallback)(void); +extern MainCallback gGameContinueCallback; extern struct SaveSectorLocation gRamSaveSectorLocations[]; extern struct SaveSector gSaveDataBuffer; diff --git a/src/battle_main.c b/src/battle_main.c index cb41e88c73..ad5ccac4ba 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -244,7 +244,7 @@ EWRAM_DATA u8 gPartyCriticalHits[PARTY_SIZE] = {0}; EWRAM_DATA static u8 sTriedEvolving = 0; EWRAM_DATA u8 gCategoryIconSpriteId = 0; -COMMON_DATA void (*gPreBattleCallback1)(void) = NULL; +COMMON_DATA MainCallback gPreBattleCallback1 = NULL; COMMON_DATA void (*gBattleMainFunc)(void) = NULL; COMMON_DATA struct BattleResults gBattleResults = {0}; COMMON_DATA u8 gLeveledUpInBattle = 0; diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c index 4a5d1c3a4e..b5ce9620cc 100644 --- a/src/battle_pyramid_bag.c +++ b/src/battle_pyramid_bag.c @@ -16,7 +16,6 @@ #include "item_use.h" #include "list_menu.h" #include "mail.h" -#include "main.h" #include "malloc.h" #include "menu.h" #include "menu_helpers.h" @@ -414,7 +413,7 @@ void CB2_ReturnToPyramidBagMenu(void) GoToBattlePyramidBagMenu(PYRAMIDBAG_LOC_PREV, gPyramidBagMenuState.exitCallback); } -void GoToBattlePyramidBagMenu(u8 location, void (*exitCallback)(void)) +void GoToBattlePyramidBagMenu(u8 location, MainCallback exitCallback) { gPyramidBagMenu = AllocZeroed(sizeof(*gPyramidBagMenu)); diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c index 2593719022..f4b339d417 100644 --- a/src/dodrio_berry_picking.c +++ b/src/dodrio_berry_picking.c @@ -11,7 +11,6 @@ #include "link.h" #include "link_rfu.h" #include "m4a.h" -#include "main.h" #include "palette.h" #include "minigame_countdown.h" #include "random.h" @@ -224,7 +223,7 @@ struct DodrioGame_ScoreResults struct DodrioGame { - /*0x0000*/ void (*exitCallback)(void); + /*0x0000*/ MainCallback exitCallback; /*0x0004*/ u8 ALIGNED(4) taskId; /*0x0008*/ u8 ALIGNED(4) playersReceived; /*0x000C*/ u8 ALIGNED(4) startState; @@ -662,7 +661,7 @@ static void (*const sMemberFuncs[])(void) = [FUNC_WAIT_END_GAME] = WaitEndGame_Member }; -void StartDodrioBerryPicking(u16 partyId, void (*exitCallback)(void)) +void StartDodrioBerryPicking(u16 partyId, MainCallback exitCallback) { sExitingGame = FALSE; diff --git a/src/frontier_pass.c b/src/frontier_pass.c index 90699506d4..ac8df01c2a 100644 --- a/src/frontier_pass.c +++ b/src/frontier_pass.c @@ -106,7 +106,7 @@ enum { struct FrontierPassData { - void (*callback)(void); + MainCallback callback; u16 state; u16 battlePoints; s16 cursorX; @@ -137,14 +137,14 @@ struct FrontierPassGfx struct FrontierPassSaved { - void (*callback)(void); + MainCallback callback; s16 cursorX; s16 cursorY; }; struct FrontierMapData { - void (*callback)(void); + MainCallback callback; struct Sprite *cursorSprite; struct Sprite *playerHeadSprite; struct Sprite *mapIndicatorSprite; @@ -160,8 +160,8 @@ static EWRAM_DATA struct FrontierPassGfx *sPassGfx = NULL; static EWRAM_DATA struct FrontierMapData *sMapData = NULL; static EWRAM_DATA struct FrontierPassSaved sSavedPassData = {0}; -static u32 AllocateFrontierPassData(void (*callback)(void)); -static void ShowFrontierMap(void (*callback)(void)); +static u32 AllocateFrontierPassData(MainCallback callback); +static void ShowFrontierMap(MainCallback callback); static void CB2_InitFrontierPass(void); static void DrawFrontierPassBg(void); static void FreeCursorAndSymbolSprites(void); @@ -604,7 +604,7 @@ static void LeaveFrontierPass(void) FreeFrontierPassData(); } -static u32 AllocateFrontierPassData(void (*callback)(void)) +static u32 AllocateFrontierPassData(MainCallback callback) { u8 i; @@ -1363,7 +1363,7 @@ static void PrintOnFrontierMap(void); static void InitFrontierMapSprites(void); static void HandleFrontierMapCursorMove(u8 direction); -static void ShowFrontierMap(void (*callback)(void)) +static void ShowFrontierMap(MainCallback callback) { if (sMapData != NULL) SetMainCallback2(callback); // This line doesn't make sense at all, since it gets overwritten later anyway. diff --git a/src/item_menu.c b/src/item_menu.c index e0954c0587..bda30a95c1 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -24,7 +24,6 @@ #include "list_menu.h" #include "link.h" #include "mail.h" -#include "main.h" #include "malloc.h" #include "map_name_popup.h" #include "menu.h" @@ -614,7 +613,7 @@ void CB2_ChooseMulch(void) } // Choosing berry for Berry Blender or Berry Crush -void ChooseBerryForMachine(void (*exitCallback)(void)) +void ChooseBerryForMachine(MainCallback exitCallback) { GoToBagMenu(ITEMMENULOCATION_BERRY_BLENDER_CRUSH, POCKET_BERRIES, exitCallback); } @@ -648,7 +647,7 @@ void QuizLadyOpenBagMenu(void) gSpecialVar_Result = FALSE; } -void GoToBagMenu(u8 location, u8 pocket, void ( *exitCallback)()) +void GoToBagMenu(u8 location, u8 pocket, MainCallback exitCallback) { gBagMenu = AllocZeroed(sizeof(*gBagMenu)); if (gBagMenu == NULL) diff --git a/src/mail.c b/src/mail.c index 34d1520ef4..67accf3031 100644 --- a/src/mail.c +++ b/src/mail.c @@ -1,7 +1,6 @@ #include "global.h" #include "mail.h" #include "constants/items.h" -#include "main.h" #include "overworld.h" #include "task.h" #include "scanline_effect.h" @@ -443,7 +442,7 @@ static const struct MailLayout sMailLayouts_Tall[] = { }, }; -void ReadMail(struct Mail *mail, void (*exitCallback)(void), bool8 hasText) +void ReadMail(struct Mail *mail, MainCallback exitCallback, bool8 hasText) { u16 buffer[2]; u16 species; diff --git a/src/pokeblock.c b/src/pokeblock.c index 2e6aaf5ccd..d26a271f9c 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -62,7 +62,7 @@ enum { struct PokeblockMenuStruct { u8 tilemap[BG_SCREEN_SIZE]; - void (*callbackOnUse)(void); + MainCallback callbackOnUse; const u8 *pokeblockActionIds; u8 numActions; u8 caseId; @@ -80,7 +80,7 @@ struct PokeblockMenuStruct struct PokeblockSavedData { - void (*callback)(void); + MainCallback callback; u16 selectedRow; u16 scrollOffset; }; diff --git a/src/rayquaza_scene.c b/src/rayquaza_scene.c index 5440ad802d..62060128fa 100644 --- a/src/rayquaza_scene.c +++ b/src/rayquaza_scene.c @@ -5,7 +5,6 @@ #include "task.h" #include "graphics.h" #include "bg.h" -#include "main.h" #include "malloc.h" #include "palette.h" #include "scanline_effect.h" @@ -1287,7 +1286,7 @@ static const struct BgTemplate sBgTemplates_ChasesAway[] = } }; -void DoRayquazaScene(u8 animId, bool8 endEarly, void (*exitCallback)(void)) +void DoRayquazaScene(u8 animId, bool8 endEarly, MainCallback exitCallback) { sRayScene = AllocZeroed(sizeof(*sRayScene)); sRayScene->animId = animId; diff --git a/src/save.c b/src/save.c index 4e6c41b6f9..5d17cea210 100644 --- a/src/save.c +++ b/src/save.c @@ -9,7 +9,6 @@ #include "overworld.h" #include "hall_of_fame.h" #include "pokemon_storage_system.h" -#include "main.h" #include "trainer_hill.h" #include "link.h" #include "constants/game_stat.h" @@ -92,7 +91,7 @@ COMMON_DATA struct SaveSector *gReadWriteSector = NULL; // Pointer to a buffer f COMMON_DATA u16 gIncrementalSectorId = 0; COMMON_DATA u16 gSaveUnusedVar = 0; COMMON_DATA u16 gSaveFileStatus = 0; -COMMON_DATA void (*gGameContinueCallback)(void) = NULL; +COMMON_DATA MainCallback gGameContinueCallback = NULL; COMMON_DATA struct SaveSectorLocation gRamSaveSectorLocations[NUM_SECTORS_PER_SLOT] = {0}; COMMON_DATA u16 gSaveUnusedVar2 = 0; COMMON_DATA u16 gSaveAttemptStatus = 0; @@ -897,7 +896,7 @@ u8 LoadGameSave(u8 saveType) status = TryLoadSaveSlot(FULL_SAVE_SLOT, gRamSaveSectorLocations); CopyPartyAndObjectsFromSave(); gSaveFileStatus = status; - gGameContinueCallback = 0; + gGameContinueCallback = NULL; break; case SAVE_HALL_OF_FAME: if (gHoFSaveBuffer != NULL) diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c index d4ce636357..8ce47d3f3f 100644 --- a/src/save_failed_screen.c +++ b/src/save_failed_screen.c @@ -336,7 +336,7 @@ static void CB2_ReturnToTitleScreen(void) } else { - SetMainCallback2((MainCallback)gGameContinueCallback); + SetMainCallback2(gGameContinueCallback); gGameContinueCallback = NULL; } } diff --git a/src/shop.c b/src/shop.c index 6eaa0ba01a..e983213963 100644 --- a/src/shop.c +++ b/src/shop.c @@ -458,7 +458,7 @@ static void Task_GoToBuyOrSellMenu(u8 taskId) if (!gPaletteFade.active) { DestroyTask(taskId); - SetMainCallback2((void *)((u16)tCallbackHi << 16 | (u16)tCallbackLo)); + SetMainCallback2((MainCallback)((u16)tCallbackHi << 16 | (u16)tCallbackLo)); } } diff --git a/src/trainer_card.c b/src/trainer_card.c index d385898f44..e03b34daad 100755 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -78,7 +78,7 @@ struct TrainerCardData u8 cardType; bool8 isHoenn; u16 blendColor; - void (*callback2)(void); + MainCallback callback2; struct TrainerCard trainerCard; u16 frontTilemap[600]; u16 backTilemap[600]; diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 27e5639a54..db4541a7f1 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -50,7 +50,7 @@ enum { struct UsePokeblockSession { void (*callback)(void); - void (*exitCallback)(void); + MainCallback exitCallback; struct Pokeblock *pokeblock; struct Pokemon *mon; u8 stringBuffer[64]; @@ -162,7 +162,7 @@ extern const u16 gConditionText_Pal[]; // The below 3 are saved for returning to the screen after feeding a pokeblock to a mon // so that the rest of the data can be freed static EWRAM_DATA struct UsePokeblockSession *sInfo = NULL; -static EWRAM_DATA void (*sExitCallback)(void) = NULL; +static EWRAM_DATA MainCallback sExitCallback = NULL; static EWRAM_DATA struct Pokeblock *sPokeblock = NULL; EWRAM_DATA u8 gPokeblockMonId = 0; EWRAM_DATA s16 gPokeblockGain = 0; diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 0ace7499a4..5d8e22c11b 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -1,20 +1,23 @@ #include "global.h" -#include "wild_encounter.h" -#include "pokemon.h" -#include "metatile_behavior.h" +#include "battle_setup.h" +#include "battle_pike.h" +#include "battle_pyramid.h" +#include "event_data.h" #include "fieldmap.h" #include "follower_npc.h" #include "random.h" #include "field_player_avatar.h" -#include "event_data.h" -#include "safari_zone.h" +#include "link.h" +#include "metatile_behavior.h" #include "overworld.h" #include "pokeblock.h" -#include "battle_setup.h" +#include "pokemon.h" +#include "random.h" #include "roamer.h" -#include "tv.h" -#include "link.h" +#include "safari_zone.h" #include "script.h" +#include "tv.h" +#include "wild_encounter.h" #include "battle_debug.h" #include "battle_pike.h" #include "battle_pyramid.h"