From 3b5e01f3b64eae4d29c5ec64e142c538f0a11ab2 Mon Sep 17 00:00:00 2001 From: Adrienn Tindall <33725376+adrienntindall@users.noreply.github.com> Date: Wed, 24 May 2023 20:39:25 -0500 Subject: [PATCH 01/12] Fix lack of declarations in battle_command, field_black_out, rock_smash_items --- include/battle_command.h | 242 +++++++++++++++++++++++++++++++ include/battle_system.h | 2 + include/overlay_12_0224E4FC.h | 18 +++ src/battle_command.c | 7 +- src/field_black_out.c | 1 + src/overlay_01_rock_smash_item.c | 1 + 6 files changed, 268 insertions(+), 3 deletions(-) create mode 100644 include/battle_command.h diff --git a/include/battle_command.h b/include/battle_command.h new file mode 100644 index 0000000000..30e0a5cc5b --- /dev/null +++ b/include/battle_command.h @@ -0,0 +1,242 @@ +#ifndef POKEHEARTGOLD_BATTLE_COMMAND_H +#define POKEHEARTGOLD_BATTLE_COMMAND_H + +#include "battle.h" +#include "battle_system.h" + +//Realistically these should all be static in battle_command.c, but there's an array in battle_command_data.s that needs these functions so we have to keep them public until that can be decompiled, and at the same time we don't want the compiler to allow for functions without declarations, hence the existance of this header file + +BOOL RunBattleScript(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PlayEncounterAnimation(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PokemonEncounter(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PokemonSlideIn(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PokemonSendOut(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_RecallPokemon(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_DeletePokemon(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TrainerEncounter(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_ThrowPokeball(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TrainerSlideOut(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TrainerSlideIn(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_BackgroundSlideIn(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_HealthbarSlideIn(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_HealthbarSlideInDelay(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_HealthbarSlideOut(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_WaitForMessage(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_DamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_DamageCalcRaw(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PrintAttackMessage(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PrintMessage(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PrintMessage2(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PrintBufferedMessage(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_BufferMessage(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_BufferMessageSide(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PlayMoveAnimation(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PlayMoveAnimation2(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_MonFlicker(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_HealthbarDataUpdate(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_HealthbarUpdate(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryFaintMon(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PlayFaintAnimation(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_Wait(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PlaySE(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_If(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_IfMonStat(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_FadeOutBattle(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_JumpToSubSeq(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_JumpToCurMoveEffectScript(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_JumpToEffectScript(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CritCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_ShouldGetExp(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_InitGetExp(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_GetExp(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_GetExpLoop(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_ShowParty(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_WaitForMonSelection(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_SwitchInDataUpdate(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_JumpIfCantSwitch(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_InitGetPokemon(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_GetPokemon(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_SetMultiHit(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_ChangeVar(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_BufferStatChangeMsg(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_ChangeMonDataVar(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_53(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_ToggleVanish(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckAbility(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_Random(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_ChangeVar2(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_ChangeMonDataByVar(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_Goto(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_GotoSubscript(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_GotoSubscriptVar(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_SetMoveToMirrorMove(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_ResetAllStatChanges(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_64(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_65(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_SetHealthbarStatus(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PrintTrainerMessage(BattleSystem *bsys, BATTLECONTEXT *ctx); +u32 CalcPrizeMoney(BattleSystem *bsys, BATTLECONTEXT *ctx, int trainerIndex); +BOOL BtlCmd_CalcPrizeMoney(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_SetStatus2Effect(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CopyStatus2Effect(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_SetStatus2EffectVar(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_ReturnMessage(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_SendOutMessage(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_EncounterMessage(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_FirstSendOutMessage(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TrainerMessageVar(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryConversion(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_Compare(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_IfMonStatVar(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PayDay(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryLightScreen(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryReflect(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryMist(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryOHKO(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_SetDamageDivide(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_SetDamageDivideVar(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryMimic(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_Metronome(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryDisable(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_Counter(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_MirrorCoat(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryEncore(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryConversion2(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TrySketch(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TrySleepTalk(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_FlailDamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TrySpite(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_HealBell(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryThief(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryProtect(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TrySubstitute(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryWhirlwind(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_Transform(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TrySpikes(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckSpikes(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryPerishSong(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_SetTurnOrderBySpeed(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_JumpIfValidBattlerVar(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_WeatherDamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_RolloutDamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_FuryCutterDamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryAttract(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TrySafeguard(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_Present(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_MagnitudeDamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TrySwitchMon(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_RapidSpin(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_ChangeWeatherBasedHPRecovery(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_HiddenPowerDamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PsychUp(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryFutureSight(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckHitRate(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryTeleport(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_BeatUpDamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_FollowMe(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryHelpingHand(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryTrick(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryWish(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryAssist(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TrySetMagicCoat(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_MagicCoat(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_RevengeDamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryBreakScreens(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryYawn(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryKnockOff(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_EruptionDamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryImprison(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryGrudge(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TrySnatch(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_LowKickDamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_WeatherBallDamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryPursuit(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TypeEffectivenessCheck(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PokemonEncounter44(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PokemonEncounter45(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_GyroBallDamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_MetalBurstDamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PaybackDamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TrumpCardDamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_WringOutDamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryMeFirst(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryCopycat(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PunishmentDamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TrySuckerPunch(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckSideCondition(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryFeint(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryPyschoShift(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryLastResort(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryToxicSpikes(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckToxicSpikes(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckMoldBreaker(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckTeammates(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_Pickup(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TrickRoom(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckMoveFinished(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckItemEffect(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_GetItemEffect(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_GetItemHoldEffect(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryCamouflage(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_NaturePower(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_SecretPower(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryNaturalGift(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryPluck(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryFling(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_YesNoBox(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_YesNoBoxWait(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_MonList(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_MonListWait(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_SetBattleResults(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckStealthRock(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckEffectActivation(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckChatterActivation(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_GetMoveParam(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_Mosaic(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_ChangeForme(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_SetBattleBackground(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_RecoverStatus(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryRun(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_InitStartBallGauge(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_DeleteStartBallGauge(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_InitBallGauge(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_DeleteBallGauge(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_LoadBallGfx(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_DeleteBallGfx(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_IncrementGameStat(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_196(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckAbilityEffectOnHit(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_198(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_199(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckWhiteout(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryAcupressure(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_RemoveItem(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryRecycle(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckItemEffectOnHit(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_BattleResultMessage(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_RunAwayMessage(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_ForefitMessage(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckHoldOnWith1HP(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_TryNaturalCure(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckSubstitute(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckCloudNine(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_211(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckItemEffectOnUTurn(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_SwapToSubstituteSprite(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PlayMoveSE(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_PlaySong(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckSafariEncounterDone(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_WaitWithoutInterrupt(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_CheckCurMoveIsType(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_GetMonDataFromNarc(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_RefreshMonData(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_222(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_223(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL BtlCmd_EndScript(BattleSystem *bsys, BATTLECONTEXT *ctx); +int BattleScriptReadWord(BATTLECONTEXT *ctx); +void InitBattleMsgData(BATTLECONTEXT *ctx, BATTLEMSGDATA *msgdata); +void InitBattleMsg(BattleSystem *bsys, BATTLECONTEXT *ctx, BATTLEMSGDATA *msgdata, BATTLEMSG *msg); +void UpdateFrienshipFainted(BattleSystem *bsys, BATTLECONTEXT *ctx, int battlerId); +int GetMoveMessageNo(BATTLECONTEXT *ctx, int move); + +#endif diff --git a/include/battle_system.h b/include/battle_system.h index 12eb36e4e5..8ffee0c80b 100644 --- a/include/battle_system.h +++ b/include/battle_system.h @@ -23,5 +23,7 @@ SOUND_CHATOT *BattleSys_GetChatotVoice(BattleSystem *bsys, int battlerId); int BattleSys_GetChatotVoiceParam(BattleSystem *bsys, int battlerId); int BattleSys_GetBattlerIdPartner(BattleSystem *bsys, int battlerId); int BattleSys_GetTrainerIndex(BattleSystem *bsys, int battlerId); +BOOL Link_QueueNotEmpty(BATTLECONTEXT *ctx); +BOOL BattleSys_AreBattleAnimationsOn(BattleSystem *bsys); #endif \ No newline at end of file diff --git a/include/overlay_12_0224E4FC.h b/include/overlay_12_0224E4FC.h index 08d3e8c6d2..5a2743ad73 100644 --- a/include/overlay_12_0224E4FC.h +++ b/include/overlay_12_0224E4FC.h @@ -3,6 +3,8 @@ #include "battle.h" +void ov12_0224E4FC(BattleSystem *bsys, BATTLECONTEXT *ctx, int battlerId, u8 monIndex); +void ov12_02256F78(BattleSystem *bsys, BATTLECONTEXT *ctx, int battlerId, u8 monIndex); void Link_CheckTimeout(BATTLECONTEXT *ctx); int GetBattlerVar(BATTLECONTEXT *ctx, int battlerId, u32 varId, int a3); void SetBattlerVar(BATTLECONTEXT *ctx, int battlerId, u32 varId, int *data); @@ -54,5 +56,21 @@ BOOL CheckItemEffectOnUTurn(BattleSystem *bsys, BATTLECONTEXT *ctx, int *work); BOOL ov12_0224EC74(BATTLECONTEXT *ctx); void ReadBattleScriptFromNarc(BATTLECONTEXT *ctx, int a1, int adrs); void ov12_0224EBDC(BATTLECONTEXT *ctx, int a1, int adrs); +void ov12_02250A18(BattleSystem *bsys, BATTLECONTEXT *ctx, int battlerId, u16 a3); +u32 BattleSys_GetBattleType(BattleSystem *bsys); +u32 BattleSys_GetBattleFlags(BattleSystem *bsys); +u32 ov12_02257C5C(BattleSystem *bsys, BATTLECONTEXT *ctx, int battlerIdAttacker, int battlerIdTarget, int critCnt, u32 a5); +u32 ov12_022581D4(BattleSystem *bsys, BATTLECONTEXT *ctx, u32 a2, int battlerId); +u32 GetItemHoldEffect(BATTLECONTEXT *ctx, int item, u32 a3); +u32 ov12_0223C24C(PARTY *party, u32 *a1); +BOOL CheckStatusEffectsSubstitute(BATTLECONTEXT *ctx, int battlerId, u32 status); +u32 StruggleCheck(BattleSystem *bsys, BATTLECONTEXT *ctx, int battlerId, u32 nonSelectableMoves, u32 a4); +BOOL ov12_02252700(BattleSystem *bsys, BATTLECONTEXT *ctx, int battlerId); +BOOL WhirlwindCheck(BattleSystem *bsys, BATTLECONTEXT *ctx); +BOOL ov12_0225275C(BATTLECONTEXT *ctx, int battlerId); +int ov12_0223AB0C(BattleSystem *bsys, int battlerId); +int ov12_02251D28(BattleSystem *bsys, BATTLECONTEXT *ctx, int moveNo, int moveType, int battlerIdAttacker, int battlerIdTarget, int dmg, u32 *statusFlag); +BOOL ov12_02252C40(BATTLECONTEXT *ctx, int battlerId); +void ov12_02252D14(BattleSystem *bsys, BATTLECONTEXT *ctx); #endif diff --git a/src/battle_command.c b/src/battle_command.c index 67166c1a29..a9c341327b 100644 --- a/src/battle_command.c +++ b/src/battle_command.c @@ -1,13 +1,14 @@ #include "assert.h" -#include "battle.h" #include "battle_controller.h" -#include "battle_system.h" +#include "battle_controller_player.h" +#include "battle_command.h" #include "item.h" #include "party.h" #include "pokemon.h" #include "system.h" #include "unk_0200E320.h" #include "unk_0208805C.h" +#include "unk_02025154.h" #include "sound_chatot.h" #include "overlay_12_0224E4FC.h" #include "constants/abilities.h" @@ -1150,7 +1151,7 @@ BOOL BtlCmd_JumpToEffectScript(BattleSystem *bsys, BATTLECONTEXT *ctx) { if (unkA == 0) { ctx->battlerIdTarget = ov12_022506D4(bsys, ctx, ctx->battlerIdAttacker, (u16)ctx->moveWork, 1, 0); - ov12_02250A18(bsys, ctx, ctx->battlerIdAttacker, (u16)ctx->moveWork); + ov12_02250A18(bsys, ctx, ctx->battlerIdAttacker, ctx->moveWork); ctx->unk_21A8[ctx->battlerIdAttacker][1] = ctx->battlerIdTarget; } diff --git a/src/field_black_out.c b/src/field_black_out.c index 1963003f54..ff9a3cd43d 100644 --- a/src/field_black_out.c +++ b/src/field_black_out.c @@ -9,6 +9,7 @@ #include "save_flypoints.h" #include "unk_0203BA5C.h" #include "field_warp_tasks.h" +#include "unk_0200B380.h" #include "unk_0206793C.h" #include "unk_0200B150.h" #include "unk_02054E00.h" diff --git a/src/overlay_01_rock_smash_item.c b/src/overlay_01_rock_smash_item.c index e8d487bb53..f61c8b8e43 100644 --- a/src/overlay_01_rock_smash_item.c +++ b/src/overlay_01_rock_smash_item.c @@ -1,6 +1,7 @@ #include "encounter.h" #include "field_follow_poke.h" #include "filesystem.h" +#include "math_util.h" #include "overlay_01_022001E4.h" #include "overlay_01_rock_smash_item.h" #include "overlay_02.h" From 42c53608e5c8803410363161f9c14c2b84edba86 Mon Sep 17 00:00:00 2001 From: Adrienn Tindall <33725376+adrienntindall@users.noreply.github.com> Date: Wed, 24 May 2023 22:50:19 -0500 Subject: [PATCH 02/12] Fix duplicate struct declarations --- include/battle_setup.h | 4 ++-- include/field_map_object.h | 8 +++----- include/field_player_avatar.h | 9 +++------ include/field_system.h | 5 +++-- include/map_object_manager.h | 3 +-- include/task.h | 3 +-- include/trainer_data.h | 2 +- 7 files changed, 14 insertions(+), 20 deletions(-) diff --git a/include/battle_setup.h b/include/battle_setup.h index 410dfda180..76d46b2ebb 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -6,7 +6,7 @@ #include "player_data.h" #include "trainer_data.h" -typedef struct BattleSetupStruct { +struct BATTLE_SETUP { //declared in trainer_data.h u32 flags; PARTY *party[4]; int winFlag; @@ -61,7 +61,7 @@ typedef struct BattleSetupStruct { u8 unk1CD; u8 unk1CE; u8 unk1CF; -} BATTLE_SETUP; +}; BOOL IsBattleResultWin(u32 a0); int sub_02052564(u32 a0); diff --git a/include/field_map_object.h b/include/field_map_object.h index 6e50aeedc5..df57ab646d 100644 --- a/include/field_map_object.h +++ b/include/field_map_object.h @@ -3,8 +3,6 @@ #include "script.h" -typedef struct LocalMapObject LocalMapObject; - typedef struct SavedMapObject { u32 unk0; u32 unk4; @@ -34,7 +32,7 @@ typedef struct SavedMapObject { u8 unk40[16]; } SavedMapObject; -typedef struct MapObjectMan { +struct MapObjectMan { //declared field_system.h u32 flags; u32 object_count; u32 unk8; @@ -45,11 +43,11 @@ typedef struct MapObjectMan { u8 unk1C[0x124-0x1C]; LocalMapObject* objects; FieldSystem* fsys; -} MapObjectMan; // size: 0x12c +}; // size: 0x12c typedef void (*LocalMapObject_UnkCallback)(LocalMapObject* object); -struct LocalMapObject { +struct LocalMapObject { //declared field_system.h /*0x000*/ u32 flags; /*0x004*/ u32 flags2; /*0x008*/ int id; diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 7432e3f0b2..eaa190d63b 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -3,10 +3,7 @@ #include "save.h" #include "global.h" - -typedef struct MapObjectMan MapObjectMan; -typedef struct LocalMapObject LocalMapObject; -typedef struct FieldSystem FieldSystem; +#include "field_system.h" typedef struct FlypointsPlayerSub { u16 hasRunningShoes; @@ -14,7 +11,7 @@ typedef struct FlypointsPlayerSub { u32 unk4; } PlayerAvatar_SUB; -typedef struct PlayerAvatar { +struct PlayerAvatar { u32 unk0; u32 transFlag; u32 unk8; @@ -31,7 +28,7 @@ typedef struct PlayerAvatar { u32 unk34; PlayerAvatar_SUB *unk38; u32 unk3c; -} PlayerAvatar; //size: 0x40 +}; //size: 0x40 int sub_0205C268(u32 unkA); u8 sub_0205C278(void); diff --git a/include/field_system.h b/include/field_system.h index ab49715cf8..63ffe9e5b7 100644 --- a/include/field_system.h +++ b/include/field_system.h @@ -2,10 +2,8 @@ #define POKEHEARTGOLD_FIELD_SYSTEM_H #include "bug_contest_internal.h" -#include "field_player_avatar.h" #include "gear_phone.h" #include "map_events_internal.h" -#include "map_object_manager.h" #include "map_matrix.h" #include "overlay_manager.h" #include "save_pokegear.h" @@ -17,6 +15,9 @@ typedef struct FieldSystem FieldSystem; typedef struct TaskManager TaskManager; typedef struct FsysUnkSub2C FsysUnkSub2C; typedef struct LocalMapObject LocalMapObject; +typedef struct FieldMapObject FieldMapObject; +typedef struct PlayerAvatar PlayerAvatar; +typedef struct MapObjectMan MapObjectMan; typedef struct FollowMon { LocalMapObject *mapObject; diff --git a/include/map_object_manager.h b/include/map_object_manager.h index 96bf0d2ce9..ac623db4aa 100644 --- a/include/map_object_manager.h +++ b/include/map_object_manager.h @@ -1,8 +1,7 @@ #ifndef POKEHEARTGOLD_MAP_OBJECT_MANAGER_H #define POKEHEARTGOLD_MAP_OBJECT_MANAGER_H -typedef struct MapObjectMan MapObjectMan; -typedef struct FieldSystem FieldSystem; +#include "field_system.h" FieldSystem *MapObjectMan_GetFieldSysPtr(MapObjectMan *mapObjectMan); diff --git a/include/task.h b/include/task.h index c9e42b8e30..a13c80d82c 100644 --- a/include/task.h +++ b/include/task.h @@ -4,7 +4,6 @@ #include "fieldmap.h" #include "overlay_manager.h" -typedef struct TaskManager TaskManager; typedef BOOL (*TaskFunc)(TaskManager *taskman); typedef struct TaskManagerUnkSub1C { @@ -17,7 +16,7 @@ struct UnkTaskEnv { void *work; }; -struct TaskManager { +struct TaskManager { //declared in field_system.h TaskManager *prev; TaskFunc func; u32 state; diff --git a/include/trainer_data.h b/include/trainer_data.h index 9ce113f2b9..480e825a0d 100644 --- a/include/trainer_data.h +++ b/include/trainer_data.h @@ -97,7 +97,7 @@ typedef struct TrainerData { /*02C*/ MAIL_MESSAGE loseMessage; } TRAINER; // size=0x34 -typedef struct BattleSetupStruct BATTLE_SETUP; +typedef struct BATTLE_SETUP BATTLE_SETUP; void TrainerData_ReadTrData(u32 trno, TRAINER *dest); TrainerGender TrainerClass_GetGenderOrTrainerCount(int trainerClass); From 5c57677d8389fe1c59a155de9c8a394a325f8744 Mon Sep 17 00:00:00 2001 From: Adrienn Tindall <33725376+adrienntindall@users.noreply.github.com> Date: Thu, 25 May 2023 02:36:10 -0500 Subject: [PATCH 03/12] field_map_object, unk_020648EC declarations --- include/field_map_object.h | 237 ++++++++++++++++++++++++------------- include/mail_message.h | 4 + include/unk_020648EC.h | 10 ++ src/field_map_object.c | 15 ++- src/unk_020648EC.c | 1 + 5 files changed, 181 insertions(+), 86 deletions(-) create mode 100644 include/unk_020648EC.h diff --git a/include/field_map_object.h b/include/field_map_object.h index df57ab646d..634b62ac0f 100644 --- a/include/field_map_object.h +++ b/include/field_map_object.h @@ -154,96 +154,146 @@ typedef enum MapObjectFlagBits { struct MapObjectInitArgs; // FIXME: Some of these declarations are static and don't belong in here. +MapObjectMan *sub_0205E0BC(FieldSystem *fsys, int num, HeapID heapId); +void MapObjectMan_delete(MapObjectMan *man); +void sub_0205E104(MapObjectMan* manager, u32 a1, u32 a2, u32 num_object_events, OBJECT_EVENT* object_events); +MapObjectMan* MapObjectMan_new(u32 count); +LocalMapObject* sub_0205E1D0(MapObjectMan* manager, OBJECT_EVENT* object_events, u32 map_no); LocalMapObject *CreateSpecialFieldObject(MapObjectMan *objectMan, u32 x, u32 z, u32 direction, u32 sprite, u32 movement, u32 mapNo); LocalMapObject *CreateSpecialFieldObjectEx(MapObjectMan *mapObjectMan, u32 x, u32 y, u32 direction, u32 a4, u32 a5, u32 mapNo, u32 a7, u32 a8, u32 spriteId); +LocalMapObject* CreateMapObjectFromTemplate(MapObjectMan *mapObjectMan, u16 objectId, u32 numObjects, u32 mapId, const OBJECT_EVENT *templates); +void sub_0205E38C(LocalMapObject* object, u32 sprite_id); +void sub_0205E3AC(LocalMapObject* object, u32 sprite_id); +void MapObject_Remove(LocalMapObject *object); void DeleteMapObject(LocalMapObject *mapObject); -LocalMapObject *sub_0205EEB4(MapObjectMan *manager, u32 movement); +void sub_0205E420(LocalMapObject* object); +void MapObjectMan_RemoveAllActiveObjects(MapObjectMan *man); +void sub_0205E4C8(MapObjectMan* manager); +void sub_0205E520(MapObjectMan* manager); +void sub_0205E580(MapObjectMan* manager); +void Fsys_SyncMapObjectsToSaveEx(FieldSystem *fsys, MapObjectMan *mapObjectMan, struct SavedMapObject *saveObj, int objNum); +void MapObjectMan_RestoreFromSave(MapObjectMan *mapObjectMan, SavedMapObject *list, u32 numObj); +void sub_0205E680(FieldSystem* fsys, LocalMapObject* local_object, SavedMapObject* saved_object); +void sub_0205E7C4(LocalMapObject* local_object, SavedMapObject* saved_object); +void sub_0205E8EC(MapObjectMan* manager, LocalMapObject* object); +void InitMapObjectsFromEventTemplates(MapObjectMan* man, u32 mapId, u32 nObjs, OBJECT_EVENT* dest); +void sub_0205EA08(struct MapObjectInitArgs* args); +LocalMapObject* MapObjectMan_GetFirstInactiveObject(MapObjectMan*); +LocalMapObject* sub_0205EA98(MapObjectMan*, u32, u32); +void sub_0205EAF0(MapObjectMan* manager, LocalMapObject* object); +void MapObject_InitFromObjectEventTemplate(LocalMapObject* object, OBJECT_EVENT* template, FieldSystem* fsys); +void MapObject_SetPositionVecFromTemplate(LocalMapObject* object, OBJECT_EVENT* template); +void sub_0205EC90(LocalMapObject* object, MapObjectMan* manager); +void sub_0205ECE0(LocalMapObject* object); +void sub_0205ED80(LocalMapObject* object); +u32 sub_0205ED90(LocalMapObject*, u32, u32, OBJECT_EVENT*); +LocalMapObject* sub_0205EE10(MapObjectMan*, u32, u32); LocalMapObject *GetMapObjectByID(MapObjectMan *manager, u32 id); -void sub_0205FC94(LocalMapObject *mapObject, u32 movement); -u32 MapObject_GetMovement(LocalMapObject *mapObject); -u32 MapObject_GetGfxID(LocalMapObject *mapObject); -void MapObject_SetGfxID(LocalMapObject *mapObject, u32 spriteId); -void MapObject_ClearFlag18(LocalMapObject *mapObject, BOOL clear); +LocalMapObject *sub_0205EEB4(MapObjectMan *manager, u32 movement); +BOOL sub_0205EEF4(MapObjectMan*, LocalMapObject**, int*, u32); +void sub_0205EF48(LocalMapObject* object); +void sub_0205EF5C(LocalMapObject* object); +void sub_0205EF6C(LocalMapObject* object); +u32 ResolveObjectGfxId(FieldSystem* fsys, int a1); +void sub_0205EFA4(LocalMapObject* object); +void sub_0205EFB4(LocalMapObject* object); +BOOL MapObject_ScriptIdIsFFFF(LocalMapObject* object); +void sub_0205F014(LocalMapObject* object, OBJECT_EVENT* template, u32 map_no); +void sub_0205F058(LocalMapObject* object, u32 map_no, OBJECT_EVENT* template); +u32 sub_0205F09C(LocalMapObject *obj, u32 a1); +BOOL sub_0205F0A8(LocalMapObject* object, u32 id, u32 a2); +BOOL sub_0205F0F8(LocalMapObject* object, u32 gfx_id, u32 id, u32 a3); +void sub_0205F12C(SysTask* task, LocalMapObject* object); +void sub_0205F148(LocalMapObject* object); +MapObjectMan* sub_0205F160(MapObjectMan* manager); +void MapObjectMan_SetCount(MapObjectMan*, u32); +u32 MapObjectMan_GetCount(MapObjectMan*); +void sub_0205F16C(MapObjectMan* manager); +void sub_0205F174(MapObjectMan* manager); +void MapObjectMan_SetFlagsBits(MapObjectMan* manager, u32 bits); +void MapObjectMan_ClearFlagsBits(MapObjectMan* manager, u32 bits); +u32 MapObjectMan_GetFlagsBitsMask(MapObjectMan* manager, u32 bits); +void sub_0205F198(MapObjectMan*, u32); +u32 sub_0205F19C(MapObjectMan* manager); +void* sub_0205F1A0(MapObjectMan*); +void MapObjectMan_SetObjects(MapObjectMan* manager, LocalMapObject* objects); +LocalMapObject* sub_0205F1AC(MapObjectMan* manager); +const LocalMapObject* MapObjectMan_GetConstObjects(MapObjectMan*); +LocalMapObject* MapObjectMan_GetObjects(MapObjectMan*); +void sub_0205F1C4(LocalMapObject** objects); +void sub_0205F1D0(LocalMapObject** objects); +void MapObjectMan_SetFieldSysPtr(MapObjectMan*, FieldSystem*); +FieldSystem* MapObjectMan_GetFieldSysPtr(MapObjectMan*); +void FldObjSys_SetMModelNarc(MapObjectMan* manager, NARC* mmodel_narc); +NARC* FldObjSys_GetMModelNarc(MapObjectMan* manager); +void MapObject_SetFlagsWord(LocalMapObject* object, u32 bits); +u32 MapObject_GetFlagsWord(LocalMapObject* object); void MapObject_SetFlagsBits(LocalMapObject *mapObject, u32 bits); void MapObject_ClearFlagsBits(LocalMapObject *mapObject, u32 bits); +u32 MapObject_GetFlagsMask(LocalMapObject* object, u32 mask); +BOOL MapObject_TestFlagsBits(LocalMapObject* object, u32 bits); +void MapObject_SetFlags2Word(LocalMapObject* object, u32 bits); +u32 MapObject_GetFlags2Word(LocalMapObject* object); +u32 MapObject_GetFlags2Mask(LocalMapObject* object, u32 mask); void MapObject_SetID(LocalMapObject *mapObject, u32 id); +u32 MapObject_GetID(LocalMapObject *obj); +void sub_0205F250(LocalMapObject* object, u32 a1); +u32 sub_0205F254(LocalMapObject *obj); +void MapObject_SetGfxID(LocalMapObject *mapObject, u32 spriteId); +u32 MapObject_GetGfxID(LocalMapObject *mapObject); +void MapObject_SetMovement(LocalMapObject* object, u32 movement); +u32 MapObject_GetMovement(LocalMapObject *mapObject); void MapObject_SetType(LocalMapObject *mapObject, u32 type); u32 MapObject_GetType(LocalMapObject *mapObject); void MapObject_SetFlagID(LocalMapObject *mapObject, u32 flagId); +u32 MapObject_GetFlagID(LocalMapObject* object); void MapObject_SetScript(LocalMapObject *mapObject, u32 script); u32 MapObject_GetScript(LocalMapObject *mapObject); +void MapObject_SetInitialFacing(LocalMapObject* object, u32 initial_facing); +u32 MapObject_GetInitialFacing(LocalMapObject* object); +void MapObject_ForceSetFacingDirection(LocalMapObject* object, u32 direction); +void MapObject_SetFacingDirection(LocalMapObject* object, u32 direction); +u32 MapObject_GetFacingDirection(LocalMapObject *object); +u32 MapObject_GetPreviousFacing(LocalMapObject* object); +void MapObject_SetNextFacing(LocalMapObject* object, u32 direction); +u32 MapObject_GetNextFacing(LocalMapObject* object); +void MapObject_SetOrQueueFacing(LocalMapObject* object, u32 direction); void MapObject_SetParam(LocalMapObject *mapObject, u32 value, int which); int MapObject_GetParam(LocalMapObject *mapObject, int which); void MapObject_SetXRange(LocalMapObject *mapObject, u32 xRange); +u32 MapObject_GetXRange(LocalMapObject* object); void MapObject_SetYRange(LocalMapObject *mapObject, u32 yRange); +u32 MapObject_GetYRange(LocalMapObject* object); +void sub_0205F328(LocalMapObject* obj, u32 a1); +// FIXME: Functions beyond here aren't organized according to the corresponding c file +void sub_0205FC94(LocalMapObject *mapObject, u32 movement); +void MapObject_ClearFlag18(LocalMapObject *mapObject, BOOL clear); void MapObject_SetFlag29(LocalMapObject *mapObject, BOOL enable_bit); BOOL MapObject_CheckFlag9(LocalMapObject *mapObject); BOOL MapObject_CheckFlag28(LocalMapObject *mapObject); void MapObject_SetFlag9(LocalMapObject *mapObject, BOOL enable_bit); void MapObject_SetFlag19(LocalMapObject *mapObject, BOOL enable_bit); -void Fsys_SyncMapObjectsToSaveEx(FieldSystem *fsys, MapObjectMan *mapObjectMan, struct SavedMapObject *saveObj, int objNum); -void MapObjectMan_RestoreFromSave(MapObjectMan *mapObjectMan, SavedMapObject *list, u32 numObj); SavedMapObject* SaveMapObjects_SearchSpriteId(SavedMapObject* list, u32 num_objects, u16 sprite_id); -MapObjectMan *sub_0205E0BC(FieldSystem *fsys, int num, HeapID heapId); void sub_0205F55C(MapObjectMan *man); -void MapObjectMan_RemoveAllActiveObjects(MapObjectMan *man); -void MapObjectMan_delete(MapObjectMan *man); BOOL MapObject_IsMovementPaused(LocalMapObject *obj); BOOL MapObject_IsSingleMovementActive(LocalMapObject *obj); void MapObject_PauseMovement(LocalMapObject *obj); void MapObject_UnpauseMovement(LocalMapObject *obj); void MapObjectMan_PauseAllMovement(MapObjectMan *man); void MapObjectMan_UnpauseAllMovement(MapObjectMan *man); -void InitMapObjectsFromEventTemplates(MapObjectMan* man, u32 mapId, u32 nObjs, OBJECT_EVENT* dest); u32 MapObject_GetCurrentX(LocalMapObject *object); u32 MapObject_GetCurrentY(LocalMapObject *object); int MapObject_GetCurrentHeight(LocalMapObject *object); -LocalMapObject* CreateMapObjectFromTemplate(MapObjectMan *mapObjectMan, u16 objectId, u32 numObjects, u32 mapId, const OBJECT_EVENT *templates); VecFx32 *MapObject_GetPositionVecPtr(LocalMapObject *object); -void MapObject_Remove(LocalMapObject *object); -u32 MapObject_GetFacingDirection(LocalMapObject *object); void sub_0205F9A0(LocalMapObject *object, const VecFx32 *vec); void MapObject_SetFlag10(LocalMapObject *object, BOOL set); -u32 MapObject_GetID(LocalMapObject *obj); void sub_0205FC2C(LocalMapObject *obj, u32 x, u32 height, u32 y, u32 direction); void MapObject_GetPositionVec(LocalMapObject *object, VecFx32 *dest); void MapObject_SetPositionVec(LocalMapObject *object, VecFx32 *src); -void sub_0205F328(LocalMapObject* obj, u32 a1); -u32 sub_0205F09C(LocalMapObject *obj, u32 a1); -u32 sub_0205F254(LocalMapObject *obj); -BOOL sub_0205F0A8(LocalMapObject* object, u32 id, u32 a2); -MapObjectMan* MapObjectMan_new(u32 count); -void MapObjectMan_SetFieldSysPtr(MapObjectMan*, FieldSystem*); -void MapObjectMan_SetCount(MapObjectMan*, u32); -void sub_0205F198(MapObjectMan*, u32); -LocalMapObject* MapObjectMan_GetObjects(MapObjectMan*); -void sub_0205E420(LocalMapObject* object); -u32 MapObject_GetFlagsWord(LocalMapObject* object); -u32 MapObject_GetFlagsMask(LocalMapObject* object, u32 mask); -BOOL MapObject_TestFlagsBits(LocalMapObject* object, u32 bits); -void MapObject_SetMovement(LocalMapObject* object, u32 movement); u16 ObjectEventTemplate_GetID(OBJECT_EVENT*); -void sub_0205F16C(MapObjectMan* manager); -MapObjectMan* sub_0205F160(MapObjectMan* manager); -void sub_0205EAF0(MapObjectMan* manager, LocalMapObject* object); -void sub_0205EFB4(LocalMapObject* object); -void sub_0205EFA4(LocalMapObject* object); -void sub_0205F250(LocalMapObject* object, u32 a1); -void sub_0205EC90(LocalMapObject* object, MapObjectMan* manager); -void MapObject_InitFromObjectEventTemplate(LocalMapObject* object, OBJECT_EVENT* template, FieldSystem* fsys); -FieldSystem* MapObjectMan_GetFieldSysPtr(MapObjectMan*); -LocalMapObject* MapObjectMan_GetFirstInactiveObject(MapObjectMan*); -void sub_0205F058(LocalMapObject* object, u32 map_no, OBJECT_EVENT* template); -LocalMapObject* sub_0205EE10(MapObjectMan*, u32, u32); u16 ObjectEventTemplate_GetFlagID_AssertScriptIdIsFFFF(OBJECT_EVENT* template); -void sub_0205F014(LocalMapObject* object, OBJECT_EVENT* template, u32 map_no); -LocalMapObject* sub_0205EA98(MapObjectMan*, u32, u32); BOOL ObjectEventTemplate_ScriptIdIsFFFF(OBJECT_EVENT* template); -u32 MapObjectMan_GetCount(MapObjectMan*); BOOL MapObject_IsInUse(LocalMapObject* object); -void* sub_0205F1A0(MapObjectMan*); -u32 sub_0205ED90(LocalMapObject*, u32, u32, OBJECT_EVENT*); -void MapObjectMan_SetObjects(MapObjectMan* manager, LocalMapObject* objects); void ObjectEventTemplate_SetID(OBJECT_EVENT* template, u16); void ObjectEventTemplate_SetSprite(OBJECT_EVENT*, u32); void ObjectEventTemplate_SetMovement(OBJECT_EVENT*, u32); @@ -265,31 +315,15 @@ fx32 MapObject_GetPosVecYCoord(LocalMapObject* object); u32 MapObject_GetInitialY(LocalMapObject* object); u32 MapObject_GetInitialHeight(LocalMapObject* object); u32 MapObject_GetInitialX(LocalMapObject* object); -u32 MapObject_GetYRange(LocalMapObject* object); -u32 MapObject_GetXRange(LocalMapObject* object); -u32 MapObject_GetNextFacing(LocalMapObject* object); -u32 MapObject_GetInitialFacing(LocalMapObject* object); -u32 MapObject_GetFlags2Word(LocalMapObject* object); -void sub_0205EF6C(LocalMapObject* object); void sub_0205F4AC(LocalMapObject* object); void sub_0205F4C0(LocalMapObject* object); -void sub_0205E680(FieldSystem* fsys, LocalMapObject* local_object, SavedMapObject* saved_object); -void sub_0205E8EC(MapObjectMan* manager, LocalMapObject* object); -BOOL sub_0205EEF4(MapObjectMan*, LocalMapObject**, int*, u32); BOOL MapObject_CheckFlag14(LocalMapObject* object); -void sub_0205E7C4(LocalMapObject* local_object, SavedMapObject* saved_object); -void sub_0205E934(LocalMapObject* object); void MapObject_SetCurrentY(LocalMapObject* object, u32 y); void MapObject_SetCurrentHeight(LocalMapObject* object, u32 height); void MapObject_SetCurrentX(LocalMapObject* object, u32 x); void MapObject_SetInitialY(LocalMapObject* object, u32 initial_y); void MapObject_SetInitialHeight(LocalMapObject* object, u32 initial_height); void MapObject_SetInitialX(LocalMapObject* object, u32 initial_x); -void MapObject_SetNextFacing(LocalMapObject* object, u32 direction); -void MapObject_ForceSetFacingDirection(LocalMapObject* object, u32 direction); -void MapObject_SetInitialFacing(LocalMapObject* object, u32 initial_facing); -void MapObject_SetFlags2Word(LocalMapObject* object, u32 bits); -void MapObject_SetFlagsWord(LocalMapObject* object, u32 bits); u16 ObjectEventTemplate_GetSprite(OBJECT_EVENT*); u16 ObjectEventTemplate_GetMovement(OBJECT_EVENT*); u16 ObjectEventTemplate_GetType(OBJECT_EVENT*); @@ -298,18 +332,12 @@ u16 ObjectEventTemplate_GetScript(OBJECT_EVENT*); u16 ObjectEventTemplate_GetParam(OBJECT_EVENT*, int param); s16 ObjectEventTemplate_GetXRange(OBJECT_EVENT*); s16 ObjectEventTemplate_GetYRange(OBJECT_EVENT*); -u32 ResolveObjectGfxId(FieldSystem* fsys, int a1); -void sub_0205E954(LocalMapObject* object); void MapObject_SetPrevY(LocalMapObject* object, u32 previous_y); -void sub_0205EA08(struct MapObjectInitArgs* args); void MapObject_SetPrevHeight(LocalMapObject* object, u32 previous_height); void MapObject_SetPrevX(LocalMapObject* object, u32 previous_x); u32 sub_0205F544(LocalMapObject* object); int MapObject_CheckFlag25(LocalMapObject* object); void MapObject_SetFlag25(LocalMapObject* object, BOOL set); -void sub_0205ED80(LocalMapObject* object); -const LocalMapObject* MapObjectMan_GetConstObjects(MapObjectMan*); -void sub_0205EF48(LocalMapObject* object); void sub_0205FD20(LocalMapObject* object); u8* sub_0205F3E4(LocalMapObject* object); u8* sub_0205F40C(LocalMapObject* object); @@ -327,17 +355,11 @@ MapObjectMan* sub_0205F364(LocalMapObject* object); OBJECT_EVENT* sub_0205FA98(u16 id, int num_templates, OBJECT_EVENT* templates); void sub_0205F338(LocalMapObject* object, SysTask* a1); BOOL FlagGet(FieldSystem*, u16); -void MapObject_SetPositionVecFromTemplate(LocalMapObject* object, OBJECT_EVENT* template); u16 ObjectEventTemplate_GetXCoord(OBJECT_EVENT* template); u32 ObjectEventTemplate_GetHeight(OBJECT_EVENT* template); u16 ObjectEventTemplate_GetYCoord(OBJECT_EVENT* template); -void sub_0205ECE0(LocalMapObject* object); UnkLMOCallbackStruct* sub_0205FB00(u32 movement); void* sub_0205F538(LocalMapObject* object); -void sub_0205F148(LocalMapObject* object); -void sub_0205F174(MapObjectMan* manager); -u32 sub_0205F19C(MapObjectMan* manager); -u32 MapObject_GetFlagID(LocalMapObject* object); void sub_0205F414(LocalMapObject* object, LocalMapObject_UnkCallback callback); void sub_0205F428(LocalMapObject* object, LocalMapObject_UnkCallback callback); void sub_0205F43C(LocalMapObject* object, LocalMapObject_UnkCallback callback); @@ -359,12 +381,65 @@ void sub_0205FCC4(LocalMapObject* object); void sub_0205FCC8(LocalMapObject* object); void sub_0205FCCC(LocalMapObject* object); void sub_0205FCD0(LocalMapObject* object); -void MapObject_SetFacingDirection(LocalMapObject* object, u32 direction); -void sub_0205F12C(SysTask* task, LocalMapObject* object); BOOL sub_0205F73C(LocalMapObject* object); BOOL sub_0205F5D4(MapObjectMan* manager); -BOOL MapObject_ScriptIdIsFFFF(LocalMapObject* object); -void sub_0205E3AC(LocalMapObject* object, u32 sprite_id); -void sub_0205EF5C(LocalMapObject* object); +u32 sub_0205F330(LocalMapObject* object); +SysTask* sub_0205F340(LocalMapObject* object); +u8* sub_0205F370(LocalMapObject* object, s32 size); +u8* sub_0205F398(LocalMapObject* object, s32 size); +u8* sub_0205F3C0(LocalMapObject* object, s32 size); +u8* sub_0205F3E8(LocalMapObject* object, s32 size); +void sub_0205F41C(LocalMapObject* object); +void sub_0205F430(LocalMapObject* object); +void sub_0205F484(LocalMapObject* object); +void MapObject_SetMovementCommand(LocalMapObject* object, u32 command); +u32 MapObject_GetMovementCommand(LocalMapObject* object); +void MapObject_SetMovementStep(LocalMapObject* object, u32 step); +void MapObject_IncMovementStep(LocalMapObject* object); +u32 MapObject_GetMovementStep(LocalMapObject* object); +void sub_0205F4FC(LocalMapObject* object, u16 a1); +u16 sub_0205F504(LocalMapObject* object); +void sub_0205F50C(LocalMapObject* object, u16 a1); +u16 sub_0205F514(LocalMapObject* object); +void sub_0205F51C(LocalMapObject* object, u16 a1); +u16 sub_0205F524(LocalMapObject* object); +void sub_0205F568(MapObjectMan* manager); +u32 sub_0205F5E8(LocalMapObject* object, u32 bits); +void sub_0205F5F8(MapObjectMan* manager, BOOL clear); +BOOL sub_0205F610(MapObjectMan* manager); +void MapObject_SingleMovementSetActive(LocalMapObject* object); +void MapObject_SingleMovementSetInactive(LocalMapObject* object); +void MapObject_SetFlag2(LocalMapObject* object); +void MapObject_ClearFlag3(LocalMapObject* object); +BOOL MapObject_CheckFlag19Is0(LocalMapObject* object); +BOOL sub_0205F714(LocalMapObject* object); +void MapObject_SetFlag23(LocalMapObject* object, BOOL set); +void MapObject_SetFlag26(LocalMapObject* object, BOOL set); +BOOL MapObject_CheckFlag26(LocalMapObject* object); +void MapObject_SetFlag28(LocalMapObject* object, BOOL set); +void MapObject_SetFlag24(LocalMapObject* object, BOOL set); +BOOL MapObject_CheckFlag24(LocalMapObject* object); +BOOL MapObject_CheckFlag4(LocalMapObject* object); +BOOL sub_0205F8D0(LocalMapObject* object); +u32 MapObject_GetPrevX(LocalMapObject* object); +u32 MapObject_GetPrevHeight(LocalMapObject* object); +u32 MapObject_GetPrevY(LocalMapObject* object); +void MapObject_AddCurrentX(LocalMapObject* object, u32 x); +void MapObject_AddCurrentHeight(LocalMapObject* object, u32 height); +void MapObject_AddCurrentY(LocalMapObject* object, u32 y); +void MapObject_GetFacingVec(LocalMapObject* object, VecFx32* face_vec_dest); +void MapObject_SetFacingVec(LocalMapObject* object, VecFx32* face_vec); +VecFx32* MapObject_GetFacingVecPtr(LocalMapObject* object); +void sub_0205F990(LocalMapObject* object, VecFx32* a1_dest); +void sub_0205F9B0(LocalMapObject* object, VecFx32* a1_dest); +void sub_0205F9C0(LocalMapObject* object, VecFx32* a1); +u32 sub_0205F9D0(LocalMapObject* object); +LocalMapObject* sub_0205FB58(MapObjectMan* manager, u32 x, u32 y, BOOL a3); +void sub_0205FBC0(LocalMapObject* object, VecFx32* position_vec, u32 direction); +void sub_0205FCB4(LocalMapObject* object); +void sub_0205FCB8(LocalMapObject* object); +void sub_0205FCBC(LocalMapObject* object); +void sub_0205FCC0(LocalMapObject* object); +void sub_0205FCD4(LocalMapObject* object); #endif //POKEHEARTGOLD_FIELD_MAP_OBJECT_H diff --git a/include/mail_message.h b/include/mail_message.h index 76acc27aec..67bad38e5f 100644 --- a/include/mail_message.h +++ b/include/mail_message.h @@ -9,6 +9,8 @@ #define MAILMSG_BANK_0293_GMM 3 #define MAILMSG_BANK_0295_GMM 4 +#include "pm_string.h" + #include "msgdata/msg/msg_0294.h" #include "msgdata/msg/msg_0296.h" #include "msgdata/msg/msg_0292.h" @@ -32,6 +34,8 @@ void MailMsg_copy(MAIL_MESSAGE *dst, const MAIL_MESSAGE *src); void MailMsg_init_withBank(MAIL_MESSAGE *mailMessage, u16 msgBank); void MailMsg_init_default(MAIL_MESSAGE *mailMessage); void MailMsg_init_fromTemplate(MAIL_MESSAGE *mailMessage, const MAIL_MSG_TEMPLATE *template); +STRING *MailMsg_GetExpandedString(const MAIL_MESSAGE *mailMessage, HeapID heapId); +STRING *MailMsg_GetRawString(MAIL_MESSAGE *mailMessage, HeapID heapId); BOOL MailMsg_IsInit(MAIL_MESSAGE *mailMessage); BOOL MailMsg_AllFieldsAreInit(MAIL_MESSAGE *mailMessage); u32 MailMsg_NumFields(u16 msg_bank, u16 msg_no); diff --git a/include/unk_020648EC.h b/include/unk_020648EC.h new file mode 100644 index 0000000000..2f26860b3d --- /dev/null +++ b/include/unk_020648EC.h @@ -0,0 +1,10 @@ +#ifndef POKEHEARTGOLD_UNK_020648EC_H +#define POKEHEARTGOLD_UNK_020648EC_H + +#include "field_system.h" + +void sub_020648EC(FieldSystem* fsys); +void sub_02064910(FieldSystem* fsys); +BOOL sub_02064938(FieldSystem *fsys, u32 a1, u32 a2, u32 a3, u32 a4); + +#endif //POKEHEARTGOLD_UNK_020648EC_H diff --git a/src/field_map_object.c b/src/field_map_object.c index 54ac2c7154..5e047bd224 100644 --- a/src/field_map_object.c +++ b/src/field_map_object.c @@ -5,6 +5,11 @@ #include "unk_0200E320.h" #include "unk_0205FD20.h" +static void sub_0205E934(LocalMapObject* object); +static void sub_0205E954(LocalMapObject* object); +static void sub_0205ED18(LocalMapObject* object); +static void sub_0205EF8C(LocalMapObject* object); + MapObjectMan* sub_0205E0BC(FieldSystem* fsys, int object_count, u32 a2) { MapObjectMan* ret = MapObjectMan_new(object_count); MapObjectMan_SetFieldSysPtr(ret, fsys); @@ -530,7 +535,7 @@ void sub_0205E8EC(MapObjectMan* manager, LocalMapObject* object) { sub_0205F16C(sub_0205F160(manager)); } -void sub_0205E934(LocalMapObject* object) { +static void sub_0205E934(LocalMapObject* object) { MapObject_SetFlagsBits(object, MAPOBJECTFLAG_UNK2 | MAPOBJECTFLAG_ACTIVE); MapObject_ClearFlagsBits(object, MAPOBJECTFLAG_UNK23 | MAPOBJECTFLAG_UNK22 | @@ -546,7 +551,7 @@ void sub_0205E934(LocalMapObject* object) { sub_0205EF5C(object); } -void sub_0205E954(LocalMapObject* object) { +static void sub_0205E954(LocalMapObject* object) { VecFx32 position_vec; MapObject_GetPositionVec(object, &position_vec); @@ -710,7 +715,7 @@ void sub_0205ECE0(LocalMapObject* object) { extern const UnkLMOCallbackStruct2 ov01_0220724C; -void sub_0205ED18(LocalMapObject* object) { +static void sub_0205ED18(LocalMapObject* object) { u32 gfx_id = MapObject_GetGfxID(object); UnkLMOCallbackStruct2* unk = (gfx_id == 0x2000) ? (UnkLMOCallbackStruct2*)&ov01_0220724C : sub_0205FB38(gfx_id); @@ -843,7 +848,7 @@ u32 ResolveObjectGfxId(FieldSystem* fsys, int a1) { return a1; } -void sub_0205EF8C(LocalMapObject* object) { +static void sub_0205EF8C(LocalMapObject* object) { if (MapObject_GetFlagsMask(object, MAPOBJECTFLAG_UNK12) != 0) { sub_02061070(object); } @@ -2068,7 +2073,7 @@ void sub_0205FC94(LocalMapObject* object, u32 movement) { sub_0205FD20(object); } -void sub_0205FCB4(LocalMapObject* object) { +static void sub_0205FCB4(LocalMapObject* object) { } diff --git a/src/unk_020648EC.c b/src/unk_020648EC.c index ee65f4191e..dde7e75880 100644 --- a/src/unk_020648EC.c +++ b/src/unk_020648EC.c @@ -3,6 +3,7 @@ #include "save_misc_data.h" #include "scrcmd.h" #include "script.h" +#include "unk_020648EC.h" typedef void (*FieldSystemFunc1)(FieldSystem*); typedef BOOL (*FieldSystemFunc2)(FieldSystem*, u32, u32, u32, u32); From d989ce9f69c84745185fe77fde4f401f40ba76a7 Mon Sep 17 00:00:00 2001 From: Adrienn Tindall <33725376+adrienntindall@users.noreply.github.com> Date: Thu, 25 May 2023 03:21:51 -0500 Subject: [PATCH 04/12] More function declaration fixes --- include/constants/pokemon.h | 4 ++-- include/overlay_124.h | 8 ++++++++ include/pokemon.h | 3 +++ include/string_control_code.h | 4 ++-- include/string_util.h | 1 + include/unk_02023694.h | 2 -- include/unk_02062108.h | 4 +--- src/battle_command.c | 12 ++++++------ src/field_system.c | 3 +++ src/font_data.c | 6 +++--- src/pokemon.c | 1 - src/string_control_code.c | 1 + src/unk_02009D48.c | 1 - src/unk_02068F84.c | 2 +- 14 files changed, 31 insertions(+), 21 deletions(-) create mode 100644 include/overlay_124.h diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 8d81c0fe9a..cbe66921cf 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -403,12 +403,12 @@ typedef enum BaseStat { BASE_DEF, BASE_SPEED, BASE_SPATK, - BASE_SPDEF, + BASE_SPDEF, //5 BASE_TYPE1, BASE_TYPE2, BASE_CATCH_RATE, BASE_EXP_YIELD, - BASE_HP_YIELD, + BASE_HP_YIELD, //10 BASE_ATK_YIELD, BASE_DEF_YIELD, BASE_SPEED_YIELD, diff --git a/include/overlay_124.h b/include/overlay_124.h new file mode 100644 index 0000000000..f04d554dfc --- /dev/null +++ b/include/overlay_124.h @@ -0,0 +1,8 @@ +#ifndef POKEHEARTGOLD_OVERLAY_124_H +#define POKEHEARTGOLD_OVERLAY_124_H + +#include "field_system.h" + +FieldSystem_init(OVY_MANAGER *man, FieldSystem *fsys); + +#endif //POKEHEARTGOLD_OVERLAY_124_H diff --git a/include/pokemon.h b/include/pokemon.h index 404256af05..ed96f77ef2 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -3,6 +3,7 @@ #include "pokemon_types_def.h" #include "unk_02016EDC.h" +#include "unk_0200CF18.h" // Enums #include "constants/species.h" @@ -99,6 +100,7 @@ void CopyBoxPokemonToPokemon(const BOXMON * src, POKEMON * dest); u8 Party_GetMaxLevel(PARTY * party); u16 SpeciesToSinnohDexNo(u16 species); u16 SinnohDexNoToSpecies(u16 sinnoh_dex); +u16 *LoadSpeciesToJohtoDexNoLUT(void); void CopyPokemonToPokemon(const POKEMON * src, POKEMON * dest); void CopyBoxPokemonToBoxPokemon(const BOXMON * src, BOXMON * dest); void CopyPokemonToBoxPokemon(const POKEMON * src, BOXMON * dest); @@ -145,6 +147,7 @@ u8 sub_02070848(BOXMON *boxmon, u8 whichFacing); u8 sub_02070854(BOXMON *boxmon, u8 whichFacing, BOOL a2); u8 sub_020708D8(u16 species, u8 gender, u8 whichFacing, u8 forme, u32 pid); u8 sub_02070A64(u16 species, u8 gender, u8 whichFacing, u8 forme, u32 pid); +struct UnkStruct_0200CF18 *sub_02070C24(Unk122_021E7C9C *r6, void *sp18, s32 sp1C, s32 sp20, s32 sp88, s32 trainerClass, s32 sp90, s32 sp94, s32 r5, HeapID heapId); void sub_02070D3C(s32 trainer_class, s32 a1, s32 a2, struct UnkStruct_02070D3C *a3); void sub_02070D84(s32 trainer_class, s32 a1, struct UnkStruct_02070D3C *a2); u32 sub_02070D90(void); diff --git a/include/string_control_code.h b/include/string_control_code.h index a0b325d688..0e251282b3 100644 --- a/include/string_control_code.h +++ b/include/string_control_code.h @@ -1,9 +1,9 @@ #ifndef HEARTGOLD_STRING_CONTROL_CODE_H #define HEARTGOLD_STRING_CONTROL_CODE_H -BOOL MsgArray_ControlCodeIsStrVar(const u16 *str); const u16 *MsgArray_SkipControlCode(const u16 *str); -const u32 MsgArray_ControlCodeGetField(const u16 *str, int fieldno); u16 MsgArray_GetControlCode(const u16 *arr); +BOOL MsgArray_ControlCodeIsStrVar(const u16 *str); +u16 MsgArray_ControlCodeGetField(const u16 *str, u32 fieldno); #endif //HEARTGOLD_STRING_CONTROL_CODE_H diff --git a/include/string_util.h b/include/string_util.h index d9955077e5..200a26cedd 100644 --- a/include/string_util.h +++ b/include/string_util.h @@ -9,6 +9,7 @@ typedef enum STRCONVMODE { u16 * CopyU16StringArray(u16 *dest, const u16 *src); BOOL StringNotEqual(const u16 *a, const u16 *b); +u16 *StringFill(u16 *str, u16 val, u32 n); u16 *StringFillEOS(u16 *s, u32 n); u16 *ConvertUIntToDecimalString(u16 *dest, u32 num, STRCONVMODE strconvmode, u32 ndigits); u16 * CopyU16StringArrayN(u16 *dest, const u16 *src, u32 n); diff --git a/include/unk_02023694.h b/include/unk_02023694.h index 6491de3e46..1b77e85635 100644 --- a/include/unk_02023694.h +++ b/include/unk_02023694.h @@ -5,8 +5,6 @@ typedef struct Sprite Sprite; -typedef struct SpriteList SpriteList; - typedef struct SpriteTemplate { void *spriteList; const struct SpriteResourcesHeader *header; diff --git a/include/unk_02062108.h b/include/unk_02062108.h index ed09e239ef..a4d3223dfc 100644 --- a/include/unk_02062108.h +++ b/include/unk_02062108.h @@ -1,8 +1,7 @@ #ifndef POKEHEARTGOLD_UNK_02062108_H #define POKEHEARTGOLD_UNK_02062108_H -struct LocalMapObject; -struct EventObjectMovementMan; +#include "field_system.h" #define MV_step_down 12 #define MV_step_up 13 @@ -15,7 +14,6 @@ typedef struct MovementScriptCommand { u16 length; } MovementScriptCommand; -typedef struct LocalMapObject LocalMapObject; typedef struct EventObjectMovementMan EventObjectMovementMan; EventObjectMovementMan *EventObjectMovementMan_Create(LocalMapObject *object, const MovementScriptCommand *data); diff --git a/src/battle_command.c b/src/battle_command.c index a9c341327b..7848f8f59e 100644 --- a/src/battle_command.c +++ b/src/battle_command.c @@ -1204,7 +1204,7 @@ BOOL BtlCmd_ShouldGetExp(BattleSystem *bsys, BATTLECONTEXT *ctx) { } } } - totalExp = GetMonBaseStat(ctx->battleMons[ctx->battlerIdFainted].species, 9); + totalExp = GetMonBaseStat(ctx->battleMons[ctx->battlerIdFainted].species, BASE_EXP_YIELD); totalExp = (totalExp * ctx->battleMons[ctx->battlerIdFainted].level) / 7; if (expShareMonsCnt) { ctx->gainedExp = (totalExp / 2) / expMonsCnt; @@ -3748,10 +3748,10 @@ BOOL BtlCmd_BeatUpDamageCalc(BattleSystem *bsys, BATTLECONTEXT *ctx) { forme = GetMonData(mon, MON_DATA_FORME, 0); level = GetMonData(mon, MON_DATA_LEVEL, 0); - ctx->damage = GetMonBaseStat_HandleAlternateForme(species, forme, 1); + ctx->damage = GetMonBaseStat_HandleAlternateForme(species, forme, BASE_ATK); ctx->damage *= ctx->unk_334.moveData[ctx->moveNoCur].power; ctx->damage *= (level * 2 / 5 + 2); - ctx->damage /= (u32) GetMonBaseStat_HandleAlternateForme(ctx->battleMons[ctx->battlerIdTarget].species, ctx->battleMons[ctx->battlerIdTarget].forme, 2); + ctx->damage /= (u32) GetMonBaseStat_HandleAlternateForme(ctx->battleMons[ctx->battlerIdTarget].species, ctx->battleMons[ctx->battlerIdTarget].forme, BASE_DEF); ctx->damage /= 50; ctx->damage += 2; ctx->damage *= ctx->criticalMultiplier; @@ -5248,7 +5248,7 @@ BOOL BtlCmd_CheckChatterActivation(BattleSystem *bsys, BATTLECONTEXT *ctx) { BOOL BtlCmd_GetMoveParam(BattleSystem *bsys, BATTLECONTEXT *ctx) { BattleScriptIncrementPointer(ctx, 1); - ctx->calcWork = GetMoveTblAttr(&ctx->unk_334.moveData[ctx->moveNoCur], BattleScriptReadWord(ctx)); + ctx->calcWork = GetMoveTblAttr(&ctx->unk_334.moveData[ctx->moveNoCur], (MoveAttr) BattleScriptReadWord(ctx)); return FALSE; } @@ -5812,11 +5812,11 @@ BOOL BtlCmd_GetMonDataFromNarc(BattleSystem *bsys, BATTLECONTEXT *ctx) { int species = BattleScriptReadWord(ctx); int forme = BattleScriptReadWord(ctx); - int param = BattleScriptReadWord(ctx); + BaseStat stat = (BaseStat) BattleScriptReadWord(ctx); int *formePtr = BattleScriptGetVarPointer(bsys, ctx, forme); - ctx->calcWork = GetMonBaseStat_HandleAlternateForme(species, *formePtr, param); + ctx->calcWork = GetMonBaseStat_HandleAlternateForme(species, *formePtr, stat); return FALSE; } diff --git a/src/field_system.c b/src/field_system.c index ed2a3438c3..1aacdb405e 100644 --- a/src/field_system.c +++ b/src/field_system.c @@ -1,5 +1,6 @@ #include "field_warp_tasks.h" #include "main.h" +#include "map_events.h" #include "math_util.h" #include "overlay_manager.h" #include "poke_overlay.h" @@ -10,11 +11,13 @@ #include "unk_02092BE8.h" #include "unk_02056D7C.h" #include "unk_02035900.h" +#include "unk_0205CB48.h" #include "overlay_01_021F6830.h" #include "overlay_01_021E6880.h" #include "overlay_01_021EF7A0.h" #include "overlay_01_021F3D38.h" #include "overlay_01_021F1AFC.h" +#include "overlay_124.h" #include "constants/maps.h" FS_EXTERN_OVERLAY(OVY_60); diff --git a/src/font_data.c b/src/font_data.c index d536bf3dd3..dea6e50140 100644 --- a/src/font_data.c +++ b/src/font_data.c @@ -74,8 +74,8 @@ void FontData_ModeSwitch(struct FontData *fontData, int mode, HeapID heapId) { static void FontData_Init(struct FontData *fontData, NarcId narcId, int fileId, BOOL isFixedWidth, HeapID heapId) { static const u8 _020F6324[][2] = { - {0, 1}, - {2, 3} + {GLYPHSHAPE_8x8, GLYPHSHAPE_8x16}, + {GLYPHSHAPE_16x8, GLYPHSHAPE_16x16} }; fontData->narc = NARC_ctor(narcId, heapId); if (fontData->narc != NULL) { @@ -92,7 +92,7 @@ static void FontData_Init(struct FontData *fontData, NarcId narcId, int fileId, NARC_ReadFromAbsolutePos(fontData->narc, fontData->gmifOffset + fontData->header.widthDataStart, fontData->header.numGlyphs, fontData->glyphWidths); } GF_ASSERT(fontData->header.glyphWidth <= 2 && fontData->header.glyphHeight <= 2); - fontData->glyphShape = _020F6324[fontData->header.glyphWidth - 1][fontData->header.glyphHeight - 1]; + fontData->glyphShape = (enum GlyphShape) _020F6324[fontData->header.glyphWidth - 1][fontData->header.glyphHeight - 1]; fontData->glyphSize = 16 * fontData->header.glyphWidth * fontData->header.glyphHeight; fontData->fileId = fileId; } diff --git a/src/pokemon.c b/src/pokemon.c index b24d26754a..6c76ff422f 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -976,7 +976,6 @@ void SetBoxMonData(BOXMON * boxmon, int attr, void * value) { static void SetBoxMonDataInternal(BOXMON * boxmon, int attr, const void * value) { #define VALUE(type) (*(const type *)value) - u8 flag; u64 mask; u32 i; u16 namebuf[POKEMON_NAME_LENGTH + 1]; diff --git a/src/string_control_code.c b/src/string_control_code.c index 31573f841c..71a116dd83 100644 --- a/src/string_control_code.c +++ b/src/string_control_code.c @@ -1,4 +1,5 @@ #include "pm_string.h" +#include "string_control_code.h" const u16 *MsgArray_SkipControlCode(const u16 *arr) { GF_ASSERT(*arr == EXT_CTRL_CODE_BEGIN); diff --git a/src/unk_02009D48.c b/src/unk_02009D48.c index 5e14a2dbde..9744887a03 100644 --- a/src/unk_02009D48.c +++ b/src/unk_02009D48.c @@ -98,7 +98,6 @@ void sub_02009F24(ListOfUnkStruct_02009D48 *list) { } SpriteList *G2dRenderer_Init(int a0, GF_G2dRenderer *a1, HeapID heapId) { - struct SpriteList *ret; struct SpriteListParam param; NNSG2dViewRect rect; diff --git a/src/unk_02068F84.c b/src/unk_02068F84.c index 6ff3a3e298..6f21a8c9ef 100644 --- a/src/unk_02068F84.c +++ b/src/unk_02068F84.c @@ -14,4 +14,4 @@ void sub_02068F98(u32 mapno, HeapID heapId, STRING *dest) { map_sec = MapHeader_GetMapSec(mapno); sub_02068F84(msgData, map_sec, dest); DestroyMsgData(msgData); -}; +} From 9463f008cf737eeb85e1c8842e6776ae68e6d5da Mon Sep 17 00:00:00 2001 From: Adrienn Tindall <33725376+adrienntindall@users.noreply.github.com> Date: Thu, 25 May 2023 03:49:29 -0500 Subject: [PATCH 05/12] Fix Overlay 6 Ported palette.h include file from working stash to assist with this --- include/overlay_06.h | 3 +- include/palette.h | 47 ++++++++++++++++++++++++++++-- include/unk_02014DA0.h | 1 + lib/include/nnsys/g2d.h | 1 + lib/include/nnsys/g2d/g2d_Sprite.h | 6 ++++ src/overlay_06.c | 10 +++---- 6 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 lib/include/nnsys/g2d/g2d_Sprite.h diff --git a/include/overlay_06.h b/include/overlay_06.h index 4ad77855f8..4aaff8f8d3 100644 --- a/include/overlay_06.h +++ b/include/overlay_06.h @@ -3,9 +3,10 @@ #include "heap.h" #include "unk_02014DA0.h" +#include "palette.h" const u16 *ov06_0221BA00(int param_1); -void ov06_0221BA1C(int param_1, int param_2, int unused, int param_4, u32 param_5); +void ov06_0221BA1C(PaletteData *palData, int param_2, int unused, int param_4, u32 param_5); ParticleSystem *ov06_0221BA40(HeapID heap_id); ParticleSystem *ov06_0221BA88(HeapID heap_id); void ov06_0221BAD8(ParticleSystem *param_1); diff --git a/include/palette.h b/include/palette.h index 3240f2cc33..7d76b66b92 100644 --- a/include/palette.h +++ b/include/palette.h @@ -1,9 +1,52 @@ #ifndef POKEHEARTGOLD_PALETTE_H #define POKEHEARTGOLD_PALETTE_H +#include "filesystem.h" #include "heap.h" +typedef struct SelectedPaletteData { + u16 unkC; + u16 wait:6; + u16 cur:5; + u16 end:5; + u16 nextRGB:15; + u16 sign:1; //0 - increase, 1 - decrease + u16 unk12; +} SelectedPaletteData; + +typedef struct PaletteBuffer { + u16 *opaque; + u16 *transparent; + u32 size; + SelectedPaletteData selected; +} PaletteBuffer; + +typedef struct PaletteData { + PaletteBuffer buffers[14]; + u16 selectedFlag:2; + u16 selectedBuffer:14; + u16 transparentBit:14; + u16 callbackFlag:1; + u16 autoTransparent:1; + u8 forceExit; + u8 unused[3]; +} PaletteData; + +PaletteData *PaletteData_Init(HeapID heapId); +void PaletteData_Free(PaletteData *data); +void PaletteData_SetBuffers(PaletteData *data, u32 bufferID, u16 *a2, u16 *a3, u32 size); +void PaletteData_AllocBuffers(PaletteData *data, u32 bufferID, u32 size, HeapID heapID); +void PaletteData_FreeBuffers(PaletteData *data, u32 bufferID); +void PaletteData_LoadFromNarc(PaletteData *data, NarcId narcID, s32 memberNo, HeapID heapID, u32 bufferID, u32 size, u16 pos, u16 readPos); +void PaletteData_LoadNarc(PaletteData *data, NarcId narcID, s32 memberNo, HeapID heapID, u32 bufferID, u32 size, u16 pos); +void sub_02003220(PaletteData *data, NARC *narc, u32 memberNo, HeapID heapID, u32 bufferID, u32 size, u16 pos, u16 readPos); +void sub_02003284(PaletteData *data, NARC *narc, u32 memberNo, HeapID heapID, u32 bufferID, u32 size, u16 pos); +void sub_020032A4(PaletteData *data, u32 bufferID, u16 pos, u32 size); +void PaletteData_CopyPalette(PaletteData *data, u32 srcBufferID, u16 srcPos, u32 destBufferID, u16 destPos, u16 size); +u16 *PaletteData_GetUnfadedBuf(PaletteData *data, u32 bufferID); +u8 sub_02003370(PaletteData *data, u16 bufferID, u16 opaqueBit, s8 wait, u8 cur, u8 end, u16 nextRGB); + void sub_0200398C(void*); -void *PaletteData_Init(HeapID heapId); +void PaletteData_LoadPalette(PaletteData *data, const u16 *a1, u32 a2, u32 a3, u32 a4); -#endif //POKEHEARTGOLD_PALETTE_H +#endif //POKEHEARTGOLD_PALETTE_H \ No newline at end of file diff --git a/include/unk_02014DA0.h b/include/unk_02014DA0.h index cc32519077..6a2ca30f40 100644 --- a/include/unk_02014DA0.h +++ b/include/unk_02014DA0.h @@ -24,5 +24,6 @@ void* sub_02015504(void); int sub_0201543C(void); void sub_02015460(void); void *sub_020154D0(ParticleSystem *mgr); +int sub_02015420(void); #endif //POKEHEARTGOLD_UNK_02014DA0_H diff --git a/lib/include/nnsys/g2d.h b/lib/include/nnsys/g2d.h index 3f17c01e90..e027283cf7 100644 --- a/lib/include/nnsys/g2d.h +++ b/lib/include/nnsys/g2d.h @@ -20,5 +20,6 @@ #include #include #include +#include #endif //NNSYS_G2D_H_ diff --git a/lib/include/nnsys/g2d/g2d_Sprite.h b/lib/include/nnsys/g2d/g2d_Sprite.h new file mode 100644 index 0000000000..1b15014624 --- /dev/null +++ b/lib/include/nnsys/g2d/g2d_Sprite.h @@ -0,0 +1,6 @@ +#ifndef NNSYS_G2D_G2D_SPRITE_H +#define NNSYS_G2D_G2D_SPRITE_H + +void NNS_G2dSetupSoftwareSpriteCamera(void); + +#endif diff --git a/src/overlay_06.c b/src/overlay_06.c index a5fe3c7372..a3f4c4a9b8 100644 --- a/src/overlay_06.c +++ b/src/overlay_06.c @@ -1,4 +1,6 @@ #include "overlay_06.h" +#include "palette.h" +#include "unk_02026E30.h" const u16 *ov06_0221BA00(int param_1) { if (param_1 != -1) { @@ -7,12 +9,10 @@ const u16 *ov06_0221BA00(int param_1) { return ov06_0221BB6C; } -void ov06_0221BA1C(int param_1, int param_2, int unused, int param_4, u32 param_5) { - const u16 *puVar1; +void ov06_0221BA1C(PaletteData *palData, int param_2, int unused, int param_4, u32 param_5) { + const u16 *puVar1 = ov06_0221BA00(param_2); - puVar1 = ov06_0221BA00(param_2); - - PaletteData_LoadPalette(param_1, puVar1, param_4, ((param_5 << 20) >> 16), 32); + PaletteData_LoadPalette(palData, puVar1, param_4, ((param_5 << 20) >> 16), 32); } ParticleSystem *ov06_0221BA40(HeapID heap_id) { From 0577ce4160dc38304f35e3c07a1a8ec375c8c0e4 Mon Sep 17 00:00:00 2001 From: Adrienn Tindall <33725376+adrienntindall@users.noreply.github.com> Date: Thu, 25 May 2023 04:30:35 -0500 Subject: [PATCH 06/12] up to Overlay 22 --- include/field_player_avatar.h | 3 ++- include/overlay_00_thumb.h | 1 + include/overlay_01_021EDAFC.h | 10 ++++++++++ include/overlay_01_021FE780.h | 8 ++++++++ include/overlay_01_02200858.h | 8 ++++++++ include/save_pokeathlon.h | 1 - include/unk_02031904.h | 4 ++++ include/use_item_on_mon.h | 3 +-- src/field_player_avatar.c | 6 ++++-- src/gf_rtc.c | 5 ++--- src/overlay_22.c | 3 ++- src/scrcmd_mart.c | 2 +- src/scrcmd_pokemon_misc.c | 2 +- src/system.c | 1 - src/unk_02055418.c | 2 +- src/use_item_on_mon.c | 1 + 16 files changed, 46 insertions(+), 14 deletions(-) create mode 100644 include/overlay_01_021EDAFC.h create mode 100644 include/overlay_01_021FE780.h create mode 100644 include/overlay_01_02200858.h diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index eaa190d63b..020976559b 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -39,6 +39,7 @@ u8 sub_0205C310(u32 unkA); u8 sub_0205C350(u32 unkA); PlayerAvatar *sub_0205C390(MapObjectMan *man, int x, int y, int direction, int a4, int gender, int a6, struct FlypointsPlayerSub *a7); PlayerAvatar *sub_0205C408(MapObjectMan *man, PlayerAvatar_SUB *avatar_sub, int gender); +void sub_0205C46C(PlayerAvatar* avatar); void PlayerAvatar_FreeToHeap(PlayerAvatar *avatar); void PlayerAvatar_DeleteFromMap(PlayerAvatar *avatar); PlayerAvatar *sub_0205C4E0(); @@ -96,7 +97,7 @@ void FlypointsPlayerSub_SetRunningShoesFlag(struct FlypointsPlayerSub *fpsub, BO int sub_0205C7EC(PlayerAvatar_SUB *avatar); void sub_0205C7F8(PlayerAvatar_SUB *unkPtr, int state); void sub_0205C800(PlayerAvatar *avatar, int state); -void sub_0205C810(PlayerAvatar *avatar, u32 unkA, u32 unkB); +void sub_0205C810(PlayerAvatar *avatar, VecFx32 *pos, u32 dir); void sub_0205C838(PlayerAvatar *avatar, int unkA); void PlayerAvatar_ToggleAutomaticHeightUpdating(PlayerAvatar *avatar, u8 unkA); void PlayerAvatar_ToggleAutomaticHeightUpdating_NowApply(PlayerAvatar *avatar, BOOL unkA); diff --git a/include/overlay_00_thumb.h b/include/overlay_00_thumb.h index 3bbd351856..1bfd40ef17 100644 --- a/include/overlay_00_thumb.h +++ b/include/overlay_00_thumb.h @@ -2,5 +2,6 @@ #define POKEHEARTGOLD_OVERLAY_00_THUMB_H s32 ov00_021E6A70(u32, u32); +int ov00_021E6EBC(void); #endif //POKEHEARTGOLD_OVERLAY_00_THUMB_H diff --git a/include/overlay_01_021EDAFC.h b/include/overlay_01_021EDAFC.h new file mode 100644 index 0000000000..3c0b45b1e7 --- /dev/null +++ b/include/overlay_01_021EDAFC.h @@ -0,0 +1,10 @@ +#ifndef POKEHEARTGOLD_OVERLAY_01_021EDAFC_H +#define POKEHEARTGOLD_OVERLAY_01_021EDAFC_H + +#include "field_system.h" +#include "window.h" + +void ov01_021EEC68(WINDOW *window); +void ov01_021EEC7C(FieldSystem *fsys, WINDOW *window, u8 type); + +#endif //POKEHEARTGOLD_OVERLAY_01_021EDAFC_H \ No newline at end of file diff --git a/include/overlay_01_021FE780.h b/include/overlay_01_021FE780.h new file mode 100644 index 0000000000..1424a10e04 --- /dev/null +++ b/include/overlay_01_021FE780.h @@ -0,0 +1,8 @@ +#ifndef POKEHEARTGOLD_OVERLAY_01_021FE780_H +#define POKEHEARTGOLD_OVERLAY_01_021FE780_H + +#include "map_object_manager.h" + +u32 ov01_021FE7DC(LocalMapObject *obj, u32 x, u32 y, u32 dir, u32 a4); + +#endif //POKEHEARTGOLD_OVERLAY_01_021FE780_H diff --git a/include/overlay_01_02200858.h b/include/overlay_01_02200858.h new file mode 100644 index 0000000000..242790d9e1 --- /dev/null +++ b/include/overlay_01_02200858.h @@ -0,0 +1,8 @@ +#ifndef POKEHEARTGOLD_OVERLAY_01_02200858_H +#define POKEHEARTGOLD_OVERLAY_01_02200858_H + +#include "field_player_avatar.h" + +void ov01_022008B4(PlayerAvatar *avatar); + +#endif //POKEHEARTGOLD_OVERLAY_01_02200858_H diff --git a/include/save_pokeathlon.h b/include/save_pokeathlon.h index 1465f32318..efafdd195f 100644 --- a/include/save_pokeathlon.h +++ b/include/save_pokeathlon.h @@ -25,7 +25,6 @@ typedef struct Pokeathlon_UnkSubStruct_B00 { typedef struct POKEATHLON_SAV POKEATHLON_SAV; //size: 0xB80 -POKEATHLON_SAV *Save_Pokeathlon_get(SAVEDATA *saveData); BOOL sub_02031A78(POKEATHLON_SAV *pokeathlon, int idx); BOOL sub_02031AB8(POKEATHLON_SAV *pokeathlon, int idx); void sub_02031AE4(POKEATHLON_SAV *pokeathlon); diff --git a/include/unk_02031904.h b/include/unk_02031904.h index 0f10275669..577df90328 100644 --- a/include/unk_02031904.h +++ b/include/unk_02031904.h @@ -5,5 +5,9 @@ Pokeathlon_UnkSubStruct_B00 *sub_020319F0(POKEATHLON_SAV *pokeathlonSave); Pokeathlon_UnkSubStruct_B00 *sub_0203199C(POKEATHLON_SAV *pokeathlonSave); +void SavePokeathlon_AddAthletePoints(POKEATHLON_SAV *pokeathlonSave, u16 amount); +void SavePokeathlon_SubAthletePoints(POKEATHLON_SAV *pokeathlonSave, u16 amount); +u32 SavePokeathlon_GetAthletePoints(POKEATHLON_SAV *pokeathlonSave); +POKEATHLON_SAV *Save_Pokeathlon_get(SAVEDATA *saveData); #endif //POKEHEARTGOLD_UNK_02031904_H \ No newline at end of file diff --git a/include/use_item_on_mon.h b/include/use_item_on_mon.h index c400e662e7..c468ef2a96 100644 --- a/include/use_item_on_mon.h +++ b/include/use_item_on_mon.h @@ -1,10 +1,9 @@ #ifndef POKEHEARTGOLD_USE_ITEM_ON_MON_H #define POKEHEARTGOLD_USE_ITEM_ON_MON_H +#include "item.h" #include "pokemon_types_def.h" -typedef struct ItemData ITEMDATA; - BOOL CanUseItemOnPokemon(POKEMON *pokemon, u16 itemID, s32 moveIdx, HeapID heapID); BOOL CanUseItemOnMonInParty(PARTY *party, u16 itemID, s32 partyIdx, s32 moveIdx, HeapID heapID); BOOL UseItemOnPokemon(POKEMON *pokemon, u16 itemID, u16 moveIdx, u16 location, HeapID heapID); diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 328b995384..62994ee18a 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -8,6 +8,8 @@ #include "unk_02034354.h" #include "unk_02035900.h" #include "unk_0205FD20.h" +#include "overlay_01_021FE780.h" +#include "overlay_01_02200858.h" #include "constants/global.fieldmap.h" #include "constants/sprites.h" @@ -483,8 +485,8 @@ void sub_0205C800(PlayerAvatar* avatar, int state) { sub_0205C7F8(sub_0205C798(avatar), state); } -void sub_0205C810(PlayerAvatar* avatar, u32 unkA, u32 unkB) { - sub_0205FBC0(PlayerAvatar_GetMapObject(avatar), unkA, unkB); +void sub_0205C810(PlayerAvatar* avatar, VecFx32 *pos, u32 dir) { + sub_0205FBC0(PlayerAvatar_GetMapObject(avatar), pos, dir); sub_0205C6C8(avatar, 0); sub_0205C6D0(avatar, 0); } diff --git a/src/gf_rtc.c b/src/gf_rtc.c index bcb9b4f5a3..5a4d2d0e3b 100644 --- a/src/gf_rtc.c +++ b/src/gf_rtc.c @@ -101,7 +101,6 @@ static inline BOOL IsLeapYear(s32 year) { } s32 GF_RTC_GetDayOfYear(const RTCDate * date) { - RTCDate date_stack; s32 days; static const u16 sGF_DaysPerMonth[] = { 0, // Jan @@ -167,7 +166,7 @@ TIMEOFDAY GF_RTC_GetTimeOfDayByHour(s32 hour) { }; GF_ASSERT(hour >= 0 && hour < 24); - return sTimeOfDayByHour[hour]; + return (TIMEOFDAY) sTimeOfDayByHour[hour]; } TimeOfDayWildParam GF_RTC_GetTimeOfDayWildParamByHour(s32 hour) { @@ -183,7 +182,7 @@ TimeOfDayWildParam GF_RTC_GetTimeOfDayWildParamByHour(s32 hour) { } s64 GF_RTC_TimeDelta(s64 first, s64 last) { - RTCDate maxDate = { 99, 12, 31, 0 }; + RTCDate maxDate = { 99, 12, 31, RTC_WEEK_SUNDAY }; RTCTime maxTime = { 23, 59, 59 }; s64 check = RTC_ConvertDateTimeToSecond(&maxDate, &maxTime); diff --git a/src/overlay_22.c b/src/overlay_22.c index 0db0feee44..e80cf51720 100644 --- a/src/overlay_22.c +++ b/src/overlay_22.c @@ -1,8 +1,9 @@ #include "coins.h" #include "fieldmap.h" -#include "save_pokeathlon.h" +#include "unk_02031904.h" #include "script.h" #include "scrcmd.h" +#include "overlay_01_021EDAFC.h" extern WINDOW *ov01_021EEC00(struct FieldSystem *fsys, u8 type, u8 x, u8 y); diff --git a/src/scrcmd_mart.c b/src/scrcmd_mart.c index e7e9ced090..2b467d2581 100644 --- a/src/scrcmd_mart.c +++ b/src/scrcmd_mart.c @@ -2,7 +2,7 @@ #include "mart.h" #include "event_data.h" #include "pokedex.h" -#include "save_pokeathlon.h" +#include "unk_02031904.h" #include "constants/items.h" #include "constants/decorations.h" #include "constants/seals.h" diff --git a/src/scrcmd_pokemon_misc.c b/src/scrcmd_pokemon_misc.c index 6f66469b2e..a6a1a617dd 100644 --- a/src/scrcmd_pokemon_misc.c +++ b/src/scrcmd_pokemon_misc.c @@ -10,7 +10,7 @@ #include "overlay_01_021F72DC.h" #include "overlay_02.h" #include "overlay_03.h" -#include "save_pokeathlon.h" +#include "unk_02031904.h" #include "scrcmd.h" #include "unk_0206D494.h" #include "unk_02031AF0.h" diff --git a/src/system.c b/src/system.c index 19d749c7d2..6af0bf71ac 100644 --- a/src/system.c +++ b/src/system.c @@ -241,7 +241,6 @@ void Sys_ClearSleepDisableFlag(int a0) { void ReadKeypadAndTouchpad(void) { TPData rawTpData, calibTpData; - u32 tpSamplingResult; int raw; if (PAD_DetectFold()) { gSystem.newKeys = 0; diff --git a/src/unk_02055418.c b/src/unk_02055418.c index f7d78461dd..2dd19361d3 100644 --- a/src/unk_02055418.c +++ b/src/unk_02055418.c @@ -12,7 +12,7 @@ #include "unk_0202CA24.h" #include "unk_02031B0C.h" #include "unk_02097268.h" -#include "save_pokeathlon.h" +#include "unk_02031904.h" #include "fieldmap.h" #include "unk_0206D494.h" #include "overlay_01.h" diff --git a/src/use_item_on_mon.c b/src/use_item_on_mon.c index e86d656df3..f32ced9056 100644 --- a/src/use_item_on_mon.c +++ b/src/use_item_on_mon.c @@ -1,6 +1,7 @@ #include "use_item_on_mon.h" #include "item.h" #include "pokemon.h" +#include "pokemon_mood.h" #include "party.h" #include "constants/moves.h" #include "constants/items.h" From 3ccefba4c9e7d17cd33ceeea99a3a86f40fe0066 Mon Sep 17 00:00:00 2001 From: Adrienn Tindall <33725376+adrienntindall@users.noreply.github.com> Date: Fri, 26 May 2023 05:33:59 -0500 Subject: [PATCH 07/12] Up to main.c --- include/battle_setup.h | 6 ++++++ include/encounter.h | 5 ++++- include/get_egg.h | 1 + include/mail.h | 2 ++ include/main.h | 1 + include/math_util.h | 1 + include/overlay_01_021E6880.h | 1 + include/overlay_01_021EDAFC.h | 2 ++ include/overlay_01_021F72DC.h | 3 ++- include/overlay_01_021F944C.h | 2 ++ include/overlay_02.h | 4 ++++ include/overlay_03.h | 1 + include/overlay_80.h | 1 + include/pokedex.h | 1 + include/sound_02004A44.h | 1 + include/unk_02004A44.h | 6 ++++++ include/unk_02023694.h | 1 + include/unk_020290B4.h | 1 + include/unk_0202FBCC.h | 6 ++++++ include/unk_02031B0C.h | 3 +++ include/unk_02037C94.h | 1 + include/unk_0203E348.h | 1 + include/unk_020557E0.h | 3 +++ include/unk_0206D494.h | 1 + src/encounter.c | 15 ++++++++++++++- src/field_follow_poke.c | 2 -- src/get_egg.c | 1 - src/gf_gfx_loader.c | 4 ++-- src/main.c | 5 +++-- src/npc_trade.c | 2 -- src/pokedex.c | 1 - src/save.c | 3 --- src/scrcmd_c.c | 16 ++++++++-------- src/scrcmd_moneybox.c | 1 + src/scrcmd_pokemon_misc.c | 19 ++++++++++--------- src/unk_02097720.c | 1 + 36 files changed, 92 insertions(+), 33 deletions(-) create mode 100644 include/unk_02004A44.h diff --git a/include/battle_setup.h b/include/battle_setup.h index 76d46b2ebb..cc05b3dfa6 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -68,5 +68,11 @@ int sub_02052564(u32 a0); int sub_02052574(u32 a0); void BattleSetup_Delete(BATTLE_SETUP *setup); BATTLE_SETUP *sub_02051AAC(HeapID heapId, FieldSystem *fsys); +void sub_02052444(BATTLE_SETUP *setup, FieldSystem *fsys); +void BattleSetup_InitFromFsys(BATTLE_SETUP *setup, FieldSystem *fsys); +BATTLE_SETUP *BattleSetup_New(HeapID heapId, u32 battleFlags); +void sub_020522F0(BATTLE_SETUP *setup, FieldSystem *fsys, void *a1); +void sub_02051F2C(BATTLE_SETUP *setup, FieldSystem *fsys, int level); +void sub_020520B0(BATTLE_SETUP *setup, FieldSystem *fsys, PARTY *party, void *a4); #endif //POKEHEARTGOLD_BATTLE_SETUP_H diff --git a/include/encounter.h b/include/encounter.h index 9b2cf42110..9f7093685f 100644 --- a/include/encounter.h +++ b/include/encounter.h @@ -30,7 +30,10 @@ void SetupAndStartTutorialBattle(TaskManager *taskManager); void SetupAndStartTrainerBattle(TaskManager *taskManager, u32 opponentTrainer1, u32 opponentTrainer2, u32 followerTrainerNum, u32 a4, u32 a5, HeapID heapId, int *winFlag); void sub_02050B90(FieldSystem *fsys, TaskManager *taskManager, BATTLE_SETUP *setup); void sub_0205239C(BATTLE_SETUP *setup, FieldSystem *fsys); -BATTLE_SETUP *BattleSetup_New(HeapID heapId, int battleType); void sub_02050AAC(TaskManager *man, BATTLE_SETUP *setup, int effect, int bgm, int *winFlag); +void sub_020511F8(FieldSystem *fsys, BATTLE_SETUP *setup); +void sub_020515FC(FieldSystem *fsys, PARTY *party, int battleFlags); +void sub_02051598(FieldSystem *fsys, void *a1, int battleFlags); +void sub_020514A4(TaskManager *man, int target, int maxLevel, int flag); #endif //POKEHEARTGOLD_ENCOUNTER_H diff --git a/include/get_egg.h b/include/get_egg.h index 3bd1e99307..00e3829a46 100644 --- a/include/get_egg.h +++ b/include/get_egg.h @@ -4,6 +4,7 @@ #include "daycare.h" #include "script.h" +BOXMON *Daycare_GetBoxMonI(DAYCARE *daycare, int idx); void Sav2_DayCare_PutMonIn(PARTY *party, u8 partyIdx, DAYCARE *dayCare, SAVEDATA *saveData); u16 Sav2_DayCare_RetrieveMon(PARTY *party, MessageFormat *msgFmt, DAYCARE *daycare, u8 whomst); int DayCareMon_CalcLevelGrowth(DAYCAREMON *daycareMon); diff --git a/include/mail.h b/include/mail.h index f541496863..3e987879f9 100644 --- a/include/mail.h +++ b/include/mail.h @@ -20,6 +20,7 @@ BOOL Mail_TypeIsValid(MAIL *mail); BOOL Mail_compare(const MAIL *a, const MAIL *b); void Mail_SetNewMessageDetails(MAIL *mail, u8 mailType, u8 mon_no, SAVEDATA *saveData); u32 Mail_GetOTID(const MAIL *mail); +u16 *Mail_GetAuthorNamePtr(MAIL *mail); u8 Mail_GetAuthorGender(const MAIL *mail); u8 Mail_GetType(const MAIL *mail); void Mail_SetType(MAIL *mail, u8 mailType); @@ -27,6 +28,7 @@ u8 Mail_GetLanguage(const MAIL *mail); u8 Mail_GetVersion(const MAIL *mail); u16 sub_0202B404(MAIL *mail, u8 r1, u8 r4, u16 r3); u16 sub_0202B4E4(const MAIL *mail); +MAIL_MESSAGE *Mail_GetUnk20Array(MAIL *mail, int i); void Mail_SetMessage(MAIL *mail, const MAIL_MESSAGE *src, int i); MAILBOX *Sav2_Mailbox_get(SAVEDATA *saveData); u32 Sav2_Mailbox_sizeof(void); diff --git a/include/main.h b/include/main.h index 17f4f42a85..a07a952b03 100644 --- a/include/main.h +++ b/include/main.h @@ -10,6 +10,7 @@ struct UnkStruct_02111868_sub { SAVEDATA *savedata; }; +void NitroMain(void); void Main_ResetOverlayManager(void); void RegisterMainOverlay(FSOverlayID overlayId, const OVY_MGR_TEMPLATE *template); void InitializeMainRNG(void); diff --git a/include/math_util.h b/include/math_util.h index cf1e493d3a..dbf15737b6 100644 --- a/include/math_util.h +++ b/include/math_util.h @@ -24,6 +24,7 @@ void SetMTRNGSeed(u32 seed); u32 MTRandom(void); void _MonEncryptSegment(u16 *data, u32 size, u32 seed); void _MonDecryptSegment(u16 *data, u32 size, u32 seed); +fx32 sub_02096594(void); static inline u16 LCRandRange(const u16 maximum) { GF_ASSERT(maximum != 0); diff --git a/include/overlay_01_021E6880.h b/include/overlay_01_021E6880.h index 1563ca9fe5..bb52b102fe 100644 --- a/include/overlay_01_021E6880.h +++ b/include/overlay_01_021E6880.h @@ -8,5 +8,6 @@ int ov01_021E6AF4(Unk_0203E15C *a0, FieldSystem *fsys); BOOL ov01_021E6E00(Unk_0203E15C *a0, FieldSystem *fsys); BOOL ov01_021E6EFC(Unk_0203E15C *a0, FieldSystem *fsys); BOOL ov01_021E6FD4(Unk_0203E15C *a0, FieldSystem *fsys); +void ov01_021E7F00(FieldSystem *fsys, BOOL a1); #endif diff --git a/include/overlay_01_021EDAFC.h b/include/overlay_01_021EDAFC.h index 3c0b45b1e7..7245c7081c 100644 --- a/include/overlay_01_021EDAFC.h +++ b/include/overlay_01_021EDAFC.h @@ -6,5 +6,7 @@ void ov01_021EEC68(WINDOW *window); void ov01_021EEC7C(FieldSystem *fsys, WINDOW *window, u8 type); +void MoneyBoxSys_Delete(WINDOW *moneybox); +void MoneyBoxSys_Update(FieldSystem *fsys, WINDOW *moneybox); #endif //POKEHEARTGOLD_OVERLAY_01_021EDAFC_H \ No newline at end of file diff --git a/include/overlay_01_021F72DC.h b/include/overlay_01_021F72DC.h index 0669d14540..4485382772 100644 --- a/include/overlay_01_021F72DC.h +++ b/include/overlay_01_021F72DC.h @@ -2,7 +2,8 @@ #define POKEHEARTGOLD_OVERLAY_01_021F72DC_H #include "field_map_object.h" +#include "unk_02023694.h" -u32 *ov01_021F72DC(LocalMapObject *obj); +Sprite *ov01_021F72DC(LocalMapObject *obj); #endif //POKEHEARTGOLD_OVERLAY_01_021F72DC_H diff --git a/include/overlay_01_021F944C.h b/include/overlay_01_021F944C.h index 15cc198565..b75f8b548c 100644 --- a/include/overlay_01_021F944C.h +++ b/include/overlay_01_021F944C.h @@ -2,8 +2,10 @@ #define POKEHEARTGOLD_OVERLAY_01_021F944C_H #include "field_player_avatar.h" +#include "unk_02023694.h" BOOL ov01_021FA2D4(LocalMapObject *obj); void ov01_021FA930(LocalMapObject *obj, u32 sprite); +void ov01_021FA3E8(LocalMapObject *obj, Sprite *a1); #endif //POKEHEARTGOLD_OVERLAY_01_021F944C_H diff --git a/include/overlay_02.h b/include/overlay_02.h index eb0d12bb01..d234c4e11c 100644 --- a/include/overlay_02.h +++ b/include/overlay_02.h @@ -98,5 +98,9 @@ int ov02_022531B4(SAVEDATA *saveData); BOOL ov02_022470A0(FieldSystem *fsys, BATTLE_SETUP **a1); void ov02_BattleExit_HandleRoamerAction(FieldSystem *fsys, BATTLE_SETUP *setup); void ov02_02247F30(FieldSystem *fsys, u16 mon, u8 level, BOOL shiny, BATTLE_SETUP *setup); +void ov02_02246714(TaskManager *man, u32 a1, u32 a2, u32 a3, u32 a4); +void ov02_022469B4(TaskManager *man, LocalMapObject *obj1, LocalMapObject *obj2); +void OpenAlphHiddenRoom(TaskManager *man, u32 a1); +int GetRadioMusicPlayingSeq(void); #endif //POKEHEARTGOLD_OVERLAY_02_H diff --git a/include/overlay_03.h b/include/overlay_03.h index c24075dcd3..2c773c71a4 100644 --- a/include/overlay_03.h +++ b/include/overlay_03.h @@ -19,5 +19,6 @@ u16 ov03_02256A2C(FieldSystem *fsys, MessageFormat *msgFmt, u16 a2); void ov03_02256710(FieldSystem *fsys, u16 a1); void ov03_02258910(FieldSystem *fsys); void ov03_02258CFC(TaskManager *taskManager, enum PokeathlonData data); +int ov03_02256B40(int); #endif //POKEHEARTGOLD_OVERLAY_03_H diff --git a/include/overlay_80.h b/include/overlay_80.h index c5c600ec44..85fd39242e 100644 --- a/include/overlay_80.h +++ b/include/overlay_80.h @@ -5,5 +5,6 @@ BOOL BattleArcade_MultiplayerCheck(int type); int ov80_022384BC(u8 a0); u8 BattleArcade_GetMonCount(u8 type, int a1); u8 BattleArcade_GetOpponentMonCount(u8 type, int a1); +void sub_0202FC24(void); #endif //POKEHEARTGOLD_OVERLAY_80_H diff --git a/include/pokedex.h b/include/pokedex.h index 6adbc01bdc..3619b50a3b 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -75,5 +75,6 @@ BOOL Pokedex_IsEnabled(const POKEDEX *pokedex); void Pokedex_Enable(POKEDEX *pokedex); int Pokedex_GetSeenFormeByIdx(POKEDEX *pokedex, int species, int idx); int Pokedex_GetSeenFormeNum(POKEDEX *pokedex, int species); +void UpdatePokedexWithReceivedSpecies(SAVEDATA *saveData, POKEMON *pokemon); #endif //POKEHEARTGOLD_POKEDEX_H diff --git a/include/sound_02004A44.h b/include/sound_02004A44.h index 7eb326f348..a722c9a81d 100644 --- a/include/sound_02004A44.h +++ b/include/sound_02004A44.h @@ -42,5 +42,6 @@ void GF_SND_BGM_DisableSet(u8 a0); BOOL sub_02005518(void); void sub_02004EC4(int a0, u16 a1, int a2); void GF_SetVolumeBySeqNo(u16 a0, u16 a1); +void GF_SndHandleSetPlayerVolume(u32 a0, u32 a1); #endif //POKEHEARTGOLD_SOUND_02004A44_H diff --git a/include/unk_02004A44.h b/include/unk_02004A44.h new file mode 100644 index 0000000000..f074ef1d38 --- /dev/null +++ b/include/unk_02004A44.h @@ -0,0 +1,6 @@ +#ifndef POKEHEARTGOLD_UNK_02004A44_H +#define POKEHEARTGOLD_UNK_02004A44_H + +void sub_02004AD8(int a0); + +#endif //POKEHEARTGOLD_UNK_02004A44_H diff --git a/include/unk_02023694.h b/include/unk_02023694.h index 1b77e85635..2a72463686 100644 --- a/include/unk_02023694.h +++ b/include/unk_02023694.h @@ -36,5 +36,6 @@ void sub_020247D4(Sprite *, VecFx32 *); VecFx32 *sub_020248AC(Sprite *); void sub_02024868(Sprite *, int); void sub_02024950(Sprite *, int); +void sub_02023EA4(Sprite *, int); #endif //POKEHEARTGOLD_UNK_02023694_H diff --git a/include/unk_020290B4.h b/include/unk_020290B4.h index 0116881acd..fbd8617510 100644 --- a/include/unk_020290B4.h +++ b/include/unk_020290B4.h @@ -4,5 +4,6 @@ #include "save.h" BOOL sub_020291A4(SAVEDATA *saveData, int a1); +int sub_02029264(void *a0); #endif //POKEHEARTGOLD_UNK_020290B4_H diff --git a/include/unk_0202FBCC.h b/include/unk_0202FBCC.h index f9108faaf7..2cbb02fb7b 100644 --- a/include/unk_0202FBCC.h +++ b/include/unk_0202FBCC.h @@ -1,8 +1,14 @@ #ifndef POKEHEARTGOLD_UNK_0202FBCC_H #define POKEHEARTGOLD_UNK_0202FBCC_H +#include "save.h" +#include "heap.h" + struct UnkStruct_0202FBCC { u8 filler_0000[0x1D50]; }; // related to Battle Hall, size=0x1D50 +void sub_0202FBF0(SAVEDATA *save, HeapID heapId, u32 *out); +BOOL sub_0202FC48(void); + #endif //POKEHEARTGOLD_UNK_0202FBCC_H diff --git a/include/unk_02031B0C.h b/include/unk_02031B0C.h index 3184a4d144..6127b2f93b 100644 --- a/include/unk_02031B0C.h +++ b/include/unk_02031B0C.h @@ -20,5 +20,8 @@ STRING *sub_020322AC(SaveApricornBox *apricornBox, u16 a1, u32 a2); STRING *sub_02032308(SaveApricornBox *apricornBox, u16 a1, u32 a2); int ApricornBox_CountApricorn(SaveApricornBox *apricornBox, u32 a1); void ApricornBox_GiveApricorn(SaveApricornBox *apricornBox, u16 a1, u8 a2); +int ApricornBox_GetKurtQuantity(SaveApricornBox *apricornBox); +void ApricornBox_SetKurtApricorn(SaveApricornBox *apricornBox, u32 a0, u32 a1); +int ApricornBox_GetKurtBall(SaveApricornBox *apricornBox); #endif //POKEHEARTGOLD_UNK_02031B0C_H diff --git a/include/unk_02037C94.h b/include/unk_02037C94.h index 04851e711f..03e0cdbdf7 100644 --- a/include/unk_02037C94.h +++ b/include/unk_02037C94.h @@ -15,5 +15,6 @@ BOOL sub_02039AA4(void); int sub_020399B8(void); BOOL sub_02038D90(void); BOOL sub_0203A05C(SAVEDATA *saveData); +void sub_02039F68(void); #endif //POKEHEARTGOLD_UNK_02037C94_H diff --git a/include/unk_0203E348.h b/include/unk_0203E348.h index a8a3d3a9b6..072b1373e2 100644 --- a/include/unk_0203E348.h +++ b/include/unk_0203E348.h @@ -160,5 +160,6 @@ void LaunchCreditsApp(FieldSystem *fsys, CreditsAppArgs *args); void LocationData_BackUp(Location *data); void LocationData_Restore(Location *data); void sub_0203E3C4(FieldSystem *fsys, BATTLE_SETUP *battleSetup); +u32 *LaunchVoltorbFlipApp(FieldSystem *fsys, u32 luck); #endif //POKEHEARTGOLD_UNK_0203E348_H diff --git a/include/unk_020557E0.h b/include/unk_020557E0.h index c043e20648..7f92b9a6af 100644 --- a/include/unk_020557E0.h +++ b/include/unk_020557E0.h @@ -3,6 +3,7 @@ #include "script.h" #include "unk_0202EB30.h" +#include "battle_setup.h" void sub_020557E0(FieldSystem *fsys); void sub_020557F8(FieldSystem *fsys); @@ -11,5 +12,7 @@ void sub_0202EC70(struct UnkStruct_0202EB30 *a0, int i, POKEMON *pokemon); int sub_020558D0(FieldSystem *fsys); int sub_020558E0(FieldSystem *fsys); int sub_020558F0(FieldSystem *fsys); +void sub_020558AC(FieldSystem *fsys, BATTLE_SETUP *setup); +int sub_020558BC(FieldSystem *fsys); #endif //POKEHEARTGOLD_UNK_020557E0_H diff --git a/include/unk_0206D494.h b/include/unk_0206D494.h index a2440167e6..949595e105 100644 --- a/include/unk_0206D494.h +++ b/include/unk_0206D494.h @@ -12,5 +12,6 @@ u16 *BugContest_GetSportBallsAddr(BUGCONTEST *contest); void FieldSys_IncrementBugContestTimer(FieldSystem *fsys, int a1); void Fsys_InitMystriStageGymmick(FieldSystem *fsys); void sub_0206DB58(TaskManager *taskman, FieldSystem *fsys); +void sub_0206DB94(TaskManager *man, int a1); #endif //POKEHEARTGOLD_UNK_0206D494_H diff --git a/src/encounter.c b/src/encounter.c index 0f4fe79742..a0e16267f6 100644 --- a/src/encounter.c +++ b/src/encounter.c @@ -1,9 +1,15 @@ #include "battle_setup.h" #include "encounter.h" #include "field_black_out.h" +#include "field_map_object.h" #include "field_system.h" +#include "field_warp_tasks.h" #include "game_clear.h" +#include "game_stats.h" #include "overlay_02.h" +#include "overlay_03.h" +#include "overlay_80.h" +#include "pokedex_util.h" #include "use_item_on_mon.h" #include "save_arrays.h" #include "save_flypoints.h" @@ -16,6 +22,14 @@ #include "unk_02055244.h" #include "unk_02092BE8.h" #include "unk_0206D494.h" +#include "unk_020552A4.h" +#include "unk_02034354.h" +#include "unk_02004A44.h" +#include "unk_02066EDC.h" +#include "unk_020557E0.h" +#include "unk_0202FBCC.h" +#include "unk_020290B4.h" +#include "unk_02058034.h" #include "constants/std_script.h" static void sub_02051660(FieldSystem *fsys, BATTLE_SETUP *setup); @@ -668,7 +682,6 @@ void SetupAndStartTutorialBattle(TaskManager *man) { void SetupAndStartTrainerBattle(TaskManager *man, u32 opponentTrainer1, u32 opponentTrainer2, u32 followerTrainerNum, u32 a4, u32 a5, HeapID heapId, int *winFlag) { u32 battleFlags; - ENCOUNTER *encounter; BATTLE_SETUP *setup; FieldSystem *fsys = TaskManager_GetSys(man); diff --git a/src/field_follow_poke.c b/src/field_follow_poke.c index e5a3dd7501..8fcb9f8eda 100644 --- a/src/field_follow_poke.c +++ b/src/field_follow_poke.c @@ -1513,7 +1513,6 @@ LocalMapObject *sub_020699F8(MapObjectMan *mapObjectMan, int x, int y, int direc int gender; int shiny; int player_unk; - LocalMapObject *followPokeObj; fsys = MapObjectMan_GetFieldSysPtr(mapObjectMan); party = SavArray_PlayerParty_get(fsys->savedata); @@ -1688,7 +1687,6 @@ u8 sub_02069E14(LocalMapObject *mapObject) { void sub_02069E28(LocalMapObject *mapObject, u32 a1) { int param; - u8 r1; u16 r2; u16 b; diff --git a/src/get_egg.c b/src/get_egg.c index c1d228a6e1..18bb72fec2 100644 --- a/src/get_egg.c +++ b/src/get_egg.c @@ -450,7 +450,6 @@ static void InheritMoves(POKEMON *egg, BOXMON *dad, BOXMON *mom) { u16 learnset_size; u16 egg_forme; u16 i, j; - u16 move; u16 r5; struct EggMoveSearch *search; diff --git a/src/gf_gfx_loader.c b/src/gf_gfx_loader.c index a0d4473a82..8bcefa879e 100644 --- a/src/gf_gfx_loader.c +++ b/src/gf_gfx_loader.c @@ -334,14 +334,14 @@ static void GfGfxLoader_PartiallyLoadPaletteInternal(void *data, NNS_G2D_VRAM_TY // The two functions below represent routines that were deadstripped in hgss. // However, there is a bug in mwcc which causes static objects defined inside // the scope of a deadstripped routine to not themselves be deadstripped. -void foo() { +static void foo() { static void (*const _020F5958[])(const NNSG2dCharacterData *pSrcData, u32 baseAddr, NNS_G2D_VRAM_TYPE type, NNSG2dImageProxy *pImgProxy) = { NNS_G2dLoadImage1DMapping, NNS_G2dLoadImage2DMapping, }; } -void bar() { +static void bar() { static void (*const _020F5960[])(const void *data, u32 offset, u32 size) = { GX_LoadOBJ, GXS_LoadOBJ, diff --git a/src/main.c b/src/main.c index 40ecefcfb5..a8125fcc71 100644 --- a/src/main.c +++ b/src/main.c @@ -18,6 +18,7 @@ #include "communication_error.h" #include "math_util.h" #include "unk_020210A0.h" +#include "unk_0200B380.h" FS_EXTERN_OVERLAY(OVY_60); FS_EXTERN_OVERLAY(OVY_36); @@ -163,7 +164,7 @@ void RegisterMainOverlay(FSOverlayID overlayId, const OVY_MGR_TEMPLATE *template _02111868.queuedMainOverlayTemplate = template; } -void sub_02000F14(void) { +static void sub_02000F14(void) { sub_02036144(); OS_WaitIrq(TRUE, OS_IE_VBLANK); gSystem.vblankCounter++; @@ -173,7 +174,7 @@ void sub_02000F14(void) { } } -void sub_02000F40(u32 param) { +static void sub_02000F40(u32 param) { if (sub_02039AA4() && CARD_TryWaitBackupAsync() == TRUE) { OS_ResetSystem(param); } diff --git a/src/npc_trade.c b/src/npc_trade.c index 3235bb5307..72d9e27350 100644 --- a/src/npc_trade.c +++ b/src/npc_trade.c @@ -83,10 +83,8 @@ void NPCTrade_MakeAndGiveLoanMon(FieldSystem *fsys, u8 tradeno, u8 level, u16 ma } MAIL *NPCTrade_MakeKenyaMail(void) { - PARTY *party; POKEMON *pokemon; NPC_TRADE *trade_dat; - POKEMON *givenMon; STRING *name; MAIL *mail; u8 mailno; diff --git a/src/pokedex.c b/src/pokedex.c index 75d5da903f..160b756324 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -428,7 +428,6 @@ static void Pokedex_SetCaughtLanguage(POKEDEX *pokedex, u32 species, u32 languag } static int Pokedex_SpeciesGetLastSeenGender_Internal(POKEDEX *pokedex, u16 species, u32 idx) { - int ratio; u8 gender1, gender2; if (GetMonBaseStat(species, BASE_GENDER_RATIO) == MON_RATIO_UNKNOWN) { diff --git a/src/save.c b/src/save.c index 17f3e0121d..a0ccb43be8 100644 --- a/src/save.c +++ b/src/save.c @@ -1083,8 +1083,6 @@ void *sub_020284A4(SAVEDATA *saveData, HeapID heapId, int idx, int *ret_p, int * void *ret; BOOL valid1; BOOL valid2; - u32 saveno1; - u32 saveno2; SAVE_MISC_DATA *misc; misc = Sav2_Misc_get(saveData); @@ -1208,7 +1206,6 @@ static void FlashWriteCommandCallback(void *arg) { static s32 FlashWriteChunkInternal(u32 offset, void *data, u32 size) { s32 lock; - BOOL result; u32 sp14; lock = OS_GetLockID(); diff --git a/src/scrcmd_c.c b/src/scrcmd_c.c index 3835876018..abb0e45c30 100644 --- a/src/scrcmd_c.c +++ b/src/scrcmd_c.c @@ -235,7 +235,7 @@ BOOL ScrCmd_CopyByte(SCRIPTCONTEXT* ctx) { return FALSE; } -/*static*/ u8 Compare(u32 a, u32 b) { +static u8 Compare(u32 a, u32 b) { if (a < b) { return SCRIPT_COMPARISON_RESULT_LESS; } else if (a == b) { @@ -971,7 +971,7 @@ BOOL ScrCmd_RemoveWaitingIcon(SCRIPTCONTEXT *ctx) { return FALSE; } -void sub_02041770(SCRIPTCONTEXT *ctx, struct UnkStruct_ov01_021EDC28 **a1, MSGDATA *msgData) { +static void sub_02041770(SCRIPTCONTEXT *ctx, struct UnkStruct_ov01_021EDC28 **a1, MSGDATA *msgData) { FieldSystem *fsys = ctx->fsys; MessageFormat **msgFmt = FieldSysGetAttrAddr(fsys, SCRIPTENV_MESSAGE_FORMAT); u8 x = ScriptReadByte(ctx); @@ -1281,7 +1281,7 @@ static inline void _ResetMovementPauseWaitFlags(void) { _021D415C = 0; } -BOOL _WaitMovementPauseBeforeMsg(SCRIPTCONTEXT *ctx) { +static BOOL _WaitMovementPauseBeforeMsg(SCRIPTCONTEXT *ctx) { FieldSystem *fsys = ctx->fsys; LocalMapObject **p_lastInteracted = FieldSysGetAttrAddr(fsys, SCRIPTENV_LAST_INTERACTED); LocalMapObject *playerObj = PlayerAvatar_GetMapObject(fsys->playerAvatar); @@ -1748,7 +1748,7 @@ BOOL ScrNative_WaitApplication_DestroyTaskData(SCRIPTCONTEXT *ctx) { return TRUE; } -BOOL sub_020429A0(SCRIPTCONTEXT *ctx) { +static BOOL sub_020429A0(SCRIPTCONTEXT *ctx) { FieldSystem *fsys = ctx->fsys; void **p_work = FieldSysGetAttrAddr(fsys, SCRIPTENV_RUNNING_APP_DATA); if (FieldSys_ApplicationIsRunning(fsys)) { @@ -1760,7 +1760,7 @@ BOOL sub_020429A0(SCRIPTCONTEXT *ctx) { return TRUE; } -BOOL sub_020429D4(SCRIPTCONTEXT *ctx) { +static BOOL sub_020429D4(SCRIPTCONTEXT *ctx) { FieldSystem *fsys = ctx->fsys; void **p_work = FieldSysGetAttrAddr(fsys, SCRIPTENV_RUNNING_APP_DATA); if (!sub_020970C0(*p_work)) { @@ -1788,7 +1788,7 @@ BOOL ScrCmd_436(SCRIPTCONTEXT *ctx) { return TRUE; } -BOOL sub_02042A30(FieldSystem *fsys, int a1, int a2) { +static BOOL sub_02042A30(FieldSystem *fsys, int a1, int a2) { SaveDressupData *dressupData = Save_DressupData_get(fsys->savedata); if (a1 == 0) { if (!sub_0202B9EC(dressupData, a2)) { @@ -1802,7 +1802,7 @@ BOOL sub_02042A30(FieldSystem *fsys, int a1, int a2) { return TRUE; } -DressupPokemonAppData *sub_02042A60(HeapID heapId, FieldSystem *fsys, int a2, int a3) { +static DressupPokemonAppData *sub_02042A60(HeapID heapId, FieldSystem *fsys, int a2, int a3) { SaveDressupData *saveDressupData = Save_DressupData_get(fsys->savedata); DressupPokemonAppData *dressupAppData; if (!sub_02042A30(fsys, a2, a3)) { @@ -5042,7 +5042,7 @@ BOOL sub_02047908(struct UnkStruct_ov01_021EDC28 *menu, int idx) { return FALSE; } -u32 GetMaxBankTransactionAmount(FieldSystem *fsys, int action) { +static u32 GetMaxBankTransactionAmount(FieldSystem *fsys, int action) { u32 ret; u32 wallet = PlayerProfile_GetMoney(Sav2_PlayerData_GetProfileAddr(fsys->savedata)); u32 bank = MomSavingsBalanceAction(SaveData_GetMomsSavingsAddr(fsys->savedata), MOMS_BALANCE_GET, 0); diff --git a/src/scrcmd_moneybox.c b/src/scrcmd_moneybox.c index b1906676ce..f1cb625b44 100644 --- a/src/scrcmd_moneybox.c +++ b/src/scrcmd_moneybox.c @@ -1,4 +1,5 @@ #include "scrcmd.h" +#include "overlay_01_021EDAFC.h" extern WINDOW *Fsys_ShowMoneyBox(FieldSystem *, u8, u8); diff --git a/src/scrcmd_pokemon_misc.c b/src/scrcmd_pokemon_misc.c index a6a1a617dd..c15709c2b9 100644 --- a/src/scrcmd_pokemon_misc.c +++ b/src/scrcmd_pokemon_misc.c @@ -8,6 +8,8 @@ #include "pokedex.h" #include "list_menu.h" #include "overlay_01_021F72DC.h" +#include "overlay_01_021F944C.h" +#include "overlay_01_021E6880.h" #include "overlay_02.h" #include "overlay_03.h" #include "unk_02031904.h" @@ -35,6 +37,8 @@ #include "sys_vars.h" #include "system.h" #include "unk_02092BE8.h" +#include "unk_02037C94.h" +#include "sound_02004A44.h" typedef struct UnkStructScr_648 { FieldSystem *fsys; @@ -604,10 +608,8 @@ BOOL ScrCmd_699(SCRIPTCONTEXT *ctx) { MapObjectMan *mapObjectMan; LocalMapObject *playerObj; LocalMapObject *curObj; - u32 *unkPtr; + Sprite *sprite; int height; - int unkMeasure; - BOOL flag; VecFx32 vec; unkVar = 0; @@ -629,10 +631,10 @@ BOOL ScrCmd_699(SCRIPTCONTEXT *ctx) { MapObject_SetPositionVec(curObj, &vec); MapObject_SetCurrentHeight(curObj, (height >> 3) / FX32_ONE); } - unkPtr = ov01_021F72DC(curObj); - if (unkPtr) { - ov01_021FA3E8(curObj, unkPtr); - sub_02023EA4(unkPtr, 1); + sprite = ov01_021F72DC(curObj); + if (sprite) { + ov01_021FA3E8(curObj, sprite); + sub_02023EA4(sprite, 1); } } return FALSE; @@ -1007,7 +1009,6 @@ BOOL ScrCmd_CheckSeenAllLetterUnown(SCRIPTCONTEXT *ctx) { BOOL ScrCmd_GiveTogepiEgg(SCRIPTCONTEXT *ctx) { s32 i; u8 pp; - u32 personality; u16 moveData; POKEMON *togepi; PLAYERPROFILE *profile; @@ -1189,7 +1190,7 @@ BOOL ScrCmd_CasinoGame(SCRIPTCONTEXT *ctx) { u8 city = *(ctx->script_ptr++); //1 = celadon; 0 = goldenrod u32 **unkPtr = FieldSysGetAttrAddr(ctx->fsys, SCRIPTENV_RUNNING_APP_DATA); //VoltorbFlipAppData - *unkPtr = (u32 *)LaunchVoltorbFlipApp(ctx->fsys, SlotLuckiness(ctx->fsys->savedata, machineId, city)); //this is messy, very very messy + *unkPtr = LaunchVoltorbFlipApp(ctx->fsys, SlotLuckiness(ctx->fsys->savedata, machineId, city)); //this is messy, very very messy SetupNativeScript(ctx, ScrNative_WaitApplication_DestroyTaskData); return TRUE; diff --git a/src/unk_02097720.c b/src/unk_02097720.c index bc5ab65d9e..2d2d61510d 100644 --- a/src/unk_02097720.c +++ b/src/unk_02097720.c @@ -1,5 +1,6 @@ #include "unk_02097720.h" #include "unk_0203E348.h" +#include "unk_020552A4.h" static BOOL sub_02097754(TaskManager *taskManager); From 486e75f88185d8596873388efe588ca03d196bdc Mon Sep 17 00:00:00 2001 From: Adrienn Tindall <33725376+adrienntindall@users.noreply.github.com> Date: Mon, 29 May 2023 02:04:11 -0500 Subject: [PATCH 08/12] unk_02055BF0.c --- include/field_system.h | 2 +- include/overlay_01_021E90C0.h | 11 +++++++---- include/overlay_01_021F4704.h | 8 ++++++++ include/overlay_01_021FB4C0.h | 7 +++++++ include/overlay_01_022031C0.h | 8 ++++++++ include/overlay_01_022053EC.h | 9 +++++++++ include/unk_02022D74.h | 1 + include/unk_02054E00.h | 1 + include/unk_02055BF0.h | 3 ++- include/unk_02062108.h | 1 + include/unk_0206A360.h | 9 +++++++++ src/field_warp_tasks.c | 1 - src/gf_gfx_loader.c | 6 ++++-- src/unk_02055BF0.c | 22 ++++++++++++++++++++-- 14 files changed, 78 insertions(+), 11 deletions(-) create mode 100644 include/overlay_01_021F4704.h create mode 100644 include/overlay_01_021FB4C0.h create mode 100644 include/overlay_01_022031C0.h create mode 100644 include/overlay_01_022053EC.h create mode 100644 include/unk_0206A360.h diff --git a/include/field_system.h b/include/field_system.h index 63ffe9e5b7..601c81276c 100644 --- a/include/field_system.h +++ b/include/field_system.h @@ -115,7 +115,7 @@ struct FieldSystem { SAVEDATA *savedata; TaskManager *taskman; MAP_EVENTS *mapEvents; - FieldEnvSubUnk18 *unk18; + u32 unk18; int unk1C; Location *location; Camera *camera; diff --git a/include/overlay_01_021E90C0.h b/include/overlay_01_021E90C0.h index b8b4e8cdcf..5c5a62c5a2 100644 --- a/include/overlay_01_021E90C0.h +++ b/include/overlay_01_021E90C0.h @@ -5,12 +5,15 @@ #include "task.h" FieldEnvSubUnk18 *ov01_021E90C0(); -BOOL ov01_021E98F0(FieldSystem* fsys, FieldEnvSubUnk18 *a1, u8 direction); +BOOL ov01_021E98F0(FieldSystem *fsys, FieldEnvSubUnk18 *a1, u8 direction); void ov01_021E90D4(FieldEnvSubUnk18 *a0); void *ov01_021E9C30(); BOOL ov01_021EA128(TaskManager *taskMan); -BOOL ov01_021E9EEC(TaskManager* taskMan); -BOOL ov01_021E9F78(TaskManager* taskMan); -BOOL ov01_021E9FF8(TaskManager* taskMan); +BOOL ov01_021E9EEC(TaskManager *taskMan); +BOOL ov01_021E9F78(TaskManager *taskMan); +BOOL ov01_021E9FF8(TaskManager *taskMan); +void ov01_021E90DC(u32 x, u32 y, FieldEnvSubUnk18 *a2); +BOOL ov01_021E90E4(FieldSystem *fsys, FieldEnvSubUnk18 *a1); +BOOL ov01_021E9374(FieldSystem *fsys, FieldEnvSubUnk18 *a1); #endif //POKEHEARTGOLD_OVERLAY_01_021E90C0_H \ No newline at end of file diff --git a/include/overlay_01_021F4704.h b/include/overlay_01_021F4704.h new file mode 100644 index 0000000000..858b8983f9 --- /dev/null +++ b/include/overlay_01_021F4704.h @@ -0,0 +1,8 @@ +#ifndef POKEHEARTGOLD_OVERLAY_01_021F4704_H +#define POKEHEARTGOLD_OVERLAY_01_021F4704_H + +#include "field_system.h" + +void ov01_021F6304(FsysUnkSub2C *a0); + +#endif //POKEHEARTGOLD_OVERLAY_01_021F4704_H diff --git a/include/overlay_01_021FB4C0.h b/include/overlay_01_021FB4C0.h new file mode 100644 index 0000000000..a7c511e436 --- /dev/null +++ b/include/overlay_01_021FB4C0.h @@ -0,0 +1,7 @@ +#ifndef POKEHEARTGOLD_OVERLAY_01_021FB4C0_H +#define POKEHEARTGOLD_OVERLAY_01_021FB4C0_H + +void ov01_021FB514(u32 a0); +void ov01_021FB4F4(u32 a0); + +#endif //POKEHEARTGOLD_OVERLAY_01_021FB4C0_H diff --git a/include/overlay_01_022031C0.h b/include/overlay_01_022031C0.h new file mode 100644 index 0000000000..903ce692c8 --- /dev/null +++ b/include/overlay_01_022031C0.h @@ -0,0 +1,8 @@ +#ifndef POKEHEARTGOLD_OVERLAY_01_022031C0_H +#define POKEHEARTGOLD_OVERLAY_01_022031C0_H + +#include "unk_0206793C.h" + +UnkStruct_0206793C *ov01_0220329C(LocalMapObject *obj, int a1); + +#endif //POKEHEARTGOLD_OVERLAY_01_022031C0_H \ No newline at end of file diff --git a/include/overlay_01_022053EC.h b/include/overlay_01_022053EC.h new file mode 100644 index 0000000000..7a74f1f551 --- /dev/null +++ b/include/overlay_01_022053EC.h @@ -0,0 +1,9 @@ +#ifndef POKEHEARTGOLD_OVERLAY_01_022053EC_H +#define POKEHEARTGOLD_OVERLAY_01_022053EC_H + +#include "field_system.h" + +void ov01_022057D0(FieldSystem *fsys); +void ov01_02205990(int a0, int x, int y, FollowMon *mon); + +#endif //POKEHEARTGOLD_OVERLAY_01_022053EC_H diff --git a/include/unk_02022D74.h b/include/unk_02022D74.h index 5056a7c2dc..3cfdd2708d 100644 --- a/include/unk_02022D74.h +++ b/include/unk_02022D74.h @@ -29,5 +29,6 @@ void Camera_SetAngle(CameraAngle *angle, Camera *camera); void Camera_SetPerspectiveAngle(u16 a0, Camera *a1); void Camera_SetDistance(fx32 a0, Camera *a1); void sub_02023214(VecFx32 *vec, Camera *a1); +void sub_0202367C(Camera *camera, u32 a1); #endif //POKEHEARTGOLD_UNK_02022D74_H diff --git a/include/unk_02054E00.h b/include/unk_02054E00.h index af19edab35..c86ae7c5a9 100644 --- a/include/unk_02054E00.h +++ b/include/unk_02054E00.h @@ -13,5 +13,6 @@ void sub_02055110(FieldSystem *fsys, u32 mapId, u32 a2); int Trainer_GetEncounterMusic(u16 a0, BOOL isKanto); u16 GetMapMusic(FieldSystem *fsys, int mapId); void sub_02055198(FieldSystem *fsys, u16 a1); +void Fsys_BeginFadeOutMusic(FieldSystem *fsys, u32 mapId); #endif //POKEHEARTGOLD_UNK_02054E00_H diff --git a/include/unk_02055BF0.h b/include/unk_02055BF0.h index 29a248d1dd..00f2923bf9 100644 --- a/include/unk_02055BF0.h +++ b/include/unk_02055BF0.h @@ -2,6 +2,7 @@ #define POKEHEARTGOLD_UNK_02055BF0_H #include "task.h" +#include "unk_0206793C.h" typedef struct FieldFadeEnvironment { u32 state; @@ -23,7 +24,7 @@ typedef struct FieldTransitionEnvironment { FieldEnvSubUnk18* unk18; u32 transitionNo; u32 destinationMapID; - u32 unk24; + UnkStruct_0206793C *unk24; } FieldTransitionEnvironment; //size: 0x28 void NewFieldFadeEnvironment(TaskManager* man, int pattern, int typeTop, int typeBottom, u16 colour, int duration, int framesPer, HeapID heapID); diff --git a/include/unk_02062108.h b/include/unk_02062108.h index a4d3223dfc..9c93e594de 100644 --- a/include/unk_02062108.h +++ b/include/unk_02062108.h @@ -21,5 +21,6 @@ BOOL EventObjectMovementMan_IsFinish(EventObjectMovementMan *mvtMan); void EventObjectMovementMan_Delete(EventObjectMovementMan *mvtMan); BOOL MapObject_AreBitsSetForMovementScriptInit(LocalMapObject *obj); BOOL MapObject_ClearHeldMovementIfActive(LocalMapObject *obj); +void MapObject_SetHeldMovement(LocalMapObject *obj, u32 a1); #endif //POKEHEARTGOLD_UNK_02062108_H diff --git a/include/unk_0206A360.h b/include/unk_0206A360.h new file mode 100644 index 0000000000..d20a4a1ff9 --- /dev/null +++ b/include/unk_0206A360.h @@ -0,0 +1,9 @@ +#ifndef POKEHEARTGOLD_UNK_0206A360_H +#define POKEHEARTGOLD_UNK_0206A360_H + +#include "task.h" + +int sub_0206A360(u32 mapId); +void sub_0206A388(TaskManager *man, int index, u8 time, int a3); + +#endif //POKEHEARTGOLD_UNK_0206A360_H \ No newline at end of file diff --git a/src/field_warp_tasks.c b/src/field_warp_tasks.c index 2b24a0ac79..e11636f02f 100644 --- a/src/field_warp_tasks.c +++ b/src/field_warp_tasks.c @@ -398,7 +398,6 @@ static BOOL sub_02053550(TaskManager *taskManager) { FieldSystem *fsys = TaskManager_GetSys(taskManager); struct ErrorContinueEnv *env = TaskManager_GetEnv(taskManager); SCRIPT_STATE *scriptState = SavArray_Flags_get(fsys->savedata); - FLYPOINTS_SAVE *flypointsSave; u32 *state_p = TaskManager_GetStatePtr(taskManager); switch (*state_p) { diff --git a/src/gf_gfx_loader.c b/src/gf_gfx_loader.c index 8bcefa879e..7b82cd3e1b 100644 --- a/src/gf_gfx_loader.c +++ b/src/gf_gfx_loader.c @@ -331,22 +331,24 @@ static void GfGfxLoader_PartiallyLoadPaletteInternal(void *data, NNS_G2D_VRAM_TY } } +#pragma require_prototypes off // The two functions below represent routines that were deadstripped in hgss. // However, there is a bug in mwcc which causes static objects defined inside // the scope of a deadstripped routine to not themselves be deadstripped. -static void foo() { +void foo() { static void (*const _020F5958[])(const NNSG2dCharacterData *pSrcData, u32 baseAddr, NNS_G2D_VRAM_TYPE type, NNSG2dImageProxy *pImgProxy) = { NNS_G2dLoadImage1DMapping, NNS_G2dLoadImage2DMapping, }; } -static void bar() { +void bar() { static void (*const _020F5960[])(const void *data, u32 offset, u32 size) = { GX_LoadOBJ, GXS_LoadOBJ, }; } +#pragma require_prototypes on static u32 GfGfxLoader_LoadImageMappingInternal(void *data, int layout, u32 szByte, NNS_G2D_VRAM_TYPE type, u32 baseAddr, NNSG2dImageProxy *pImgProxy) { u32 size = 0; diff --git a/src/unk_02055BF0.c b/src/unk_02055BF0.c index 518b59966e..78073e179a 100644 --- a/src/unk_02055BF0.c +++ b/src/unk_02055BF0.c @@ -1,11 +1,29 @@ #include "field_follow_poke.h" +#include "field_player_avatar.h" +#include "field_warp_tasks.h" #include "heap.h" #include "map_header.h" +#include "metatile_behavior.h" +#include "save_follow_poke.h" #include "script.h" +#include "sound.h" #include "unk_02055BF0.h" #include "unk_0200FA24.h" #include "unk_02056680.h" +#include "unk_02054E00.h" +#include "unk_020552A4.h" +#include "unk_02022D74.h" +#include "unk_0206A360.h" +#include "unk_02005D10.h" +#include "unk_02062108.h" +#include "unk_02054648.h" +#include "overlay_01.h" #include "overlay_01_021E90C0.h" +#include "overlay_01_022031C0.h" +#include "overlay_01_021FB4C0.h" +#include "overlay_01_022053EC.h" +#include "overlay_01_021F4704.h" +#include "unk_02055244.h" #include "constants/sndseq.h" typedef void (*FsysFunc)(FieldSystem*); @@ -121,7 +139,7 @@ BOOL sub_02055DBC(TaskManager *man) { switch (env->state) { case 0: env->transitionState = 0; - env->unk24 = 0; + env->unk24 = NULL; env->unk1 = 0; if (FollowingPokemon_IsActive(fsys) && ov01_022057C4(fsys) && PlayerAvatar_GetState(fsys->playerAvatar) != PLAYER_STATE_CYCLING) { env->state = 9; @@ -180,7 +198,7 @@ BOOL sub_02055DBC(TaskManager *man) { parity = 1; } TIMEOFDAY time = GF_RTC_GetTimeOfDay(); - sub_0206A388(man, index, (u8) time, parity); //this should set the specific map icon based on time? + sub_0206A388(man, index, time, parity); //this should set the specific map icon based on time? env->state++; ov01_021EFAF8(fsys); //<= this func specifically gets and displays the area's icon and text break; From 8a04b6f1205b957c2d6a4a7f338df38b39ba9bcb Mon Sep 17 00:00:00 2001 From: Adrienn Tindall <33725376+adrienntindall@users.noreply.github.com> Date: Mon, 29 May 2023 03:38:22 -0500 Subject: [PATCH 09/12] OS Files + Misc --- include/battle_arcade_game_board.h | 3 +++ include/bug_contest.h | 1 + include/easy_chat.h | 2 ++ include/sound.h | 1 + include/unk_020183F0.h | 3 ++- include/unk_02078E30.h | 4 ++++ lib/NitroSDK/src/os/os_irqHandler.c | 1 + lib/include/nitro/os.h | 1 + lib/include/nitro/os/ARM9/vramExclusive.h | 3 +++ lib/include/nitro/os/alarm.h | 4 ++++ lib/include/nitro/os/alloc.h | 3 +++ lib/include/nitro/os/cache.h | 3 +++ lib/include/nitro/os/emulator.h | 1 + lib/include/nitro/os/init.h | 1 + lib/include/nitro/os/interrupt.h | 2 ++ lib/include/nitro/os/irqHandler.h | 9 +++++++++ lib/include/nitro/os/message.h | 1 + lib/include/nitro/os/mutex.h | 1 + lib/include/nitro/os/protectionRegion.h | 1 + lib/include/nitro/os/spinLock.h | 4 ++++ lib/include/nitro/os/thread.h | 6 ++++++ lib/include/nitro/os/valarm.h | 9 +++++++++ src/battle_arcade_game_board.c | 7 +++---- src/mail_misc.c | 1 + src/pokemon_mood.c | 1 + src/scrcmd_size_record.c | 2 +- src/sound.c | 1 + src/unk_02097F6C.c | 1 + 28 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 lib/include/nitro/os/irqHandler.h diff --git a/include/battle_arcade_game_board.h b/include/battle_arcade_game_board.h index a2906c3ecb..e1a3696abe 100644 --- a/include/battle_arcade_game_board.h +++ b/include/battle_arcade_game_board.h @@ -152,5 +152,8 @@ typedef struct BATTLE_ARCADE_OBJECT { BOOL BattleArcadeGameBoard_InitOverlay(OVY_MANAGER *man, int *state); BOOL BattleArcadeGameBoard_Main(OVY_MANAGER *man, int *state); BOOL ov84_0223DFF0(OVY_MANAGER *man, int *state); +void ov84_0223ED34(int a0, int size, void *data, void *_work); +void ov84_0223EDA8(int a0, int size, void *data, void *_work); +void ov84_0223EE08(int a0, int size, void *data, void *_work); #endif diff --git a/include/bug_contest.h b/include/bug_contest.h index 7bdb97ddcd..48f1a5d862 100644 --- a/include/bug_contest.h +++ b/include/bug_contest.h @@ -17,5 +17,6 @@ BOOL BugContest_ContestantIsRegisteredN(BUGCONTEST *bugContest, u8 id, u8 n); void BugContest_InitOpponents(BUGCONTEST *bugContest); void BugContest_InitEncounters(BUGCONTEST *bugContest); u16 BugContest_JudgePlayerMon(BUGCONTEST *bugContest, POKEMON *pokemon); +ENC_SLOT *BugContest_GetEncounterSlot(BUGCONTEST *bugContest, HeapID heapId); #endif //POKEHEARTGOLD_BUG_CONTEST_H diff --git a/include/easy_chat.h b/include/easy_chat.h index 78db86b158..2102b8608c 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -43,5 +43,7 @@ ECWORD WallpaperPasswordBank_GetWordI(struct WallpaperPasswordBank *pwdBank, int s16 WallpaperPasswordBank_GetIndexOfWord(struct WallpaperPasswordBank *unk, int value); s32 GetDuplicateWordNum(ECWORD a0); ECWORD RemapDuplicateWord(ECWORD a0, s32 a1); +ECMAN *EasyChatManager_new(HeapID heapId); +struct WallpaperPasswordBank *WallpaperPasswordBank_Create(HeapID heapId); #endif //POKEHEARTGOLD_EASY_CHAT_H diff --git a/include/sound.h b/include/sound.h index 59928d36c3..921c45f5fb 100644 --- a/include/sound.h +++ b/include/sound.h @@ -58,5 +58,6 @@ void GF_SndWorkMicCounterReset(void); void GF_SndWorkSetGbSoundsVolume(u8 a0); u8 GF_SndWorkGetGbSoundsVolume(void); void GF_SndStartFadeOutBGM(u16 seqno, u16 length); +NNSSndHandle *GF_GetSoundHandle(int playerNo); #endif //POKEHEARTGOLD_SOUND_H diff --git a/include/unk_020183F0.h b/include/unk_020183F0.h index bccf315797..15b5605ece 100644 --- a/include/unk_020183F0.h +++ b/include/unk_020183F0.h @@ -22,12 +22,13 @@ typedef struct Ov122_021E7488 { u8 unk15[0x3]; } Ov122_021E7488; +int sub_020183F0(int); +void sub_02018410(int a0); void *sub_02018424(HeapID, int); void sub_02018474(void *); void *sub_020185FC(void *, Ov122_021E7488 *, s32, u8, u8, u8, u8); int sub_020186A4(void *); u8 sub_02018674(void *); void sub_02018680(void *); -int sub_020183F0(int); #endif //POKEHEARTGOLD_UNK_020183F0_H diff --git a/include/unk_02078E30.h b/include/unk_02078E30.h index bfdef7845a..2024f4b6a0 100644 --- a/include/unk_02078E30.h +++ b/include/unk_02078E30.h @@ -6,5 +6,9 @@ extern struct OVY_MGR_TEMPLATE _0210159C; void sub_0207991C(PartyMenuStruct *unkPtr, int a1); +u32 sub_0207CA9C(void); +u32 sub_0207CAA0(void); +u32 sub_0207CAA4(void); +u32 sub_0207CAA8(void); #endif //POKEHEARTGOLD_UNK_02078E30_H diff --git a/lib/NitroSDK/src/os/os_irqHandler.c b/lib/NitroSDK/src/os/os_irqHandler.c index 180b1b278b..106ff9687c 100644 --- a/lib/NitroSDK/src/os/os_irqHandler.c +++ b/lib/NitroSDK/src/os/os_irqHandler.c @@ -2,6 +2,7 @@ #include #include #include +#include #include extern OSThreadQueue OSi_IrqThreadQueue; diff --git a/lib/include/nitro/os.h b/lib/include/nitro/os.h index 0afe9cd041..96a89a8057 100644 --- a/lib/include/nitro/os.h +++ b/lib/include/nitro/os.h @@ -33,6 +33,7 @@ #include #include #include +#include #ifdef SDK_ARM9 #include diff --git a/lib/include/nitro/os/ARM9/vramExclusive.h b/lib/include/nitro/os/ARM9/vramExclusive.h index 295f62a7d4..6284fec569 100644 --- a/lib/include/nitro/os/ARM9/vramExclusive.h +++ b/lib/include/nitro/os/ARM9/vramExclusive.h @@ -14,6 +14,9 @@ #define OS_VRAM_BANK_KINDS 9 +u32 OsCountZeroBits(u32 bitmap); void OSi_InitVramExclusive(void); +BOOL OSi_TryLockVram(u16 bank, u16 lockId); +void OSi_UnlockVram(u16 bank, u16 lockId); #endif //NITRO_OS_VRAMEXCLUSIVE_H_ diff --git a/lib/include/nitro/os/alarm.h b/lib/include/nitro/os/alarm.h index dc341bf7d9..bd9a326d71 100644 --- a/lib/include/nitro/os/alarm.h +++ b/lib/include/nitro/os/alarm.h @@ -15,4 +15,8 @@ struct OSiAlarmQueue }; struct OSiAlarmQueue *OSi_GetAlarmQueue(void); +void OSi_SetTimer(OSAlarm *alarm); +void OS_InitAlarm(void); +void OSi_InsertAlarm(OSAlarm *alarm, OSTick fire); + #endif //NITRO_OS_ALARM_H diff --git a/lib/include/nitro/os/alloc.h b/lib/include/nitro/os/alloc.h index db7278bed3..eb0ecb92e1 100644 --- a/lib/include/nitro/os/alloc.h +++ b/lib/include/nitro/os/alloc.h @@ -4,10 +4,13 @@ #include #include +Cell *DLExtract(Cell *list, Cell *cell); +Cell *DLInsert(Cell *list, Cell *cell); void* OS_AllocFromHeap(OSArenaId id, OSHeapHandle heap, u32 size); void OS_FreeToHeap(OSArenaId id, OSHeapHandle heap, void* ptr); OSHeapHandle OS_SetCurrentHeap(OSArenaId id, OSHeapHandle heap); void *OS_InitAlloc(OSArenaId id, void *arenaStart, void *arenaEnd, s32 maxHeaps); +void OS_ClearAlloc(OSArenaId id); OSHeapHandle OS_CreateHeap(OSArenaId id, void *start, void *end); s32 OS_CheckHeap(OSArenaId id, OSHeapHandle heap); diff --git a/lib/include/nitro/os/cache.h b/lib/include/nitro/os/cache.h index 159223e4d2..a6a62cd285 100644 --- a/lib/include/nitro/os/cache.h +++ b/lib/include/nitro/os/cache.h @@ -2,9 +2,12 @@ #define NITRO_OS_CACHE_H_ void DC_FlushAll(void); +void DC_InvalidateRange(register void * startAddr, register u32 nBytes); +void DC_StoreRange(register void * startAddr, register u32 nBytes); void DC_InvalidateAll(void); void DC_StoreAll(void); void IC_InvalidateAll(void); +void IC_InvalidateRange(register void *startAddr, register u32 nBytes); void DC_WaitWriteBufferEmpty(void); void DC_FlushRange(const void *data, u32 size); diff --git a/lib/include/nitro/os/emulator.h b/lib/include/nitro/os/emulator.h index 81834b1b01..de01fdd509 100644 --- a/lib/include/nitro/os/emulator.h +++ b/lib/include/nitro/os/emulator.h @@ -1,6 +1,7 @@ #ifndef NITRO_OS_EMULATOR_H_ #define NITRO_OS_EMULATOR_H_ +BOOL OS_IsRunOnEmulator(void); u32 OS_GetConsoleType(void); #endif //NITRO_OS_EMULATOR_H_ diff --git a/lib/include/nitro/os/init.h b/lib/include/nitro/os/init.h index 3447489e02..f3a02d01aa 100644 --- a/lib/include/nitro/os/init.h +++ b/lib/include/nitro/os/init.h @@ -16,6 +16,7 @@ #include #include +void OSi_WaitVCount0(void); void OS_Init(void); void OS_InitArenaEx(void); diff --git a/lib/include/nitro/os/interrupt.h b/lib/include/nitro/os/interrupt.h index 7d45480ff5..d5101e2d4b 100644 --- a/lib/include/nitro/os/interrupt.h +++ b/lib/include/nitro/os/interrupt.h @@ -82,5 +82,7 @@ OSIrqMask OS_DisableIrqMask(OSIrqMask mask); OSIrqMask OS_ResetRequestIrqMask(OSIrqMask mask); void OS_SetIrqStackChecker(void); void OS_WaitIrq(BOOL clear, OSIrqMask irqFlags); +OSIrqFunction OS_GetIrqFunction(OSIrqMask intrBit); +void OSi_EnterDmaCallback(u32 dmaNo, void (*callback)(void * arg), void * arg); #endif //NITRO_SUB_OS_INTERRUPT_H diff --git a/lib/include/nitro/os/irqHandler.h b/lib/include/nitro/os/irqHandler.h new file mode 100644 index 0000000000..9dc0823e3b --- /dev/null +++ b/lib/include/nitro/os/irqHandler.h @@ -0,0 +1,9 @@ +#ifndef NITRO_OS_IRQHANDLER_H +#define NITRO_OS_IRQHANDLER_H + +#include + +void OS_IrqHandler(register OSIrqMask irq); +void OS_IrqHandler_ThreadSwitch(void); + +#endif //NITRO_OS_IRQHANDLER_H diff --git a/lib/include/nitro/os/message.h b/lib/include/nitro/os/message.h index 67b7e3deac..96dcaf7f0e 100644 --- a/lib/include/nitro/os/message.h +++ b/lib/include/nitro/os/message.h @@ -9,6 +9,7 @@ void OS_InitMessageQueue(OSMessageQueue *mq, OSMessage *msgArray, s32 msgCount); BOOL OS_SendMessage(OSMessageQueue *mq, OSMessage msg, s32 flags); BOOL OS_ReceiveMessage(OSMessageQueue *mq, OSMessage *msg, s32 flags); +BOOL OS_JamMessage(OSMessageQueue *mq, OSMessage msg, s32 flags); BOOL OS_ReadMessage(OSMessageQueue *mq, OSMessage *msg, s32 flags); #endif //NITRO_OS_MESSAGE_H diff --git a/lib/include/nitro/os/mutex.h b/lib/include/nitro/os/mutex.h index 68a6b8469b..b432014ecd 100644 --- a/lib/include/nitro/os/mutex.h +++ b/lib/include/nitro/os/mutex.h @@ -10,5 +10,6 @@ void OS_InitMutex(OSMutex* mutex); void OS_LockMutex(OSMutex* mutex); void OS_UnlockMutex(OSMutex* mutex); void OSi_UnlockAllMutex(OSThread * thread); +BOOL OS_TryLockMutex(OSMutex *mtx); #endif //NITRO_OS_MUTEX_H diff --git a/lib/include/nitro/os/protectionRegion.h b/lib/include/nitro/os/protectionRegion.h index b268fa2d5c..9e0c758a5c 100644 --- a/lib/include/nitro/os/protectionRegion.h +++ b/lib/include/nitro/os/protectionRegion.h @@ -32,6 +32,7 @@ static inline u32 OSi_CalcPRParam(u32 address, u32 size, OSiProtectionRegionBase return ((address & mask) | size); } +void OS_SetDPermissionsForProtectionRegion(register u32 setMask, register u32 flags); void OS_SetProtectionRegion0(u32 param); void OS_SetProtectionRegion1(u32 param); void OS_SetProtectionRegion2(u32 param); diff --git a/lib/include/nitro/os/spinLock.h b/lib/include/nitro/os/spinLock.h index 965fe39eb9..8fcdf2f2ad 100644 --- a/lib/include/nitro/os/spinLock.h +++ b/lib/include/nitro/os/spinLock.h @@ -22,6 +22,10 @@ s32 OS_UnlockCartridge(u16 lockID); s32 OS_TryLockCartridge(u16 lockID); void OSi_AllocateCartridgeBus(void); void OSi_FreeCartridgeBus(void); +s32 OS_LockCard(u16 lockID); +s32 OS_UnlockCard(u16 lockID); +s32 OS_UnLockCard(u16 lockID); +BOOL OS_TryLockCard(u16 lockID); u16 OS_ReadOwnerOfLockWord(OSLockWord * lock); s32 OS_UnLockCartridge(u16 lockID); s32 OS_GetLockID(void); diff --git a/lib/include/nitro/os/thread.h b/lib/include/nitro/os/thread.h index 83004bc747..c22176afb2 100644 --- a/lib/include/nitro/os/thread.h +++ b/lib/include/nitro/os/thread.h @@ -6,7 +6,13 @@ #define SDK_THREAD_INFINITY +int OSi_GetUnusedThreadId(void); +OSThread *OSi_RemoveLinkFromQueue(OSThreadQueue *queue); +OSThread *OSi_RemoveSpecifiedLinkFromQueue(OSThreadQueue *queue, OSThread *thread); OSMutex *OSi_RemoveMutexLinkFromQueue(OSMutexQueue *queue); +void OSi_InsertThreadToList(OSThread *thread); +void OSi_RemoveThreadFromList(OSThread *thread); +void OSi_RescheduleThread(void); void OS_InitThread(void); BOOL OS_IsThreadAvailable(void); void OS_CreateThread(OSThread *thread, void (*func) (void *), void *arg, void *stack, u32 stackSize, u32 prio); diff --git a/lib/include/nitro/os/valarm.h b/lib/include/nitro/os/valarm.h index 441477cdcb..2b7b8e3a9c 100644 --- a/lib/include/nitro/os/valarm.h +++ b/lib/include/nitro/os/valarm.h @@ -20,5 +20,14 @@ struct OSiVAlarm { }; void OS_InitVAlarm(void); +BOOL OS_IsVAlarmAvailable(void); +void OSi_InsertVAlarm(OSVAlarm *alarm); +void OSi_DetachVAlarm(OSVAlarm *alarm); +void OS_CreateVAlarm(OSVAlarm *alarm); +void OS_SetVAlarm(OSVAlarm *alarm, s16 count, s16 delay, OSVAlarmHandler handler, void *arg); +void OS_SetPeriodicVAlarm(OSVAlarm *alarm, s16 count, s16 delay, OSVAlarmHandler handler, void *arg); +void OS_SetVAlarmTag(OSVAlarm *alarm, u32 tag); +void OS_CancelVAlarm(OSVAlarm *alarm); +void OS_CancelVAlarms(u32 tag); #endif //NITRO_OS_VALARM_H_ diff --git a/src/battle_arcade_game_board.c b/src/battle_arcade_game_board.c index c2f565a6c4..94cfbe57cd 100644 --- a/src/battle_arcade_game_board.c +++ b/src/battle_arcade_game_board.c @@ -23,6 +23,7 @@ #include "unk_02022588.h" #include "unk_020215A0.h" #include "unk_0200A090.h" +#include "unk_02078E30.h" #include "vram_transfer_manager.h" #include "unk_0200B150.h" #include "pokemon.h" @@ -204,7 +205,6 @@ BOOL BattleArcadeGameBoard_Main(OVY_MANAGER *man, int *state) { } BOOL ov84_0223DFF0(OVY_MANAGER *man, int *state) { - int i; GAME_BOARD_WORK *work = OverlayManager_GetData(man); *work->returnWork = work->cursorPos; @@ -550,8 +550,8 @@ static void BattleArcadeGameBoard_InitSub() { static void BattleArcadeGameBoard_InitObjects(GAME_BOARD_WORK *work) { u8 max; - u16 x, y, yOffset, yOffset2; - int i, var; + u16 yOffset, yOffset2; + int i; work->narc = NARC_ctor(183, HEAP_ID_GAME_BOARD); ov84_0223E8DC(work); @@ -1238,7 +1238,6 @@ static void ov84_0223F2B4(GAME_BOARD_SUB_3E8 *work, PARTY *playerParty, PARTY *o } static Sprite *ov84_0223F374(GAME_BOARD_SUB_3E8 *work, u32 chara, u32 pal, u32 cell, u32 anim, u32 prio, int bgPrio, u8 display) { - int i; struct SpriteResourcesHeader resourceHeader; Sprite *sprite; diff --git a/src/mail_misc.c b/src/mail_misc.c index 61248d799a..5a38cc8427 100644 --- a/src/mail_misc.c +++ b/src/mail_misc.c @@ -5,6 +5,7 @@ #include "options.h" #include "player_data.h" #include "sys_flags.h" +#include "unk_020183F0.h" #include "constants/items.h" #include "constants/mail.h" #include "constants/pokemon.h" diff --git a/src/pokemon_mood.c b/src/pokemon_mood.c index a79cbad3fc..a091c829ca 100644 --- a/src/pokemon_mood.c +++ b/src/pokemon_mood.c @@ -1,4 +1,5 @@ #include "pokemon.h" +#include "pokemon_mood.h" #include "constants/items.h" static const s8 sMoodModifiers[] = { diff --git a/src/scrcmd_size_record.c b/src/scrcmd_size_record.c index 7543783b27..3d33ce5a04 100644 --- a/src/scrcmd_size_record.c +++ b/src/scrcmd_size_record.c @@ -75,7 +75,7 @@ static void FormatSizeRecord(FieldSystem *fsys, u8 idx0, u8 idx1, u16 species, u r4 = LengthConvertToImperial(score); BufferIntegerAsString(*msgFmt, idx0, r4 / 10, 3, STRCONVMODE_LEFT_ALIGN, TRUE); BufferIntegerAsString(*msgFmt, idx1, r4 % 10, 1, STRCONVMODE_LEFT_ALIGN, TRUE); -}; +} BOOL ScrCmd_SizeRecordCompare(SCRIPTCONTEXT *ctx) { POKEMON *pokemon; diff --git a/src/sound.c b/src/sound.c index 1f8fbcc245..d1b1272a11 100644 --- a/src/sound.c +++ b/src/sound.c @@ -1,5 +1,6 @@ #include "sound.h" #include "sound_chatot.h" +#include "sound_02004A44.h" #include "options.h" #include "system.h" #include "constants/sndseq.h" diff --git a/src/unk_02097F6C.c b/src/unk_02097F6C.c index c4f5be9b06..8d95d04808 100644 --- a/src/unk_02097F6C.c +++ b/src/unk_02097F6C.c @@ -1,6 +1,7 @@ #include "assert.h" #include "map_events.h" #include "wild_encounter.h" +#include "unk_02097F6C.h" #include "constants/easy_chat.h" #include "constants/items.h" #include "constants/maps.h" From 6b1944c6ff622d2eda063285eea0e22829652bbc Mon Sep 17 00:00:00 2001 From: Adrienn Tindall <33725376+adrienntindall@users.noreply.github.com> Date: Mon, 29 May 2023 03:38:43 -0500 Subject: [PATCH 10/12] Adding flags to common.mk --- common.mk | 2 +- src/field_map_object.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common.mk b/common.mk index 93d008e793..ecf7b18a14 100644 --- a/common.mk +++ b/common.mk @@ -108,7 +108,7 @@ XMAP := $(NEF).xMAP EXCCFLAGS := -Cpp_exceptions off -MWCFLAGS = $(DEFINES) $(OPTFLAGS) -enum int -lang c99 $(EXCCFLAGS) -gccext,on -proc $(PROC) -msgstyle gcc -gccinc -i ./include -i ./include/library -i $(WORK_DIR)/files -I$(WORK_DIR)/lib/include -ipa file -interworking -inline on,noauto -char signed +MWCFLAGS = $(DEFINES) $(OPTFLAGS) -enum int -lang c99 $(EXCCFLAGS) -gccext,on -proc $(PROC) -msgstyle gcc -gccinc -i ./include -i ./include/library -i $(WORK_DIR)/files -I$(WORK_DIR)/lib/include -ipa file -interworking -inline on,noauto -char signed -W all -W nopedantic -W noimpl_signedunsigned -W noimplicitconv -W nounusedarg -W nomissingreturn -W error MWASFLAGS = $(DEFINES) -proc $(PROC_S) -gccinc -i . -i ./include -i $(WORK_DIR)/asm/include -i $(WORK_DIR)/files -i $(WORK_DIR)/lib/asm/include -i $(WORK_DIR)/lib/NitroDWC/asm/include -i $(WORK_DIR)/lib/NitroSDK/asm/include -i $(WORK_DIR)/lib/syscall/asm/include -I$(WORK_DIR)/lib/include -DSDK_ASM MWLDFLAGS := -w off -proc $(PROC) -nopic -nopid -interworking -map closure,unused -symtab sort -m _start -msgstyle gcc ARFLAGS := rcS diff --git a/src/field_map_object.c b/src/field_map_object.c index 5e047bd224..a8196e539d 100644 --- a/src/field_map_object.c +++ b/src/field_map_object.c @@ -2073,7 +2073,7 @@ void sub_0205FC94(LocalMapObject* object, u32 movement) { sub_0205FD20(object); } -static void sub_0205FCB4(LocalMapObject* object) { +/*static*/ void sub_0205FCB4(LocalMapObject* object) { } From c3ae6df2b6aa5c4bff626e4110e94eaed9dd37dd Mon Sep 17 00:00:00 2001 From: Adrienn Tindall <33725376+adrienntindall@users.noreply.github.com> Date: Mon, 29 May 2023 04:19:18 -0500 Subject: [PATCH 11/12] Fix errors caused by merging --- include/encounter.h | 2 +- include/get_egg.h | 2 +- include/pokedex.h | 2 +- include/text_0205B4EC.h | 1 + src/scrcmd_message.c | 4 +++- 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/include/encounter.h b/include/encounter.h index 971e6317f1..def1f9fdbd 100644 --- a/include/encounter.h +++ b/include/encounter.h @@ -30,7 +30,7 @@ void SetupAndStartTutorialBattle(TaskManager *taskManager); void SetupAndStartTrainerBattle(TaskManager *taskManager, u32 opponentTrainer1, u32 opponentTrainer2, u32 followerTrainerNum, u32 a4, u32 a5, HeapID heapId, u32 *winFlag); void sub_02050B90(FieldSystem *fsys, TaskManager *taskManager, BATTLE_SETUP *setup); void sub_0205239C(BATTLE_SETUP *setup, FieldSystem *fsys); -void sub_02050AAC(TaskManager *man, BATTLE_SETUP *setup, int effect, int bgm, int *winFlag); +void sub_02050AAC(TaskManager *man, BATTLE_SETUP *setup, int effect, int bgm, u32 *winFlag); void sub_020511F8(FieldSystem *fsys, BATTLE_SETUP *setup); void sub_020515FC(FieldSystem *fsys, PARTY *party, int battleFlags); void sub_02051598(FieldSystem *fsys, void *a1, int battleFlags); diff --git a/include/get_egg.h b/include/get_egg.h index 3e965cbb78..7655c0a873 100644 --- a/include/get_egg.h +++ b/include/get_egg.h @@ -4,7 +4,7 @@ #include "daycare.h" #include "script.h" -BOXMON *Daycare_GetBoxMonI(DAYCARE *daycare, int idx); +BoxPokemon *Daycare_GetBoxMonI(DAYCARE *daycare, int idx); void Sav2_DayCare_PutMonIn(PARTY *party, u8 partyIdx, DAYCARE *dayCare, SAVEDATA *saveData); u16 Sav2_DayCare_RetrieveMon(PARTY *party, MessageFormat *msgFmt, DAYCARE *daycare, u8 whomst); int DayCareMon_CalcLevelGrowth(DAYCAREMON *daycareMon); diff --git a/include/pokedex.h b/include/pokedex.h index 69cd973725..353cd911a9 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -75,6 +75,6 @@ BOOL Pokedex_IsEnabled(const POKEDEX *pokedex); void Pokedex_Enable(POKEDEX *pokedex); int Pokedex_GetSeenFormeByIdx(POKEDEX *pokedex, int species, int idx); int Pokedex_GetSeenFormeNum(POKEDEX *pokedex, int species); -void UpdatePokedexWithReceivedSpecies(SAVEDATA *saveData, POKEMON *pokemon); +void UpdatePokedexWithReceivedSpecies(SAVEDATA *saveData, Pokemon *pokemon); #endif //POKEHEARTGOLD_POKEDEX_H diff --git a/include/text_0205B4EC.h b/include/text_0205B4EC.h index 8d38929771..651189de88 100644 --- a/include/text_0205B4EC.h +++ b/include/text_0205B4EC.h @@ -10,5 +10,6 @@ void sub_0205B564(WINDOW *window, OPTIONS *options); u8 sub_0205B5B4(WINDOW *window, STRING *string, OPTIONS *options, BOOL speedupFlag); BOOL IsPrintFinished(u8 printerId); void sub_0205B5A8(WINDOW *window); +u32 sub_0205B5EC(WINDOW *window, STRING *message, FontID fontId, u32 textFrame, u8 speedUpEnabled, u32 a4); #endif //POKEHEARTGOLD_TEXT_0205B4EC_H diff --git a/src/scrcmd_message.c b/src/scrcmd_message.c index da09a603d0..e349a9c69f 100644 --- a/src/scrcmd_message.c +++ b/src/scrcmd_message.c @@ -9,6 +9,8 @@ #include "pm_string.h" #include "scrcmd.h" #include "script.h" +#include "text.h" +#include "text_0205B4EC.h" #include "window.h" typedef struct MessageBox { @@ -297,7 +299,7 @@ static void ovFieldMain_GetFormattedECMessage(MessageBox *messageBox, u16 messag } static void ov01_021EF758(MessageBox *messageBox, FontID fontId, u32 textFrameDelay, BOOL canABSpeedUp, u32 a4) { - *(messageBox->textPrinterNumPtr) = sub_0205B5EC(messageBox->window, messageBox->message, fontId, textFrameDelay, (u8)canABSpeedUp, a4); + *(messageBox->textPrinterNumPtr) = sub_0205B5EC(messageBox->window, messageBox->message, fontId, textFrameDelay, canABSpeedUp, a4); } static void ovFieldMain_AddTextPrinterParameterized(MessageBox *messageBox, FontID fontId) { From 36955789f861c8ef239e9d15c592985a17001e8c Mon Sep 17 00:00:00 2001 From: Adrienn Tindall <33725376+adrienntindall@users.noreply.github.com> Date: Mon, 29 May 2023 06:01:22 -0500 Subject: [PATCH 12/12] Fix errors in sub/lib/src --- lib/NitroSDK/src/os/os_thread.c | 2 +- lib/include/nitro/os/thread.h | 3 ++- lib/include/nitro/pad/ARM7/xyButton.h | 1 + sub/lib/src/OS_init.c | 1 + sub/lib/src/OS_irqHandler.c | 1 + sub/lib/src/OS_thread.c | 2 ++ 6 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/NitroSDK/src/os/os_thread.c b/lib/NitroSDK/src/os/os_thread.c index 556d8f24d8..b460a26750 100644 --- a/lib/NitroSDK/src/os/os_thread.c +++ b/lib/NitroSDK/src/os/os_thread.c @@ -61,7 +61,7 @@ void OSi_ExitThread_Destroy(void); void OSi_CancelThreadAlarmForSleep(OSThread *thread); void OS_KillThreadWithPriority(OSThread *thread, void *arg, u32 prio); -int OSi_GetUnusedThreadId(void) { +s32 OSi_GetUnusedThreadId(void) { ++OSi_ThreadIdCount; return OSi_ThreadIdCount; } diff --git a/lib/include/nitro/os/thread.h b/lib/include/nitro/os/thread.h index c22176afb2..85b5c64864 100644 --- a/lib/include/nitro/os/thread.h +++ b/lib/include/nitro/os/thread.h @@ -6,7 +6,7 @@ #define SDK_THREAD_INFINITY -int OSi_GetUnusedThreadId(void); +s32 OSi_GetUnusedThreadId(void); OSThread *OSi_RemoveLinkFromQueue(OSThreadQueue *queue); OSThread *OSi_RemoveSpecifiedLinkFromQueue(OSThreadQueue *queue, OSThread *thread); OSMutex *OSi_RemoveMutexLinkFromQueue(OSMutexQueue *queue); @@ -36,5 +36,6 @@ OSSwitchThreadCallback OS_SetSwitchThreadCallback(OSSwitchThreadCallback callbac u32 OS_DisableScheduler(void); u32 OS_EnableScheduler(void); void OS_SetThreadDestructor(OSThread *thread, OSThreadDestructor dtor); +void OSi_InsertLinkToQueue(OSThreadQueue *queue, OSThread *thread); #endif //NITRO_OS_THREAD_H_ diff --git a/lib/include/nitro/pad/ARM7/xyButton.h b/lib/include/nitro/pad/ARM7/xyButton.h index ff5a6d087e..9bd59a5505 100644 --- a/lib/include/nitro/pad/ARM7/xyButton.h +++ b/lib/include/nitro/pad/ARM7/xyButton.h @@ -2,5 +2,6 @@ #define NITRO_PAD_XYBUTTON_H_ extern BOOL PADi_XYButtonAvailable; +BOOL PAD_InitXYButton(void); #endif //NITRO_PAD_XYBUTTON_H_ diff --git a/sub/lib/src/OS_init.c b/sub/lib/src/OS_init.c index da3995edda..fff1b1f9cb 100644 --- a/sub/lib/src/OS_init.c +++ b/sub/lib/src/OS_init.c @@ -1,4 +1,5 @@ #include +#include extern void PXI_Init(void); extern void OS_InitThread(void); diff --git a/sub/lib/src/OS_irqHandler.c b/sub/lib/src/OS_irqHandler.c index 6dc343bcb1..f0360fdd90 100644 --- a/sub/lib/src/OS_irqHandler.c +++ b/sub/lib/src/OS_irqHandler.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include diff --git a/sub/lib/src/OS_thread.c b/sub/lib/src/OS_thread.c index 75bea3528a..42cb4a743d 100644 --- a/sub/lib/src/OS_thread.c +++ b/sub/lib/src/OS_thread.c @@ -37,6 +37,7 @@ static void OSi_ExitThread(void *arg); void OSi_ExitThread_Destroy(void); static void OSi_SleepAlarmCallback(void *arg); +#pragma warn_no_side_effect off static inline s32 OSi_GetUnusedThreadId(void) { OSi_SystemStackBuffer; @@ -44,6 +45,7 @@ static inline s32 OSi_GetUnusedThreadId(void) exitThreadStatus; return ++OSi_ThreadIdCount; } +#pragma warn_no_side_effect on static inline void OS_RescheduleThread(void) {