diff options
Diffstat (limited to 'include')
46 files changed, 1044 insertions, 279 deletions
diff --git a/include/battle.h b/include/battle.h index 9e67e8ec5..52c4ee8ae 100644 --- a/include/battle.h +++ b/include/battle.h @@ -599,8 +599,7 @@ struct BattleAnimationInfo u8 field_9_x80:1; u8 field_A; u8 field_B; - u8 field_C; - u8 field_D; + s16 field_C; u8 field_E; u8 field_F; }; @@ -624,7 +623,7 @@ struct BattleHealthboxInfo u8 battlerBounceSpriteId; u8 animationState; u8 field_5; - u8 field_6; + u8 matrixNum; u8 shadowSpriteId; u8 field_8; u8 field_9; diff --git a/include/battle_anim.h b/include/battle_anim.h index 8d73ea9b3..1c2093da9 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -9,11 +9,11 @@ enum { BG_ANIM_SCREEN_SIZE, BG_ANIM_AREA_OVERFLOW_MODE, - BG_ANIM2, + 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 @@ -67,77 +67,96 @@ s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan); void sub_80A4720(u16 a, u16 *b, u32 c, u8 d); void sub_80A477C(bool8); -// battle_anim_80FE840.s +// battle_intro.s void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); -void sub_8118FBC(u8 arg0, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, void *arg5, u16 *arg6, u16 arg7); +void sub_8118FBC(int bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 arg7); void HandleIntroSlide(u8 terrainId); -u32 GetAnimBgAttribute(u8 bgId, u8 attributeId); +int GetAnimBgAttribute(u8 bgId, u8 attributeId); // battle_anim_80A5C6C.s void sub_80A6450(struct Sprite *sprite); -void SetAverageBattlerPositions(u8 battlerId, bool8 a2, s16 *x, s16 *y); -void move_anim_8074EE0(struct Sprite *sprite); -void sub_80A656C(struct Sprite *sprite); -void InitAnimSpritePos(struct Sprite *sprite, u8 a2); -void sub_80A6980(struct Sprite *sprite, bool8 a2); +void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y); +void DestroySpriteAndMatrix(struct Sprite *sprite); +void AnimTranslateLinearSimple(struct Sprite *sprite); +void InitSpritePosToAnimAttacker(struct Sprite *sprite, u8 a2); +void InitSpritePosToAnimTarget(struct Sprite *sprite, bool8 a2); void StartAnimLinearTranslation(struct Sprite *sprite); void InitAnimArcTranslation(struct Sprite *sprite); -bool8 TranslateAnimLinear(struct Sprite *sprite); +bool8 AnimTranslateLinear(struct Sprite *sprite); void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite); void sub_80A8EE4(struct Sprite *sprite); u8 GetBattlerSpriteCoord2(u8 battlerId, u8 attributeId); void sub_80A6FD4(struct Sprite *sprite); u16 ArcTan2Neg(s16 a, s16 b); -void sub_80A73E0(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation); -void sub_80A67BC(struct Sprite *sprite); +void TrySetSpriteRotScale(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation); +void RunStoredCallbackWhenAffineAnimEnds(struct Sprite *sprite); void sub_80A66DC(struct Sprite *sprite); -void sub_80A6838(struct Sprite *sprite); -void sub_80A67D8(struct Sprite *sprite); -void sub_80A6864(struct Sprite *sprite, s16 a2); +void SetSpriteCoordsToAnimAttackerCoords(struct Sprite *sprite); +void RunStoredCallbackWhenAnimEnds(struct Sprite *sprite); +void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 a2); s16 sub_80A861C(u8 battlerId, u8 a2); u8 GetBattlerYCoordWithElevation(u8 battlerId); void WaitAnimForDuration(struct Sprite *sprite); void sub_80A7938(struct Sprite *sprite); void InitAnimLinearTranslation(struct Sprite *sprite); void sub_80A6F98(struct Sprite *sprite); -u8 sub_80A8328(u8 battlerId); -void *sub_80A8050(s16 bottom, s16 top); -void sub_80A8048(s16 *bottom, s16 *top, const void *ptr); +u8 GetBattlerSpriteBGPriority(u8 battlerId); +void *LoadPointerFromVars(s16 bottom, s16 top); +void StorePointerInVars(s16 *bottom, s16 *top, const void *ptr); void sub_80A8278(void); void sub_80A6B30(struct UnknownAnimStruct2*); void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1); -u8 sub_80A82E4(u8 battlerId); +u8 GetBattlerSpriteSubpriority(u8 battlerId); bool8 TranslateAnimArc(struct Sprite *sprite); void sub_80A6630(struct Sprite *sprite); void sub_80A6680(struct Sprite *sprite); -void sub_80A7344(u8 spriteId); -void obj_id_set_rotscale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); +void ResetSpriteRotScale(u8 spriteId); +void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); void InitSpriteDataForLinearTranslation(struct Sprite *sprite); -void sub_80A7270(u8 spriteId, u8 objMode); -void sub_80A73A0(u8 spriteId); +void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode); +void SetBattlerSpriteYOffsetFromRotation(u8 spriteId); u32 sub_80A75AC(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7); u32 sub_80A76C4(u8 a1, u8 a2, u8 a3, u8 a4); u8 sub_80A77AC(u8 a1); -s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8); +s16 CloneBattlerSpriteWithBlend(u8); void obj_delete_but_dont_free_vram(struct Sprite*); u8 sub_80A89C8(int, u8, int); void sub_80A6D60(struct UnknownAnimStruct2*, const void*, u32); void sub_80A6CC0(u32, const void*, u32); void sub_80A6DAC(bool8); -void sub_80A634C(struct Sprite *); +void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *); void sub_80A653C(struct Sprite *); -void sub_80A7E6C(u8 spriteId); +void SetBattlerSpriteYOffsetFromYScale(u8 spriteId); void sub_80A805C(struct Task *task, u8 a2, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7); u8 sub_80A80C8(struct Task *task); void sub_80A8EE4(struct Sprite *); +void sub_80A67F4(struct Sprite *); +void sub_80A6D48(u32 bgId, const void *src); +void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite); +bool8 AnimFastTranslateLinear(struct Sprite *sprite); +void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite); +void TranslateMonBGUntil(struct Sprite *sprite); +void TranslateSpriteOverDuration(struct Sprite *sprite); +void sub_80A77C8(struct Sprite *sprite); +void sub_80A7000(struct Sprite *sprite); +void TranslateSpriteInCircleOverDuration(struct Sprite *sprite); +void SetGreyscaleOrOriginalPalette(u16 a1, bool8 a2); +void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds); +bool8 RunAffineAnimFromTaskData(struct Task *task); +void sub_80A78AC(struct Sprite *sprite); +void sub_80A6BFC(struct UnknownAnimStruct2 *unk, u8 unused); +u8 sub_80A8394(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 a10); +void sub_80A749C(struct Sprite *sprite); +void sub_80A6814(u8 taskId); +void sub_80A8610(struct Sprite *sprite); enum { BATTLER_COORD_X, BATTLER_COORD_Y, BATTLER_COORD_X_2, - BATTLER_COORD_3, - BATTLER_COORD_4, + BATTLER_COORD_Y_PIC_OFFSET, + BATTLER_COORD_Y_PIC_OFFSET_DEFAULT, }; u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId); @@ -147,11 +166,10 @@ void sub_80A6C68(u32 arg0); u8 GetAnimBattlerSpriteId(u8 wantedBattler); bool8 IsDoubleBattle(void); u8 sub_80A6D94(void); -u8 sub_80A8364(u8 battlerId); +u8 GetBattlerSpriteBGPriorityRank(u8 battlerId); void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*)); void oamt_add_pos2_onto_pos1(struct Sprite *sprite); u8 GetBattlerSpriteDefault_Y(u8 battlerId); -u8 sub_80A82E4(u8 battlerId); u8 GetSubstituteSpriteDefault_Y(u8 battlerId); // battle_anim_80A9C70.s @@ -165,13 +183,17 @@ u8 GetSubstituteSpriteDefault_Y(u8 battlerId); #define STAT_ANIM_MULTIPLE_MINUS2 58 void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId); +// ground.c +void sub_81152DC(u8 taskId); + // battle_anim_8170478.s u8 ItemIdToBallId(u16 itemId); -u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId); -u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId); +u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId); +u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 selectedPalettes, u8 ballId); // battle_anim_utility_funcs.s void sub_8116EB4(u8); +void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u8 *arg8, const u8 *arg9, const u16 *palette); u32 UnpackSelectedBattleAnimPalettes(s16); @@ -222,4 +244,7 @@ extern const struct OamData gUnknown_0852493C; extern const struct OamData gUnknown_08524A5C; extern const struct OamData gUnknown_08524A74; +extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; +extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; + #endif // GUARD_BATTLE_ANIM_H diff --git a/include/battle_interface.h b/include/battle_interface.h index 66a7f9828..3145939d0 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -1,6 +1,8 @@ #ifndef GUARD_BATTLE_INTERFACE_H #define GUARD_BATTLE_INTERFACE_H +#include "battle_controllers.h" + enum { HP_CURRENT, diff --git a/include/battle_main.h b/include/battle_main.h index 5a61b5ef0..18bdde2f1 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -7,6 +7,20 @@ struct TrainerMoney 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 @@ -70,6 +84,8 @@ void RunBattleScriptCommands_PopCallbacksStack(void); void RunBattleScriptCommands(void); bool8 TryRunFromBattle(u8 battlerId); +extern struct UnknownPokemonStruct4 gUnknown_02022FF8[3]; + extern const u8 gTypeEffectiveness[336]; extern const u8 gTypeNames[][TYPE_NAME_LENGTH + 1]; extern const struct TrainerMoney gTrainerMoneyTable[]; diff --git a/include/battle_tower.h b/include/battle_tower.h index b6adcec0c..bd8e80fc1 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -9,7 +9,7 @@ struct RSBattleTowerRecord /*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1]; /*0x0C*/ u8 trainerId[4]; /*0x10*/ u16 greeting[6]; - /*0x1C*/ struct UnknownPokemonStruct party[3]; + /*0x1C*/ struct BattleTowerPokemon party[3]; /*0xA0*/ u32 checksum; }; @@ -37,6 +37,11 @@ extern const u8 gTowerMaleFacilityClasses[30]; extern const u8 gTowerMaleTrainerGfxIds[30]; extern const u8 gTowerFemaleFacilityClasses[20]; extern const u8 gTowerFemaleTrainerGfxIds[20]; +extern const u16 gBattleFrontierHeldItems[]; +extern const struct FacilityMon gBattleFrontierMons[]; +extern const struct BattleFrontierTrainer gBattleFrontierTrainers[]; +extern const struct FacilityMon gSlateportBattleTentMons[]; +extern const struct BattleFrontierTrainer gSlateportBattleTentTrainers[]; extern u16 gUnknown_03006298[]; diff --git a/include/blit.h b/include/blit.h index b6c80b497..78f67766e 100644 --- a/include/blit.h +++ b/include/blit.h @@ -3,15 +3,15 @@ struct Bitmap { - const u8 *pixels; + u8 *pixels; u32 width:16; u32 height:16; }; -void BlitBitmapRect4BitWithoutColorKey(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height); -void BlitBitmapRect4Bit(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey); +void BlitBitmapRect4BitWithoutColorKey(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height); +void BlitBitmapRect4Bit(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey); void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue); -void BlitBitmapRect4BitTo8Bit(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey, u8 paletteOffset); +void BlitBitmapRect4BitTo8Bit(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey, u8 paletteOffset); void FillBitmapRect8Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue); #endif // GUARD_BLIT_H diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h index b5ad4f072..55b14b642 100644 --- a/include/constants/battle_frontier.h +++ b/include/constants/battle_frontier.h @@ -41,4 +41,75 @@ // For 'ShowFacilityResultsWindow' function which is a part of the 'CallFrontierUtilFunc' special. #define RESULTS_LINK_CONTEST 7 +#define F_EV_SPREAD_HP (1 << 0) +#define F_EV_SPREAD_ATTACK (1 << 1) +#define F_EV_SPREAD_DEFENSE (1 << 2) +#define F_EV_SPREAD_SPEED (1 << 3) +#define F_EV_SPREAD_SP_ATTACK (1 << 4) +#define F_EV_SPREAD_SP_DEFENSE (1 << 5) + +#define BATTLE_FRONTIER_ITEM_NONE 0 +#define BATTLE_FRONTIER_ITEM_KINGS_ROCK 1 +#define BATTLE_FRONTIER_ITEM_SITRUS_BERRY 2 +#define BATTLE_FRONTIER_ITEM_ORAN_BERRY 3 +#define BATTLE_FRONTIER_ITEM_CHESTO_BERRY 4 +#define BATTLE_FRONTIER_ITEM_HARD_STONE 5 +#define BATTLE_FRONTIER_ITEM_FOCUS_BAND 6 +#define BATTLE_FRONTIER_ITEM_PERSIM_BERRY 7 +#define BATTLE_FRONTIER_ITEM_MIRACLE_SEED 8 +#define BATTLE_FRONTIER_ITEM_BERRY_JUICE 9 +#define BATTLE_FRONTIER_ITEM_MACHO_BRACE 10 +#define BATTLE_FRONTIER_ITEM_SILVER_POWDER 11 +#define BATTLE_FRONTIER_ITEM_CHERI_BERRY 12 +#define BATTLE_FRONTIER_ITEM_BLACK_GLASSES 13 +#define BATTLE_FRONTIER_ITEM_BLACK_BELT 14 +#define BATTLE_FRONTIER_ITEM_SOUL_DEW 15 +#define BATTLE_FRONTIER_ITEM_CHOICE_BAND 16 +#define BATTLE_FRONTIER_ITEM_MAGNET 17 +#define BATTLE_FRONTIER_ITEM_SILK_SCARF 18 +#define BATTLE_FRONTIER_ITEM_WHITE_HERB 19 +#define BATTLE_FRONTIER_ITEM_DEEP_SEA_SCALE 20 +#define BATTLE_FRONTIER_ITEM_DEEP_SEA_TOOTH 21 +#define BATTLE_FRONTIER_ITEM_MYSTIC_WATER 22 +#define BATTLE_FRONTIER_ITEM_SHARP_BEAK 23 +#define BATTLE_FRONTIER_ITEM_QUICK_CLAW 24 +#define BATTLE_FRONTIER_ITEM_LEFTOVERS 25 +#define BATTLE_FRONTIER_ITEM_RAWST_BERRY 26 +#define BATTLE_FRONTIER_ITEM_LIGHT_BALL 27 +#define BATTLE_FRONTIER_ITEM_POISON_BARB 28 +#define BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE 29 +#define BATTLE_FRONTIER_ITEM_ASPEAR_BERRY 30 +#define BATTLE_FRONTIER_ITEM_SPELL_TAG 31 +#define BATTLE_FRONTIER_ITEM_BRIGHT_POWDER 32 +#define BATTLE_FRONTIER_ITEM_LEPPA_BERRY 33 +#define BATTLE_FRONTIER_ITEM_SCOPE_LENS 34 +#define BATTLE_FRONTIER_ITEM_TWISTED_SPOON 35 +#define BATTLE_FRONTIER_ITEM_METAL_COAT 36 +#define BATTLE_FRONTIER_ITEM_MENTAL_HERB 37 +#define BATTLE_FRONTIER_ITEM_CHARCOAL 38 +#define BATTLE_FRONTIER_ITEM_PECHA_BERRY 39 +#define BATTLE_FRONTIER_ITEM_SOFT_SAND 40 +#define BATTLE_FRONTIER_ITEM_LUM_BERRY 41 +#define BATTLE_FRONTIER_ITEM_DRAGON_SCALE 42 +#define BATTLE_FRONTIER_ITEM_DRAGON_FANG 43 +#define BATTLE_FRONTIER_ITEM_IAPAPA_BERRY 44 +#define BATTLE_FRONTIER_ITEM_WIKI_BERRY 45 +#define BATTLE_FRONTIER_ITEM_SEA_INCENSE 46 +#define BATTLE_FRONTIER_ITEM_SHELL_BELL 47 +#define BATTLE_FRONTIER_ITEM_SALAC_BERRY 48 +#define BATTLE_FRONTIER_ITEM_LANSAT_BERRY 49 +#define BATTLE_FRONTIER_ITEM_APICOT_BERRY 50 +#define BATTLE_FRONTIER_ITEM_STARF_BERRY 51 +#define BATTLE_FRONTIER_ITEM_LIECHI_BERRY 52 +#define BATTLE_FRONTIER_ITEM_STICK 53 +#define BATTLE_FRONTIER_ITEM_LAX_INCENSE 54 +#define BATTLE_FRONTIER_ITEM_AGUAV_BERRY 55 +#define BATTLE_FRONTIER_ITEM_FIGY_BERRY 56 +#define BATTLE_FRONTIER_ITEM_THICK_CLUB 57 +#define BATTLE_FRONTIER_ITEM_MAGO_BERRY 58 +#define BATTLE_FRONTIER_ITEM_METAL_POWDER 59 +#define BATTLE_FRONTIER_ITEM_PETAYA_BERRY 60 +#define BATTLE_FRONTIER_ITEM_LUCKY_PUNCH 61 +#define BATTLE_FRONTIER_ITEM_GANLON_BERRY 62 + #endif // GUARD_CONSTANTS_BATTLE_FRONTIER_H diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index 4967c814d..7a97c4caf 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -260,4 +260,7 @@ #define TRACKS_FOOT 1 #define TRACKS_BIKE_TIRE 2 +#define EVENT_OBJ_ID_PLAYER 0xFF +#define EVENT_OBJ_ID_CAMERA 0x7F + #endif // GUARD_CONSTANTS_EVENT_OBJECTS_H diff --git a/include/constants/trainers.h b/include/constants/trainers.h index cf6eaf929..2a6c306b4 100644 --- a/include/constants/trainers.h +++ b/include/constants/trainers.h @@ -117,88 +117,90 @@ #define TRAINER_BACK_PIC_WALLY 6 #define TRAINER_BACK_PIC_STEVEN 7 -#define FACILITY_CLASS_HIKER 0x0 -#define FACILITY_CLASS_AQUA_GRUNT_M 0x1 -#define FACILITY_CLASS_POKEMON_BREEDER_F 0x2 -#define FACILITY_CLASS_COOLTRAINER_M 0x3 -#define FACILITY_CLASS_BIRD_KEEPER 0x4 -#define FACILITY_CLASS_COLLECTOR 0x5 -#define FACILITY_CLASS_AQUA_GRUNT_F 0x6 -#define FACILITY_CLASS_SWIMMER_M 0x7 -#define FACILITY_CLASS_MAGMA_GRUNT_M 0x8 -#define FACILITY_CLASS_EXPERT_M 0x9 -#define FACILITY_CLASS_BLACK_BELT 0xa -#define FACILITY_CLASS_AQUA_LEADER_ARCHIE 0xb -#define FACILITY_CLASS_HEX_MANIAC 0xc -#define FACILITY_CLASS_AROMA_LADY 0xd -#define FACILITY_CLASS_RUIN_MANIAC 0xe -#define FACILITY_CLASS_INTERVIEWER 0xf -#define FACILITY_CLASS_TUBER_F 0x10 -#define FACILITY_CLASS_TUBER_M 0x11 -#define FACILITY_CLASS_COOLTRAINER_F 0x12 -#define FACILITY_CLASS_LADY 0x13 -#define FACILITY_CLASS_BEAUTY 0x14 -#define FACILITY_CLASS_RICH_BOY 0x15 -#define FACILITY_CLASS_EXPERT_F 0x16 -#define FACILITY_CLASS_POKEMANIAC 0x17 -#define FACILITY_CLASS_MAGMA_GRUNT_F 0x18 -#define FACILITY_CLASS_GUITARIST 0x19 -#define FACILITY_CLASS_KINDLER 0x1a -#define FACILITY_CLASS_CAMPER 0x1b -#define FACILITY_CLASS_PICNICKER 0x1c -#define FACILITY_CLASS_BUG_MANIAC 0x1d -#define FACILITY_CLASS_PSYCHIC_M 0x1e -#define FACILITY_CLASS_PSYCHIC_F 0x1f -#define FACILITY_CLASS_GENTLEMAN 0x20 -#define FACILITY_CLASS_ELITE_FOUR_SIDNEY 0x21 -#define FACILITY_CLASS_ELITE_FOUR_PHOEBE 0x22 -#define FACILITY_CLASS_LEADER_ROXANNE 0x23 -#define FACILITY_CLASS_LEADER_BRAWLY 0x24 -#define FACILITY_CLASS_LEADER_TATE_AND_LIZA 0x25 -#define FACILITY_CLASS_SCHOOL_KID_M 0x26 -#define FACILITY_CLASS_SCHOOL_KID_F 0x27 -#define FACILITY_CLASS_SR_AND_JR 0x28 -#define FACILITY_CLASS_POKEFAN_M 0x29 -#define FACILITY_CLASS_POKEFAN_F 0x2a -#define FACILITY_CLASS_YOUNGSTER 0x2b -#define FACILITY_CLASS_CHAMPION_WALLACE 0x2c -#define FACILITY_CLASS_FISHERMAN 0x2d -#define FACILITY_CLASS_CYCLING_TRIATHLETE_M 0x2e -#define FACILITY_CLASS_CYCLING_TRIATHLETE_F 0x2f -#define FACILITY_CLASS_RUNNING_TRIATHLETE_M 0x30 -#define FACILITY_CLASS_RUNNING_TRIATHLETE_F 0x31 +#define FACILITY_CLASS_HIKER 0x0 +#define FACILITY_CLASS_AQUA_GRUNT_M 0x1 +#define FACILITY_CLASS_POKEMON_BREEDER_F 0x2 +#define FACILITY_CLASS_COOLTRAINER_M 0x3 +#define FACILITY_CLASS_BIRD_KEEPER 0x4 +#define FACILITY_CLASS_COLLECTOR 0x5 +#define FACILITY_CLASS_AQUA_GRUNT_F 0x6 +#define FACILITY_CLASS_SWIMMER_M 0x7 +#define FACILITY_CLASS_MAGMA_GRUNT_M 0x8 +#define FACILITY_CLASS_EXPERT_M 0x9 +#define FACILITY_CLASS_BLACK_BELT 0xa +#define FACILITY_CLASS_AQUA_LEADER_ARCHIE 0xb +#define FACILITY_CLASS_HEX_MANIAC 0xc +#define FACILITY_CLASS_AROMA_LADY 0xd +#define FACILITY_CLASS_RUIN_MANIAC 0xe +#define FACILITY_CLASS_INTERVIEWER 0xf +#define FACILITY_CLASS_TUBER_F 0x10 +#define FACILITY_CLASS_TUBER_M 0x11 +#define FACILITY_CLASS_COOLTRAINER_F 0x12 +#define FACILITY_CLASS_LADY 0x13 +#define FACILITY_CLASS_BEAUTY 0x14 +#define FACILITY_CLASS_RICH_BOY 0x15 +#define FACILITY_CLASS_EXPERT_F 0x16 +#define FACILITY_CLASS_POKEMANIAC 0x17 +#define FACILITY_CLASS_MAGMA_GRUNT_F 0x18 +#define FACILITY_CLASS_GUITARIST 0x19 +#define FACILITY_CLASS_KINDLER 0x1a +#define FACILITY_CLASS_CAMPER 0x1b +#define FACILITY_CLASS_PICNICKER 0x1c +#define FACILITY_CLASS_BUG_MANIAC 0x1d +#define FACILITY_CLASS_PSYCHIC_M 0x1e +#define FACILITY_CLASS_PSYCHIC_F 0x1f +#define FACILITY_CLASS_GENTLEMAN 0x20 +#define FACILITY_CLASS_ELITE_FOUR_SIDNEY 0x21 +#define FACILITY_CLASS_ELITE_FOUR_PHOEBE 0x22 +#define FACILITY_CLASS_LEADER_ROXANNE 0x23 +#define FACILITY_CLASS_LEADER_BRAWLY 0x24 +#define FACILITY_CLASS_LEADER_TATE_AND_LIZA 0x25 +#define FACILITY_CLASS_SCHOOL_KID_M 0x26 +#define FACILITY_CLASS_SCHOOL_KID_F 0x27 +#define FACILITY_CLASS_SR_AND_JR 0x28 +#define FACILITY_CLASS_POKEFAN_M 0x29 +#define FACILITY_CLASS_POKEFAN_F 0x2a +#define FACILITY_CLASS_YOUNGSTER 0x2b +#define FACILITY_CLASS_CHAMPION_WALLACE 0x2c +#define FACILITY_CLASS_FISHERMAN 0x2d +#define FACILITY_CLASS_CYCLING_TRIATHLETE_M 0x2e +#define FACILITY_CLASS_CYCLING_TRIATHLETE_F 0x2f +#define FACILITY_CLASS_RUNNING_TRIATHLETE_M 0x30 +#define FACILITY_CLASS_RUNNING_TRIATHLETE_F 0x31 #define FACILITY_CLASS_SWIMMING_TRIATHLETE_M 0x32 #define FACILITY_CLASS_SWIMMING_TRIATHLETE_F 0x33 -#define FACILITY_CLASS_DRAGON_TAMER 0x34 -#define FACILITY_CLASS_NINJA_BOY 0x35 -#define FACILITY_CLASS_BATTLE_GIRL 0x36 -#define FACILITY_CLASS_PARASOL_LADY 0x37 -#define FACILITY_CLASS_SWIMMER_F 0x38 -#define FACILITY_CLASS_TWINS 0x39 -#define FACILITY_CLASS_SAILOR 0x3a -#define FACILITY_CLASS_WALLY 0x3b -#define FACILITY_CLASS_BRENDAN 0x3c -#define FACILITY_CLASS_BRENDAN_2 0x3d -#define FACILITY_CLASS_BRENDAN_3 0x3e -#define FACILITY_CLASS_MAY 0x3f -#define FACILITY_CLASS_MAY_2 0x40 -#define FACILITY_CLASS_MAY_3 0x41 -#define FACILITY_CLASS_PKMN_BREEDER_M 0x42 -#define FACILITY_CLASS_BUG_CATCHER 0x43 -#define FACILITY_CLASS_PKMN_RANGER_M 0x44 -#define FACILITY_CLASS_PKMN_RANGER_F 0x45 -#define FACILITY_CLASS_MAGMA_LEADER_MAXIE 0x46 -#define FACILITY_CLASS_LASS 0x47 -#define FACILITY_CLASS_YOUNG_COUPLE 0x48 -#define FACILITY_CLASS_OLD_COUPLE 0x49 -#define FACILITY_CLASS_SIS_AND_BRO 0x4a -#define FACILITY_CLASS_STEVEN 0x4b -#define FACILITY_CLASS_SALON_MAIDEN_ANABEL 0x4c -#define FACILITY_CLASS_DOME_ACE_TUCKER 0x4d -#define FACILITY_CLASS_RED 0x4e -#define FACILITY_CLASS_LEAF 0x4f -#define FACILITY_CLASS_RS_BRENDAN 0x50 -#define FACILITY_CLASS_RS_MAY 0x51 +#define FACILITY_CLASS_DRAGON_TAMER 0x34 +#define FACILITY_CLASS_NINJA_BOY 0x35 +#define FACILITY_CLASS_BATTLE_GIRL 0x36 +#define FACILITY_CLASS_PARASOL_LADY 0x37 +#define FACILITY_CLASS_SWIMMER_F 0x38 +#define FACILITY_CLASS_TWINS 0x39 +#define FACILITY_CLASS_SAILOR 0x3a +#define FACILITY_CLASS_WALLY 0x3b +#define FACILITY_CLASS_BRENDAN 0x3c +#define FACILITY_CLASS_BRENDAN_2 0x3d +#define FACILITY_CLASS_BRENDAN_3 0x3e +#define FACILITY_CLASS_MAY 0x3f +#define FACILITY_CLASS_MAY_2 0x40 +#define FACILITY_CLASS_MAY_3 0x41 +#define FACILITY_CLASS_PKMN_BREEDER_M 0x42 +#define FACILITY_CLASS_BUG_CATCHER 0x43 +#define FACILITY_CLASS_PKMN_RANGER_M 0x44 +#define FACILITY_CLASS_PKMN_RANGER_F 0x45 +#define FACILITY_CLASS_MAGMA_LEADER_MAXIE 0x46 +#define FACILITY_CLASS_LASS 0x47 +#define FACILITY_CLASS_YOUNG_COUPLE 0x48 +#define FACILITY_CLASS_OLD_COUPLE 0x49 +#define FACILITY_CLASS_SIS_AND_BRO 0x4a +#define FACILITY_CLASS_STEVEN 0x4b +#define FACILITY_CLASS_SALON_MAIDEN_ANABEL 0x4c +#define FACILITY_CLASS_DOME_ACE_TUCKER 0x4d +#define FACILITY_CLASS_RED 0x4e +#define FACILITY_CLASS_LEAF 0x4f +#define FACILITY_CLASS_RS_BRENDAN 0x50 +#define FACILITY_CLASS_RS_MAY 0x51 + +#define FACILITY_CLASSES_COUNT 0x52 #define TRAINER_CLASS_PKMN_TRAINER_1 0x0 #define TRAINER_CLASS_PKMN_TRAINER_2 0x1 diff --git a/include/constants/vars.h b/include/constants/vars.h index 9854ec5a2..faffe7c70 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -100,7 +100,7 @@ #define VAR_0x4051 0x4051 #define VAR_0x4052 0x4052 #define VAR_0x4053 0x4053 -#define VAR_0x4054 0x4054 +#define VAR_CURRENT_SECRET_BASE 0x4054 #define VAR_0x4055 0x4055 #define VAR_0x4056 0x4056 #define VAR_0x4057 0x4057 diff --git a/include/constants/weather.h b/include/constants/weather.h index 953cc2753..d0a81c34c 100644 --- a/include/constants/weather.h +++ b/include/constants/weather.h @@ -16,6 +16,7 @@ #define WEATHER_DROUGHT 12 #define WEATHER_RAIN_HEAVY 13 #define WEATHER_BUBBLES 14 +#define WEATHER_15 15 #define WEATHER_ROUTE119_CYCLE 20 #define WEATHER_ROUTE123_CYCLE 21 diff --git a/include/contest.h b/include/contest.h index 8790d7371..54c431b94 100644 --- a/include/contest.h +++ b/include/contest.h @@ -231,6 +231,7 @@ extern u8 gContestPlayerMonIndex; extern s16 gUnknown_02039F08[4]; extern s16 gContestMonConditions[4]; extern u8 gIsLinkContest; +extern struct ContestWinner gUnknown_02039F3C; struct Shared18000 { @@ -415,7 +416,6 @@ extern struct ContestResources *gContestResources; #define eContestAI (gContestResources->field_C) #define shared19328 (*gContestResources->field_10) #define shared19338 (*gContestResources->field_14) -#define shared19348 (*gContestResources->field_18) #define shared15800 (gHeap + 0x18000) #define shared18000 (*(struct Shared18000 *)(gHeap + 0x1a000)) @@ -432,6 +432,7 @@ bool8 Contest_IsMonsTurnDisabled(u8 a); bool8 sub_80DE1E8(u8 a); void SetStartledString(u8 a, u8 b); s8 Contest_GetMoveExcitement(u16); +u8 sub_80DAE0C(struct Pokemon *); void sub_80DEDA8(u8); #endif //GUARD_CONTEST_H diff --git a/include/contest_painting.h b/include/contest_painting.h index 67a845d62..c633c50cc 100644 --- a/include/contest_painting.h +++ b/include/contest_painting.h @@ -1,7 +1,16 @@ #ifndef GUARD_CONTESTPAINTING_H #define GUARD_CONTESTPAINTING_H -void sub_812FDA8(u32); -void sub_812FDEC(void); +enum +{ + CONTESTRESULT_COOL = 9, + CONTESTRESULT_BEAUTY = 13, + CONTESTRESULT_CUTE = 2, + CONTESTRESULT_SMART = 36, + CONTESTRESULT_TOUGH = 6, +}; + +void sub_812FDA8(int); +void CB2_ContestPainting(void); #endif diff --git a/include/contest_painting_effects.h b/include/contest_painting_effects.h new file mode 100755 index 000000000..3b6964666 --- /dev/null +++ b/include/contest_painting_effects.h @@ -0,0 +1,28 @@ +#ifndef GUARD_CONTEST_PAINTING_EFFECTS_H +#define GUARD_CONTEST_PAINTING_EFFECTS_H + +struct Unk030061A0 +{ + u8 var_0; + u8 pad1[3]; + u16 (*var_4)[][32]; + u16 *var_8; + u8 pad0C[4]; + u32 var_10; + u16 var_14; + u16 var_16; + u8 var_18; + u8 var_19; + u8 var_1A; + u8 var_1B; + u8 var_1C; + u8 var_1D; + u8 var_1E; + u8 var_1F; +}; + +void sub_8124F2C(struct Unk030061A0 *); +void sub_81261A4(struct Unk030061A0 *); +void sub_8126058(struct Unk030061A0 *); + +#endif diff --git a/include/easy_chat.h b/include/easy_chat.h index 541fa6c1b..23fd9ed83 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -1,6 +1,8 @@ #ifndef GUARD_EASYCHAT_H #define GUARD_EASYCHAT_H +#include "main.h" + void InitEasyChatPhrases(void); void easy_chat_input_maybe(void); u8 * CopyEasyChatWord(u8 *dest, u16 word); @@ -12,5 +14,6 @@ u16 sub_811EE38(u16 group); u16 sub_811F01C(void); bool16 EasyChat_GetNumWordsInGroup(u8); u16 sub_811EE90(u16); +void sub_811A20C(u8 kind, u16 *words, MainCallback callback, u8 sizeParam); #endif // GUARD_EASYCHAT_H diff --git a/include/event_scripts.h b/include/event_scripts.h index 7f69ef3ae..2661494d3 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -405,14 +405,14 @@ extern const u8 gText_SoDesirable[]; extern const u8 gText_SoExciting[]; extern const u8 gText_SoAmusing[]; extern const u8 gText_SoMagical[]; -extern const u8 gUnknown_08294313[]; -extern const u8 gUnknown_08294359[]; -extern const u8 gUnknown_08294398[]; -extern const u8 gUnknown_082943DA[]; -extern const u8 gUnknown_0829441C[]; -extern const u8 gUnknown_08294460[]; -extern const u8 gUnknown_082944A0[]; -extern const u8 gUnknown_082944D5[]; +extern const u8 gMauvilleManText_ISoWantToGoOnAVacation[]; +extern const u8 gMauvilleManText_IBoughtCrayonsWith120Colors[]; +extern const u8 gMauvilleManText_WouldntItBeNiceIfWeCouldFloat[]; +extern const u8 gMauvilleManText_WhenYouWriteOnASandyBeach[]; +extern const u8 gMauvilleManText_WhatsTheBottomOfTheSeaLike[]; +extern const u8 gMauvilleManText_WhenYouSeeTheSettingSunDoesIt[]; +extern const u8 gMauvilleManText_LyingBackInTheGreenGrass[]; +extern const u8 gMauvilleManText_SecretBasesAreSoWonderful[]; extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E930[]; diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h deleted file mode 100644 index 7c2d16a24..000000000 --- a/include/field_fadetransition.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef GUARD_FIELD_FADETRANSITION_H -#define GUARD_FIELD_FADETRANSITION_H - -void sub_80AF734(void); -void sp13E_warp_to_last_warp(void); -void sub_80AF7D0(void); -void sp13F_fall_to_last_warp(void); - -void sub_80AF848(void); -void sub_80AF87C(void); - -#endif // GUARD_FIELD_FADETRANSITION_H diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index adb51f889..3aedec5de 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -58,5 +58,7 @@ u8 GetJumpSpecialMovementAction(u32); bool8 PartyHasMonWithSurf(void); bool8 IsPlayerFacingSurfableFishableWater(void); bool8 IsPlayerSurfingNorth(void); +void sub_808C228(u8 direction); +u8 sub_808BCD0(void); #endif // GUARD_FIELD_PLAYER_AVATAR_H diff --git a/include/field_screen.h b/include/field_screen.h deleted file mode 100644 index 021d2b9e9..000000000 --- a/include/field_screen.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef GUARD_FIELD_SCREEN_H -#define GUARD_FIELD_SCREEN_H - -// Exported type declarations - -// Exported RAM declarations - -// Exported ROM declarations -void pal_fill_black(void); -bool8 IsWeatherNotFadingIn(void); -void sub_80AF168(void); -void sub_80AF2B4(u8 taskId); -void UpdateWeatherPerDay(u16 days); -void sub_80AC3D0(void); -void sub_80AC3E4(void); -void PreservePaletteInWeather(u8); -void sub_80AF128(void); -void sub_80AB104(u8); -void sub_80AF80C(u8); -void sub_80AF828(void); -void sub_80AF838(void); -void sub_80B0268(void); - -#endif //GUARD_FIELD_SCREEN_H diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h index ef81c2f9e..f3ac2e866 100644 --- a/include/field_screen_effect.h +++ b/include/field_screen_effect.h @@ -1,8 +1,44 @@ #ifndef GUARD_FIELD_SCREEN_EFFECT_H #define GUARD_FIELD_SCREEN_EFFECT_H +void pal_fill_for_maplights(void); +void pal_fill_black(void); +void WarpFadeScreen(void); +void sub_80AF128(void); +void sub_80AF168(void); +void sub_80AF188(void); +void sub_80AF214(void); +void sub_80AF2B4(u8 taskId); +void sub_80AF314(void); +void mapldr_default(void); +void sub_80AF3B0(void); +void sub_80AF3C8(void); +void sub_80AF3E8(void); +void sub_80AF40C(void); +void sub_80AF688(void); +bool8 sub_80AF6A4(void); +void sub_80AF6D4(void); +void sub_80AF6F0(void); +void sub_80AF734(void); +void sp13E_warp_to_last_warp(void); void sub_80AF79C(void); -void sub_80B009C(u8); +void sub_80AF7D0(void); +void sp13F_fall_to_last_warp(void); +void sub_80AF80C(u8 metatileBehavior); +void sub_80AF828(void); +void sub_80AF838(void); +void sub_80AF848(void); +void sub_80AF87C(void); +void sub_80AF8B8(void); +void sub_80AF948(void); +void sub_80AF9F8(void); +void sub_80AFC60(void); +void sub_80B009C(u8 flashLevel); +void door_upload_tiles(void); void sub_80B0244(void); +void sub_80B0268(void); +void sub_80B0534(void); +void sub_80B058C(void); +void sub_80B05B4(void); #endif // GUARD_FIELD_SCREEN_EFFECT_H diff --git a/include/field_weather.h b/include/field_weather.h index a48361b8a..c032183e1 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -4,13 +4,23 @@ #include "sprite.h" // Controls how the weather should be changing the screen palettes. -enum { +enum +{ WEATHER_PAL_STATE_CHANGING_WEATHER, WEATHER_PAL_STATE_SCREEN_FADING_IN, WEATHER_PAL_STATE_SCREEN_FADING_OUT, WEATHER_PAL_STATE_IDLE, }; +// For the FadeScreen function. +enum +{ + FADE_FROM_BLACK, + FADE_TO_BLACK, + FADE_FROM_WHITE, + FADE_TO_WHITE, +}; + struct Weather { union @@ -38,11 +48,11 @@ struct Weather u8 gammaStepDelay; u8 gammaStepFrameCounter; u16 fadeDestColor; - u8 palProcessingState; - u8 fadeScreenCounter; - bool8 readyForInit; - u8 taskId; - u8 unknown_6CA; + /*0x6C6*/ u8 palProcessingState; + /*0x6C7*/ u8 fadeScreenCounter; + /*0x6C8*/ bool8 readyForInit; + /*0x6C9*/ u8 taskId; + /*0x6CA*/ u8 unknown_6CA; u8 unknown_6CB; u16 initStep; u16 finishStep; @@ -121,57 +131,103 @@ struct Weather u8 loadDroughtPalsOffset; }; +// field_weather.c +extern struct Weather gWeather; +extern struct Weather *const gWeatherPtr; + void StartWeather(void); void ChangeWeather(u8 weather); -void sub_807C988(u8 effect); -void sub_807C9B4(u8 effect); -void Task_WeatherInit(u8); -void Task_WeatherMain(u8); -void sub_807CAE8(void); -void nullsub_38(void); -void SetWeatherScreenFadeOut(void); - -enum -{ - FADE_FROM_BLACK, - FADE_TO_BLACK, - FADE_FROM_WHITE, - FADE_TO_WHITE, -}; - -void FadeScreen(u8, s8); -// ... -void UpdateSpritePaletteWithWeather(u8 tag); -void ApplyWeatherGammaShiftToPal(u8); -// ... -void Weather_SetBlendCoeffs(u8, u8); -// ... -void PlayRainSoundEffect(void); -// ... -void SetSav1Weather(u32); -u8 GetSav1Weather(void); -void sub_80AEDBC(void); - -void SetSav1WeatherFromCurrMapHeader(void); -// ... -void DoCurrentWeather(void); -void sub_8080750(void); - +void sub_80AB104(u8 weather); +void sub_80AB130(u8 weather); +void sub_80ABC48(s8 gammaIndex); +void sub_80ABC7C(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay); +void FadeScreen(u8 mode, s8 delay); bool8 IsWeatherNotFadingIn(void); -bool8 IsWeatherChangeComplete(void); -void SetWeather(u32); -void UpdateWeatherPerDay(u16); -void PreservePaletteInWeather(u8 index); -void ResetPreservedPalettesInWeather(void); -extern void ResetDroughtWeatherPaletteLoading(void); +void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex); +void ApplyWeatherGammaShiftToPal(u8 paletteIndex); +u8 sub_80ABF20(void); +void LoadCustomWeatherSpritePalette(const u16 *palette); void ResetDroughtWeatherPaletteLoading(void); bool8 LoadDroughtWeatherPalettes(void); +void sub_80ABFE0(s8 gammaIndex); +void sub_80ABFF0(void); +void sub_80AC01C(void); +void Weather_SetBlendCoeffs(u8 eva, u8 evb); +void Weather_SetTargetBlendCoeffs(u8 eva, u8 evb, int delay); +bool8 Weather_UpdateBlend(void); +void sub_80AC274(u8 a); u8 GetCurrentWeather(void); -void LoadCustomWeatherSpritePalette(const u16 *palette); - +void SetRainStrengthFromSoundEffect(u16 soundEffect); +void PlayRainSoundEffect(void); +u8 IsWeatherChangeComplete(void); +void SetWeatherScreenFadeOut(void); +void sub_80AC3E4(void); +void PreservePaletteInWeather(u8 preservedPalIndex); +void ResetPreservedPalettesInWeather(void); -extern struct Weather gWeather; +// field_weather_effect.c +void Clouds_InitVars(void); +void Clouds_Main(void); +void Clouds_InitAll(void); +bool8 Clouds_Finish(void); +void Weather2_InitVars(void); +void Weather2_Main(void); +void Weather2_InitAll(void); +bool8 Weather2_Finish(void); +void LightRain_InitVars(void); +void LightRain_Main(void); +void LightRain_InitAll(void); +bool8 LightRain_Finish(void); +void Snow_InitVars(void); +void Snow_Main(void); +void Snow_InitAll(void); +bool8 Snow_Finish(void); +void MedRain_InitVars(void); +void Rain_Main(void); +void MedRain_InitAll(void); +bool8 Rain_Finish(void); +void Fog1_InitVars(void); +void Fog1_Main(void); +void Fog1_InitAll(void); +bool8 Fog1_Finish(void); +void Ash_InitVars(void); +void Ash_Main(void); +void Ash_InitAll(void); +bool8 Ash_Finish(void); +void Sandstorm_InitVars(void); +void Sandstorm_Main(void); +void Sandstorm_InitAll(void); +bool8 Sandstorm_Finish(void); +void Fog2_InitVars(void); +void Fog2_Main(void); +void Fog2_InitAll(void); +bool8 Fog2_Finish(void); +void Fog1_InitVars(void); +void Fog1_Main(void); +void Fog1_InitAll(void); +bool8 Fog1_Finish(void); +void Shade_InitVars(void); +void Shade_Main(void); +void Shade_InitAll(void); +bool8 Shade_Finish(void); +void Drought_InitVars(void); +void Drought_Main(void); +void Drought_InitAll(void); +bool8 Drought_Finish(void); +void HeavyRain_InitVars(void); +void Rain_Main(void); +void HeavyRain_InitAll(void); +bool8 Rain_Finish(void); +void Bubbles_InitVars(void); +void Bubbles_Main(void); +void Bubbles_InitAll(void); +bool8 Bubbles_Finish(void); -extern struct Weather *const gWeatherPtr; +u8 GetSav1Weather(void); +void SetSav1Weather(u32 weather); +void SetSav1WeatherFromCurrMapHeader(void); +void SetWeather(u32 weather); +void DoCurrentWeather(void); +void UpdateWeatherPerDay(u16 increment); #endif // GUARD_WEATHER_H diff --git a/include/fldeff_80F9BCC.h b/include/fldeff_80F9BCC.h deleted file mode 100644 index 027bb4273..000000000 --- a/include/fldeff_80F9BCC.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef GUARD_FLDEFF_80F9BCC_H -#define GUARD_FLDEFF_80F9BCC_H - -// Exported type declarations - -// Exported RAM declarations - -// Exported ROM declarations - -void sub_80FA5E4(s16 id, s16 x, s16 y); -void sub_80FA794(s16 x, s16 y); -void CreateRecordMixingSprite(void); -void DestroyRecordMixingSprite(void); -void FldeffPoison_Start(void); -void sub_80FA970(s16); -void sub_80FA9D0(void); -bool8 sub_80FADE4(u16, u8); - -#endif //GUARD_FLDEFF_80F9BCC_H diff --git a/include/fldeff_misc.h b/include/fldeff_misc.h new file mode 100644 index 000000000..954ecbb5c --- /dev/null +++ b/include/fldeff_misc.h @@ -0,0 +1,24 @@ +#ifndef GUARD_FLDEFF_MISC_H +#define GUARD_FLDEFF_MISC_H + +void PopSecretBaseBalloon(s16 id, s16 x, s16 y); +void ShatterSecretBaseBreakableDoor(s16 x, s16 y); +u8 CreateRecordMixingSprite(void); +void DestroyRecordMixingSprite(void); +void FldEffPoison_Start(void); +void PlaySecretBaseMusicNoteMatSound(s16 metatileId); +void DoSecretBaseGlitterMatSparkle(void); +bool8 sub_80FADE4(u16, u8); + +extern struct MapPosition gPlayerFacingPosition; +extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; + +extern u8 EventScript_275A86[]; +extern u8 EventScript_275ADF[]; +extern u8 EventScript_275B38[]; + +extern const struct OamData gEventObjectBaseOam_32x8; + +extern const u16 gTilesetPalettes_SecretBase[][16]; + +#endif //GUARD_FLDEFF_MISC_H diff --git a/include/fldeff_softboiled.h b/include/fldeff_softboiled.h new file mode 100755 index 000000000..abb3c7913 --- /dev/null +++ b/include/fldeff_softboiled.h @@ -0,0 +1,7 @@ +#ifndef GUARD_FLDEFF_SOFTBOILED_H +#define GUARD_FLDEFF_SOFTBOILED_H + +void sub_81615A8(u8 taskId); +void sub_8161560(u8 taskId); + +#endif // GUARD_FLDEFF_SOFTBOILED_H diff --git a/include/gba/types.h b/include/gba/types.h index a7dbf3e03..fff48d437 100644 --- a/include/gba/types.h +++ b/include/gba/types.h @@ -32,7 +32,9 @@ struct BgCnt { u16 priority:2; u16 charBaseBlock:2; - u16 dummy:4; + u16 dummy:2; + u16 mosaic:1; + u16 palettes:1; u16 screenBaseBlock:5; u16 areaOverflowMode:1; u16 screenSize:2; diff --git a/include/global.h b/include/global.h index c976abd2d..090ba7ce4 100644 --- a/include/global.h +++ b/include/global.h @@ -61,6 +61,12 @@ #define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) >= (b) ? (a) : (b)) +// Extracts the upper 16 bits of a 32-bit number +#define HIHALF(n) (((n) & 0xFFFF0000) >> 16) + +// Extracts the lower 16 bits of a 32-bit number +#define LOHALF(n) ((n) & 0xFFFF) + // There are many quirks in the source code which have overarching behavioral differences from // a number of other files. For example, diploma.c seems to declare rodata before each use while // other files declare out of order and must be at the beginning. There are also a number of @@ -79,6 +85,14 @@ #define T2_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) #define T2_READ_PTR(ptr) (void*) T2_READ_32(ptr) +#define S16TOPOSFLOAT(val) \ +({ \ + s16 v = (val); \ + float f = (float)v; \ + if(v < 0) f += 65536.0f; \ + f; \ +}) + // Invalid Versions show as "----------" in Gen 4 and Gen 5's summary screen. // In Gens 6 and 7, invalid versions instead show "a distant land" in the summary screen. // In Gen 4 only, migrated Pokemon with Diamond, Pearl, or Platinum's ID show as "----------". @@ -222,7 +236,7 @@ struct Time struct Pokedex { /*0x00*/ u8 order; - /*0x01*/ u8 unknown1; + /*0x01*/ u8 mode; /*0x02*/ u8 nationalMagic; // must equal 0xDA in order to have National mode /*0x03*/ u8 unknown2; /*0x04*/ u32 unownPersonality; // set when you first see Unown @@ -293,7 +307,7 @@ struct Apprentice u32 checksum; }; -struct UnknownPokemonStruct +struct BattleTowerPokemon { u16 species; u16 heldItem; @@ -330,7 +344,7 @@ struct EmeraldBattleTowerRecord /*0x10*/ u16 greeting[6]; /*0x1C*/ u16 speechWon[6]; /*0x28*/ u16 speechLost[6]; - /*0x34*/ struct UnknownPokemonStruct party[4]; + /*0x34*/ struct BattleTowerPokemon party[4]; /*0xE4*/ u8 language; /*0xE8*/ u32 checksum; }; @@ -345,7 +359,7 @@ struct BattleTowerEReaderTrainer /*0x10*/ u16 greeting[6]; /*0x1C*/ u16 farewellPlayerLost[6]; /*0x28*/ u16 farewellPlayerWon[6]; - /*0x34*/ struct UnknownPokemonStruct party[3]; + /*0x34*/ struct BattleTowerPokemon party[3]; /*0xB8*/ u32 checksum; }; @@ -881,7 +895,7 @@ struct SaveBlock1 /*0x24*/ struct WarpData warp4; /*0x2C*/ u16 savedMusic; /*0x2E*/ u8 weather; - /*0x2F*/ u8 filler_2F; + /*0x2F*/ u8 weatherCycleStage; /*0x30*/ u8 flashLevel; /*0x32*/ u16 mapLayoutId; /*0x34*/ u16 mapView[0x100]; diff --git a/include/graphics.h b/include/graphics.h index bfb57ccb9..79e231cf7 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -3911,6 +3911,11 @@ extern const u16 gIntro2BrendanNoTurnPal[]; extern const u16 gIntro2FlygonPal[]; extern const u32 gIntro2FlygonGfx[]; +// party menu graphics +extern const u32 gPartyMenuMisc_Gfx[]; +extern const u32 gPartyMenuMisc_Tilemap[]; +extern const u8 gPartyMenuMisc_Pal[]; + // berry pics extern const u32 gBerryPic_Cheri[]; extern const u32 gBerryPalette_Cheri[]; @@ -4154,6 +4159,8 @@ extern const u32 gBattleAnimSpriteSheet_050[]; extern const u32 gBattleAnimSpriteSheet_051[]; extern const u32 gBattleAnimSpriteSheet_052[]; extern const u32 gBattleAnimSpriteSheet_053[]; +extern const u32 gUnknown_08C2EA50[]; +extern const u32 gUnknown_08C2EA9C[]; extern const u32 gBattleAnimSpriteSheet_054[]; extern const u32 gBattleAnimSpriteSheet_055[]; extern const u32 gBattleAnimSpriteSheet_056[]; @@ -4233,6 +4240,7 @@ extern const u32 gBattleAnimSpriteSheet_132[]; extern const u32 gBattleAnimSpriteSheet_133[]; extern const u32 gBattleAnimSpriteSheet_134[]; extern const u32 gBattleAnimSpriteSheet_135[]; +extern const u32 gBattleAnimSpriteSheet_Particles[]; extern const u32 gBattleAnimSpriteSheet_136[]; extern const u32 gBattleAnimSpriteSheet_137[]; extern const u32 gBattleAnimSpriteSheet_138[]; @@ -4371,6 +4379,9 @@ extern const u32 gBattleAnimSpriteSheet_280[]; extern const u32 gBattleAnimSpriteSheet_281[]; extern const u32 gBattleAnimSpriteSheet_282[]; extern const u32 gBattleAnimSpriteSheet_283[]; +extern const u32 gBattleAnimBackgroundTilemap_ScaryFacePlayer[]; +extern const u32 gBattleAnimBackgroundTilemap_ScaryFaceOpponent[]; +extern const u32 gBattleAnimBackgroundTilemap_ScaryFaceContest[]; extern const u32 gBattleAnimSpriteSheet_284[]; extern const u32 gBattleAnimSpriteSheet_285[]; @@ -4583,10 +4594,15 @@ extern const u32 gBattleAnimSpritePalette_209[]; extern const u32 gBattleAnimSpritePalette_210[]; extern const u32 gBattleAnimSpritePalette_211[]; extern const u32 gBattleAnimSpritePalette_215[]; +extern const u32 gUnknown_08C249D0[]; +extern const u32 gUnknown_08C249F8[]; extern const u32 gBattleAnimSpritePalette_216[]; extern const u32 gBattleAnimSpritePalette_217[]; extern const u32 gBattleAnimSpritePalette_218[]; extern const u32 gBattleAnimSpritePalette_219[]; +extern const u32 gUnknown_08C232E0; +extern const u32 gUnknown_08C23D50; +extern const u32 gUnknown_08C23D78; extern const u32 gBattleAnimSpritePalette_220[]; extern const u32 gBattleAnimSpritePalette_221[]; extern const u32 gBattleAnimSpritePalette_222[]; @@ -4610,6 +4626,9 @@ extern const u32 gBattleAnimSpritePalette_241[]; extern const u32 gBattleAnimSpritePalette_242[]; extern const u32 gBattleAnimSpritePalette_243[]; extern const u32 gBattleAnimSpritePalette_244[]; +extern const u8 gUnknown_08C2DC68[]; +extern const u16 gUnknown_08C2DDA4[]; +extern const u8 gUnknown_08C2DDC4[]; extern const u32 gBattleAnimSpritePalette_245[]; extern const u32 gBattleAnimSpritePalette_248[]; extern const u32 gBattleAnimSpritePalette_249[]; @@ -4688,6 +4707,9 @@ extern const u32 gBattleAnimBackgroundTilemap_07[]; extern const u32 gBattleAnimBackgroundTilemap_08[]; extern const u32 gBattleAnimBackgroundTilemap_09[]; extern const u32 gBattleAnimBackgroundTilemap_10[]; +extern const u32 gUnknown_08C2A634[]; +extern const u32 gUnknown_08C2A6D4[]; +extern const u32 gUnknown_08C2A6EC[]; extern const u32 gBattleAnimBackgroundTilemap_11[]; extern const u32 gBattleAnimBackgroundTilemap_12[]; extern const u32 gBattleAnimBackgroundTilemap_13[]; @@ -4719,6 +4741,13 @@ extern const u32 gUnknown_08C16FA8[]; extern const u32 gUnknown_08C16E90[]; extern const u32 gUnknown_08C17170[]; +extern const u32 gUnknown_08D95E00[]; +extern const u32 gUnknown_08D960D0[]; +extern const u32 gUnknown_08D963A4[]; +extern const u32 gBattleAnimBackgroundImage_Surf[]; +extern const u32 gBattleAnimBackgroundPalette_Surf[]; +extern const u32 gBattleAnimBackgroundImageMuddyWater_Pal[]; + // Berry blender extern const u32 gBerryBlenderArrowTiles[]; extern const u32 gBerryBlenderStartTiles[]; @@ -4754,4 +4783,12 @@ extern const u32 gWallpaperTiles_Horizontal[]; extern const u32 gWallpaperTilemap_Horizontal[]; extern const u16 gWallpaperPalettes_Horizontal[][16]; +// Cable Car +extern const u32 gUnknown_08DBA5B8[]; +extern const u16 gUnknown_08DBA518[]; +extern const u32 gCableCar_Gfx[]; +extern const u32 gCableCarDoor_Gfx[]; +extern const u32 gCableCarCord_Gfx[]; +extern const u16 gCableCar_Pal[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/item_menu.h b/include/item_menu.h index 6214c69fc..a904208d9 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -1,6 +1,22 @@ #ifndef GUARD_item_menu_H #define GUARD_item_menu_H +#include "item.h" + +#define RETURN_LOCATION_FIELD 0 +#define RETURN_LOCATION_BATTLE 1 +#define RETURN_LOCATION_POKEMON_LIST 2 +#define RETURN_LOCATION_SHOP 3 +#define RETURN_LOCATION_FIELD_2 4 +#define RETURN_LOCATION_FIELD_3 5 +#define RETURN_LOCATION_PC 6 +#define RETURN_LOCATION_FIELD_4 7 +#define RETURN_LOCATION_FIELD_5 8 +#define RETURN_LOCATION_FIELD_6 9 +#define RETURN_LOCATION_BATTLE_2 10 +#define RETURN_LOCATION_PC_2 11 +#define RETURN_LOCATION_UNCHANGED 12 + // Exported type declarations struct BagStruct { @@ -8,18 +24,18 @@ struct BagStruct u8 location; u8 pocket; u16 unk6; - u16 cursorPosition[5]; - u16 scrollPosition[5]; + u16 cursorPosition[POCKETS_COUNT]; + u16 scrollPosition[POCKETS_COUNT]; }; extern struct BagStruct gUnknown_0203CE58; struct UnkBagStruct { - void (*unk0)(void); - u8 unk4[0x800]; - u8 unk804[12]; - u8 unk810[7]; + void (*mainCallback2)(void); + u8 tilemapBuffer[0x800]; + u8 spriteId[12]; + u8 windowPointers[7]; u8 unk817; u8 unk818; u8 unk819; @@ -27,7 +43,7 @@ struct UnkBagStruct u8 unk81B:4; u8 unk81B_1:2; u8 unk81B_3:1; - u8 unk81B_2:1; + u8 hideCloseBagText:1; u8 filler3[2]; u8 unk81E; u8 unk81F; @@ -36,11 +52,11 @@ struct UnkBagStruct u8 unk825; u8 filler[2]; u8 unk828; - u8 unk829[5]; - u8 unk82E[6]; + u8 numItemStacks[POCKETS_COUNT]; + u8 numShownItems[6]; s16 unk834; u8 filler4[0xE]; - u8 unk844[32][32]; + u8 pocketNameBuffer[32][32]; u8 filler2[4]; }; @@ -55,9 +71,10 @@ void sub_81AAC14(void); void sub_81AAC50(void); void sub_81AAC70(void); void sub_81AAC28(void); +void SetInitialScrollAndCursorPositions(u8 pocketId); void bag_menu_mail_related(void); void CB2_BagMenuFromStartMenu(void); -u8 sub_81ABB2C(u8 pocketId); +u8 GetItemListPosition(u8 pocketId); bool8 UseRegisteredKeyItemOnField(void); void CB2_GoToSellMenu(void); void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)()); diff --git a/include/link_rfu.h b/include/link_rfu.h index 426565e56..e394e2611 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -2,6 +2,7 @@ #define GUARD_LINK_RFU_H #include "librfu.h" +#include "link.h" // Exported type declarations diff --git a/include/math_util.h b/include/math_util.h new file mode 100755 index 000000000..6b0d42460 --- /dev/null +++ b/include/math_util.h @@ -0,0 +1,14 @@ +#ifndef GUARD_MATH_UTIL_H +#define GUARD_MATH_UTIL_H + +s16 sub_8151534(s16 x, s16 y); +s16 sub_8151550(u8 s, s16 x, s16 y); +s32 sub_8151574(s32 x, s32 y); +s16 sub_81515B0(s16 x, s16 y); +s16 sub_81515D4(u8 s, s16 x, s16 y); +s32 sub_81515FC(s32 x, s32 y); +s16 sub_8151624(s16 y); +s16 sub_815163C(u8 s, s16 y); +s32 sub_815165C(s32 y); + +#endif // GUARD_MATH_UTIL_H diff --git a/include/menu.h b/include/menu.h index 198e7bd4a..04677ae40 100644 --- a/include/menu.h +++ b/include/menu.h @@ -36,6 +36,7 @@ u32 GetPlayerTextSpeed(void); u8 GetPlayerTextSpeedDelay(void); void sub_81978B0(u16 arg0); void AddTextPrinterWithCallbackForMessage(bool8 a1, void (*callback)(struct TextPrinterTemplate *, u16)); +void sub_8199DF0(u32 bg, u8 a1, int a2, int a3); void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str); void sub_8198070(u8 windowId, bool8 copyToVram); void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock); @@ -91,5 +92,8 @@ void sub_8198204(const u8 *string, const u8 *string2, u8 a3, u8 a4, bool8 copyTo void sub_8197AE8(bool8 copyToVram); void sub_81997AC(u8 windowId, u8 a4, u8 a6, u8 a7, const struct MenuAction *strs); s8 Menu_ProcessInputGridLayout(void); +u8 InitMenuInUpperLeftCorner(u8 windowId, u8 itemCount, u8 initialCursorPos, bool8 APressMuted); +s8 Menu_ProcessInputNoWrapAround_other(void); +void sub_8199CBC(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height); #endif // GUARD_MENU_H diff --git a/include/overworld.h b/include/overworld.h index 60d9d5133..1f53662b3 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -91,7 +91,7 @@ void Overworld_ClearSavedMusic(void); void Overworld_ChangeMusicToDefault(void); void Overworld_ChangeMusicTo(u16 newMusic); u8 GetMapMusicFadeoutSpeed(void); -void music_something(void); +void TryFadeOutOldMapMusic(void); bool8 BGMusicStopped(void); void Overworld_FadeOutMapMusic(void); void UpdateAmbientCry(s16 *state, u16 *delayCounter); diff --git a/include/party_menu.h b/include/party_menu.h index cb82eb82c..27a043cb6 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -1,6 +1,7 @@ #ifndef GUARD_PARTY_MENU_H #define GUARD_PARTY_MENU_H +#include "main.h" #include "task.h" enum @@ -10,7 +11,9 @@ enum AILMENT_PRZ, AILMENT_SLP, AILMENT_FRZ, - AILMENT_BRN + AILMENT_BRN, + AILMENT_PKRS, + AILMENT_FNT }; enum @@ -23,18 +26,23 @@ enum PARTY_GIVE_ITEM, }; -struct Struct203CEC8 -{ - u8 filler[0x9]; +struct Struct203CEC8 { + MainCallback exitCallback; + TaskFunc unk4; + u8 unk8_0:4; + u8 mode:2; + u8 unk8_2:2; s8 unk9; s8 unkA; u8 unkB; - u8 filler2[0x2]; + u16 unkC; + s16 unkE; + s16 unk10; }; extern struct Struct203CEC8 gUnknown_0203CEC8; -extern const u16 gUnknown_0861500C[]; +extern const u16 gUnknown_0861500C[]; // tutor table bool8 pokemon_has_move(struct Pokemon *, u16); void sub_81B58A8(void); @@ -47,9 +55,9 @@ void sub_81B7F60(void); void sub_81B0FCC(u8 partyIdx, u8 a); void sub_81B1370(u8 taskId); -void display_pokemon_menu_message(u8 windowId); +void display_pokemon_menu_message(u32 windowId); void sub_81B1F18(u8 taskId, u8 pokemonIdx, s8 a, s16 hp, TaskFunc func); -void sub_81B1B5C(void *a, u8 b); +u8 sub_81B1B5C(const u8 *a, u8 b); u8 sub_81B1BD4(void); void sub_81B8448(void); void sub_81B8518(u8 unused); @@ -62,13 +70,13 @@ void sub_81B617C(void); u8 sub_81B6D14(u16 a); bool8 hm_add_c3_without_phase_2(void); -extern void dp05_ether(u8, u16, TaskFunc); -extern void dp05_pp_up(u8, u16, TaskFunc); -extern void dp05_rare_candy(u8, u16, TaskFunc); +extern void dp05_ether(u8, TaskFunc); +extern void dp05_pp_up(u8, TaskFunc); +extern void dp05_rare_candy(u8, TaskFunc); -extern void sub_81B67C8(u8, u16, TaskFunc); -extern void sub_81B79E8(u8, u16, TaskFunc); -extern void sub_81B6DC4(u8, u16, TaskFunc); -extern void sub_81B7C74(u8, u16, TaskFunc); +extern void sub_81B67C8(u8, TaskFunc); +extern void sub_81B79E8(u8, TaskFunc); +extern void sub_81B6DC4(u8, TaskFunc); +extern void sub_81B7C74(u8, TaskFunc); #endif // GUARD_PARTY_MENU_H diff --git a/include/player_pc.h b/include/player_pc.h index bd060faa8..5a0b83683 100644 --- a/include/player_pc.h +++ b/include/player_pc.h @@ -84,5 +84,6 @@ extern const struct MenuAction gMailboxMailOptions[]; void ReshowPlayerPC(u8 taskId); void sub_816B31C(void); +void Mailbox_ReturnToMailListAfterDeposit(void); #endif //GUARD_PLAYER_PC_H diff --git a/include/pokedex.h b/include/pokedex.h index 3f90e9508..b6d323fd3 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -4,6 +4,15 @@ extern u8 gUnknown_030060B0; extern void (*gUnknown_030060B4)(void); +#define HOENN_DEX_COUNT 202 +#define NATIONAL_DEX_COUNT 386 + +enum +{ + DEX_MODE_HOENN, + DEX_MODE_NATIONAL +}; + enum { FLAG_GET_SEEN, @@ -31,6 +40,6 @@ u16 GetNationalPokedexCount(u8); u16 GetHoennPokedexCount(u8); u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality); s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId); -u16 sub_80C0E9C(u16, s16, s16, u16); +u16 CreateMonSpriteFromNationalDexNumber(u16, s16, s16, u16); #endif // GUARD_POKEDEX_H diff --git a/include/pokemon.h b/include/pokemon.h index 4f30e92ab..cfa5cc350 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -451,11 +451,11 @@ void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level); void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality); void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u32 otId); void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread); -void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src); -void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lvl50); +void sub_806819C(struct Pokemon *mon, struct BattleTowerPokemon *src); +void sub_8068338(struct Pokemon *mon, struct BattleTowerPokemon *src, bool8 lvl50); void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 monId); void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId); -void sub_80686FC(struct Pokemon *mon, struct UnknownPokemonStruct *dest); +void sub_80686FC(struct Pokemon *mon, struct BattleTowerPokemon *dest); void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId); bool8 sub_80688F8(u8 caseId, u8 battlerId); void SetDeoxysStats(void); @@ -557,7 +557,7 @@ u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves); u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves); u8 GetNumberOfRelearnableMoves(struct Pokemon *mon); u16 SpeciesToPokedexNum(u16 species); -bool32 sub_806E3F8(u16 species); +bool32 IsSpeciesInHoennDex(u16 species); void ClearBattleMonForms(void); u16 GetBattleBGM(void); void PlayBattleBGM(void); diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index 9d6e88685..4f27ef281 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -21,5 +21,7 @@ u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u u8 UpdateMonIconFrame(struct Sprite *sprite); void LoadMonIconPalette(u16 species); void sub_80D328C(struct Sprite *sprite); +void sub_80D3014(struct Sprite *sprite); +void sub_80D32C8(struct Sprite *sprite, u8 animNum); #endif // GUARD_POKEMON_ICON_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index afc0516b6..4b84856bb 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -52,7 +52,7 @@ struct BoxPokemon *GetBoxedMonPtr(u8 boxId, u8 boxPosition); u8 *GetBoxNamePtr(u8 boxId); u8 GetBoxWallpaper(u8 boxId); void SetBoxWallpaper(u8 boxId, u8 wallpaperId); -s16 sub_80D214C(struct BoxPokemon *boxMons, s8 currIndex, u8 maxIndex, u8 arg3); +s16 sub_80D214C(struct BoxPokemon *boxMons, u8 currIndex, u8 maxIndex, u8 arg3); bool8 CheckFreePokemonStorageSpace(void); bool32 CheckBoxedMonSanity(u32 boxId, u32 boxPosition); u32 CountStorageNonEggMons(void); diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h index c08c581c3..34f7934e1 100755 --- a/include/pokemon_summary_screen.h +++ b/include/pokemon_summary_screen.h @@ -7,6 +7,7 @@ void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void sub_81C4F98(u8, void(*)(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_81C1B94(void); // The Pokemon Summary Screen can operate in different modes. Certain features, // such as move re-ordering, are available in the different modes. diff --git a/include/pokenav.h b/include/pokenav.h index 1fde8aa44..d8f0c9f97 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -36,5 +36,7 @@ u8 GetCurrentTrainerHillMapId(void); u8 sub_81D6490(void); const struct WarpEvent *sub_81D6120(void); const struct WarpEvent *sub_81D6134(u8); +void sub_81D3640(u16 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5); +void sub_81D3784(u16 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4); #endif //GUARD_POKENAV_H diff --git a/include/region_map.h b/include/region_map.h index 0c82232cf..ed1c1a201 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -107,6 +107,7 @@ u8 *sub_8124610(u8 *dest, u16 mapSecId); u16 CorrectSpecialMapSecId(u16 mapSecId); void sub_8122D88(struct RegionMap *regionMap); void PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs(s16 x, s16 y); +void MCB2_FlyMap(void); extern const struct RegionMapLocation gRegionMapEntries[]; diff --git a/include/rom_8011DC0.h b/include/rom_8011DC0.h index b6ca0e248..c1bdbdf34 100644 --- a/include/rom_8011DC0.h +++ b/include/rom_8011DC0.h @@ -5,11 +5,16 @@ // Exported RAM declarations +extern struct UnkLinkRfuStruct_02022B14Substruct gUnknown_02022C38; +extern u16 gUnknown_02022C3C; +extern u8 gUnknown_02022C3E; + // Exported ROM declarations void sub_8018438(void); u16 mevent_081445C0(u8); void sub_801B990(u32, u32); u8 sub_8013F78(void); +bool32 sub_802C908(u16); #endif //GUARD_rom_8011DC0_H diff --git a/include/scanline_effect.h b/include/scanline_effect.h index eb837e7e2..5bd8b5546 100644 --- a/include/scanline_effect.h +++ b/include/scanline_effect.h @@ -3,6 +3,7 @@ // DMA control value to transfer a single 16-bit value at HBlank #define SCANLINE_EFFECT_DMACNT_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_INC | DMA_16BIT | DMA_DEST_RELOAD) << 16) | 1) +#define SCANLINE_EFFECT_DMACNT_32BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_INC | DMA_32BIT | DMA_DEST_RELOAD) << 16) | 1) #define SCANLINE_EFFECT_REG_BG0HOFS (REG_ADDR_BG0HOFS - REG_ADDR_BG0HOFS) #define SCANLINE_EFFECT_REG_BG0VOFS (REG_ADDR_BG0VOFS - REG_ADDR_BG0HOFS) diff --git a/include/secret_base.h b/include/secret_base.h index 4fa0d0c4a..ac15357e3 100644 --- a/include/secret_base.h +++ b/include/secret_base.h @@ -23,4 +23,12 @@ void sub_80EB9E0(void); void sub_80EBB28(void); void sub_80E9668(const struct MapPosition *position, const struct MapEvents *events); +// SetCurrentSecretBaseFromPosition +void sub_80E9608(const struct MapPosition *position, const struct MapEvents *events); +// SetCurrentSecretBaseVar +void sub_80E8B6C(void); +void sub_80E8BC8(void); +void sub_80E8D4C(void); +void EnableBothScriptContexts(void); + #endif //GUARD_SECRET_BASE_H diff --git a/include/strings.h b/include/strings.h index 71392eb6a..eff40d8f2 100644 --- a/include/strings.h +++ b/include/strings.h @@ -140,6 +140,8 @@ extern const u8 gText_Cancel4[]; extern const u8 gText_IsThisTheCorrectTime[]; extern const u8 gText_PkmnFainted3[]; extern const u8 gText_Coins[]; +extern const u8 gText_Silver[]; +extern const u8 gText_Gold[]; extern const u8 gText_Var1AteTheVar2[]; extern const u8 gText_Var1HappilyAteVar2[]; @@ -399,6 +401,69 @@ extern const u8 gText_ThreeDashes[]; // party menu text extern const u8 gText_PkmnHPRestoredByVar2[]; extern const u8 gText_CantBeUsedOnPkmn[]; +extern const u8 gText_CancelParticipation[]; +extern const u8 gText_PkmnWasGivenItem[]; +extern const u8 gText_RecievedItemFromPkmn[]; +extern const u8 gText_SwitchPkmnItem[]; +extern const u8 gText_SwitchedPkmnItem[]; +extern const u8 gText_BagFullCouldNotRemoveItem[]; +extern const u8 gText_PkmnCantParticipate[]; +extern const u8 gText_PkmnNotHolding[]; +extern const u8 gText_ThrowAwayItem[]; +extern const u8 gText_ItemThrownAway[]; +extern const u8 gText_SendMailToPC[]; +extern const u8 gText_MailSentToPC[]; +extern const u8 gText_PCMailboxFull[]; +extern const u8 gText_MailMessageWillBeLost[]; +extern const u8 gText_MailTakenFromPkmn[]; +extern const u8 gText_NoMoreThanVar1Pkmn[]; +extern const u8 gText_PkmnCantBeTradedNow[]; +extern const u8 gText_EggCantBeTradedNow[]; +extern const u8 gText_OnlyPkmnForBattle[]; +extern const u8 gJPText_PutVar1IntoSpinner[]; +extern const u8 gText_PauseUntilPress[]; +extern const u8 gText_CantUseUntilNewBadge[]; +extern const u8 gText_ReturnToHealingSpot[]; +extern const u8 gText_EscapeFromHere[]; +extern const u8 gText_PkmnCuredOfPoison[]; +extern const u8 gText_PkmnWokeUp2[]; +extern const u8 gText_PkmnBurnHealed[]; +extern const u8 gText_PkmnThawedOut[]; +extern const u8 gText_PkmnCuredOfParalysis[]; +extern const u8 gText_PkmnGotOverInfatuation[]; +extern const u8 gText_PkmnBecameHealthy[]; +extern const u8 gText_HP3[]; +extern const u8 gText_SpAtk3[]; +extern const u8 gText_SpDef3[]; +extern const u8 gText_PkmnBaseVar2StatIncreased[]; +extern const u8 gText_MovesPPIncreased[]; +extern const u8 gText_PPWasRestored[]; +extern const u8 gText_WontHaveEffect[]; +extern const u8 gText_PkmnSnappedOutOfConfusion[]; +extern const u8 gText_PkmnFriendlyBaseVar2Fell[]; +extern const u8 gText_PkmnFriendlyBaseVar2CantFall[]; +extern const u8 gText_PkmnAdoresBaseVar2Fell[]; +extern const u8 gText_PkmnAlreadyKnows[]; +extern const u8 gText_PkmnCantLearnMove[]; +extern const u8 gText_PkmnNeedsToReplaceMove[]; +extern const u8 gText_PkmnLearnedMove3[]; +extern const u8 gText_WhichMoveToForget[]; +extern const u8 gText_12PoofForgotMove[]; +extern const u8 gText_StopLearningMove2[]; +extern const u8 gText_MoveNotLearned[]; +extern const u8 gText_PkmnElevatedToLvVar2[]; +extern const u8 gText_RemoveMailBeforeItem[]; +extern const u8 gText_PkmnHoldingItemCantHoldMail[]; +extern const u8 gText_MailTransferredFromMailbox[]; +extern const u8 gText_CancelBattle[]; +extern const u8 gText_ReturnToWaitingRoom[]; +extern const u8 gText_CancelChallenge[]; +extern const u8 gText_CantSwitchWithAlly[]; +extern const u8 gText_PkmnHasNoEnergy[]; +extern const u8 gText_EggCantBattle[]; +extern const u8 gText_PkmnAlreadySelected[]; +extern const u8 gText_PkmnAlreadyInBattle[]; +extern const u8 gText_PkmnCantSwitchOut[]; //pokedex text extern const u8 gText_CryOf[]; @@ -1226,6 +1291,7 @@ extern const u8 gText_SpaceAndSpace[]; extern const u8 gText_CommaSpace[]; extern const u8 gText_NewLine[]; extern const u8 gText_ScrollTextUp[]; +extern const u8 gText_Space[]; extern const u8 gText_Space2[]; extern const u8 gText_Are[]; extern const u8 gText_Are2[]; @@ -1275,6 +1341,338 @@ extern const u8 gText_082C8589[]; extern const u8 gText_082C85AE[]; extern const u8 gText_082C877B[]; +// Battle Tower. +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2479CE[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248297[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2444D6[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24459B[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2448CD[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24529A[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245CAC[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245E20[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245FC6[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247749[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2453B4[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2476ED[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246864[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247F3F[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2484AC[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248661[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2486FF[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2469B4[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246D9E[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244A23[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246662[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248321[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244F4F[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247B16[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2465B5[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2481E1[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247E7E[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244549[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246244[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2468A7[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2468FE[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245A5F[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24626E[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244383[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246BE9[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2462E4[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246F7B[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247268[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244643[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247EE9[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246D3F[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247AA1[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246D6A[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245D4B[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247348[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24522F[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24617D[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244989[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2470FD[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247C4E[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24754A[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247C8C[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248467[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2474AF[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245BBD[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24503D[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248AC0[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24614A[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244E5B[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245F2B[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248553[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246741[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245656[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2480AB[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248725[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244939[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2471FB[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247291[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24589C[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247B3E[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248614[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2448F5[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2445C5[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247B62[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24777A[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2455EC[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248031[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244AA9[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245464[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2484E7[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247313[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247470[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244D82[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246529[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247238[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247A18[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24597F[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247DFE[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247FB7[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246E64[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247655[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244E7E[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245535[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246FCC[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2482DC[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24808D[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246AF7[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24864E[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247991[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246605[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248B4C[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2448A7[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245C05[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2456F5[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246020[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24670A[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24694B[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2471C7[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248C5B[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246449[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2452EF[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245B91[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245F87[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246831[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247854[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244D07[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246051[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2486C6[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248401[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2450E6[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248671[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2454D6[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24662A[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246EB6[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244FD3[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247484[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2460D5[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24622A[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244DC6[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2485E5[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248BB4[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246DD3[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244B52[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24896F[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247629[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2454A3[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2459BE[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244413[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248C90[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2446B4[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244C18[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24610D[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24838D[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24633C[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24758B[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2458CE[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246E1A[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247EA1[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248369[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245DC7[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247D97[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2483C1[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248892[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2488D8[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247889[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24895F[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2449E6[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248781[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246F21[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24707D[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24818E[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24568A[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248A10[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246791[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246571[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246A4E[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248431[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2462AA[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246B3F[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2473C6[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2473FB[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245CE6[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2445E8[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2487C9[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245D60[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24795F[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245B79[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247B9B[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246B2B[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24451E[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247807[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24636B[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247DC7[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246002[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247838[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248151[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24718D[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2481A9[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247942[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244D36[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246D2D[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248751[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247D07[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246B6B[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244F98[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246BB2[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24705B[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248BEE[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24716C[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2489BD[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245D07[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247724[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248908[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244618[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24468F[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244C6E[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246E39[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24856A[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24894B[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24824F[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245C66[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246C22[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2467C4[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245406[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24737A[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2474EC[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247FE9[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247C23[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2480DC[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24857D[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248B39[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245E41[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245E78[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247D4E[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24615D[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248517[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245087[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2463C5[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247AE3[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245EEC[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24885B[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2470B2[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248B22[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2467E6[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24833D[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248C2E[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248221[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245196[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245740[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24480C[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246A22[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24555F[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24712A[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247A76[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247CB2[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2457D9[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248128[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24631F[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246CE9[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2482B1[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244DFE[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247013[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24790D[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24581F[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247A51[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24479E[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2461C7[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244ECA[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2466E6[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2477CE[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245C2D[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2487F7[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2489E7[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2478DD[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248477[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244CD6[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2466B4[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24805E[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247E3E[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245923[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248829[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2461F5[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24751D[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2475BC[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245013[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2475D5[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246C35[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246686[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247438[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245D8D[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247EB5[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246F4C[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2450C0[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245DF0[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24755C[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24474D[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2444EF[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246082[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2464EE[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2467FF[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244EF4[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247BE7[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245EBD[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24697C[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246A85[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245F58[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245851[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248A72[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2459F7[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2443E7[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245B3E[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248CCF[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24444B[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245C7F[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246C6C[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2472C7[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245AB4[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24769B[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248A40[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244BD2[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246760[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246CB3[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247FA3[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247F6D[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248D04[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2463FF[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246EEE[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244B93[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2446E5[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2469F1[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2451BD[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244AD6[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24738F[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248AEB[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246478[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24760D[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24658C[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24692B[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246ACF[]; +extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24649D[]; + // Battle Pyramid. extern const u8 BattleFrontier_BattlePyramidEmptySquare_Text_252D2D[]; extern const u8 BattleFrontier_BattlePyramidEmptySquare_Text_252D57[]; diff --git a/include/trade.h b/include/trade.h index af4da0015..e3c18bffd 100644 --- a/include/trade.h +++ b/include/trade.h @@ -1,6 +1,8 @@ #ifndef GUARD_TRADE_H #define GUARD_TRADE_H +#include "link_rfu.h" + // Exported type declarations // Exported RAM declarations @@ -10,5 +12,8 @@ s32 sub_807A728(void); void sub_80773AC(void); void sub_807AE50(void); +int sub_807A8D0(u32 /* probably wrong */, u16, u16, u8); +int sub_807A7E0(u32 /* probably wrong */, u32 /* probably wrong */, u16, u16, u16, u16, u8); +int sub_807A918(struct Pokemon*, u16); #endif //GUARD_TRADE_H |