diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2019-10-26 10:23:13 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2019-10-26 10:23:13 -0400 |
commit | 93f0703fcdda810062071fde4febe111146c18cc (patch) | |
tree | 241164c7e5fd5e71a9e3eca6eb8d6a918566d963 /include | |
parent | fd78afa5a7d4441fe0d76693e301deb6bc2557dc (diff) | |
parent | 1f569f0136952135a0e17fe22cf180c0e87dd007 (diff) |
Merge branch 'master' of github.com:pret/pokefirered into script_menu
Diffstat (limited to 'include')
37 files changed, 262 insertions, 408 deletions
diff --git a/include/battle.h b/include/battle.h index 7c1528072..40a2eba04 100644 --- a/include/battle.h +++ b/include/battle.h @@ -18,14 +18,6 @@ 0x2 bit is responsible for the id of sent out pokemon. 0 means it's the first sent out pokemon, 1 it's the second one. (Triple battle didn't exist at the time yet.) */ -#define IDENTITY_PLAYER_MON1 0 -#define IDENTITY_OPPONENT_MON1 1 -#define IDENTITY_PLAYER_MON2 2 -#define IDENTITY_OPPONENT_MON2 3 - -#define SIDE_PLAYER 0x0 -#define SIDE_OPPONENT 0x1 - #define GET_BATTLER_POSITION(battler)((gBattlerPositions[battler])) #define GET_BATTLER_SIDE(battler)((GetBattlerPosition(battler) & BIT_SIDE)) #define GET_BATTLER_SIDE2(battler)((GET_BATTLER_POSITION(battler) & BIT_SIDE)) @@ -36,40 +28,6 @@ #define STEVEN_PARTNER_ID 0xC03 #define SECRET_BASE_OPPONENT 0x400 -#define BATTLE_WON 0x1 -#define BATTLE_LOST 0x2 -#define BATTLE_DREW 0x3 -#define BATTLE_RAN 0x4 -#define BATTLE_PLAYER_TELEPORTED 0x5 -#define BATTLE_POKE_FLED 0x6 -#define BATTLE_CAUGHT 0x7 -#define BATTLE_SAFARI_OUT_OF_BALLS 0x8 -#define BATTLE_FORFEITED 0x9 -#define BATTLE_OPPONENT_TELEPORTED 0xA - -#define OUTCOME_LINK_BATTLE_RUN 0x80 - -#define STATUS_NONE 0x0 -#define STATUS_SLEEP 0x7 -#define STATUS_POISON 0x8 -#define STATUS_BURN 0x10 -#define STATUS_FREEZE 0x20 -#define STATUS_PARALYSIS 0x40 -#define STATUS_TOXIC_POISON 0x80 -#define STATUS_TOXIC_COUNTER 0xF00 - -#define STATUS_PSN_ANY ((STATUS_POISON | STATUS_TOXIC_POISON)) -#define STATUS_ANY ((STATUS_SLEEP | STATUS_POISON | STATUS_BURN | STATUS_FREEZE | STATUS_PARALYSIS | STATUS_TOXIC_POISON)) - -#define SIDE_STATUS_REFLECT (1 << 0) -#define SIDE_STATUS_LIGHTSCREEN (1 << 1) -#define SIDE_STATUS_X4 (1 << 2) -#define SIDE_STATUS_SPIKES (1 << 4) -#define SIDE_STATUS_SAFEGUARD (1 << 5) -#define SIDE_STATUS_FUTUREATTACK (1 << 6) -#define SIDE_STATUS_MIST (1 << 8) -#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9) - #define B_ACTION_USE_MOVE 0 #define B_ACTION_USE_ITEM 1 #define B_ACTION_SWITCH 2 @@ -79,7 +37,7 @@ #define B_ACTION_SAFARI_POKEBLOCK 6 #define B_ACTION_SAFARI_GO_NEAR 7 #define B_ACTION_SAFARI_RUN 8 -#define B_ACTION_9 9 +#define B_ACTION_OLDMAN_THROW 9 #define B_ACTION_EXEC_SCRIPT 10 #define B_ACTION_TRY_FINISH 11 #define B_ACTION_FINISHED 12 @@ -87,31 +45,9 @@ #define B_ACTION_NOTHING_FAINTED 13 // when choosing an action #define B_ACTION_NONE 0xFF -#define MOVESTATUS_MISSED (1 << 0) -#define MOVESTATUS_SUPEREFFECTIVE (1 << 1) -#define MOVESTATUS_NOTVERYEFFECTIVE (1 << 2) -#define MOVESTATUS_NOTAFFECTED (1 << 3) -#define MOVESTATUS_ONEHITKO (1 << 4) -#define MOVESTATUS_FAILED (1 << 5) -#define MOVESTATUS_ENDURED (1 << 6) -#define MOVESTATUS_HUNGON (1 << 7) - -#define MOVESTATUS_NOEFFECT ((MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED)) - #define MAX_TRAINER_ITEMS 4 #define MAX_MON_MOVES 4 -#define BATTLE_TERRAIN_GRASS 0 -#define BATTLE_TERRAIN_LONG_GRASS 1 -#define BATTLE_TERRAIN_SAND 2 -#define BATTLE_TERRAIN_UNDERWATER 3 -#define BATTLE_TERRAIN_WATER 4 -#define BATTLE_TERRAIN_POND 5 -#define BATTLE_TERRAIN_ROCK 6 -#define BATTLE_TERRAIN_CAVE 7 -#define BATTLE_TERRAIN_INSIDE 8 -#define BATTLE_TERRAIN_PLAIN 9 - // array entries for battle communication #define MULTIUSE_STATE 0x0 #define CURSOR_POSITION 0x1 @@ -133,29 +69,6 @@ #define MOVE_TARGET_FOES_AND_ALLY 0x20 #define MOVE_TARGET_OPPONENTS_FIELD 0x40 -// defines for the u8 array gTypeEffectiveness -#define TYPE_EFFECT_ATK_TYPE(i)((gTypeEffectiveness[i + 0])) -#define TYPE_EFFECT_DEF_TYPE(i)((gTypeEffectiveness[i + 1])) -#define TYPE_EFFECT_MULTIPLIER(i)((gTypeEffectiveness[i + 2])) - -// defines for the gTypeEffectiveness multipliers -#define TYPE_MUL_NO_EFFECT 0 -#define TYPE_MUL_NOT_EFFECTIVE 5 -#define TYPE_MUL_NORMAL 10 -#define TYPE_MUL_SUPER_EFFECTIVE 20 - -// special type table Ids -#define TYPE_FORESIGHT 0xFE -#define TYPE_ENDTABLE 0xFF - -// for battle script commands -#define CMP_EQUAL 0x0 -#define CMP_NOT_EQUAL 0x1 -#define CMP_GREATER_THAN 0x2 -#define CMP_LESS_THAN 0x3 -#define CMP_COMMON_BITS 0x4 -#define CMP_NO_COMMON_BITS 0x5 - struct TrainerMonNoItemDefaultMoves { u16 iv; @@ -210,13 +123,8 @@ struct Trainer /*0x24*/ const union TrainerMonPtr party; }; -#define PARTY_FLAG_CUSTOM_MOVES 0x1 -#define PARTY_FLAG_HAS_ITEM 0x2 - extern const struct Trainer gTrainers[]; -#define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F)) - struct ResourceFlags { u32 flags[4]; @@ -373,22 +281,6 @@ extern u8 gActiveBattler; extern u8 gBattlerTarget; extern u8 gAbsentBattlerFlags; -// script's table id to bit -#define AI_SCRIPT_CHECK_BAD_MOVE (1 << 0) -#define AI_SCRIPT_TRY_TO_FAINT (1 << 1) -#define AI_SCRIPT_CHECK_VIABILITY (1 << 2) -#define AI_SCRIPT_SETUP_FIRST_TURN (1 << 3) -#define AI_SCRIPT_RISKY (1 << 4) -#define AI_SCRIPT_PREFER_STRONGEST_MOVE (1 << 5) -#define AI_SCRIPT_PREFER_BATON_PASS (1 << 6) -#define AI_SCRIPT_DOUBLE_BATTLE (1 << 7) -#define AI_SCRIPT_HP_AWARE (1 << 8) -#define AI_SCRIPT_UNKNOWN (1 << 9) -// 10 - 28 are not used -#define AI_SCRIPT_ROAMING (1 << 29) -#define AI_SCRIPT_SAFARI (1 << 30) -#define AI_SCRIPT_FIRST_BATTLE (1 << 31) - extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT]; struct UsedMoves @@ -437,10 +329,6 @@ struct BattleResources extern struct BattleResources *gBattleResources; -#define BATTLESCRIPTS_STACK (gBattleResources->battleScriptsStack) -#define BATTLE_CALLBACKS_STACK (gBattleResources->battleCallbackStack) -#define BATTLE_LVLUP_STATS (gBattleResources->statsBeforeLvlUp) - struct BattleResults { u8 playerFaintCounter; // 0x0 @@ -521,22 +409,20 @@ struct BattleStruct u8 expGetterBattlerId; u8 field_90; u8 field_91; - u8 AI_monToSwitchIntoId[MAX_BATTLERS_COUNT]; + u8 AI_monToSwitchIntoId[2]; + u8 field_94; + u8 field_95; u8 field_96; u8 field_97; u8 lastTakenMove[MAX_BATTLERS_COUNT * 2 * 2]; // ask gamefreak why they declared it that way u16 hpOnSwitchout[2]; u8 abilityPreventingSwitchout; u8 hpScale; - u8 field_AE; - u8 field_AF; - u8 field_B0; - u8 field_B1; - u8 field_B2; - u8 field_B3; + u16 savedBattleTypeFlags; + void (*savedCallback)(void); u8 synchronizeMoveEffect; - u8 field_B5; - u8 field_B6; + u8 multiplayerId; + u8 overworldWeatherDone; u8 atkCancellerTracker; u16 usedHeldItems[MAX_BATTLERS_COUNT]; u8 chosenItem[4]; // why is this an u8? @@ -556,7 +442,12 @@ struct BattleStruct u8 wishPerishSongBattlerId; u8 field_182; u8 field_183; - u8 field_184[124]; // currently unknown + u8 field_184; + u8 field_185; + u8 field_186; + u8 field_187; + struct BattleEnigmaBerry battleEnigmaBerry; + u8 field_1A4[0x5C]; // currently unknown }; // size == 0x200 bytes extern struct BattleStruct *gBattleStruct; @@ -579,72 +470,6 @@ extern struct BattleStruct *gBattleStruct; gBattleMons[battlerId].type2 = type; \ } -#define MOVE_EFFECT_SLEEP 0x1 -#define MOVE_EFFECT_POISON 0x2 -#define MOVE_EFFECT_BURN 0x3 -#define MOVE_EFFECT_FREEZE 0x4 -#define MOVE_EFFECT_PARALYSIS 0x5 -#define MOVE_EFFECT_TOXIC 0x6 -#define MOVE_EFFECT_CONFUSION 0x7 -#define MOVE_EFFECT_FLINCH 0x8 -#define MOVE_EFFECT_TRI_ATTACK 0x9 -#define MOVE_EFFECT_UPROAR 0xA -#define MOVE_EFFECT_PAYDAY 0xB -#define MOVE_EFFECT_CHARGING 0xC -#define MOVE_EFFECT_WRAP 0xD -#define MOVE_EFFECT_RECOIL_25 0xE -#define MOVE_EFFECT_ATK_PLUS_1 0xF -#define MOVE_EFFECT_DEF_PLUS_1 0x10 -#define MOVE_EFFECT_SPD_PLUS_1 0x11 -#define MOVE_EFFECT_SP_ATK_PLUS_1 0x12 -#define MOVE_EFFECT_SP_DEF_PLUS_1 0x13 -#define MOVE_EFFECT_ACC_PLUS_1 0x14 -#define MOVE_EFFECT_EVS_PLUS_1 0x15 -#define MOVE_EFFECT_ATK_MINUS_1 0x16 -#define MOVE_EFFECT_DEF_MINUS_1 0x17 -#define MOVE_EFFECT_SPD_MINUS_1 0x18 -#define MOVE_EFFECT_SP_ATK_MINUS_1 0x19 -#define MOVE_EFFECT_SP_DEF_MINUS_1 0x1A -#define MOVE_EFFECT_ACC_MINUS_1 0x1B -#define MOVE_EFFECT_EVS_MINUS_1 0x1C -#define MOVE_EFFECT_RECHARGE 0x1D -#define MOVE_EFFECT_RAGE 0x1E -#define MOVE_EFFECT_STEAL_ITEM 0x1F -#define MOVE_EFFECT_PREVENT_ESCAPE 0x20 -#define MOVE_EFFECT_NIGHTMARE 0x21 -#define MOVE_EFFECT_ALL_STATS_UP 0x22 -#define MOVE_EFFECT_RAPIDSPIN 0x23 -#define MOVE_EFFECT_REMOVE_PARALYSIS 0x24 -#define MOVE_EFFECT_ATK_DEF_DOWN 0x25 -#define MOVE_EFFECT_RECOIL_33_PARALYSIS 0x26 -#define MOVE_EFFECT_ATK_PLUS_2 0x27 -#define MOVE_EFFECT_DEF_PLUS_2 0x28 -#define MOVE_EFFECT_SPD_PLUS_2 0x29 -#define MOVE_EFFECT_SP_ATK_PLUS_2 0x2A -#define MOVE_EFFECT_SP_DEF_PLUS_2 0x2B -#define MOVE_EFFECT_ACC_PLUS_2 0x2C -#define MOVE_EFFECT_EVS_PLUS_2 0x2D -#define MOVE_EFFECT_ATK_MINUS_2 0x2E -#define MOVE_EFFECT_DEF_MINUS_2 0x2F -#define MOVE_EFFECT_SPD_MINUS_2 0x30 -#define MOVE_EFFECT_SP_ATK_MINUS_2 0x31 -#define MOVE_EFFECT_SP_DEF_MINUS_2 0x32 -#define MOVE_EFFECT_ACC_MINUS_2 0x33 -#define MOVE_EFFECT_EVS_MINUS_2 0x34 -#define MOVE_EFFECT_THRASH 0x35 -#define MOVE_EFFECT_KNOCK_OFF 0x36 -#define MOVE_EFFECT_NOTHING_37 0x37 -#define MOVE_EFFECT_NOTHING_38 0x38 -#define MOVE_EFFECT_NOTHING_39 0x39 -#define MOVE_EFFECT_NOTHING_3A 0x3A -#define MOVE_EFFECT_SP_ATK_TWO_DOWN 0x3B -#define MOVE_EFFECT_NOTHING_3C 0x3C -#define MOVE_EFFECT_NOTHING_3D 0x3D -#define MOVE_EFFECT_NOTHING_3E 0x3E -#define MOVE_EFFECT_NOTHING_3F 0x3F -#define MOVE_EFFECT_AFFECTS_USER 0x40 -#define MOVE_EFFECT_CERTAIN 0x80 - #define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8 #define GET_STAT_BUFF_VALUE2(n)((n & 0xF0)) #define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40 @@ -654,32 +479,6 @@ extern struct BattleStruct *gBattleStruct; #define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + (stage << 4) + (goesDown << 7)) -// used in many battle files, it seems as though Hisashi Sogabe wrote -// some sort of macro to replace the use of actually calling memset. -// Perhaps it was thought calling memset was much slower? - -// The compiler wont allow us to locally declare ptr in this macro; some -// functions that invoke this macro will not match without this egregeous -// assumption about the variable names, so in order to avoid this assumption, -// we opt to pass the variables themselves, even though it is likely that -// Sogabe assumed the variables were named src and dest. Trust me: I tried to -// avoid assuming variable names, but the ROM just will not match without the -// assumptions. Therefore, these macros are bad practice, but I'm putting them -// here anyway. -#define MEMSET_ALT(data, c, size, var, dest) \ -{ \ - dest = (u8 *)data; \ - for(var = 0; var < (u32)size; var++) \ - dest[var] = c; \ -} \ - -#define MEMCPY_ALT(data, dest, size, var, src) \ -{ \ - src = (u8 *)data; \ - for(var = 0; var < (u32)size; var++) \ - dest[var] = src[var]; \ -} \ - struct BattleScripting { s32 painSplitHp; @@ -708,17 +507,6 @@ struct BattleScripting u8 field_23; }; -// functions - -// battle_1 -void LoadBattleTextboxAndBackground(void); -void LoadBattleEntryBackground(void); -void ApplyPlayerChosenFrameToBattleMenu(void); -bool8 LoadChosenBattleElement(u8 caseId); -void DrawMainBattleBackground(void); -void task00_0800F6FC(u8 taskId); -void sub_800F324(void); - enum { BACK_PIC_BRENDAN, @@ -731,11 +519,6 @@ enum BACK_PIC_STEVEN }; -// rom_80A5C6C -u8 GetBattlerSide(u8 bank); -u8 GetBattlerPosition(u8 bank); -u8 GetBattlerAtPosition(u8 bank); - struct BattleSpriteInfo { u16 invisible : 1; // 0x1 @@ -929,5 +712,8 @@ extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT]; extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT]; extern u8 gChosenActionByBattler[MAX_BATTLERS_COUNT]; extern u8 gBattleTerrain; +extern struct UnknownPokemonStruct4 gUnknown_2022B58[3]; +extern u16 *gUnknown_2022BC0; +extern u16 gRandomTurnNumber; #endif // GUARD_BATTLE_H diff --git a/include/battle_anim.h b/include/battle_anim.h index feaa8816b..9db123f91 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -2,8 +2,9 @@ #define GUARD_BATTLE_ANIM_H #include "battle.h" -#include "constants/battle_anim.h" +#include "data.h" #include "task.h" +#include "constants/battle_anim.h" enum { @@ -166,8 +167,12 @@ void LaunchStatusAnimation(u8 bank, u8 statusAnimId); u8 ItemIdToBallId(u16 itemId); u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId); u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId); +void sub_80EEFC8(u8 *, u8 *, u8 battlerId); +void sub_80EF0E0(u8 batterId); // battle_anim_mons.c +extern const struct MonCoords gCastformFrontSpriteCoords[]; + u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType); u8 GetBattlerSpriteCoord2(u8 battlerId, u8 coordType); u8 GetBattlerSpriteDefault_Y(u8 battlerId); @@ -237,9 +242,9 @@ void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor); u32 sub_8075BE8(u8 battleBackground, u8 attacker, u8 target, u8 attackerPartner, u8 targetPartner, u8 a6, u8 a7); u32 sub_8075CB8(u8 a1, u8 a2, u8 a3, u8 a4); u8 sub_8075D80(u8 a1); -void sub_8075D9C(struct Sprite *sprite); +void AnimSpriteOnMonPos(struct Sprite *sprite); void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite); -void sub_8075E80(struct Sprite *sprite); +void AnimThrowProjectile(struct Sprite *sprite); void sub_8075F0C(struct Sprite *sprite); s16 CloneBattlerSpriteWithBlend(u8 animBattler); void obj_delete_but_dont_free_vram(struct Sprite *sprite); diff --git a/include/battle_bg.h b/include/battle_bg.h index 6bf90a104..29571b410 100644 --- a/include/battle_bg.h +++ b/include/battle_bg.h @@ -1,6 +1,15 @@ #ifndef GUARD_BATTLE_BG_H #define GUARD_BATTLE_BG_H +#include "bg.h" + +extern const struct BgTemplate gBattleBgTemplates[]; + void sub_800F34C(void); +void DrawBattleEntryBackground(void); +void sub_800F6FC(u8 taskId); +void LoadBattleMenuWindowGfx(void); +void LoadBattleTextboxAndBackground(void); +void sub_800F324(void); #endif // GUARD_BATTLE_BG_H diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 6da4ca240..96f57c78a 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -260,16 +260,18 @@ void SetControllerToPlayerPartner(void); void SetControllerToSafari(void); // pokedude controller -void SetControllerToPokedude(void); +void SetControllerToPokeDude(void); -// oak controller -void SetControllerToOakOrOldman(void); +// oak and old man controller +void SetControllerToOakOrOldMan(void); bool8 sub_80EB2E0(u8); void sub_80EB2F4(u8); void sub_80E8570(void); void sub_80E85C0(void); void sub_80E8598(void); void sub_80E7988(void); +void sub_80EB30C(void); +void sub_80EB524(void); // link opponent void SetControllerToLinkOpponent(void); diff --git a/include/battle_main.h b/include/battle_main.h index 757ee3468..613171da9 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -1,6 +1,8 @@ #ifndef GUARD_BATTLE_MAIN_H #define GUARD_BATTLE_MAIN_H +#include "constants/abilities.h" + struct TrainerMoney { u8 classId; @@ -43,61 +45,54 @@ struct UnknownPokemonStruct4 #define BOUNCE_MON 0x0 #define BOUNCE_HEALTHBOX 0x1 +extern const struct SpriteTemplate gUnknown_824EFF0; +extern const struct OamData gOamData_824F010; +extern const struct OamData gOamData_824F018; +extern const u8 gTypeNames[][TYPE_NAME_LENGTH + 1]; +extern const u8 gStatusConditionString_PoisonJpn[8]; +extern const u8 gStatusConditionString_SleepJpn[8]; +extern const u8 gStatusConditionString_ParalysisJpn[8]; +extern const u8 gStatusConditionString_BurnJpn[8]; +extern const u8 gStatusConditionString_IceJpn[8]; +extern const u8 gStatusConditionString_ConfusionJpn[8]; +extern const u8 gStatusConditionString_LoveJpn[8]; +extern const u8 *const gStatusConditionStringsTable[7][2]; +extern const u8 gTypeEffectiveness[336]; +extern const struct TrainerMoney gTrainerMoneyTable[]; +extern const u8 *const gAbilityDescriptionPointers[ABILITIES_COUNT]; +extern const u8 gAbilityNames[ABILITIES_COUNT][ABILITY_NAME_LENGTH + 1]; + void CB2_InitBattle(void); void BattleMainCB2(void); -void CB2_QuitRecordedBattle(void); -void sub_8038528(struct Sprite* sprite); -void sub_8038A04(void); // unused +void FreeRestoreBattleData(void); void VBlankCB_Battle(void); +void nullsub_9(struct Sprite *sprite); void sub_801182C(struct Sprite *sprite); void sub_8011A1C(void); -u32 sub_80391E0(u8 arrayId, u8 caseId); -u32 sub_80397C4(u32 setId, u32 tableId); -void oac_poke_opponent(struct Sprite *sprite); -void SpriteCallbackDummy_2(struct Sprite *sprite); -void sub_8039934(struct Sprite *sprite); -void sub_8012098(struct Sprite *sprite); +u32 sub_8011C44(u8 arrayId, u8 caseId); +void SpriteCB_WildMon(struct Sprite *sprite); +void SpriteCallbackDummy2(struct Sprite *sprite); +void SpriteCB_FaintOpponentMon(struct Sprite *sprite); void sub_8012044(struct Sprite *sprite); -void sub_8039B58(struct Sprite *sprite); -void sub_8039BB4(struct Sprite *sprite); -void sub_80105DC(struct Sprite *sprite); +void sub_8012098(struct Sprite *sprite); +void sub_80120C4(struct Sprite *sprite); +void sub_8012100(struct Sprite *sprite); void sub_8012110(struct Sprite *sprite); -void DoBounceEffect(u8 bank, u8 b, s8 c, s8 d); -void EndBounceEffect(u8 bank, bool8 b); -void sub_8039E44(struct Sprite *sprite); -void sub_8039E60(struct Sprite *sprite); -void sub_8039E84(struct Sprite *sprite); +void DoBounceEffect(u8 battler, u8 which, s8 delta, s8 amplitude); +void EndBounceEffect(u8 battler, u8 which); +void sub_8012354(struct Sprite *sprite); void sub_801236C(struct Sprite *sprite); +void nullsub_12(void); void BeginBattleIntro(void); void SwitchInClearSetData(void); void FaintClearSetData(void); -void sub_803B3AC(void); // unused -void sub_803B598(void); // unused void BattleTurnPassed(void); u8 IsRunningFromBattleImpossible(void); -void sub_8013F6C(u8 battlerId); +void sub_8013F6C(u8 battler); void SwapTurnOrder(u8 id1, u8 id2); -u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves); +u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves); void RunBattleScriptCommands_PopCallbacksStack(void); void RunBattleScriptCommands(void); -bool8 TryRunFromBattle(u8 bank); -void sub_800FD9C(void); -void sub_80120C4(struct Sprite *); -void sub_8012100(struct Sprite *); -void nullsub_12(void); -void SpriteCB_FaintOpponentMon(struct Sprite *sprite); - -extern const u8 gStatusConditionString_PoisonJpn[8]; -extern const u8 gStatusConditionString_SleepJpn[8]; -extern const u8 gStatusConditionString_ParalysisJpn[8]; -extern const u8 gStatusConditionString_BurnJpn[8]; -extern const u8 gStatusConditionString_IceJpn[8]; -extern const u8 gStatusConditionString_ConfusionJpn[8]; -extern const u8 gStatusConditionString_LoveJpn[8]; - -extern const u8 * const gStatusConditionStringsTable[7][2]; - -extern const u8 gTypeEffectiveness[336]; -extern const struct TrainerMoney gTrainerMoneyTable[]; +bool8 TryRunFromBattle(u8 battler); #endif // GUARD_BATTLE_MAIN_H diff --git a/include/battle_message.h b/include/battle_message.h index ffc9d5bb7..130dc7ce9 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -238,4 +238,12 @@ extern const u8* const gStatNamesTable2[]; extern const u16 gMissStringIds[]; extern const u16 gTrappingMoves[]; +extern const u8 gText_Sleep[]; +extern const u8 gText_Poison[]; +extern const u8 gText_Burn[]; +extern const u8 gText_Paralysis[]; +extern const u8 gText_Ice[]; +extern const u8 gText_Confusion[]; +extern const u8 gText_Love[]; + #endif // GUARD_BATTLE_MESSAGE_H diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index 3f2699064..983d9fce6 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -7,13 +7,6 @@ #define NO_ACC_CALC_CHECK_LOCK_ON 0xFFFF #define ACC_CURR_MOVE 0 -#define CMP_EQUAL 0x0 -#define CMP_NOT_EQUAL 0x1 -#define CMP_GREATER_THAN 0x2 -#define CMP_LESS_THAN 0x3 -#define CMP_COMMON_BITS 0x4 -#define CMP_NO_COMMON_BITS 0x5 - #define ATK48_STAT_NEGATIVE 0x1 #define ATK48_STAT_BY_TWO 0x2 #define ATK48_BIT_x4 0x4 diff --git a/include/battle_scripts.h b/include/battle_scripts.h index a13a8c097..184527587 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -227,5 +227,13 @@ extern const u8 BattleScript_FlushMessageBox[]; extern const u8 BattleScript_SpikesOnFaintedBattler[]; extern const u8 BattleScript_GhostBallDodge[]; extern const u8 gUnknown_81D9A88[]; +extern const u8 gUnknown_81D91A1[]; // knizz: silph scope unveil +extern const u8 gUnknown_81D88D7[]; + +extern const u8 *const gBattleScriptsForMoveEffects[]; +extern const u8 *const gBattlescriptsForBallThrow[]; +extern const u8 *const gBattlescriptsForRunningByItem[]; +extern const u8 *const gBattlescriptsForUsingItem[]; +extern const u8 *const gBattlescriptsForSafariActions[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/battle_setup.h b/include/battle_setup.h index 61395811b..809806e9b 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -3,20 +3,36 @@ #include "global.h" -void BattleSetup_StartScriptedWildBattle(void); -u8 BattleSetup_GetTerrainId(void); -u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data); -void BattleSetup_StartBattlePikeWildBattle(void); void BattleSetup_StartWildBattle(void); void BattleSetup_StartRoamerBattle(void); - -u8 HasTrainerAlreadyBeenFought(u16); -void SetTrainerFlag(u16); -void ClearTrainerFlag(u16); -void BattleSetup_StartTrainerBattle(void); -u8 *BattleSetup_GetScriptAddrAfterBattle(void); -u8 *BattleSetup_GetTrainerPostBattleScript(void); -void sub_80803FC(void); +void ScrSpecial_StartOldManTutorialBattle(void); +void BattleSetup_StartScriptedWildBattle(void); +void ScrSpecial_StartMarowakBattle(void); +void ScrSpecial_StartSouthernIslandBattle(void); +void Special_StartLegendaryBattle(void); +void Special_StartGroudonKyogreBattle(void); +void Special_StartRegiBattle(void); +u8 BattleSetup_GetTerrainId(void); u8 sub_8080060(void); +const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data); +void ConfigureAndSetUpOneTrainerBattle(u8 trainerEventObjId, const u8 *trainerScript); +bool32 GetTrainerFlagFromScriptPointer(const u8 *data); +void SetUpTrainerMovement(void); +u8 ScrSpecial_GetTrainerBattleMode(void); +u16 sub_80803D8(void); +u16 ScrSpecial_HasTrainerBeenFought(void); +void SetBattledTrainerFlag(void); +bool8 HasTrainerBeenFought(u16 trainerId); +void SetTrainerFlag(u16 trainerId); +void ClearTrainerFlag(u16 trainerId); +void BattleSetup_StartTrainerBattle(void); +void ScrSpecial_StartTrainerEyeRematch(void); +void ScrSpecial_ShowTrainerIntroSpeech(void); +const u8 *BattleSetup_GetScriptAddrAfterBattle(void); +const u8 *BattleSetup_GetTrainerPostBattleScript(void); +void ScrSpecial_ShowTrainerNonBattlingSpeech(void); +void PlayTrainerEncounterMusic(void); +const u8 *GetTrainerALoseText(void); +const u8 *GetTrainerWonSpeech(void); #endif // GUARD_BATTLE_SETUP_H diff --git a/include/berry.h b/include/berry.h index 0e554a789..d55192301 100644 --- a/include/berry.h +++ b/include/berry.h @@ -63,7 +63,7 @@ void FieldObjectInteractionRemoveBerryTree(void); u8 PlayerHasBerries(void); void ResetBerryTreeSparkleFlags(void); void sub_809C794(void); -const struct Berry * sub_809C8A0(u8 berryIdx); +const struct Berry * GetBerryInfo(u8 berryIdx); extern const struct Berry gBerries[]; diff --git a/include/constants/abilities.h b/include/constants/abilities.h index 4e2c4056c..4ad54c86f 100644 --- a/include/constants/abilities.h +++ b/include/constants/abilities.h @@ -80,4 +80,6 @@ #define ABILITY_CACOPHONY 76 #define ABILITY_AIR_LOCK 77 +#define ABILITIES_COUNT 78 + #endif // GUARD_CONSTANTS_ABILITIES_H diff --git a/include/constants/battle.h b/include/constants/battle.h index a0099d23f..910b50562 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -44,38 +44,38 @@ #define BIT_FLANK 2 // Battle Type Flags -#define BATTLE_TYPE_DOUBLE 0x0001 -#define BATTLE_TYPE_LINK 0x0002 -#define BATTLE_TYPE_IS_MASTER 0x0004 // In not-link battles, it's always set. -#define BATTLE_TYPE_TRAINER 0x0008 -#define BATTLE_TYPE_FIRST_BATTLE 0x0010 -#define BATTLE_TYPE_20 0x0020 -#define BATTLE_TYPE_MULTI 0x0040 -#define BATTLE_TYPE_SAFARI 0x0080 -#define BATTLE_TYPE_BATTLE_TOWER 0x0100 -#define BATTLE_TYPE_OLDMAN_TUTORIAL 0x0200 -#define BATTLE_TYPE_ROAMER 0x0400 -#define BATTLE_TYPE_EREADER_TRAINER 0x0800 -#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000 -#define BATTLE_TYPE_LEGENDARY 0x2000 -#define BATTLE_TYPE_REGI 0x4000 -#define BATTLE_TYPE_GHOST 0x8000 -#define BATTLE_TYPE_POKEDUDE 0x10000 -#define BATTLE_TYPE_PALACE 0x20000 -#define BATTLE_TYPE_ARENA 0x40000 -#define BATTLE_TYPE_TRAINER_TOWER 0x80000 -#define BATTLE_TYPE_PIKE 0x100000 -#define BATTLE_TYPE_PYRAMID 0x200000 -#define BATTLE_TYPE_INGAME_PARTNER 0x400000 -#define BATTLE_TYPE_x800000 0x800000 -#define BATTLE_TYPE_RECORDED 0x1000000 -#define BATTLE_TYPE_x2000000 0x2000000 -#define BATTLE_TYPE_TRAINER_HILL 0x4000000 -#define BATTLE_TYPE_SECRET_BASE 0x8000000 -#define BATTLE_TYPE_GROUDON 0x10000000 -#define BATTLE_TYPE_KYOGRE 0x20000000 -#define BATTLE_TYPE_RAYQUAZA 0x40000000 -#define BATTLE_TYPE_x80000000 0x80000000 +#define BATTLE_TYPE_DOUBLE 0x0001 +#define BATTLE_TYPE_LINK 0x0002 +#define BATTLE_TYPE_IS_MASTER 0x0004 // In not-link battles, it's always set. +#define BATTLE_TYPE_TRAINER 0x0008 +#define BATTLE_TYPE_FIRST_BATTLE 0x0010 +#define BATTLE_TYPE_20 0x0020 +#define BATTLE_TYPE_MULTI 0x0040 +#define BATTLE_TYPE_SAFARI 0x0080 +#define BATTLE_TYPE_BATTLE_TOWER 0x0100 +#define BATTLE_TYPE_OLD_MAN_TUTORIAL 0x0200 +#define BATTLE_TYPE_ROAMER 0x0400 +#define BATTLE_TYPE_EREADER_TRAINER 0x0800 +#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000 +#define BATTLE_TYPE_LEGENDARY 0x2000 +#define BATTLE_TYPE_REGI 0x4000 +#define BATTLE_TYPE_GHOST 0x8000 +#define BATTLE_TYPE_POKEDUDE 0x10000 +#define BATTLE_TYPE_PALACE 0x20000 +#define BATTLE_TYPE_ARENA 0x40000 +#define BATTLE_TYPE_TRAINER_TOWER 0x80000 +#define BATTLE_TYPE_PIKE 0x100000 +#define BATTLE_TYPE_PYRAMID 0x200000 +#define BATTLE_TYPE_INGAME_PARTNER 0x400000 +#define BATTLE_TYPE_x800000 0x800000 +#define BATTLE_TYPE_RECORDED 0x1000000 +#define BATTLE_TYPE_x2000000 0x2000000 +#define BATTLE_TYPE_TRAINER_HILL 0x4000000 +#define BATTLE_TYPE_SECRET_BASE 0x8000000 +#define BATTLE_TYPE_GROUDON 0x10000000 +#define BATTLE_TYPE_KYOGRE 0x20000000 +#define BATTLE_TYPE_RAYQUAZA 0x40000000 +#define BATTLE_TYPE_x80000000 0x80000000 #define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID) #define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE) @@ -293,4 +293,9 @@ #define BATTLE_TERRAIN_BUILDING 8 #define BATTLE_TERRAIN_PLAIN 9 +// Return value for IsRunningFromBattleImpossible. +#define BATTLE_RUN_SUCCESS 0 +#define BATTLE_RUN_FORBIDDEN 1 +#define BATTLE_RUN_FAILURE 2 + #endif // GUARD_CONSTANTS_BATTLE_H diff --git a/include/constants/battle_setup.h b/include/constants/battle_setup.h new file mode 100644 index 000000000..8f700dc04 --- /dev/null +++ b/include/constants/battle_setup.h @@ -0,0 +1,15 @@ +#ifndef GUARD_CONSTANTS_BATTLE_SETUP_H +#define GUARD_CONSTANTS_BATTLE_SETUP_H + +#define TRAINER_BATTLE_SINGLE 0 +#define TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC 1 +#define TRAINER_BATTLE_CONTINUE_SCRIPT 2 +#define TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT 3 +#define TRAINER_BATTLE_DOUBLE 4 +#define TRAINER_BATTLE_REMATCH 5 +#define TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE 6 +#define TRAINER_BATTLE_REMATCH_DOUBLE 7 +#define TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC 8 +#define TRAINER_BATTLE_TUTORIAL 9 + +#endif // GUARD_CONSTANTS_BATTLE_SETUP_H diff --git a/include/constants/map_types.h b/include/constants/map_types.h new file mode 100644 index 000000000..96ea73702 --- /dev/null +++ b/include/constants/map_types.h @@ -0,0 +1,15 @@ +#ifndef GUARD_CONSTANTS_MAP_TYPES_H +#define GUARD_CONSTANTS_MAP_TYPES_H + +#define MAP_TYPE_0 0 +#define MAP_TYPE_TOWN 1 +#define MAP_TYPE_CITY 2 +#define MAP_TYPE_ROUTE 3 +#define MAP_TYPE_UNDERGROUND 4 +#define MAP_TYPE_UNDERWATER 5 +#define MAP_TYPE_OCEAN_ROUTE 6 +#define MAP_TYPE_7 7 +#define MAP_TYPE_INDOOR 8 +#define MAP_TYPE_SECRET_BASE 9 + +#endif // GUARD_CONSTANTS_MAP_TYPES_H diff --git a/include/constants/trainers.h b/include/constants/trainers.h index 7359e9381..d8c429ed5 100644 --- a/include/constants/trainers.h +++ b/include/constants/trainers.h @@ -165,6 +165,8 @@ #define TRAINER_PIC_LADY 146 #define TRAINER_PIC_PAINTER 147 +#define TRAINER_SECRET_BASE 1024 + #define F_TRAINER_FEMALE (1 << 7) #define TRAINER_PIC_AQUA_LEADER_ARCHIE 0 diff --git a/include/data.h b/include/data.h index 99594209b..9ea1f7c96 100644 --- a/include/data.h +++ b/include/data.h @@ -5,6 +5,7 @@ #include "constants/species.h" #define SPECIES_SHINY_TAG 500 +#define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F)) struct MonCoords { @@ -16,8 +17,6 @@ struct MonCoords extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; extern const u8 gMoveNames[][13]; -extern const u8 gAbilityNames[][13]; -extern const u8 gTypeNames[][7]; extern const u16 gUnknown_8251CB8[]; extern const u16 gUnknown_8251FEE[]; extern const u16 gUnknown_8252324[]; diff --git a/include/event_scripts.h b/include/event_scripts.h index c61e51f04..c0f0300b1 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -1155,6 +1155,15 @@ extern const u8 EventScript_SafariOutOfBalls[]; extern const u8 EventScript_ItemfinderDigUpUnderfootItem[]; +// battle_setup +extern const u8 EventScript_DoTrainerBattle[]; +extern const u8 EventScript_TryDoDoubleTrainerBattle[]; +extern const u8 EventScript_TryDoNormalTrainerBattle[]; +extern const u8 EventScript_TryDoDoubleRematchBattle[]; +extern const u8 EventScript_TryDoRematchBattle[]; +extern const u8 gUnknown_81A4EB4[]; +extern const u8 EventScript_1C555B[]; + // new_game extern const u8 EventScript_ResetAllMapFlags[]; diff --git a/include/evolution_scene.h b/include/evolution_scene.h index 1d87ceb76..6ceed99c1 100644 --- a/include/evolution_scene.h +++ b/include/evolution_scene.h @@ -3,8 +3,8 @@ #include "global.h" -void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID); -void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID); +void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8, u8 partyID); +void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8, u8 partyID); void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID); extern void (*gCB2_AfterEvolution)(void); diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h index 0a33138b3..ecb622de5 100644 --- a/include/field_control_avatar.h +++ b/include/field_control_avatar.h @@ -5,4 +5,7 @@ extern u32 gUnknown_3005078; +void RestartWildEncounterImmunitySteps(void); +void ClearPoisonStepCounter(void); + #endif //GUARD_FIELD_CONTROL_AVATAR_H diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 40d7ed933..6177cba1c 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -85,7 +85,7 @@ void sub_8063E28(struct MapObject *, struct Sprite *); void FieldObjectSetHeldMovement(struct MapObject *, u8); void npc_coords_shift_still(struct MapObject *); void sub_805FE7C(struct MapObject *, u8); -void npc_set_running_behaviour_etc(struct MapObject *, u8); +void SetTrainerMovementType(struct MapObject *, u8); u8 sub_80634F0(u8 direction); u8 sub_8063500(u8 a0); void EventObjectSetGraphicsId(struct MapObject *mapObject, u8 a1); @@ -94,6 +94,7 @@ void npc_paltag_set_load(u8 mode); bool8 FieldObjectIsMovementOverridden(struct MapObject *mapObject); u8 FieldObjectCheckHeldMovementStatus(struct MapObject *mapObject); u8 sub_8063F84(u8 direction); +u8 GetTrainerFacingDirectionMovementType(u8 direction); void CameraObjectSetFollowedObjectId(u8 spriteId); // Exported data declarations diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 2c408afc9..1d431771b 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -13,8 +13,8 @@ u8 player_get_direction_upper_nybble(void); u8 player_get_x22(void); void sub_808D074(u8); -void sub_805C270(); -void sub_805C780(); +void sub_805C270(void); +void sub_805C780(void); void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr); u8 sub_805C808(u8); void SetPlayerAvatarStateMask(u8 mask); diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index a4358081d..c0f25fa93 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -13,35 +13,6 @@ enum CONNECTION_EMERGE }; -// map types -enum -{ - MAP_TYPE_0, - MAP_TYPE_TOWN, - MAP_TYPE_CITY, - MAP_TYPE_ROUTE, - MAP_TYPE_UNDERGROUND, - MAP_TYPE_UNDERWATER, - MAP_TYPE_6, - MAP_TYPE_7, - MAP_TYPE_INDOOR, - MAP_TYPE_SECRET_BASE -}; - -// map battle scenes -enum -{ - MAP_BATTLE_SCENE_NORMAL, // 0 - MAP_BATTLE_SCENE_GYM, // 1 - MAP_BATTLE_SCENE_MAGMA, // 2 - MAP_BATTLE_SCENE_AQUA, // 3 - MAP_BATTLE_SCENE_SIDNEY, // 4 - MAP_BATTLE_SCENE_PHOEBE, // 5 - MAP_BATTLE_SCENE_GLACIA, // 6 - MAP_BATTLE_SCENE_DRAKE, // 7 - MAP_BATTLE_SCENE_BATTLE_TOWER, // 8 -}; - typedef void (*TilesetCB)(void); struct Tileset @@ -242,7 +213,7 @@ struct MapObject /*0x0C*/ struct Coords16 coords1; /*0x10*/ struct Coords16 coords2; /*0x14*/ struct Coords16 coords3; - /*0x18*/ u8 mapobj_unk_18:4; //current direction? + /*0x18*/ u8 facingDirection:4; //current direction? /*0x18*/ u8 placeholder18:4; /*0x19*/ union MapObjectRange range; /*0x1A*/ u8 mapobj_unk_1A; diff --git a/include/global.h b/include/global.h index 5c4501be3..9588deae3 100644 --- a/include/global.h +++ b/include/global.h @@ -32,6 +32,13 @@ // GF's lingo #define NELEMS ARRAY_COUNT +#define SWAP(a, b, temp) \ +{ \ + temp = a; \ + a = b; \ + b = temp; \ +} + // useful math macros // Converts a number to Q8.8 fixed-point format diff --git a/include/item.h b/include/item.h index 69560a0e5..dd6271d13 100644 --- a/include/item.h +++ b/include/item.h @@ -37,7 +37,6 @@ void CopyItemNameHandlePlural(u16 itemId, u8 *string, u32 quantity); bool8 IsBagPocketNonEmpty(u8 pocket); bool8 CheckBagHasItem(u16 itemId, u16 count); bool8 CheckBagHasSpace(u16 itemId, u16 count); -bool8 AddBagItem(u16 itemId, u16 count); bool8 RemoveBagItem(u16 itemId, u16 count); u8 GetPocketByItemId(u16 itemId); void ClearItemSlots(struct ItemSlot *itemSlots, u8 b); diff --git a/include/item_menu.h b/include/item_menu.h index 166906ebe..d12b9f394 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -36,6 +36,7 @@ void ItemMenu_SetExitCallback(void (*)(void)); void DisplayItemMessageInBag(u8 taskId, u8 bgId, const u8 * string, TaskFunc followUpFunc); void sub_810A1F8(u8 taskId); void sub_8107ECC(void); +void sub_810AF74(void); void sub_8108DC8(u8 pocketId); void sub_81089F4(u8 pocketId); void sub_8107DB4(u8 menuType, u8 pocket, MainCallback callback); diff --git a/include/link_rfu.h b/include/link_rfu.h index 2be9dd3c9..f5aa682e6 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -11,7 +11,7 @@ bool32 MG_PrintTextOnWindow1AndWaitButton(u8 * cmdPtr, const u8 * src); void sub_80FA190(void); void MG_DrawCheckerboardPattern(void); void task_add_05_task_del_08FA224_when_no_RfuFunc(void); -bool8 IsRfuTaskFinished(void); +bool8 IsLinkRfuTaskFinished(void); void DestroyWirelessStatusIndicatorSprite(void); void MEvent_CreateTask_CardOrNewsWithFriend(u8); void MEvent_CreateTask_CardOrNewsOverWireless(u8); diff --git a/include/map_obj_80688E4.h b/include/map_obj_80688E4.h index bfac00378..bfd5dd3c7 100644 --- a/include/map_obj_80688E4.h +++ b/include/map_obj_80688E4.h @@ -3,7 +3,7 @@ #include "global.h" -void player_bitmagic(void); +void FreezeEventObjects(void); void FreezeMapObject(struct MapObject *); void FreezeMapObjectsExceptOne(u8 mapObjectId); diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h index 62bcfdd38..df03001bf 100644 --- a/include/metatile_behavior.h +++ b/include/metatile_behavior.h @@ -10,7 +10,7 @@ bool8 MetatileBehavior_IsJumpNorth(u8 metatileBehavior); bool8 MetatileBehavior_IsJumpSouth(u8 metatileBehavior); bool8 MetatileBehavior_IsTallGrass(u8 metatileBehavior); bool8 MetatileBehavior_IsMB21OrSand(u8 metatileBehavior); -bool8 MetatileBehavior_IsMB21OrWaterfallBottom(u8 metatileBehavior); +bool8 MetatileBehavior_IsSandOrDeepSand(u8 metatileBehavior); bool8 MetatileBehavior_ReturnFalse(u8 metatileBehavior); bool8 MetatileBehavior_IsReflective(u8 metatileBehavior); bool8 MetatileBehavior_IsIce(u8 metatileBehavior); @@ -53,15 +53,15 @@ bool8 MetatileBehavior_IsPC(u8 metatileBehavior); bool8 MetatileBehavior_IsPondWaterOrPuddle(u8 metatileBehavior); bool8 MetatileBehavior_IsPuddle(u8 metatileBehavior); bool8 MetatileBehavior_IsTallGrass_2(u8 metatileBehavior); -bool8 MetatileBehavior_ReturnFalse_3(u8 metatileBehavior); +bool8 MetatileBehavior_IsLongGrass(u8 metatileBehavior); bool8 MetatileBehavior_ReturnFalse_4(u8 metatileBehavior); bool8 MetatileBehavior_ReturnFalse_5(u8 metatileBehavior); -bool8 MetatileBehavior_ReturnFalse_6(u8 metatileBehavior); -bool8 MetatileBehavior_ReturnFalse_7(u8 metatileBehavior); +bool8 MetatileBehavior_IsBridge(u8 metatileBehavior); +bool8 MetatileBehavior_GetBridgeType(u8 metatileBehavior); bool8 MetatileBehavior_UnusedIsMB_01(u8 metatileBehavior); bool8 MetatileBehavior_UnusedIsTallGrass(u8 metatileBehavior); -bool8 MetatileBehavior_IsMB0B(u8 metatileBehavior); -bool8 MetatileBehavior_IsMB0C(u8 metatileBehavior); +bool8 MetatileBehavior_IsIndoorEncounter(u8 metatileBehavior); +bool8 MetatileBehavior_IsMountain(u8 metatileBehavior); bool8 MetatileBehavior_IsDeepOrSemiDeepWater(u8 metatileBehavior); bool8 MetatileBehavior_IsMB19(u8 metatileBehavior); bool8 MetatileBehavior_IsWaterfallBottom(u8 metatileBehavior); diff --git a/include/overworld.h b/include/overworld.h index a5e975d1d..805ddc8a0 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -62,7 +62,7 @@ void sub_8084EBC(s16, s16); void player_avatar_init_params_reset(void); void Overworld_SetFlashLevel(s32 a1); -//u8 Overworld_GetFlashLevel(void); +u8 Overworld_GetFlashLevel(void); void sub_8085524(u16); void Overworld_SetSavedMusic(u16); @@ -141,5 +141,6 @@ bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd bool32 sub_8058318(void); void CB2_ReturnToStartMenu(void); +void CB2_WhiteOut(void); #endif //GUARD_OVERWORLD_H diff --git a/include/party_menu.h b/include/party_menu.h index 5b9b6e1c4..53731bee6 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -84,5 +84,7 @@ bool8 IsMultiBattle(void); void sub_8126EDC(void); void PartyMenuInit_FromPlayerPc(void); void CB2_PartyMenuFromStartMenu(void); +void sub_8128198(void); +void sub_8127FF4(u8 slot, u8 slot2); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon.h b/include/pokemon.h index 77c8191f3..79933a22c 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -169,35 +169,6 @@ enum EGG_GROUP_UNDISCOVERED }; -enum -{ - NATURE_HARDY, - NATURE_LONELY, - NATURE_BRAVE, - NATURE_ADAMANT, - NATURE_NAUGHTY, - NATURE_BOLD, - NATURE_DOCILE, - NATURE_RELAXED, - NATURE_IMPISH, - NATURE_LAX, - NATURE_TIMID, - NATURE_HASTY, - NATURE_SERIOUS, - NATURE_JOLLY, - NATURE_NAIVE, - NATURE_MODEST, - NATURE_MILD, - NATURE_QUIET, - NATURE_BASHFUL, - NATURE_RASH, - NATURE_CALM, - NATURE_GENTLE, - NATURE_SASSY, - NATURE_CAREFUL, - NATURE_QUIRKY, -}; - struct PokemonSubstruct0 { u16 species; @@ -629,10 +600,10 @@ u8 GetTrainerEncounterMusicId(u16 trainer); void AdjustFriendship(struct Pokemon *mon, u8 event); void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies); u16 GetMonEVCount(struct Pokemon *mon); -void sub_8043A68(void); +void RandomlyGivePartyPokerus(struct Pokemon *party); u8 CheckPartyPokerus(struct Pokemon *party, u8 selection); u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection); -void sub_8043B40(void); +void PartySpreadPokerus(struct Pokemon *party); bool8 TryIncrementMonLevel(struct Pokemon *mon); u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm); u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves); diff --git a/include/quest_log.h b/include/quest_log.h index adfe27e1b..8165486ce 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -2,6 +2,7 @@ #define GUARD_QUEST_LOG_H #include "global.h" +#include "quest_log_battle.h" struct UnkStruct_3005E90 { @@ -14,6 +15,7 @@ struct UnkStruct_3005E90 u8 unk_2; }; +extern u8 gUnknown_203ADFA; extern u8 gUnknown_3005E88; extern u16 sNumQuestLogs; extern struct UnkStruct_3005E90 gUnknown_3005E90; @@ -40,6 +42,8 @@ void sub_8112450(void); void sub_8112364(void); u8 sub_8112CAC(void); void sub_81138F8(void); +void sub_811231C(void); +void sub_81139BC(void); void *QuestLogGetFlagOrVarPtr(bool8 isFlag, u16 idx); void QuestLogSetFlagOrVar(bool8 isFlag, u16 idx, u16 value); diff --git a/include/quest_log_battle.h b/include/quest_log_battle.h new file mode 100644 index 000000000..45d656e14 --- /dev/null +++ b/include/quest_log_battle.h @@ -0,0 +1,9 @@ +#ifndef GUARD_QUEST_LOG_BATTLE_H +#define GUARD_QUEST_LOG_BATTLE_H + +#include "global.h" + +void sub_812BFDC(void); +void sub_812C224(void); + +#endif // GUARD_QUEST_LOG_BATTLE_H diff --git a/include/safari_zone.h b/include/safari_zone.h index feaa93ed0..a50351570 100644 --- a/include/safari_zone.h +++ b/include/safari_zone.h @@ -16,4 +16,6 @@ void ExitSafariMode(void); bool8 SafariZoneTakeStep(void); void SafariZoneRetirePrompt(void); +void CB2_EndSafariBattle(void); + #endif // GUARD_SAFARI_ZONE_H diff --git a/include/script_pokemon_util_80A0058.h b/include/script_pokemon_util_80A0058.h index e1d228589..768e838dd 100644 --- a/include/script_pokemon_util_80A0058.h +++ b/include/script_pokemon_util_80A0058.h @@ -4,5 +4,6 @@ bool8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unk1, u32 unk2, u8 unk3); bool8 ScriptGiveEgg(u16 species); void ScriptSetMonMoveSlot(u8 partyIdx, u16 move, u8 slot); +void sp000_heal_pokemon(void); #endif //GUARD_SCRIPT_POKEMON_UTIL_80A0058_H diff --git a/include/strings.h b/include/strings.h index 51396954c..9304b225d 100644 --- a/include/strings.h +++ b/include/strings.h @@ -231,6 +231,18 @@ extern const u8 gText_WhatWillPkmnDo[]; // battle_script_commands extern const u8 gText_BattleYesNoChoice[]; +// battle_controller_oak_old_man +extern const u8 gUnknown_83FDAE2[]; +extern const u8 gUnknown_83FDB92[]; +extern const u8 gUnknown_83FDBEF[]; +extern const u8 gUnknown_83FDC58[]; +extern const u8 gUnknown_83FDC95[]; +extern const u8 gUnknown_83FDD23[]; +extern const u8 gUnknown_83FDD64[]; +extern const u8 gUnknown_83FDDEB[]; +extern const u8 gUnknown_83FDCD2[]; +extern const u8 gUnknown_83FE6FA[]; + // credits extern const u8 gString_Dummy[]; extern const u8 gString_PokemonFireRed_Staff[]; // FR diff --git a/include/vs_seeker.h b/include/vs_seeker.h index efc014a4a..fdd6839df 100644 --- a/include/vs_seeker.h +++ b/include/vs_seeker.h @@ -6,9 +6,10 @@ void Task_VsSeeker_0(u8 taskId); void sub_810CB90(void); void sub_810CDE8(void); -int sub_810CE64(u16 a0); +int GetRematchTrainerId(u16 a0); bool8 sub_810CF04(u8 a0); u8 sub_810CF54(); void sub_810D0D0(void); +void sub_810CB90(void); #endif //GUARD_VS_SEEKER_H |