diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/constants/party_menu.h | 114 | ||||
-rw-r--r-- | include/constants/trade.h | 118 | ||||
-rw-r--r-- | include/fldeff.h | 4 | ||||
-rw-r--r-- | include/graphics.h | 7 | ||||
-rw-r--r-- | include/party_menu.h | 51 | ||||
-rw-r--r-- | include/strings.h | 79 | ||||
-rw-r--r-- | include/trade.h | 3 | ||||
-rw-r--r-- | include/union_room.h | 3 |
8 files changed, 338 insertions, 41 deletions
diff --git a/include/constants/party_menu.h b/include/constants/party_menu.h new file mode 100644 index 000000000..f8f77f466 --- /dev/null +++ b/include/constants/party_menu.h @@ -0,0 +1,114 @@ +#ifndef GUARD_CONSTANTS_PARTY_MENU_H +#define GUARD_CONSTANTS_PARTY_MENU_H + +#define AILMENT_NONE 0 +#define AILMENT_PSN 1 +#define AILMENT_PRZ 2 +#define AILMENT_SLP 3 +#define AILMENT_FRZ 4 +#define AILMENT_BRN 5 +#define AILMENT_PKRS 6 +#define AILMENT_FNT 7 + +#define TUTOR_MOVE_MEGA_PUNCH 0 +#define TUTOR_MOVE_SWORDS_DANCE 1 +#define TUTOR_MOVE_MEGA_KICK 2 +#define TUTOR_MOVE_BODY_SLAM 3 +#define TUTOR_MOVE_DOUBLE_EDGE 4 +#define TUTOR_MOVE_COUNTER 5 +#define TUTOR_MOVE_SEISMIC_TOSS 6 +#define TUTOR_MOVE_MIMIC 7 +#define TUTOR_MOVE_METRONOME 8 +#define TUTOR_MOVE_SOFT_BOILED 9 +#define TUTOR_MOVE_DREAM_EATER 10 +#define TUTOR_MOVE_THUNDER_WAVE 11 +#define TUTOR_MOVE_EXPLOSION 12 +#define TUTOR_MOVE_ROCK_SLIDE 13 +#define TUTOR_MOVE_SUBSTITUTE 14 +#define TUTOR_MOVE_COUNT 15 + +#define PARTY_LAYOUT_SINGLE 0 +#define PARTY_LAYOUT_DOUBLE 1 +#define PARTY_LAYOUT_MULTI 2 +#define PARTY_LAYOUT_MULTI_SHOWCASE 3 // The layout during the screen that appears just before a multi battle +#define PARTY_LAYOUT_COUNT 4 +#define KEEP_PARTY_LAYOUT 0xFF + +#define PARTY_MENU_TYPE_FIELD 0 +#define PARTY_MENU_TYPE_IN_BATTLE 1 +#define PARTY_MENU_TYPE_CONTEST 2 +#define PARTY_MENU_TYPE_CHOOSE_MON 3 +#define PARTY_MENU_TYPE_CHOOSE_HALF 4 // multi battles, eReader battles, and some battle facilities +#define PARTY_MENU_TYPE_MULTI_SHOWCASE 5 +#define PARTY_MENU_TYPE_DAYCARE 6 +#define PARTY_MENU_TYPE_MOVE_RELEARNER 7 +#define PARTY_MENU_TYPE_UNION_ROOM_REGISTER 8 // trading board +#define PARTY_MENU_TYPE_UNION_ROOM_TRADE 9 // trading board +#define PARTY_MENU_TYPE_SPIN_TRADE 10 // Unused beta for Gen IV's Spin Trade +#define PARTY_MENU_TYPE_MINIGAME 11 +#define PARTY_MENU_TYPE_STORE_PYRAMID_HELD_ITEMS 12 + +#define PARTY_ACTION_CHOOSE_MON 0 +#define PARTY_ACTION_SEND_OUT 1 +#define PARTY_ACTION_CANT_SWITCH 2 +#define PARTY_ACTION_USE_ITEM 3 +#define PARTY_ACTION_ABILITY_PREVENTS 4 +#define PARTY_ACTION_GIVE_ITEM 5 +#define PARTY_ACTION_GIVE_PC_ITEM 6 // Unused. Not possible to give non-mail items directly from PC +#define PARTY_ACTION_GIVE_MAILBOX_MAIL 7 +#define PARTY_ACTION_SWITCH 8 +#define PARTY_ACTION_SWITCHING 9 +#define PARTY_ACTION_SOFTBOILED 10 +#define PARTY_ACTION_CHOOSE_AND_CLOSE 11 +#define PARTY_ACTION_MOVE_TUTOR 12 +#define PARTY_ACTION_MINIGAME 13 +#define PARTY_ACTION_REUSABLE_ITEM 14 // Unused. The only reusable items are handled separately + +// IDs for DisplayPartyMenuStdMessage, to display the message at the bottom of the party menu +#define PARTY_MSG_CHOOSE_MON 0 +#define PARTY_MSG_CHOOSE_MON_OR_CANCEL 1 +#define PARTY_MSG_CHOOSE_MON_AND_CONFIRM 2 +#define PARTY_MSG_MOVE_TO_WHERE 3 +#define PARTY_MSG_TEACH_WHICH_MON 4 +#define PARTY_MSG_USE_ON_WHICH_MON 5 +#define PARTY_MSG_GIVE_TO_WHICH_MON 6 +#define PARTY_MSG_NOTHING_TO_CUT 7 +#define PARTY_MSG_CANT_SURF_HERE 8 +#define PARTY_MSG_ALREADY_SURFING 9 +#define PARTY_MSG_CURRENT_TOO_FAST 10 +#define PARTY_MSG_ENJOY_CYCLING 11 +#define PARTY_MSG_ALREADY_IN_USE 12 +#define PARTY_MSG_CANT_USE_HERE 13 +#define PARTY_MSG_NO_MON_FOR_BATTLE 14 +#define PARTY_MSG_CHOOSE_MON_2 15 +#define PARTY_MSG_NOT_ENOUGH_HP 16 +#define PARTY_MSG_THREE_MONS_ARE_NEEDED 17 +#define PARTY_MSG_TWO_MONS_ARE_NEEDED 18 +#define PARTY_MSG_MONS_CANT_BE_SAME 19 +#define PARTY_MSG_NO_SAME_HOLD_ITEMS 20 +#define PARTY_MSG_UNUSED 21 +#define PARTY_MSG_DO_WHAT_WITH_MON 22 +#define PARTY_MSG_RESTORE_WHICH_MOVE 23 +#define PARTY_MSG_BOOST_PP_WHICH_MOVE 24 +#define PARTY_MSG_DO_WHAT_WITH_ITEM 25 +#define PARTY_MSG_DO_WHAT_WITH_MAIL 26 +#define PARTY_MSG_NONE 127 + +// IDs for DisplayPartyPokemonDescriptionText, to display a message in the party pokemon's box +#define PARTYBOX_DESC_NO_USE 0 +#define PARTYBOX_DESC_ABLE_3 1 +#define PARTYBOX_DESC_FIRST 2 +#define PARTYBOX_DESC_SECOND 3 +#define PARTYBOX_DESC_THIRD 4 +#define PARTYBOX_DESC_ABLE 5 +#define PARTYBOX_DESC_NOT_ABLE 6 +#define PARTYBOX_DESC_ABLE_2 7 +#define PARTYBOX_DESC_NOT_ABLE_2 8 +#define PARTYBOX_DESC_LEARNED 9 + +#define SELECTWINDOW_ACTIONS 0 +#define SELECTWINDOW_ITEM 1 +#define SELECTWINDOW_MAIL 2 +#define SELECTWINDOW_MOVES 3 + +#endif // GUARD_CONSTANTS_PARTY_MENU_H diff --git a/include/constants/trade.h b/include/constants/trade.h new file mode 100644 index 000000000..b1371caab --- /dev/null +++ b/include/constants/trade.h @@ -0,0 +1,118 @@ + #ifndef GUARD_CONSTANTS_TRADE_H +#define GUARD_CONSTANTS_TRADE_H + +// TODO: document trade.c and trade_scene.c with corresponding macros +// and examine if these are correct + +#define TRADE_PLAYER 0 +#define TRADE_PARTNER 1 + +#define LINK_TRADE_TIMEOUT 300 + +// In-game Trade IDs +#define INGAME_TRADE_SEEDOT 0 +#define INGAME_TRADE_PLUSLE 1 +#define INGAME_TRADE_HORSEA 2 +#define INGAME_TRADE_MEOWTH 3 + +// Flag IDs for sending link data +#define INITIATE_TRADE 1 +#define CANCEL_TRADE 2 +#define WANTS_TO_TRADE 1 +#define WANTS_TO_CANCEL 2 +#define READY_FINISH_TRADE 1 +#define FINISH_TRADE 2 + +// Return values for CanTradeSelectedMon and CanSpinTradeMon +#define CAN_TRADE_MON 0 +#define CANT_TRADE_LAST_MON 1 +#define CANT_TRADE_NATIONAL 2 +#define CANT_TRADE_EGG_YET 3 +#define CANT_TRADE_INVALID_MON 4 +#define CANT_TRADE_EGG_YET2 5 + +// Return values for CheckValidityOfTradeMons +#define PLAYER_MON_INVALID 0 +#define BOTH_MONS_VALID 1 +#define PARTNER_MON_INVALID 2 + +// Return values for GetGameProgressForLinkTrade +#define TRADE_BOTH_PLAYERS_READY 0 +#define TRADE_PLAYER_NOT_READY 1 +#define TRADE_PARTNER_NOT_READY 2 + +// Indexes for sTradeActionTexts +#define TRADE_TEXT_CANCEL 0 +#define TRADE_TEXT_CHOOSE_MON 1 +#define TRADE_TEXT_SUMMARY 2 +#define TRADE_TEXT_TRADE 3 +#define TRADE_TEXT_CANCEL_TRADE 4 +#define TRADE_TEXT_JP_QUIT 5 + +// Checked to confirm DrawTradeMenuParty has reached final state +#define DRAW_PARTY_FINISH 5 + +// Message indexes for sTradeMessages +#define TRADE_MSG_STANDBY 0 +#define TRADE_MSG_CANCELED 1 +#define TRADE_MSG_ONLY_MON1 2 +#define TRADE_MSG_ONLY_MON2 3 +#define TRADE_MSG_WAITING_FOR_FRIEND 4 +#define TRADE_MSG_FRIEND_WANTS_TO_TRADE 5 +#define TRADE_MSG_MON_CANT_BE_TRADED 6 +#define TRADE_MSG_EGG_CANT_BE_TRADED 7 +#define TRADE_MSG_FRIENDS_MON_CANT_BE_TRADED 8 + +// IDs for QueueAction +#define QUEUE_SEND_DATA 0 +#define QUEUE_STANDBY 1 +#define QUEUE_ONLY_MON1 2 +#define QUEUE_ONLY_MON2 3 +#define QUEUE_UNUSED1 4 +#define QUEUE_UNUSED2 5 +#define QUEUE_MON_CANT_BE_TRADED 6 +#define QUEUE_EGG_CANT_BE_TRADED 7 +#define QUEUE_FRIENDS_MON_CANT_BE_TRADED 8 + +#define QUEUE_DELAY_MSG 3 +#define QUEUE_DELAY_DATA 5 + +// IDs for CallTradeMenuFunc +#define TRADEMENUFUNC_MAIN_MENU 0 +#define TRADEMENUFUNC_SELECTED_MON 1 +#define TRADEMENUFUNC_SHOW_MON_SUMMARY 2 +#define TRADEMENUFUNC_CONFIRM_OR_CANCEL_TRADE 3 +#define TRADEMENUFUNC_CANCEL_TRADE_PROMPT 4 +#define TRADEMENUFUNC_UNUSED_5 5 +#define TRADEMENUFUNC_BOTH_MONS_SELECTED 6 +#define TRADEMENUFUNC_CONFIRM_TRADE_PROMPT 7 +#define TRADEMENUFUNC_REDRAW_MAIN_MENU 8 +#define TRADEMENUFUNC_LINK_TRADE_FADE_OUT 9 +#define TRADEMENUFUNC_LINK_TRADE_WAIT_FADE 10 +#define TRADEMENUFUNC_CANCEL_TRADE_1 11 +#define TRADEMENUFUNC_CANCEL_TRADE_2 12 +#define TRADEMENUFUNC_START_LINK_TRADE 13 +#define TRADEMENUFUNC_DELAY_TRADE_CONFIRM 14 +#define TRADEMENUFUNC_UNUSED_15 15 +#define TRADEMENUFUNC_LINK_TRADE_WAIT_QUEUE 16 +#define TRADEMENUFUNC_PARTNER_MON_INVALID 17 +#define TRADEMENUFUNC_STANDBY 100 + +// Message indexes for sUnionRoomTradeMessages +#define UR_TRADE_MSG_NONE 0 +#define UR_TRADE_MSG_NOT_MON_PARTNER_WANTS 1 +#define UR_TRADE_MSG_NOT_EGG 2 +#define UR_TRADE_MSG_MON_CANT_BE_TRADED_1 3 +#define UR_TRADE_MSG_MON_CANT_BE_TRADED_2 4 +#define UR_TRADE_MSG_PARTNERS_MON_CANT_BE_TRADED 5 +#define UR_TRADE_MSG_EGG_CANT_BE_TRADED 6 +#define UR_TRADE_MSG_PARTNER_CANT_ACCEPT_MON 7 +#define UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_1 8 +#define UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_2 9 + +// Return values for CanRegisterMonForTradingBoard +#define CAN_REGISTER_MON 0 +#define CANT_REGISTER_MON 1 +#define CANT_REGISTER_EGG 2 + +#endif //GUARD_CONSTANTS_TRADE_H diff --git a/include/fldeff.h b/include/fldeff.h index 690d5f953..8dcb42500 100644 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -16,8 +16,10 @@ u8 oei_task_add(void); // flash u8 sub_80C9DCC(u8 lightLevel, u8 mapType); u8 sub_80C9D7C(u8 mapType1, u8 mapType2); +bool8 SetUpFieldMove_Flash(void); // cut +bool8 SetUpFieldMove_Cut(void); // dig bool8 SetUpFieldMove_Dig(void); @@ -43,7 +45,7 @@ bool8 SetUpFieldMove_Teleport(void); bool8 FldEff_UseTeleport(void); // softboiled -bool8 hm_prepare_dive_probably(void); +bool8 SetUpFieldMove_SoftBoiled(void); void ChooseMonForSoftboiled(u8 taskId); void sub_80E5724(u8 taskId); diff --git a/include/graphics.h b/include/graphics.h index 354339235..930201403 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -3740,6 +3740,13 @@ extern const u8 gWeatherFog1Tiles[]; extern const u32 gBattleAnimFogTilemap[]; extern const u16 gUnknown_83C2CE0[]; +// party_menu +extern const u32 gPartyMenuPokeball_Gfx[]; +extern const u32 gPartyMenuPokeball_Pal[]; +extern const u32 gPartyMenuPokeballSmall_Gfx[]; +extern const u32 gStatusGfx_Icons[]; +extern const u32 gStatusPal_Icons[]; + // credits extern const u32 gCreditsPokeballBgGfxTiles[]; extern const u32 gCreditsPokeballBgGfxMap[]; diff --git a/include/party_menu.h b/include/party_menu.h index 6e96c47ee..f5b4bd827 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -3,49 +3,28 @@ #include "main.h" #include "task.h" +#include "constants/party_menu.h" -enum { - AILMENT_NONE, - AILMENT_PSN, - AILMENT_PRZ, - AILMENT_SLP, - AILMENT_FRZ, - AILMENT_BRN, - AILMENT_PKRS, - AILMENT_FNT -}; - -enum -{ - PARTY_CHOOSE_MON, - PARTY_MUST_CHOOSE_MON, - PARTY_CANT_SWITCH, - PARTY_USE_ITEM_ON, - PARTY_ABILITY_PREVENTS, - PARTY_GIVE_ITEM, -}; - -struct Struct203B0A0 +struct PartyMenu { MainCallback exitCallback; - TaskFunc unk4; - u8 unk8_0:4; - u8 mode:2; - u8 unk8_2:2; - s8 unk9; - s8 unkA; - u8 unkB; - u16 unkC; - s16 unkE; - s16 unk10; + TaskFunc task; + u8 menuType:4; + u8 layout:2; + s8 slotId; + s8 slotId2; + u8 action; + u16 bagItem; + s16 data1; // used variously as a moveId, counter, moveSlotId, or cursorPos + s16 learnMoveState; // data2, used only as a learn move state }; -extern struct Struct203B0A0 gPartyMenu; +extern struct PartyMenu gPartyMenu; extern u8 gPartyMenuUseExitCallback; -extern u8 gUnknown_203B0C1; -extern u8 gBattlePartyCurrentOrder[3]; +extern u8 gSelectedMonPartyId; +extern u8 gBattlePartyCurrentOrder[PARTY_SIZE / 2]; extern void (*gItemUseCB)(u8 taskId, TaskFunc func); -extern u8 gSelectedOrderFromParty[3]; +extern u8 gSelectedOrderFromParty[4]; bool8 FieldCallback_PrepareFadeInFromMenu(void); bool8 MonKnowsMove(struct Pokemon *, u16); diff --git a/include/strings.h b/include/strings.h index f5dc759e6..9242c7eaa 100644 --- a/include/strings.h +++ b/include/strings.h @@ -265,6 +265,77 @@ extern const u8 gUnknown_81C6787[]; extern const u8 gUnknown_81C684B[]; extern const u8 gUnknown_81C686C[]; +// party_menu +extern const u8 gText_ChoosePokemon[]; +extern const u8 gText_ChoosePokemonCancel[]; +extern const u8 gText_ChoosePokemonConfirm[]; +extern const u8 gText_MoveToWhere[]; +extern const u8 gText_TeachWhichPokemon[]; +extern const u8 gText_UseOnWhichPokemon[]; +extern const u8 gText_GiveToWhichPokemon[]; +extern const u8 gText_NothingToCut[]; +extern const u8 gText_CantSurfHere[]; +extern const u8 gText_AlreadySurfing[]; +extern const u8 gText_CurrentIsTooFast[]; +extern const u8 gText_EnjoyCycling[]; +extern const u8 gText_InUseAlready_PM[]; +extern const u8 gText_CantUseHere[]; +extern const u8 gText_NoPokemonForBattle[]; +extern const u8 gText_ChoosePokemon2[]; +extern const u8 gText_NotEnoughHp[]; +extern const u8 gText_ThreePkmnAreNeeded[]; +extern const u8 gText_TwoPokemonAreNeeded[]; +extern const u8 gText_PokemonCantBeSame[]; +extern const u8 gText_NoIdenticalHoldItems[]; +extern const u8 gString_Dummy[]; +extern const u8 gText_DoWhatWithPokemon[]; +extern const u8 gText_RestoreWhichMove[]; +extern const u8 gText_BoostPp[]; +extern const u8 gText_DoWhatWithItem[]; +extern const u8 gText_DoWhatWithMail[]; +extern const u8 gText_NoUse[]; +extern const u8 gText_Able[]; +extern const u8 gText_First_PM[]; +extern const u8 gText_Second_PM[]; +extern const u8 gText_Third_PM[]; +extern const u8 gText_NotAble[]; +extern const u8 gText_Able3[]; +extern const u8 gText_NotAble2[]; +extern const u8 gText_Learned[]; +extern const u8 gText_Able2[]; +extern const u8 gText_CutATreeOrGrass[]; +extern const u8 gText_FlyToAKnownTown[]; +extern const u8 gText_TravelOnWater[]; +extern const u8 gText_MoveHeavyBoulders[]; +extern const u8 gText_LightUpDarkness[]; +extern const u8 gText_ShatterACrackedRock[]; +extern const u8 gText_ClimbAWaterfall[]; +extern const u8 gText_EscapeFromHere[]; +extern const u8 gText_LureWildPokemon[]; +extern const u8 gText_ShareHp[]; +extern const u8 gText_ReturnToAHealingSpot[]; +extern const u8 gText_Summary5[]; +extern const u8 gText_Switch2[]; +extern const u8 gText_Item[]; +extern const u8 gText_Take[]; +extern const u8 gText_Mail[]; +extern const u8 gText_Take2[]; +extern const u8 gText_Read2[]; +extern const u8 gText_Shift[]; +extern const u8 gText_SendOut[]; +extern const u8 gText_Enter[]; +extern const u8 gText_NoEntry[]; +extern const u8 gText_Store[]; +extern const u8 gText_Register[]; +extern const u8 gText_Trade4[]; +extern const u8 gText_NotPkmnOtherTrainerWants[]; +extern const u8 gText_ThatIsntAnEgg[]; +extern const u8 gText_PkmnCantBeTradedNow[]; +extern const u8 gText_OtherTrainersPkmnCantBeTraded[]; +extern const u8 gText_EggCantBeTradedNow[]; +extern const u8 gText_OtherTrainerCantAcceptPkmn[]; +extern const u8 gText_CantTradeWithTrainer[]; + // credits extern const u8 gString_Dummy[]; extern const u8 gString_PokemonFireRed_Staff[]; // FR @@ -390,7 +461,7 @@ extern const u8 gText_Pokedex[]; extern const u8 gTextJPDummy_Hiki[]; extern const u8 gText_Badges[]; extern const u8 gTextJPDummy_Ko[]; -extern const u8 gUnknown_841B6F4[]; +extern const u8 gText_Register[]; // mystery_gift_menu extern const u8 gText_PickOKExit[]; @@ -703,9 +774,9 @@ extern const u8 gUnknown_841E16B[]; extern const u8 gUnknown_8417094[]; extern const u8 gUnknown_841E199[]; extern const u8 gUnknown_841E1C5[]; -extern const u8 gUnknown_84170BC[]; -extern const u8 gUnknown_84170E0[]; -extern const u8 gUnknown_84170FC[]; +extern const u8 gText_PkmnCantBeTradedNow[]; +extern const u8 gText_EggCantBeTradedNow[]; +extern const u8 gText_OtherTrainersPkmnCantBeTraded[]; extern const u8 gUnknown_841E09F[]; extern const u8 gEasyChatGroupName_Pokemon[]; diff --git a/include/trade.h b/include/trade.h index 257357053..3c42be3ea 100644 --- a/include/trade.h +++ b/include/trade.h @@ -1,6 +1,9 @@ #ifndef GUARD_TRADE_H #define GUARD_TRADE_H +#include "global.h" +#include "constants/trade.h" + extern struct MailStruct gLinkPartnerMail[6]; extern u8 gSelectedTradeMonPositions[2]; diff --git a/include/union_room.h b/include/union_room.h index 2e97d87f4..00354ff31 100644 --- a/include/union_room.h +++ b/include/union_room.h @@ -1,6 +1,9 @@ #ifndef GUARD_UNION_ROOM_H #define GUARD_UNION_ROOM_H +#include "global.h" +#include "librfu.h" + struct UnkStruct_Shared { struct UnkLinkRfuStruct_02022B14 field_0; |