From 37be39117ad0a02f67fbba2b5329dadbb87f2c6d Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sun, 28 Jul 2019 01:50:50 +0800 Subject: port documentation of battle_anim_mon_movement from pokeem --- include/battle_anim.h | 88 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 58 insertions(+), 30 deletions(-) (limited to 'include') diff --git a/include/battle_anim.h b/include/battle_anim.h index 5929a318e..0406c78a0 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -19,28 +19,28 @@ enum { BG_ANIM_SCREEN_SIZE, BG_ANIM_AREA_OVERFLOW_MODE, - BG_ANIM2, - BG_ANIM3, + BG_ANIM_MOSAIC, + BG_ANIM_CHAR_BASE_BLOCK, BG_ANIM_PRIORITY, - BG_ANIM_5, - BG_ANIM_6 + BG_ANIM_PALETTES_MODE, + BG_ANIM_SCREEN_BASE_BLOCK }; -struct UnknownAnimStruct2 +struct BattleAnimBgData { - void *unk0; - u16 *unk4; - u8 unk8; - u8 unk9; - u16 unkA; - u16 unkC; + u8 *bgTiles; + u16 *bgTilemap; + u8 paletteId; + u8 bgId; + u16 tilesOffset; + u16 unused; }; struct BattleAnimBackground { - void *image; - void *palette; - void *tilemap; + const u32 *image; + const u32 *palette; + const u32 *tilemap; }; #define ANIM_ARGS_COUNT 8 @@ -53,7 +53,6 @@ extern bool8 gAnimScriptActive; extern u8 gAnimVisualTaskCount; extern u8 gAnimSoundTaskCount; extern struct DisableStruct *gAnimDisableStructPtr; -extern u32 gAnimMoveDmg; extern u16 gAnimMovePower; extern u8 gAnimFriendship; extern u16 gWeatherMoveAnim; @@ -64,8 +63,8 @@ extern u8 gBattleAnimTarget; extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT]; extern u8 gUnknown_02038440; extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT]; -extern u16 gUnknown_2037EEC; -extern s32 gUnknown_2037EE8; +extern u16 gAnimMovePower; +extern s32 gAnimMoveDmg; void ClearBattleAnimationVars(void); void DoMoveAnim(u16 move); @@ -80,7 +79,7 @@ s8 BattleAnimAdjustPanning(s8 pan); s8 BattleAnimAdjustPanning2(s8 pan); s16 sub_80A52EC(s16 a); s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan); -bool8 sub_8072DF0(u8 battlerId); +bool8 IsBattlerSpriteVisible(u8 battlerId); // battle_anim_80FE840.s void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); @@ -92,18 +91,32 @@ void sub_80A6EEC(struct Sprite *sprite); void sub_80A68D4(struct Sprite *sprite); void sub_80A6F3C(struct Sprite *sprite); void sub_80A8278(void); -void sub_80A6B30(struct UnknownAnimStruct2*); -void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1); +void sub_80A6B30(struct BattleAnimBgData *); +void sub_80A6B90(struct BattleAnimBgData *, u32 arg1); u8 sub_80A82E4(u8 bank); bool8 AnimateBallThrow(struct Sprite *sprite); enum { - BANK_X_POS, - BANK_Y_POS, + BATTLER_COORD_X, + BATTLER_COORD_Y, + BATTLER_COORD_X_2, + BATTLER_COORD_Y_PIC_OFFSET, + BATTLER_COORD_Y_PIC_OFFSET_DEFAULT, }; -u8 GetBankPosition(u8 bank, u8 attributeId); +enum +{ + BATTLER_COORD_ATTR_HEIGHT, + BATTLER_COORD_ATTR_WIDTH, + BATTLER_COORD_ATTR_TOP, + BATTLER_COORD_ATTR_BOTTOM, + BATTLER_COORD_ATTR_LEFT, + BATTLER_COORD_ATTR_RIGHT, + BATTLER_COORD_ATTR_RAW_BOTTOM, +}; + +u8 GetBattlerSpriteCoord(u8 bank, u8 attributeId); bool8 IsBankSpritePresent(u8 bank); void sub_80A6C68(u8 arg0); @@ -126,13 +139,28 @@ u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId); u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 bank, u32 arg2, u8 ballId); // battle_anim_mons.s -void sub_8074DC4(struct Sprite * sprite); -void sub_8074E14(struct Sprite * sprite); -void sub_80754B8(struct Sprite * sprite); -void sub_80758E0(u8 spriteId, u8 b); -void sub_8075980(u8 spriteId); -void obj_id_set_rotscale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); -bool8 sub_8073788(void); +void TranslateMonSpriteLinear(struct Sprite * sprite); +void TranslateMonSpriteLinearFixedPoint(struct Sprite * sprite); +void InitSpriteDataForLinearTranslation(struct Sprite * sprite); +void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 b); +void ResetSpriteRotScale(u8 spriteId); +void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); +bool8 IsContest(void); void sub_80759DC(u8 spriteId); +// battle_anim_mon_movement.c +void AnimTask_ShakeMon(u8 taskId); +void AnimTask_ShakeMon2(u8 taskId); +void AnimTask_ShakeMonInPlace(u8 taskId); +void AnimTask_ShakeAndSinkMon(u8 taskId); +void AnimTask_TranslateMonElliptical(u8 taskId); +void AnimTask_TranslateMonEllipticalRespectSide(u8 taskId); +void AnimTask_WindUpLunge(u8 taskId); +void sub_80995FC(u8 taskId); +void AnimTask_SwayMon(u8 taskId); +void AnimTask_ScaleMonAndRestore(u8 taskId); +void sub_8099980(u8 taskId); +void sub_8099A78(u8 taskId); +void sub_8099BD4(u8 taskId); + #endif // GUARD_BATTLE_ANIM_H -- cgit v1.2.3 From 935f93a0752604f1375c79e6225baa6774b60280 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Mon, 29 Jul 2019 02:39:41 +0800 Subject: ported battle_gfx_sfx_util from pokeem --- include/battle.h | 20 ++++++++------ include/battle_2.h | 1 + include/battle_anim.h | 3 ++- include/battle_controllers.h | 1 - include/battle_gfx_sfx_util.h | 63 ++++++++++++++++++++----------------------- include/battle_interface.h | 12 +++++++-- include/data2.h | 15 +++++++++++ include/graphics.h | 16 +++++++++++ include/party_menu.h | 1 + include/pokemon.h | 3 ++- 10 files changed, 88 insertions(+), 47 deletions(-) (limited to 'include') diff --git a/include/battle.h b/include/battle.h index b1284fd6c..1a8fa0201 100644 --- a/include/battle.h +++ b/include/battle.h @@ -863,9 +863,9 @@ struct BattleAnimationInfo struct BattleHealthboxInfo { - u8 flag_x1 : 1; - u8 flag_x2 : 1; - u8 flag_x4 : 1; + u8 partyStatusSummaryShown : 1; + u8 healthboxIsBouncing : 1; + u8 battlerIsBouncing : 1; u8 ballAnimActive : 1; // 0x8 u8 statusAnimActive : 1; // x10 u8 animFromTableActive : 1; // x20 @@ -876,11 +876,11 @@ struct BattleHealthboxInfo u8 field_1_x20 : 1; u8 field_1_x40 : 1; u8 field_1_x80 : 1; - u8 field_2; - u8 field_3; + u8 healthboxBounceSpriteId; + u8 battlerBounceSpriteId; u8 animationState; u8 field_5; - u8 field_6; + u8 matrixNum; u8 shadowSpriteId; u8 field_8; u8 field_9; @@ -894,12 +894,12 @@ struct BattleBarInfo s32 maxValue; s32 currentValue; s32 receivedValue; - s32 field_10; + s32 currValue; }; struct BattleSpriteData { - struct BattleSpriteInfo *bankData; + struct BattleSpriteInfo *battlerData; struct BattleHealthboxInfo *healthBoxesData; struct BattleAnimationInfo *animationData; struct BattleBarInfo *battleBars; @@ -949,6 +949,10 @@ extern u8 gPotentialItemEffectBattler; extern u8 gBattlersCount; extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT]; extern s32 gBattleMoveDamage; +extern u16 gIntroSlideFlags; +extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT]; +extern u8 gBattlerPositions[MAX_BATTLERS_COUNT]; +extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT]; extern u8 gBattleOutcome; extern u8 gBattleMonForms[MAX_BATTLERS_COUNT]; diff --git a/include/battle_2.h b/include/battle_2.h index 02050afd9..72fcb0e11 100644 --- a/include/battle_2.h +++ b/include/battle_2.h @@ -46,6 +46,7 @@ void RunBattleScriptCommands(void); bool8 TryRunFromBattle(u8 bank); void sub_800FD9C(void); void sub_80120C4(struct Sprite *); +void sub_8012100(struct Sprite *); extern const u8 gStatusConditionString_PoisonJpn[8]; extern const u8 gStatusConditionString_SleepJpn[8]; diff --git a/include/battle_anim.h b/include/battle_anim.h index 0406c78a0..fb744c316 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -126,7 +126,7 @@ u8 sub_80A6D94(void); u8 sub_80A8364(u8); void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*)); void oamt_add_pos2_onto_pos1(struct Sprite *sprite); -u8 GetBankSpriteDefault_Y(u8 bank); +u8 GetBattlerSpriteDefault_Y(u8 bank); u8 sub_80A82E4(u8 bank); u8 GetSubstituteSpriteDefault_Y(u8 bank); @@ -147,6 +147,7 @@ void ResetSpriteRotScale(u8 spriteId); void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); bool8 IsContest(void); void sub_80759DC(u8 spriteId); +bool8 IsBattlerSpritePresent(u8 battlerId); // battle_anim_mon_movement.c void AnimTask_ShakeMon(u8 taskId); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index df00c3526..577bce485 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -242,7 +242,6 @@ void EmitCmd55(u8 bufferId, u8 arg1); // player controller void SetControllerToPlayer(void); -void nullsub_21(void); void PlayerHandleGetRawMonData(void); void sub_80587B0(void); void sub_805CC00(struct Sprite *sprite); diff --git a/include/battle_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h index 313a29811..39cea7ad1 100644 --- a/include/battle_gfx_sfx_util.h +++ b/include/battle_gfx_sfx_util.h @@ -1,50 +1,45 @@ -#ifndef GUARD_BATTLE_GFX_SFX_UTIL -#define GUARD_BATTLE_GFX_SFX_UTIL +#ifndef GUARD_BATTLE_GFX_SFX_UTIL_H +#define GUARD_BATTLE_GFX_SFX_UTIL_H void AllocateBattleSpritesData(void); void FreeBattleSpritesData(void); -u16 ChooseMoveAndTargetInBattlePalace(void); -void sub_805D714(struct Sprite *sprite); -void sub_805D770(struct Sprite *sprite, bool8 arg1); -void sub_805D7AC(struct Sprite *sprite); +void sub_8033E3C(struct Sprite *sprite); +void sub_8033EEC(struct Sprite *sprite); void InitAndLaunchChosenStatusAnimation(bool8 isStatus2, u32 status); -bool8 TryHandleLaunchBattleTableAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId, u16 argument); -void InitAndLaunchSpecialAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId); +bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattler, u8 atkBattler, u8 defBattler, u8 tableId, u16 argument); +void InitAndLaunchSpecialAnimation(u8 activeBattler, u8 atkBattler, u8 defBattler, u8 tableId); bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn); -bool8 mplay_80342A4(u8 bank); -void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank); -void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank); -void nullsub_23(void); -void nullsub_24(u16 species); -void DecompressTrainerFrontPic(u16 frontPicId, u8 bank); -void DecompressTrainerBackPic(u16 backPicId, u8 bank); -void nullsub_25(u8 arg0); -void FreeTrainerFrontPicPalette(u16 frontPicId); -void sub_805DFFC(void); +bool8 mplay_80342A4(u8 battlerId); +void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId); +void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId); +void DecompressGhostFrontPic(u16 frontPicId, u8 battlerId); +void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId); +void sub_8034750(u16 a1, u8 a2); +void nullsub_16(u8 a1); +void FreeTrainerFrontPicPaletteAndTile(u16 frontPicId); bool8 BattleLoadAllHealthBoxesGfx(u8 state); void LoadBattleBarGfx(u8 arg0); -bool8 BattleInitAllSprites(u8 *state1, u8 *bank); +bool8 BattleInitAllSprites(u8 *state, u8 *battlerId); void ClearSpritesHealthboxAnimData(void); void CopyAllBattleSpritesInvisibilities(void); -void CopyBattleSpriteInvisibility(u8 bank); -void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform); -void BattleLoadSubstituteOrMonSpriteGfx(u8 bank, bool8 loadMonSprite); -void LoadBattleMonGfxAndAnimate(u8 bank, bool8 loadMonSprite, u8 spriteId); -void TrySetBehindSubstituteSpriteBit(u8 bank, u16 move); -void ClearBehindSubstituteBit(u8 bank); -void HandleLowHpMusicChange(struct Pokemon *mon, u8 bank); +void CopyBattleSpriteInvisibility(u8 battlerId); +void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, u8 notTransform); +void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite); +void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId); +void TrySetBehindSubstituteSpriteBit(u8 battlerId, u16 move); +void ClearBehindSubstituteBit(u8 battlerId); +void HandleLowHpMusicChange(struct Pokemon *mon, u8 battlerId); void BattleStopLowHpSound(void); -u8 GetMonHPBarLevel(struct Pokemon *mon); -void sub_805EAE8(void); -void sub_805EB9C(u8 affineMode); +void HandleBattleLowHpMusicChange(void); +void sub_8035450(u8 affineMode); void LoadAndCreateEnemyShadowSprites(void); void SpriteCB_SetInvisible(struct Sprite *sprite); -void SetBankEnemyShadowSpriteCallback(u8 bank, u16 species); -void EnemyShadowCallbackToSetInvisible(u8 bank); -void sub_805EF14(void); -void ClearTemporarySpeciesSpriteData(u8 bank, bool8 dontClearSubstitute); +void SetBattlerShadowSpriteCallback(u8 battlerId, u16 species); +void HideBattlerShadowSprite(u8 battlerId); +void sub_80357C8(void); +void ClearTemporarySpeciesSpriteData(u8 battlerId, bool8 dontClearSubstitute); void AllocateMonSpritesGfx(void); void FreeMonSpritesGfx(void); bool32 ShouldPlayNormalPokeCry(struct Pokemon *mon); -#endif // GUARD_BATTLE_GFX_SFX_UTIL +#endif // GUARD_BATTLE_GFX_SFX_UTIL_H diff --git a/include/battle_interface.h b/include/battle_interface.h index 27f93a3c2..bdcb4d80e 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -30,12 +30,18 @@ enum #define TAG_HEALTHBOX_OPPONENT1_TILE 0xD701 #define TAG_HEALTHBOX_OPPONENT2_TILE 0xD702 +#define TAG_HEALTHBAR_PLAYER1_TILE 0xD704 +#define TAG_HEALTHBAR_OPPONENT1_TILE 0xD705 +#define TAG_HEALTHBAR_PLAYER2_TILE 0xD706 +#define TAG_HEALTHBAR_OPPONENT2_TILE 0xD707 + #define TAG_HEALTHBOX_SAFARI_TILE 0xD70B #define TAG_STATUS_SUMMARY_BAR_TILE 0xD70C #define TAG_STATUS_SUMMARY_BALLS_TILE 0xD714 #define TAG_HEALTHBOX_PAL 0xD6FF +#define TAG_HEALTHBAR_PAL 0xD704 #define TAG_STATUS_SUMMARY_BAR_PAL 0xD710 #define TAG_STATUS_SUMMARY_BALLS_PAL 0xD712 @@ -55,7 +61,7 @@ enum HEALTHBOX_SAFARI_BALLS_TEXT }; -u8 CreateBankHealthboxSprites(u8 bank); +u8 CreateBattlerHealthboxSprites(u8 bank); u8 CreateSafariPlayerHealthboxSprites(void); void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 receivedValue); void SetHealthboxSpriteInvisible(u8 healthboxSpriteId); @@ -63,7 +69,7 @@ void SetHealthboxSpriteVisible(u8 healthboxSpriteId); void DestoryHealthboxSprite(u8 healthboxSpriteId); void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly); void UpdateOamPriorityInAllHealthboxes(u8 priority); -void SetBankHealthboxSpritePos(u8 bank); +void InitBattlerHealthboxCoords(u8 bank); void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); void SwapHpBarsWithHpText(void); u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart); @@ -72,5 +78,7 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem s32 sub_8074AA0(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3); u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale); u8 GetHPBarLevel(s16 hp, s16 maxhp); +void sub_80496C0(u8 spriteId, struct Pokemon *mon); +void sub_804981C(u8 spriteId, u8); #endif // GUARD_BATTLE_INTERFACE_H diff --git a/include/data2.h b/include/data2.h index 3ce3c33c8..421695f18 100644 --- a/include/data2.h +++ b/include/data2.h @@ -2,6 +2,7 @@ #define GUARD_DATA2_H #include "global.h" +#include "constants/species.h" struct MonCoords { @@ -23,8 +24,22 @@ extern const u16 gUnknown_8251FEE[]; extern const u16 gUnknown_8252324[]; extern const u16 gUnknown_82539D4[]; +extern const struct CompressedSpriteSheet gMonFrontPicTable[]; +extern const struct CompressedSpriteSheet gMonBackPicTable[]; extern const struct CompressedSpritePalette gMonPaletteTable[]; extern const struct CompressedSpritePalette gMonShinyPaletteTable[]; +extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; +extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; +extern const struct CompressedSpritePalette gUnknown_8239FD4[]; + +extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow; +extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow; + +extern const u8 gEnemyMonElevation[NUM_SPECIES]; + +extern const u8 *const gBattleAnims_General[]; +extern const u8 *const gBattleAnims_Special[]; + extern const union AnimCmd *const *const gTrainerBackAnimsPtrTable[]; extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[]; diff --git a/include/graphics.h b/include/graphics.h index e8503609e..6f9d8b762 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -961,4 +961,20 @@ extern const u8 gFile_graphics_items_icon_palettes_sapphire_palette[]; extern const u8 gFile_graphics_items_icons_return_to_field_arrow_sheet[]; extern const u8 gFile_graphics_items_icon_palettes_return_to_field_arrow_palette[]; +extern const u32 gHealthboxSinglesPlayerGfx[]; +extern const u32 gHealthboxSinglesOpponentGfx[]; +extern const u32 gHealthboxDoublesPlayerGfx[]; +extern const u32 gHealthboxDoublesOpponentGfx[]; +extern const u32 gHealthboxSafariGfx[]; +extern const u32 gBlankGfxCompressed[]; +extern const u16 gBattleInterface_BallStatusBarPal[]; +extern const u16 gBattleInterface_BallDisplayPal[]; +extern const u32 gFile_graphics_interface_hp_numbers[]; + +extern const u32 gGhostFrontPic[]; +extern const u32 gGhostPalette[]; +extern const u32 gSubstituteDollGfx[]; +extern const u32 gSubstituteDollTilemap[]; +extern const u16 gSubstituteDollPal[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/party_menu.h b/include/party_menu.h index e4fc182e9..2ae33175c 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -62,5 +62,6 @@ void sub_81279E0(void); void ItemUseCB_Medicine(u8 taskId, TaskFunc followUpFunc); u8 GetItemEffectType(u16 itemId); u8 pokemon_order_func(u8); +void sub_8127CAC(void); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon.h b/include/pokemon.h index 9dd5850b4..d2eefd390 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -539,6 +539,7 @@ extern const u32 gExperienceTables[][MAX_MON_LEVEL + 1]; extern const u16 *const gLevelUpLearnsets[]; extern const u8 gFacilityClassToPicIndex[]; extern const u8 gFacilityClassToTrainerClass[]; +extern const struct SpriteTemplate gUnknown_825DEF0[]; void ZeroBoxMonData(struct BoxPokemon *boxMon); void ZeroMonData(struct Pokemon *mon); @@ -640,7 +641,7 @@ void ClearBattleMonForms(void); void PlayBattleBGM(void); void PlayMapChosenOrBattleBGM(u16 songId); const u32 *GetMonFrontSpritePal(struct Pokemon *mon); -const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality); +const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality); const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon); const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality); bool32 IsHMMove2(u16 move); -- cgit v1.2.3 From a4263a6bd8fa3a31d2b1de1279414b403a58e28b Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Mon, 29 Jul 2019 06:47:34 +0800 Subject: ported battle_controller_safari from pokeem --- include/battle.h | 51 +++-- include/battle_message.h | 2 + include/constants/battle_anim.h | 442 ++++++++++++++++++++++++++++++++++++++++ include/data2.h | 2 +- include/pokeball.h | 1 + include/strings.h | 7 +- 6 files changed, 487 insertions(+), 18 deletions(-) create mode 100644 include/constants/battle_anim.h (limited to 'include') diff --git a/include/battle.h b/include/battle.h index 1a8fa0201..22ecce83b 100644 --- a/include/battle.h +++ b/include/battle.h @@ -73,21 +73,22 @@ #define SIDE_STATUS_MIST (1 << 8) #define SIDE_STATUS_SPIKES_DAMAGED (1 << 9) -#define ACTION_USE_MOVE 0 -#define ACTION_USE_ITEM 1 -#define ACTION_SWITCH 2 -#define ACTION_RUN 3 -#define ACTION_WATCHES_CAREFULLY 4 -#define ACTION_SAFARI_ZONE_BALL 5 -#define ACTION_POKEBLOCK_CASE 6 -#define ACTION_GO_NEAR 7 -#define ACTION_SAFARI_ZONE_RUN 8 -#define ACTION_9 9 -#define ACTION_RUN_BATTLESCRIPT 10 // when executing an action -#define ACTION_CANCEL_PARTNER 12 // when choosing an action -#define ACTION_FINISHED 12 // when executing an action -#define ACTION_NOTHING_FAINTED 13 // when choosing an action -#define ACTION_INIT_VALUE 0xFF +#define B_ACTION_USE_MOVE 0 +#define B_ACTION_USE_ITEM 1 +#define B_ACTION_SWITCH 2 +#define B_ACTION_RUN 3 +#define B_ACTION_SAFARI_WATCH_CAREFULLY 4 +#define B_ACTION_SAFARI_BALL 5 +#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_EXEC_SCRIPT 10 +#define B_ACTION_TRY_FINISH 11 +#define B_ACTION_FINISHED 12 +#define B_ACTION_CANCEL_PARTNER 12 // when choosing an action +#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) @@ -931,6 +932,18 @@ struct MonSpritesGfx void *field_17C; }; +extern u16 gBattle_BG0_X; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; +extern u16 gBattle_WIN0H; +extern u16 gBattle_WIN0V; +extern u16 gBattle_WIN1H; +extern u16 gBattle_WIN1V; extern struct BattleSpritesGfx* gMonSpritesGfx; extern u8 gBattleOutcome; extern u16 gLastUsedItem; @@ -953,8 +966,14 @@ extern u16 gIntroSlideFlags; extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT]; extern u8 gBattlerPositions[MAX_BATTLERS_COUNT]; extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT]; - extern u8 gBattleOutcome; extern u8 gBattleMonForms[MAX_BATTLERS_COUNT]; +extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void); +extern u32 gBattleControllerExecFlags; +extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200]; +extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200]; +extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT]; +extern void (*gPreBattleCallback1)(void); +extern bool8 gDoingBattleAnim; #endif // GUARD_BATTLE_H diff --git a/include/battle_message.h b/include/battle_message.h index 27ae88b01..df2653756 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -217,6 +217,8 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst); void BattleHandleAddTextPrinter(const u8* text, u8 arg1); void SetPpNumbersPaletteInMoveSelection(void); u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp); +void BattlePutTextOnWindow(const u8* text, u8 arg1); +bool8 sub_80D89B0(u16); #define TEXT_BUFF_ARRAY_COUNT 16 diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h new file mode 100644 index 000000000..0a023f0c2 --- /dev/null +++ b/include/constants/battle_anim.h @@ -0,0 +1,442 @@ +#ifndef GUARD_CONSTANTS_BATTLE_ANIM_H +#define GUARD_CONSTANTS_BATTLE_ANIM_H + +// Sprites start at 10000 and thus must be subtracted of 10000 to account for the true index. +#define GET_TRUE_SPRITE_INDEX(i) ((i - ANIM_SPRITES_START)) + +// Particle ids. +#define ANIM_SPRITES_START 10000 + +#define ANIM_TAG_BONE (ANIM_SPRITES_START + 0) +#define ANIM_TAG_SPARK (ANIM_SPRITES_START + 1) +#define ANIM_TAG_PENCIL (ANIM_SPRITES_START + 2) +#define ANIM_TAG_AIR_WAVE (ANIM_SPRITES_START + 3) +#define ANIM_TAG_ORB (ANIM_SPRITES_START + 4) +#define ANIM_TAG_SWORD (ANIM_SPRITES_START + 5) +#define ANIM_TAG_SEED (ANIM_SPRITES_START + 6) +#define ANIM_TAG_EXPLOSION_6 (ANIM_SPRITES_START + 7) +#define ANIM_TAG_PINK_ORB (ANIM_SPRITES_START + 8) // unused +#define ANIM_TAG_GUST (ANIM_SPRITES_START + 9) +#define ANIM_TAG_ICE_CUBE (ANIM_SPRITES_START + 10) +#define ANIM_TAG_SPARK_2 (ANIM_SPRITES_START + 11) +#define ANIM_TAG_ORANGE (ANIM_SPRITES_START + 12) // unused +#define ANIM_TAG_YELLOW_BALL (ANIM_SPRITES_START + 13) +#define ANIM_TAG_LOCK_ON (ANIM_SPRITES_START + 14) +#define ANIM_TAG_TIED_BAG (ANIM_SPRITES_START + 15) +#define ANIM_TAG_BLACK_SMOKE (ANIM_SPRITES_START + 16) +#define ANIM_TAG_BLACK_BALL (ANIM_SPRITES_START + 17) +#define ANIM_TAG_CONVERSION (ANIM_SPRITES_START + 18) +#define ANIM_TAG_GLASS (ANIM_SPRITES_START + 19) // unused +#define ANIM_TAG_HORN_HIT (ANIM_SPRITES_START + 20) +#define ANIM_TAG_HIT (ANIM_SPRITES_START + 21) +#define ANIM_TAG_HIT_2 (ANIM_SPRITES_START + 22) +#define ANIM_TAG_BLUE_SHARDS (ANIM_SPRITES_START + 23) // unused +#define ANIM_TAG_CLOSING_EYE (ANIM_SPRITES_START + 24) // unused +#define ANIM_TAG_WAVING_HAND (ANIM_SPRITES_START + 25) // unused +#define ANIM_TAG_HIT_DUPLICATE (ANIM_SPRITES_START + 26) // unused +#define ANIM_TAG_LEER (ANIM_SPRITES_START + 27) +#define ANIM_TAG_BLUE_BURST (ANIM_SPRITES_START + 28) // unused +#define ANIM_TAG_SMALL_EMBER (ANIM_SPRITES_START + 29) +#define ANIM_TAG_GRAY_SMOKE (ANIM_SPRITES_START + 30) +#define ANIM_TAG_BLUE_STAR (ANIM_SPRITES_START + 31) +#define ANIM_TAG_BUBBLE_BURST (ANIM_SPRITES_START + 32) +#define ANIM_TAG_FIRE (ANIM_SPRITES_START + 33) +#define ANIM_TAG_SPINNING_FIRE (ANIM_SPRITES_START + 34) // unused +#define ANIM_TAG_FIRE_PLUME (ANIM_SPRITES_START + 35) +#define ANIM_TAG_LIGHTNING_2 (ANIM_SPRITES_START + 36) // unused +#define ANIM_TAG_LIGHTNING (ANIM_SPRITES_START + 37) +#define ANIM_TAG_CLAW_SLASH_2 (ANIM_SPRITES_START + 38) // unused +#define ANIM_TAG_CLAW_SLASH (ANIM_SPRITES_START + 39) +#define ANIM_TAG_SCRATCH_3 (ANIM_SPRITES_START + 40) // unused +#define ANIM_TAG_SCRATCH_2 (ANIM_SPRITES_START + 41) // unused +#define ANIM_TAG_BUBBLE_BURST_2 (ANIM_SPRITES_START + 42) // unused +#define ANIM_TAG_ICE_CHUNK (ANIM_SPRITES_START + 43) +#define ANIM_TAG_GLASS_2 (ANIM_SPRITES_START + 44) // unused +#define ANIM_TAG_PINK_HEART_2 (ANIM_SPRITES_START + 45) // unused +#define ANIM_TAG_SAP_DRIP (ANIM_SPRITES_START + 46) // unused +#define ANIM_TAG_SAP_DRIP_2 (ANIM_SPRITES_START + 47) // unused +#define ANIM_TAG_SPARKLE_1 (ANIM_SPRITES_START + 48) +#define ANIM_TAG_SPARKLE_2 (ANIM_SPRITES_START + 49) +#define ANIM_TAG_HUMANOID_FOOT (ANIM_SPRITES_START + 50) +#define ANIM_TAG_MONSTER_FOOT (ANIM_SPRITES_START + 51) +#define ANIM_TAG_HUMANOID_HAND (ANIM_SPRITES_START + 52) // unused +#define ANIM_TAG_NOISE_LINE (ANIM_SPRITES_START + 53) +#define ANIM_TAG_YELLOW_UNK (ANIM_SPRITES_START + 54) // unused +#define ANIM_TAG_RED_FIST (ANIM_SPRITES_START + 55) // unused +#define ANIM_TAG_SLAM_HIT (ANIM_SPRITES_START + 56) +#define ANIM_TAG_RING (ANIM_SPRITES_START + 57) // unused +#define ANIM_TAG_ROCKS (ANIM_SPRITES_START + 58) +#define ANIM_TAG_Z (ANIM_SPRITES_START + 59) // unused +#define ANIM_TAG_YELLOW_UNK_2 (ANIM_SPRITES_START + 60) // unused +#define ANIM_TAG_AIR_SLASH (ANIM_SPRITES_START + 61) // unused +#define ANIM_TAG_SPINNING_GREEN_ORBS (ANIM_SPRITES_START + 62) // unused +#define ANIM_TAG_LEAF (ANIM_SPRITES_START + 63) +#define ANIM_TAG_FINGER (ANIM_SPRITES_START + 64) +#define ANIM_TAG_POISON_POWDER (ANIM_SPRITES_START + 65) +#define ANIM_TAG_BROWN_TRIANGLE (ANIM_SPRITES_START + 66) // unused +#define ANIM_TAG_SLEEP_POWDER (ANIM_SPRITES_START + 67) +#define ANIM_TAG_STUN_SPORE (ANIM_SPRITES_START + 68) +#define ANIM_TAG_POWDER (ANIM_SPRITES_START + 69) // unused +#define ANIM_TAG_SPARKLE_3 (ANIM_SPRITES_START + 70) +#define ANIM_TAG_SPARKLE_4 (ANIM_SPRITES_START + 71) +#define ANIM_TAG_MUSIC_NOTES (ANIM_SPRITES_START + 72) +#define ANIM_TAG_DUCK (ANIM_SPRITES_START + 73) +#define ANIM_TAG_MUD_SAND (ANIM_SPRITES_START + 74) +#define ANIM_TAG_ALERT (ANIM_SPRITES_START + 75) +#define ANIM_TAG_BLUE_FLAMES (ANIM_SPRITES_START + 76) // unused +#define ANIM_TAG_BLUE_FLAMES_2 (ANIM_SPRITES_START + 77) // unused +#define ANIM_TAG_SHOCK_4 (ANIM_SPRITES_START + 78) // unused +#define ANIM_TAG_SHOCK (ANIM_SPRITES_START + 79) +#define ANIM_TAG_BELL_2 (ANIM_SPRITES_START + 80) // unused +#define ANIM_TAG_PINK_GLOVE (ANIM_SPRITES_START + 81) // unused +#define ANIM_TAG_BLUE_LINES (ANIM_SPRITES_START + 82) // unused +#define ANIM_TAG_IMPACT_3 (ANIM_SPRITES_START + 83) // unused +#define ANIM_TAG_IMPACT_2 (ANIM_SPRITES_START + 84) // unused +#define ANIM_TAG_RETICLE (ANIM_SPRITES_START + 85) // unused +#define ANIM_TAG_BREATH (ANIM_SPRITES_START + 86) +#define ANIM_TAG_ANGER (ANIM_SPRITES_START + 87) +#define ANIM_TAG_SNOWBALL (ANIM_SPRITES_START + 88) // unused +#define ANIM_TAG_VINE (ANIM_SPRITES_START + 89) // unused +#define ANIM_TAG_SWORD_2 (ANIM_SPRITES_START + 90) // unused +#define ANIM_TAG_CLAPPING (ANIM_SPRITES_START + 91) // unused +#define ANIM_TAG_RED_TUBE (ANIM_SPRITES_START + 92) // unused +#define ANIM_TAG_AMNESIA (ANIM_SPRITES_START + 93) +#define ANIM_TAG_STRING_2 (ANIM_SPRITES_START + 94) // unused +#define ANIM_TAG_PENCIL_2 (ANIM_SPRITES_START + 95) // unused +#define ANIM_TAG_PETAL (ANIM_SPRITES_START + 96) // unused +#define ANIM_TAG_BENT_SPOON (ANIM_SPRITES_START + 97) +#define ANIM_TAG_WEB (ANIM_SPRITES_START + 98) // unused +#define ANIM_TAG_MILK_BOTTLE (ANIM_SPRITES_START + 99) +#define ANIM_TAG_COIN (ANIM_SPRITES_START + 100) +#define ANIM_TAG_CRACKED_EGG (ANIM_SPRITES_START + 101) // unused +#define ANIM_TAG_HATCHED_EGG (ANIM_SPRITES_START + 102) // unused +#define ANIM_TAG_FRESH_EGG (ANIM_SPRITES_START + 103) // unused +#define ANIM_TAG_FANGS (ANIM_SPRITES_START + 104) // unused +#define ANIM_TAG_EXPLOSION_2 (ANIM_SPRITES_START + 105) // unused +#define ANIM_TAG_EXPLOSION_3 (ANIM_SPRITES_START + 106) // unused +#define ANIM_TAG_WATER_DROPLET (ANIM_SPRITES_START + 107) // unused +#define ANIM_TAG_WATER_DROPLET_2 (ANIM_SPRITES_START + 108) // unused +#define ANIM_TAG_SEED_2 (ANIM_SPRITES_START + 109) // unused +#define ANIM_TAG_SPROUT (ANIM_SPRITES_START + 110) // unused +#define ANIM_TAG_RED_WAND (ANIM_SPRITES_START + 111) // unused +#define ANIM_TAG_PURPLE_GREEN_UNK (ANIM_SPRITES_START + 112) // unused +#define ANIM_TAG_WATER_COLUMN (ANIM_SPRITES_START + 113) // unused +#define ANIM_TAG_MUD_UNK (ANIM_SPRITES_START + 114) // unused +#define ANIM_TAG_RAIN_DROPS (ANIM_SPRITES_START + 115) +#define ANIM_TAG_FURY_SWIPES (ANIM_SPRITES_START + 116) // unused +#define ANIM_TAG_VINE_2 (ANIM_SPRITES_START + 117) // unused +#define ANIM_TAG_TEETH (ANIM_SPRITES_START + 118) // unused +#define ANIM_TAG_BONE_2 (ANIM_SPRITES_START + 119) // unused +#define ANIM_TAG_WHITE_BAG (ANIM_SPRITES_START + 120) // unused +#define ANIM_TAG_UNKNOWN (ANIM_SPRITES_START + 121) // unused +#define ANIM_TAG_PURPLE_CORAL (ANIM_SPRITES_START + 122) // unused +#define ANIM_TAG_PURPLE_DROPLET (ANIM_SPRITES_START + 123) // unused +#define ANIM_TAG_SHOCK_2 (ANIM_SPRITES_START + 124) // unused +#define ANIM_TAG_CLOSING_EYE_2 (ANIM_SPRITES_START + 125) // unused +#define ANIM_TAG_METAL_BALL (ANIM_SPRITES_START + 126) // unused +#define ANIM_TAG_MONSTER_DOLL (ANIM_SPRITES_START + 127) // unused +#define ANIM_TAG_WHIRLWIND (ANIM_SPRITES_START + 128) // unused +#define ANIM_TAG_WHIRLWIND_2 (ANIM_SPRITES_START + 129) // unused +#define ANIM_TAG_EXPLOSION_4 (ANIM_SPRITES_START + 130) // unused +#define ANIM_TAG_EXPLOSION_5 (ANIM_SPRITES_START + 131) // unused +#define ANIM_TAG_TONGUE (ANIM_SPRITES_START + 132) // unused +#define ANIM_TAG_SMOKE (ANIM_SPRITES_START + 133) // unused +#define ANIM_TAG_SMOKE_2 (ANIM_SPRITES_START + 134) // unused +#define ANIM_TAG_IMPACT (ANIM_SPRITES_START + 135) +#define ANIM_TAG_CIRCLE_IMPACT (ANIM_SPRITES_START + 136) +#define ANIM_TAG_SCRATCH (ANIM_SPRITES_START + 137) +#define ANIM_TAG_CUT (ANIM_SPRITES_START + 138) +#define ANIM_TAG_SHARP_TEETH (ANIM_SPRITES_START + 139) +#define ANIM_TAG_RAINBOW_RINGS (ANIM_SPRITES_START + 140) +#define ANIM_TAG_ICE_CRYSTALS (ANIM_SPRITES_START + 141) +#define ANIM_TAG_ICE_SPIKES (ANIM_SPRITES_START + 142) +#define ANIM_TAG_HANDS_AND_FEET (ANIM_SPRITES_START + 143) +#define ANIM_TAG_MIST_CLOUD (ANIM_SPRITES_START + 144) +#define ANIM_TAG_CLAMP (ANIM_SPRITES_START + 145) +#define ANIM_TAG_BUBBLE (ANIM_SPRITES_START + 146) +#define ANIM_TAG_ORBS (ANIM_SPRITES_START + 147) +#define ANIM_TAG_WATER_IMPACT (ANIM_SPRITES_START + 148) +#define ANIM_TAG_WATER_ORB (ANIM_SPRITES_START + 149) +#define ANIM_TAG_POISON_BUBBLE (ANIM_SPRITES_START + 150) +#define ANIM_TAG_TOXIC_BUBBLE (ANIM_SPRITES_START + 151) +#define ANIM_TAG_SPIKES (ANIM_SPRITES_START + 152) +#define ANIM_TAG_HORN_HIT_2 (ANIM_SPRITES_START + 153) +#define ANIM_TAG_AIR_WAVE_2 (ANIM_SPRITES_START + 154) +#define ANIM_TAG_SMALL_BUBBLES (ANIM_SPRITES_START + 155) +#define ANIM_TAG_ROUND_SHADOW (ANIM_SPRITES_START + 156) +#define ANIM_TAG_SUNLIGHT (ANIM_SPRITES_START + 157) +#define ANIM_TAG_SPORE (ANIM_SPRITES_START + 158) +#define ANIM_TAG_FLOWER (ANIM_SPRITES_START + 159) +#define ANIM_TAG_RAZOR_LEAF (ANIM_SPRITES_START + 160) +#define ANIM_TAG_NEEDLE (ANIM_SPRITES_START + 161) +#define ANIM_TAG_WHIRLWIND_LINES (ANIM_SPRITES_START + 162) +#define ANIM_TAG_GOLD_RING (ANIM_SPRITES_START + 163) +#define ANIM_TAG_PURPLE_RING (ANIM_SPRITES_START + 164) +#define ANIM_TAG_BLUE_RING (ANIM_SPRITES_START + 165) +#define ANIM_TAG_GREEN_LIGHT_WALL (ANIM_SPRITES_START + 166) +#define ANIM_TAG_BLUE_LIGHT_WALL (ANIM_SPRITES_START + 167) +#define ANIM_TAG_RED_LIGHT_WALL (ANIM_SPRITES_START + 168) +#define ANIM_TAG_GRAY_LIGHT_WALL (ANIM_SPRITES_START + 169) +#define ANIM_TAG_ORANGE_LIGHT_WALL (ANIM_SPRITES_START + 170) +#define ANIM_TAG_BLACK_BALL_2 (ANIM_SPRITES_START + 171) +#define ANIM_TAG_PURPLE_GAS_CLOUD (ANIM_SPRITES_START + 172) +#define ANIM_TAG_SPARK_H (ANIM_SPRITES_START + 173) +#define ANIM_TAG_YELLOW_STAR (ANIM_SPRITES_START + 174) +#define ANIM_TAG_LARGE_FRESH_EGG (ANIM_SPRITES_START + 175) +#define ANIM_TAG_SHADOW_BALL (ANIM_SPRITES_START + 176) +#define ANIM_TAG_LICK (ANIM_SPRITES_START + 177) +#define ANIM_TAG_VOID_LINES (ANIM_SPRITES_START + 178) +#define ANIM_TAG_STRING (ANIM_SPRITES_START + 179) +#define ANIM_TAG_WEB_THREAD (ANIM_SPRITES_START + 180) +#define ANIM_TAG_SPIDER_WEB (ANIM_SPRITES_START + 181) +#define ANIM_TAG_LIGHTBULB (ANIM_SPRITES_START + 182) // unused +#define ANIM_TAG_SLASH (ANIM_SPRITES_START + 183) +#define ANIM_TAG_FOCUS_ENERGY (ANIM_SPRITES_START + 184) +#define ANIM_TAG_SPHERE_TO_CUBE (ANIM_SPRITES_START + 185) +#define ANIM_TAG_TENDRILS (ANIM_SPRITES_START + 186) +#define ANIM_TAG_EYE (ANIM_SPRITES_START + 187) +#define ANIM_TAG_WHITE_SHADOW (ANIM_SPRITES_START + 188) +#define ANIM_TAG_TEAL_ALERT (ANIM_SPRITES_START + 189) +#define ANIM_TAG_OPENING_EYE (ANIM_SPRITES_START + 190) +#define ANIM_TAG_ROUND_WHITE_HALO (ANIM_SPRITES_START + 191) +#define ANIM_TAG_FANG_ATTACK (ANIM_SPRITES_START + 192) +#define ANIM_TAG_PURPLE_HAND_OUTLINE (ANIM_SPRITES_START + 193) +#define ANIM_TAG_MOON (ANIM_SPRITES_START + 194) +#define ANIM_TAG_GREEN_SPARKLE (ANIM_SPRITES_START + 195) +#define ANIM_TAG_SPIRAL (ANIM_SPRITES_START + 196) +#define ANIM_TAG_SNORE_Z (ANIM_SPRITES_START + 197) +#define ANIM_TAG_EXPLOSION (ANIM_SPRITES_START + 198) +#define ANIM_TAG_NAIL (ANIM_SPRITES_START + 199) +#define ANIM_TAG_GHOSTLY_SPIRIT (ANIM_SPRITES_START + 200) +#define ANIM_TAG_WARM_ROCK (ANIM_SPRITES_START + 201) +#define ANIM_TAG_BREAKING_EGG (ANIM_SPRITES_START + 202) +#define ANIM_TAG_THIN_RING (ANIM_SPRITES_START + 203) +#define ANIM_TAG_PUNCH_IMPACT (ANIM_SPRITES_START + 204) // unused +#define ANIM_TAG_BELL (ANIM_SPRITES_START + 205) +#define ANIM_TAG_MUSIC_NOTES_2 (ANIM_SPRITES_START + 206) +#define ANIM_TAG_SPEED_DUST (ANIM_SPRITES_START + 207) +#define ANIM_TAG_TORN_METAL (ANIM_SPRITES_START + 208) +#define ANIM_TAG_THOUGHT_BUBBLE (ANIM_SPRITES_START + 209) +#define ANIM_TAG_MAGENTA_HEART (ANIM_SPRITES_START + 210) +#define ANIM_TAG_ELECTRIC_ORBS (ANIM_SPRITES_START + 211) +#define ANIM_TAG_CIRCLE_OF_LIGHT (ANIM_SPRITES_START + 212) +#define ANIM_TAG_ELECTRICITY (ANIM_SPRITES_START + 213) +#define ANIM_TAG_FINGER_2 (ANIM_SPRITES_START + 214) +#define ANIM_TAG_MOVEMENT_WAVES (ANIM_SPRITES_START + 215) +#define ANIM_TAG_RED_HEART (ANIM_SPRITES_START + 216) +#define ANIM_TAG_RED_ORB (ANIM_SPRITES_START + 217) +#define ANIM_TAG_EYE_SPARKLE (ANIM_SPRITES_START + 218) +#define ANIM_TAG_PINK_HEART (ANIM_SPRITES_START + 219) +#define ANIM_TAG_ANGEL (ANIM_SPRITES_START + 220) +#define ANIM_TAG_DEVIL (ANIM_SPRITES_START + 221) +#define ANIM_TAG_SWIPE (ANIM_SPRITES_START + 222) +#define ANIM_TAG_ROOTS (ANIM_SPRITES_START + 223) +#define ANIM_TAG_ITEM_BAG (ANIM_SPRITES_START + 224) +#define ANIM_TAG_JAGGED_MUSIC_NOTE (ANIM_SPRITES_START + 225) +#define ANIM_TAG_POKEBALL (ANIM_SPRITES_START + 226) +#define ANIM_TAG_SPOTLIGHT (ANIM_SPRITES_START + 227) +#define ANIM_TAG_LETTER_Z (ANIM_SPRITES_START + 228) +#define ANIM_TAG_RAPID_SPIN (ANIM_SPRITES_START + 229) +#define ANIM_TAG_TRI_FORCE_TRIANGLE (ANIM_SPRITES_START + 230) +#define ANIM_TAG_WISP_ORB (ANIM_SPRITES_START + 231) +#define ANIM_TAG_WISP_FIRE (ANIM_SPRITES_START + 232) +#define ANIM_TAG_GOLD_STARS (ANIM_SPRITES_START + 233) +#define ANIM_TAG_ECLIPSING_ORB (ANIM_SPRITES_START + 234) +#define ANIM_TAG_GRAY_ORB (ANIM_SPRITES_START + 235) +#define ANIM_TAG_BLUE_ORB (ANIM_SPRITES_START + 236) +#define ANIM_TAG_RED_ORB_2 (ANIM_SPRITES_START + 237) +#define ANIM_TAG_PINK_PETAL (ANIM_SPRITES_START + 238) +#define ANIM_TAG_PAIN_SPLIT (ANIM_SPRITES_START + 239) +#define ANIM_TAG_CONFETTI (ANIM_SPRITES_START + 240) +#define ANIM_TAG_GREEN_STAR (ANIM_SPRITES_START + 241) +#define ANIM_TAG_PINK_CLOUD (ANIM_SPRITES_START + 242) +#define ANIM_TAG_SWEAT_DROP (ANIM_SPRITES_START + 243) +#define ANIM_TAG_GUARD_RING (ANIM_SPRITES_START + 244) +#define ANIM_TAG_PURPLE_SCRATCH (ANIM_SPRITES_START + 245) +#define ANIM_TAG_PURPLE_SWIPE (ANIM_SPRITES_START + 246) +#define ANIM_TAG_TAG_HAND (ANIM_SPRITES_START + 247) +#define ANIM_TAG_SMALL_RED_EYE (ANIM_SPRITES_START + 248) +#define ANIM_TAG_HOLLOW_ORB (ANIM_SPRITES_START + 249) +#define ANIM_TAG_X_SIGN (ANIM_SPRITES_START + 250) +#define ANIM_TAG_BLUEGREEN_ORB (ANIM_SPRITES_START + 251) +#define ANIM_TAG_PAW_PRINT (ANIM_SPRITES_START + 252) +#define ANIM_TAG_PURPLE_FLAME (ANIM_SPRITES_START + 253) +#define ANIM_TAG_RED_BALL (ANIM_SPRITES_START + 254) +#define ANIM_TAG_SMELLINGSALT_EFFECT (ANIM_SPRITES_START + 255) +#define ANIM_TAG_METEOR (ANIM_SPRITES_START + 256) +#define ANIM_TAG_FLAT_ROCK (ANIM_SPRITES_START + 257) +#define ANIM_TAG_MAGNIFYING_GLASS (ANIM_SPRITES_START + 258) +#define ANIM_TAG_BROWN_ORB (ANIM_SPRITES_START + 259) +#define ANIM_TAG_METAL_SOUND_WAVES (ANIM_SPRITES_START + 260) +#define ANIM_TAG_FLYING_DIRT (ANIM_SPRITES_START + 261) +#define ANIM_TAG_ICICLE_SPEAR (ANIM_SPRITES_START + 262) +#define ANIM_TAG_HAIL (ANIM_SPRITES_START + 263) +#define ANIM_TAG_GLOWY_RED_ORB (ANIM_SPRITES_START + 264) +#define ANIM_TAG_GLOWY_GREEN_ORB (ANIM_SPRITES_START + 265) +#define ANIM_TAG_GREEN_SPIKE (ANIM_SPRITES_START + 266) +#define ANIM_TAG_WHITE_CIRCLE_OF_LIGHT (ANIM_SPRITES_START + 267) +#define ANIM_TAG_GLOWY_BLUE_ORB (ANIM_SPRITES_START + 268) +#define ANIM_TAG_POKEBLOCK (ANIM_SPRITES_START + 269) +#define ANIM_TAG_WHITE_FEATHER (ANIM_SPRITES_START + 270) +#define ANIM_TAG_SPARKLE_6 (ANIM_SPRITES_START + 271) +#define ANIM_TAG_SPLASH (ANIM_SPRITES_START + 272) +#define ANIM_TAG_SWEAT_BEAD (ANIM_SPRITES_START + 273) +#define ANIM_TAG_GEM_1 (ANIM_SPRITES_START + 274) // unused +#define ANIM_TAG_GEM_2 (ANIM_SPRITES_START + 275) // unused +#define ANIM_TAG_GEM_3 (ANIM_SPRITES_START + 276) // unused +#define ANIM_TAG_SLAM_HIT_2 (ANIM_SPRITES_START + 277) +#define ANIM_TAG_RECYCLE (ANIM_SPRITES_START + 278) +#define ANIM_TAG_RED_PARTICLES (ANIM_SPRITES_START + 279) // unused +#define ANIM_TAG_PROTECT (ANIM_SPRITES_START + 280) +#define ANIM_TAG_DIRT_MOUND (ANIM_SPRITES_START + 281) +#define ANIM_TAG_SHOCK_3 (ANIM_SPRITES_START + 282) +#define ANIM_TAG_WEATHER_BALL (ANIM_SPRITES_START + 283) +#define ANIM_TAG_BIRD (ANIM_SPRITES_START + 284) +#define ANIM_TAG_CROSS_IMPACT (ANIM_SPRITES_START + 285) +#define ANIM_TAG_SLASH_2 (ANIM_SPRITES_START + 286) +#define ANIM_TAG_WHIP_HIT (ANIM_SPRITES_START + 287) +#define ANIM_TAG_BLUE_RING_2 (ANIM_SPRITES_START + 288) + +// battlers +#define ANIM_ATTACKER 0 +#define ANIM_TARGET 1 +#define ANIM_ATK_PARTNER 2 +#define ANIM_DEF_PARTNER 3 + +// stereo panning constants [0-255] +// +// 0 +// . . +// . . +// 192 . . 63 +// . . +// . . +// . . +// 127 +// +#define SOUND_PAN_ATTACKER -64 +#define SOUND_PAN_TARGET 63 + +// move background ids +#define BG_DARK_ 0 // the same as BG_DARK but is unused +#define BG_DARK 1 +#define BG_GHOST 2 +#define BG_PSYCHIC 3 +#define BG_IMPACT_OPPONENT 4 +#define BG_IMPACT_PLAYER 5 +#define BG_IMPACT_CONTESTS 6 +#define BG_DRILL 7 +#define BG_DRILL_CONTESTS 8 +#define BG_HIGHSPEED_OPPONENT 9 +#define BG_HIGHSPEED_PLAYER 10 +#define BG_THUNDER 11 +#define BG_GUILLOTINE_OPPONENT 12 +#define BG_GUILLOTINE_PLAYER 13 +#define BG_GUILLOTINE_CONTESTS 14 +#define BG_ICE 15 +#define BG_COSMIC 16 +#define BG_IN_AIR 17 +#define BG_SKY 18 +#define BG_SKY_CONTESTS 19 +#define BG_AURORA 20 +#define BG_FISSURE 21 +#define BG_BUG_OPPONENT 22 +#define BG_BUG_PLAYER 23 +#define BG_SOLARBEAM_OPPONENT 24 +#define BG_SOLARBEAM_PLAYER 25 +#define BG_SOLARBEAM_CONTESTS 26 + +// table ids for general animations +#define B_ANIM_CASTFORM_CHANGE 0x0 +#define B_ANIM_STATS_CHANGE 0x1 +#define B_ANIM_SUBSTITUTE_FADE 0x2 +#define B_ANIM_SUBSTITUTE_APPEAR 0x3 +#define B_ANIM_POKEBLOCK_THROW 0x4 +#define B_ANIM_ITEM_KNOCKOFF 0x5 +#define B_ANIM_TURN_TRAP 0x6 +#define B_ANIM_ITEM_EFFECT 0x7 +#define B_ANIM_SMOKEBALL_ESCAPE 0x8 +#define B_ANIM_HANGED_ON 0x9 +#define B_ANIM_RAIN_CONTINUES 0xA +#define B_ANIM_SUN_CONTINUES 0xB +#define B_ANIM_SANDSTORM_CONTINUES 0xC +#define B_ANIM_HAIL_CONTINUES 0xD +#define B_ANIM_LEECH_SEED_DRAIN 0xE +#define B_ANIM_MON_HIT 0xF +#define B_ANIM_ITEM_STEAL 0x10 +#define B_ANIM_SNATCH_MOVE 0x11 +#define B_ANIM_FUTURE_SIGHT_HIT 0x12 +#define B_ANIM_DOOM_DESIRE_HIT 0x13 +#define B_ANIM_FOCUS_PUNCH_SETUP 0x14 +#define B_ANIM_INGRAIN_HEAL 0x15 +#define B_ANIM_WISH_HEAL 0x16 + +// special animations table +#define B_ANIM_LVL_UP 0x0 +#define B_ANIM_SWITCH_OUT_PLAYER_MON 0x1 +#define B_ANIM_SWITCH_OUT_OPPONENT_MON 0x2 +#define B_ANIM_BALL_THROW 0x3 +#define B_ANIM_SAFARI_BALL_THROW 0x4 +#define B_ANIM_SUBSTITUTE_TO_MON 0x5 +#define B_ANIM_MON_TO_SUBSTITUTE 0x6 + +// status animation table +#define B_ANIM_STATUS_PSN 0x0 +#define B_ANIM_STATUS_CONFUSION 0x1 +#define B_ANIM_STATUS_BRN 0x2 +#define B_ANIM_STATUS_INFATUATION 0x3 +#define B_ANIM_STATUS_SLP 0x4 +#define B_ANIM_STATUS_PRZ 0x5 +#define B_ANIM_STATUS_FRZ 0x6 +#define B_ANIM_STATUS_CURSED 0x7 +#define B_ANIM_STATUS_NIGHTMARE 0x8 +#define B_ANIM_STATUS_WRAPPED 0x9 // does not actually exist + +// Most tasks return a value to gBattleAnimArgs[7]. +#define ARG_RET_ID 0x7 + +// Trapping Wrap-like moves end turn animation. +#define TRAP_ANIM_BIND 0 +#define TRAP_ANIM_WRAP 0 +#define TRAP_ANIM_FIRE_SPIN 1 +#define TRAP_ANIM_WHIRLPOOL 2 +#define TRAP_ANIM_CLAMP 3 +#define TRAP_ANIM_SAND_TOMB 4 + +// Weather defines for battle animation scripts. +#define ANIM_WEATHER_NONE 0 +#define ANIM_WEATHER_SUN 1 +#define ANIM_WEATHER_RAIN 2 +#define ANIM_WEATHER_SANDSTORM 3 +#define ANIM_WEATHER_HAIL 4 + +// Battle mon back animations. +#define BACK_ANIM_NONE 0x00 +#define BACK_ANIM_H_SLIDE_QUICK 0x01 +#define BACK_ANIM_H_SLIDE 0x02 +#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_1 0x03 +#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_2 0x04 +#define BACK_ANIM_SHRINK_GROW_1 0x05 +#define BACK_ANIM_GROW_1 0x06 +#define BACK_ANIM_CIRCLE_MOVE_COUNTERCLOCKWISE 0x07 +#define BACK_ANIM_HORIZONTAL_SHAKE 0x08 +#define BACK_ANIM_VERTICAL_SHAKE 0x09 +#define BACK_ANIM_V_SHAKE_WITH_H_SLIDE 0x0a +#define BACK_ANIM_VERTICAL_STRETCH 0x0b +#define BACK_ANIM_HORIZONTAL_STRETCH 0x0c +#define BACK_ANIM_GROW_2 0x0d +#define BACK_ANIM_V_SHAKE_WITH_PAUSE 0x0e +#define BACK_ANIM_CIRCLE_MOVE_CLOCKWISE 0x0f +#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL 0x10 +#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE 0x11 +#define BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE 0x12 +#define BACK_ANIM_DIP_RIGHT_SIDE 0x13 +#define BACK_ANIM_SHRINK_GROW_2 0x14 +#define BACK_ANIM_JOLT_RIGHT 0x15 +#define BACK_ANIM_FLASH_YELLOW_WITH_SHAKE 0x16 +#define BACK_ANIM_FADE_RED_WITH_SHAKE 0x17 +#define BACK_ANIM_FADE_GREEN_WITH_SHAKE 0x18 +#define BACK_ANIM_FADE_BLUE_WITH_SHAKE 0x19 + + +#endif // GUARD_CONSTANTS_BATTLE_ANIM_H diff --git a/include/data2.h b/include/data2.h index 421695f18..4378e8226 100644 --- a/include/data2.h +++ b/include/data2.h @@ -8,7 +8,7 @@ struct MonCoords { // This would use a bitfield, but some function // uses it as a u8 and casting won't match. - u8 coords; // u8 x:4, y:4; + u8 size; // u8 width:4, height:4; u8 y_offset; }; diff --git a/include/pokeball.h b/include/pokeball.h index 5545f8870..ee0478eab 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -31,5 +31,6 @@ void sub_8076918(u8 bank); void DoHitAnimHealthboxEffect(u8 bank); void LoadBallGfx(u8 ballId); void FreeBallGfx(u8 ballId); +void sub_804BD94(u8 battler); #endif // GUARD_POKEBALL_H diff --git a/include/strings.h b/include/strings.h index 85b67ed57..8c97cef13 100644 --- a/include/strings.h +++ b/include/strings.h @@ -179,7 +179,7 @@ extern const u8 gUnknown_841623D[]; extern const u8 gUnknown_84162BD[]; extern const u8 gUnknown_841D148[]; -// pokemon.c +// pokemon extern const u8 BattleText_Rose[]; extern const u8 BattleText_UnknownString3[]; extern const u8 BattleText_GetPumped[]; @@ -203,4 +203,9 @@ extern const u8 gString_BattleRecords_ColumnHeaders[]; extern const u8 gString_BattleRecords_7Dashes[]; extern const u8 gString_BattleRecords_4Dashes[]; +// battle_controller_safari +extern const u8 gUnknown_83FDA4C[]; +extern const u8 gUnknown_83FE747[]; +extern const u8 gUnknown_83FE6E6[]; + #endif //GUARD_STRINGS_H -- cgit v1.2.3 From 604347808138a0514933b3b994ac0f4eb62237a8 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Mon, 29 Jul 2019 08:34:15 +0800 Subject: ported battle_util2 from pokeem --- include/battle.h | 17 ++++++++++------- include/battle_util2.h | 2 -- include/constants/battle.h | 2 +- include/trainer_tower.h | 2 ++ 4 files changed, 13 insertions(+), 10 deletions(-) (limited to 'include') diff --git a/include/battle.h b/include/battle.h index 22ecce83b..ae17cdca0 100644 --- a/include/battle.h +++ b/include/battle.h @@ -236,7 +236,7 @@ extern const struct Trainer gTrainers[]; #define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F)) -struct UnknownFlags +struct ResourceFlags { u32 flags[4]; }; @@ -447,11 +447,11 @@ struct StatsArray struct BattleResources { - struct SecretBaseRecord* secretBase; - struct UnknownFlags *flags; - struct BattleScriptsStack* battleScriptsStack; - struct BattleCallbacksStack* battleCallbackStack; - struct StatsArray* statsBeforeLvlUp; + struct SecretBaseRecord *secretBase; + struct ResourceFlags *flags; + struct BattleScriptsStack *battleScriptsStack; + struct BattleCallbacksStack *battleCallbackStack; + struct StatsArray *beforeLvlUp; struct AI_ThinkingStruct *ai; struct BattleHistory *battleHistory; struct BattleScriptsStack *AI_ScriptsStack; @@ -610,7 +610,7 @@ struct BattleStruct u8 field_2A2; }; -extern struct BattleStruct* gBattleStruct; +extern struct BattleStruct *gBattleStruct; #define GET_MOVE_TYPE(move, typeArg) \ { \ @@ -975,5 +975,8 @@ extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200]; extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT]; extern void (*gPreBattleCallback1)(void); extern bool8 gDoingBattleAnim; +extern void *gUnknown_3005EE0[]; +extern u8 *gUnknown_2022BB8; +extern u8 *gUnknown_2022BBC; #endif // GUARD_BATTLE_H diff --git a/include/battle_util2.h b/include/battle_util2.h index 3b8a6f817..8ca726856 100644 --- a/include/battle_util2.h +++ b/include/battle_util2.h @@ -6,7 +6,5 @@ void AllocateBattleResources(void); void FreeBattleResources(void); void AdjustFriendshipOnBattleFaint(u8 bank); -void sub_80571DC(u8 bank, u8 arg1); -u32 sub_805725C(u8 bank); #endif // GUARD_BATTLE_UTIL_H diff --git a/include/constants/battle.h b/include/constants/battle.h index f886f560b..36fb4d447 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -63,7 +63,7 @@ #define BATTLE_TYPE_POKEDUDE 0x10000 #define BATTLE_TYPE_PALACE 0x20000 #define BATTLE_TYPE_ARENA 0x40000 -#define BATTLE_TYPE_FACTORY 0x80000 +#define BATTLE_TYPE_TRAINER_TOWER 0x80000 #define BATTLE_TYPE_PIKE 0x100000 #define BATTLE_TYPE_PYRAMID 0x200000 #define BATTLE_TYPE_INGAME_PARTNER 0x400000 diff --git a/include/trainer_tower.h b/include/trainer_tower.h index b9c16d958..5e7a90208 100644 --- a/include/trainer_tower.h +++ b/include/trainer_tower.h @@ -2,5 +2,7 @@ #define GUARD_TRAINER_TOWER_H void PrintTrainerTowerRecords(void); +void InitTrainerTowerBattleStruct(void); +void FreeTrainerTowerBattleStruct(void); #endif //GUARD_TRAINER_TOWER_H -- cgit v1.2.3 From 045331d139f04169df59f4550fd2f5fadac14a58 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 30 Jul 2019 02:54:50 +0800 Subject: ported battle_controllers from pokeem --- include/battle.h | 30 ++++++---- include/battle_2.h | 1 + include/battle_ai_script_commands.h | 4 +- include/battle_controllers.h | 114 ++++++++++++++++-------------------- include/battle_message.h | 16 ++--- include/battle_util.h | 1 + include/cable_club.h | 13 ++++ include/constants/battle.h | 2 +- include/link.h | 10 ++-- include/link_rfu.h | 1 + include/party_menu.h | 1 + include/pokemon.h | 2 +- 12 files changed, 104 insertions(+), 91 deletions(-) create mode 100644 include/cable_club.h (limited to 'include') diff --git a/include/battle.h b/include/battle.h index ae17cdca0..f919c4e0d 100644 --- a/include/battle.h +++ b/include/battle.h @@ -29,9 +29,9 @@ #define SIDE_PLAYER 0x0 #define SIDE_OPPONENT 0x1 -#define GET_BANK_IDENTITY(bank)((gBanksByIdentity[bank])) -#define GET_BANK_SIDE(bank)((GetBattlerPosition(bank) & BIT_SIDE)) -#define GET_BANK_SIDE2(bank)((GET_BANK_IDENTITY(bank) & BIT_SIDE)) +#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)) #define TRAINER_OPPONENT_3FE 0x3FE #define TRAINER_OPPONENT_C00 0xC00 @@ -567,11 +567,11 @@ struct BattleStruct u8 field_A6; u8 field_A7; u16 hpOnSwitchout[2]; - u32 savedBattleTypeFlags; u8 abilityPreventingSwitchout; u8 hpScale; u8 synchronizeMoveEffect; - u8 field_B3; + u8 field_AF; + u32 savedBattleTypeFlags; // TODO: Is it correct to place it here? u8 field_B4; u8 field_B5; u8 field_B6; @@ -780,13 +780,13 @@ struct BattleScripting u8 animArg2; u16 tripleKickPower; u8 atk49_state; - u8 bankWithAbility; + u8 battlerWithAbility; u8 multihitMoveEffect; - u8 bank; + u8 battler; u8 animTurn; u8 animTargetsHit; u8 statChanger; - u8 field_1B; + bool8 statAnimPlayed; u8 atk23_state; u8 battleStyle; u8 atk6C_state; @@ -795,12 +795,10 @@ struct BattleScripting u8 reshowMainState; u8 reshowHelperState; u8 field_23; - u8 field_24; + u8 windowsType; // TODO: what does this field do in firered? u8 multiplayerId; }; -extern struct BattleScripting gBattleScripting; - // functions // battle_1 @@ -954,6 +952,8 @@ extern u16 gMoveToLearn; extern u16 gBattleMovePower; extern struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT]; extern u16 gCurrentMove; +extern u16 gChosenMove; +extern u16 gCalledMove; extern u8 gCritMultiplier; extern u16 gBattleWeather; extern u8 gLastUsedAbility; @@ -978,5 +978,13 @@ extern bool8 gDoingBattleAnim; extern void *gUnknown_3005EE0[]; extern u8 *gUnknown_2022BB8; extern u8 *gUnknown_2022BBC; +extern void (*gBattleMainFunc)(void); +extern u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT]; +extern u32 gUnknown_2022B54; +extern u8 gUnknown_2023DDC; +extern u8 gBattlerAttacker; +extern u8 gEffectBattler; +extern u8 gUnknown_2023D72; +extern struct BattleScripting gBattleScripting; #endif // GUARD_BATTLE_H diff --git a/include/battle_2.h b/include/battle_2.h index 72fcb0e11..cf20bcd25 100644 --- a/include/battle_2.h +++ b/include/battle_2.h @@ -47,6 +47,7 @@ bool8 TryRunFromBattle(u8 bank); void sub_800FD9C(void); void sub_80120C4(struct Sprite *); void sub_8012100(struct Sprite *); +void nullsub_12(void); extern const u8 gStatusConditionString_PoisonJpn[8]; extern const u8 gStatusConditionString_SleepJpn[8]; diff --git a/include/battle_ai_script_commands.h b/include/battle_ai_script_commands.h index 3786d4a8c..12df776be 100644 --- a/include/battle_ai_script_commands.h +++ b/include/battle_ai_script_commands.h @@ -3,9 +3,7 @@ #include "global.h" -extern u8 sBattler_AI; - -void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves); +void BattleAI_HandleItemUseBeforeAISetup(void); void BattleAI_SetupAIData(u8 defaultScoreMoves); u8 BattleAI_ChooseMoveOrAction(void); void ClearBankMoveHistory(u8 bank); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 577bce485..758a6e52f 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -162,8 +162,8 @@ enum CONTROLLER_INTROSLIDE, CONTROLLER_INTROTRAINERBALLTHROW, CONTROLLER_DRAWPARTYSTATUSSUMMARY, - CONTROLLER_49, - CONTROLLER_50, + CONTROLLER_HIDEPARTYSTATUSSUMMARY, + CONTROLLER_ENDBOUNCE, CONTROLLER_SPRITEINVISIBILITY, CONTROLLER_BATTLEANIMATION, CONTROLLER_LINKSTANDBYMSG, @@ -177,68 +177,53 @@ enum // general functions void HandleLinkBattleSetup(void); -void SetUpBattleVarsAndBirchZigzagoon(void); -void sub_8032768(void); -void sub_8033648(void); +void SetUpBattleVars(void); +void sub_800D30C(void); +void sub_800DD28(void); void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data); // emitters void BtlController_EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck); -void EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes); // unused -void EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data); -void EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data); // unused -void EmitLoadMonSprite(u8 bufferId); -void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit); -void EmitReturnMonToBall(u8 bufferId, u8 arg1); -void EmitDrawTrainerPic(u8 bufferId); -void EmitTrainerSlide(u8 bufferId); -void EmitTrainerSlideBack(u8 bufferId); -void EmitFaintAnimation(u8 bufferId); -void EmitPaletteFade(u8 bufferId); // unused -void EmitSuccessBallThrowAnim(u8 bufferId); // unused -void EmitBallThrowAnim(u8 bufferId, u8 caseId); -void EmitPause(u8 bufferId, u8 toWait, void *data); // unused -void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit); -void EmitPrintString(u8 bufferId, u16 stringId); -void EmitPrintSelectionString(u8 bufferId, u16 stringId); -void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2); -void EmitUnknownYesNoBox(u8 bufferId); -void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData); -void EmitChooseItem(u8 bufferId, u8* arg1); -void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4); -void EmitCmd23(u8 bufferId); // unused -void EmitHealthBarUpdate(u8 bufferId, u16 hpValue); -void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints); -void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2); -void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status); -void EmitStatusXor(u8 bufferId, u8 b); // unused -void EmitDataTransfer(u8 bufferId, u16 size, void *data); -void EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused -void EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter); // unused -void EmitCmd32(u8 bufferId, u16 size, void *c); // unused -void EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2); -void EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c); -void EmitOneReturnValue(u8 bufferId, u16 arg1); -void EmitOneReturnValue_Duplicate(u8 bufferId, u16 b); -void EmitCmd37(u8 bufferId); // unused -void EmitCmd38(u8 bufferId, u8 b); // unused -void EmitCmd39(u8 bufferId); // unused -void EmitCmd40(u8 bufferId); // unused -void EmitHitAnimation(u8 bufferId); -void EmitCmd42(u8 bufferId); -void EmitPlaySE(u8 bufferId, u16 songId); -void EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM); -void EmitFaintingCry(u8 bufferId); -void EmitIntroSlide(u8 bufferId, u8 terrainId); -void EmitIntroTrainerBallThrow(u8 bufferId); -void EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2); -void EmitCmd49(u8 bufferId); -void EmitCmd50(u8 bufferId); -void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible); -void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument); -void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2); -void EmitResetActionMoveSelection(u8 bufferId, u8 caseId); -void EmitCmd55(u8 bufferId, u8 arg1); +void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data); +void BtlController_EmitLoadMonSprite(u8 bufferId); +void BtlController_EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit); +void BtlController_EmitReturnMonToBall(u8 bufferId, u8 arg1); +void BtlController_EmitDrawTrainerPic(u8 bufferId); +void BtlController_EmitTrainerSlide(u8 bufferId); +void BtlController_EmitTrainerSlideBack(u8 bufferId); +void BtlController_EmitFaintAnimation(u8 bufferId); +void BtlController_EmitBallThrowAnim(u8 bufferId, u8 caseId); +void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr); +void BtlController_EmitPrintString(u8 bufferId, u16 stringId); +void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringId); +void BtlController_EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2); +void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData); +void BtlController_EmitChooseItem(u8 bufferId, u8* arg1); +void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4); +void BtlController_EmitHealthBarUpdate(u8 bufferId, u16 hpValue); +void BtlController_EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints); +void BtlController_EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2); +void BtlController_EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status); +void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data); +void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2); +void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c); +void BtlController_EmitOneReturnValue(u8 bufferId, u16 arg1); +void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 b); +void BtlController_EmitHitAnimation(u8 bufferId); +void BtlController_EmitCmd42(u8 bufferId); +void BtlController_EmitPlaySE(u8 bufferId, u16 songId); +void BtlController_EmitPlayFanfare(u8 bufferId, u16 songId); +void BtlController_EmitFaintingCry(u8 bufferId); +void BtlController_EmitIntroSlide(u8 bufferId, u8 terrainId); +void BtlController_EmitIntroTrainerBallThrow(u8 bufferId); +void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2); +void BtlController_EmitHidePartyStatusSummary(u8 bufferId); +void BtlController_EmitEndBounceEffect(u8 bufferId); +void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible); +void BtlController_EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument); +void BtlController_EmitLinkStandbyMsg(u8 bufferId, u8 arg1); +void BtlController_EmitResetActionMoveSelection(u8 bufferId, u8 caseId); +void BtlController_EmitCmd55(u8 bufferId, u8 arg1); // player controller void SetControllerToPlayer(void); @@ -251,6 +236,7 @@ void c3_0802FDF4(u8 taskId); void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused); void ActionSelectionDestroyCursorAt(u8 cursorPos); void InitMoveSelectionsVarsAndStrings(void); +void nullsub_13(void); // recorded player controller void SetControllerToRecordedPlayer(void); @@ -264,11 +250,11 @@ void SetControllerToPlayerPartner(void); // safari controller void SetControllerToSafari(void); -// wally controller -void SetControllerToWally(void); +// pokedude controller +void SetControllerToPokedude(void); -// recorded opponent controller -void SetControllerToRecordedOpponent(void); +// oak controller +void SetControllerToOakOrOldman(void); // link opponent void SetControllerToLinkOpponent(void); diff --git a/include/battle_message.h b/include/battle_message.h index df2653756..ffc9d5bb7 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -35,11 +35,11 @@ #define B_TXT_EFF_ABILITY 0x1B #define B_TXT_TRAINER1_CLASS 0x1C #define B_TXT_TRAINER1_NAME 0x1D -#define B_TXT_1E 0x1E // trainer name for a link player -#define B_TXT_1F 0x1F // trainer name for a link player -#define B_TXT_20 0x20 // trainer name for a link player -#define B_TXT_21 0x21 // trainer name for a link player -#define B_TXT_22 0x22 // trainer name for a link player +#define B_TXT_LINK_PLAYER_NAME 0x1E +#define B_TXT_LINK_PARTNER_NAME 0x1F +#define B_TXT_LINK_OPPONENT1_NAME 0x20 +#define B_TXT_LINK_OPPONENT2_NAME 0x21 +#define B_TXT_LINK_SCR_TRAINER_NAME 0x22 #define B_TXT_PLAYER_NAME 0x23 #define B_TXT_TRAINER1_LOSE_TEXT 0x24 #define B_TXT_TRAINER1_WIN_TEXT 0x25 @@ -196,7 +196,7 @@ textVar[4] = B_BUFF_EOS; \ } -struct StringInfoBattle +struct BattleMsgData { u16 currentMove; u16 originallyUsedMove; @@ -205,7 +205,7 @@ struct StringInfoBattle u8 scrActive; u8 unk1605E; u8 hpScale; - u8 StringBank; + u8 itemEffectBattler; u8 moveType; u8 abilities[4]; u8 textBuffs[3][0x10]; @@ -220,6 +220,8 @@ u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp); void BattlePutTextOnWindow(const u8* text, u8 arg1); bool8 sub_80D89B0(u16); +extern struct BattleMsgData *gBattleMsgDataPtr; + #define TEXT_BUFF_ARRAY_COUNT 16 extern u8 gDisplayedStringBattle[300]; diff --git a/include/battle_util.h b/include/battle_util.h index a062f0743..88b35e1a4 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -88,5 +88,6 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget); u8 IsMonDisobedient(void); void MarkBufferBankForExecution(u8 battlerId); void sub_80174B8(u8 battlerId); +void sub_8017298(u8 battlerId); #endif // GUARD_BATTLE_UTIL_H diff --git a/include/cable_club.h b/include/cable_club.h new file mode 100644 index 000000000..401cfacf1 --- /dev/null +++ b/include/cable_club.h @@ -0,0 +1,13 @@ +#ifndef GUARD_CABLE_CLUB_H +#define GUARD_CABLE_CLUB_H + +#include "task.h" + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations +void sub_8081A90(u8 taskId); + +#endif //GUARD_CABLE_CLUB_H diff --git a/include/constants/battle.h b/include/constants/battle.h index 36fb4d447..b424103a1 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -53,7 +53,7 @@ #define BATTLE_TYPE_MULTI 0x0040 #define BATTLE_TYPE_SAFARI 0x0080 #define BATTLE_TYPE_BATTLE_TOWER 0x0100 -#define BATTLE_TYPE_WALLY_TUTORIAL 0x0200 +#define BATTLE_TYPE_OLDMAN_TUTORIAL 0x0200 #define BATTLE_TYPE_ROAMER 0x0400 #define BATTLE_TYPE_EREADER_TRAINER 0x0800 #define BATTLE_TYPE_KYOGRE_GROUDON 0x1000 diff --git a/include/link.h b/include/link.h index e1a4e106b..190a9d96a 100644 --- a/include/link.h +++ b/include/link.h @@ -145,6 +145,7 @@ extern struct LinkPlayer gLinkPlayers[]; extern u16 word_3002910[]; extern bool8 gReceivedRemoteLinkPlayers; extern bool8 gLinkVSyncDisabled; +extern u8 gWirelessCommType; extern u8 gUnknown_3003F84; extern u64 gSioMlt_Recv; @@ -199,15 +200,16 @@ void sub_8011BD0(void); u8 sub_800ABAC(void); u8 sub_800ABBC(void); void sub_800AC34(void); -void sub_8009804(void); -bool8 sub_800AA48(void); -void sub_800A5BC(void); +void OpenLink(void); +bool8 IsLinkMaster(void); +void CheckShouldAdvanceLinkState(void); void sub_800AA80(u8); void sub_80098D8(void); void CloseLink(void); -bool8 sub_800A4BC(void); +bool8 IsLinkTaskFinished(void); bool32 sub_800B270(void); void sub_800B388(void); void sub_8054A28(void); +void sub_800B1F4(void); #endif // GUARD_LINK_H diff --git a/include/link_rfu.h b/include/link_rfu.h index 7e0ea2068..928ae380e 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -18,5 +18,6 @@ void MEvent_CreateTask_CardOrNewsOverWireless(u8); void MEvent_CreateTask_Leader(u8); void sub_80F9E2C(void * data); u8 sub_8116DE0(void); +void sub_80FBB4C(void); #endif //GUARD_LINK_RFU_H diff --git a/include/party_menu.h b/include/party_menu.h index 2ae33175c..3c88f75e0 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -63,5 +63,6 @@ void ItemUseCB_Medicine(u8 taskId, TaskFunc followUpFunc); u8 GetItemEffectType(u16 itemId); u8 pokemon_order_func(u8); void sub_8127CAC(void); +void sub_8127DA8(u8 battlerId, u8 multiplayerFlag); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon.h b/include/pokemon.h index d2eefd390..6c20b967d 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -651,7 +651,7 @@ bool8 IsTradedMon(struct Pokemon *mon); bool8 IsOtherTrainer(u32 otId, u8 *otName); void MonRestorePP(struct Pokemon *mon); void BoxMonRestorePP(struct BoxPokemon *boxMon); -void sub_8044348(void); +void SetMonPreventsSwitchingString(void); void SetWildMonHeldItem(void); bool8 IsMonShiny(struct Pokemon *mon); u8 *GetTrainerPartnerName(void); -- cgit v1.2.3 From 035df4d7a4a2782cf7bc3789f56471a03ffbfca0 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 30 Jul 2019 12:10:40 +0800 Subject: ported documentation of battle_util.s --- include/battle_util.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'include') diff --git a/include/battle_util.h b/include/battle_util.h index 88b35e1a4..e7cb8dc99 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -54,8 +54,8 @@ u8 GetBattleBank(u8 caseId); void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move); void PressurePPLoseOnUsingPerishSong(u8 bankAtk); void PressurePPLoseOnUsingImprision(u8 bankAtk); -void MarkAllBufferBanksForExecution(void); // unused -void MarkBufferBankForExecution(u8 bank); +void MarkAllBattlersForControllerExec(void); // unused +void MarkBattlerForControllerExec(u8 bank); void sub_803F850(u8 arg0); void CancelMultiTurnMoves(u8 bank); bool8 WasUnableToUseMove(u8 bank); @@ -70,8 +70,8 @@ u8 TrySetCantSelectMoveBattleScript(void); u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check); bool8 AreAllMovesUnusable(void); u8 GetImprisonedMovesCount(u8 bank, u16 move); -u8 UpdateTurnCounters(void); -u8 TurnBasedEffects(void); +u8 DoFieldEndTurnEffects(void); +u8 DoBattlerEndTurnEffects(void); bool8 HandleWishPerishSongOnTurnEnd(void); bool8 HandleFaintedMonActions(void); void TryClearRageStatuses(void); @@ -86,7 +86,7 @@ void ClearFuryCutterDestinyBondGrudge(u8 bank); void HandleAction_RunBattleScript(void); u8 GetMoveTarget(u16 move, u8 useMoveTarget); u8 IsMonDisobedient(void); -void MarkBufferBankForExecution(u8 battlerId); +void MarkBattlerForControllerExec(u8 battlerId); void sub_80174B8(u8 battlerId); void sub_8017298(u8 battlerId); -- cgit v1.2.3 From 353fe5e797e9855714cb9215f9d73cbfb769e2bc Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 30 Jul 2019 13:45:10 +0800 Subject: improved style of sub_800DD28 --- include/graphics.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/graphics.h b/include/graphics.h index 6f9d8b762..e1bbb55ef 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -975,6 +975,6 @@ extern const u32 gGhostFrontPic[]; extern const u32 gGhostPalette[]; extern const u32 gSubstituteDollGfx[]; extern const u32 gSubstituteDollTilemap[]; -extern const u16 gSubstituteDollPal[]; +extern const u32 gSubstituteDollPal[]; #endif //GUARD_GRAPHICS_H -- cgit v1.2.3 From c88c9c6edfb7122524b319e4601c5d2b97bf06ca Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Wed, 31 Jul 2019 07:57:24 +0800 Subject: progress #1 on porting battle_util --- include/battle.h | 178 +++++++++++++++-------------- include/battle_scripts.h | 4 +- include/battle_util.h | 7 +- include/constants/battle.h | 6 +- include/constants/battle_script_commands.h | 134 ++++++++++++++++++++++ 5 files changed, 236 insertions(+), 93 deletions(-) create mode 100644 include/constants/battle_script_commands.h (limited to 'include') diff --git a/include/battle.h b/include/battle.h index f919c4e0d..188e5aae3 100644 --- a/include/battle.h +++ b/include/battle.h @@ -251,29 +251,29 @@ struct DisableStruct /*0x08*/ u8 protectUses; /*0x09*/ u8 stockpileCounter; /*0x0A*/ u8 substituteHP; - /*0x0B*/ u8 disableTimer1 : 4; - /*0x0B*/ u8 disableTimer2 : 4; + /*0x0B*/ u8 disableTimer : 4; + /*0x0B*/ u8 disableTimerStartValue : 4; /*0x0C*/ u8 encoredMovePos; /*0x0D*/ u8 unkD; - /*0x0E*/ u8 encoreTimer1 : 4; - /*0x0E*/ u8 encoreTimer2 : 4; - /*0x0F*/ u8 perishSongTimer1 : 4; - /*0x0F*/ u8 perishSongTimer2 : 4; + /*0x0E*/ u8 encoreTimer : 4; + /*0x0E*/ u8 encoreTimerStartValue : 4; + /*0x0F*/ u8 perishSongTimer : 4; + /*0x0F*/ u8 perishSongTimerStartValue : 4; /*0x10*/ u8 furyCutterCounter; - /*0x11*/ u8 rolloutCounter1 : 4; - /*0x11*/ u8 rolloutCounter2 : 4; - /*0x12*/ u8 chargeTimer1 : 4; - /*0x12*/ u8 chargeTimer2 : 4; - /*0x13*/ u8 tauntTimer1:4; + /*0x11*/ u8 rolloutTimer : 4; + /*0x11*/ u8 rolloutTimerStartValue : 4; + /*0x12*/ u8 chargeTimer : 4; + /*0x12*/ u8 chargeTimerStartValue : 4; + /*0x13*/ u8 tauntTimer:4; /*0x13*/ u8 tauntTimer2:4; - /*0x14*/ u8 bankPreventingEscape; - /*0x15*/ u8 bankWithSureHit; + /*0x14*/ u8 battlerPreventingEscape; + /*0x15*/ u8 battlerWithSureHit; /*0x16*/ u8 isFirstTurn; /*0x17*/ u8 unk17; /*0x18*/ u8 truantCounter : 1; - /*0x18*/ u8 truantUnknownBit : 1; + /*0x18*/ u8 truantSwitchInHack : 1; /*0x18*/ u8 unk18_a_2 : 2; - /*0x18*/ u8 unk18_b : 4; + /*0x18*/ u8 mimickedMoves : 4; /*0x19*/ u8 rechargeCounter; /*0x1A*/ u8 unk1A[2]; }; @@ -285,7 +285,7 @@ struct ProtectStruct /* field_0 */ u32 protected:1; u32 endured:1; - u32 onlyStruggle:1; + u32 noValidMoves:1; u32 helpingHand:1; u32 bounceMove:1; u32 stealMove:1; @@ -296,7 +296,7 @@ struct ProtectStruct u32 targetNotAffected:1; u32 chargingTurn:1; u32 fleeFlag:2; // for RunAway and Smoke Ball - u32 usedImprisionedMove:1; + u32 usedImprisonedMove:1; u32 loveImmobility:1; u32 usedDisabledMove:1; /* field_2 */ @@ -313,8 +313,8 @@ struct ProtectStruct /* field_4 */ u32 physicalDmg; /* field_8 */ u32 specialDmg; - /* field_C */ u8 physicalBank; - /* field_D */ u8 specialBank; + /* field_C */ u8 physicalBattlerId; + /* field_D */ u8 specialBattlerId; /* field_E */ u16 fieldE; }; @@ -324,18 +324,18 @@ struct SpecialStatus { u8 statLowered : 1; // 0x1 u8 lightningRodRedirected : 1; // 0x2 - u8 restoredBankSprite: 1; // 0x4 - u8 intimidatedPoke : 1; // 0x8 + u8 restoredBattlerSprite: 1; // 0x4 + u8 intimidatedMon : 1; // 0x8 u8 traced : 1; // 0x10 - u8 flag20 : 1; + u8 ppNotAffectedByPressure : 1; u8 flag40 : 1; u8 focusBanded : 1; u8 field1[3]; - s32 moveturnLostHP; - s32 moveturnLostHP_physical; - s32 moveturnLostHP_special; - u8 moveturnPhysicalBank; - u8 moveturnSpecialBank; + s32 dmg; + s32 physicalDmg; + s32 specialDmg; + u8 physicalBattlerId; + u8 specialBattlerId; u8 field12; u8 field13; }; @@ -345,13 +345,13 @@ extern struct SpecialStatus gSpecialStatuses[BATTLE_BANKS_COUNT]; struct SideTimer { /*0x00*/ u8 reflectTimer; - /*0x01*/ u8 reflectBank; + /*0x01*/ u8 reflectBattlerId; /*0x02*/ u8 lightscreenTimer; - /*0x03*/ u8 lightscreenBank; + /*0x03*/ u8 lightscreenBattlerId; /*0x04*/ u8 mistTimer; - /*0x05*/ u8 mistBank; + /*0x05*/ u8 mistBattlerId; /*0x06*/ u8 safeguardTimer; - /*0x07*/ u8 safeguardBank; + /*0x07*/ u8 safeguardBattlerId; /*0x08*/ u8 followmeTimer; /*0x09*/ u8 followmeTarget; /*0x0A*/ u8 spikesAmount; @@ -362,14 +362,14 @@ extern struct SideTimer gSideTimers[]; struct WishFutureKnock { - u8 futureSightCounter[BATTLE_BANKS_COUNT]; - u8 futureSightAttacker[BATTLE_BANKS_COUNT]; - s32 futureSightDmg[BATTLE_BANKS_COUNT]; - u16 futureSightMove[BATTLE_BANKS_COUNT]; - u8 wishCounter[BATTLE_BANKS_COUNT]; - u8 wishUserID[BATTLE_BANKS_COUNT]; + u8 futureSightCounter[MAX_BATTLERS_COUNT]; + u8 futureSightAttacker[MAX_BATTLERS_COUNT]; + s32 futureSightDmg[MAX_BATTLERS_COUNT]; + u16 futureSightMove[MAX_BATTLERS_COUNT]; + u8 wishCounter[MAX_BATTLERS_COUNT]; + u8 wishUserID[MAX_BATTLERS_COUNT]; u8 weatherDuration; - u8 knockedOffPokes[2]; + u8 knockedOffMons[2]; }; extern struct WishFutureKnock gWishFutureKnock; @@ -414,6 +414,12 @@ extern u8 gAbsentBattlerFlags; extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT]; +struct UsedMoves +{ + u16 moves[MAX_BATTLERS_COUNT]; + u16 unknown[MAX_BATTLERS_COUNT]; +}; + struct BattleHistory { /*0x00*/ u16 usedMoves[2][8]; // 0xFFFF means move not used (confuse self hit, etc) @@ -468,18 +474,18 @@ struct BattleResults u8 playerFaintCounter; // 0x0 u8 opponentFaintCounter; // 0x1 u8 playerSwitchesCounter; // 0x2 - u8 unk3; // 0x3 - u8 unk4; // 0x4 - u8 unk5_0:1; // 0x5 + u8 numHealingItemsUsed; // 0x3 + u8 numRevivesUsed; // 0x4 + u8 playerMonWasDamaged:1; // 0x5 u8 usedMasterBall:1; // 0x5 u8 caughtMonBall:4; // 0x5 - u8 unk5_6:1; // 0x5 + u8 shinyWildMon:1; // 0x5 u8 unk5_7:1; // 0x5 u16 playerMon1Species; // 0x6 u8 playerMon1Name[11]; // 0x8 u8 battleTurnCounter; // 0x13 u8 playerMon2Name[11]; // 0x14 - u8 field_1F; // 0x1F + u8 pokeblockThrows; // 0x1F u16 lastOpponentSpecies; // 0x20 u16 lastUsedMovePlayer; // 0x22 u16 lastUsedMoveOpponent; // 0x24 @@ -495,39 +501,31 @@ extern struct BattleResults gBattleResults; struct BattleStruct { u8 turnEffectsTracker; - u8 turnEffectsBank; + u8 turnEffectsBattlerId; u8 filler2; - u8 turncountersTracker; - u8 wrappedMove[8]; // ask gamefreak why they declared it that way - u8 moveTarget[4]; + u8 turnCountersTracker; + u8 wrappedMove[MAX_BATTLERS_COUNT * 2]; // Leftover from Ruby's ewram access. + u8 moveTarget[MAX_BATTLERS_COUNT]; u8 expGetterId; u8 field_11; u8 wildVictorySong; u8 dynamicMoveType; u8 wrappedBy[4]; - u16 assistPossibleMoves[5 * 4]; // 5 mons, each of them knowing 4 moves - u8 field_40; - u8 field_41; - u8 field_42; - u8 field_43; - u8 field_44; - u8 field_45; - u8 field_46; - u8 field_47; - u8 focusPunchBank; + u16 assistPossibleMoves[PARTY_SIZE * MAX_MON_MOVES]; // 6 mons, each of them knowing 4 moves + u8 focusPunchBattlerId; u8 battlerPreventingSwitchout; u8 moneyMultiplier; u8 savedTurnActionNumber; u8 switchInAbilitiesCounter; u8 faintedActionsState; - u8 faintedActionsBank; + u8 faintedActionsBattlerId; u8 field_4F; u16 expValue; u8 field_52; u8 sentInPokes; - bool8 selectionScriptFinished[BATTLE_BANKS_COUNT]; + bool8 selectionScriptFinished[MAX_BATTLERS_COUNT]; u8 field_58[4]; - u8 monToSwitchIntoId[BATTLE_BANKS_COUNT]; + u8 monToSwitchIntoId[MAX_BATTLERS_COUNT]; u8 field_60[4][3]; u8 runTries; u8 caughtMonNick[11]; @@ -536,11 +534,11 @@ struct BattleStruct u8 safariPkblThrowCounter; u8 safariEscapeFactor; u8 safariCatchFactor; - u8 field_7D; - u8 field_7E; + u8 linkBattleVsSpriteId_V; + u8 linkBattleVsSpriteId_S; u8 formToChangeInto; - u8 chosenMovePositions[BATTLE_BANKS_COUNT]; - u8 stateIdAfterSelScript[BATTLE_BANKS_COUNT]; + u8 chosenMovePositions[MAX_BATTLERS_COUNT]; + u8 stateIdAfterSelScript[MAX_BATTLERS_COUNT]; u8 field_88; u8 field_89; u8 field_8A; @@ -557,47 +555,41 @@ struct BattleStruct u8 wallyMovesState; u8 wallyWaitFrames; u8 wallyMoveFrames; - u8 mirrorMoves[8]; // ask gamefreak why they declared it that way - u8 field_A0; - u8 field_A1; - u8 field_A2; - u8 field_A3; - u8 field_A4; - u8 field_A5; - u8 field_A6; - u8 field_A7; + u8 lastTakenMove[MAX_BATTLERS_COUNT * 2 * 2]; // ask gamefreak why they declared it that way u16 hpOnSwitchout[2]; u8 abilityPreventingSwitchout; u8 hpScale; u8 synchronizeMoveEffect; u8 field_AF; - u32 savedBattleTypeFlags; // TODO: Is it correct to place it here? + u32 savedBattleTypeFlags; // TODO: Is it correct to place it here? Or simply not used? u8 field_B4; u8 field_B5; u8 field_B6; u8 field_B7; // void (*savedCallback)(void); - u16 usedHeldItems[BATTLE_BANKS_COUNT]; + u16 usedHeldItems[MAX_BATTLERS_COUNT]; u8 chosenItem[4]; // why is this an u8? u8 AI_itemType[2]; u8 AI_itemFlags[2]; - u16 choicedMove[BATTLE_BANKS_COUNT]; - u16 changedItems[BATTLE_BANKS_COUNT]; - u8 intimidateBank; + u16 choicedMove[MAX_BATTLERS_COUNT]; + u16 changedItems[MAX_BATTLERS_COUNT]; + u8 intimidateBattler; u8 switchInItemsCounter; - u8 field_DA; + u8 arenaTurnCounter; // not used in FR? u8 turnSideTracker; u8 fillerDC[0xDF-0xDC]; - u8 field_DF; - u8 mirrorMoveArrays[32]; - u16 castformPalette[BATTLE_BANKS_COUNT][16]; + u8 givenExpMons; + u8 lastTakenMoveFrom[MAX_BATTLERS_COUNT * MAX_BATTLERS_COUNT * 2]; + u16 castformPalette[MAX_BATTLERS_COUNT][16]; +/* + // EM fields u8 field_180; u8 field_181; u8 field_182; u8 field_183; struct BattleEnigmaBerry battleEnigmaBerry; u8 wishPerishSongState; - u8 wishPerishSongBank; + u8 wishPerishSongBattlerId; bool8 overworldWeatherDone; u8 atkCancellerTracker; u8 field_1A4[96]; @@ -608,7 +600,13 @@ struct BattleStruct u8 field_2A0; u8 field_2A1; u8 field_2A2; -}; +*/ + u8 wishPerishSongState; + u8 wishPerishSongBattlerId; + u8 field_182; // overworldWeatherDone? + u8 field_183; // atkCancellerTracker? + u8 field_184[124]; // only for padding +}; // size == 0x200 bytes extern struct BattleStruct *gBattleStruct; @@ -795,8 +793,6 @@ struct BattleScripting u8 reshowMainState; u8 reshowHelperState; u8 field_23; - u8 windowsType; // TODO: what does this field do in firered? - u8 multiplayerId; }; // functions @@ -986,5 +982,15 @@ extern u8 gBattlerAttacker; extern u8 gEffectBattler; extern u8 gUnknown_2023D72; extern struct BattleScripting gBattleScripting; +extern u8 gBattlerFainted; +extern u32 gStatuses3[MAX_BATTLERS_COUNT]; +extern u8 gSentPokesToOpponent[2]; +extern const u8 *gBattlescriptCurrInstr; +extern const u8 *gSelectionBattleScripts[MAX_BATTLERS_COUNT]; +extern u16 gLastMoves[MAX_BATTLERS_COUNT]; +extern u8 gBattlerByTurnOrder[MAX_BATTLERS_COUNT]; +extern u8 gBattleCommunication[BATTLE_COMMUNICATION_ENTRIES_COUNT]; +extern u16 gSideStatuses[2]; +extern u32 gHitMarker; #endif // GUARD_BATTLE_H diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 69edacae6..b64da190e 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -123,8 +123,8 @@ extern const u8 BattleScript_82DB144[]; extern const u8 BattleScript_82DB167[]; extern const u8 BattleScript_KnockedOff[]; extern const u8 BattleScript_MoveUsedIsImprisoned[]; -extern const u8 BattleScript_SelectingImprisionedMove[]; -extern const u8 BattleScript_SelectingImprisionedMoveInPalace[]; +extern const u8 BattleScript_SelectingImprisonedMove[]; +extern const u8 BattleScript_SelectingImprisonedMoveInPalace[]; extern const u8 BattleScript_GrudgeTakesPp[]; extern const u8 BattleScript_MagicCoatBounce[]; extern const u8 BattleScript_SnatchedMove[]; diff --git a/include/battle_util.h b/include/battle_util.h index e7cb8dc99..adfa10798 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -8,7 +8,7 @@ #define MOVE_LIMITATION_DISABLED (1 << 2) #define MOVE_LIMITATION_TORMENTED (1 << 3) #define MOVE_LIMITATION_TAUNT (1 << 4) -#define MOVE_LIMITATION_IMPRISION (1 << 5) +#define MOVE_LIMITATION_IMPRISON (1 << 5) #define ABILITYEFFECT_ON_SWITCHIN 0x0 #define ABILITYEFFECT_ENDTURN 0x1 @@ -37,6 +37,8 @@ #define ABILITY_ON_FIELD2(abilityId)(AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, abilityId, 0, 0)) #define ITEMEFFECT_ON_SWITCH_IN 0x0 +#define ITEMEFFECT_MOVE_END 0x3 +#define ITEMEFFECT_KINGSROCK_SHELLBELL 0x4 #define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0))) #define WEATHER_HAS_EFFECT2 ((!AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_AIR_LOCK, 0, 0))) @@ -53,7 +55,7 @@ u8 GetBattleBank(u8 caseId); void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move); void PressurePPLoseOnUsingPerishSong(u8 bankAtk); -void PressurePPLoseOnUsingImprision(u8 bankAtk); +void PressurePPLoseOnUsingImprison(u8 bankAtk); void MarkAllBattlersForControllerExec(void); // unused void MarkBattlerForControllerExec(u8 bank); void sub_803F850(u8 arg0); @@ -89,5 +91,6 @@ u8 IsMonDisobedient(void); void MarkBattlerForControllerExec(u8 battlerId); void sub_80174B8(u8 battlerId); void sub_8017298(u8 battlerId); +bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2); #endif // GUARD_BATTLE_UTIL_H diff --git a/include/constants/battle.h b/include/constants/battle.h index b424103a1..f524a7643 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -207,9 +207,9 @@ #define WEATHER_SANDSTORM_TEMPORARY (1 << 3) #define WEATHER_SANDSTORM_PERMANENT (1 << 4) #define WEATHER_SANDSTORM_ANY (WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT) -#define WEATHER_SUNNY_TEMPORARY (1 << 5) -#define WEATHER_SUNNY_PERMANENT (1 << 6) -#define WEATHER_SUNNY_ANY (WEATHER_SUNNY_TEMPORARY | WEATHER_SUNNY_PERMANENT) +#define WEATHER_SUN_TEMPORARY (1 << 5) +#define WEATHER_SUN_PERMANENT (1 << 6) +#define WEATHER_SUN_ANY (WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT) #define WEATHER_HAIL (1 << 7) #define WEATHER_HAIL_ANY (WEATHER_HAIL) #define WEATHER_ANY (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUNNY_ANY | WEATHER_HAIL_ANY) diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h new file mode 100644 index 000000000..894bd13b6 --- /dev/null +++ b/include/constants/battle_script_commands.h @@ -0,0 +1,134 @@ +#ifndef GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H +#define GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H + +// Battle Scripting and BattleCommunication addresses +#define sPAINSPLIT_HP gBattleScripting +#define sBIDE_DMG gBattleScripting + 4 +#define sMULTIHIT_STRING gBattleScripting + 8 +#define sDMG_MULTIPLIER gBattleScripting + 0xE +#define sTWOTURN_STRINGID gBattleScripting + 0xF +#define sB_ANIM_ARG1 gBattleScripting + 0x10 +#define sB_ANIM_ARG2 gBattleScripting + 0x11 +#define sTRIPLE_KICK_POWER gBattleScripting + 0x12 +#define sMOVEEND_STATE gBattleScripting + 0x14 +#define sBATTLER_WITH_ABILITY gBattleScripting + 0x15 +#define sMULTIHIT_EFFECT gBattleScripting + 0x16 +#define sBATTLER gBattleScripting + 0x17 +#define sB_ANIM_TURN gBattleScripting + 0x18 +#define sB_ANIM_TARGETS_HIT gBattleScripting + 0x19 +#define sSTATCHANGER gBattleScripting + 0x1A +#define sSTAT_ANIM_PLAYED gBattleScripting + 0x1B +#define sGIVEEXP_STATE gBattleScripting + 0x1C +#define sBATTLE_STYLE gBattleScripting + 0x1D +#define sLVLBOX_STATE gBattleScripting + 0x1E +#define sLEARNMOVE_STATE gBattleScripting + 0x1F +#define sFIELD_20 gBattleScripting + 0x20 +#define sRESHOW_MAIN_STATE gBattleScripting + 0x21 +#define sRESHOW_HELPER_STATE gBattleScripting + 0x22 +#define sFIELD_23 gBattleScripting + 0x23 +#define sWINDOWS_TYPE gBattleScripting + 0x24 +#define sMULTIPLAYER_ID gBattleScripting + 0x25 +#define sSPECIAL_TRAINER_BATTLE_TYPE gBattleScripting + 0x26 + +#define cEFFECT_CHOOSER gBattleCommunication + 3 +#define cMULTISTRING_CHOOSER gBattleCommunication + 5 + +// Battle Script defines for getting the wanted battler +#define BS_TARGET 0 +#define BS_ATTACKER 1 +#define BS_EFFECT_BATTLER 2 +#define BS_FAINTED 3 +#define BS_BATTLER_0 7 +#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update +#define BS_ATTACKER_SIDE 8 // for atk1E_jumpifability +#define BS_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability +#define BS_SCRIPTING 10 +#define BS_PLAYER1 11 +#define BS_OPPONENT1 12 +#define BS_PLAYER2 13 +#define BS_OPPONENT2 14 + +// atk 01, accuracy calc +#define NO_ACC_CALC 0xFFFE +#define NO_ACC_CALC_CHECK_LOCK_ON 0xFFFF +#define ACC_CURR_MOVE 0 + +// compare operands +#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 + +// atk76, various +#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0 +#define VARIOUS_SET_MAGIC_COAT_TARGET 1 +#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2 +#define VARIOUS_GET_MOVE_TARGET 3 +#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 +#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 +#define VARIOUS_ARENA_JUDGMENT_WINDOW 9 +#define VARIOUS_ARENA_OPPONENT_MON_LOST 10 +#define VARIOUS_ARENA_PLAYER_MON_LOST 11 +#define VARIOUS_ARENA_BOTH_MONS_LOST 12 +#define VARIOUS_EMIT_YESNOBOX 13 +#define VARIOUS_ARENA_JUDGMENT_STRING 16 +#define VARIOUS_ARENA_WAIT_STRING 17 +#define VARIOUS_WAIT_CRY 18 +#define VARIOUS_RETURN_OPPONENT_MON1 19 +#define VARIOUS_RETURN_OPPONENT_MON2 20 +#define VARIOUS_VOLUME_DOWN 21 +#define VARIOUS_VOLUME_UP 22 +#define VARIOUS_SET_ALREADY_STATUS_MOVE_ATTEMPT 23 +#define VARIOUS_SET_TELEPORT_OUTCOME 25 +#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26 + +// atk80, dmg manipulation +#define ATK80_DMG_CHANGE_SIGN 0 +#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1 +#define ATK80_DMG_DOUBLED 2 + +// atk4F, a flag used for the jumpifcantswitch command +#define ATK4F_DONT_CHECK_STATUSES 0x80 + +// statchange defines +#define STAT_CHANGE_BS_PTR 0x1 +#define STAT_CHANGE_NOT_PROTECT_AFFECTED 0x20 + +// atk48 +#define ATK48_STAT_NEGATIVE 0x1 +#define ATK48_STAT_BY_TWO 0x2 +#define ATK48_ONLY_MULTIPLE 0x4 +#define ATK48_DONT_CHECK_LOWER 0x8 + +// atk49, moveend cases +#define ATK49_RAGE 0 +#define ATK49_DEFROST 1 +#define ATK49_SYNCHRONIZE_TARGET 2 +#define ATK49_MOVE_END_ABILITIES 3 +#define ATK49_STATUS_IMMUNITY_ABILITIES 4 +#define ATK49_SYNCHRONIZE_ATTACKER 5 +#define ATK49_CHOICE_MOVE 6 +#define ATK49_CHANGED_ITEMS 7 +#define ATK49_ATTACKER_INVISIBLE 8 +#define ATK49_ATTACKER_VISIBLE 9 +#define ATK49_TARGET_VISIBLE 10 +#define ATK49_ITEM_EFFECTS_ALL 11 +#define ATK49_KINGSROCK_SHELLBELL 12 +#define ATK49_SUBSTITUTE 13 +#define ATK49_UPDATE_LAST_MOVES 14 +#define ATK49_MIRROR_MOVE 15 +#define ATK49_NEXT_TARGET 16 +#define ATK49_COUNT 17 + +#define BIT_HP 0x1 +#define BIT_ATK 0x2 +#define BIT_DEF 0x4 +#define BIT_SPEED 0x8 +#define BIT_SPATK 0x10 +#define BIT_SPDEF 0x20 +#define BIT_ACC 0x40 +#define BIT_EVASION 0x80 + +#endif // GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H -- cgit v1.2.3 From 3eb1f1bc783308dac445eaacc05c9f14e9b78822 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Thu, 1 Aug 2019 12:25:38 +0800 Subject: matched AbilityBattleEffects --- include/battle.h | 52 ++++++++++++++++++++++-------------------------- include/battle_scripts.h | 5 +++++ include/battle_util.h | 42 +++++++++++++++++++------------------- include/field_weather.h | 1 + 4 files changed, 51 insertions(+), 49 deletions(-) (limited to 'include') diff --git a/include/battle.h b/include/battle.h index 188e5aae3..7db128430 100644 --- a/include/battle.h +++ b/include/battle.h @@ -241,7 +241,7 @@ struct ResourceFlags u32 flags[4]; }; -#define UNKNOWN_FLAG_FLASH_FIRE 1 +#define RESOURCE_FLAG_FLASH_FIRE 1 struct DisableStruct { @@ -274,7 +274,7 @@ struct DisableStruct /*0x18*/ u8 truantSwitchInHack : 1; /*0x18*/ u8 unk18_a_2 : 2; /*0x18*/ u8 mimickedMoves : 4; - /*0x19*/ u8 rechargeCounter; + /*0x19*/ u8 rechargeTimer; /*0x1A*/ u8 unk1A[2]; }; @@ -559,13 +559,16 @@ struct BattleStruct u16 hpOnSwitchout[2]; u8 abilityPreventingSwitchout; u8 hpScale; - u8 synchronizeMoveEffect; + u8 field_AE; u8 field_AF; - u32 savedBattleTypeFlags; // TODO: Is it correct to place it here? Or simply not used? - u8 field_B4; + u8 field_B0; + u8 field_B1; + u8 field_B2; + u8 field_B3; + u8 synchronizeMoveEffect; u8 field_B5; u8 field_B6; - u8 field_B7; + u8 atkCancellerTracker; // void (*savedCallback)(void); u16 usedHeldItems[MAX_BATTLERS_COUNT]; u8 chosenItem[4]; // why is this an u8? @@ -581,31 +584,11 @@ struct BattleStruct u8 givenExpMons; u8 lastTakenMoveFrom[MAX_BATTLERS_COUNT * MAX_BATTLERS_COUNT * 2]; u16 castformPalette[MAX_BATTLERS_COUNT][16]; -/* - // EM fields - u8 field_180; - u8 field_181; - u8 field_182; - u8 field_183; - struct BattleEnigmaBerry battleEnigmaBerry; - u8 wishPerishSongState; - u8 wishPerishSongBattlerId; - bool8 overworldWeatherDone; - u8 atkCancellerTracker; - u8 field_1A4[96]; - u8 field_204[104]; - u8 field_26C[40]; - u8 AI_monToSwitchIntoId[BATTLE_BANKS_COUNT]; - u8 field_298[8]; - u8 field_2A0; - u8 field_2A1; - u8 field_2A2; -*/ u8 wishPerishSongState; u8 wishPerishSongBattlerId; u8 field_182; // overworldWeatherDone? - u8 field_183; // atkCancellerTracker? - u8 field_184[124]; // only for padding + u8 field_183; + u8 field_184[124]; // currently unknown }; // size == 0x200 bytes extern struct BattleStruct *gBattleStruct; @@ -620,6 +603,13 @@ extern struct BattleStruct *gBattleStruct; #define IS_TYPE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY) #define IS_TYPE_SPECIAL(moveType)(moveType > TYPE_MYSTERY) +#define TARGET_TURN_DAMAGED ((gSpecialStatuses[gBattlerTarget].physicalDmg != 0 || gSpecialStatuses[gBattlerTarget].specialDmg != 0)) +#define IS_BATTLER_OF_TYPE(battlerId, type)((gBattleMons[battlerId].type1 == type || gBattleMons[battlerId].type2 == type)) +#define SET_BATTLER_TYPE(battlerId, type) \ +{ \ + gBattleMons[battlerId].type1 = type; \ + gBattleMons[battlerId].type2 = type; \ +} #define MOVE_EFFECT_SLEEP 0x1 #define MOVE_EFFECT_POISON 0x2 @@ -734,6 +724,7 @@ extern struct BattleStruct *gBattleStruct; #define B_ANIM_STATUS_WRAPPED 0x9 #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 #define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit @@ -992,5 +983,10 @@ extern u8 gBattlerByTurnOrder[MAX_BATTLERS_COUNT]; extern u8 gBattleCommunication[BATTLE_COMMUNICATION_ENTRIES_COUNT]; extern u16 gSideStatuses[2]; extern u32 gHitMarker; +extern u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT]; +extern u8 gMoveResultFlags; +extern s32 gTakenDmg[MAX_BATTLERS_COUNT]; +extern u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT]; + #endif // GUARD_BATTLE_H diff --git a/include/battle_scripts.h b/include/battle_scripts.h index b64da190e..185f6228d 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -156,6 +156,7 @@ extern const u8 BattleScript_PrintPayDayMoneyString[]; extern const u8 BattleScript_WrapTurnDmg[]; extern const u8 BattleScript_WrapEnds[]; extern const u8 BattleScript_MoveUsedIsInLove[]; +extern const u8 BattleScript_MoveUsedIsInLoveCantAttack[]; extern const u8 BattleScript_MoveUsedIsParalyzedCantAttack[]; extern const u8 BattleScript_NightmareTurnDmg[]; extern const u8 BattleScript_CurseTurnDmg[]; @@ -288,5 +289,9 @@ extern const u8 BattleScript_ActionWatchesCarefully[]; extern const u8 BattleScript_ActionGetNear[]; extern const u8 BattleScript_ActionThrowPokeblock[]; extern const u8 BattleScript_82DBEE3[]; +extern const u8 gUnknown_81D9192[]; +extern const u8 gUnknown_81D9180[]; +extern const u8 BattleScript_IntimidateActivates[]; +extern const u8 BattleScript_IntimidateActivatesEnd3[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/battle_util.h b/include/battle_util.h index adfa10798..dfe7be60a 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -10,27 +10,27 @@ #define MOVE_LIMITATION_TAUNT (1 << 4) #define MOVE_LIMITATION_IMPRISON (1 << 5) -#define ABILITYEFFECT_ON_SWITCHIN 0x0 -#define ABILITYEFFECT_ENDTURN 0x1 -#define ABILITYEFFECT_MOVES_BLOCK 0x2 -#define ABILITYEFFECT_ABSORBING 0x3 -#define ABILITYEFFECT_CONTACT 0x4 -#define ABILITYEFFECT_IMMUNITY 0x5 -#define ABILITYEFFECT_FORECAST 0x6 -#define ABILITYEFFECT_SYNCHRONIZE 0x7 -#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8 -#define ABILITYEFFECT_INTIMIDATE1 0x9 -#define ABILITYEFFECT_INTIMIDATE2 0xA -#define ABILITYEFFECT_TRACE 0xB -#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC -#define ABILITYEFFECT_CHECK_BANK_SIDE 0xD -#define ABILITYEFFECT_FIELD_SPORT 0xE -#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK 0xF -#define ABILITYEFFECT_COUNT_OTHER_SIDE 0x10 -#define ABILITYEFFECT_COUNT_BANK_SIDE 0x11 -#define ABILITYEFFECT_COUNT_ON_FIELD 0x12 -#define ABILITYEFFECT_CHECK_ON_FIELD 0x13 -#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF +#define ABILITYEFFECT_ON_SWITCHIN 0x0 +#define ABILITYEFFECT_ENDTURN 0x1 +#define ABILITYEFFECT_MOVES_BLOCK 0x2 +#define ABILITYEFFECT_ABSORBING 0x3 +#define ABILITYEFFECT_MOVE_END 0x4 +#define ABILITYEFFECT_IMMUNITY 0x5 +#define ABILITYEFFECT_FORECAST 0x6 +#define ABILITYEFFECT_SYNCHRONIZE 0x7 +#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8 +#define ABILITYEFFECT_INTIMIDATE1 0x9 +#define ABILITYEFFECT_INTIMIDATE2 0xA +#define ABILITYEFFECT_TRACE 0xB +#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC +#define ABILITYEFFECT_CHECK_BATTLER_SIDE 0xD +#define ABILITYEFFECT_FIELD_SPORT 0xE +#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER 0xF // TODO: Is it correct? +#define ABILITYEFFECT_COUNT_OTHER_SIDE 0x10 +#define ABILITYEFFECT_COUNT_BATTLER_SIDE 0x11 +#define ABILITYEFFECT_COUNT_ON_FIELD 0x12 +#define ABILITYEFFECT_CHECK_ON_FIELD 0x13 +#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF #define ABILITY_ON_OPPOSING_FIELD(battlerId, abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, battlerId, abilityId, 0, 0)) #define ABILITY_ON_FIELD(abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, abilityId, 0, 0)) diff --git a/include/field_weather.h b/include/field_weather.h index c3ecd4fa6..477ca0e76 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -16,5 +16,6 @@ void PlayRainStoppingSoundEffect(void); bool8 sub_807AA70(void); void SetWeatherScreenFadeOut(void); void sub_807B070(void); +u8 GetCurrentWeather(void); #endif // GUARD_WEATHER_H -- cgit v1.2.3 From c2964e818143757ca5586b1a811669a1c287e870 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Fri, 2 Aug 2019 05:05:35 +0800 Subject: ported battle_util from pokeem --- include/battle.h | 4 ++- include/battle_scripts.h | 75 ++------------------------------------------- include/battle_util.h | 50 ++++++++++++++---------------- include/constants/pokemon.h | 6 ++++ 4 files changed, 34 insertions(+), 101 deletions(-) (limited to 'include') diff --git a/include/battle.h b/include/battle.h index 7db128430..357bbbd8c 100644 --- a/include/battle.h +++ b/include/battle.h @@ -987,6 +987,8 @@ extern u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT]; extern u8 gMoveResultFlags; extern s32 gTakenDmg[MAX_BATTLERS_COUNT]; extern u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT]; - +extern u8 gCurrentActionFuncId; +extern u8 gCurrMovePos; +extern u8 gChosenMovePos; #endif // GUARD_BATTLE_H diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 185f6228d..c592ba6b8 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -28,16 +28,8 @@ extern const u8 BattleScript_LocalBattleLost[]; extern const u8 BattleScript_LocalBattleLostPrintWhiteOut[]; extern const u8 BattleScript_LocalBattleLostEnd[]; extern const u8 BattleScript_CheckDomeDrew[]; -extern const u8 BattleScript_82DAA0B[]; -extern const u8 BattleScript_82DAA31[]; extern const u8 BattleScript_LinkBattleWonOrLost[]; -extern const u8 BattleScript_82DAA5C[]; -extern const u8 BattleScript_82DAA83[]; extern const u8 BattleScript_FrontierTrainerBattleWon[]; -extern const u8 BattleScript_82DAAAB[]; -extern const u8 BattleScript_82DAAAE[]; -extern const u8 BattleScript_82DAACB[]; -extern const u8 BattleScript_82DAADA[]; extern const u8 BattleScript_SmokeBallEscape[]; extern const u8 BattleScript_RanAwayUsingMonAbility[]; extern const u8 BattleScript_GotAwaySafely[]; @@ -47,11 +39,6 @@ extern const u8 BattleScript_PrintFailedToRunString[]; extern const u8 BattleScript_PrintCantEscapeFromBattle[]; extern const u8 BattleScript_PrintFullBox[]; extern const u8 BattleScript_ActionSwitch[]; -extern const u8 BattleScript_82DAB35[]; -extern const u8 BattleScript_82DAB37[]; -extern const u8 BattleScript_82DAB44[]; -extern const u8 BattleScript_82DAB77[]; -extern const u8 BattleScript_82DABB8[]; extern const u8 BattleScript_Pausex20[]; extern const u8 BattleScript_LevelUp[]; extern const u8 BattleScript_RainContinuesOrEnds[]; @@ -64,13 +51,10 @@ extern const u8 BattleScript_SideStatusWoreOff[]; extern const u8 BattleScript_SafeguardProtected[]; extern const u8 BattleScript_SafeguardEnds[]; extern const u8 BattleScript_LeechSeedTurnDrain[]; -extern const u8 BattleScript_82DAD47[]; -extern const u8 BattleScript_82DAD4D[]; extern const u8 BattleScript_BideStoringEnergy[]; extern const u8 BattleScript_BideAttack[]; extern const u8 BattleScript_BideNoEnergyToAttack[]; extern const u8 BattleScript_SuccessForceOut[]; -extern const u8 BattleScript_82DADF1[]; extern const u8 BattleScript_MistProtected[]; extern const u8 BattleScript_RageIsBuilding[]; extern const u8 BattleScript_MoveUsedIsDisabled[]; @@ -81,32 +65,16 @@ extern const u8 BattleScript_SelectingUnusableMoveInPalace[]; extern const u8 BattleScript_EncoredNoMore[]; extern const u8 BattleScript_DestinyBondTakesLife[]; extern const u8 BattleScript_SpikesOnAttacker[]; -extern const u8 BattleScript_82DAE7A[]; extern const u8 BattleScript_SpikesOnTarget[]; -extern const u8 BattleScript_82DAEB1[]; extern const u8 BattleScript_SpikesOngBank1[]; -extern const u8 BattleScript_82DAEE8[]; -extern const u8 BattleScript_82DAEFE[]; extern const u8 BattleScript_PerishSongTakesLife[]; extern const u8 BattleScript_PerishSongCountGoesDown[]; extern const u8 BattleScript_AllStatsUp[]; -extern const u8 BattleScript_82DAF54[]; -extern const u8 BattleScript_82DAF72[]; -extern const u8 BattleScript_82DAF86[]; -extern const u8 BattleScript_82DAF9A[]; -extern const u8 BattleScript_82DAFAE[]; -extern const u8 BattleScript_82DAFC2[]; extern const u8 BattleScript_RapidSpinAway[]; extern const u8 BattleScript_WrapFree[]; extern const u8 BattleScript_LeechSeedFree[]; extern const u8 BattleScript_SpikesFree[]; extern const u8 BattleScript_MonTookFutureAttack[]; -extern const u8 BattleScript_82DB001[]; -extern const u8 BattleScript_82DB008[]; -extern const u8 BattleScript_82DB020[]; -extern const u8 BattleScript_82DB027[]; -extern const u8 BattleScript_82DB03F[]; -extern const u8 BattleScript_82DB058[]; extern const u8 BattleScript_NoMovesLeft[]; extern const u8 BattleScript_SelectingMoveWithNoPP[]; extern const u8 BattleScript_NoPPForMove[]; @@ -119,8 +87,6 @@ extern const u8 BattleScript_SelectingNotAllowedMoveTauntInPalace[]; extern const u8 BattleScript_WishComesTrue[]; extern const u8 BattleScript_IngrainTurnHeal[]; extern const u8 BattleScript_AtkDefDown[]; -extern const u8 BattleScript_82DB144[]; -extern const u8 BattleScript_82DB167[]; extern const u8 BattleScript_KnockedOff[]; extern const u8 BattleScript_MoveUsedIsImprisoned[]; extern const u8 BattleScript_SelectingImprisonedMove[]; @@ -131,15 +97,11 @@ extern const u8 BattleScript_SnatchedMove[]; extern const u8 BattleScript_EnduredMsg[]; extern const u8 BattleScript_OneHitKOMsg[]; extern const u8 BattleScript_SAtkDown2[]; -extern const u8 BattleScript_82DB1FE[]; extern const u8 BattleScript_FocusPunchSetUp[]; extern const u8 BattleScript_MoveUsedIsAsleep[]; extern const u8 BattleScript_MoveUsedWokeUp[]; extern const u8 BattleScript_MonWokeUpInUproar[]; extern const u8 BattleScript_PoisonTurnDmg[]; -extern const u8 BattleScript_82DB243[]; -extern const u8 BattleScript_82DB245[]; -extern const u8 BattleScript_82DB25E[]; extern const u8 BattleScript_BurnTurnDmg[]; extern const u8 BattleScript_MoveUsedIsFrozen[]; extern const u8 BattleScript_MoveUsedUnfroze[]; @@ -149,8 +111,6 @@ extern const u8 BattleScript_MoveUsedFlinched[]; extern const u8 BattleScript_PrintUproarOverTurns[]; extern const u8 BattleScript_ThrashConfuses[]; extern const u8 BattleScript_MoveUsedIsConfused[]; -extern const u8 BattleScript_82DB2D4[]; -extern const u8 BattleScript_82DB2FF[]; extern const u8 BattleScript_MoveUsedIsConfusedNoMore[]; extern const u8 BattleScript_PrintPayDayMoneyString[]; extern const u8 BattleScript_WrapTurnDmg[]; @@ -162,7 +122,6 @@ extern const u8 BattleScript_NightmareTurnDmg[]; extern const u8 BattleScript_CurseTurnDmg[]; extern const u8 BattleScript_TargetPRLZHeal[]; extern const u8 BattleScript_MoveEffectSleep[]; -extern const u8 BattleScript_82DB374[]; extern const u8 BattleScript_YawnMakesAsleep[]; extern const u8 BattleScript_MoveEffectPoison[]; extern const u8 BattleScript_MoveEffectBurn[]; @@ -186,14 +145,6 @@ extern const u8 BattleScript_ShedSkinActivates[]; extern const u8 BattleScript_WeatherFormChanges[]; extern const u8 BattleScript_WeatherFormChangesLoop[]; extern const u8 BattleScript_CastformChange[]; -extern const u8 BattleScript_82DB4AF[]; -extern const u8 BattleScript_82DB4B8[]; -extern const u8 BattleScript_82DB4BE[]; -extern const u8 BattleScript_82DB4C1[]; -extern const u8 BattleScript_82DB4CD[]; -extern const u8 BattleScript_82DB510[]; -extern const u8 BattleScript_82DB51B[]; -extern const u8 BattleScript_82DB51C[]; extern const u8 BattleScript_DroughtActivates[]; extern const u8 BattleScript_TookAttack[]; extern const u8 BattleScript_SturdyPreventsOHKO[]; @@ -221,12 +172,9 @@ extern const u8 BattleScript_ApplySecondaryEffect[]; extern const u8 BattleScript_SynchronizeActivates[]; extern const u8 BattleScript_NoItemSteal[]; extern const u8 BattleScript_AbilityCuredStatus[]; -extern const u8 BattleScript_82DB695[]; extern const u8 BattleScript_IgnoresAndUsesRandomMove[]; extern const u8 BattleScript_MoveUsedLoafingAround[]; -extern const u8 BattleScript_82DB6C7[]; extern const u8 BattleScript_IgnoresAndFallsAsleep[]; -extern const u8 BattleScript_82DB6F0[]; extern const u8 BattleScript_SubstituteFade[]; extern const u8 BattleScript_BerryCurePrlzEnd2[]; extern const u8 BattleScript_BerryCureParRet[]; @@ -252,18 +200,8 @@ extern const u8 BattleScript_SelectingNotAllowedMoveChoiceItem[]; extern const u8 BattleScript_HangedOnMsg[]; extern const u8 BattleScript_BerryConfuseHealEnd2[]; extern const u8 BattleScript_BerryStatRaiseEnd2[]; -extern const u8 BattleScript_82DB85B[]; extern const u8 BattleScript_BerryFocusEnergyEnd2[]; extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[]; -extern const u8 BattleScript_82DB87D[]; -extern const u8 BattleScript_82DB881[]; -extern const u8 BattleScript_82DB887[]; -extern const u8 BattleScript_82DB89D[]; -extern const u8 BattleScript_82DB8BE[]; -extern const u8 BattleScript_82DB8E0[]; -extern const u8 BattleScript_82DB8F3[]; -extern const u8 BattleScript_82DB973[]; -extern const u8 BattleScript_82DB992[]; extern const u8 BattleScript_AskIfWantsToForfeitMatch[]; extern const u8 BattleScript_PrintPlayerForfeited[]; extern const u8 BattleScript_PrintPlayerForfeitedLinkBattle[]; @@ -271,27 +209,18 @@ extern const u8 BattleScript_BallThrow[]; extern const u8 BattleScript_BallThrowByWally[]; extern const u8 BattleScript_SafariBallThrow[]; extern const u8 BattleScript_SuccessBallThrow[]; -extern const u8 BattleScript_82DBD92[]; -extern const u8 BattleScript_82DBDA5[]; -extern const u8 BattleScript_82DBDC2[]; -extern const u8 BattleScript_82DBDC3[]; extern const u8 BattleScript_WallyBallThrow[]; extern const u8 BattleScript_ShakeBallThrow[]; -extern const u8 BattleScript_82DBE01[]; extern const u8 BattleScript_TrainerBallBlock[]; -extern const u8 BattleScript_82DBE12[]; -extern const u8 BattleScript_82DBE1C[]; -extern const u8 BattleScript_82DBE4B[]; -extern const u8 BattleScript_82DBE6F[]; -extern const u8 BattleScript_82DBE91[]; extern const u8 BattleScript_RunByUsingItem[]; extern const u8 BattleScript_ActionWatchesCarefully[]; extern const u8 BattleScript_ActionGetNear[]; extern const u8 BattleScript_ActionThrowPokeblock[]; -extern const u8 BattleScript_82DBEE3[]; extern const u8 gUnknown_81D9192[]; extern const u8 gUnknown_81D9180[]; extern const u8 BattleScript_IntimidateActivates[]; extern const u8 BattleScript_IntimidateActivatesEnd3[]; +extern const u8 BattleScript_IgnoresWhileAsleep[]; +extern const u8 BattleScript_IgnoresAndHitsItself[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/battle_util.h b/include/battle_util.h index dfe7be60a..797f0ef52 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -52,45 +52,41 @@ #define BS_GET_PLAYER2 13 #define BS_GET_OPPONENT2 14 -u8 GetBattleBank(u8 caseId); -void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move); -void PressurePPLoseOnUsingPerishSong(u8 bankAtk); -void PressurePPLoseOnUsingImprison(u8 bankAtk); -void MarkAllBattlersForControllerExec(void); // unused -void MarkBattlerForControllerExec(u8 bank); -void sub_803F850(u8 arg0); -void CancelMultiTurnMoves(u8 bank); -bool8 WasUnableToUseMove(u8 bank); -void PrepareStringBattle(u16 stringId, u8 bank); +u8 GetBattlerForBattleScript(u8 caseId); +void PressurePPLose(u8 target, u8 attacker, u16 move); +void PressurePPLoseOnUsingImprison(u8 attacker); +void PressurePPLoseOnUsingPerishSong(u8 attacker); +void MarkAllBattlersForControllerExec(void); +void MarkBattlerForControllerExec(u8 battlerId); +void sub_8017298(u8 arg0); +void CancelMultiTurnMoves(u8 battler); +bool8 WasUnableToUseMove(u8 battler); +void PrepareStringBattle(u16 stringId, u8 battler); void ResetSentPokesToOpponentValue(void); -void sub_803F9EC(u8 bank); -void sub_803FA70(u8 bank); -void BattleScriptPush(const u8* bsPtr); +void sub_8017434(u8 battler); +void sub_80174B8(u8 battler); +void BattleScriptPush(const u8 *bsPtr); void BattleScriptPushCursor(void); void BattleScriptPop(void); u8 TrySetCantSelectMoveBattleScript(void); -u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check); +u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check); bool8 AreAllMovesUnusable(void); -u8 GetImprisonedMovesCount(u8 bank, u16 move); +u8 GetImprisonedMovesCount(u8 battlerId, u16 move); u8 DoFieldEndTurnEffects(void); u8 DoBattlerEndTurnEffects(void); bool8 HandleWishPerishSongOnTurnEnd(void); bool8 HandleFaintedMonActions(void); void TryClearRageStatuses(void); u8 AtkCanceller_UnableToUseMove(void); -bool8 sub_80423F4(u8 bank, u8 r1, u8 r2); -u8 CastformDataTypeChange(u8 bank); -u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg); -void BattleScriptExecute(const u8* BS_ptr); -void BattleScriptPushCursorAndCallback(const u8* BS_ptr); -u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn); -void ClearFuryCutterDestinyBondGrudge(u8 bank); +bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2); +u8 CastformDataTypeChange(u8 battler); +u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveArg); +void BattleScriptExecute(const u8 *BS_ptr); +void BattleScriptPushCursorAndCallback(const u8 *BS_ptr); +u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn); +void ClearFuryCutterDestinyBondGrudge(u8 battlerId); void HandleAction_RunBattleScript(void); -u8 GetMoveTarget(u16 move, u8 useMoveTarget); +u8 GetMoveTarget(u16 move, u8 setTarget); u8 IsMonDisobedient(void); -void MarkBattlerForControllerExec(u8 battlerId); -void sub_80174B8(u8 battlerId); -void sub_8017298(u8 battlerId); -bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2); #endif // GUARD_BATTLE_UTIL_H diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 78c1583b4..6942fee83 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -77,4 +77,10 @@ #define STAT_ACC 6 // only in battles #define STAT_EVASION 7 // only in battles +#define NUM_STATS 6 +#define NUM_BATTLE_STATS 8 + +// Shiny odds +#define SHINY_ODDS 8 // Actual probability is SHINY_ODDS/65536 + #endif // GUARD_CONSTANTS_POKEMON_H -- cgit v1.2.3 From 742a7ee1beab323e30d60c599697a2a831c4f4de Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Fri, 2 Aug 2019 07:28:09 +0800 Subject: ported reshow_battle_screen from pokeem --- include/battle.h | 1 + include/battle_anim.h | 2 ++ include/battle_gfx_sfx_util.h | 4 ++-- include/bg.h | 14 ++++++++++++++ include/link.h | 2 ++ include/reshow_battle_screen.h | 2 +- 6 files changed, 22 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/battle.h b/include/battle.h index 357bbbd8c..1e50a5dc1 100644 --- a/include/battle.h +++ b/include/battle.h @@ -795,6 +795,7 @@ void ApplyPlayerChosenFrameToBattleMenu(void); bool8 LoadChosenBattleElement(u8 caseId); void DrawMainBattleBackground(void); void task00_0800F6FC(u8 taskId); +void sub_800F324(void); enum { diff --git a/include/battle_anim.h b/include/battle_anim.h index fb744c316..8e4f2a7ea 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -129,6 +129,7 @@ void oamt_add_pos2_onto_pos1(struct Sprite *sprite); u8 GetBattlerSpriteDefault_Y(u8 bank); u8 sub_80A82E4(u8 bank); u8 GetSubstituteSpriteDefault_Y(u8 bank); +u8 GetGhostSpriteDefault_Y(u8 battlerId); // battle_anim_80A9C70.s void LaunchStatusAnimation(u8 bank, u8 statusAnimId); @@ -148,6 +149,7 @@ void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); bool8 IsContest(void); void sub_80759DC(u8 spriteId); bool8 IsBattlerSpritePresent(u8 battlerId); +u8 GetBattlerSpriteSubpriority(u8 battlerId); // battle_anim_mon_movement.c void AnimTask_ShakeMon(u8 taskId); diff --git a/include/battle_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h index 39cea7ad1..667686af8 100644 --- a/include/battle_gfx_sfx_util.h +++ b/include/battle_gfx_sfx_util.h @@ -12,9 +12,9 @@ bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn); bool8 mplay_80342A4(u8 battlerId); void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId); void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId); -void DecompressGhostFrontPic(u16 frontPicId, u8 battlerId); +void DecompressGhostFrontPic(struct Pokemon *unused, u8 battlerId); void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId); -void sub_8034750(u16 a1, u8 a2); +void DecompressTrainerBackPalette(u16 a1, u8 a2); void nullsub_16(u8 a1); void FreeTrainerFrontPicPaletteAndTile(u16 frontPicId); bool8 BattleLoadAllHealthBoxesGfx(u8 state); diff --git a/include/bg.h b/include/bg.h index 40c51167f..70ec38275 100644 --- a/include/bg.h +++ b/include/bg.h @@ -13,6 +13,20 @@ struct BGCntrlBitfield // for the I/O registers volatile u16 screenSize:2; }; +enum +{ + BG_ATTR_CHARBASEINDEX = 1, + BG_ATTR_MAPBASEINDEX, + BG_ATTR_SCREENSIZE, + BG_ATTR_PALETTEMODE, + BG_ATTR_MOSAIC, + BG_ATTR_WRAPAROUND, + BG_ATTR_PRIORITY, + BG_ATTR_METRIC, + BG_ATTR_TYPE, + BG_ATTR_BASETILE, +}; + enum { BG_CTRL_ATTR_VISIBLE = 1, diff --git a/include/link.h b/include/link.h index 190a9d96a..d816cfcf9 100644 --- a/include/link.h +++ b/include/link.h @@ -211,5 +211,7 @@ bool32 sub_800B270(void); void sub_800B388(void); void sub_8054A28(void); void sub_800B1F4(void); +void LoadWirelessStatusIndicatorSpriteGfx(void); +void CreateWirelessStatusIndicatorSprite(u8, u8); #endif // GUARD_LINK_H diff --git a/include/reshow_battle_screen.h b/include/reshow_battle_screen.h index 9d1ec30f2..cc20eed96 100644 --- a/include/reshow_battle_screen.h +++ b/include/reshow_battle_screen.h @@ -3,7 +3,7 @@ #include "global.h" -void nullsub_35(void); +void nullsub_44(void); void ReshowBattleScreenAfterMenu(void); #endif // GUARD_RESHOW_BATTLE_SCREEN_H -- cgit v1.2.3 From 6a063cf74ad8168e9080c1f3be20e5dfe3c3187c Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sat, 3 Aug 2019 06:55:42 +0800 Subject: ported battle_controller_opponent from pokeem and corrected lots of stuff --- include/battle.h | 43 ++++++++++++++++--------------------- include/battle_2.h | 2 +- include/battle_ai_script_commands.h | 8 ++++++- include/battle_anim.h | 6 +++++- include/battle_controllers.h | 7 ++++++ include/battle_interface.h | 2 ++ include/battle_tower.h | 2 ++ include/pokemon.h | 10 ++++----- include/trainer_tower.h | 1 + 9 files changed, 48 insertions(+), 33 deletions(-) (limited to 'include') diff --git a/include/battle.h b/include/battle.h index 1e50a5dc1..445902b39 100644 --- a/include/battle.h +++ b/include/battle.h @@ -2,8 +2,6 @@ #define GUARD_BATTLE_H #include "global.h" - -// should they be included here or included individually by every file? #include "constants/battle.h" #include "battle_util.h" #include "battle_script_commands.h" @@ -19,8 +17,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 BATTLE_BANKS_COUNT 4 - #define IDENTITY_PLAYER_MON1 0 #define IDENTITY_OPPONENT_MON1 1 #define IDENTITY_PLAYER_MON2 2 @@ -209,10 +205,10 @@ struct TrainerMonItemCustomMoves union TrainerMonPtr { - struct TrainerMonNoItemDefaultMoves* NoItemDefaultMoves; - struct TrainerMonNoItemCustomMoves* NoItemCustomMoves; - struct TrainerMonItemDefaultMoves* ItemDefaultMoves; - struct TrainerMonItemCustomMoves* ItemCustomMoves; + struct TrainerMonNoItemDefaultMoves *NoItemDefaultMoves; + struct TrainerMonNoItemCustomMoves *NoItemCustomMoves; + struct TrainerMonItemDefaultMoves *ItemDefaultMoves; + struct TrainerMonItemCustomMoves *ItemCustomMoves; }; struct Trainer @@ -278,7 +274,7 @@ struct DisableStruct /*0x1A*/ u8 unk1A[2]; }; -extern struct DisableStruct gDisableStructs[BATTLE_BANKS_COUNT]; +extern struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT]; struct ProtectStruct { @@ -318,7 +314,7 @@ struct ProtectStruct /* field_E */ u16 fieldE; }; -extern struct ProtectStruct gProtectStructs[BATTLE_BANKS_COUNT]; +extern struct ProtectStruct gProtectStructs[MAX_BATTLERS_COUNT]; struct SpecialStatus { @@ -340,7 +336,7 @@ struct SpecialStatus u8 field13; }; -extern struct SpecialStatus gSpecialStatuses[BATTLE_BANKS_COUNT]; +extern struct SpecialStatus gSpecialStatuses[MAX_BATTLERS_COUNT]; struct SideTimer { @@ -463,7 +459,7 @@ struct BattleResources struct BattleScriptsStack *AI_ScriptsStack; }; -extern struct BattleResources* gBattleResources; +extern struct BattleResources *gBattleResources; #define BATTLESCRIPTS_STACK (gBattleResources->battleScriptsStack) #define BATTLE_CALLBACKS_STACK (gBattleResources->battleCallbackStack) @@ -546,15 +542,12 @@ struct BattleStruct u8 field_8C; u8 field_8D; u8 stringMoveType; - u8 expGetterBank; + u8 expGetterBattlerId; u8 field_90; u8 field_91; - u8 field_92; - u8 field_93; - u8 wallyBattleState; - u8 wallyMovesState; - u8 wallyWaitFrames; - u8 wallyMoveFrames; + u8 AI_monToSwitchIntoId[MAX_BATTLERS_COUNT]; + 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; @@ -569,7 +562,6 @@ struct BattleStruct u8 field_B5; u8 field_B6; u8 atkCancellerTracker; - // void (*savedCallback)(void); u16 usedHeldItems[MAX_BATTLERS_COUNT]; u8 chosenItem[4]; // why is this an u8? u8 AI_itemType[2]; @@ -859,8 +851,7 @@ struct BattleHealthboxInfo u8 specialAnimActive : 1; //x40 u8 flag_x80 : 1; u8 field_1_x1 : 1; - u8 field_1_x1E : 4; - u8 field_1_x20 : 1; + u8 field_1_x1E : 5; u8 field_1_x40 : 1; u8 field_1_x80 : 1; u8 healthboxBounceSpriteId; @@ -879,7 +870,7 @@ struct BattleBarInfo { u8 healthboxSpriteId; s32 maxValue; - s32 currentValue; + s32 oldValue; s32 receivedValue; s32 currValue; }; @@ -930,11 +921,11 @@ extern u16 gBattle_WIN0H; extern u16 gBattle_WIN0V; extern u16 gBattle_WIN1H; extern u16 gBattle_WIN1V; -extern struct BattleSpritesGfx* gMonSpritesGfx; +extern struct BattleSpritesGfx *gMonSpritesGfx; extern u8 gBattleOutcome; extern u16 gLastUsedItem; extern u32 gBattleTypeFlags; -extern struct MonSpritesGfx* gMonSpritesGfxPtr; +extern struct MonSpritesGfx *gMonSpritesGfxPtr; extern u16 gTrainerBattleOpponent_A; extern u16 gMoveToLearn; extern u16 gBattleMovePower; @@ -991,5 +982,7 @@ extern u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT]; extern u8 gCurrentActionFuncId; extern u8 gCurrMovePos; extern u8 gChosenMovePos; +extern u8 gUnknown_3004FFC[MAX_BATTLERS_COUNT]; +extern u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT]; #endif // GUARD_BATTLE_H diff --git a/include/battle_2.h b/include/battle_2.h index cf20bcd25..e3caeee3d 100644 --- a/include/battle_2.h +++ b/include/battle_2.h @@ -10,7 +10,6 @@ void CB2_QuitRecordedBattle(void); void sub_8038528(struct Sprite* sprite); void sub_8038A04(void); // unused void VBlankCB_Battle(void); -void nullsub_17(void); void sub_8038B74(struct Sprite *sprite); void sub_8038D64(void); u32 sub_80391E0(u8 arrayId, u8 caseId); @@ -48,6 +47,7 @@ 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]; diff --git a/include/battle_ai_script_commands.h b/include/battle_ai_script_commands.h index 12df776be..aa51838e5 100644 --- a/include/battle_ai_script_commands.h +++ b/include/battle_ai_script_commands.h @@ -3,13 +3,19 @@ #include "global.h" +// return values for BattleAI_ChooseMoveOrAction +// 0 - 3 are move idx +#define AI_CHOICE_FLEE 4 +#define AI_CHOICE_WATCH 5 + void BattleAI_HandleItemUseBeforeAISetup(void); -void BattleAI_SetupAIData(u8 defaultScoreMoves); +void BattleAI_SetupAIData(void); u8 BattleAI_ChooseMoveOrAction(void); void ClearBankMoveHistory(u8 bank); void RecordAbilityBattle(u8 bank, u8 abilityId); void ClearBankAbilityHistory(u8 bank); void RecordItemEffectBattle(u8 bank, u8 itemEffect); void ClearBankItemEffectHistory(u8 bank); +u8 BattleAI_GetAIActionToUse(void); #endif // GUARD_BATTLE_AI_SCRIPT_COMMANDS_H diff --git a/include/battle_anim.h b/include/battle_anim.h index 8e4f2a7ea..ef179cdd1 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -96,6 +96,9 @@ void sub_80A6B90(struct BattleAnimBgData *, u32 arg1); u8 sub_80A82E4(u8 bank); bool8 AnimateBallThrow(struct Sprite *sprite); +// battle_anim_special +void sub_80F1720(u8 battler, struct Pokemon *mon); + enum { BATTLER_COORD_X, @@ -125,7 +128,7 @@ bool8 IsDoubleBattle(void); u8 sub_80A6D94(void); u8 sub_80A8364(u8); void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*)); -void oamt_add_pos2_onto_pos1(struct Sprite *sprite); +void SetSpritePrimaryCoordsFromSecondaryCoords(struct Sprite *sprite); u8 GetBattlerSpriteDefault_Y(u8 bank); u8 sub_80A82E4(u8 bank); u8 GetSubstituteSpriteDefault_Y(u8 bank); @@ -150,6 +153,7 @@ bool8 IsContest(void); void sub_80759DC(u8 spriteId); bool8 IsBattlerSpritePresent(u8 battlerId); u8 GetBattlerSpriteSubpriority(u8 battlerId); +void StartAnimLinearTranslation(struct Sprite *sprite); // battle_anim_mon_movement.c void AnimTask_ShakeMon(u8 taskId); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 758a6e52f..e49911cf1 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -174,6 +174,7 @@ enum CONTROLLER_CMDS_COUNT }; +extern struct UnusedControllerStruct gUnknown_2022870; // general functions void HandleLinkBattleSetup(void); @@ -243,6 +244,7 @@ void SetControllerToRecordedPlayer(void); // opponent controller void SetControllerToOpponent(void); +void OpponentBufferExecCompleted(void); // player partner controller void SetControllerToPlayerPartner(void); @@ -255,6 +257,11 @@ void SetControllerToPokedude(void); // oak controller void SetControllerToOakOrOldman(void); +bool8 sub_80EB2E0(u8); +void sub_80EB2F4(u8); +void sub_80E8570(void); +void sub_80E85C0(void); +void sub_80E8598(void); // link opponent void SetControllerToLinkOpponent(void); diff --git a/include/battle_interface.h b/include/battle_interface.h index bdcb4d80e..162faa8cb 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -61,6 +61,7 @@ enum HEALTHBOX_SAFARI_BALLS_TEXT }; +void Task_HidePartyStatusSummary(u8 taskId); u8 CreateBattlerHealthboxSprites(u8 bank); u8 CreateSafariPlayerHealthboxSprites(void); void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 receivedValue); @@ -80,5 +81,6 @@ u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale); u8 GetHPBarLevel(s16 hp, s16 maxhp); void sub_80496C0(u8 spriteId, struct Pokemon *mon); void sub_804981C(u8 spriteId, u8); +s32 MoveBattleBar(u8 battler, u8 healthboxSpriteId, u8 whichBar, u8 arg3); #endif // GUARD_BATTLE_INTERFACE_H diff --git a/include/battle_tower.h b/include/battle_tower.h index ec00d1f96..78e3f8e43 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -6,5 +6,7 @@ u16 sub_8164FCC(u8, u8); void sub_80E7524(u32 *); void ValidateEReaderTrainer(void); +u8 GetBattleTowerTrainerFrontSpriteId(void); +u8 GetEreaderTrainerFrontSpriteId(void); #endif //GUARD_BATTLE_TOWER_H diff --git a/include/pokemon.h b/include/pokemon.h index 6c20b967d..d3a7522c9 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -50,7 +50,7 @@ #define MON_DATA_SPATK_IV 43 #define MON_DATA_SPDEF_IV 44 #define MON_DATA_IS_EGG 45 -#define MON_DATA_ALT_ABILITY 46 +#define MON_DATA_ABILITY_NUM 46 #define MON_DATA_TOUGH 47 #define MON_DATA_SHEEN 48 #define MON_DATA_OT_GENDER 49 @@ -244,7 +244,7 @@ struct PokemonSubstruct3 /* 0x05 */ u32 spAttackIV:5; /* 0x06 */ u32 spDefenseIV:5; /* 0x07 */ u32 isEgg:1; - /* 0x07 */ u32 altAbility:1; + /* 0x07 */ u32 abilityNum:1; /* 0x08 */ u32 coolRibbon:3; /* 0x08 */ u32 beautyRibbon:3; @@ -342,7 +342,7 @@ struct BattleTowerPokemon u32 spAttackIV:5; u32 spDefenseIV:5; u32 gap:1; - u32 altAbility:1; + u32 abilityNum:1; /*0x1C*/ u32 personality; /*0x20*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; /*0x2B*/ u8 friendship; @@ -366,7 +366,7 @@ struct BattlePokemon /*0x16*/ u32 spAttackIV:5; /*0x17*/ u32 spDefenseIV:5; /*0x17*/ u32 isEgg:1; - /*0x17*/ u32 altAbility:1; + /*0x17*/ u32 abilityNum:1; /*0x18*/ s8 statStages[BATTLE_STATS_NO]; /*0x20*/ u8 ability; /*0x21*/ u8 type1; @@ -598,7 +598,7 @@ u8 GiveMonToPlayer(struct Pokemon *mon); u8 CalculatePlayerPartyCount(void); u8 CalculateEnemyPartyCount(void); u8 GetMonsStateToDoubles(void); -u8 GetAbilityBySpecies(u16 species, bool8 altAbility); +u8 GetAbilityBySpecies(u16 species, bool8 abilityNum); u8 GetMonAbility(struct Pokemon *mon); u8 GetSecretBaseTrainerPicIndex(void); u8 GetSecretBaseTrainerNameIndex(void); diff --git a/include/trainer_tower.h b/include/trainer_tower.h index 5e7a90208..9cca2ea76 100644 --- a/include/trainer_tower.h +++ b/include/trainer_tower.h @@ -4,5 +4,6 @@ void PrintTrainerTowerRecords(void); void InitTrainerTowerBattleStruct(void); void FreeTrainerTowerBattleStruct(void); +u8 GetTrainerTowerTrainerFrontSpriteId(void); #endif //GUARD_TRAINER_TOWER_H -- cgit v1.2.3 From 8fed9a5f205cec0d86149a908d64f73316cbb1f4 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sat, 3 Aug 2019 07:44:51 +0800 Subject: quick review on battle_ai_script_commands --- include/battle.h | 1 + include/battle_ai_script_commands.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/battle.h b/include/battle.h index 445902b39..cf975c6a5 100644 --- a/include/battle.h +++ b/include/battle.h @@ -984,5 +984,6 @@ extern u8 gCurrMovePos; extern u8 gChosenMovePos; extern u8 gUnknown_3004FFC[MAX_BATTLERS_COUNT]; extern u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT]; +extern u16 gDynamicBasePower; #endif // GUARD_BATTLE_H diff --git a/include/battle_ai_script_commands.h b/include/battle_ai_script_commands.h index aa51838e5..94cbcce15 100644 --- a/include/battle_ai_script_commands.h +++ b/include/battle_ai_script_commands.h @@ -16,6 +16,6 @@ void RecordAbilityBattle(u8 bank, u8 abilityId); void ClearBankAbilityHistory(u8 bank); void RecordItemEffectBattle(u8 bank, u8 itemEffect); void ClearBankItemEffectHistory(u8 bank); -u8 BattleAI_GetAIActionToUse(void); +u8 BattleAI_ChooseMoveOrAction(void); #endif // GUARD_BATTLE_AI_SCRIPT_COMMANDS_H -- cgit v1.2.3 From 5568895b043dc37e95be0e99787541d78a7c6fee Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sat, 3 Aug 2019 23:59:41 +0800 Subject: ported battle_ai_switch_items from pokeem --- include/battle.h | 5 ++--- include/battle_2.h | 2 ++ 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/battle.h b/include/battle.h index cf975c6a5..e8731ddfb 100644 --- a/include/battle.h +++ b/include/battle.h @@ -175,9 +175,6 @@ struct TrainerMonNoItemDefaultMoves u16 species; }; -u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg); -u8 GetBattlerSide(u8 bank); - struct TrainerMonItemDefaultMoves { u16 iv; @@ -985,5 +982,7 @@ extern u8 gChosenMovePos; extern u8 gUnknown_3004FFC[MAX_BATTLERS_COUNT]; extern u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT]; extern u16 gDynamicBasePower; +extern u16 gLastLandedMoves[MAX_BATTLERS_COUNT]; +extern u8 gLastHitBy[MAX_BATTLERS_COUNT]; #endif // GUARD_BATTLE_H diff --git a/include/battle_2.h b/include/battle_2.h index e3caeee3d..19f59fc75 100644 --- a/include/battle_2.h +++ b/include/battle_2.h @@ -59,4 +59,6 @@ extern const u8 gStatusConditionString_LoveJpn[8]; extern const u8 * const gStatusConditionStringsTable[7][2]; +extern const u8 gTypeEffectiveness[336]; + #endif // GUARD_BATTLE_2_H -- cgit v1.2.3 From b9d547a02f615b991713158bb7068ce0d7169088 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Mon, 5 Aug 2019 08:15:58 +0800 Subject: ported battle_controller_player from pokeem and matched several new functions --- include/battle.h | 8 ++- include/battle_2.h | 64 ------------------------ include/battle_anim.h | 4 ++ include/battle_controllers.h | 13 +++-- include/battle_main.h | 103 +++++++++++++++++++++++++++++++++++++++ include/battle_script_commands.h | 1 + include/data2.h | 2 +- include/link.h | 4 +- include/party_menu.h | 5 +- include/pokemon.h | 2 + include/pokemon_special_anim.h | 9 ++++ include/strings.h | 10 ++++ 12 files changed, 149 insertions(+), 76 deletions(-) delete mode 100644 include/battle_2.h create mode 100644 include/battle_main.h create mode 100644 include/pokemon_special_anim.h (limited to 'include') diff --git a/include/battle.h b/include/battle.h index e8731ddfb..78b5f4c20 100644 --- a/include/battle.h +++ b/include/battle.h @@ -5,7 +5,7 @@ #include "constants/battle.h" #include "battle_util.h" #include "battle_script_commands.h" -#include "battle_2.h" +#include "battle_main.h" #include "battle_ai_switch_items.h" #include "battle_gfx_sfx_util.h" #include "battle_util2.h" @@ -385,10 +385,6 @@ extern u8 gActiveBattler; extern u8 gBattlerTarget; extern u8 gAbsentBattlerFlags; -// TODO: move these to constants/battle.h -#define MAX_BATTLERS_COUNT 4 -#define BIT_FLANK 2 - // script's table id to bit #define AI_SCRIPT_CHECK_BAD_MOVE (1 << 0) #define AI_SCRIPT_TRY_TO_FAINT (1 << 1) @@ -984,5 +980,7 @@ extern u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT]; extern u16 gDynamicBasePower; extern u16 gLastLandedMoves[MAX_BATTLERS_COUNT]; extern u8 gLastHitBy[MAX_BATTLERS_COUNT]; +extern u8 gMultiUsePlayerCursor; +extern u8 gNumberOfMovesToChoose; #endif // GUARD_BATTLE_H diff --git a/include/battle_2.h b/include/battle_2.h deleted file mode 100644 index 19f59fc75..000000000 --- a/include/battle_2.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef GUARD_BATTLE_2_H -#define GUARD_BATTLE_2_H - -#include "global.h" -#include "sprite.h" - -void CB2_InitBattle(void); -void BattleMainCB2(void); -void CB2_QuitRecordedBattle(void); -void sub_8038528(struct Sprite* sprite); -void sub_8038A04(void); // unused -void VBlankCB_Battle(void); -void sub_8038B74(struct Sprite *sprite); -void sub_8038D64(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_8039AD8(struct Sprite *sprite); -void sub_8039B2C(struct Sprite *sprite); -void sub_8039B58(struct Sprite *sprite); -void sub_8039BB4(struct Sprite *sprite); -void sub_80105DC(struct Sprite *sprite); -void sub_8039C00(struct Sprite *sprite); -void dp11b_obj_instanciate(u8 bank, u8 b, s8 c, s8 d); -void dp11b_obj_free(u8 bank, bool8 b); -void sub_8039E44(struct Sprite *sprite); -void sub_8039E60(struct Sprite *sprite); -void sub_8039E84(struct Sprite *sprite); -void sub_8039E9C(struct Sprite *sprite); -void nullsub_20(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_803BDA0(u8 bank); -void SwapTurnOrder(u8 id1, u8 id2); -u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, 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]; - -#endif // GUARD_BATTLE_2_H diff --git a/include/battle_anim.h b/include/battle_anim.h index ef179cdd1..35d144bac 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -133,6 +133,8 @@ u8 GetBattlerSpriteDefault_Y(u8 bank); u8 sub_80A82E4(u8 bank); u8 GetSubstituteSpriteDefault_Y(u8 bank); u8 GetGhostSpriteDefault_Y(u8 battlerId); +void sub_8072E48(u8 battlerId, u8); +void sub_8073128(u8); // battle_anim_80A9C70.s void LaunchStatusAnimation(u8 bank, u8 statusAnimId); @@ -154,6 +156,8 @@ void sub_80759DC(u8 spriteId); bool8 IsBattlerSpritePresent(u8 battlerId); u8 GetBattlerSpriteSubpriority(u8 battlerId); void StartAnimLinearTranslation(struct Sprite *sprite); +void sub_80755B8(struct Sprite *sprite); +u8 sub_80768B0(u8 battlerId); // battle_anim_mon_movement.c void AnimTask_ShakeMon(u8 taskId); diff --git a/include/battle_controllers.h b/include/battle_controllers.h index e49911cf1..4ed292e04 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -82,6 +82,9 @@ enum #define INSTANT_HP_BAR_DROP 32767 +// Special return values in gBattleBufferB from Battle Controller functions. +#define RET_VALUE_LEVELED_UP 11 + struct UnusedControllerStruct { u8 field_0 : 7; @@ -227,17 +230,20 @@ void BtlController_EmitResetActionMoveSelection(u8 bufferId, u8 caseId); void BtlController_EmitCmd55(u8 bufferId, u8 arg1); // player controller +void nullsub_13(void); void SetControllerToPlayer(void); void PlayerHandleGetRawMonData(void); -void sub_80587B0(void); -void sub_805CC00(struct Sprite *sprite); +void sub_80335F8(struct Sprite *sprite); void SetCB2ToReshowScreenAfterMenu(void); void SetCB2ToReshowScreenAfterMenu2(void); void c3_0802FDF4(u8 taskId); void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused); void ActionSelectionDestroyCursorAt(u8 cursorPos); void InitMoveSelectionsVarsAndStrings(void); -void nullsub_13(void); +void sub_802F6A8(void); +void MoveSelectionCreateCursorAt(u8 cursorPos, u8 arg1); +void MoveSelectionDestroyCursorAt(u8 cursorPos); +void HandleInputChooseMove(void); // recorded player controller void SetControllerToRecordedPlayer(void); @@ -262,6 +268,7 @@ void sub_80EB2F4(u8); void sub_80E8570(void); void sub_80E85C0(void); void sub_80E8598(void); +void sub_80E7988(void); // link opponent void SetControllerToLinkOpponent(void); diff --git a/include/battle_main.h b/include/battle_main.h new file mode 100644 index 000000000..f05c08df2 --- /dev/null +++ b/include/battle_main.h @@ -0,0 +1,103 @@ +#ifndef GUARD_BATTLE_MAIN_H +#define GUARD_BATTLE_MAIN_H + +struct TrainerMoney +{ + u8 classId; + u8 value; +}; + +struct UnknownPokemonStruct4 +{ + /*0x00*/ u16 species; + /*0x02*/ u16 heldItem; + /*0x04*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; + /*0x0F*/ u8 level; + /*0x10*/ u16 hp; + /*0x12*/ u16 maxhp; + /*0x14*/ u32 status; + /*0x18*/ u32 personality; + /*0x1C*/ u8 gender; + /*0x1D*/ u8 language; +}; + +#define TYPE_NAME_LENGTH 6 +#define ABILITY_NAME_LENGTH 12 + +// 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 + +// defines for the 'DoBounceEffect' function +#define BOUNCE_MON 0x0 +#define BOUNCE_HEALTHBOX 0x1 + +void CB2_InitBattle(void); +void BattleMainCB2(void); +void CB2_QuitRecordedBattle(void); +void sub_8038528(struct Sprite* sprite); +void sub_8038A04(void); // unused +void VBlankCB_Battle(void); +void sub_8038B74(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); +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_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 sub_8039E9C(struct Sprite *sprite); +void nullsub_20(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_803BDA0(u8 bank); +void SwapTurnOrder(u8 id1, u8 id2); +u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, 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]; + +#endif // GUARD_BATTLE_MAIN_H diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index d4cb75e91..6ff287872 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -61,6 +61,7 @@ void BattleCreateYesNoCursorAt(u8 cursorPosition); void BufferMoveToLearnIntoBattleTextBuff2(void); void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags); bool8 UproarWakeUpCheck(u8 bank); +bool32 IsMonGettingExpSentOut(void); extern void (* const gBattleScriptingCommandsTable[])(void); extern const u8 gUnknown_0831C494[][4]; diff --git a/include/data2.h b/include/data2.h index 4378e8226..1035d78dc 100644 --- a/include/data2.h +++ b/include/data2.h @@ -30,7 +30,7 @@ extern const struct CompressedSpritePalette gMonPaletteTable[]; extern const struct CompressedSpritePalette gMonShinyPaletteTable[]; extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; -extern const struct CompressedSpritePalette gUnknown_8239FD4[]; +extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow; extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow; diff --git a/include/link.h b/include/link.h index d816cfcf9..5f8d8f161 100644 --- a/include/link.h +++ b/include/link.h @@ -192,14 +192,14 @@ void sub_800E0E8(void); bool8 sub_800A520(void); bool8 sub_8010500(void); void sub_800DFB4(u8, u8); -void sub_800ADF8(void); +void sub_800AB9C(void); void sub_800B488(void); void sub_8009734(void); void sub_800A620(void); void sub_8011BD0(void); u8 sub_800ABAC(void); u8 sub_800ABBC(void); -void sub_800AC34(void); +void sub_800AAC0(void); void OpenLink(void); bool8 IsLinkMaster(void); void CheckShouldAdvanceLinkState(void); diff --git a/include/party_menu.h b/include/party_menu.h index 3c88f75e0..84d9edb76 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -29,7 +29,9 @@ struct Struct203B0A0 }; extern struct Struct203B0A0 gUnknown_203B0A0; - +extern u8 gUnknown_203B0C0; +extern u8 gUnknown_203B0C1; +extern u8 gUnknown_203B0DC[3]; extern void (*gUnknown_3005E98)(u8 taskId, TaskFunc func); bool8 FieldCallback_PrepareFadeInFromMenu(void); @@ -64,5 +66,6 @@ u8 GetItemEffectType(u16 itemId); u8 pokemon_order_func(u8); void sub_8127CAC(void); void sub_8127DA8(u8 battlerId, u8 multiplayerFlag); +void OpenPartyMenuInBattle(u8 arg); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon.h b/include/pokemon.h index d3a7522c9..ae966feb2 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -94,6 +94,8 @@ #define MON_DATA_SPATK2 87 #define MON_DATA_SPDEF2 88 +#define MAX_LEVEL 100 + #define OT_ID_RANDOM_NO_SHINY 2 #define OT_ID_PRESET 1 #define OT_ID_PLAYER_ID 0 diff --git a/include/pokemon_special_anim.h b/include/pokemon_special_anim.h new file mode 100644 index 000000000..4ccccaada --- /dev/null +++ b/include/pokemon_special_anim.h @@ -0,0 +1,9 @@ +#ifndef GUARD_POKEMON_SPECIAL_ANIM_H +#define GUARD_POKEMON_SPECIAL_ANIM_H + +#include "global.h" + +void sub_811E5B8(u16, u16, u16, u16, u16, u16); +bool8 sub_811E680(void); + +#endif // GUARD_POKEMON_SPECIAL_ANIM_H diff --git a/include/strings.h b/include/strings.h index 5197a56f7..2b914dfc8 100644 --- a/include/strings.h +++ b/include/strings.h @@ -213,4 +213,14 @@ extern const u8 gUnknown_83FDA4C[]; extern const u8 gUnknown_83FE747[]; extern const u8 gUnknown_83FE6E6[]; +// battle_controller_player +extern const u8 gText_BattleSwitchWhich[]; +extern const u8 gUnknown_83FE770[]; +extern const u8 gText_MoveInterfacePP[]; +extern const u8 gUnknown_83FE770[]; +extern const u8 gText_MoveInterfaceType[]; +extern const u8 gText_LinkStandby[]; +extern const u8 gUnknown_83FE725[]; +extern const u8 gText_WhatWillPkmnDo[]; + #endif //GUARD_STRINGS_H -- cgit v1.2.3 From 5f6a55e4fda5d038b3864b23136eb7cd9a8bdbcf Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Thu, 22 Aug 2019 14:21:56 +0800 Subject: battle_controller_link_opponent --- include/battle_main.h | 1 - include/pokemon.h | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) (limited to 'include') diff --git a/include/battle_main.h b/include/battle_main.h index f05c08df2..86de8f39a 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -68,7 +68,6 @@ void sub_8039E44(struct Sprite *sprite); void sub_8039E60(struct Sprite *sprite); void sub_8039E84(struct Sprite *sprite); void sub_8039E9C(struct Sprite *sprite); -void nullsub_20(void); void BeginBattleIntro(void); void SwitchInClearSetData(void); void FaintClearSetData(void); diff --git a/include/pokemon.h b/include/pokemon.h index ae966feb2..bf30766a0 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -624,7 +624,7 @@ void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4); void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies); bool8 sub_80435E0(void); bool8 GetLinkTrainerFlankId(u8 linkPlayerId); -s32 GetBankMultiplayerId(u16 a1); +s32 GetBattlerMultiplayerId(u16 a1); u8 GetTrainerEncounterMusicId(u16 trainer); void AdjustFriendship(struct Pokemon *mon, u8 event); void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies); -- cgit v1.2.3 From 23b2a0cc9f673363d4a6dc3d0c9e26fe50cce0c1 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Fri, 23 Aug 2019 02:32:15 +0800 Subject: battle_controller_link_partner --- include/data.h | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ include/data2.h | 62 --------------------------------------------------------- 2 files changed, 62 insertions(+), 62 deletions(-) create mode 100644 include/data.h delete mode 100644 include/data2.h (limited to 'include') diff --git a/include/data.h b/include/data.h new file mode 100644 index 000000000..6479237f2 --- /dev/null +++ b/include/data.h @@ -0,0 +1,62 @@ +#ifndef GUARD_DATA_H +#define GUARD_DATA_H + +#include "global.h" +#include "constants/species.h" + +struct MonCoords +{ + // This would use a bitfield, but some function + // uses it as a u8 and casting won't match. + u8 size; // u8 width:4, height:4; + u8 y_offset; +}; + +extern struct MonCoords gTrainerBackPicCoords[]; +extern struct MonCoords gTrainerFrontPicCoords[]; + +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[]; +extern const u16 gUnknown_82539D4[]; + +extern const struct CompressedSpriteSheet gMonFrontPicTable[]; +extern const struct CompressedSpriteSheet gMonBackPicTable[]; +extern const struct CompressedSpritePalette gMonPaletteTable[]; +extern const struct CompressedSpritePalette gMonShinyPaletteTable[]; +extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; +extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; +extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; + +extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow; +extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow; + +extern const u8 gEnemyMonElevation[NUM_SPECIES]; + +extern const u8 *const gBattleAnims_General[]; +extern const u8 *const gBattleAnims_Special[]; + +extern const union AnimCmd *const *const gTrainerBackAnimsPtrTable[]; +extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[]; + +extern const struct OamData gUnknown_824F010; +extern const struct OamData gUnknown_824F018; +extern const union AnimCmd *const gUnknown_82349BC[]; +extern const union AffineAnimCmd *const gUnknown_82348C8[]; +extern const union AffineAnimCmd *const gUnknown_8234944[]; +extern const struct SpriteFrameImage gUnknown_8234698[]; +extern const struct SpriteFrameImage gUnknown_82346B8[]; +extern const struct SpriteFrameImage gUnknown_82346D8[]; +extern const struct SpriteFrameImage gUnknown_82346F8[]; +extern const struct SpriteFrameImage gUnknown_8234718[]; +extern const struct SpriteFrameImage gUnknown_8234740[]; +extern const struct SpriteFrameImage gUnknown_8234768[]; +extern const struct SpriteFrameImage gUnknown_8234788[]; +extern const struct SpriteFrameImage gUnknown_82347A8[]; +extern const struct SpriteFrameImage gUnknown_82347C8[]; + +#endif // GUARD_DATA_H diff --git a/include/data2.h b/include/data2.h deleted file mode 100644 index 1035d78dc..000000000 --- a/include/data2.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef GUARD_DATA2_H -#define GUARD_DATA2_H - -#include "global.h" -#include "constants/species.h" - -struct MonCoords -{ - // This would use a bitfield, but some function - // uses it as a u8 and casting won't match. - u8 size; // u8 width:4, height:4; - u8 y_offset; -}; - -extern struct MonCoords gTrainerBackPicCoords[]; -extern struct MonCoords gTrainerFrontPicCoords[]; - -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[]; -extern const u16 gUnknown_82539D4[]; - -extern const struct CompressedSpriteSheet gMonFrontPicTable[]; -extern const struct CompressedSpriteSheet gMonBackPicTable[]; -extern const struct CompressedSpritePalette gMonPaletteTable[]; -extern const struct CompressedSpritePalette gMonShinyPaletteTable[]; -extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; -extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; -extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; - -extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow; -extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow; - -extern const u8 gEnemyMonElevation[NUM_SPECIES]; - -extern const u8 *const gBattleAnims_General[]; -extern const u8 *const gBattleAnims_Special[]; - -extern const union AnimCmd *const *const gTrainerBackAnimsPtrTable[]; -extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[]; - -extern const struct OamData gUnknown_824F010; -extern const struct OamData gUnknown_824F018; -extern const union AnimCmd *const gUnknown_82349BC[]; -extern const union AffineAnimCmd *const gUnknown_82348C8[]; -extern const union AffineAnimCmd *const gUnknown_8234944[]; -extern const struct SpriteFrameImage gUnknown_8234698[]; -extern const struct SpriteFrameImage gUnknown_82346B8[]; -extern const struct SpriteFrameImage gUnknown_82346D8[]; -extern const struct SpriteFrameImage gUnknown_82346F8[]; -extern const struct SpriteFrameImage gUnknown_8234718[]; -extern const struct SpriteFrameImage gUnknown_8234740[]; -extern const struct SpriteFrameImage gUnknown_8234768[]; -extern const struct SpriteFrameImage gUnknown_8234788[]; -extern const struct SpriteFrameImage gUnknown_82347A8[]; -extern const struct SpriteFrameImage gUnknown_82347C8[]; - -#endif // GUARD_DATA2_H -- cgit v1.2.3 From 3459fbb9a39d267c4d566e80cbab9a1d334135ab Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Fri, 23 Aug 2019 15:54:19 +0800 Subject: battle_script_commands data decomp --- include/battle_script_commands.h | 2 +- include/battle_scripts.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index 6ff287872..c75a029c2 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -54,7 +54,7 @@ void AI_CalcDmg(u8 bankAtk, u8 bankDef); u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef); u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility); -u8 BankGetTurnOrder(u8 bank); +u8 GetBattlerTurnOrderNum(u8 bank); void SetMoveEffect(bool8 primary, u8 certain); void BattleDestroyYesNoCursorAt(u8 cursorPosition); void BattleCreateYesNoCursorAt(u8 cursorPosition); diff --git a/include/battle_scripts.h b/include/battle_scripts.h index c592ba6b8..adbbd7e0c 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -222,5 +222,6 @@ extern const u8 BattleScript_IntimidateActivates[]; extern const u8 BattleScript_IntimidateActivatesEnd3[]; extern const u8 BattleScript_IgnoresWhileAsleep[]; extern const u8 BattleScript_IgnoresAndHitsItself[]; +extern const u8 BattleScript_MoveEffectRecoil[]; #endif // GUARD_BATTLE_SCRIPTS_H -- cgit v1.2.3 From 29d7ae94dea8e35d098b60a786368f391324221e Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sat, 24 Aug 2019 09:22:38 +0800 Subject: battle_script_commands symbol documentation --- include/battle.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/battle.h b/include/battle.h index 78b5f4c20..e922cc241 100644 --- a/include/battle.h +++ b/include/battle.h @@ -956,7 +956,7 @@ extern u32 gUnknown_2022B54; extern u8 gUnknown_2023DDC; extern u8 gBattlerAttacker; extern u8 gEffectBattler; -extern u8 gUnknown_2023D72; +extern u8 gMultiHitCounter; extern struct BattleScripting gBattleScripting; extern u8 gBattlerFainted; extern u32 gStatuses3[MAX_BATTLERS_COUNT]; -- cgit v1.2.3 From 41a7e6967dd4fd79eb01a45f4d77cf7c2ca11dc1 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sun, 25 Aug 2019 06:53:22 +0800 Subject: thru atk14 --- include/battle.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'include') diff --git a/include/battle.h b/include/battle.h index e922cc241..dc5a5ef00 100644 --- a/include/battle.h +++ b/include/battle.h @@ -982,5 +982,8 @@ extern u16 gLastLandedMoves[MAX_BATTLERS_COUNT]; extern u8 gLastHitBy[MAX_BATTLERS_COUNT]; extern u8 gMultiUsePlayerCursor; extern u8 gNumberOfMovesToChoose; +extern u16 gLastHitByType[MAX_BATTLERS_COUNT]; +extern s32 gHpDealt; +extern u16 gPauseCounterBattle; #endif // GUARD_BATTLE_H -- cgit v1.2.3 From 1d8232b919a973b8e58d6431b0fb66ae6459f17a Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sun, 25 Aug 2019 13:09:46 +0800 Subject: thru atk23 --- include/battle.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'include') diff --git a/include/battle.h b/include/battle.h index dc5a5ef00..fc92417da 100644 --- a/include/battle.h +++ b/include/battle.h @@ -432,12 +432,7 @@ struct BattleCallbacksStack struct StatsArray { - u16 hp; - u16 atk; - u16 def; - u16 spd; - u16 spAtk; - u16 spDef; + u16 stats[NUM_STATS]; }; struct BattleResources @@ -495,7 +490,7 @@ struct BattleStruct u8 turnCountersTracker; u8 wrappedMove[MAX_BATTLERS_COUNT * 2]; // Leftover from Ruby's ewram access. u8 moveTarget[MAX_BATTLERS_COUNT]; - u8 expGetterId; + u8 expGetterMonId; u8 field_11; u8 wildVictorySong; u8 dynamicMoveType; @@ -571,7 +566,7 @@ struct BattleStruct u16 castformPalette[MAX_BATTLERS_COUNT][16]; u8 wishPerishSongState; u8 wishPerishSongBattlerId; - u8 field_182; // overworldWeatherDone? + u8 field_182; u8 field_183; u8 field_184[124]; // currently unknown }; // size == 0x200 bytes @@ -985,5 +980,10 @@ extern u8 gNumberOfMovesToChoose; extern u16 gLastHitByType[MAX_BATTLERS_COUNT]; extern s32 gHpDealt; extern u16 gPauseCounterBattle; +extern u16 gPaydayMoney; +extern u16 gLockedMoves[MAX_BATTLERS_COUNT]; +extern u8 gCurrentTurnActionNumber; +extern u16 gExpShareExp; +extern u8 gLeveledUpInBattle; #endif // GUARD_BATTLE_H -- cgit v1.2.3 From db0d8e5bdbc0d043312ac78c5cec0ec53d7f45d6 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Mon, 26 Aug 2019 06:48:04 +0800 Subject: thru sub_8024398 --- include/battle.h | 48 ++--------------------------------------- include/battle_anim.h | 8 +++++++ include/battle_scripts.h | 1 + include/constants/battle_anim.h | 1 + include/party_menu.h | 10 +++++++++ include/pokemon.h | 2 +- 6 files changed, 23 insertions(+), 47 deletions(-) (limited to 'include') diff --git a/include/battle.h b/include/battle.h index fc92417da..144d0a3bb 100644 --- a/include/battle.h +++ b/include/battle.h @@ -657,52 +657,6 @@ extern struct BattleStruct *gBattleStruct; #define MOVE_EFFECT_AFFECTS_USER 0x40 #define MOVE_EFFECT_CERTAIN 0x80 -// table ids for general animations -#define B_ANIM_CASTFORM_CHANGE 0x0 -#define B_ANIM_STATS_CHANGE 0x1 -#define B_ANIM_SUBSTITUTE_FADE 0x2 -#define B_ANIM_SUBSTITUTE_APPEAR 0x3 -#define B_ANIM_x4 0x4 -#define B_ANIM_ITEM_KNOCKOFF 0x5 -#define B_ANIM_TURN_TRAP 0x6 -#define B_ANIM_ITEM_EFFECT 0x7 -#define B_ANIM_SMOKEBALL_ESCAPE 0x8 -#define B_ANIM_HANGED_ON 0x9 -#define B_ANIM_RAIN_CONTINUES 0xA -#define B_ANIM_SUN_CONTINUES 0xB -#define B_ANIM_SANDSTORM_CONTINUES 0xC -#define B_ANIM_HAIL_CONTINUES 0xD -#define B_ANIM_LEECH_SEED_DRAIN 0xE -#define B_ANIM_MON_HIT 0xF -#define B_ANIM_ITEM_STEAL 0x10 -#define B_ANIM_SNATCH_MOVE 0x11 -#define B_ANIM_FUTURE_SIGHT_HIT 0x12 -#define B_ANIM_DOOM_DESIRE_HIT 0x13 -#define B_ANIM_x14 0x14 -#define B_ANIM_INGRAIN_HEAL 0x15 -#define B_ANIM_WISH_HEAL 0x16 - -// special animations table -#define B_ANIM_LVL_UP 0x0 -#define B_ANIM_SWITCH_OUT_PLAYER_MON 0x1 -#define B_ANIM_SWITCH_OUT_OPPONENT_MON 0x2 -#define B_ANIM_BALL_THROW 0x3 -#define B_ANIM_SAFARI_BALL_THROW 0x4 -#define B_ANIM_SUBSTITUTE_TO_MON 0x5 -#define B_ANIM_MON_TO_SUBSTITUTE 0x6 - -// status animation table -#define B_ANIM_STATUS_PSN 0x0 -#define B_ANIM_STATUS_CONFUSION 0x1 -#define B_ANIM_STATUS_BRN 0x2 -#define B_ANIM_STATUS_INFATUATION 0x3 -#define B_ANIM_STATUS_SLP 0x4 -#define B_ANIM_STATUS_PRZ 0x5 -#define B_ANIM_STATUS_FRZ 0x6 -#define B_ANIM_STATUS_CURSED 0x7 -#define B_ANIM_STATUS_NIGHTMARE 0x8 -#define B_ANIM_STATUS_WRAPPED 0x9 - #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 @@ -985,5 +939,7 @@ extern u16 gLockedMoves[MAX_BATTLERS_COUNT]; extern u8 gCurrentTurnActionNumber; extern u16 gExpShareExp; extern u8 gLeveledUpInBattle; +extern u16 gLastResultingMoves[MAX_BATTLERS_COUNT]; +extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT]; #endif // GUARD_BATTLE_H diff --git a/include/battle_anim.h b/include/battle_anim.h index 35d144bac..3536e89f4 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -137,6 +137,14 @@ void sub_8072E48(u8 battlerId, u8); void sub_8073128(u8); // battle_anim_80A9C70.s +#define STAT_ANIM_PLUS1 15 +#define STAT_ANIM_PLUS2 39 +#define STAT_ANIM_MINUS1 22 +#define STAT_ANIM_MINUS2 46 +#define STAT_ANIM_MULTIPLE_PLUS1 55 +#define STAT_ANIM_MULTIPLE_PLUS2 56 +#define STAT_ANIM_MULTIPLE_MINUS1 57 +#define STAT_ANIM_MULTIPLE_MINUS2 58 void LaunchStatusAnimation(u8 bank, u8 statusAnimId); // battle_anim_8170478.s diff --git a/include/battle_scripts.h b/include/battle_scripts.h index adbbd7e0c..165b580de 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -223,5 +223,6 @@ extern const u8 BattleScript_IntimidateActivatesEnd3[]; extern const u8 BattleScript_IgnoresWhileAsleep[]; extern const u8 BattleScript_IgnoresAndHitsItself[]; extern const u8 BattleScript_MoveEffectRecoil[]; +extern const u8 BattleScript_FlushMessageBox[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 0a023f0c2..22793032f 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -370,6 +370,7 @@ #define B_ANIM_FOCUS_PUNCH_SETUP 0x14 #define B_ANIM_INGRAIN_HEAL 0x15 #define B_ANIM_WISH_HEAL 0x16 +#define B_ANIM_x19 0x19 // special animations table #define B_ANIM_LVL_UP 0x0 diff --git a/include/party_menu.h b/include/party_menu.h index 84d9edb76..d10d0e48a 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -13,6 +13,16 @@ enum { AILMENT_BRN }; +enum +{ + PARTY_CHOOSE_MON, + PARTY_MUST_CHOOSE_MON, + PARTY_CANT_SWITCH, + PARTY_USE_ITEM_ON, + PARTY_ABILITY_PREVENTS, + PARTY_GIVE_ITEM, +}; + struct Struct203B0A0 { MainCallback exitCallback; diff --git a/include/pokemon.h b/include/pokemon.h index bf30766a0..5ec4443c6 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -623,7 +623,7 @@ u16 SpeciesToCryId(u16 species); void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4); void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies); bool8 sub_80435E0(void); -bool8 GetLinkTrainerFlankId(u8 linkPlayerId); +bool16 GetLinkTrainerFlankId(u8 linkPlayerId); s32 GetBattlerMultiplayerId(u16 a1); u8 GetTrainerEncounterMusicId(u16 trainer); void AdjustFriendship(struct Pokemon *mon, u8 event); -- cgit v1.2.3 From 184066d1c106d6dc61621504abe808112b48674e Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Mon, 26 Aug 2019 14:38:40 +0800 Subject: thru atk6B --- include/battle.h | 3 ++- include/battle_main.h | 3 ++- include/battle_script_commands.h | 4 ++-- include/battle_scripts.h | 1 + include/constants/trainers.h | 12 ++++++++++++ include/overworld.h | 1 + include/pokemon_summary_screen.h | 36 ++++++++++++++++++++++++++++++++++++ include/strings.h | 3 +++ 8 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 include/constants/trainers.h create mode 100644 include/pokemon_summary_screen.h (limited to 'include') diff --git a/include/battle.h b/include/battle.h index 144d0a3bb..8abb95333 100644 --- a/include/battle.h +++ b/include/battle.h @@ -264,7 +264,7 @@ struct DisableStruct /*0x16*/ u8 isFirstTurn; /*0x17*/ u8 unk17; /*0x18*/ u8 truantCounter : 1; - /*0x18*/ u8 truantSwitchInHack : 1; + /*0x18*/ u8 truantSwitchInHack : 1; // unused? /*0x18*/ u8 unk18_a_2 : 2; /*0x18*/ u8 mimickedMoves : 4; /*0x19*/ u8 rechargeTimer; @@ -941,5 +941,6 @@ extern u16 gExpShareExp; extern u8 gLeveledUpInBattle; extern u16 gLastResultingMoves[MAX_BATTLERS_COUNT]; extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT]; +extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT]; #endif // GUARD_BATTLE_H diff --git a/include/battle_main.h b/include/battle_main.h index 86de8f39a..27aae9970 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -75,7 +75,7 @@ void sub_803B3AC(void); // unused void sub_803B598(void); // unused void BattleTurnPassed(void); u8 IsRunningFromBattleImpossible(void); -void sub_803BDA0(u8 bank); +void sub_8013F6C(u8 battlerId); void SwapTurnOrder(u8 id1, u8 id2); u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves); void RunBattleScriptCommands_PopCallbacksStack(void); @@ -98,5 +98,6 @@ extern const u8 gStatusConditionString_LoveJpn[8]; extern const u8 * const gStatusConditionStringsTable[7][2]; extern const u8 gTypeEffectiveness[336]; +extern const struct TrainerMoney gTrainerMoneyTable[]; #endif // GUARD_BATTLE_MAIN_H diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index c75a029c2..8e5274844 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -56,8 +56,8 @@ u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef); u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility); u8 GetBattlerTurnOrderNum(u8 bank); void SetMoveEffect(bool8 primary, u8 certain); -void BattleDestroyYesNoCursorAt(u8 cursorPosition); -void BattleCreateYesNoCursorAt(u8 cursorPosition); +void BattleDestroyYesNoCursorAt(void); +void BattleCreateYesNoCursorAt(void); void BufferMoveToLearnIntoBattleTextBuff2(void); void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags); bool8 UproarWakeUpCheck(u8 bank); diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 165b580de..769c4a84a 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -224,5 +224,6 @@ extern const u8 BattleScript_IgnoresWhileAsleep[]; extern const u8 BattleScript_IgnoresAndHitsItself[]; extern const u8 BattleScript_MoveEffectRecoil[]; extern const u8 BattleScript_FlushMessageBox[]; +extern const u8 BattleScript_SpikesOnFaintedBattler[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/constants/trainers.h b/include/constants/trainers.h new file mode 100644 index 000000000..1aad499a1 --- /dev/null +++ b/include/constants/trainers.h @@ -0,0 +1,12 @@ +#ifndef GUARD_TRAINERS_H +#define GUARD_TRAINERS_H + +#define F_TRAINER_FEMALE (1 << 7) + +// All trainer parties specify the IV, level, and species for each Pokémon in the +// party. Some trainer parties also specify held items and custom moves for each +// Pokémon. +#define F_TRAINER_PARTY_CUSTOM_MOVESET (1 << 0) +#define F_TRAINER_PARTY_HELD_ITEM (1 << 1) + +#endif // GUARD_TRAINERS_H diff --git a/include/overworld.h b/include/overworld.h index 7c1f34e41..ea877730e 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -96,6 +96,7 @@ void SetWarpDestinationToFixedHoleWarp(s16 x, s16 y); void ResetInitialPlayerAvatarState(void); void sub_8055D40(u16 mapDataId); void CleanupOverworldWindowsAndTilemaps(void); +u32 sub_8054C04(void); extern u8 gUnknown_2031DD8; extern u8 gUnknown_2036E28; diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h new file mode 100644 index 000000000..7b250b647 --- /dev/null +++ b/include/pokemon_summary_screen.h @@ -0,0 +1,36 @@ +#ifndef GUARD_POKEMON_SUMMARY_SCREEN_H +#define GUARD_POKEMON_SUMMARY_SCREEN_H + +#include "main.h" + +extern u8 gLastViewedMonIndex; + +extern const u8 *const gMoveDescriptionPointers[]; +extern const u8 *const gNatureNamePointers[]; + +void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); +void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16); +void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); +u8 sub_8138B2C(void); +void SummaryScreen_SetUnknownTaskId(u8 a0); +void SummaryScreen_DestroyUnknownTask(void); + +// The Pokemon Summary Screen can operate in different modes. Certain features, +// such as move re-ordering, are available in the different modes. +enum PokemonSummaryScreenMode +{ + PSS_MODE_NORMAL, + PSS_MODE_UNK1, + PSS_MODE_BOX, + PSS_MODE_SELECT_MOVE, +}; + +enum PokemonSummaryScreenPage +{ + PSS_PAGE_INFO, + PSS_PAGE_SKILLS, + PSS_PAGE_BATTLE_MOVES, + PSS_PAGE_CONTEST_MOVES, +}; + +#endif // GUARD_POKEMON_SUMMARY_SCREEN_H diff --git a/include/strings.h b/include/strings.h index 2b914dfc8..2da65d3e0 100644 --- a/include/strings.h +++ b/include/strings.h @@ -223,4 +223,7 @@ extern const u8 gText_LinkStandby[]; extern const u8 gUnknown_83FE725[]; extern const u8 gText_WhatWillPkmnDo[]; +// battle_script_commands +extern const u8 gText_BattleYesNoChoice[]; + #endif //GUARD_STRINGS_H -- cgit v1.2.3 From 738dac67fc5c2215f8bce55748654372a309036a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Aug 2019 14:54:33 -0400 Subject: Eliminate `struct TextColor` definition and use --- include/libgcnmultiboot.h | 2 +- include/menu.h | 4 ++-- include/text.h | 7 ------- 3 files changed, 3 insertions(+), 10 deletions(-) (limited to 'include') diff --git a/include/libgcnmultiboot.h b/include/libgcnmultiboot.h index 7d347df05..4a6262d8f 100644 --- a/include/libgcnmultiboot.h +++ b/include/libgcnmultiboot.h @@ -1,4 +1,4 @@ -#ifndef GUARD_LIBGCMMULTIBOOT_H +#ifndef GUARD_LIBGCNMULTIBOOT_H #define GUARD_LIBGCNMULTIBOOT_H struct GcmbStruct diff --git a/include/menu.h b/include/menu.h index 6d8de3274..6f358d34e 100644 --- a/include/menu.h +++ b/include/menu.h @@ -18,8 +18,8 @@ struct MenuAction }; // menu2 -void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 x, u8 y, const struct TextColor * color, s8 speed, const u8 * str); -void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str); +void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 x, u8 y, const u8 * color, s8 speed, const u8 * str); +void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const u8 *color, s8 speed, const u8 *str); void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing); void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y); void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority); diff --git a/include/text.h b/include/text.h index 07f6b29c2..0fd586ddd 100644 --- a/include/text.h +++ b/include/text.h @@ -193,13 +193,6 @@ typedef struct { extern TextFlags gTextFlags; -struct __attribute__((packed)) TextColor -{ - u8 fgColor; - u8 bgColor; - u8 shadowColor; -}; - extern u8 gStringVar1[]; extern u8 gStringVar2[]; extern u8 gStringVar3[]; -- cgit v1.2.3 From b5162467692853dabb7765976fc7c0fa679c0f3d Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 27 Aug 2019 08:01:01 +0800 Subject: thru TryDoForceSwitchOut --- include/battle_script_commands.h | 13 ------------- include/constants/battle_script_commands.h | 23 ++++++++--------------- include/party_menu.h | 4 +++- include/pokemon_special_anim.h | 3 +++ include/window.h | 2 +- 5 files changed, 15 insertions(+), 30 deletions(-) (limited to 'include') diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index 8e5274844..fa60e301a 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -25,19 +25,6 @@ #define ATK4F_DONT_CHECK_STATUSES 0x80 -#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0 -#define VARIOUS_SET_MAGIC_COAT_TARGET 1 -#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2 -#define VARIOUS_GET_MOVE_TARGET 3 -#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 -#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 -#define VARIOUS_EMIT_YESNOBOX 13 -#define VARIOUS_WAIT_CRY 18 -#define VARIOUS_RETURN_OPPONENT_MON1 19 -#define VARIOUS_RETURN_OPPONENT_MON2 20 -#define VARIOUS_SET_TELEPORT_OUTCOME 25 -#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26 - #define ATK80_DMG_CHANGE_SIGN 0 #define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1 #define ATK80_DMG_DOUBLED 2 diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 894bd13b6..32d656673 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -61,28 +61,21 @@ #define CMP_COMMON_BITS 0x4 #define CMP_NO_COMMON_BITS 0x5 +// TODO: documentation // atk76, various #define VARIOUS_CANCEL_MULTI_TURN_MOVES 0 #define VARIOUS_SET_MAGIC_COAT_TARGET 1 #define VARIOUS_IS_RUNNING_IMPOSSIBLE 2 #define VARIOUS_GET_MOVE_TARGET 3 +#define VARIOUS_CASE_4 4 #define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 #define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 -#define VARIOUS_ARENA_JUDGMENT_WINDOW 9 -#define VARIOUS_ARENA_OPPONENT_MON_LOST 10 -#define VARIOUS_ARENA_PLAYER_MON_LOST 11 -#define VARIOUS_ARENA_BOTH_MONS_LOST 12 -#define VARIOUS_EMIT_YESNOBOX 13 -#define VARIOUS_ARENA_JUDGMENT_STRING 16 -#define VARIOUS_ARENA_WAIT_STRING 17 -#define VARIOUS_WAIT_CRY 18 -#define VARIOUS_RETURN_OPPONENT_MON1 19 -#define VARIOUS_RETURN_OPPONENT_MON2 20 -#define VARIOUS_VOLUME_DOWN 21 -#define VARIOUS_VOLUME_UP 22 -#define VARIOUS_SET_ALREADY_STATUS_MOVE_ATTEMPT 23 -#define VARIOUS_SET_TELEPORT_OUTCOME 25 -#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26 +#define VARIOUS_CASE_7 7 +#define VARIOUS_CASE_8 8 +#define VARIOUS_RETURN_OPPONENT_MON1 9 +#define VARIOUS_RETURN_OPPONENT_MON2 10 +#define VARIOUS_CASE_11 11 +#define VARIOUS_CASE_12 12 // atk80, dmg manipulation #define ATK80_DMG_CHANGE_SIGN 0 diff --git a/include/party_menu.h b/include/party_menu.h index d10d0e48a..4c38df658 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -10,7 +10,9 @@ enum { AILMENT_PRZ, AILMENT_SLP, AILMENT_FRZ, - AILMENT_BRN + AILMENT_BRN, + AILMENT_PKRS, + AILMENT_FNT }; enum diff --git a/include/pokemon_special_anim.h b/include/pokemon_special_anim.h index 4ccccaada..8dbf0efa4 100644 --- a/include/pokemon_special_anim.h +++ b/include/pokemon_special_anim.h @@ -5,5 +5,8 @@ void sub_811E5B8(u16, u16, u16, u16, u16, u16); bool8 sub_811E680(void); +void GetMonLevelUpWindowStats(struct Pokemon *mon, u16 *currStats); +void DrawLevelUpWindowPg1(u16 windowId, u16 *statsBefore, u16 *statsAfter, u8 bgClr, u8 fgClr, u8 shadowClr); +void DrawLevelUpWindowPg2(u16 windowId, u16 *currStats, u8 bgClr, u8 fgClr, u8 shadowClr); #endif // GUARD_POKEMON_SPECIAL_ANIM_H diff --git a/include/window.h b/include/window.h index 30e73dd32..5f3630afb 100644 --- a/include/window.h +++ b/include/window.h @@ -63,7 +63,7 @@ void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height); void BlitBitmapToWindow(u8 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height); void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight); void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); -void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset); +void CopyToWindowPixelBuffer(u8 windowId, const void *src, u16 size, u16 tileOffset); void FillWindowPixelBuffer(u8 windowId, u8 fillValue); void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue); void CallWindowFunction(u8 windowId, WindowFunc func); -- cgit v1.2.3 From ca130a8aeb39d05340495766a1f33dc854f6b4a1 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 27 Aug 2019 10:27:36 +0800 Subject: thru atkc0 --- include/battle.h | 14 +------------- include/battle_script_commands.h | 4 ---- include/constants/battle.h | 2 +- include/constants/battle_script_commands.h | 4 ++-- include/party_menu.h | 2 ++ 5 files changed, 6 insertions(+), 20 deletions(-) (limited to 'include') diff --git a/include/battle.h b/include/battle.h index 8abb95333..88b440a22 100644 --- a/include/battle.h +++ b/include/battle.h @@ -147,19 +147,6 @@ #define TYPE_FORESIGHT 0xFE #define TYPE_ENDTABLE 0xFF -#define BS_GET_TARGET 0 -#define BS_GET_ATTACKER 1 -#define BS_GET_EFFECT_BANK 2 -#define BS_GET_gBank1 3 -#define BS_GET_BANK_0 7 -#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update -#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability -#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability -#define BS_GET_SCRIPTING_BANK 10 -#define BS_GET_OPPONENT1 12 -#define BS_GET_PLAYER2 13 -#define BS_GET_OPPONENT2 14 - // for battle script commands #define CMP_EQUAL 0x0 #define CMP_NOT_EQUAL 0x1 @@ -942,5 +929,6 @@ extern u8 gLeveledUpInBattle; extern u16 gLastResultingMoves[MAX_BATTLERS_COUNT]; extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT]; extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT]; +extern u8 gChosenActionByBattler[MAX_BATTLERS_COUNT]; #endif // GUARD_BATTLE_H diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index fa60e301a..d45675ff8 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -14,10 +14,6 @@ #define CMP_COMMON_BITS 0x4 #define CMP_NO_COMMON_BITS 0x5 -#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update -#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability -#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability - #define ATK48_STAT_NEGATIVE 0x1 #define ATK48_STAT_BY_TWO 0x2 #define ATK48_BIT_x4 0x4 diff --git a/include/constants/battle.h b/include/constants/battle.h index f524a7643..b9026262a 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -174,7 +174,7 @@ #define HITMARKER_GRUDGE 0x01000000 #define HITMARKER_OBEYS 0x02000000 #define HITMARKER_x4000000 0x04000000 -#define HITMARKER_x8000000 0x08000000 +#define HITMARKER_CHARGING 0x08000000 #define HITMARKER_FAINTED(battler) (gBitTable[battler] << 0x1C) #define HITMARKER_UNK(battler) (0x10000000 << battler) diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 32d656673..3809610ba 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -39,13 +39,13 @@ #define BS_EFFECT_BATTLER 2 #define BS_FAINTED 3 #define BS_BATTLER_0 7 -#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update +#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_updatestatusicon #define BS_ATTACKER_SIDE 8 // for atk1E_jumpifability #define BS_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability #define BS_SCRIPTING 10 #define BS_PLAYER1 11 #define BS_OPPONENT1 12 -#define BS_PLAYER2 13 +#define BS_PLAYER2 13 // for atk98_updatestatusicon #define BS_OPPONENT2 14 // atk 01, accuracy calc diff --git a/include/party_menu.h b/include/party_menu.h index 4c38df658..cd2a5bc37 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -79,5 +79,7 @@ u8 pokemon_order_func(u8); void sub_8127CAC(void); void sub_8127DA8(u8 battlerId, u8 multiplayerFlag); void OpenPartyMenuInBattle(u8 arg); +void sub_8127EC4(u8 battlerId, u8 unk, u8 arrayIndex); +bool8 IsMultiBattle(void); #endif // GUARD_PARTY_MENU_H -- cgit v1.2.3 From f4b4f5dd0c698bad4e9b10b712c15f5c448a0203 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 27 Aug 2019 12:00:08 +0800 Subject: thru atkee --- include/battle.h | 3 ++- include/constants/battle.h | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/battle.h b/include/battle.h index 88b440a22..2420a406c 100644 --- a/include/battle.h +++ b/include/battle.h @@ -347,7 +347,7 @@ struct WishFutureKnock s32 futureSightDmg[MAX_BATTLERS_COUNT]; u16 futureSightMove[MAX_BATTLERS_COUNT]; u8 wishCounter[MAX_BATTLERS_COUNT]; - u8 wishUserID[MAX_BATTLERS_COUNT]; + u8 wishMonId[MAX_BATTLERS_COUNT]; u8 weatherDuration; u8 knockedOffMons[2]; }; @@ -930,5 +930,6 @@ extern u16 gLastResultingMoves[MAX_BATTLERS_COUNT]; extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT]; extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT]; extern u8 gChosenActionByBattler[MAX_BATTLERS_COUNT]; +extern u8 gBattleTerrain; #endif // GUARD_BATTLE_H diff --git a/include/constants/battle.h b/include/constants/battle.h index b9026262a..c36330306 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -212,7 +212,7 @@ #define WEATHER_SUN_ANY (WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT) #define WEATHER_HAIL (1 << 7) #define WEATHER_HAIL_ANY (WEATHER_HAIL) -#define WEATHER_ANY (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUNNY_ANY | WEATHER_HAIL_ANY) +#define WEATHER_ANY (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY) // Move Effects #define MOVE_EFFECT_SLEEP 0x1 @@ -281,4 +281,17 @@ #define MOVE_EFFECT_AFFECTS_USER 0x40 #define MOVE_EFFECT_CERTAIN 0x80 +// Battle terrain defines for gBattleTerrain. +#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_MOUNTAIN 6 +#define BATTLE_TERRAIN_CAVE 7 +#define BATTLE_TERRAIN_BUILDING 8 +#define BATTLE_TERRAIN_PLAIN 9 + + #endif // GUARD_CONSTANTS_BATTLE_H -- cgit v1.2.3 From b2343076db0cefc087f3941b6941dcba7b1e3364 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 27 Aug 2019 15:10:23 +0800 Subject: remaining stuff of battle_script_commands --- include/battle.h | 1 + include/battle_bg.h | 6 ++++++ include/battle_controllers.h | 1 + include/battle_script_commands.h | 17 ++++++++--------- include/battle_scripts.h | 2 ++ include/field_specials.h | 1 + include/overworld.h | 1 + include/pokedex.h | 2 ++ include/trainer_pokemon_sprites.h | 1 + 9 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 include/battle_bg.h (limited to 'include') diff --git a/include/battle.h b/include/battle.h index 2420a406c..1f7fc5bf6 100644 --- a/include/battle.h +++ b/include/battle.h @@ -9,6 +9,7 @@ #include "battle_ai_switch_items.h" #include "battle_gfx_sfx_util.h" #include "battle_util2.h" +#include "battle_bg.h" /* Banks are a name given to what could be called a 'battlerId' or 'monControllerId'. diff --git a/include/battle_bg.h b/include/battle_bg.h new file mode 100644 index 000000000..6bf90a104 --- /dev/null +++ b/include/battle_bg.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BATTLE_BG_H +#define GUARD_BATTLE_BG_H + +void sub_800F34C(void); + +#endif // GUARD_BATTLE_BG_H diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 4ed292e04..3ee67eac8 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -77,6 +77,7 @@ enum #define BALL_3_SHAKES_FAIL 3 #define BALL_3_SHAKES_SUCCESS 4 #define BALL_TRAINER_BLOCK 5 +#define BALL_GHOST_DODGE 6 #define RET_VALUE_LEVELLED_UP 11 diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index d45675ff8..3f2699064 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -34,19 +34,18 @@ #define WINDOW_CLEAR 0x1 #define WINDOW_x80 0x80 -void AI_CalcDmg(u8 bankAtk, u8 bankDef); -u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef); -u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility); -u8 GetBattlerTurnOrderNum(u8 bank); void SetMoveEffect(bool8 primary, u8 certain); -void BattleDestroyYesNoCursorAt(void); +bool8 UproarWakeUpCheck(u8 battlerId); +u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility); +u8 TypeCalc(u16 move, u8 attacker, u8 defender); +void AI_CalcDmg(u8 attacker, u8 defender); +bool32 IsMonGettingExpSentOut(void); void BattleCreateYesNoCursorAt(void); -void BufferMoveToLearnIntoBattleTextBuff2(void); +void BattleDestroyYesNoCursorAt(void); void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags); -bool8 UproarWakeUpCheck(u8 bank); -bool32 IsMonGettingExpSentOut(void); +u8 GetBattlerTurnOrderNum(u8 battlerId); +void BufferMoveToLearnIntoBattleTextBuff2(void); extern void (* const gBattleScriptingCommandsTable[])(void); -extern const u8 gUnknown_0831C494[][4]; #endif // GUARD_BATTLE_SCRIPT_COMMANDS_H diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 769c4a84a..a13a8c097 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -225,5 +225,7 @@ extern const u8 BattleScript_IgnoresAndHitsItself[]; extern const u8 BattleScript_MoveEffectRecoil[]; extern const u8 BattleScript_FlushMessageBox[]; extern const u8 BattleScript_SpikesOnFaintedBattler[]; +extern const u8 BattleScript_GhostBallDodge[]; +extern const u8 gUnknown_81D9A88[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/field_specials.h b/include/field_specials.h index a82cb20a2..9a85a8b49 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -13,5 +13,6 @@ void nullsub_61(void); u8 ContextNpcGetTextColor(void); void set_unknown_box_id(u8); u16 get_unknown_box_id(void); +bool8 sub_80CC7B4(void); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/overworld.h b/include/overworld.h index ea877730e..8f15f5a85 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -119,5 +119,6 @@ bool8 is_light_level_8_or_9(u8 mapType); bool32 sub_8055C9C(void); void Overworld_ResetStateAfterDigEscRope(void); bool32 sub_8058244(void); +u8 GetCurrentMapType(void); #endif //GUARD_ROM4_H diff --git a/include/pokedex.h b/include/pokedex.h index 718d2e853..a08d4ed26 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -45,4 +45,6 @@ u16 GetNationalPokedexCount(u8); u16 sub_80C0844(u8); u16 GetKantoPokedexCount(u8); +u32 sub_8106B60(u16 species); + #endif // GUARD_POKEDEX_H diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h index 2a520715f..833268d48 100644 --- a/include/trainer_pokemon_sprites.h +++ b/include/trainer_pokemon_sprites.h @@ -14,5 +14,6 @@ u8 sub_818D97C(u8 a0, u8 a1); u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); u16 FreeAndDestroyTrainerPicSprite(u16); u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass); +u16 CreateMonPicSprite_HandleDeoxys(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); #endif // GUARD_TRAINER_POKEMON_SPRITES_H -- cgit v1.2.3 From 2bd15329e07a23d3515dc1c9c9e5d8f75d3be429 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 27 Aug 2019 23:40:52 +0800 Subject: minor fixes and remove unnecessary NONMATCHING --- include/battle_controllers.h | 2 +- include/constants/battle.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) (limited to 'include') diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 3ee67eac8..6da4ca240 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -81,7 +81,7 @@ enum #define RET_VALUE_LEVELLED_UP 11 -#define INSTANT_HP_BAR_DROP 32767 +#define INSTANT_HP_BAR_DROP 0x7FFF // Special return values in gBattleBufferB from Battle Controller functions. #define RET_VALUE_LEVELED_UP 11 diff --git a/include/constants/battle.h b/include/constants/battle.h index c36330306..a0099d23f 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -293,5 +293,4 @@ #define BATTLE_TERRAIN_BUILDING 8 #define BATTLE_TERRAIN_PLAIN 9 - #endif // GUARD_CONSTANTS_BATTLE_H -- cgit v1.2.3 From a26299645a5f4164e8b881c045ad7fbabb88942f Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Fri, 30 Aug 2019 03:05:21 +0800 Subject: real match RenderText --- include/text.h | 48 +++++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 23 deletions(-) (limited to 'include') diff --git a/include/text.h b/include/text.h index 0fd586ddd..c4199190f 100644 --- a/include/text.h +++ b/include/text.h @@ -83,7 +83,16 @@ #define TEXT_COLOR_DARK_GREY 0x2 // battle placeholders are located in battle_message.h - +#define EXT_CTRL_CODE_COLOR 0x1 +#define EXT_CTRL_CODE_HIGHLIGHT 0x2 +#define EXT_CTRL_CODE_SHADOW 0x3 +// +#define EXT_CTRL_CODE_UNKNOWN_7 0x7 +// +#define EXT_CTRL_CODE_CLEAR 0x11 +// +#define EXT_CTRL_CODE_CLEAR_TO 0x13 +#define EXT_CTRL_CODE_MIN_LETTER_SPACING 0x14 #define EXT_CTRL_CODE_JPN 0x15 #define EXT_CTRL_CODE_ENG 0x16 @@ -105,18 +114,13 @@ enum struct TextPrinterSubStruct { - u8 font_type:4; // 0x14 - u8 font_type_upper:1; + u8 glyphId:4; // 0x14 + bool8 hasPrintBeenSpedUp:1; u8 font_type_5:3; - u8 field_1:5; - u8 field_1_upmid:2; - u8 field_1_top:1; - u8 frames_visible_counter; - u8 field_3; - u8 field_4; // 0x18 - u8 field_5; - u8 field_6; - u8 active; + u8 downArrowDelay:5; + u8 downArrowYPosIdx:2; + u8 hasGlyphIdBeenSet:1; + u8 autoScrollDelay; }; struct TextPrinterTemplate // TODO: Better name @@ -138,18 +142,15 @@ struct TextPrinterTemplate // TODO: Better name struct TextPrinter { - struct TextPrinterTemplate subPrinter; - + struct TextPrinterTemplate printerTemplate; void (*callback)(struct TextPrinterTemplate *, u16); // 0x10 - - union { + union __attribute__((packed)) { struct TextPrinterSubStruct sub; - - u8 sub_fields[8]; - } sub_union; - + u8 fields[7]; + } subUnion; + u8 active; u8 state; // 0x1C - u8 text_speed; + u8 textSpeed; u8 delayCounter; u8 scrollDistance; u8 minLetterSpacing; // 0x20 @@ -173,13 +174,13 @@ extern const struct FontInfo *gFonts; struct GlyphWidthFunc { - u32 font_id; + u32 fontId; s32 (*func)(u16 glyphId, bool32 isJapanese); }; struct KeypadIcon { - u16 tile_offset; + u16 tileOffset; u8 width; u8 height; }; @@ -262,5 +263,6 @@ s32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese); void sub_80062B0(struct Sprite *sprite); u8 CreateTextCursorSpriteForOakSpeech(u8 sheetId, u16 x, u16 y, u8 priority, u8 subpriority); void sub_8006398(u8 spriteId); +s32 GetGlyphWidthFont6(u16 font_type, bool32 isJapanese); #endif // GUARD_TEXT_H -- cgit v1.2.3 From d9d90b5a9fdb6d3dc0645b10444e02efab08d82e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 6 Sep 2019 12:53:35 -0400 Subject: Suppress CLion complaints about mach-o sections --- include/gba/defines.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'include') diff --git a/include/gba/defines.h b/include/gba/defines.h index 3932a8542..c0eec12b1 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -6,8 +6,13 @@ #define TRUE 1 #define FALSE 0 +#if defined(__APPLE__) +#define IWRAM_DATA __attribute__((section("__DATA,iwram_data"))) +#define EWRAM_DATA __attribute__((section("__DATA,ewram_data"))) +#else #define IWRAM_DATA __attribute__((section("iwram_data"))) #define EWRAM_DATA __attribute__((section("ewram_data"))) +#endif #define ALIGNED(n) __attribute__((aligned(n))) -- cgit v1.2.3 From 29e641bc1cad5eb840bb92d2913ede219a8e072c Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Tue, 24 Sep 2019 23:13:20 +0800 Subject: PokemonUseItemEffects2 --- include/pokemon.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/pokemon.h b/include/pokemon.h index 9dd5850b4..16921b99a 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -608,7 +608,7 @@ void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex); void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex); bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex); bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e); -bool8 PokemonUseItemEffects2(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e); +bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex); u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit); const u8 *Battle_PrintStatBoosterEffectMessage(u16 itemId); u8 GetNature(struct Pokemon *mon); -- cgit v1.2.3 From 7f6d86a8bf2afe349135d502debc2237bafafff5 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Wed, 25 Sep 2019 01:43:50 +0800 Subject: arg name consistency --- include/pokemon.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/pokemon.h b/include/pokemon.h index 16921b99a..9354cae89 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -607,7 +607,7 @@ u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex); void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex); void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex); bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex); -bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e); +bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 e); bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex); u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit); const u8 *Battle_PrintStatBoosterEffectMessage(u16 itemId); -- cgit v1.2.3 From 89c98f2ab74e6097fd85b05b64965c10c9941b5b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Sep 2019 14:00:30 -0400 Subject: Start credits (nonmatching sub_80F3BD0) --- include/credits.h | 6 ++++++ include/field_weather.h | 1 + include/overworld.h | 3 +++ include/strings.h | 3 +++ 4 files changed, 13 insertions(+) create mode 100644 include/credits.h (limited to 'include') diff --git a/include/credits.h b/include/credits.h new file mode 100644 index 000000000..c8a19bbeb --- /dev/null +++ b/include/credits.h @@ -0,0 +1,6 @@ +#ifndef GUARD_CREDITS_H +#define GUARD_CREDITS_H + + + +#endif //GUARD_CREDITS_H diff --git a/include/field_weather.h b/include/field_weather.h index c3ecd4fa6..3e544b106 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -16,5 +16,6 @@ void PlayRainStoppingSoundEffect(void); bool8 sub_807AA70(void); void SetWeatherScreenFadeOut(void); void sub_807B070(void); +void sub_807A944(u8, u8, u32); #endif // GUARD_WEATHER_H diff --git a/include/overworld.h b/include/overworld.h index 7c1f34e41..3d973d844 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -119,4 +119,7 @@ bool32 sub_8055C9C(void); void Overworld_ResetStateAfterDigEscRope(void); bool32 sub_8058244(void); +void sub_80574A4(void); +bool32 sub_805750C(u8 *, const char *, u8); + #endif //GUARD_ROM4_H diff --git a/include/strings.h b/include/strings.h index 97c120ff3..951ab264c 100644 --- a/include/strings.h +++ b/include/strings.h @@ -208,4 +208,7 @@ extern const u8 gString_OutOfCoins[]; extern const u8 gString_QuitPlaying[]; extern const u8 gString_SlotMachineControls[]; +// credits +extern const u8 gUnknown_841D198[]; + #endif //GUARD_STRINGS_H -- cgit v1.2.3 From 7f0c7528f732c650736b97e623c933ddaed00774 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Sep 2019 14:00:40 -0400 Subject: Finish credits decomp and data dump --- include/graphics.h | 8 ++++ include/overworld.h | 9 +++- include/strings.h | 88 ++++++++++++++++++++++++++++++++++++++- include/trainer_pokemon_sprites.h | 1 + 4 files changed, 104 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/graphics.h b/include/graphics.h index f6c2ddd4a..50daf7661 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -974,4 +974,12 @@ extern const u8 gGraphics_TitleScreen_CopyrightPressStartMap[]; extern const u16 gGraphics_TitleScreen_FirePals[]; extern const u8 gGraphics_TitleScreen_BlankObjTiles[]; +// credits +extern const u32 gUnknown_8EAAB98[]; +extern const u32 gUnknown_8EAB30C[]; +extern const u16 gUnknown_8EAAB18[][16]; +extern const u16 gUnknown_8EAE528[]; +extern const u8 gUnknown_8EAE548[]; +extern const u8 gUnknown_8EAE900[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/overworld.h b/include/overworld.h index 3d973d844..f27a4dbd3 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -23,6 +23,13 @@ struct UCoords32 u32 x, y; }; +struct CreditsOverworldCmd +{ + s16 unk_0; + u16 unk_2; + u16 unk_4; +}; + extern struct UCoords32 gDirectionToVectors[]; extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; @@ -120,6 +127,6 @@ void Overworld_ResetStateAfterDigEscRope(void); bool32 sub_8058244(void); void sub_80574A4(void); -bool32 sub_805750C(u8 *, const char *, u8); +bool32 sub_805750C(u8 *, const struct CreditsOverworldCmd *, u8); #endif //GUARD_ROM4_H diff --git a/include/strings.h b/include/strings.h index 951ab264c..001f08f61 100644 --- a/include/strings.h +++ b/include/strings.h @@ -209,6 +209,92 @@ extern const u8 gString_QuitPlaying[]; extern const u8 gString_SlotMachineControls[]; // credits -extern const u8 gUnknown_841D198[]; +extern const u8 gUnknown_84161CD[]; +extern const u8 gUnknown_841D198[]; // FR +extern const u8 gUnknown_841D1B8[]; // LG +extern const u8 gUnknown_841D1D8[]; +extern const u8 gUnknown_841D1E8[]; +extern const u8 gUnknown_841D200[]; +extern const u8 gUnknown_841D224[]; +extern const u8 gUnknown_841D248[]; +extern const u8 gUnknown_841D284[]; +extern const u8 gUnknown_841D2B4[]; +extern const u8 gUnknown_841D2C8[]; +extern const u8 gUnknown_841D314[]; +extern const u8 gUnknown_841D330[]; +extern const u8 gUnknown_841D370[]; +extern const u8 gUnknown_841D388[]; +extern const u8 gUnknown_841D3C0[]; +extern const u8 gUnknown_841D3D8[]; +extern const u8 gUnknown_841D3FC[]; +extern const u8 gUnknown_841D414[]; +extern const u8 gUnknown_841D434[]; +extern const u8 gUnknown_841D448[]; +extern const u8 gUnknown_841D45C[]; +extern const u8 gUnknown_841D474[]; +extern const u8 gUnknown_841D4A4[]; +extern const u8 gUnknown_841D4BC[]; +extern const u8 gUnknown_841D4F0[]; +extern const u8 gUnknown_841D504[]; +extern const u8 gUnknown_841D524[]; +extern const u8 gUnknown_841D548[]; +extern const u8 gUnknown_841D56C[]; +extern const u8 gUnknown_841D588[]; +extern const u8 gUnknown_841D5B8[]; +extern const u8 gUnknown_841D5CC[]; +extern const u8 gUnknown_841D5E4[]; +extern const u8 gUnknown_841D5FC[]; +extern const u8 gUnknown_841D640[]; +extern const u8 gUnknown_841D658[]; +extern const u8 gUnknown_841D698[]; +extern const u8 gUnknown_841D6B0[]; +extern const u8 gUnknown_841D6EC[]; +extern const u8 gUnknown_841D708[]; +extern const u8 gUnknown_841D74C[]; +extern const u8 gUnknown_841D768[]; +extern const u8 gUnknown_841D784[]; +extern const u8 gUnknown_841D79C[]; +extern const u8 gUnknown_841D7DC[]; +extern const u8 gUnknown_841D7F4[]; +extern const u8 gUnknown_841D834[]; +extern const u8 gUnknown_841D84C[]; +extern const u8 gUnknown_841D894[]; +extern const u8 gUnknown_841D8B0[]; +extern const u8 gUnknown_841D8CC[]; +extern const u8 gUnknown_841D8EC[]; +extern const u8 gUnknown_841D938[]; +extern const u8 gUnknown_841D94C[]; +extern const u8 gUnknown_841D98C[]; +extern const u8 gUnknown_841D9A0[]; +extern const u8 gUnknown_841D9C4[]; +extern const u8 gUnknown_841D9D4[]; +extern const u8 gUnknown_841DA08[]; +extern const u8 gUnknown_841DA24[]; +extern const u8 gUnknown_841DA3C[]; +extern const u8 gUnknown_841DA58[]; +extern const u8 gUnknown_841DA6C[]; +extern const u8 gUnknown_841DA88[]; +extern const u8 gUnknown_841DAA0[]; +extern const u8 gUnknown_841DAC4[]; +extern const u8 gUnknown_841DAE8[]; +extern const u8 gUnknown_841DB04[]; +extern const u8 gUnknown_841DB28[]; +extern const u8 gUnknown_841DB3C[]; +extern const u8 gUnknown_841DB7C[]; +extern const u8 gUnknown_841DBA4[]; +extern const u8 gUnknown_841DBDC[]; +extern const u8 gUnknown_841DBF8[]; +extern const u8 gUnknown_841DC2C[]; +extern const u8 gUnknown_841DC48[]; +extern const u8 gUnknown_841DCAC[]; +extern const u8 gUnknown_841DCC8[]; +extern const u8 gUnknown_841DD08[]; +extern const u8 gUnknown_841DD20[]; +extern const u8 gUnknown_841DD64[]; +extern const u8 gUnknown_841DD7C[]; +extern const u8 gUnknown_841DDC8[]; +extern const u8 gUnknown_841DDE4[]; +extern const u8 gUnknown_841DE24[]; +extern const u8 gUnknown_841DE3C[]; #endif //GUARD_STRINGS_H diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h index 2a520715f..dfd716176 100644 --- a/include/trainer_pokemon_sprites.h +++ b/include/trainer_pokemon_sprites.h @@ -14,5 +14,6 @@ u8 sub_818D97C(u8 a0, u8 a1); u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); u16 FreeAndDestroyTrainerPicSprite(u16); u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass); +u16 sub_810C228(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId); #endif // GUARD_TRAINER_POKEMON_SPRITES_H -- cgit v1.2.3 From d66767ed9a5eb714b98a4e4dc22728606414c39c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 25 Sep 2019 11:09:28 -0400 Subject: Documentation and cleanup --- include/credits.h | 6 ------ include/field_weather.h | 2 +- include/graphics.h | 12 ++++++------ include/overworld.h | 17 +++++++++++------ include/strings.h | 4 ++-- include/trainer_pokemon_sprites.h | 2 +- 6 files changed, 21 insertions(+), 22 deletions(-) delete mode 100644 include/credits.h (limited to 'include') diff --git a/include/credits.h b/include/credits.h deleted file mode 100644 index c8a19bbeb..000000000 --- a/include/credits.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef GUARD_CREDITS_H -#define GUARD_CREDITS_H - - - -#endif //GUARD_CREDITS_H diff --git a/include/field_weather.h b/include/field_weather.h index 3e544b106..794472f43 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -16,6 +16,6 @@ void PlayRainStoppingSoundEffect(void); bool8 sub_807AA70(void); void SetWeatherScreenFadeOut(void); void sub_807B070(void); -void sub_807A944(u8, u8, u32); +void FieldWeather_StartFadingOutCreditsMap(u8, u8, u32); #endif // GUARD_WEATHER_H diff --git a/include/graphics.h b/include/graphics.h index 50daf7661..6139869c9 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -975,11 +975,11 @@ extern const u16 gGraphics_TitleScreen_FirePals[]; extern const u8 gGraphics_TitleScreen_BlankObjTiles[]; // credits -extern const u32 gUnknown_8EAAB98[]; -extern const u32 gUnknown_8EAB30C[]; -extern const u16 gUnknown_8EAAB18[][16]; -extern const u16 gUnknown_8EAE528[]; -extern const u8 gUnknown_8EAE548[]; -extern const u8 gUnknown_8EAE900[]; +extern const u32 gCreditsPokeballBgGfxTiles[]; +extern const u32 gCreditsPokeballBgGfxMap[]; +extern const u16 gCreditsMonBackdropPals[][16]; +extern const u16 gCreditsAllRightsReservedGfxPal[]; +extern const u8 gCreditsAllRightsReservedGfxTiles[]; +extern const u8 gCreditsAllRightsReservedGfxMap[]; #endif //GUARD_GRAPHICS_H diff --git a/include/overworld.h b/include/overworld.h index f27a4dbd3..472ebf544 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -1,5 +1,5 @@ -#ifndef GUARD_ROM4_H -#define GUARD_ROM4_H +#ifndef GUARD_OVERWORLD_H +#define GUARD_OVERWORLD_H #include "global.h" #include "main.h" @@ -30,6 +30,11 @@ struct CreditsOverworldCmd u16 unk_4; }; +/* gDisableMapMusicChangeOnMapLoad */ +#define MUSIC_DISABLE_OFF 0 +#define MUSIC_DISABLE_STOP 1 +#define MUSIC_DISABLE_KEEP 2 + extern struct UCoords32 gDirectionToVectors[]; extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; @@ -104,7 +109,7 @@ void ResetInitialPlayerAvatarState(void); void sub_8055D40(u16 mapDataId); void CleanupOverworldWindowsAndTilemaps(void); -extern u8 gUnknown_2031DD8; +extern u8 gDisableMapMusicChangeOnMapLoad; extern u8 gUnknown_2036E28; extern void (*gFieldCallback)(void); @@ -126,7 +131,7 @@ bool32 sub_8055C9C(void); void Overworld_ResetStateAfterDigEscRope(void); bool32 sub_8058244(void); -void sub_80574A4(void); -bool32 sub_805750C(u8 *, const struct CreditsOverworldCmd *, u8); +void Overworld_CreditsMainCB(void); +bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd *, u8); -#endif //GUARD_ROM4_H +#endif //GUARD_OVERWORLD_H diff --git a/include/strings.h b/include/strings.h index 001f08f61..9f521a65e 100644 --- a/include/strings.h +++ b/include/strings.h @@ -210,8 +210,8 @@ extern const u8 gString_SlotMachineControls[]; // credits extern const u8 gUnknown_84161CD[]; -extern const u8 gUnknown_841D198[]; // FR -extern const u8 gUnknown_841D1B8[]; // LG +extern const u8 gString_PokemonFireRed_Staff[]; // FR +extern const u8 gString_PokemonLeafGreen_Staff[]; // LG extern const u8 gUnknown_841D1D8[]; extern const u8 gUnknown_841D1E8[]; extern const u8 gUnknown_841D200[]; diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h index dfd716176..db32623bf 100644 --- a/include/trainer_pokemon_sprites.h +++ b/include/trainer_pokemon_sprites.h @@ -14,6 +14,6 @@ u8 sub_818D97C(u8 a0, u8 a1); u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); u16 FreeAndDestroyTrainerPicSprite(u16); u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass); -u16 sub_810C228(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId); +u16 LoadMonPicForCredits(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId); #endif // GUARD_TRAINER_POKEMON_SPRITES_H -- cgit v1.2.3 From e0b3642edcbc7a1d713ca704686e11647fa8a6cc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 25 Sep 2019 13:41:43 -0400 Subject: Rename credits strings and document script --- include/strings.h | 170 +++++++++++++++++++++++++++--------------------------- 1 file changed, 85 insertions(+), 85 deletions(-) (limited to 'include') diff --git a/include/strings.h b/include/strings.h index 9f521a65e..21a44d072 100644 --- a/include/strings.h +++ b/include/strings.h @@ -209,92 +209,92 @@ extern const u8 gString_QuitPlaying[]; extern const u8 gString_SlotMachineControls[]; // credits -extern const u8 gUnknown_84161CD[]; +extern const u8 gString_Dummy[]; extern const u8 gString_PokemonFireRed_Staff[]; // FR extern const u8 gString_PokemonLeafGreen_Staff[]; // LG -extern const u8 gUnknown_841D1D8[]; -extern const u8 gUnknown_841D1E8[]; -extern const u8 gUnknown_841D200[]; -extern const u8 gUnknown_841D224[]; -extern const u8 gUnknown_841D248[]; -extern const u8 gUnknown_841D284[]; -extern const u8 gUnknown_841D2B4[]; -extern const u8 gUnknown_841D2C8[]; -extern const u8 gUnknown_841D314[]; -extern const u8 gUnknown_841D330[]; -extern const u8 gUnknown_841D370[]; -extern const u8 gUnknown_841D388[]; -extern const u8 gUnknown_841D3C0[]; -extern const u8 gUnknown_841D3D8[]; -extern const u8 gUnknown_841D3FC[]; -extern const u8 gUnknown_841D414[]; -extern const u8 gUnknown_841D434[]; -extern const u8 gUnknown_841D448[]; -extern const u8 gUnknown_841D45C[]; -extern const u8 gUnknown_841D474[]; -extern const u8 gUnknown_841D4A4[]; -extern const u8 gUnknown_841D4BC[]; -extern const u8 gUnknown_841D4F0[]; -extern const u8 gUnknown_841D504[]; -extern const u8 gUnknown_841D524[]; -extern const u8 gUnknown_841D548[]; -extern const u8 gUnknown_841D56C[]; -extern const u8 gUnknown_841D588[]; -extern const u8 gUnknown_841D5B8[]; -extern const u8 gUnknown_841D5CC[]; -extern const u8 gUnknown_841D5E4[]; -extern const u8 gUnknown_841D5FC[]; -extern const u8 gUnknown_841D640[]; -extern const u8 gUnknown_841D658[]; -extern const u8 gUnknown_841D698[]; -extern const u8 gUnknown_841D6B0[]; -extern const u8 gUnknown_841D6EC[]; -extern const u8 gUnknown_841D708[]; -extern const u8 gUnknown_841D74C[]; -extern const u8 gUnknown_841D768[]; -extern const u8 gUnknown_841D784[]; -extern const u8 gUnknown_841D79C[]; -extern const u8 gUnknown_841D7DC[]; -extern const u8 gUnknown_841D7F4[]; -extern const u8 gUnknown_841D834[]; -extern const u8 gUnknown_841D84C[]; -extern const u8 gUnknown_841D894[]; -extern const u8 gUnknown_841D8B0[]; -extern const u8 gUnknown_841D8CC[]; -extern const u8 gUnknown_841D8EC[]; -extern const u8 gUnknown_841D938[]; -extern const u8 gUnknown_841D94C[]; -extern const u8 gUnknown_841D98C[]; -extern const u8 gUnknown_841D9A0[]; -extern const u8 gUnknown_841D9C4[]; -extern const u8 gUnknown_841D9D4[]; -extern const u8 gUnknown_841DA08[]; -extern const u8 gUnknown_841DA24[]; -extern const u8 gUnknown_841DA3C[]; -extern const u8 gUnknown_841DA58[]; -extern const u8 gUnknown_841DA6C[]; -extern const u8 gUnknown_841DA88[]; -extern const u8 gUnknown_841DAA0[]; -extern const u8 gUnknown_841DAC4[]; -extern const u8 gUnknown_841DAE8[]; -extern const u8 gUnknown_841DB04[]; -extern const u8 gUnknown_841DB28[]; -extern const u8 gUnknown_841DB3C[]; -extern const u8 gUnknown_841DB7C[]; -extern const u8 gUnknown_841DBA4[]; -extern const u8 gUnknown_841DBDC[]; -extern const u8 gUnknown_841DBF8[]; -extern const u8 gUnknown_841DC2C[]; -extern const u8 gUnknown_841DC48[]; -extern const u8 gUnknown_841DCAC[]; -extern const u8 gUnknown_841DCC8[]; -extern const u8 gUnknown_841DD08[]; -extern const u8 gUnknown_841DD20[]; -extern const u8 gUnknown_841DD64[]; -extern const u8 gUnknown_841DD7C[]; -extern const u8 gUnknown_841DDC8[]; -extern const u8 gUnknown_841DDE4[]; -extern const u8 gUnknown_841DE24[]; -extern const u8 gUnknown_841DE3C[]; +extern const u8 gCreditsString_Director[]; +extern const u8 gCreditsString_Junichi_Masuda[]; +extern const u8 gCreditsString_Art_Director_Battle_Director[]; +extern const u8 gCreditsString_Ken_Sugimori_Shigeki_Morimoto[]; +extern const u8 gCreditsString_Program_Leader_Planning_Leader_Graphic_Design_Leader[]; +extern const u8 gCreditsString_Tetsuya_Watanabe_Koji_Nishino_Takao_Unno[]; +extern const u8 gCreditsString_Programmers[]; +extern const u8 gCreditsString_Hiroyuki_Nakamura_Masao_Taya_Satoshi_Nohara_Miyuki_Iwasawa_Daisuke_Goto[]; +extern const u8 gCreditsString_System_Programmers[]; +extern const u8 gCreditsString_Tetsuya_Watanabe_Akito_Mori_Hisashi_Sogabe_Sousuke_Tamada[]; +extern const u8 gCreditsString_Graphic_Designers[]; +extern const u8 gCreditsString_Takao_Unno_Asuka_Iwashita_Kanako_Eo_Hiroki_Fuchino[]; +extern const u8 gCreditsString_Graphic_Designers_2[]; +extern const u8 gCreditsString_Ken_Sugimori_Hironobu_Yoshida[]; +extern const u8 gCreditsString_Music_Composition[]; +extern const u8 gCreditsString_Go_Ichinose_Junichi_Masuda[]; +extern const u8 gCreditsString_Sound_Effects[]; +extern const u8 gCreditsString_Go_Ichinose[]; +extern const u8 gCreditsString_Game_Designers[]; +extern const u8 gCreditsString_Junichi_Masuda_Koji_Nishino_Tetsuji_Ohta[]; +extern const u8 gCreditsString_Game_Designers_2[]; +extern const u8 gCreditsString_Hitomi_Sato_Shigeru_Ohmori_Tadashi_Takahashi[]; +extern const u8 gCreditsString_Game_Scenario[]; +extern const u8 gCreditsString_Hitomi_Sato_Satoshi_Tajiri[]; +extern const u8 gCreditsString_Script_Designer_Map_Designer[]; +extern const u8 gCreditsString_Satoshi_Nohara_Shigeru_Ohmori[]; +extern const u8 gCreditsString_Parametric_Designers[]; +extern const u8 gCreditsString_Koji_Nishino_Tetsuji_Ohta_Shigeki_Morimoto[]; +extern const u8 gCreditsString_POKeDEX_Text[]; +extern const u8 gCreditsString_Kenji_Matsushima[]; +extern const u8 gCreditsString_POKeMON_Designers[]; +extern const u8 gCreditsString_Ken_Sugimori_Motofumi_Fujiwara_Shigeki_Morimoto_Hironobu_Yoshida[]; +extern const u8 gCreditsString_POKeMON_Designers_2[]; +extern const u8 gCreditsString_Satoshi_Ohta_Asuka_Iwashita_Takao_Unno_Kanako_Eo_Aimi_Tomita[]; +extern const u8 gCreditsString_POKeMON_Designers_3[]; +extern const u8 gCreditsString_Atsuko_Nishida_Muneo_Saito_Rena_Yoshikawa_Jun_Okutani[]; +extern const u8 gCreditsString_Supporting_Programmers[]; +extern const u8 gCreditsString_Teruyuki_Yoshioka_Takao_Nakano_Satoshi_Mitsuhara_Daisuke_Hoshino[]; +extern const u8 gCreditsString_NCL_Product_Testing[]; +extern const u8 gCreditsString_NCL_Super_Mario_Club[]; +extern const u8 gCreditsString_Special_Thanks[]; +extern const u8 gCreditsString_Hiro_Nakamura_Hiroyuki_Uesugi_Teruki_Murakawa_Kazuya_Suyama[]; +extern const u8 gCreditsString_Special_Thanks_2[]; +extern const u8 gCreditsString_Kenji_Tominaga_Kenjiro_Ito_Tomotaka_Komura_Michiko_Takizawa[]; +extern const u8 gCreditsString_Special_Thanks_3[]; +extern const u8 gCreditsString_Makiko_Takada_Mikiko_Ohashi_Shusaku_Egami_Takanao_Kondo_Rui_Kawaguchi[]; +extern const u8 gCreditsString_Braille_Code_Check[]; +extern const u8 gCreditsString_Japan_Braille_Library[]; +extern const u8 gCreditsString_Information_Supervisors[]; +extern const u8 gCreditsString_Hiroki_Enomoto_Kazuyuki_Terada_Yuri_Sakurai_Yumi_Funasaka_Naoko_Yanase[]; +extern const u8 gCreditsString_Coordinators[]; +extern const u8 gCreditsString_Azusa_Tajima_Akira_Kinashi_Kazuki_Yoshihara_Retsuji_Nomoto[]; +extern const u8 gCreditsString_Task_Managers[]; +extern const u8 gCreditsString_Hitoshi_Yamagami_Gakuji_Nomoto[]; +extern const u8 gCreditsString_Producers[]; +extern const u8 gCreditsString_Hiroyuki_Jinnai_Takehiro_Izushi_Hiroaki_Tsuru[]; +extern const u8 gCreditsString_Executive_Director[]; +extern const u8 gCreditsString_Satoshi_Tajiri[]; +extern const u8 gCreditsString_Executive_Producer[]; +extern const u8 gCreditsString_Satoru_Iwata[]; +extern const u8 gCreditsString_Executive_Producer_2[]; +extern const u8 gCreditsString_Tsunekaz_Ishihara[]; +extern const u8 gCreditsString_English_Version_Coordinators[]; +extern const u8 gCreditsString_Hiro_Nakamura_Seth_McMahill[]; +extern const u8 gCreditsString_Translator_Text_Editor[]; +extern const u8 gCreditsString_Nob_Ogasawara_Teresa_Lillygren[]; +extern const u8 gCreditsString_Programmers_2[]; +extern const u8 gCreditsString_Teruki_Murakawa_Souichi_Yamamoto_Yuichiro_Ito_Akira_Kinashi[]; +extern const u8 gCreditsString_Environment_Tool_Programmers[]; +extern const u8 gCreditsString_Teruki_Murakawa_Souichi_Yamamoto_Kimiko_Nakamichi[]; +extern const u8 gCreditsString_NOA_Product_Testing[]; +extern const u8 gCreditsString_Thomas_Hertzog_Kathy_Huguenard_Mika_Kurosawa[]; +extern const u8 gCreditsString_Braille_Code_Check_2[]; +extern const u8 gCreditsString_National_Federation_of_the_Blind_Patricia_A_Maurer_Japan_Braille_Library_European_Blind_Union[]; +extern const u8 gCreditsString_Braille_Code_Check_3[]; +extern const u8 gCreditsString_National_Information_Library_Service_Margaret_Campion[]; +extern const u8 gCreditsString_Special_Thanks_4[]; +extern const u8 gCreditsString_Takehiro_Izushi_Motoyasu_Tojima_Hitoshi_Yamagami_Hiroyuki_Uesugi[]; +extern const u8 gCreditsString_Special_Thanks_5[]; +extern const u8 gCreditsString_Nicola_Pratt_Barlow_Shellie_Dow_Anthony_Howitt_Naoko_Saeki_Kyoko_Onishi[]; +extern const u8 gCreditsString_Braille_Code_Check_4[]; +extern const u8 gCreditsString_The_Royal_New_Zealand_Foundation_of_the_Blind_Greg_Moran[]; +extern const u8 gCreditsString_Graphic_Designer[]; +extern const u8 gCreditsString_Akira_Kinashi[]; #endif //GUARD_STRINGS_H -- cgit v1.2.3 From de31b97196972501f0a492547a598781e76db595 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 25 Sep 2019 13:50:16 -0400 Subject: Update name of LoadMonPicForCredits --- include/trainer_pokemon_sprites.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h index a7ad603b4..a267737f5 100644 --- a/include/trainer_pokemon_sprites.h +++ b/include/trainer_pokemon_sprites.h @@ -15,6 +15,6 @@ u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 palet u16 FreeAndDestroyTrainerPicSprite(u16); u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass); u16 CreateMonPicSprite_HandleDeoxys(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); -u16 LoadMonPicForCredits(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId); +u16 LoadMonPicInWindow(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId); #endif // GUARD_TRAINER_POKEMON_SPRITES_H -- cgit v1.2.3 From bdeea4ca2855696db8c6ca51872ec7d19783636f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 25 Sep 2019 17:16:57 -0400 Subject: field_fadetransition begin --- include/cable_club.h | 1 + include/field_fadetransition.h | 2 ++ include/field_map_obj.h | 1 + include/field_player_avatar.h | 3 +++ include/field_screen_effect.h | 1 + include/fldeff.h | 2 ++ include/link.h | 1 + include/map_preview_screen.h | 1 + include/overworld.h | 3 +++ include/quest_log.h | 1 + include/start_menu.h | 2 ++ 11 files changed, 18 insertions(+) (limited to 'include') diff --git a/include/cable_club.h b/include/cable_club.h index 401cfacf1..5375c2210 100644 --- a/include/cable_club.h +++ b/include/cable_club.h @@ -9,5 +9,6 @@ // Exported ROM declarations void sub_8081A90(u8 taskId); +u8 sub_8081150(void); #endif //GUARD_CABLE_CLUB_H diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h index 4ba350491..fe67fec30 100644 --- a/include/field_fadetransition.h +++ b/include/field_fadetransition.h @@ -16,4 +16,6 @@ void sub_807DC18(void); void FieldCallback_ReturnToEventScript2(void); void sub_807DC00(void); +bool32 sub_807E418(void); + #endif // GUARD_FIELD_FADETRANSITION_H diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 83cc263e5..7228b9318 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -90,6 +90,7 @@ u8 sub_805EB44(u8, u8, s16, s16); void npc_paltag_set_load(u8 mode); bool8 FieldObjectIsMovementOverridden(struct MapObject *mapObject); u8 FieldObjectCheckHeldMovementStatus(struct MapObject *mapObject); +u8 sub_8063F84(u8 direction); // Exported data declarations diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index b87de3fef..00a3b7978 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -28,5 +28,8 @@ u8 GetPlayerAvatarObjectId(void); u8 PlayerGetZCoord(void); u8 GetPlayerAvatarGraphicsIdByCurrentState(void); void sub_805CB70(void); +void sub_805CB04(bool8); +void sub_805DC04(void); +bool32 sub_805DC24(void); #endif //GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h index d1fde7eac..0c6cc35cb 100644 --- a/include/field_screen_effect.h +++ b/include/field_screen_effect.h @@ -7,5 +7,6 @@ void sub_80AF79C(void); void sub_807F028(u8); void sub_80B0244(void); void sub_807E3EC(void); +void sub_807F114(void); #endif // GUARD_FIELD_SCREEN_EFFECT_H diff --git a/include/fldeff.h b/include/fldeff.h index e5e7e5f7d..e3f703947 100644 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -13,6 +13,8 @@ bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId); u8 oei_task_add(void); // flash +u8 sub_80C9DCC(u8 lightLevel, u8 mapType); +u8 sub_80C9D7C(u8 mapType1, u8 mapType2); // cut diff --git a/include/link.h b/include/link.h index 5f8d8f161..950c48d3f 100644 --- a/include/link.h +++ b/include/link.h @@ -213,5 +213,6 @@ void sub_8054A28(void); void sub_800B1F4(void); void LoadWirelessStatusIndicatorSpriteGfx(void); void CreateWirelessStatusIndicatorSprite(u8, u8); +void sub_8009FE8(void); #endif // GUARD_LINK_H diff --git a/include/map_preview_screen.h b/include/map_preview_screen.h index 6590019e2..71015aacf 100644 --- a/include/map_preview_screen.h +++ b/include/map_preview_screen.h @@ -47,5 +47,6 @@ struct MapPreviewScreen u16 sub_80F8318(u8 id); void sub_80F85BC(u16 a0); u16 sub_80F856C(u8 id); +bool8 sub_80F8110(u8 mapsec, bool8 forceFirstTime); #endif //GUARD_MAP_PREVIEW_SCREEN_H diff --git a/include/overworld.h b/include/overworld.h index 8c5dde2b0..2b6013217 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -133,6 +133,9 @@ void Overworld_ResetStateAfterDigEscRope(void); bool32 sub_8058244(void); u8 GetCurrentMapType(void); +u8 get_map_light_from_warp0(void); +const struct MapHeader *warp1_get_mapheader(void); + void Overworld_CreditsMainCB(void); bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd *, u8); diff --git a/include/quest_log.h b/include/quest_log.h index 858ea593a..0690dd282 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -32,6 +32,7 @@ void sub_8112EDC(u8 a0); u8 sub_8112EB4(void); void sub_8113018(const u8 * text, u8 mode); void MapNamePopupWindowIdSetDummy(void); +void sub_8111CF0(void); extern u8 gUnknown_203ADFA; diff --git a/include/start_menu.h b/include/start_menu.h index f5b38ee5e..c4a3ce19d 100644 --- a/include/start_menu.h +++ b/include/start_menu.h @@ -4,5 +4,7 @@ #include "global.h" void AppendToList(u8* list, u8* pos, u8 newEntry); +void sub_806F1F0(u8 taskId); +void sub_806F1D4(void); #endif // GUARD_START_MENU_H -- cgit v1.2.3 From 3a6b6bf9e99ecdeb9c39c2a320252c1b57c2b275 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 26 Sep 2019 10:50:41 -0400 Subject: Finish field_fadetransition --- include/field_effect.h | 4 ++++ include/field_map_obj.h | 3 +++ include/field_player_avatar.h | 2 ++ include/link.h | 1 + include/map_preview_screen.h | 1 + include/overworld.h | 2 ++ 6 files changed, 13 insertions(+) (limited to 'include') diff --git a/include/field_effect.h b/include/field_effect.h index 0ab2d0475..8c89f8c9c 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -85,5 +85,9 @@ void FieldEffectActiveListRemove(u8 id); void sub_8085620(void); void FieldEffectStop(struct Sprite *sprite, u8 id); u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer); +void sub_8084454(void); +void sub_8084784(u8 a0, u8 a1); +void sub_8084F2C(u8 a0); +void sub_80853CC(u8 a0); #endif //GUARD_FIELD_EFFECTS_H diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 7228b9318..baed87ac6 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -52,9 +52,12 @@ u8 SpawnSpecialFieldObjectParameterized(u8, u8, u8, s16, s16, u8); u8 SpawnSpecialFieldObject(struct MapObjectTemplate *); void sub_8093038(s16, s16, s16 *, s16 *); void CameraObjectReset1(void); +void CameraObjectReset2(void); void FieldObjectSetGraphicsId(struct MapObject *, u8); void FieldObjectTurn(struct MapObject *, u8); void FieldObjectTurnByLocalIdAndMap(u8, u8, u8, u8); +void FieldObjectForceSetSpecialAnim(struct MapObject *, u8); +u8 sub_8064270(u8 a0); const struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8); void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8); void gpu_pal_allocator_reset__manage_upper_four(void); diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 00a3b7978..2c408afc9 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -30,6 +30,8 @@ u8 GetPlayerAvatarGraphicsIdByCurrentState(void); void sub_805CB70(void); void sub_805CB04(bool8); void sub_805DC04(void); +void sub_805DAB0(void); +bool32 sub_805DAD0(void); bool32 sub_805DC24(void); #endif //GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/link.h b/include/link.h index 950c48d3f..d5d3f08a3 100644 --- a/include/link.h +++ b/include/link.h @@ -214,5 +214,6 @@ void sub_800B1F4(void); void LoadWirelessStatusIndicatorSpriteGfx(void); void CreateWirelessStatusIndicatorSprite(u8, u8); void sub_8009FE8(void); +void sub_800A068(void); #endif // GUARD_LINK_H diff --git a/include/map_preview_screen.h b/include/map_preview_screen.h index 71015aacf..5ab5584e5 100644 --- a/include/map_preview_screen.h +++ b/include/map_preview_screen.h @@ -48,5 +48,6 @@ u16 sub_80F8318(u8 id); void sub_80F85BC(u16 a0); u16 sub_80F856C(u8 id); bool8 sub_80F8110(u8 mapsec, bool8 forceFirstTime); +bool32 sub_80F83B0(void); #endif //GUARD_MAP_PREVIEW_SCREEN_H diff --git a/include/overworld.h b/include/overworld.h index 2b6013217..92b0f6001 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -135,6 +135,8 @@ u8 GetCurrentMapType(void); u8 get_map_light_from_warp0(void); const struct MapHeader *warp1_get_mapheader(void); +void sub_8055F88(void); +void sub_8056788(void); void Overworld_CreditsMainCB(void); bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd *, u8); -- cgit v1.2.3 From 55a70ffb18320e47591bcf98a414481cf477e546 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 26 Sep 2019 11:17:06 -0400 Subject: Some cleanup --- include/field_screen_effect.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h index 0c6cc35cb..1b8044592 100644 --- a/include/field_screen_effect.h +++ b/include/field_screen_effect.h @@ -8,5 +8,6 @@ void sub_807F028(u8); void sub_80B0244(void); void sub_807E3EC(void); void sub_807F114(void); +void sub_807F204(u8 taskId); #endif // GUARD_FIELD_SCREEN_EFFECT_H -- cgit v1.2.3 From 779f48d19de47f9a1a45db9e9911c3c80e4164d9 Mon Sep 17 00:00:00 2001 From: jiangzhengwenjz Date: Sat, 28 Sep 2019 12:42:26 +0800 Subject: palette --- include/fldeff.h | 1 + include/graphics.h | 4 ++-- include/palette.h | 58 ++++++++++++++++++++++++++---------------------------- 3 files changed, 31 insertions(+), 32 deletions(-) (limited to 'include') diff --git a/include/fldeff.h b/include/fldeff.h index e3f703947..25d5b8d43 100644 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -7,6 +7,7 @@ gTasks[taskId].data[8] = (u32)func >> 16; \ gTasks[taskId].data[9] = (u32)func; +extern u8 *gUnknown_203AAB0; extern struct MapPosition gPlayerFacingPosition; bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId); diff --git a/include/graphics.h b/include/graphics.h index d8858b36f..e8d4f9cee 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -176,7 +176,7 @@ extern const u32 gTradeGba_Gfx[]; extern const u8 gUnknown_8E86240[]; extern const u8 gUnknown_8E86BE8[]; extern const u8 gUnknown_8E86D6C[]; -extern const u8 gUnknown_8E86F98[]; +extern const u32 gUnknown_8E86F98[]; // berry_fix_program extern const u8 gBerryFixGameboy_Gfx[]; @@ -201,7 +201,7 @@ extern const u8 gBerryFixWindow_Pal[]; // item_pc extern const u8 gItemPcTiles[]; -extern const u8 gItemPcBgPals[]; +extern const u32 gItemPcBgPals[]; extern const u8 gItemPcTilemap[]; // item_menu_icons diff --git a/include/palette.h b/include/palette.h index 300236d1e..145d6e6b6 100644 --- a/include/palette.h +++ b/include/palette.h @@ -3,8 +3,6 @@ #include "global.h" -#include "global.h" - #define gPaletteFade_selectedPalettes (gPaletteFade.multipurpose1) // normal and fast fade #define gPaletteFade_blendCnt (gPaletteFade.multipurpose1) // hardware fade #define gPaletteFade_delay (gPaletteFade.multipurpose2) // normal and hardware fade @@ -13,10 +11,15 @@ #define PLTT_BUFFER_SIZE 0x200 #define PLTT_DECOMP_BUFFER_SIZE (PLTT_BUFFER_SIZE * 2) +#define PALETTE_FADE_STATUS_DELAY 2 +#define PALETTE_FADE_STATUS_ACTIVE 1 +#define PALETTE_FADE_STATUS_DONE 0 +#define PALETTE_FADE_STATUS_LOADING 0xFF + enum { FAST_FADE_IN_FROM_WHITE, - FAST_FADE_OUT_TO_WHTIE, + FAST_FADE_OUT_TO_WHITE, FAST_FADE_IN_FROM_BLACK, FAST_FADE_OUT_TO_BLACK, }; @@ -39,44 +42,39 @@ struct PaletteFadeControl u16 softwareFadeFinishing:1; u16 objPaletteToggle:1; u8 deltaY:4; // rate of change of blend coefficient + u32 unused; }; extern struct PaletteFadeControl gPaletteFade; extern u32 gPlttBufferTransferPending; -extern u8 *gUnknown_203AAB0; extern u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE]; extern u16 gPlttBufferFaded[PLTT_BUFFER_SIZE]; -void LoadCompressedPalette(const void *, u16, u16); -void LoadPalette(const void *, u16, u16); -void FillPalette(u16, u16, u16); +void LoadCompressedPalette(const u32 *src, u16 offset, u16 size); +void LoadPalette(const void *src, u16 offset, u16 size); +void FillPalette(u16 value, u16 offset, u16 size); void TransferPlttBuffer(void); u8 UpdatePaletteFade(void); void ResetPaletteFade(void); void ReadPlttIntoBuffers(void); -bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16); -bool8 unref_sub_8073D3C(u32, u8, u8, u8, u16); -void unref_sub_8073D84(u8, u32 *); -void ResetPaletteStructByUid(u16); -void ResetPaletteStruct(u8); -void ResetPaletteFadeControl(); -void unref_sub_8074168(u16); -void unref_sub_8074194(u16); -void InvertPlttBuffer(u32); -void TintPlttBuffer(u32, s8, s8, s8); -void UnfadePlttBuffer(u32); -void BeginFastPaletteFade(u8); -void BeginHardwarePaletteFade(u8, u8, u8, u8, u8); -void BlendPalettes(u32, u8, u16); -void BlendPalettesUnfaded(u32, u8, u16); -void sub_80716F8(const u16 *, u16 *, u16, u8); -void TintPalette_GrayScale(u16 *, u16); -void TintPalette_GrayScale2(u16 *, u16); -void TintPalette_SepiaTone(u16 *, u16); -void sub_80717A8(u32, s8, u8, u8, u16, u8, u8); -bool32 sub_807185C(u8); +bool8 BeginNormalPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targetY, u16 blendColor); +void ResetPaletteFadeControl(void); +void InvertPlttBuffer(u32 selectedPalettes); +void TintPlttBuffer(u32 selectedPalettes, s8 r, s8 g, s8 b); +void UnfadePlttBuffer(u32 selectedPalettes); +void BeginFastPaletteFade(u8 submode); +void BeginHardwarePaletteFade(u8 blendCnt, u8 delay, u8 y, u8 targetY, u8 shouldResetBlendRegisters); +void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color); +void BlendPalettesUnfaded(u32 selectedPalettes, u8 coeff, u16 color); +void TintPalette_GrayScale(u16 *palette, u16 count); +void TintPalette_GrayScale2(u16 *palette, u16 count); +void TintPalette_SepiaTone(u16 *palette, u16 count); +void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 bTone); +void sub_80716F8(const u16 *src, u16 *dst, u16 count, u8 a4); +void sub_80717A8(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7); +bool32 sub_807185C(u8 var); void sub_8071898(void); - -extern struct PaletteFadeControl gPaletteFade; +void ResetPaletteStructByUid(u16 a1); +void ResetPaletteStruct(u8 paletteNum); #endif // GUARD_PALETTE_H -- cgit v1.2.3 From db3d5c90433a94747c23e48cf85badfc5286b07f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Sep 2019 12:33:01 -0400 Subject: Start berry_pouch decomp --- include/menu_helpers.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 7fe8c19b2..c18d4313e 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -3,6 +3,7 @@ #include "global.h" #include "task.h" +#include "window.h" struct YesNoFuncTable { -- cgit v1.2.3 From b6c7c6523fedb21e5928fbaf8e01747f4283cfc1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Sep 2019 16:11:41 -0400 Subject: berry_pouch through sub_813D0E4 --- include/graphics.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'include') diff --git a/include/graphics.h b/include/graphics.h index d8858b36f..9d4bdf177 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -998,4 +998,12 @@ extern const u16 gCreditsAllRightsReservedGfxPal[]; extern const u8 gCreditsAllRightsReservedGfxTiles[]; extern const u8 gCreditsAllRightsReservedGfxMap[]; +// berry_pouch +extern const u8 gUnknown_8E8560C[]; +extern const u8 gUnknown_8E859D0[]; +extern const u8 gUnknown_8E85BA4[]; +extern const u8 gUnknown_8E85BF4[]; +extern const u8 gUnknown_8E85C1C[]; +extern const u8 gUnknown_8E85C44[]; + #endif //GUARD_GRAPHICS_H -- cgit v1.2.3 From 0993cb64f7c3a4ff8827da72acc76afccca682e6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Sep 2019 20:27:41 -0400 Subject: Berry_pouch through sub_813D5BC --- include/strings.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'include') diff --git a/include/strings.h b/include/strings.h index dfedb4afa..5c3cbb67b 100644 --- a/include/strings.h +++ b/include/strings.h @@ -315,4 +315,7 @@ extern const u8 gCreditsString_The_Royal_New_Zealand_Foundation_of_the_Blind_Gre extern const u8 gCreditsString_Graphic_Designer[]; extern const u8 gCreditsString_Akira_Kinashi[]; +// berry_pouch +extern const u8 gUnknown_8416716[]; + #endif //GUARD_STRINGS_H -- cgit v1.2.3 From b843b5529227e301895920b56585cf9ec69c9b53 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Sep 2019 21:35:20 -0400 Subject: berry_pouch through sub_813D940 --- include/item.h | 1 + include/strings.h | 1 + 2 files changed, 2 insertions(+) (limited to 'include') diff --git a/include/item.h b/include/item.h index 0f0adbca8..f0aaa0f6c 100644 --- a/include/item.h +++ b/include/item.h @@ -77,5 +77,6 @@ u16 GetPcItemQuantity(u16 *); void ItemPcCompaction(void); void RemoveItemFromPC(u16 itemId, u16 quantity); +void SortAndCompactBagPocket(struct BagPocket * pocket); #endif // GUARD_ITEM_H diff --git a/include/strings.h b/include/strings.h index 5c3cbb67b..c0863dffb 100644 --- a/include/strings.h +++ b/include/strings.h @@ -316,6 +316,7 @@ extern const u8 gCreditsString_Graphic_Designer[]; extern const u8 gCreditsString_Akira_Kinashi[]; // berry_pouch +extern const u8 gUnknown_841670A[]; extern const u8 gUnknown_8416716[]; #endif //GUARD_STRINGS_H -- cgit v1.2.3 From e65487716a0afc3c48d712f706783c58cc82676c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Sep 2019 16:59:39 -0400 Subject: berry_pouch through sub_813E2B8 --- include/party_menu.h | 1 + include/strings.h | 4 ++++ 2 files changed, 5 insertions(+) (limited to 'include') diff --git a/include/party_menu.h b/include/party_menu.h index cd2a5bc37..bea5dcdde 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -81,5 +81,6 @@ void sub_8127DA8(u8 battlerId, u8 multiplayerFlag); void OpenPartyMenuInBattle(u8 arg); void sub_8127EC4(u8 battlerId, u8 unk, u8 arrayIndex); bool8 IsMultiBattle(void); +void sub_8126EDC(void); #endif // GUARD_PARTY_MENU_H diff --git a/include/strings.h b/include/strings.h index c0863dffb..e60344731 100644 --- a/include/strings.h +++ b/include/strings.h @@ -94,6 +94,7 @@ extern const u8 gText_Pokemon[]; extern const u8 gText_PkmnFainted3[]; extern const u8 gOtherText_Use[]; +extern const u8 gOtherText_Toss[]; extern const u8 gOtherText_Give[]; extern const u8 gOtherText_Exit[]; extern const u8 gText_ThreeHyphens[]; @@ -316,6 +317,9 @@ extern const u8 gCreditsString_Graphic_Designer[]; extern const u8 gCreditsString_Akira_Kinashi[]; // berry_pouch +extern const u8 gUnknown_84163DB[]; +extern const u8 gUnknown_84163F4[]; +extern const u8 gUnknown_8416409[]; extern const u8 gUnknown_841670A[]; extern const u8 gUnknown_8416716[]; -- cgit v1.2.3 From 64362d3040b3defb722bf72203fda64b96da1e06 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Sep 2019 17:33:57 -0400 Subject: Berry Pouch rodata --- include/graphics.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/graphics.h b/include/graphics.h index 9d4bdf177..ce671246e 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -999,11 +999,11 @@ extern const u8 gCreditsAllRightsReservedGfxTiles[]; extern const u8 gCreditsAllRightsReservedGfxMap[]; // berry_pouch -extern const u8 gUnknown_8E8560C[]; +extern const u32 gUnknown_8E8560C[]; extern const u8 gUnknown_8E859D0[]; extern const u8 gUnknown_8E85BA4[]; extern const u8 gUnknown_8E85BF4[]; -extern const u8 gUnknown_8E85C1C[]; +extern const u32 gUnknown_8E85C1C[]; extern const u8 gUnknown_8E85C44[]; #endif //GUARD_GRAPHICS_H -- cgit v1.2.3 From 89be71dcb846b1d1eded569db6dd6709cc42201f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Sep 2019 18:06:49 -0400 Subject: berry_pouch through sub_813E8D4 --- include/item.h | 7 +++---- include/strings.h | 1 + 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/include/item.h b/include/item.h index f0aaa0f6c..583a47cdc 100644 --- a/include/item.h +++ b/include/item.h @@ -64,13 +64,12 @@ u8 ItemId_GetSecondaryId(u16 itemId); u16 itemid_get_market_price(u16 itemId); void ClearItemSlotsInAllBagPockets(void); void ClearPCItemSlots(void); -void CopyItemName(u16, u8 *); void sub_809A824(u16 itemId); bool8 AddBagItem(u16 itemId, u16 amount); -void SortPocketAndPlaceHMsFirst(struct BagPocket *); -u16 BagGetItemIdByPocketPosition(u8 a0, u16 a1); -u16 BagGetQuantityByPocketPosition(u8 a0, u16 a1); +void SortPocketAndPlaceHMsFirst(struct BagPocket * pocket); +u16 BagGetItemIdByPocketPosition(u8 pocketId, u16 itemId); +u16 BagGetQuantityByPocketPosition(u8 pocketId, u16 itemId); bool8 itemid_is_unique(u16 itemId); void BagPocketCompaction(struct ItemSlot * slots, u8 capacity); u16 GetPcItemQuantity(u16 *); diff --git a/include/strings.h b/include/strings.h index e60344731..a56139909 100644 --- a/include/strings.h +++ b/include/strings.h @@ -317,6 +317,7 @@ extern const u8 gCreditsString_Graphic_Designer[]; extern const u8 gCreditsString_Akira_Kinashi[]; // berry_pouch +extern const u8 gUnknown_8416374[]; extern const u8 gUnknown_84163DB[]; extern const u8 gUnknown_84163F4[]; extern const u8 gUnknown_8416409[]; -- cgit v1.2.3 From 8eea5b6d750a629c14a152c240f84b02b5e4f0c6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Sep 2019 19:47:38 -0400 Subject: Finish berry_pouch code decomp --- include/berry_pouch.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/berry_pouch.h b/include/berry_pouch.h index 8e652225b..58f58fd99 100644 --- a/include/berry_pouch.h +++ b/include/berry_pouch.h @@ -6,7 +6,7 @@ void BerryPouch_StartFadeToExitCallback(u8 taskId); void BerryPouch_SetExitCallback(void (*)(void)); void InitBerryPouch(u8, void (*)(void), u8); -void DisplayItemMessageInBerryPouch(u8 taskId, u8 bgId, const u8 * str, TaskFunc followUpFunc); +void DisplayItemMessageInBerryPouch(u8 taskId, u8 fontId, const u8 * str, TaskFunc followUpFunc); void sub_813E2B8(u8 taskId); #endif //GUARD_BERRY_POUCH_H -- cgit v1.2.3 From beedb8d73f40b045906f521b48f40367697b6ebb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Sep 2019 20:58:29 -0400 Subject: Tidy global namespace and document --- include/berry_pouch.h | 17 ++++++++++++++--- include/graphics.h | 4 ++-- include/menu_helpers.h | 2 +- include/strings.h | 12 ++++++------ 4 files changed, 23 insertions(+), 12 deletions(-) (limited to 'include') diff --git a/include/berry_pouch.h b/include/berry_pouch.h index 58f58fd99..cd9866d81 100644 --- a/include/berry_pouch.h +++ b/include/berry_pouch.h @@ -3,10 +3,21 @@ #include "task.h" +enum BerryPouchType +{ + BERRYPOUCH_FROMFIELD, + BERRYPOUCH_FROMPARTYGIVE, + BERRYPOUCH_FROMMARTSELL, + BERRYPOUCH_FROMPOKEMONSTORAGEPC, + BERRYPOUCH_FROMBATTLE, + BERRYPOUCH_FROMBERRYCRUSH, + BERRYPOUCH_NA +}; + void BerryPouch_StartFadeToExitCallback(u8 taskId); -void BerryPouch_SetExitCallback(void (*)(void)); -void InitBerryPouch(u8, void (*)(void), u8); +void BerryPouch_SetExitCallback(void (*exitCallback)(void)); +void InitBerryPouch(u8 type, void (*savedCallback)(void), u8 allowSelect); void DisplayItemMessageInBerryPouch(u8 taskId, u8 fontId, const u8 * str, TaskFunc followUpFunc); -void sub_813E2B8(u8 taskId); +void Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu(u8 taskId); #endif //GUARD_BERRY_POUCH_H diff --git a/include/graphics.h b/include/graphics.h index ce671246e..5c6f201db 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -999,11 +999,11 @@ extern const u8 gCreditsAllRightsReservedGfxTiles[]; extern const u8 gCreditsAllRightsReservedGfxMap[]; // berry_pouch -extern const u32 gUnknown_8E8560C[]; +extern const u32 gBerryPouchSpriteTiles[]; extern const u8 gUnknown_8E859D0[]; extern const u8 gUnknown_8E85BA4[]; extern const u8 gUnknown_8E85BF4[]; -extern const u32 gUnknown_8E85C1C[]; +extern const u32 gBerryPouchSpritePalette[]; extern const u8 gUnknown_8E85C44[]; #endif //GUARD_GRAPHICS_H diff --git a/include/menu_helpers.h b/include/menu_helpers.h index c18d4313e..6ea771500 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -23,7 +23,7 @@ void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 palet void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 fontId, u8 left, u8 top, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo); u8 GetLRKeysState(void); u8 sub_80BF66C(void); -bool8 sub_80BF6A8(u16 itemId); +bool8 itemid_link_can_give_berry(u16 itemId); bool8 itemid_80BF6D8_mail_related(u16 itemId); void ClearVramOamPltt(void); diff --git a/include/strings.h b/include/strings.h index a56139909..b0221b8e9 100644 --- a/include/strings.h +++ b/include/strings.h @@ -317,11 +317,11 @@ extern const u8 gCreditsString_Graphic_Designer[]; extern const u8 gCreditsString_Akira_Kinashi[]; // berry_pouch -extern const u8 gUnknown_8416374[]; -extern const u8 gUnknown_84163DB[]; -extern const u8 gUnknown_84163F4[]; -extern const u8 gUnknown_8416409[]; -extern const u8 gUnknown_841670A[]; -extern const u8 gUnknown_8416716[]; +extern const u8 gText_TheStrVar1CantBeHeldHere[]; +extern const u8 gText_TossOutHowManyStrVar1s[]; +extern const u8 gText_ThrewAwayStrVar2StrVar1s[]; +extern const u8 gText_ThrowAwayStrVar2OfThisItemQM[]; +extern const u8 gText_BerryPouch[]; +extern const u8 gText_TheBerryPouchWillBePutAway[]; #endif //GUARD_STRINGS_H -- cgit v1.2.3 From 07064bd58603de0f0470bab373196a40fe5d929c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 30 Sep 2019 21:04:25 -0400 Subject: Name extern berry pouch gfx --- include/graphics.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/include/graphics.h b/include/graphics.h index 5c6f201db..a76607f40 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -1000,10 +1000,10 @@ extern const u8 gCreditsAllRightsReservedGfxMap[]; // berry_pouch extern const u32 gBerryPouchSpriteTiles[]; -extern const u8 gUnknown_8E859D0[]; -extern const u8 gUnknown_8E85BA4[]; -extern const u8 gUnknown_8E85BF4[]; +extern const u8 gBerryPouchBgGfx[]; +extern const u8 gBerryPouchBgPals[]; +extern const u8 gBerryPouchBgPal0FemaleOverride[]; extern const u32 gBerryPouchSpritePalette[]; -extern const u8 gUnknown_8E85C44[]; +extern const u8 gBerryPouchBg1Tilemap[]; #endif //GUARD_GRAPHICS_H -- cgit v1.2.3 From afd5f1f52f7a2b74e9850892aef118292a45df8e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 2 Oct 2019 21:26:01 -0400 Subject: itemfinder through sub_813F004 --- include/field_specials.h | 1 + include/global.fieldmap.h | 36 ++++++++++++++++++++++-------------- include/strings.h | 5 +++++ 3 files changed, 28 insertions(+), 14 deletions(-) (limited to 'include') diff --git a/include/field_specials.h b/include/field_specials.h index 9a85a8b49..40adbdf9a 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -14,5 +14,6 @@ u8 ContextNpcGetTextColor(void); void set_unknown_box_id(u8); u16 get_unknown_box_id(void); bool8 sub_80CC7B4(void); +u16 sub_80CC44C(struct HiddenItemStruct hiddenItem, u8 attr); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 3623737ea..cc9510997 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -120,26 +120,34 @@ struct CoordEvent u8 *script; }; +struct HiddenItemStruct +{ + u32 field_00:16; + u32 hiddenItemId:8; // flag offset to determine flag lookup + u32 field_03_0:7; + u32 field_03_7:1; +}; + +union BgUnion +{ // carried over from diego's FR/LG work, seems to be the same struct + // in gen 3, "kind" (0x3 in BgEvent struct) determines the method to read the union. + u8 *script; + + // hidden item type probably + struct HiddenItemStruct hiddenItem; + + // secret base type + u32 secretBaseId; + +}; + struct BgEvent { u16 x, y; u8 unk4; u8 kind; // 0x2 padding for the union beginning. - union { // carried over from diego's FR/LG work, seems to be the same struct - // in gen 3, "kind" (0x3 in BgEvent struct) determines the method to read the union. - u8 *script; - - // hidden item type probably - struct { - u8 filler6[0x2]; - u16 hiddenItemId; // flag offset to determine flag lookup - } hiddenItem; - - // secret base type - u32 secretBaseId; - - } bgUnion; + union BgUnion bgUnion; }; struct MapEvents diff --git a/include/strings.h b/include/strings.h index b0221b8e9..9ddce6044 100644 --- a/include/strings.h +++ b/include/strings.h @@ -324,4 +324,9 @@ extern const u8 gText_ThrowAwayStrVar2OfThisItemQM[]; extern const u8 gText_BerryPouch[]; extern const u8 gText_TheBerryPouchWillBePutAway[]; +// itemfinder +extern const u8 gText_ItemfinderResponding[]; +extern const u8 gText_ItemfinderShakingWildly[]; +extern const u8 gText_NopeTheresNoResponse[]; + #endif //GUARD_STRINGS_H -- cgit v1.2.3 From 26d940dfeb48d8471db4a0cf2477aff68f681090 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 3 Oct 2019 12:12:06 -0400 Subject: Finish itemfinder dism/decomp --- include/event_scripts.h | 2 ++ include/field_specials.h | 2 +- include/fieldmap.h | 2 ++ include/itemfinder.h | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/event_scripts.h b/include/event_scripts.h index 91612c06b..310335196 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -1153,4 +1153,6 @@ extern const u8 EventScript_SafariRetire[]; extern const u8 EventScript_SafariWarpOut[]; extern const u8 EventScript_SafariOutOfBalls[]; +extern const u8 EventScript_ItemfinderDigUpUnderfootItem[]; + #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/field_specials.h b/include/field_specials.h index 40adbdf9a..d5a3eead8 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -14,6 +14,6 @@ u8 ContextNpcGetTextColor(void); void set_unknown_box_id(u8); u16 get_unknown_box_id(void); bool8 sub_80CC7B4(void); -u16 sub_80CC44C(struct HiddenItemStruct hiddenItem, u8 attr); +u16 GetHiddenItemAttr(struct HiddenItemStruct hiddenItem, u8 attr); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/fieldmap.h b/include/fieldmap.h index 9903962a1..7bedb1d94 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -23,5 +23,7 @@ bool8 MapGridIsImpassableAt(s32, s32); s32 GetMapBorderIdAt(s32, s32); bool32 CanCameraMoveInDirection(s32); u32 GetBehaviorByMetatileIdAndMapData(struct MapData *mapData, u16 metatile, u8 attr); +const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * connection); +struct MapConnection * GetMapConnectionAtPos(s16 x, s16 y); #endif //GUARD_FIELDMAP_H diff --git a/include/itemfinder.h b/include/itemfinder.h index 2b882b144..de63e9362 100644 --- a/include/itemfinder.h +++ b/include/itemfinder.h @@ -1,6 +1,6 @@ #ifndef GUARD_ITEMFINDER_H #define GUARD_ITEMFINDER_H -void sub_813EC8C(u8 taskId); +void ItemUseOnFieldCB_Itemfinder(u8 taskId); #endif //GUARD_ITEMFINDER_H -- cgit v1.2.3 From a56a90d998cfdce7ea2bcacb9958ef312b19792b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 3 Oct 2019 14:01:57 -0400 Subject: Resolve review comments --- include/global.fieldmap.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index cc9510997..f90c6fc66 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -122,10 +122,10 @@ struct CoordEvent struct HiddenItemStruct { - u32 field_00:16; + u32 quantity:16; u32 hiddenItemId:8; // flag offset to determine flag lookup u32 field_03_0:7; - u32 field_03_7:1; + u32 isUnderfoot:1; }; union BgUnion -- cgit v1.2.3 From 38d2b717173e9d6b24766fc3d6e46002db684cf5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 3 Oct 2019 15:20:28 -0400 Subject: Normal hidden item script; hidden item attr enum --- include/constants/flags.h | 2 +- include/field_specials.h | 8 ++++++++ include/global.fieldmap.h | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/constants/flags.h b/include/constants/flags.h index de9a98b43..7f4655d4e 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -668,7 +668,7 @@ #define FLAG_0x240 0x240 #define FLAG_0x241 0x241 #define FLAG_0x242 0x242 -#define FLAG_0x243 0x243 +#define FLAG_GOT_COIN_CASE 0x243 #define FLAG_0x244 0x244 #define FLAG_0x245 0x245 #define FLAG_0x246 0x246 diff --git a/include/field_specials.h b/include/field_specials.h index d5a3eead8..b48dd34a5 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -3,6 +3,14 @@ #include "global.h" +enum HiddenItemAttr +{ + HIDDEN_ITEM_ID = 0, + HIDDEN_ITEM_FLAG, + HIDDEN_ITEM_QUANTITY, + HIDDEN_ITEM_UNDERFOOT +}; + u8 GetLeadMonIndex(void); u8 CountDigits(u16 number); void TV_PrintIntToStringVar(u8, int); diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index f90c6fc66..bf142d265 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -122,9 +122,9 @@ struct CoordEvent struct HiddenItemStruct { - u32 quantity:16; + u32 itemId:16; u32 hiddenItemId:8; // flag offset to determine flag lookup - u32 field_03_0:7; + u32 quantity:7; u32 isUnderfoot:1; }; -- cgit v1.2.3 From 1f6f5f369bcb2ab28d0fb73b358d075fdc195ba5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 4 Oct 2019 12:55:48 -0400 Subject: wild_pokemon_area and pokedex_area_markers --- include/constants/vars.h | 4 ++-- include/field_specials.h | 1 + include/gba/types.h | 4 ++++ include/pokedex_area_markers.h | 16 ++++++++++++++++ include/roamer.h | 1 + include/wild_pokemon_area.h | 6 ++++++ 6 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 include/pokedex_area_markers.h create mode 100644 include/wild_pokemon_area.h (limited to 'include') diff --git a/include/constants/vars.h b/include/constants/vars.h index 989b27387..a354320c2 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -39,8 +39,8 @@ #define VAR_0x4021 0x4021 #define VAR_ICE_STEP_COUNT 0x4022 #define VAR_0x4023 0x4023 -#define VAR_MIRAGE_RND_H 0x4024 -#define VAR_MIRAGE_RND_L 0x4025 +#define VAR_0x4024 0x4024 +#define VAR_0x4025 0x4025 #define VAR_SECRET_BASE_MAP 0x4026 #define VAR_0x4027 0x4027 #define VAR_0x4028 0x4028 diff --git a/include/field_specials.h b/include/field_specials.h index b48dd34a5..2abe168e0 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -23,5 +23,6 @@ void set_unknown_box_id(u8); u16 get_unknown_box_id(void); bool8 sub_80CC7B4(void); u16 GetHiddenItemAttr(struct HiddenItemStruct hiddenItem, u8 attr); +u8 GetUnlockedSeviiAreas(void); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/gba/types.h b/include/gba/types.h index 9f2594703..7163f925f 100644 --- a/include/gba/types.h +++ b/include/gba/types.h @@ -68,6 +68,10 @@ struct OamData /*0x06*/ u16 affineParam; }; +#define ST_OAM_HFLIP 0x08 +#define ST_OAM_VFLIP 0x10 +#define ST_OAM_MNUM_FLIP_MASK 0x18 + #define ST_OAM_OBJ_NORMAL 0 #define ST_OAM_OBJ_BLEND 1 #define ST_OAM_OBJ_WINDOW 2 diff --git a/include/pokedex_area_markers.h b/include/pokedex_area_markers.h new file mode 100644 index 000000000..da73fd529 --- /dev/null +++ b/include/pokedex_area_markers.h @@ -0,0 +1,16 @@ +#ifndef GUARD_POKEDEX_AREA_MARKERS_H +#define GUARD_POKEDEX_AREA_MARKERS_H + +struct PAM_TaskData +{ + struct SubspriteTable subsprites; + void * buffer; + u8 unk_0C; + u8 spr_id; + u16 tilesTag; + u16 unk_10; +}; + +void SetAreaSubsprite(s32 i, s32 whichArea, struct Subsprite * subsprites); + +#endif //GUARD_POKEDEX_AREA_MARKERS_H diff --git a/include/roamer.h b/include/roamer.h index 5ec0a17fc..1d23ff605 100644 --- a/include/roamer.h +++ b/include/roamer.h @@ -15,5 +15,6 @@ u8 TryStartRoamerEncounter(void); void UpdateRoamerHPStatus(struct Pokemon *mon); void SetRoamerInactive(void); void GetRoamerLocation(u8 *mapGroup, u8 *mapNum); +u16 GetRoamerLocationMapSectionId(void); #endif // GUARD_ROAMER_H diff --git a/include/wild_pokemon_area.h b/include/wild_pokemon_area.h new file mode 100644 index 000000000..354683408 --- /dev/null +++ b/include/wild_pokemon_area.h @@ -0,0 +1,6 @@ +#ifndef GUARD_WILD_POKEMON_AREA_H +#define GUARD_WILD_POKEMON_AREA_H + +s32 BuildPokedexAreaSubspriteBuffer(u16 species, struct Subsprite * subsprites); + +#endif //GUARD_WILD_POKEMON_AREA_H -- cgit v1.2.3 From cb3e751f5f8990f7e36e141869a14f62e44eceff Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Oct 2019 12:13:33 -0400 Subject: Decompile mailbox_pc and dump decorations --- include/global.h | 3 ++- include/new_menu_helpers.h | 2 +- include/player_pc.h | 11 +++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/global.h b/include/global.h index 9a398354d..55233a340 100644 --- a/include/global.h +++ b/include/global.h @@ -498,7 +498,8 @@ typedef union QuestLogScene QuestLogScene; #define BERRY_TREES_COUNT 128 #define FLAGS_COUNT 288 // 300 #define VARS_COUNT 256 -#define MAIL_COUNT 16 +#define MAIL_COUNT (PARTY_SIZE + 10) +#define PC_MAIL_NUM(i) (PARTY_SIZE + (i)) // Declare here so that it can be recursively referenced. union QuestLogMovement; diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index 7b83c913b..a7555c505 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -30,7 +30,7 @@ void sub_80F6E9C(void); void DrawDialogueFrame(u8 windowId, bool8 transfer); void DrawStdWindowFrame(u8 windowId, bool8 copyNow); void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram); -void ClearStdWindowAndFrame(u8 taskId, bool8 copyNow); +void ClearStdWindowAndFrame(u8 windowId, bool8 copyNow); void sub_80F6C14(void); void sub_80F771C(bool8 copyToVram); void SetStdWindowBorderStyle(u8 windowId, bool8 copyToVram); diff --git a/include/player_pc.h b/include/player_pc.h index e14e5e9da..f527ec9f5 100644 --- a/include/player_pc.h +++ b/include/player_pc.h @@ -2,9 +2,20 @@ #define GUARD_PLAYER_PC_H #include "global.h" +#include "list_menu.h" // Exported type declarations +struct PlayerPC_Unk_203AAC4 +{ + u16 selectedRow; + u16 scrollOffset; + u8 unk_4; + u8 unk_5; + u8 filler_6[4]; + u8 unk_A; +}; + // Exported RAM declarations // Exported ROM declarations -- cgit v1.2.3 From 69cb422b78644c60e5471eea8c82ea9347d48b60 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Oct 2019 12:25:18 -0400 Subject: Name functions in mailbox_pc --- include/mailbox_pc.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 include/mailbox_pc.h (limited to 'include') diff --git a/include/mailbox_pc.h b/include/mailbox_pc.h new file mode 100644 index 000000000..c2d18fc4b --- /dev/null +++ b/include/mailbox_pc.h @@ -0,0 +1,12 @@ +#ifndef GUARD_MAILBOX_PC_H +#define GUARD_MAILBOX_PC_H + +bool8 MailboxPC_InitBuffers(u8 num); +u8 MailboxPC_GetAddWindow(u8 winIdx); +void MailboxPC_RemoveWindow(u8 winIdx); +u8 MailboxPC_GetWindowId(u8 winIdx); +u8 MailboxPC_InitListMenu(struct PlayerPC_Unk_203AAC4 * playerPcStruct); +void MailboxPC_AddScrollIndicatorArrows(struct PlayerPC_Unk_203AAC4 * playerPcStruct); +void MailboxPC_DestroyListMenuBuffer(void); + +#endif //GUARD_MAILBOX_PC_H -- cgit v1.2.3 From b01da1a59260b2ac54dd876e9cf35d2c1fb944e7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Oct 2019 15:49:05 -0400 Subject: link.c through InitLocalLinkPlayer --- include/event_data.h | 2 +- include/librfu.h | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++ include/link_rfu.h | 3 ++ 3 files changed, 129 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/event_data.h b/include/event_data.h index 013579ab5..97f7e8eda 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -36,7 +36,7 @@ bool32 sub_806E2BC(void); void sub_806E6FC(void); void sub_806E2D0(void); void sub_806E370(void); -bool32 sub_806E25C(void); +bool32 IsNationalPokedexEnabled(void); extern u16 gSpecialVar_0x8000; extern u16 gSpecialVar_0x8001; diff --git a/include/librfu.h b/include/librfu.h index 90f69cb5a..d107894dd 100644 --- a/include/librfu.h +++ b/include/librfu.h @@ -1,3 +1,6 @@ +#ifndef GUARD_LIBRFU_H +#define GUARD_LIBRFU_H + #include "main.h" enum @@ -130,6 +133,128 @@ struct RfuIntrStruct u8 block2[0x30]; }; +struct RfuUnk1 +{ + u16 unk_0; + u8 unk_2; + u8 unk_3; + u8 fill_4[14]; + u8 unk_12; + u32 unk_14; + u32 unk_18; + struct RfuIntrStruct unk_1c; +}; + +struct RfuUnk2 +{ + u16 unk_0; + u16 unk_2; + u8 fill_4[0x16]; + u8 unk_1a; + u8 fill_1b[0x19]; + u16 unk_34; + u16 unk_36; + u8 fill_38[0x16]; + u8 unk_4e; + u8 fill_4f[0x12]; + u8 unk_61; + u8 fill_62[6]; + void *unk_68; + void *unk_6c; + u8 unk_70[0x70]; +}; + +struct RfuUnk3 +{ + u32 unk_0; + u32 unk_4; + u8 unk_8[0xD4]; + u32 unk_dc; +}; + +struct RfuUnk5Sub +{ + u16 unk_00; + u8 unk_02; + u16 unk_04; + struct UnkLinkRfuStruct_02022B14 unk_06; + u8 fill_13[1]; + u8 playerName[PLAYER_NAME_LENGTH + 1]; +}; + +struct RfuUnk5 +{ + u8 unk_00; + u8 unk_01; + u8 unk_02; + u8 unk_03; + u8 unk_04; + u8 unk_05; + u8 unk_06; + u8 unk_07; + u8 unk_08; + u8 filler_09[1]; + u8 unk_0a[4]; + u8 filler_0e[6]; + struct RfuUnk5Sub unk_14[4]; +}; + extern struct RfuStruct *gRfuState; +extern struct RfuUnk5 *gUnknown_03007890; +extern u32 *gUnknown_03007894; +extern struct RfuUnk3* gUnknown_03007898; +extern struct RfuUnk2* gUnknown_03007880[4]; +extern struct RfuUnk1* gUnknown_03007870[4]; +extern void* sub_82E53F4; +extern void rfu_STC_clearAPIVariables(void); + void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam); +void rfu_REQ_stopMode(void); +void rfu_waitREQComplete(void); +u32 rfu_REQBN_softReset_and_checkID(void); +void rfu_REQ_sendData(u8); +void rfu_setMSCCallback(void (*func)(u16)); +void rfu_setREQCallback(void (*func)(u16, u16)); +bool8 rfu_getMasterSlave(void); +void rfu_REQBN_watchLink(u16 a0, u8 *a1, u8 *a2, u8 *a3); +bool16 rfu_syncVBlank(void); +void rfu_REQ_reset(void); +void rfu_REQ_configSystem(u16, u8, u8); +void rfu_REQ_configGameData(u8, u16, struct UnkLinkRfuStruct_02022B14 *, u8 *); +void rfu_REQ_startSearchChild(void); +void rfu_REQ_pollSearchChild(void); +void rfu_REQ_endSearchChild(void); +void rfu_REQ_startSearchParent(void); +void rfu_REQ_pollSearchParent(void); +void rfu_REQ_endSearchParent(void); +void rfu_REQ_startConnectParent(u16); +void rfu_REQ_pollConnectParent(void); +void rfu_REQ_endConnectParent(void); +void rfu_REQ_CHILD_startConnectRecovery(u8); +void rfu_REQ_CHILD_pollConnectRecovery(void); +void rfu_REQ_CHILD_endConnectRecovery(void); +void rfu_REQ_changeMasterSlave(void); +void rfu_REQ_RFUStatus(void); +void rfu_getRFUStatus(u8 *status); +u8 *rfu_getSTWIRecvBuffer(void); +u8 rfu_NI_CHILD_setSendGameName(u8 a0, u8 a1); +void rfu_clearSlot(u8 a0, u8 a1); +void rfu_clearAllSlot(void); +bool16 rfu_CHILD_getConnectRecoveryStatus(u8 *status); +bool16 rfu_getConnectParentStatus(u8 *status, u8 *a1); +bool16 rfu_UNI_PARENT_getDRAC_ACK(u8 *a0); +void rfu_REQ_disconnect(u8 who); +void rfu_changeSendTarget(u8 a0, u8 who, u8 a2); +void rfu_NI_stopReceivingData(u8 who); +u16 rfu_initializeAPI(u32 *unk0, u16 unk1, IntrFunc *interrupt, bool8 copyInterruptToRam); +void rfu_setTimerInterrupt(u8 which, IntrFunc *intr); +void rfu_setRecvBuffer(u8 a0, u8 a1, void *a2, size_t a3); +bool16 rfu_UNI_setSendData(u8 flag, void *ptr, u8 size); +void rfu_REQ_recvData(void); +void rfu_UNI_readySendData(u8 a0); +void rfu_UNI_clearRecvNewDataFlag(u8 a0); +void rfu_REQ_PARENT_resumeRetransmitAndChange(void); +void rfu_NI_setSendData(u8, u8, const void *, u32); + +#endif // GUARD_LIBRFU_H diff --git a/include/link_rfu.h b/include/link_rfu.h index 928ae380e..e7fa2a848 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -19,5 +19,8 @@ void MEvent_CreateTask_Leader(u8); void sub_80F9E2C(void * data); u8 sub_8116DE0(void); void sub_80FBB4C(void); +void sub_80F86F4(void); +void sub_80FB128(bool32 a0); +u32 sub_80FD3A4(void); #endif //GUARD_LINK_RFU_H -- cgit v1.2.3 From 221dd4721d40abaebdbcf0823c924062c77311f5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Oct 2019 20:30:02 -0400 Subject: link through TestBlockTransfer + bss, ewram --- include/link.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/link.h b/include/link.h index d5d3f08a3..22667cc11 100644 --- a/include/link.h +++ b/include/link.h @@ -138,7 +138,7 @@ extern u16 gRecvCmds[MAX_RFU_PLAYERS][CMD_LENGTH]; extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE]; extern u16 gLinkType; extern u32 gLinkStatus; -extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; +extern u16 gBlockRecvBuffer[MAX_RFU_PLAYERS][BLOCK_BUFFER_SIZE / 2]; extern u16 gSendCmd[CMD_LENGTH]; extern u8 gShouldAdvanceLinkState; extern struct LinkPlayer gLinkPlayers[]; @@ -147,7 +147,7 @@ extern bool8 gReceivedRemoteLinkPlayers; extern bool8 gLinkVSyncDisabled; extern u8 gWirelessCommType; -extern u8 gUnknown_3003F84; +extern u8 gShouldAdvanceLinkState; extern u64 gSioMlt_Recv; void Task_DestroySelf(u8); @@ -208,7 +208,7 @@ void sub_80098D8(void); void CloseLink(void); bool8 IsLinkTaskFinished(void); bool32 sub_800B270(void); -void sub_800B388(void); +void ResetSerial(void); void sub_8054A28(void); void sub_800B1F4(void); void LoadWirelessStatusIndicatorSpriteGfx(void); -- cgit v1.2.3 From d84e9bed58db84bbb7db568c366bfa803be87139 Mon Sep 17 00:00:00 2001 From: ultima-soul Date: Sun, 6 Oct 2019 00:48:48 -0700 Subject: Decompile/port new_game --- include/battle_records.h | 13 +++++++++++++ include/berry.h | 1 + include/berry_pouch.h | 1 + include/berry_powder.h | 1 + include/easy_chat.h | 1 + include/event_data.h | 2 ++ include/global.h | 10 ++++++++-- include/item_menu.h | 1 + include/main.h | 1 + include/mevent.h | 1 + include/new_game.h | 14 ++++---------- include/overworld.h | 3 ++- include/player_pc.h | 1 + include/pokemon_jump.h | 14 ++++++++++++++ include/pokemon_size_record.h | 3 +++ include/pokemon_storage_system.h | 1 + include/quest_log.h | 2 ++ include/trainer_tower.h | 2 ++ include/union_room_chat.h | 7 +++++++ include/wild_encounter.h | 1 + 20 files changed, 67 insertions(+), 13 deletions(-) create mode 100644 include/battle_records.h create mode 100644 include/pokemon_jump.h create mode 100644 include/union_room_chat.h (limited to 'include') diff --git a/include/battle_records.h b/include/battle_records.h new file mode 100644 index 000000000..55e969b50 --- /dev/null +++ b/include/battle_records.h @@ -0,0 +1,13 @@ +#ifndef GUARD_BATTLE_RECORDS_H +#define GUARD_BATTLE_RECORDS_H + +extern u8 gRecordsWindowId; + +void ClearPlayerLinkBattleRecords(void); +void InitLinkBattleRecords(void); +void UpdatePlayerLinkBattleRecords(s32 battlerId); +void ShowLinkBattleRecords(void); +void RemoveRecordsWindow(void); +void ShowTrainerHillRecords(void); + +#endif // GUARD_BATTLE_RECORDS_H \ No newline at end of file diff --git a/include/berry.h b/include/berry.h index c5a132ccb..0e554a789 100644 --- a/include/berry.h +++ b/include/berry.h @@ -62,6 +62,7 @@ void FieldObjectInteractionPickBerryTree(void); void FieldObjectInteractionRemoveBerryTree(void); u8 PlayerHasBerries(void); void ResetBerryTreeSparkleFlags(void); +void sub_809C794(void); const struct Berry * sub_809C8A0(u8 berryIdx); extern const struct Berry gBerries[]; diff --git a/include/berry_pouch.h b/include/berry_pouch.h index cd9866d81..f478ff194 100644 --- a/include/berry_pouch.h +++ b/include/berry_pouch.h @@ -19,5 +19,6 @@ void BerryPouch_SetExitCallback(void (*exitCallback)(void)); void InitBerryPouch(u8 type, void (*savedCallback)(void), u8 allowSelect); void DisplayItemMessageInBerryPouch(u8 taskId, u8 fontId, const u8 * str, TaskFunc followUpFunc); void Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu(u8 taskId); +void BerryPouch_CursorResetToTop(void); #endif //GUARD_BERRY_POUCH_H diff --git a/include/berry_powder.h b/include/berry_powder.h index 89582aacc..f0e77c44b 100644 --- a/include/berry_powder.h +++ b/include/berry_powder.h @@ -2,5 +2,6 @@ #define GUARD_BERRY_POWDER_H u32 GetBerryPowder(void); +void SetBerryPowder(u32 *powder, u32 amount); #endif //GUARD_BERRY_POWDER_H diff --git a/include/easy_chat.h b/include/easy_chat.h index bd5c9a026..e6a48fccc 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -38,6 +38,7 @@ void InitializeEasyChatWordArray(u16 *words, u16 length); void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2); bool8 ECWord_CheckIfOutsideOfValidRange(u16 word); void sub_80BDE28(void); +void sub_80BDD34(void); void EnableRareWord(u8); #endif // GUARD_EASYCHAT_H diff --git a/include/event_data.h b/include/event_data.h index 013579ab5..c461c1d55 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -37,6 +37,8 @@ void sub_806E6FC(void); void sub_806E2D0(void); void sub_806E370(void); bool32 sub_806E25C(void); +void sub_806E0D0(void); +void sub_806E190(void); extern u16 gSpecialVar_0x8000; extern u16 gSpecialVar_0x8001; diff --git a/include/global.h b/include/global.h index 55233a340..2af9bbc94 100644 --- a/include/global.h +++ b/include/global.h @@ -227,14 +227,20 @@ struct SaveBlock2 /*0x098*/ struct Time localTimeOffset; /*0x0A0*/ struct Time lastBerryTreeUpdate; /*0x0A8*/ u32 field_A8; - /*0x0AC*/ u8 filler_AC[0x3F4]; + /*0x0AC*/ u8 field_AC; + /*0x0AD*/ u8 field_AD; + /*0x0AE*/ u8 filler_AE[0x2]; + /*0x0B0*/ u8 field_B0; + /*0x0B1*/ u8 filler_B1[0x3EF]; /*0x4A0*/ u32 unk_4A0[0x2F]; /*0x55c*/ struct UnkSaveBlock2Substruct_55C unk_55C; /*0x574*/ u8 filler_574[0x324]; /*0x898*/ u16 mapView[0x100]; /*0xA98*/ struct LinkBattleRecords linkBattleRecords; /*0xAF0*/ struct BerryCrush berryCrush; - /*0xB00*/ u8 filler_B00[0x420]; + /*0xB00*/ struct PokemonJumpResults pokeJump; + /*0xB10*/ struct BerryPickingResults berryPick; + /*0xB20*/ u8 filler_B20[0x400]; /*0xF20*/ u32 encryptionKey; }; diff --git a/include/item_menu.h b/include/item_menu.h index 2e83ed1f4..ceaf277a3 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -26,6 +26,7 @@ extern u16 gSpecialVar_ItemId; void sub_81AAC50(void); void sub_81AAC70(void); void sub_8108CF0(void); +void sub_81089BC(void); void sub_810B108(u8); void ReturnToBagFromKeyItem(void); void ItemMenu_MoveItemSlotToNewPositionInArray(struct ItemSlot * slots, int pos1, int pos2); diff --git a/include/main.h b/include/main.h index d326909ff..589709436 100644 --- a/include/main.h +++ b/include/main.h @@ -67,6 +67,7 @@ void SetVBlankCounter1Ptr(u32 *ptr); void DisableVBlankCounter1(void); void StartTimer1(void); void SeedRngAndSetTrainerId(void); +u16 GetGeneratedTrainerIdLower(void); extern const char RomHeaderGameCode[4]; extern const char RomHeaderSoftwareVersion; diff --git a/include/mevent.h b/include/mevent.h index b61fa732d..cee88e403 100644 --- a/include/mevent.h +++ b/include/mevent.h @@ -66,5 +66,6 @@ void MENews_RemoveScrollIndicatorArrowPair(void); bool32 WonderNews_Test_Unk_02(void); bool32 WonderCard_Test_Unk_08_6(void); u32 MENews_GetInput(u16 input); +void sub_8143D24(void); #endif //GUARD_MEVENT_H diff --git a/include/new_game.h b/include/new_game.h index a45b090c8..346e7aff3 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -1,19 +1,13 @@ #ifndef GUARD_NEW_GAME_H #define GUARD_NEW_GAME_H -#include "global.h" - -void WriteUnalignedWord(u32 var, u8 *dataPtr); +void SetTrainerId(u32 trainerId, u8 *dst); u32 ReadUnalignedWord(u8* dataPtr); -void CopyUnalignedWord(u8 *copyTo, u8 *copyFrom); -void InitPlayerTrainerId(void); -void SetDefaultOptions(void); -void ClearPokedexFlags(void); -void WarpToTruck(void); +void CopyTrainerId(u8 *dst, u8 *src); void NewGameInitData(void); +void ResetMenuAndMonGlobals(void); +void Sav2_ClearSetDefault(void); void ResetMiniGamesResults(void); void sub_808447C(void); -void Sav2_ClearSetDefault(void); -void ResetMenuAndMonGlobals(void); #endif // GUARD_NEW_GAME_H diff --git a/include/overworld.h b/include/overworld.h index 92b0f6001..52f292357 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -49,7 +49,7 @@ void IncrementGameStat(u8 index); void Overworld_SetMapObjTemplateCoords(u8, s16, s16); void Overworld_SetMapObjTemplateMovementType(u8, u8); -void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId); void SetDynamicWarpWithCoords(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); @@ -137,6 +137,7 @@ u8 get_map_light_from_warp0(void); const struct MapHeader *warp1_get_mapheader(void); void sub_8055F88(void); void sub_8056788(void); +void sub_8054E68(void); void Overworld_CreditsMainCB(void); bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd *, u8); diff --git a/include/player_pc.h b/include/player_pc.h index f527ec9f5..ff1c33d1a 100644 --- a/include/player_pc.h +++ b/include/player_pc.h @@ -21,5 +21,6 @@ struct PlayerPC_Unk_203AAC4 // Exported ROM declarations void sub_816B060(u8 taskId); +void sub_80EB658(void); #endif //GUARD_PLAYER_PC_H diff --git a/include/pokemon_jump.h b/include/pokemon_jump.h new file mode 100644 index 000000000..28b19f9b1 --- /dev/null +++ b/include/pokemon_jump.h @@ -0,0 +1,14 @@ +#ifndef GUARD_POKEMON_JUMP_H +#define GUARD_POKEMON_JUMP_H + +#include "main.h" + +void sub_802A9A8(u16 monId, MainCallback callback); +bool32 sub_802C908(u16 species); +void sub_802C920(void); +void ResetPokeJumpResults(void); +void sub_802E3C4(void); +void sub_802EB24(s16 tileTag, s16 palTag, s16 x, s16 y, u8 subpriority); +bool32 sub_802EB84(void); + +#endif // GUARD_POKEMON_JUMP_H diff --git a/include/pokemon_size_record.h b/include/pokemon_size_record.h index 3fa448cbb..d62ced51d 100644 --- a/include/pokemon_size_record.h +++ b/include/pokemon_size_record.h @@ -11,6 +11,9 @@ void InitLotadSizeRecord(void); void GetLotadSizeRecordInfo(void); void CompareLotadSize(void); +void sub_80A0904(void); +void sub_80A0958(void); + void GiveGiftRibbonToParty(u8 index, u8 ribbonId); #endif // GUARD_POKEMON_SIZE_RECORD_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index 8ab9e5f0e..e6d7c5018 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -14,6 +14,7 @@ u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request); void sub_808BCB4(u8 boxId, u8 monPosition); u8 * GetBoxNamePtr(u8 boxId); void sub_808CE60(void); +void sub_808C7E0(void); u8 StorageGetCurrentBox(void); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/quest_log.h b/include/quest_log.h index 0690dd282..7e86e7c2f 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -33,6 +33,8 @@ u8 sub_8112EB4(void); void sub_8113018(const u8 * text, u8 mode); void MapNamePopupWindowIdSetDummy(void); void sub_8111CF0(void); +void sub_811089C(void); +void sub_8113044(void); extern u8 gUnknown_203ADFA; diff --git a/include/trainer_tower.h b/include/trainer_tower.h index 9cca2ea76..d7fde9362 100644 --- a/include/trainer_tower.h +++ b/include/trainer_tower.h @@ -5,5 +5,7 @@ void PrintTrainerTowerRecords(void); void InitTrainerTowerBattleStruct(void); void FreeTrainerTowerBattleStruct(void); u8 GetTrainerTowerTrainerFrontSpriteId(void); +void sub_815D838(void); +void sub_815EE0C(void); #endif //GUARD_TRAINER_TOWER_H diff --git a/include/union_room_chat.h b/include/union_room_chat.h new file mode 100644 index 000000000..027a2e20c --- /dev/null +++ b/include/union_room_chat.h @@ -0,0 +1,7 @@ +#ifndef GUARD_UNION_ROOM_CHAT_H +#define GUARD_UNION_ROOM_CHAT_H + +void sub_801DD98(void); +void copy_strings_to_sav1(void); + +#endif // GUARD_UNION_ROOM_CHAT_H \ No newline at end of file diff --git a/include/wild_encounter.h b/include/wild_encounter.h index bf53ed6ee..5bcab1249 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -45,5 +45,6 @@ bool8 UpdateRepelCounter(void); void sub_8082740(u8); u8 GetUnownLetterByPersonalityLoByte(u32 personality); bool8 SweetScentWildEncounter(void); +void sub_8083214(u16 randVal); #endif // GUARD_WILD_ENCOUNTER_H -- cgit v1.2.3 From d4ba74fb34c78a6f80e5e51ac3ccc295191e7128 Mon Sep 17 00:00:00 2001 From: ultima-soul Date: Sun, 6 Oct 2019 09:13:15 -0700 Subject: Fix formatting. --- include/battle_records.h | 2 +- include/global.h | 8 ++++---- include/new_game.h | 3 --- include/union_room_chat.h | 2 +- 4 files changed, 6 insertions(+), 9 deletions(-) (limited to 'include') diff --git a/include/battle_records.h b/include/battle_records.h index 55e969b50..5ddb11472 100644 --- a/include/battle_records.h +++ b/include/battle_records.h @@ -10,4 +10,4 @@ void ShowLinkBattleRecords(void); void RemoveRecordsWindow(void); void ShowTrainerHillRecords(void); -#endif // GUARD_BATTLE_RECORDS_H \ No newline at end of file +#endif // GUARD_BATTLE_RECORDS_H diff --git a/include/global.h b/include/global.h index 2af9bbc94..c206cf5f1 100644 --- a/include/global.h +++ b/include/global.h @@ -230,8 +230,8 @@ struct SaveBlock2 /*0x0AC*/ u8 field_AC; /*0x0AD*/ u8 field_AD; /*0x0AE*/ u8 filler_AE[0x2]; - /*0x0B0*/ u8 field_B0; - /*0x0B1*/ u8 filler_B1[0x3EF]; + /*0x0B0*/ u8 field_B0; + /*0x0B1*/ u8 filler_B1[0x3EF]; /*0x4A0*/ u32 unk_4A0[0x2F]; /*0x55c*/ struct UnkSaveBlock2Substruct_55C unk_55C; /*0x574*/ u8 filler_574[0x324]; @@ -239,8 +239,8 @@ struct SaveBlock2 /*0xA98*/ struct LinkBattleRecords linkBattleRecords; /*0xAF0*/ struct BerryCrush berryCrush; /*0xB00*/ struct PokemonJumpResults pokeJump; - /*0xB10*/ struct BerryPickingResults berryPick; - /*0xB20*/ u8 filler_B20[0x400]; + /*0xB10*/ struct BerryPickingResults berryPick; + /*0xB20*/ u8 filler_B20[0x400]; /*0xF20*/ u32 encryptionKey; }; diff --git a/include/new_game.h b/include/new_game.h index 346e7aff3..eedaea724 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -2,12 +2,9 @@ #define GUARD_NEW_GAME_H void SetTrainerId(u32 trainerId, u8 *dst); -u32 ReadUnalignedWord(u8* dataPtr); void CopyTrainerId(u8 *dst, u8 *src); void NewGameInitData(void); void ResetMenuAndMonGlobals(void); void Sav2_ClearSetDefault(void); -void ResetMiniGamesResults(void); -void sub_808447C(void); #endif // GUARD_NEW_GAME_H diff --git a/include/union_room_chat.h b/include/union_room_chat.h index 027a2e20c..17e482525 100644 --- a/include/union_room_chat.h +++ b/include/union_room_chat.h @@ -4,4 +4,4 @@ void sub_801DD98(void); void copy_strings_to_sav1(void); -#endif // GUARD_UNION_ROOM_CHAT_H \ No newline at end of file +#endif // GUARD_UNION_ROOM_CHAT_H -- cgit v1.2.3 From 0873084a5d143c4e7eab682f7d27a3255ed281b7 Mon Sep 17 00:00:00 2001 From: ultima-soul Date: Sun, 6 Oct 2019 13:06:13 -0700 Subject: Sync some function names with pokeemerald. --- include/battle_records.h | 1 - include/easy_chat.h | 2 +- include/event_data.h | 1 - include/item.h | 2 +- include/overworld.h | 2 +- include/player_pc.h | 2 +- include/pokemon_storage_system.h | 2 +- include/trainer_tower.h | 2 +- 8 files changed, 6 insertions(+), 8 deletions(-) (limited to 'include') diff --git a/include/battle_records.h b/include/battle_records.h index 5ddb11472..88ff6adc9 100644 --- a/include/battle_records.h +++ b/include/battle_records.h @@ -4,7 +4,6 @@ extern u8 gRecordsWindowId; void ClearPlayerLinkBattleRecords(void); -void InitLinkBattleRecords(void); void UpdatePlayerLinkBattleRecords(s32 battlerId); void ShowLinkBattleRecords(void); void RemoveRecordsWindow(void); diff --git a/include/easy_chat.h b/include/easy_chat.h index e6a48fccc..a487c9456 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -38,7 +38,7 @@ void InitializeEasyChatWordArray(u16 *words, u16 length); void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2); bool8 ECWord_CheckIfOutsideOfValidRange(u16 word); void sub_80BDE28(void); -void sub_80BDD34(void); +void InitEasyChatPhrases(void); void EnableRareWord(u8); #endif // GUARD_EASYCHAT_H diff --git a/include/event_data.h b/include/event_data.h index c461c1d55..5f455467d 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -37,7 +37,6 @@ void sub_806E6FC(void); void sub_806E2D0(void); void sub_806E370(void); bool32 sub_806E25C(void); -void sub_806E0D0(void); void sub_806E190(void); extern u16 gSpecialVar_0x8000; diff --git a/include/item.h b/include/item.h index 583a47cdc..6e0af31bb 100644 --- a/include/item.h +++ b/include/item.h @@ -62,7 +62,7 @@ u8 ItemId_GetBattleUsage(u16 itemId); ItemUseFunc ItemId_GetBattleFunc(u16 itemId); u8 ItemId_GetSecondaryId(u16 itemId); u16 itemid_get_market_price(u16 itemId); -void ClearItemSlotsInAllBagPockets(void); +void ClearBag(void); void ClearPCItemSlots(void); void sub_809A824(u16 itemId); bool8 AddBagItem(u16 itemId, u16 amount); diff --git a/include/overworld.h b/include/overworld.h index 52f292357..f2ef24e9e 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -137,7 +137,7 @@ u8 get_map_light_from_warp0(void); const struct MapHeader *warp1_get_mapheader(void); void sub_8055F88(void); void sub_8056788(void); -void sub_8054E68(void); +void ResetGameStats(void); void Overworld_CreditsMainCB(void); bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd *, u8); diff --git a/include/player_pc.h b/include/player_pc.h index ff1c33d1a..06ab0cb0f 100644 --- a/include/player_pc.h +++ b/include/player_pc.h @@ -21,6 +21,6 @@ struct PlayerPC_Unk_203AAC4 // Exported ROM declarations void sub_816B060(u8 taskId); -void sub_80EB658(void); +void NewGameInitPCItems(void); #endif //GUARD_PLAYER_PC_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index e6d7c5018..6790fb775 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -14,7 +14,7 @@ u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request); void sub_808BCB4(u8 boxId, u8 monPosition); u8 * GetBoxNamePtr(u8 boxId); void sub_808CE60(void); -void sub_808C7E0(void); +void ResetPokemonStorageSystem(void); u8 StorageGetCurrentBox(void); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/trainer_tower.h b/include/trainer_tower.h index d7fde9362..82a3e6cdc 100644 --- a/include/trainer_tower.h +++ b/include/trainer_tower.h @@ -6,6 +6,6 @@ void InitTrainerTowerBattleStruct(void); void FreeTrainerTowerBattleStruct(void); u8 GetTrainerTowerTrainerFrontSpriteId(void); void sub_815D838(void); -void sub_815EE0C(void); +void ResetTrainerTowerResults(void); #endif //GUARD_TRAINER_TOWER_H -- cgit v1.2.3 From 52d40061ecdb2b47da10083c0359e06df5470eb1 Mon Sep 17 00:00:00 2001 From: ultima-soul Date: Sun, 6 Oct 2019 14:47:08 -0700 Subject: Resolve review suggestions. --- include/battle_records.h | 6 ------ include/event_scripts.h | 3 +++ include/global.h | 14 +++++++++----- include/new_game.h | 2 ++ 4 files changed, 14 insertions(+), 11 deletions(-) (limited to 'include') diff --git a/include/battle_records.h b/include/battle_records.h index 88ff6adc9..97f28a3b0 100644 --- a/include/battle_records.h +++ b/include/battle_records.h @@ -1,12 +1,6 @@ #ifndef GUARD_BATTLE_RECORDS_H #define GUARD_BATTLE_RECORDS_H -extern u8 gRecordsWindowId; - void ClearPlayerLinkBattleRecords(void); -void UpdatePlayerLinkBattleRecords(s32 battlerId); -void ShowLinkBattleRecords(void); -void RemoveRecordsWindow(void); -void ShowTrainerHillRecords(void); #endif // GUARD_BATTLE_RECORDS_H diff --git a/include/event_scripts.h b/include/event_scripts.h index 310335196..41a7a7bf2 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -1155,4 +1155,7 @@ extern const u8 EventScript_SafariOutOfBalls[]; extern const u8 EventScript_ItemfinderDigUpUnderfootItem[]; +// new_game +extern const u8 EventScript_ResetAllMapFlags[]; + #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/global.h b/include/global.h index c206cf5f1..98dd8ab2c 100644 --- a/include/global.h +++ b/include/global.h @@ -205,6 +205,14 @@ struct UnkSaveBlock2Substruct_55C /* 0x016:0x572 */ u8 unk_16; }; // size: 0x018 +struct UnkSaveBlock2Substruct_B0 +{ + /* 0x000:0x0B0 */ u8 field_0[0x3F0]; + /* 0x3F0:0x4A0 */ u32 field_3F0[0x2F]; + /* 0x4AC:0x55C */ struct UnkSaveBlock2Substruct_55C field_4AC; + /* 0x4C4:0x574 */ u8 field_4C4[0x324]; +}; // size: 0x7E8 + struct SaveBlock2 { /*0x000*/ u8 playerName[PLAYER_NAME_LENGTH]; @@ -230,11 +238,7 @@ struct SaveBlock2 /*0x0AC*/ u8 field_AC; /*0x0AD*/ u8 field_AD; /*0x0AE*/ u8 filler_AE[0x2]; - /*0x0B0*/ u8 field_B0; - /*0x0B1*/ u8 filler_B1[0x3EF]; - /*0x4A0*/ u32 unk_4A0[0x2F]; - /*0x55c*/ struct UnkSaveBlock2Substruct_55C unk_55C; - /*0x574*/ u8 filler_574[0x324]; + /*0x0B0*/ struct UnkSaveBlock2Substruct_B0 unk_B0; /*0x898*/ u16 mapView[0x100]; /*0xA98*/ struct LinkBattleRecords linkBattleRecords; /*0xAF0*/ struct BerryCrush berryCrush; diff --git a/include/new_game.h b/include/new_game.h index eedaea724..ed40546ba 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -1,6 +1,8 @@ #ifndef GUARD_NEW_GAME_H #define GUARD_NEW_GAME_H +#include "global.h" + void SetTrainerId(u32 trainerId, u8 *dst); void CopyTrainerId(u8 *dst, u8 *src); void NewGameInitData(void); -- cgit v1.2.3 From 355c82e13e4b4957c27854142990670ba6e4bf0d Mon Sep 17 00:00:00 2001 From: ultima-soul Date: Sun, 6 Oct 2019 14:51:44 -0700 Subject: Remove trailing white space. --- include/global.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/global.h b/include/global.h index 98dd8ab2c..35f8de01b 100644 --- a/include/global.h +++ b/include/global.h @@ -238,7 +238,7 @@ struct SaveBlock2 /*0x0AC*/ u8 field_AC; /*0x0AD*/ u8 field_AD; /*0x0AE*/ u8 filler_AE[0x2]; - /*0x0B0*/ struct UnkSaveBlock2Substruct_B0 unk_B0; + /*0x0B0*/ struct UnkSaveBlock2Substruct_B0 unk_B0; /*0x898*/ u16 mapView[0x100]; /*0xA98*/ struct LinkBattleRecords linkBattleRecords; /*0xAF0*/ struct BerryCrush berryCrush; -- cgit v1.2.3 From 076971ee687e1956a1b01144634b3e3468e23cff Mon Sep 17 00:00:00 2001 From: ultima-soul Date: Sun, 6 Oct 2019 15:00:10 -0700 Subject: Resolve pokemon_jump changes. --- include/pokemon_jump.h | 6 ------ 1 file changed, 6 deletions(-) (limited to 'include') diff --git a/include/pokemon_jump.h b/include/pokemon_jump.h index 28b19f9b1..62d0e610f 100644 --- a/include/pokemon_jump.h +++ b/include/pokemon_jump.h @@ -3,12 +3,6 @@ #include "main.h" -void sub_802A9A8(u16 monId, MainCallback callback); -bool32 sub_802C908(u16 species); -void sub_802C920(void); void ResetPokeJumpResults(void); -void sub_802E3C4(void); -void sub_802EB24(s16 tileTag, s16 palTag, s16 x, s16 y, u8 subpriority); -bool32 sub_802EB84(void); #endif // GUARD_POKEMON_JUMP_H -- cgit v1.2.3 From 5620b0ed1a330e38c0d4cdbbfea2c5ce75053925 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 6 Oct 2019 18:03:46 -0400 Subject: link through BuildSendCmd --- include/bg_regs.h | 6 ++++++ include/link.h | 18 ++++++++++++++++-- include/main.h | 2 ++ 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 include/bg_regs.h (limited to 'include') diff --git a/include/bg_regs.h b/include/bg_regs.h new file mode 100644 index 000000000..660b47d1e --- /dev/null +++ b/include/bg_regs.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BG_REGS_H +#define GUARD_BG_REGS_H + +extern const u8 gBGControlRegOffsets[]; + +#endif //GUARD_BG_REGS_H diff --git a/include/link.h b/include/link.h index 22667cc11..220465046 100644 --- a/include/link.h +++ b/include/link.h @@ -29,6 +29,21 @@ #define EXTRACT_RECEIVED_NOTHING(status) \ (((status) >> LINK_STAT_RECEIVED_NOTHING_SHIFT) & 1) +#define LINKCMD_SEND_LINK_TYPE 0x2222 +#define LINKCMD_0x2FFE 0x2FFE +#define LINKCMD_SEND_HELD_KEYS 0x4444 +#define LINKCMD_0x5555 0x5555 +#define LINKCMD_0x5566 0x5566 +#define LINKCMD_0x5FFF 0x5FFF +#define LINKCMD_0x6666 0x6666 +#define LINKCMD_0x7777 0x7777 +#define LINKCMD_CONT_BLOCK 0x8888 +#define LINKCMD_0xAAAA 0xAAAA +#define LINKCMD_0xAAAB 0xAAAB +#define LINKCMD_INIT_BLOCK 0xBBBB +#define LINKCMD_SEND_HELD_KEYS_2 0xCAFE +#define LINKCMD_0xCCCC 0xCCCC + #define MASTER_HANDSHAKE 0x8FFF #define SLAVE_HANDSHAKE 0xB9A0 @@ -148,12 +163,11 @@ extern bool8 gLinkVSyncDisabled; extern u8 gWirelessCommType; extern u8 gShouldAdvanceLinkState; -extern u64 gSioMlt_Recv; void Task_DestroySelf(u8); void OpenLink(void); void CloseLink(void); -u16 LinkMain2(u16 *); +u16 LinkMain2(const u16 *); void sub_8007B14(void); bool32 sub_8007B24(void); void ClearLinkCallback(void); diff --git a/include/main.h b/include/main.h index d326909ff..7218dc896 100644 --- a/include/main.h +++ b/include/main.h @@ -71,4 +71,6 @@ void SeedRngAndSetTrainerId(void); extern const char RomHeaderGameCode[4]; extern const char RomHeaderSoftwareVersion; +extern u8 gLinkTransferringData; + #endif // GUARD_MAIN_H -- cgit v1.2.3 From 76fd98fffee901012c1e41580aff23d70a977330 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 6 Oct 2019 20:04:37 -0400 Subject: link through CheckErrorStatus --- include/link.h | 27 ++++++++++++++++++++++++--- include/link_rfu.h | 13 ++++++++++++- include/trade.h | 6 ++++++ 3 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 include/trade.h (limited to 'include') diff --git a/include/link.h b/include/link.h index 220465046..1360ce8cc 100644 --- a/include/link.h +++ b/include/link.h @@ -19,6 +19,20 @@ #define LINK_STAT_RECEIVED_NOTHING 0x00000100 #define LINK_STAT_RECEIVED_NOTHING_SHIFT 8 #define LINK_STAT_ERRORS 0x0007F000 +#define LINK_STAT_ERRORS_SHIFT 12 + +#define LINK_STAT_ERROR_HARDWARE 0x00001000 +#define LINK_STAT_ERROR_HARDWARE_SHIFT 12 +#define LINK_STAT_ERROR_CHECKSUM 0x00002000 +#define LINK_STAT_ERROR_CHECKSUM_SHIFT 13 +#define LINK_STAT_ERROR_QUEUE_FULL 0x00004000 +#define LINK_STAT_ERROR_QUEUE_FULL_SHIFT 14 +#define LINK_STAT_ERROR_LAG_MASTER 0x00010000 +#define LINK_STAT_ERROR_LAG_MASTER_SHIFT 16 +#define LINK_STAT_ERROR_INVALID_ID 0x00020000 +#define LINK_STAT_ERROR_INVALID_ID_SHIFT 17 +#define LINK_STAT_ERROR_LAG_SLAVE 0x00040000 +#define LINK_STAT_ERROR_LAG_SLAVE_SHIFT 18 #define EXTRACT_PLAYER_COUNT(status) \ (((status) & LINK_STAT_PLAYER_COUNT) >> LINK_STAT_PLAYER_COUNT_SHIFT) @@ -28,6 +42,8 @@ (((status) >> LINK_STAT_CONN_ESTABLISHED_SHIFT) & 1) #define EXTRACT_RECEIVED_NOTHING(status) \ (((status) >> LINK_STAT_RECEIVED_NOTHING_SHIFT) & 1) +#define EXTRACT_LINK_ERRORS(status) \ +(((status) & LINK_STAT_ERRORS) >> LINK_STAT_ERRORS_SHIFT) #define LINKCMD_SEND_LINK_TYPE 0x2222 #define LINKCMD_0x2FFE 0x2FFE @@ -62,6 +78,10 @@ enum EXCHANGE_COMPLETE, EXCHANGE_TIMED_OUT, EXCHANGE_IN_PROGRESS, + EXCHANGE_STAT_4, + EXCHANGE_STAT_5, + EXCHANGE_STAT_6, + EXCHANGE_STAT_7 }; enum @@ -174,7 +194,7 @@ void ClearLinkCallback(void); void ClearLinkCallback_2(void); u8 GetLinkPlayerCount(void); void OpenLinkTimed(void); -u8 GetLinkPlayerDataExchangeStatusTimed(void); +u8 GetLinkPlayerDataExchangeStatusTimed(int lower, int higher); bool8 IsLinkPlayerDataExchangeComplete(void); u32 GetLinkPlayerTrainerId(u8); void ResetLinkPlayers(void); @@ -217,7 +237,7 @@ void sub_800AAC0(void); void OpenLink(void); bool8 IsLinkMaster(void); void CheckShouldAdvanceLinkState(void); -void sub_800AA80(u8); +void sub_800AA80(u16 a0); void sub_80098D8(void); void CloseLink(void); bool8 IsLinkTaskFinished(void); @@ -228,6 +248,7 @@ void sub_800B1F4(void); void LoadWirelessStatusIndicatorSpriteGfx(void); void CreateWirelessStatusIndicatorSprite(u8, u8); void sub_8009FE8(void); -void sub_800A068(void); +void ClearLinkCallback_2(void); +void sub_80FA42C(void); #endif // GUARD_LINK_H diff --git a/include/link_rfu.h b/include/link_rfu.h index e7fa2a848..e64c0ed59 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 IsNoOneConnected(void); +bool8 IsRfuTaskFinished(void); void DestroyWirelessStatusIndicatorSprite(void); void MEvent_CreateTask_CardOrNewsWithFriend(u8); void MEvent_CreateTask_CardOrNewsOverWireless(u8); @@ -22,5 +22,16 @@ void sub_80FBB4C(void); void sub_80F86F4(void); void sub_80FB128(bool32 a0); u32 sub_80FD3A4(void); +bool32 IsSendingKeysToRfu(void); +void Rfu_set_zero(void); +u8 GetRfuPlayerCount(void); +void sub_80F9828(void); +u8 rfu_get_multiplayer_id(void); +bool8 Rfu_InitBlockSend(const void * src, u16 size); +bool8 sub_80FA0F8(u8 a0); +u8 Rfu_GetBlockReceivedStatus(void); +void Rfu_SetBlockReceivedFlag(u8 who); +void Rfu_ResetBlockReceivedFlag(u8 who); +bool8 Rfu_IsMaster(void); #endif //GUARD_LINK_RFU_H diff --git a/include/trade.h b/include/trade.h new file mode 100644 index 000000000..02ed7d8c4 --- /dev/null +++ b/include/trade.h @@ -0,0 +1,6 @@ +#ifndef GUARD_TRADE_H +#define GUARD_TRADE_H + +s32 sub_804FB34(void); + +#endif //GUARD_TRADE_H -- cgit v1.2.3 From e73e1172aa2bfa52b5fd5bcf89cd7b12decf5676 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 6 Oct 2019 21:08:53 -0400 Subject: link through ResetSerial --- include/link.h | 2 +- include/link_rfu.h | 5 +++++ include/overworld.h | 2 ++ include/strings.h | 7 +++++++ 4 files changed, 15 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/link.h b/include/link.h index 1360ce8cc..b8c6bcd59 100644 --- a/include/link.h +++ b/include/link.h @@ -215,7 +215,7 @@ bool8 IsLinkConnectionEstablished(void); void SetSuppressLinkErrorMessage(bool8); bool8 HasLinkErrorOccurred(void); void ResetSerial(void); -u32 LinkMain1(u8 *, u16 *, u16[CMD_LENGTH][MAX_LINK_PLAYERS]); +u32 LinkMain1(u8 *, u16 *, u16[MAX_RFU_PLAYERS][CMD_LENGTH]); void RFUVSync(void); void Timer3Intr(void); void SerialCB(void); diff --git a/include/link_rfu.h b/include/link_rfu.h index e64c0ed59..bfea690ae 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -33,5 +33,10 @@ u8 Rfu_GetBlockReceivedStatus(void); void Rfu_SetBlockReceivedFlag(u8 who); void Rfu_ResetBlockReceivedFlag(u8 who); bool8 Rfu_IsMaster(void); +void sub_80F85F8(void); +bool32 sub_80FAE94(void); +bool32 sub_80FAEF0(void); +bool32 IsRfuRecvQueueEmpty(void); +u32 GetRfuRecvQueueLength(void); #endif //GUARD_LINK_RFU_H diff --git a/include/overworld.h b/include/overworld.h index f2ef24e9e..77cacff94 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -142,4 +142,6 @@ void ResetGameStats(void); void Overworld_CreditsMainCB(void); bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd *, u8); +bool32 sub_8058318(void); + #endif //GUARD_OVERWORLD_H diff --git a/include/strings.h b/include/strings.h index 9ddce6044..1bafbacbe 100644 --- a/include/strings.h +++ b/include/strings.h @@ -329,4 +329,11 @@ extern const u8 gText_ItemfinderResponding[]; extern const u8 gText_ItemfinderShakingWildly[]; extern const u8 gText_NopeTheresNoResponse[]; +// link +extern const u8 gText_CommErrorEllipsis[]; +extern const u8 gText_MoveCloserToLinkPartner[]; +extern const u8 gText_CommErrorCheckConnections[]; +extern const u8 gText_ABtnTitleScreen[]; +extern const u8 gText_ABtnRegistrationCounter[]; + #endif //GUARD_STRINGS_H -- cgit v1.2.3 From f39511d7c804d16c14ab84ede7015222f9d715c4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 7 Oct 2019 10:54:45 -0400 Subject: Finish link.s decomp --- include/link.h | 6 ++++++ include/link_rfu.h | 1 + 2 files changed, 7 insertions(+) (limited to 'include') diff --git a/include/link.h b/include/link.h index b8c6bcd59..51f103745 100644 --- a/include/link.h +++ b/include/link.h @@ -9,6 +9,9 @@ #define QUEUE_CAPACITY 50 #define BLOCK_BUFFER_SIZE 0x100 +#define LINK_SLAVE 0 +#define LINK_MASTER 8 + #define LINK_STAT_LOCAL_ID 0x00000003 #define LINK_STAT_PLAYER_COUNT 0x0000001C #define LINK_STAT_PLAYER_COUNT_SHIFT 2 @@ -18,6 +21,8 @@ #define LINK_STAT_CONN_ESTABLISHED_SHIFT 6 #define LINK_STAT_RECEIVED_NOTHING 0x00000100 #define LINK_STAT_RECEIVED_NOTHING_SHIFT 8 +#define LINK_STAT_UNK_FLAG_9 0x00000200 +#define LINK_STAT_UNK_FLAG_9_SHIFT 9 #define LINK_STAT_ERRORS 0x0007F000 #define LINK_STAT_ERRORS_SHIFT 12 @@ -250,5 +255,6 @@ void CreateWirelessStatusIndicatorSprite(u8, u8); void sub_8009FE8(void); void ClearLinkCallback_2(void); void sub_80FA42C(void); +void sub_800B284(struct LinkPlayer * linkPlayer); #endif // GUARD_LINK_H diff --git a/include/link_rfu.h b/include/link_rfu.h index bfea690ae..2757e5296 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -38,5 +38,6 @@ bool32 sub_80FAE94(void); bool32 sub_80FAEF0(void); bool32 IsRfuRecvQueueEmpty(void); u32 GetRfuRecvQueueLength(void); +void sub_80F8DC0(void); #endif //GUARD_LINK_RFU_H -- cgit v1.2.3 From 5ba9fcdd3fe7610f2bbca449c2683f2e31c20898 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 7 Oct 2019 12:34:42 -0400 Subject: Consistent spacing for struct ptr arg/var decls --- include/librfu.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'include') diff --git a/include/librfu.h b/include/librfu.h index d107894dd..2fe66ea84 100644 --- a/include/librfu.h +++ b/include/librfu.h @@ -199,17 +199,17 @@ struct RfuUnk5 struct RfuUnk5Sub unk_14[4]; }; -extern struct RfuStruct *gRfuState; +extern struct RfuStruct * gRfuState; -extern struct RfuUnk5 *gUnknown_03007890; +extern struct RfuUnk5 * gUnknown_03007890; extern u32 *gUnknown_03007894; -extern struct RfuUnk3* gUnknown_03007898; -extern struct RfuUnk2* gUnknown_03007880[4]; -extern struct RfuUnk1* gUnknown_03007870[4]; +extern struct RfuUnk3 * gUnknown_03007898; +extern struct RfuUnk2 * gUnknown_03007880[4]; +extern struct RfuUnk1 * gUnknown_03007870[4]; extern void* sub_82E53F4; extern void rfu_STC_clearAPIVariables(void); -void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam); +void STWI_init_all(struct RfuIntrStruct * interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam); void rfu_REQ_stopMode(void); void rfu_waitREQComplete(void); u32 rfu_REQBN_softReset_and_checkID(void); -- cgit v1.2.3 From adf65c8289892a70d868332a0a91e22d51f945c2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 7 Oct 2019 12:54:42 -0400 Subject: More parameter spacing fixes --- include/librfu.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/librfu.h b/include/librfu.h index 2fe66ea84..b002420fd 100644 --- a/include/librfu.h +++ b/include/librfu.h @@ -119,8 +119,8 @@ struct RfuStruct void (*callbackM)(); void (*callbackS)(); u32 callbackID; - union RfuPacket *txPacket; - union RfuPacket *rxPacket; + union RfuPacket * txPacket; + union RfuPacket * rxPacket; vu8 unk_2c; u8 padding[3]; }; @@ -206,7 +206,7 @@ extern u32 *gUnknown_03007894; extern struct RfuUnk3 * gUnknown_03007898; extern struct RfuUnk2 * gUnknown_03007880[4]; extern struct RfuUnk1 * gUnknown_03007870[4]; -extern void* sub_82E53F4; +extern void *sub_82E53F4; extern void rfu_STC_clearAPIVariables(void); void STWI_init_all(struct RfuIntrStruct * interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam); -- cgit v1.2.3 From 13468377bc85b2daa309b049e3d9f733dadce440 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 7 Oct 2019 13:07:11 -0400 Subject: Correct symbols in librfu.h --- include/librfu.h | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'include') diff --git a/include/librfu.h b/include/librfu.h index b002420fd..69f0bb695 100644 --- a/include/librfu.h +++ b/include/librfu.h @@ -201,12 +201,20 @@ struct RfuUnk5 extern struct RfuStruct * gRfuState; -extern struct RfuUnk5 * gUnknown_03007890; -extern u32 *gUnknown_03007894; -extern struct RfuUnk3 * gUnknown_03007898; -extern struct RfuUnk2 * gUnknown_03007880[4]; -extern struct RfuUnk1 * gUnknown_03007870[4]; -extern void *sub_82E53F4; +extern struct RfuUnk5 * gUnknown_3007460; +extern u32 *gUnknown_3007464; +extern struct RfuUnk3 * gUnknown_3007468; +extern struct RfuUnk2 * gUnknown_3007450[4]; +extern struct RfuUnk1 * gUnknown_3007440[4]; +extern struct { + u8 unk0; + u8 unk1; + u16 unk2; + u16 unk4; + u8 fill6[4]; + u16 unkA; +} gUnknown_3007470; + extern void rfu_STC_clearAPIVariables(void); void STWI_init_all(struct RfuIntrStruct * interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam); -- cgit v1.2.3