Merge commit 'f2cf20ce9bdf4a9f6cd0300a005ca3ec6ae89e3c' into pret-merge

Conflicts:
	INSTALL.md
	include/battle.h
	include/save.h
	src/wild_encounter.c
This commit is contained in:
Hedara 2025-11-01 14:51:14 +01:00
commit 8c4d1269a0
21 changed files with 58 additions and 50 deletions

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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));

View File

@ -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;

View File

@ -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.

View File

@ -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)

View File

@ -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;

View File

@ -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;
};

View File

@ -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;

View File

@ -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)

View File

@ -336,7 +336,7 @@ static void CB2_ReturnToTitleScreen(void)
}
else
{
SetMainCallback2((MainCallback)gGameContinueCallback);
SetMainCallback2(gGameContinueCallback);
gGameContinueCallback = NULL;
}
}

View File

@ -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));
}
}

View File

@ -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];

View File

@ -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;

View File

@ -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"