diff options
Diffstat (limited to 'include')
44 files changed, 1276 insertions, 855 deletions
diff --git a/include/battle.h b/include/battle.h index 878a024b4..f8c685fb0 100644 --- a/include/battle.h +++ b/include/battle.h @@ -37,7 +37,6 @@ #define B_ACTION_NONE 0xFF #define MAX_TRAINER_ITEMS 4 -#define MAX_MON_MOVES 4 // array entries for battle communication #define MULTIUSE_STATE 0x0 @@ -180,19 +179,19 @@ struct AI_ThinkingStruct u8 aiState; u8 movesetIndex; u16 moveConsidered; - s8 score[4]; + s8 score[MAX_MON_MOVES]; u32 funcResult; u32 aiFlags; u8 aiAction; u8 aiLogicId; u8 filler12[6]; - u8 simulatedRNG[4]; + u8 simulatedRNG[MAX_MON_MOVES]; }; struct UsedMoves { - u16 moves[MAX_BATTLERS_COUNT]; - u16 unknown[MAX_BATTLERS_COUNT]; + u16 moves[MAX_MON_MOVES]; + u16 unknown[MAX_MON_MOVES]; }; struct BattleHistory diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 9449f1986..365229fda 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -97,16 +97,16 @@ struct HpAndStatus struct MovePpInfo { - u16 moves[4]; - u8 pp[4]; + u16 moves[MAX_MON_MOVES]; + u8 pp[MAX_MON_MOVES]; u8 ppBonuses; }; struct ChooseMoveStruct { - u16 moves[4]; - u8 currentPp[4]; - u8 maxPp[4]; + u16 moves[MAX_MON_MOVES]; + u8 currentPp[MAX_MON_MOVES]; + u8 maxPp[MAX_MON_MOVES]; u16 species; u8 monType1; u8 monType2; diff --git a/include/battle_tower.h b/include/battle_tower.h index 12d6d2e9e..8bc6e6554 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -7,7 +7,7 @@ struct RSBattleTowerRecord /*0x01*/ u8 facilityClass; /*0x02*/ u16 winStreak; /*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1]; - /*0x0C*/ u8 trainerId[4]; + /*0x0C*/ u8 trainerId[TRAINER_ID_LENGTH]; /*0x10*/ u16 greeting[6]; /*0x1C*/ struct BattleTowerPokemon party[3]; /*0xA0*/ u32 checksum; @@ -27,7 +27,7 @@ struct BattleFrontierTrainer struct FacilityMon { u16 species; - u16 moves[4]; + u16 moves[MAX_MON_MOVES]; u8 itemTableId; u8 evSpread; u8 nature; diff --git a/include/berry.h b/include/berry.h index 9ff18e198..ebe1e9a38 100644 --- a/include/berry.h +++ b/include/berry.h @@ -1,39 +1,6 @@ #ifndef GUARD_BERRY_H #define GUARD_BERRY_H -#define BERRY_NONE 0 - -enum -{ - BERRY_FIRMNESS_UNKNOWN, - BERRY_FIRMNESS_VERY_SOFT, - BERRY_FIRMNESS_SOFT, - BERRY_FIRMNESS_HARD, - BERRY_FIRMNESS_VERY_HARD, - BERRY_FIRMNESS_SUPER_HARD, -}; - -enum -{ - FLAVOR_SPICY, - FLAVOR_DRY, - FLAVOR_SWEET, - FLAVOR_BITTER, - FLAVOR_SOUR, - FLAVOR_COUNT -}; - -enum -{ - BERRY_STAGE_NO_BERRY, // there is no tree planted and the soil is completely flat. - BERRY_STAGE_PLANTED, - BERRY_STAGE_SPROUTED, - BERRY_STAGE_TALLER, - BERRY_STAGE_FLOWERING, - BERRY_STAGE_BERRIES, - BERRY_STAGE_SPARKLING = 0xFF, -}; - void ClearEnigmaBerries(void); void SetEnigmaBerry(u8 *src); bool32 IsEnigmaBerryValid(void); diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h index 1224c0f31..d287dd2db 100644 --- a/include/constants/battle_frontier.h +++ b/include/constants/battle_frontier.h @@ -1,6 +1,8 @@ #ifndef GUARD_CONSTANTS_BATTLE_FRONTIER_H #define GUARD_CONSTANTS_BATTLE_FRONTIER_H +#define FRONTIER_CHALLENGE(facility, mode) ((facility << 8) + mode) + // Battle Frontier facility ids. #define FRONTIER_FACILITY_TOWER 0 #define FRONTIER_FACILITY_DOME 1 @@ -41,6 +43,36 @@ #define SPECIAL_BATTLE_PIKE_DOUBLE 9 #define SPECIAL_BATTLE_PYRAMID 10 +#define MAX_BATTLE_FRONTIER_POINTS 9999 + +// Frontier Maniac +#define FRONTIER_MANIAC_BATTLE_TOWER_SINGLES 0 +#define FRONTIER_MANIAC_BATTLE_TOWER_DOUBLES 1 +#define FRONTIER_MANIAC_BATTLE_TOWER_MULTIS 2 +#define FRONTIER_MANIAC_BATTLE_TOWER_LINK_MULTIS 3 +#define FRONTIER_MANIAC_BATTLE_DOME 4 +#define FRONTIER_MANIAC_BATTLE_FACTORY 5 +#define FRONTIER_MANIAC_BATTLE_PALACE 6 +#define FRONTIER_MANIAC_BATTLE_ARENA 7 +#define FRONTIER_MANIAC_BATTLE_PIKE 8 +#define FRONTIER_MANIAC_BATTLE_PYRAMID 9 +#define FRONTIER_MANIAC_FACILITY_COUNT 10 + +#define FRONTIER_MANIAC_MESSAGE_COUNT 3 + +// Frontier Gambler +#define FRONTIER_GAMBLER_WAITING 0 +#define FRONTIER_GAMBLER_PLACED_BET 1 +#define FRONTIER_GAMBLER_WON 2 +#define FRONTIER_GAMBLER_LOST 3 + +#define FRONTIER_GAMBLER_BET_5 0 +#define FRONTIER_GAMBLER_BET_10 1 +#define FRONTIER_GAMBLER_BET_15 2 +#define FRONTIER_GAMBLER_BET_CANCEL 3 + +#define FRONTIER_GAMBLER_CHALLENGE_COUNT 12 + // For 'ShowFacilityResultsWindow' function which is a part of the 'CallFrontierUtilFunc' special. #define RESULTS_LINK_CONTEST 7 diff --git a/include/constants/berry.h b/include/constants/berry.h new file mode 100644 index 000000000..d413b9947 --- /dev/null +++ b/include/constants/berry.h @@ -0,0 +1,28 @@ +#ifndef GUARD_CONSTANTS_BERRY_H +#define GUARD_CONSTANTS_BERRY_H + +#define BERRY_NONE 0 + +#define BERRY_FIRMNESS_UNKNOWN 0 +#define BERRY_FIRMNESS_VERY_SOFT 1 +#define BERRY_FIRMNESS_SOFT 2 +#define BERRY_FIRMNESS_HARD 3 +#define BERRY_FIRMNESS_VERY_HARD 4 +#define BERRY_FIRMNESS_SUPER_HARD 5 + +#define FLAVOR_SPICY 0 +#define FLAVOR_DRY 1 +#define FLAVOR_SWEET 2 +#define FLAVOR_BITTER 3 +#define FLAVOR_SOUR 4 +#define FLAVOR_COUNT 5 + +#define BERRY_STAGE_NO_BERRY 0 // there is no tree planted and the soil is completely flat. +#define BERRY_STAGE_PLANTED 1 +#define BERRY_STAGE_SPROUTED 2 +#define BERRY_STAGE_TALLER 3 +#define BERRY_STAGE_FLOWERING 4 +#define BERRY_STAGE_BERRIES 5 +#define BERRY_STAGE_SPARKLING 255 + +#endif // GUARD_CONSTANTS_BERRY_H diff --git a/include/constants/contest.h b/include/constants/contest.h new file mode 100644 index 000000000..d3296222b --- /dev/null +++ b/include/constants/contest.h @@ -0,0 +1,19 @@ +#ifndef GUARD_CONSTANTS_CONTEST_H +#define GUARD_CONSTANTS_CONTEST_H + +#define CONTESTANT_COUNT 4 +#define APPLAUSE_METER_SIZE 5 +#define CONTEST_TURN_COUNT 5 + +#define LINK_CONTEST_FLAG_IS_LINK (1 << 0) +#define LINK_CONTEST_FLAG_IS_WIRELESS (1 << 1) +#define LINK_CONTEST_FLAG_HAS_RS_PLAYER (1 << 2) + +#define CONTEST_CATEGORY_COOL 0 +#define CONTEST_CATEGORY_BEAUTY 1 +#define CONTEST_CATEGORY_CUTE 2 +#define CONTEST_CATEGORY_SMART 3 +#define CONTEST_CATEGORY_TOUGH 4 +#define CONTEST_CATEGORIES_COUNT 5 + +#endif // GUARD_CONSTANTS_CONTEST_H diff --git a/include/constants/daycare.h b/include/constants/daycare.h new file mode 100644 index 000000000..103f920f2 --- /dev/null +++ b/include/constants/daycare.h @@ -0,0 +1,27 @@ +#ifndef GUARD_DAYCARE_CONSTANTS_H +#define GUARD_DAYCARE_CONSTANTS_H + +// Parent compatability scores +#define PARENTS_INCOMPATIBLE 0 +#define PARENTS_LOW_COMPATIBILITY 20 +#define PARENTS_MED_COMPATABILITY 50 +#define PARENTS_MAX_COMPATABILITY 70 + +// Daycare state +#define DAYCARE_NO_MONS 0 +#define DAYCARE_EGG_WAITING 1 +#define DAYCARE_ONE_MON 2 +#define DAYCARE_TWO_MONS 3 + +#define INHERITED_IV_COUNT 3 +#define EGG_HATCH_LEVEL 5 +#define EGG_GENDER_MALE 0x8000 // used to create a male egg from a female-only parent species (e.g. Nidoran) + +#define DAYCARE_LEVEL_MENU_EXIT 5 +#define DAYCARE_EXITED_LEVEL_MENU 2 // would be redundant with above if GF had used the same value + +// Array buffers +#define EGG_MOVES_ARRAY_COUNT 10 +#define EGG_LVL_UP_MOVES_ARRAY_COUNT 50 + +#endif //GUARD_DAYCARE_CONSTANTS_H diff --git a/include/constants/field_specials.h b/include/constants/field_specials.h new file mode 100644 index 000000000..5ec38d1d4 --- /dev/null +++ b/include/constants/field_specials.h @@ -0,0 +1,52 @@ +#ifndef GUARD_CONSTANTS_FIELD_SPECIALS_H +#define GUARD_CONSTANTS_FIELD_SPECIALS_H + +// PC Locations +#define PC_LOCATION_OTHER 0 +#define PC_LOCATION_BRENDANS_HOUSE 1 +#define PC_LOCATION_MAYS_HOUSE 2 + +// SS Tidal Locations +#define SS_TIDAL_LOCATION_OTHER 0 +#define SS_TIDAL_LOCATION_SLATEPORT 1 +#define SS_TIDAL_LOCATION_LILYCOVE 2 +#define SS_TIDAL_LOCATION_ROUTE124 3 +#define SS_TIDAL_LOCATION_ROUTE131 4 + +// Scrollable Multichoice Menus +#define SCROLL_MULTI_NONE 0 +#define SCROLL_MULTI_GLASS_WORKSHOP_VENDOR 1 +#define SCROLL_MULTI_POKEMON_FAN_CLUB_RATER 2 +#define SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_1 3 +#define SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_2 4 +#define SCROLL_MULTI_BF_EXCHANGE_CORNER_VITAMIN_VENDOR 5 +#define SCROLL_MULTI_BF_EXCHANGE_CORNER_HOLD_ITEM_VENDOR 6 +#define SCROLL_MULTI_BERRY_POWDER_VENDOR 7 +#define SCROLL_MULTI_BF_RECEPTIONIST 8 +#define SCROLL_MULTI_BF_MOVE_TUTOR_1 9 +#define SCROLL_MULTI_BF_MOVE_TUTOR_2 10 +#define SCROLL_MULTI_SS_TIDAL_DESTINATION 11 +#define SCROLL_MULTI_BATTLE_TENT_RULES 12 + +#define MAX_SCROLL_MULTI_ON_SCREEN 6 +#define MAX_SCROLL_MULTI_LENGTH 16 + +// Dept Store Floor Numbers +#define DEPT_STORE_FLOORNUM_B4F 0 +#define DEPT_STORE_FLOORNUM_B3F 1 +#define DEPT_STORE_FLOORNUM_B2F 2 +#define DEPT_STORE_FLOORNUM_B1F 3 +#define DEPT_STORE_FLOORNUM_1F 4 +#define DEPT_STORE_FLOORNUM_2F 5 +#define DEPT_STORE_FLOORNUM_3F 6 +#define DEPT_STORE_FLOORNUM_4F 7 +#define DEPT_STORE_FLOORNUM_5F 8 +#define DEPT_STORE_FLOORNUM_6F 9 +#define DEPT_STORE_FLOORNUM_7F 10 +#define DEPT_STORE_FLOORNUM_8F 11 +#define DEPT_STORE_FLOORNUM_9F 12 +#define DEPT_STORE_FLOORNUM_10F 13 +#define DEPT_STORE_FLOORNUM_11F 14 +#define DEPT_STORE_FLOORNUM_ROOFTOP 15 + +#endif // GUARD_CONSTANTS_FIELD_SPECIALS_H diff --git a/include/constants/flags.h b/include/constants/flags.h index 7aa5c3ed3..4679e953c 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -701,7 +701,7 @@ #define FLAG_HIDE_LITTLEROOT_TOWN_BRENDANS_HOUSE_BRENDAN 0x2E9 #define FLAG_HIDE_LITTLEROOT_TOWN_MAYS_HOUSE_BRENDAN 0x2EA #define FLAG_HIDE_SAFARI_ZONE_SOUTH_EAST_EXPANSION 0x2EB -#define FLAG_HIDE_LILYCOVE_HARBOR_EON_TICKET_TAKER 0x2EC +#define FLAG_HIDE_LILYCOVE_HARBOR_EVENT_TICKET_TAKER 0x2EC #define FLAG_HIDE_SLATEPORT_CITY_SCOTT 0x2ED #define FLAG_HIDE_ROUTE_101_ZIGZAGOON 0x2EE #define FLAG_HIDE_VICTORY_ROAD_EXIT_WALLY 0x2EF @@ -1400,7 +1400,7 @@ #define FLAG_ENABLE_SHIP_BIRTH_ISLAND (SYSTEM_FLAGS + 0x75) #define FLAG_ENABLE_SHIP_FARAWAY_ISLAND (SYSTEM_FLAGS + 0x76) -#define FLAG_SYS_STORAGE_UNKNOWN_FLAG (SYSTEM_FLAGS + 0x77) +#define FLAG_SHOWN_BOX_WAS_FULL_MESSAGE (SYSTEM_FLAGS + 0x77) #define FLAG_ARRIVED_ON_FARAWAY_ISLAND (SYSTEM_FLAGS + 0x78) #define FLAG_ARRIVED_AT_MARINE_CAVE_EMERGE_SPOT (SYSTEM_FLAGS + 0x79) diff --git a/include/constants/global.h b/include/constants/global.h index ff28d6a4b..7e0b5cfa4 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -50,6 +50,10 @@ #define PYRAMID_BAG_ITEMS_COUNT 10 #define HALL_FACILITIES_COUNT 9 // 7 facilities for single mode + tower double mode + tower multi mode. +#define TRAINER_ID_LENGTH 4 +#define PARTY_SIZE 6 +#define MAX_MON_MOVES 4 + // string lengths #define ITEM_NAME_LENGTH 14 #define POKEMON_NAME_LENGTH 10 @@ -59,6 +63,7 @@ #define MALE 0 #define FEMALE 1 +#define GENDER_COUNT 2 #define OPTIONS_BUTTON_MODE_NORMAL 0 #define OPTIONS_BUTTON_MODE_LR 1 @@ -74,4 +79,14 @@ #define OPTIONS_BATTLE_STYLE_SHIFT 0 #define OPTIONS_BATTLE_STYLE_SET 1 +#define DIR_NONE 0 +#define DIR_SOUTH 1 +#define DIR_NORTH 2 +#define DIR_WEST 3 +#define DIR_EAST 4 +#define DIR_SOUTHWEST 5 +#define DIR_SOUTHEAST 6 +#define DIR_NORTHWEST 7 +#define DIR_NORTHEAST 8 + #endif // GUARD_CONSTANTS_GLOBAL_H diff --git a/include/constants/item.h b/include/constants/item.h new file mode 100644 index 000000000..a5c34418d --- /dev/null +++ b/include/constants/item.h @@ -0,0 +1,20 @@ +#ifndef GUARD_ITEM_CONSTANTS_H +#define GUARD_ITEM_CONSTANTS_H + +// These constants are used in gItems +#define POCKET_NONE 0 +#define POCKET_ITEMS 1 +#define POCKET_POKE_BALLS 2 +#define POCKET_TM_HM 3 +#define POCKET_BERRIES 4 +#define POCKET_KEY_ITEMS 5 + +#define ITEMS_POCKET 0 +#define BALLS_POCKET 1 +#define TMHM_POCKET 2 +#define BERRIES_POCKET 3 +#define KEYITEMS_POCKET 4 +#define POCKETS_COUNT 5 + + +#endif // GUARD_ITEM_CONSTANTS_H diff --git a/include/constants/lilycove_lady.h b/include/constants/lilycove_lady.h new file mode 100644 index 000000000..01f60ccf4 --- /dev/null +++ b/include/constants/lilycove_lady.h @@ -0,0 +1,26 @@ +#ifndef GUARD_LILYCOVE_LADY_CONSTANTS_H +#define GUARD_LILYCOVE_LADY_CONSTANTS_H + +#define LILYCOVE_LADY_QUIZ 0 +#define LILYCOVE_LADY_FAVOR 1 +#define LILYCOVE_LADY_CONTEST 2 +#define LILYCOVE_LADY_COUNT 3 + +#define LILYCOVE_LADY_STATE_READY 0 +#define LILYCOVE_LADY_STATE_COMPLETED 1 +#define LILYCOVE_LADY_STATE_PRIZE 2 + +#define LILYCOVE_LADY_GIFT_THRESHOLD 5 + +#define QUIZ_AUTHOR_PLAYER 0 +#define QUIZ_AUTHOR_OTHER_PLAYER 1 +#define QUIZ_AUTHOR_LADY 2 + +// Would be redundant with the above set if GF hadn't mixed the order +#define QUIZ_AUTHOR_NAME_LADY 0 +#define QUIZ_AUTHOR_NAME_PLAYER 1 +#define QUIZ_AUTHOR_NAME_OTHER_PLAYER 2 + +#define QUIZ_QUESTION_LEN 9 + +#endif diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h index dc2ac2f32..6a3276b44 100755 --- a/include/constants/map_groups.h +++ b/include/constants/map_groups.h @@ -398,67 +398,67 @@ #define MAP_METEOR_FALLS_STEVENS_CAVE (107 | (24 << 8)) // Map Group 25 -#define MAP_SECRET_BASE_RED_CAVE1 (0 | (25 << 8)) -#define MAP_SECRET_BASE_BROWN_CAVE1 (1 | (25 << 8)) -#define MAP_SECRET_BASE_BLUE_CAVE1 (2 | (25 << 8)) -#define MAP_SECRET_BASE_YELLOW_CAVE1 (3 | (25 << 8)) -#define MAP_SECRET_BASE_TREE1 (4 | (25 << 8)) -#define MAP_SECRET_BASE_SHRUB1 (5 | (25 << 8)) -#define MAP_SECRET_BASE_RED_CAVE2 (6 | (25 << 8)) -#define MAP_SECRET_BASE_BROWN_CAVE2 (7 | (25 << 8)) -#define MAP_SECRET_BASE_BLUE_CAVE2 (8 | (25 << 8)) -#define MAP_SECRET_BASE_YELLOW_CAVE2 (9 | (25 << 8)) -#define MAP_SECRET_BASE_TREE2 (10 | (25 << 8)) -#define MAP_SECRET_BASE_SHRUB2 (11 | (25 << 8)) -#define MAP_SECRET_BASE_RED_CAVE3 (12 | (25 << 8)) -#define MAP_SECRET_BASE_BROWN_CAVE3 (13 | (25 << 8)) -#define MAP_SECRET_BASE_BLUE_CAVE3 (14 | (25 << 8)) -#define MAP_SECRET_BASE_YELLOW_CAVE3 (15 | (25 << 8)) -#define MAP_SECRET_BASE_TREE3 (16 | (25 << 8)) -#define MAP_SECRET_BASE_SHRUB3 (17 | (25 << 8)) -#define MAP_SECRET_BASE_RED_CAVE4 (18 | (25 << 8)) -#define MAP_SECRET_BASE_BROWN_CAVE4 (19 | (25 << 8)) -#define MAP_SECRET_BASE_BLUE_CAVE4 (20 | (25 << 8)) -#define MAP_SECRET_BASE_YELLOW_CAVE4 (21 | (25 << 8)) -#define MAP_SECRET_BASE_TREE4 (22 | (25 << 8)) -#define MAP_SECRET_BASE_SHRUB4 (23 | (25 << 8)) -#define MAP_SINGLE_BATTLE_COLOSSEUM (24 | (25 << 8)) -#define MAP_TRADE_CENTER (25 | (25 << 8)) -#define MAP_RECORD_CORNER (26 | (25 << 8)) -#define MAP_DOUBLE_BATTLE_COLOSSEUM (27 | (25 << 8)) -#define MAP_LINK_CONTEST_ROOM1 (28 | (25 << 8)) -#define MAP_UNKNOWN_MAP_25_29 (29 | (25 << 8)) -#define MAP_UNKNOWN_MAP_25_30 (30 | (25 << 8)) -#define MAP_UNKNOWN_MAP_25_31 (31 | (25 << 8)) -#define MAP_UNKNOWN_MAP_25_32 (32 | (25 << 8)) -#define MAP_UNKNOWN_MAP_25_33 (33 | (25 << 8)) -#define MAP_UNKNOWN_MAP_25_34 (34 | (25 << 8)) -#define MAP_LINK_CONTEST_ROOM2 (35 | (25 << 8)) -#define MAP_LINK_CONTEST_ROOM3 (36 | (25 << 8)) -#define MAP_LINK_CONTEST_ROOM4 (37 | (25 << 8)) -#define MAP_LINK_CONTEST_ROOM5 (38 | (25 << 8)) -#define MAP_LINK_CONTEST_ROOM6 (39 | (25 << 8)) -#define MAP_INSIDE_OF_TRUCK (40 | (25 << 8)) -#define MAP_SS_TIDAL_CORRIDOR (41 | (25 << 8)) -#define MAP_SS_TIDAL_LOWER_DECK (42 | (25 << 8)) -#define MAP_SS_TIDAL_ROOMS (43 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE01 (44 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE02 (45 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE03 (46 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE04 (47 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE05 (48 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE06 (49 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE07 (50 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE08 (51 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE09 (52 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE10 (53 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE11 (54 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE12 (55 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE13 (56 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE14 (57 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE15 (58 | (25 << 8)) -#define MAP_BATTLE_PYRAMID_SQUARE16 (59 | (25 << 8)) -#define MAP_UNION_ROOM (60 | (25 << 8)) +#define MAP_SECRET_BASE_RED_CAVE1 (0 | (25 << 8)) +#define MAP_SECRET_BASE_BROWN_CAVE1 (1 | (25 << 8)) +#define MAP_SECRET_BASE_BLUE_CAVE1 (2 | (25 << 8)) +#define MAP_SECRET_BASE_YELLOW_CAVE1 (3 | (25 << 8)) +#define MAP_SECRET_BASE_TREE1 (4 | (25 << 8)) +#define MAP_SECRET_BASE_SHRUB1 (5 | (25 << 8)) +#define MAP_SECRET_BASE_RED_CAVE2 (6 | (25 << 8)) +#define MAP_SECRET_BASE_BROWN_CAVE2 (7 | (25 << 8)) +#define MAP_SECRET_BASE_BLUE_CAVE2 (8 | (25 << 8)) +#define MAP_SECRET_BASE_YELLOW_CAVE2 (9 | (25 << 8)) +#define MAP_SECRET_BASE_TREE2 (10 | (25 << 8)) +#define MAP_SECRET_BASE_SHRUB2 (11 | (25 << 8)) +#define MAP_SECRET_BASE_RED_CAVE3 (12 | (25 << 8)) +#define MAP_SECRET_BASE_BROWN_CAVE3 (13 | (25 << 8)) +#define MAP_SECRET_BASE_BLUE_CAVE3 (14 | (25 << 8)) +#define MAP_SECRET_BASE_YELLOW_CAVE3 (15 | (25 << 8)) +#define MAP_SECRET_BASE_TREE3 (16 | (25 << 8)) +#define MAP_SECRET_BASE_SHRUB3 (17 | (25 << 8)) +#define MAP_SECRET_BASE_RED_CAVE4 (18 | (25 << 8)) +#define MAP_SECRET_BASE_BROWN_CAVE4 (19 | (25 << 8)) +#define MAP_SECRET_BASE_BLUE_CAVE4 (20 | (25 << 8)) +#define MAP_SECRET_BASE_YELLOW_CAVE4 (21 | (25 << 8)) +#define MAP_SECRET_BASE_TREE4 (22 | (25 << 8)) +#define MAP_SECRET_BASE_SHRUB4 (23 | (25 << 8)) +#define MAP_SINGLE_BATTLE_COLOSSEUM (24 | (25 << 8)) +#define MAP_TRADE_CENTER (25 | (25 << 8)) +#define MAP_RECORD_CORNER (26 | (25 << 8)) +#define MAP_DOUBLE_BATTLE_COLOSSEUM (27 | (25 << 8)) +#define MAP_LINK_CONTEST_ROOM1 (28 | (25 << 8)) +#define MAP_UNKNOWN_LINK_CONTEST_ROOM_25_29 (29 | (25 << 8)) +#define MAP_UNKNOWN_LINK_CONTEST_ROOM_25_30 (30 | (25 << 8)) +#define MAP_UNKNOWN_LINK_CONTEST_ROOM_25_31 (31 | (25 << 8)) +#define MAP_UNKNOWN_LINK_CONTEST_ROOM_25_32 (32 | (25 << 8)) +#define MAP_UNKNOWN_LINK_CONTEST_ROOM_25_33 (33 | (25 << 8)) +#define MAP_UNKNOWN_LINK_CONTEST_ROOM_25_34 (34 | (25 << 8)) +#define MAP_LINK_CONTEST_ROOM2 (35 | (25 << 8)) +#define MAP_LINK_CONTEST_ROOM3 (36 | (25 << 8)) +#define MAP_LINK_CONTEST_ROOM4 (37 | (25 << 8)) +#define MAP_LINK_CONTEST_ROOM5 (38 | (25 << 8)) +#define MAP_LINK_CONTEST_ROOM6 (39 | (25 << 8)) +#define MAP_INSIDE_OF_TRUCK (40 | (25 << 8)) +#define MAP_SS_TIDAL_CORRIDOR (41 | (25 << 8)) +#define MAP_SS_TIDAL_LOWER_DECK (42 | (25 << 8)) +#define MAP_SS_TIDAL_ROOMS (43 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE01 (44 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE02 (45 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE03 (46 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE04 (47 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE05 (48 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE06 (49 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE07 (50 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE08 (51 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE09 (52 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE10 (53 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE11 (54 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE12 (55 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE13 (56 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE14 (57 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE15 (58 | (25 << 8)) +#define MAP_BATTLE_PYRAMID_SQUARE16 (59 | (25 << 8)) +#define MAP_UNION_ROOM (60 | (25 << 8)) // Map Group 26 #define MAP_SAFARI_ZONE_NORTHWEST (0 | (26 << 8)) diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 5d0e562bc..52a4f0254 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -2,81 +2,82 @@ #define GUARD_CONSTANTS_POKEMON_H // Pokemon types -#define TYPE_NONE 0xFF -#define TYPE_NORMAL 0x00 -#define TYPE_FIGHTING 0x01 -#define TYPE_FLYING 0x02 -#define TYPE_POISON 0x03 -#define TYPE_GROUND 0x04 -#define TYPE_ROCK 0x05 -#define TYPE_BUG 0x06 -#define TYPE_GHOST 0x07 -#define TYPE_STEEL 0x08 -#define TYPE_MYSTERY 0x09 -#define TYPE_FIRE 0x0a -#define TYPE_WATER 0x0b -#define TYPE_GRASS 0x0c -#define TYPE_ELECTRIC 0x0d -#define TYPE_PSYCHIC 0x0e -#define TYPE_ICE 0x0f -#define TYPE_DRAGON 0x10 -#define TYPE_DARK 0x11 -#define NUMBER_OF_MON_TYPES 0x12 - +#define TYPE_NONE 255 +#define TYPE_NORMAL 0 +#define TYPE_FIGHTING 1 +#define TYPE_FLYING 2 +#define TYPE_POISON 3 +#define TYPE_GROUND 4 +#define TYPE_ROCK 5 +#define TYPE_BUG 6 +#define TYPE_GHOST 7 +#define TYPE_STEEL 8 +#define TYPE_MYSTERY 9 +#define TYPE_FIRE 10 +#define TYPE_WATER 11 +#define TYPE_GRASS 12 +#define TYPE_ELECTRIC 13 +#define TYPE_PSYCHIC 14 +#define TYPE_ICE 15 +#define TYPE_DRAGON 16 +#define TYPE_DARK 17 +#define NUMBER_OF_MON_TYPES 18 // Pokemon egg groups -#define EGG_GROUP_NONE 0 -#define EGG_GROUP_MONSTER 1 -#define EGG_GROUP_WATER_1 2 -#define EGG_GROUP_BUG 3 -#define EGG_GROUP_FLYING 4 -#define EGG_GROUP_FIELD 5 -#define EGG_GROUP_FAIRY 6 -#define EGG_GROUP_GRASS 7 -#define EGG_GROUP_HUMAN_LIKE 8 -#define EGG_GROUP_WATER_3 9 -#define EGG_GROUP_MINERAL 10 -#define EGG_GROUP_AMORPHOUS 11 -#define EGG_GROUP_WATER_2 12 -#define EGG_GROUP_DITTO 13 -#define EGG_GROUP_DRAGON 14 -#define EGG_GROUP_UNDISCOVERED 15 +#define EGG_GROUP_NONE 0 +#define EGG_GROUP_MONSTER 1 +#define EGG_GROUP_WATER_1 2 +#define EGG_GROUP_BUG 3 +#define EGG_GROUP_FLYING 4 +#define EGG_GROUP_FIELD 5 +#define EGG_GROUP_FAIRY 6 +#define EGG_GROUP_GRASS 7 +#define EGG_GROUP_HUMAN_LIKE 8 +#define EGG_GROUP_WATER_3 9 +#define EGG_GROUP_MINERAL 10 +#define EGG_GROUP_AMORPHOUS 11 +#define EGG_GROUP_WATER_2 12 +#define EGG_GROUP_DITTO 13 +#define EGG_GROUP_DRAGON 14 +#define EGG_GROUP_UNDISCOVERED 15 + +#define EGG_GROUPS_PER_MON 2 // Pokemon natures -#define NATURE_HARDY 0 -#define NATURE_LONELY 1 -#define NATURE_BRAVE 2 -#define NATURE_ADAMANT 3 -#define NATURE_NAUGHTY 4 -#define NATURE_BOLD 5 -#define NATURE_DOCILE 6 -#define NATURE_RELAXED 7 -#define NATURE_IMPISH 8 -#define NATURE_LAX 9 -#define NATURE_TIMID 10 -#define NATURE_HASTY 11 -#define NATURE_SERIOUS 12 -#define NATURE_JOLLY 13 -#define NATURE_NAIVE 14 -#define NATURE_MODEST 15 -#define NATURE_MILD 16 -#define NATURE_QUIET 17 -#define NATURE_BASHFUL 18 -#define NATURE_RASH 19 -#define NATURE_CALM 20 -#define NATURE_GENTLE 21 -#define NATURE_SASSY 22 -#define NATURE_CAREFUL 23 -#define NATURE_QUIRKY 24 +#define NATURE_HARDY 0 +#define NATURE_LONELY 1 +#define NATURE_BRAVE 2 +#define NATURE_ADAMANT 3 +#define NATURE_NAUGHTY 4 +#define NATURE_BOLD 5 +#define NATURE_DOCILE 6 +#define NATURE_RELAXED 7 +#define NATURE_IMPISH 8 +#define NATURE_LAX 9 +#define NATURE_TIMID 10 +#define NATURE_HASTY 11 +#define NATURE_SERIOUS 12 +#define NATURE_JOLLY 13 +#define NATURE_NAIVE 14 +#define NATURE_MODEST 15 +#define NATURE_MILD 16 +#define NATURE_QUIET 17 +#define NATURE_BASHFUL 18 +#define NATURE_RASH 19 +#define NATURE_CALM 20 +#define NATURE_GENTLE 21 +#define NATURE_SASSY 22 +#define NATURE_CAREFUL 23 +#define NATURE_QUIRKY 24 // Pokemon Stats -#define STAT_HP 0 -#define STAT_ATK 1 -#define STAT_DEF 2 -#define STAT_SPEED 3 -#define STAT_SPATK 4 -#define STAT_SPDEF 5 -#define STAT_ACC 6 // Only in battles. +#define STAT_HP 0 +#define STAT_ATK 1 +#define STAT_DEF 2 +#define STAT_SPEED 3 +#define STAT_SPATK 4 +#define STAT_SPDEF 5 +#define STAT_ACC 6 // Only in battles. #define STAT_EVASION 7 // Only in battles. #define NUM_STATS 6 @@ -85,4 +86,187 @@ // Shiny odds #define SHINY_ODDS 8 // Actual probability is SHINY_ODDS/65536 +// Flags for Get(Box)MonData / Set(Box)MonData +#define MON_DATA_PERSONALITY 0 +#define MON_DATA_OT_ID 1 +#define MON_DATA_NICKNAME 2 +#define MON_DATA_LANGUAGE 3 +#define MON_DATA_SANITY_IS_BAD_EGG 4 +#define MON_DATA_SANITY_HAS_SPECIES 5 +#define MON_DATA_SANITY_IS_EGG 6 +#define MON_DATA_OT_NAME 7 +#define MON_DATA_MARKINGS 8 +#define MON_DATA_CHECKSUM 9 +#define MON_DATA_ENCRYPT_SEPARATOR 10 +#define MON_DATA_SPECIES 11 +#define MON_DATA_HELD_ITEM 12 +#define MON_DATA_MOVE1 13 +#define MON_DATA_MOVE2 14 +#define MON_DATA_MOVE3 15 +#define MON_DATA_MOVE4 16 +#define MON_DATA_PP1 17 +#define MON_DATA_PP2 18 +#define MON_DATA_PP3 19 +#define MON_DATA_PP4 20 +#define MON_DATA_PP_BONUSES 21 +#define MON_DATA_COOL 22 +#define MON_DATA_BEAUTY 23 +#define MON_DATA_CUTE 24 +#define MON_DATA_EXP 25 +#define MON_DATA_HP_EV 26 +#define MON_DATA_ATK_EV 27 +#define MON_DATA_DEF_EV 28 +#define MON_DATA_SPEED_EV 29 +#define MON_DATA_SPATK_EV 30 +#define MON_DATA_SPDEF_EV 31 +#define MON_DATA_FRIENDSHIP 32 +#define MON_DATA_SMART 33 +#define MON_DATA_POKERUS 34 +#define MON_DATA_MET_LOCATION 35 +#define MON_DATA_MET_LEVEL 36 +#define MON_DATA_MET_GAME 37 +#define MON_DATA_POKEBALL 38 +#define MON_DATA_HP_IV 39 +#define MON_DATA_ATK_IV 40 +#define MON_DATA_DEF_IV 41 +#define MON_DATA_SPEED_IV 42 +#define MON_DATA_SPATK_IV 43 +#define MON_DATA_SPDEF_IV 44 +#define MON_DATA_IS_EGG 45 +#define MON_DATA_ABILITY_NUM 46 +#define MON_DATA_TOUGH 47 +#define MON_DATA_SHEEN 48 +#define MON_DATA_OT_GENDER 49 +#define MON_DATA_COOL_RIBBON 50 +#define MON_DATA_BEAUTY_RIBBON 51 +#define MON_DATA_CUTE_RIBBON 52 +#define MON_DATA_SMART_RIBBON 53 +#define MON_DATA_TOUGH_RIBBON 54 +#define MON_DATA_STATUS 55 +#define MON_DATA_LEVEL 56 +#define MON_DATA_HP 57 +#define MON_DATA_MAX_HP 58 +#define MON_DATA_ATK 59 +#define MON_DATA_DEF 60 +#define MON_DATA_SPEED 61 +#define MON_DATA_SPATK 62 +#define MON_DATA_SPDEF 63 +#define MON_DATA_MAIL 64 +#define MON_DATA_SPECIES2 65 +#define MON_DATA_IVS 66 +#define MON_DATA_CHAMPION_RIBBON 67 +#define MON_DATA_WINNING_RIBBON 68 +#define MON_DATA_VICTORY_RIBBON 69 +#define MON_DATA_ARTIST_RIBBON 70 +#define MON_DATA_EFFORT_RIBBON 71 +#define MON_DATA_GIFT_RIBBON_1 72 +#define MON_DATA_GIFT_RIBBON_2 73 +#define MON_DATA_GIFT_RIBBON_3 74 +#define MON_DATA_GIFT_RIBBON_4 75 +#define MON_DATA_GIFT_RIBBON_5 76 +#define MON_DATA_GIFT_RIBBON_6 77 +#define MON_DATA_GIFT_RIBBON_7 78 +#define MON_DATA_FATEFUL_ENCOUNTER 79 +#define MON_DATA_OBEDIENCE 80 +#define MON_DATA_KNOWN_MOVES 81 +#define MON_DATA_RIBBON_COUNT 82 +#define MON_DATA_RIBBONS 83 +#define MON_DATA_ATK2 84 +#define MON_DATA_DEF2 85 +#define MON_DATA_SPEED2 86 +#define MON_DATA_SPATK2 87 +#define MON_DATA_SPDEF2 88 + +#define MAX_LEVEL 100 + +#define OT_ID_PLAYER_ID 0 +#define OT_ID_PRESET 1 +#define OT_ID_RANDOM_NO_SHINY 2 + + +#define MON_GIVEN_TO_PARTY 0 +#define MON_GIVEN_TO_PC 1 +#define MON_CANT_GIVE 2 + +#define PLAYER_HAS_TWO_USABLE_MONS 0 +#define PLAYER_HAS_ONE_MON 1 +#define PLAYER_HAS_ONE_USABLE_MON 2 + +#define MON_MALE 0x00 +#define MON_FEMALE 0xFE +#define MON_GENDERLESS 0xFF + +#define FRIENDSHIP_EVENT_GROW_LEVEL 0 +#define FRIENDSHIP_EVENT_VITAMIN 1 // unused +#define FRIENDSHIP_EVENT_BATTLE_ITEM 2 // unused +#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 3 +#define FRIENDSHIP_EVENT_LEARN_TMHM 4 +#define FRIENDSHIP_EVENT_WALKING 5 +#define FRIENDSHIP_EVENT_FAINT_SMALL 6 +#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 7 +#define FRIENDSHIP_EVENT_FAINT_LARGE 8 + +#define STATUS_PRIMARY_NONE 0 +#define STATUS_PRIMARY_POISON 1 +#define STATUS_PRIMARY_PARALYSIS 2 +#define STATUS_PRIMARY_SLEEP 3 +#define STATUS_PRIMARY_FREEZE 4 +#define STATUS_PRIMARY_BURN 5 +#define STATUS_PRIMARY_POKERUS 6 +#define STATUS_PRIMARY_FAINTED 7 + +#define MAX_TOTAL_EVS 510 +#define EV_ITEM_RAISE_LIMIT 100 + +#define UNOWN_FORM_COUNT 28 + +// Battle move flags +#define FLAG_MAKES_CONTACT 0x1 +#define FLAG_PROTECT_AFFECTED 0x2 +#define FLAG_MAGICCOAT_AFFECTED 0x4 +#define FLAG_SNATCH_AFFECTED 0x8 +#define FLAG_MIRROR_MOVE_AFFECTED 0x10 +#define FLAG_KINGSROCK_AFFECTED 0x20 + +// Growth rates +#define GROWTH_MEDIUM_FAST 0 +#define GROWTH_ERRATIC 1 +#define GROWTH_FLUCTUATING 2 +#define GROWTH_MEDIUM_SLOW 3 +#define GROWTH_FAST 4 +#define GROWTH_SLOW 5 + +// Body colors for pokedex search +#define BODY_COLOR_RED 0 +#define BODY_COLOR_BLUE 1 +#define BODY_COLOR_YELLOW 2 +#define BODY_COLOR_GREEN 3 +#define BODY_COLOR_BLACK 4 +#define BODY_COLOR_BROWN 5 +#define BODY_COLOR_PURPLE 6 +#define BODY_COLOR_GRAY 7 +#define BODY_COLOR_WHITE 8 +#define BODY_COLOR_PINK 9 + +#define F_SUMMARY_SCREEN_FLIP_SPRITE 0x80 + +// Evolution type flags +#define EVO_FRIENDSHIP 0x0001 // Pokémon levels up with friendship ≥ 220 +#define EVO_FRIENDSHIP_DAY 0x0002 // Pokémon levels up during the day with friendship ≥ 220 +#define EVO_FRIENDSHIP_NIGHT 0x0003 // Pokémon levels up at night with friendship ≥ 220 +#define EVO_LEVEL 0x0004 // Pokémon reaches the specified level +#define EVO_TRADE 0x0005 // Pokémon is traded +#define EVO_TRADE_ITEM 0x0006 // Pokémon is traded while it's holding the specified item +#define EVO_ITEM 0x0007 // specified item is used on Pokémon +#define EVO_LEVEL_ATK_GT_DEF 0x0008 // Pokémon reaches the specified level with attack > defense +#define EVO_LEVEL_ATK_EQ_DEF 0x0009 // Pokémon reaches the specified level with attack = defense +#define EVO_LEVEL_ATK_LT_DEF 0x000a // Pokémon reaches the specified level with attack < defense +#define EVO_LEVEL_SILCOON 0x000b // Pokémon reaches the specified level with a Silcoon personality value +#define EVO_LEVEL_CASCOON 0x000c // Pokémon reaches the specified level with a Cascoon personality value +#define EVO_LEVEL_NINJASK 0x000d // Pokémon reaches the specified level (special value for Ninjask) +#define EVO_LEVEL_SHEDINJA 0x000e // Pokémon reaches the specified level (special value for Shedinja) +#define EVO_BEAUTY 0x000f // Pokémon levels up with beauty ≥ specified value + +#define EVOS_PER_MON 5 + #endif // GUARD_CONSTANTS_POKEMON_H diff --git a/include/constants/script_menu.h b/include/constants/script_menu.h new file mode 100644 index 000000000..b7ec908c1 --- /dev/null +++ b/include/constants/script_menu.h @@ -0,0 +1,168 @@ +#ifndef GUARD_SCRIPT_MENU_CONSTANTS_H +#define GUARD_SCRIPT_MENU_CONSTANTS_H + +#define MULTICHOICE(name) {name, ARRAY_COUNT(name)} + +#define MAX_MULTICHOICE_WIDTH 28 + +#define MULTI_B_PRESSED 127 + +// Multichoice Ids +#define MULTI_BRINEY_ON_DEWFORD 0 +#define MULTI_PC 1 // Exit only, populated by CreatePCMultichoice +#define MULTI_ENTERINFO 2 +#define MULTI_CONTEST_INFO 3 +#define MULTI_CONTEST_TYPE 4 +#define MULTI_DECOR_NOREGISTRY 5 +#define MULTI_DECOR_REGISTRY 6 +#define MULTI_REGISTER_MENU 7 +#define MULTI_SSTIDAL_LILYCOVE 8 // Exit only, populated by CreateLilycoveSSTidalMultichoice +#define MULTI_UNUSED_9 9 +#define MULTI_UNUSED_10 10 +#define MULTI_FRONTIER_PASS_INFO 11 +#define MULTI_BIKE 12 +#define MULTI_STATUS_INFO 13 +#define MULTI_BRINEY_OFF_DEWFORD 14 +#define MULTI_UNUSED_15 15 +#define MULTI_VIEWED_PAINTINGS 16 +#define MULTI_YESNOINFO 17 +#define MULTI_BATTLE_MODE 18 +#define MULTI_UNUSED_19 19 +#define MULTI_YESNOINFO_2 20 +#define MULTI_UNUSED_21 21 +#define MULTI_UNUSED_22 22 +#define MULTI_CHALLENGEINFO 23 +#define MULTI_LEVEL_MODE 24 +#define MULTI_MECHADOLL1_Q1 25 +#define MULTI_MECHADOLL1_Q2 26 +#define MULTI_MECHADOLL1_Q3 27 +#define MULTI_MECHADOLL2_Q1 28 +#define MULTI_MECHADOLL2_Q2 29 +#define MULTI_MECHADOLL2_Q3 30 +#define MULTI_MECHADOLL3_Q1 31 +#define MULTI_MECHADOLL3_Q2 32 +#define MULTI_MECHADOLL3_Q3 33 +#define MULTI_MECHADOLL4_Q1 34 +#define MULTI_MECHADOLL4_Q2 35 +#define MULTI_MECHADOLL4_Q3 36 +#define MULTI_MECHADOLL5_Q1 37 +#define MULTI_MECHADOLL5_Q2 38 +#define MULTI_MECHADOLL5_Q3 39 +#define MULTI_UNUSED_40 40 +#define MULTI_UNUSED_41 41 +#define MULTI_VENDING_MACHINE 42 +#define MULTI_MACH_BIKE_INFO 43 +#define MULTI_ACRO_BIKE_INFO 44 +#define MULTI_SATISFACTION 45 +#define MULTI_STERN_DEEPSEA 46 +#define MULTI_UNUSED_ASH_VENDOR 47 // Replaced by scrollable multichoice +#define MULTI_GAME_CORNER_DOLLS 48 +#define MULTI_GAME_CORNER_COINS 49 +#define MULTI_HOWS_FISHING 50 +#define MULTI_UNUSED_51 51 +#define MULTI_SSTIDAL_SLATEPORT_WITH_BF 52 +#define MULTI_SSTIDAL_BATTLE_FRONTIER 53 +#define MULTI_RIGHTLEFT 54 +#define MULTI_GAME_CORNER_TMS 55 +#define MULTI_SSTIDAL_SLATEPORT_NO_BF 56 +#define MULTI_FLOORS 57 +#define MULTI_SHARDS_R 58 +#define MULTI_SHARDS_Y 59 +#define MULTI_SHARDS_RY 60 +#define MULTI_SHARDS_B 61 +#define MULTI_SHARDS_RB 62 +#define MULTI_SHARDS_YB 63 +#define MULTI_SHARDS_RYB 64 +#define MULTI_SHARDS_G 65 +#define MULTI_SHARDS_RG 66 +#define MULTI_SHARDS_YG 67 +#define MULTI_SHARDS_RYG 68 +#define MULTI_SHARDS_BG 69 +#define MULTI_SHARDS_RBG 70 +#define MULTI_SHARDS_YBG 71 +#define MULTI_SHARDS_RYBG 72 +#define MULTI_TOURNEY_WITH_RECORD 73 +#define MULTI_CABLE_CLUB_NO_RECORD_MIX 74 +#define MULTI_WIRELESS_NO_RECORD_BERRY 75 +#define MULTI_CABLE_CLUB_WITH_RECORD_MIX 76 +#define MULTI_WIRELESS_NO_BERRY 77 +#define MULTI_WIRELESS_NO_RECORD 78 +#define MULTI_WIRELESS_ALL_SERVICES 79 +#define MULTI_WIRELESS_MINIGAME 80 +#define MULTI_LINK_LEADER 81 +#define MULTI_CONTEST_RANK 82 +#define MULTI_FRONTIER_ITEM_CHOOSE 83 +#define MULTI_LINK_CONTEST_INFO 84 +#define MULTI_LINK_CONTEST_MODE 85 +#define MULTI_FORCED_START_MENU 86 +#define MULTI_FRONTIER_GAMBLER_BET 87 +#define MULTI_TENT 88 +#define MULTI_UNUSED_SSTIDAL_1 89 // These 4 were replaced by CreateLilycoveSSTidalMultichoice +#define MULTI_UNUSED_SSTIDAL_2 90 // +#define MULTI_UNUSED_SSTIDAL_3 91 // +#define MULTI_UNUSED_SSTIDAL_4 92 // +#define MULTI_FOSSIL 93 +#define MULTI_YESNO 94 +#define MULTI_FRONTIER_RULES 95 +#define MULTI_BATTLE_ARENA_RULES 96 +#define MULTI_BATTLE_TOWER_RULES 97 +#define MULTI_BATTLE_DOME_RULES 98 +#define MULTI_BATTLE_FACTORY_RULES 99 +#define MULTI_BATTLE_PALACE_RULES 100 +#define MULTI_BATTLE_PYRAMID_RULES 101 +#define MULTI_BATTLE_PIKE_RULES 102 +#define MULTI_GO_ON_RECORD_REST_RETIRE 103 +#define MULTI_GO_ON_REST_RETIRE 104 +#define MULTI_GO_ON_RECORD_RETIRE 105 +#define MULTI_GO_ON_RETIRE 106 +#define MULTI_TOURNEY_NO_RECORD 107 +#define MULTI_TV_LATI 108 +#define MULTI_BATTLE_TOWER_FEELINGS 109 +#define MULTI_WHERES_RAYQUAZA 110 +#define MULTI_SLATEPORT_TENT_RULES 111 +#define MULTI_FALLARBOR_TENT_RULES 112 +#define MULTI_TAG_MATCH_TYPE 113 + +// Lilycove SS Tidal Multichoice Selections +#define SSTIDAL_SELECTION_SLATEPORT 0 +#define SSTIDAL_SELECTION_BATTLE_FRONTIER 1 +#define SSTIDAL_SELECTION_SOUTHERN_ISLAND 2 +#define SSTIDAL_SELECTION_NAVEL_ROCK 3 +#define SSTIDAL_SELECTION_BIRTH_ISLAND 4 +#define SSTIDAL_SELECTION_FARAWAY_ISLAND 5 +#define SSTIDAL_SELECTION_EXIT 6 +#define SSTIDAL_SELECTION_COUNT 7 + +// Std String Ids +#define STDSTRING_COOL 0 +#define STDSTRING_BEAUTY 1 +#define STDSTRING_CUTE 2 +#define STDSTRING_SMART 3 +#define STDSTRING_TOUGH 4 +#define STDSTRING_NORMAL 5 +#define STDSTRING_SUPER 6 +#define STDSTRING_HYPER 7 +#define STDSTRING_MASTER 8 +#define STDSTRING_COOL2 9 +#define STDSTRING_BEAUTY2 10 +#define STDSTRING_CUTE2 11 +#define STDSTRING_SMART2 12 +#define STDSTRING_TOUGH2 13 +#define STDSTRING_ITEMS 14 +#define STDSTRING_KEYITEMS 15 +#define STDSTRING_POKEBALLS 16 +#define STDSTRING_TMHMS 17 +#define STDSTRING_BERRIES 18 +#define STDSTRING_SINGLE 19 +#define STDSTRING_DOUBLE 20 +#define STDSTRING_MULTI 21 +#define STDSTRING_MULTI_LINK 22 +#define STDSTRING_BATTLE_TOWER 23 +#define STDSTRING_BATTLE_DOME 24 +#define STDSTRING_BATTLE_FACTORY 25 +#define STDSTRING_BATTLE_PALACE 26 +#define STDSTRING_BATTLE_ARENA 27 +#define STDSTRING_BATTLE_PIKE 28 +#define STDSTRING_BATTLE_PYRAMID 29 + +#endif //GUARD_SCRIPT_MENU_CONSTANTS_H diff --git a/include/constants/vars.h b/include/constants/vars.h index 6b213c8cc..72b15654e 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -61,14 +61,14 @@ #define VAR_0x402E 0x402E #define VAR_FRONTIER_MANIAC_FACILITY 0x402F -#define VAR_FRONTIER_GAMBLER_FACILITY 0x4030 -#define VAR_FRONTIER_GAMBLER_SET_FACILITY_F 0x4031 +#define VAR_FRONTIER_GAMBLER_CHALLENGE 0x4030 +#define VAR_FRONTIER_GAMBLER_SET_CHALLENGE 0x4031 #define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032 -#define VAR_FRONTIER_GAMBLER_PLACED_BET_F 0x4033 +#define VAR_FRONTIER_GAMBLER_STATE 0x4033 #define VAR_DEOXYS_ROCK_STEP_COUNT 0x4034 #define VAR_DEOXYS_ROCK_LEVEL 0x4035 -#define VAR_STORAGE_UNKNOWN 0x4036 +#define VAR_PC_BOX_TO_SEND_MON 0x4036 #define VAR_UNUSUAL_WEATHER_LOCATION 0x4037 #define VAR_UNUSUAL_WEATHER_STEP_COUNTER 0x4038 #define VAR_SHOULD_END_UNUSUAL_WEATHER 0x4039 diff --git a/include/contest.h b/include/contest.h index a4e209bcb..2b1b95af5 100644 --- a/include/contest.h +++ b/include/contest.h @@ -2,10 +2,7 @@ #define GUARD_CONTEST_H #include "palette.h" - -#define CONTESTANT_COUNT 4 -#define APPLAUSE_METER_SIZE 5 -#define CONTEST_TURN_COUNT 5 +#include "constants/contest.h" enum { @@ -18,20 +15,6 @@ enum CONTEST_DEBUG_MODE_PRINT_UNK_D }; -#define LINK_CONTEST_FLAG_IS_LINK (1 << 0) -#define LINK_CONTEST_FLAG_IS_WIRELESS (1 << 1) -#define LINK_CONTEST_FLAG_HAS_RS_PLAYER (1 << 2) - -enum -{ - CONTEST_CATEGORY_COOL, - CONTEST_CATEGORY_BEAUTY, - CONTEST_CATEGORY_CUTE, - CONTEST_CATEGORY_SMART, - CONTEST_CATEGORY_TOUGH, - CONTEST_CATEGORIES_COUNT, -}; - enum { CONTEST_EFFECT_HIGHLY_APPEALING, @@ -244,7 +227,7 @@ struct ContestPokemon u8 aiPool_Cute:1; // 0x10 u8 aiPool_Smart:1; // 0x20 u8 aiPool_Tough:1; // 0x40 - /*0x1E*/ u16 moves[4]; // moves + /*0x1E*/ u16 moves[MAX_MON_MOVES]; // moves /*0x26*/ u8 cool; // cool /*0x27*/ u8 beauty; // beauty /*0x28*/ u8 cute; // cute diff --git a/include/credits.h b/include/credits.h index e7e58415b..f7dfa9997 100644 --- a/include/credits.h +++ b/include/credits.h @@ -7,6 +7,6 @@ extern EWRAM_DATA bool8 gHasHallOfFameRecords; // Exported ROM declarations -void sub_8175620(void); +void CB2_StartCreditsSequence(void); #endif // GUARD_CREDITS_H diff --git a/include/data.h b/include/data.h index f1a4caa6a..49b98663a 100644 --- a/include/data.h +++ b/include/data.h @@ -34,7 +34,7 @@ struct TrainerMonNoItemCustomMoves u16 iv; u8 lvl; u16 species; - u16 moves[4]; + u16 moves[MAX_MON_MOVES]; }; struct TrainerMonItemCustomMoves @@ -43,7 +43,7 @@ struct TrainerMonItemCustomMoves u8 lvl; u16 species; u16 heldItem; - u16 moves[4]; + u16 moves[MAX_MON_MOVES]; }; union TrainerMonPtr diff --git a/include/daycare.h b/include/daycare.h index ecd875865..7d6f2fb19 100644 --- a/include/daycare.h +++ b/include/daycare.h @@ -1,10 +1,10 @@ #ifndef GUARD_DAYCARE_H #define GUARD_DAYCARE_H -#define EGG_HATCH_LEVEL 5 +#include "constants/daycare.h" -u8 *GetMonNick(struct Pokemon *mon, u8 *dest); -u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest); +u8 *GetMonNickname2(struct Pokemon *mon, u8 *dest); +u8 *GetBoxMonNickname(struct BoxPokemon *mon, u8 *dest); u8 CountPokemonInDaycare(struct DayCare *daycare); void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDayCareMail *daycareMail); void StoreSelectedPokemonInDaycare(void); @@ -16,7 +16,7 @@ void RejectEggFromDayCare(void); void CreateEgg(struct Pokemon *mon, u16 species, bool8 setHotSpringsLocation); void GiveEggFromDaycare(void); bool8 ShouldEggHatch(void); -u16 GetSelectedMonNickAndSpecies(void); +u16 GetSelectedMonNicknameAndSpecies(void); void GetDaycareMonNicknames(void); u8 GetDaycareState(void); void SetDaycareCompatibilityString(void); diff --git a/include/egg_hatch.h b/include/egg_hatch.h index 862d33947..64d07c813 100644 --- a/include/egg_hatch.h +++ b/include/egg_hatch.h @@ -2,9 +2,9 @@ #define GUARD_EGG_HATCH_H void ScriptHatchMon(void); -bool8 sub_8071614(void); +bool8 CheckDaycareMonReceivedMail(void); void EggHatch(void); u8 GetEggStepsToSubtract(void); -u16 sub_80722E0(void); +u16 CountPartyAliveNonEggMons(void); #endif // GUARD_EGG_HATCH_H diff --git a/include/ereader_helpers.h b/include/ereader_helpers.h index bcbb68d4f..8dc3b907a 100755 --- a/include/ereader_helpers.h +++ b/include/ereader_helpers.h @@ -1,51 +1,34 @@ #ifndef GUARD_EREADER_HELPERS_H #define GUARD_EREADER_HELPERS_H -struct Unk81D38FC +#include "trainer_hill.h" + +struct EReaderTrainerHillTrainer { u8 unk0; - u8 filler_1[3]; - u8 unk4[0x148]; - u8 unk14C[0x124]; - int checksum; -}; + struct TrainerHillTrainer unk4; + struct TrHillDisplay unk14C; + u32 checksum; +}; // size=0x274 struct EReaderTrainerHillSet { - u8 unk_0; - u8 unk_1; - u8 unk_2; - u8 unk_3; - int checksum; - struct Unk81D38FC unk_8[6]; + u8 count; + u8 id; + u16 dummy; + u32 checksum; + struct EReaderTrainerHillTrainer unk_8[6]; u8 unk_ec0[40]; -}; - -struct Unk81D3998Sub -{ - u8 unk_000[4]; - u8 unk_004[0x148]; - u8 unk_14C[0x148]; - u8 unk_294[0x124]; -}; - -struct Unk81D3998 -{ - u8 unk_000; - u8 unk_001; - u8 unk_002; - int checksum; - struct Unk81D3998Sub unk_008[4]; -}; +}; // size = 0xf00 bool8 EReader_IsReceivedDataValid(struct EReaderTrainerHillSet *buffer); bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet *arg0); bool32 ReadTrainerHillAndValidate(void); -int sub_81D3D70(u8, u32, u32*, u32*); +int EReaderHandleTransfer(u8, u32, u32*, u32*); void sub_81D3F9C(void); void sub_81D3FAC(void); -void sub_81D41A0(void); -void sub_81D41F4(void); +void EReaderHelper_SaveRegsState(void); +void EReaderHelper_RestoreRegsState(void); void sub_81D4238(void); #endif // GUARD_EREADER_HELPERS_H diff --git a/include/field_specials.h b/include/field_specials.h index b1a50c811..952081e93 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -5,8 +5,8 @@ extern bool8 gBikeCyclingChallenge; extern u8 gBikeCollisions; u8 GetLeadMonIndex(void); -u8 sub_813B260(void); -u16 get_unknown_box_id(void); +u8 IsDestinationBoxFull(void); +u16 GetPCBoxToSendMon(void); bool8 InMultiBattleRoom(void); void sub_813BF10(void); void IncrementBirthIslandRockStepCount(void); @@ -19,17 +19,17 @@ bool32 ShouldDoRoxanneCall(void); bool32 ShouldDoRivalRayquazaCall(void); bool32 CountSSTidalStep(u16 delta); u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y); -void sub_813A128(void); -void sub_813A878(u8 a0); +void ShowScrollableMultichoice(void); +void FrontierGamblerSetWonOrLost(bool8 won); u8 sub_813BADC(u8 a0); -bool8 sub_813B9C0(void); -void SetShoalItemFlag(u16 v0); -void UpdateFrontierManiac(u16 a0); -void UpdateFrontierGambler(u16 a0); +bool8 InPokemonCenter(void); +void SetShoalItemFlag(u16 unused); +void UpdateFrontierManiac(u16 daysSince); +void UpdateFrontierGambler(u16 daysSince); void ResetCyclingRoadChallengeData(void); -bool8 warp0_in_pokecenter(void); +bool8 UsedPokemonCenterWarp(void); void ResetFanClub(void); -bool8 sub_813B21C(void); -void set_unknown_box_id(u8 id); +bool8 ShouldShowBoxWasFullMessage(void); +void SetPCBoxToSendMon(u8 boxId); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/gba/types.h b/include/gba/types.h index 9f2594703..7163f925f 100644 --- a/include/gba/types.h +++ b/include/gba/types.h @@ -68,6 +68,10 @@ struct OamData /*0x06*/ u16 affineParam; }; +#define ST_OAM_HFLIP 0x08 +#define ST_OAM_VFLIP 0x10 +#define ST_OAM_MNUM_FLIP_MASK 0x18 + #define ST_OAM_OBJ_NORMAL 0 #define ST_OAM_OBJ_BLEND 1 #define ST_OAM_OBJ_WINDOW 2 diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index b5a86e311..a17180589 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -267,19 +267,6 @@ enum enum { - DIR_NONE, - DIR_SOUTH, - DIR_NORTH, - DIR_WEST, - DIR_EAST, - DIR_SOUTHWEST, - DIR_SOUTHEAST, - DIR_NORTHWEST, - DIR_NORTHEAST, -}; - -enum -{ COLLISION_LEDGE_JUMP = 6 }; diff --git a/include/global.h b/include/global.h index 14377d8bb..44a4d0164 100644 --- a/include/global.h +++ b/include/global.h @@ -63,8 +63,6 @@ // Converts a Q24.8 fixed-point format number to a regular integer #define Q_24_8_TO_INT(n) ((int)((n) >> 8)) -#define PARTY_SIZE 6 - #define POKEMON_SLOTS_NUMBER 412 #define min(a, b) ((a) < (b) ? (a) : (b)) @@ -212,7 +210,7 @@ struct BerryCrush struct ApprenticeMon { u16 species; - u16 moves[4]; + u16 moves[MAX_MON_MOVES]; u16 item; }; @@ -224,7 +222,7 @@ struct Apprentice u8 number; struct ApprenticeMon party[3]; u16 easyChatWords[6]; - u8 playerId[4]; + u8 playerId[TRAINER_ID_LENGTH]; u8 playerName[PLAYER_NAME_LENGTH]; u8 language; u32 checksum; @@ -234,7 +232,7 @@ struct BattleTowerPokemon { u16 species; u16 heldItem; - u16 moves[4]; + u16 moves[MAX_MON_MOVES]; u8 level; u8 ppBonuses; u8 hpEV; @@ -257,13 +255,15 @@ struct BattleTowerPokemon u8 friendship; }; +#define NULL_BATTLE_TOWER_POKEMON { .nickname = __("$$$$$$$$$$$") } + struct EmeraldBattleTowerRecord { /*0x00*/ u8 lvlMode; // 0 = level 50, 1 = level 100 /*0x01*/ u8 facilityClass; /*0x02*/ u16 winStreak; /*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1]; - /*0x0C*/ u8 trainerId[4]; + /*0x0C*/ u8 trainerId[TRAINER_ID_LENGTH]; /*0x10*/ u16 greeting[6]; /*0x1C*/ u16 speechWon[6]; /*0x28*/ u16 speechLost[6]; @@ -278,7 +278,7 @@ struct BattleTowerEReaderTrainer /*0x01*/ u8 facilityClass; /*0x02*/ u16 winStreak; /*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1]; - /*0x0C*/ u8 trainerId[4]; + /*0x0C*/ u8 trainerId[TRAINER_ID_LENGTH]; /*0x10*/ u16 greeting[6]; /*0x1C*/ u16 farewellPlayerLost[6]; /*0x28*/ u16 farewellPlayerWon[6]; @@ -288,7 +288,7 @@ struct BattleTowerEReaderTrainer struct FrontierMonData { - u16 moves[4]; + u16 moves[MAX_MON_MOVES]; u8 evs[6]; u8 nature; }; @@ -425,7 +425,7 @@ struct PlayersApprentice struct RankingHall1P { - u8 id[4]; + u8 id[TRAINER_ID_LENGTH]; u16 winStreak; u8 name[PLAYER_NAME_LENGTH + 1]; u8 language; @@ -433,8 +433,8 @@ struct RankingHall1P struct RankingHall2P { - u8 id1[4]; - u8 id2[4]; + u8 id1[TRAINER_ID_LENGTH]; + u8 id2[TRAINER_ID_LENGTH]; u16 winStreak; u8 name1[PLAYER_NAME_LENGTH + 1]; u8 name2[PLAYER_NAME_LENGTH + 1]; @@ -446,7 +446,7 @@ struct SaveBlock2 /*0x00*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x08*/ u8 playerGender; // MALE, FEMALE /*0x09*/ u8 specialSaveWarpFlags; - /*0x0A*/ u8 playerTrainerId[4]; + /*0x0A*/ u8 playerTrainerId[TRAINER_ID_LENGTH]; /*0x0E*/ u16 playTimeHours; /*0x10*/ u8 playTimeMinutes; /*0x11*/ u8 playTimeSeconds; @@ -495,7 +495,7 @@ struct SecretBase /*0x1A9D*/ u8 battledOwnerToday:1; /*0x1A9D*/ u8 registryStatus:2; /*0x1A9E*/ u8 trainerName[PLAYER_NAME_LENGTH]; - /*0x1AA5*/ u8 trainerId[4]; // byte 0 is used for determining trainer class + /*0x1AA5*/ u8 trainerId[TRAINER_ID_LENGTH]; // byte 0 is used for determining trainer class /*0x1AA9*/ u8 language; /*0x1AAA*/ u16 numSecretBasesReceived; /*0x1AAC*/ u8 numTimesEntered; @@ -581,7 +581,7 @@ struct MailStruct { /*0x00*/ u16 words[MAIL_WORDS_COUNT]; /*0x12*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; - /*0x1A*/ u8 trainerId[4]; + /*0x1A*/ u8 trainerId[TRAINER_ID_LENGTH]; /*0x1E*/ u16 species; /*0x20*/ u16 itemId; }; @@ -598,7 +598,7 @@ struct MauvilleManBard /*0x0E*/ u16 temporaryLyrics[6]; /*0x1A*/ u8 playerName[8]; /*0x22*/ u8 filler_2DB6[0x3]; - /*0x25*/ u8 playerTrainerId[4]; + /*0x25*/ u8 playerTrainerId[TRAINER_ID_LENGTH]; /*0x29*/ bool8 hasChangedSong; /*0x2A*/ u8 language; }; /*size = 0x2C*/ @@ -737,50 +737,43 @@ struct RecordMixingDayCareMail bool16 holdsItem[DAYCARE_MON_COUNT]; }; -enum -{ - LILYCOVE_LADY_QUIZ, - LILYCOVE_LADY_FAVOUR, - LILYCOVE_LADY_CONTEST -}; - struct LilycoveLadyQuiz { /*0x000*/ u8 id; - /*0x001*/ u8 phase; - /*0x002*/ u16 unk_002[9]; - /*0x014*/ u16 unk_014; - /*0x016*/ u16 unk_016; + /*0x001*/ u8 state; + /*0x002*/ u16 question[9]; + /*0x014*/ u16 correctAnswer; + /*0x016*/ u16 playerAnswer; /*0x018*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; - /*0x020*/ u16 playerTrainerId[4]; - /*0x028*/ u16 itemId; - /*0x02a*/ u8 unk_02a; - /*0x02b*/ u8 unk_02b; - /*0x02c*/ u8 unk_02c; + /*0x020*/ u16 playerTrainerId[TRAINER_ID_LENGTH]; + /*0x028*/ u16 prize; + /*0x02a*/ bool8 waitingForChallenger; + /*0x02b*/ u8 questionId; + /*0x02c*/ u8 prevQuestionId; /*0x02d*/ u8 language; }; -struct LilycoveLadyFavour +struct LilycoveLadyFavor { /*0x000*/ u8 id; - /*0x001*/ u8 phase; - /*0x002*/ u8 unk_002; - /*0x003*/ u8 unk_003; + /*0x001*/ u8 state; + /*0x002*/ bool8 likedItem; + /*0x003*/ u8 numItemsGiven; /*0x004*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; - /*0x00c*/ u8 unk_00c; + /*0x00c*/ u8 favorId; /*0x00e*/ u16 itemId; - /*0x010*/ u16 unk_010; + /*0x010*/ u16 bestItem; /*0x012*/ u8 language; }; struct LilycoveLadyContest { /*0x000*/ u8 id; - /*0x001*/ u8 phase; - /*0x002*/ u8 fave_pkblk; - /*0x003*/ u8 other_pkblk; + /*0x001*/ bool8 givenPokeblock; + /*0x002*/ u8 numGoodPokeblocksGiven; + /*0x003*/ u8 numOtherPokeblocksGiven; /*0x004*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; - /*0x00c*/ u8 max_sheen; + /*0x00c*/ u8 maxSheen; /*0x00d*/ u8 category; /*0x00e*/ u8 language; }; @@ -788,7 +781,7 @@ struct LilycoveLadyContest typedef union // 3b58 { struct LilycoveLadyQuiz quiz; - struct LilycoveLadyFavour favour; + struct LilycoveLadyFavor favor; struct LilycoveLadyContest contest; u8 id; u8 pad[0x40]; @@ -951,7 +944,7 @@ struct SaveBlock1 /*0x2B94*/ u8 outbreakPokemonLevel; /*0x2B95*/ u8 outbreakUnk1; /*0x2B96*/ u16 outbreakUnk2; - /*0x2B98*/ u16 outbreakPokemonMoves[4]; + /*0x2B98*/ u16 outbreakPokemonMoves[MAX_MON_MOVES]; /*0x2BA0*/ u8 outbreakUnk4; /*0x2BA1*/ u8 outbreakPokemonProbability; /*0x2BA2*/ u16 outbreakDaysLeft; diff --git a/include/global.tv.h b/include/global.tv.h index aa151a75c..1cef057ae 100644 --- a/include/global.tv.h +++ b/include/global.tv.h @@ -4,8 +4,7 @@ enum { TVSHOW_OFF_AIR, - - TVSHOW_FAN_CLUB_LETTER = 1, + TVSHOW_FAN_CLUB_LETTER, TVSHOW_RECENT_HAPPENINGS, TVSHOW_PKMN_FAN_CLUB_OPINIONS, TVSHOW_UNKN_SHOWTYPE_04, @@ -482,7 +481,7 @@ typedef union // size = 0x24 /*0x01*/ bool8 active; /*0x02*/ u8 var02; /*0x03*/ u8 var03; - /*0x04*/ u16 moves[4]; + /*0x04*/ u16 moves[MAX_MON_MOVES]; /*0x0C*/ u16 species; /*0x0E*/ u16 var0E; /*0x10*/ u8 locationMapNum; diff --git a/include/graphics.h b/include/graphics.h index d1d99cc8f..5f5c579d2 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -3093,90 +3093,93 @@ extern const u32 gPokeblock_Gfx[]; extern const u32 gItemIcon_QuestionMark[]; extern const u32 gItemIconPalette_QuestionMark[]; -extern const u32 gUnknown_08DB7AA0[]; -extern const u32 gUnknown_08DB7B34[]; -extern const u32 gUnknown_08DB7B5C[]; -extern const u32 gUnknown_08DB7BEC[]; -extern const u32 gUnknown_08DB7C08[]; -extern const u32 gUnknown_08DB7CE8[]; -extern const u32 gUnknown_08DB7D08[]; -extern const u32 gUnknown_08DB7DCC[]; -extern const u32 gUnknown_08DB7DF4[]; -extern const u32 gUnknown_08DB7EA0[]; -extern const u32 gUnknown_08DB7EC4[]; -extern const u32 gUnknown_08DB7F60[]; -extern const u32 gUnknown_08DB7F7C[]; -extern const u32 gUnknown_08DB8070[]; -extern const u32 gUnknown_08DB808C[]; -extern const u32 gUnknown_08DB8138[]; -extern const u32 gUnknown_08DB8160[]; -extern const u32 gUnknown_08DB8218[]; -extern const u32 gUnknown_08DB823C[]; -extern const u32 gUnknown_08DB8300[]; -extern const u32 gUnknown_08DB8328[]; -extern const u32 gUnknown_08DB8430[]; -extern const u32 gUnknown_08DB8458[]; -extern const u32 gUnknown_08DB8528[]; -extern const u32 gUnknown_08DB854C[]; -extern const u32 gUnknown_08DB862C[]; -extern const u32 gUnknown_08DB8654[]; -extern const u32 gUnknown_08DB86C4[]; -extern const u32 gUnknown_08DB86E0[]; -extern const u32 gUnknown_08DB8750[]; -extern const u32 gUnknown_08DB876C[]; -extern const u32 gUnknown_08DB87DC[]; -extern const u32 gUnknown_08DB87F8[]; -extern const u32 gUnknown_08DB88D8[]; -extern const u32 gUnknown_08DB8900[]; -extern const u32 gUnknown_08DB89E0[]; -extern const u32 gUnknown_08DB8A08[]; -extern const u32 gUnknown_08DB8A68[]; -extern const u32 gUnknown_08DB8A84[]; -extern const u32 gUnknown_08DB8B40[]; -extern const u32 gUnknown_08DB8B68[]; -extern const u32 gUnknown_08DB8C40[]; -extern const u32 gUnknown_08DB8C5C[]; -extern const u32 gUnknown_08DB8CF4[]; -extern const u32 gUnknown_08DB8D18[]; -extern const u32 gUnknown_08DB8DB0[]; -extern const u32 gUnknown_08DB8DD4[]; -extern const u32 gUnknown_08DB8E80[]; -extern const u32 gUnknown_08DB8EA0[]; -extern const u32 gUnknown_08DB8F58[]; -extern const u32 gUnknown_08DB8F7C[]; -extern const u32 gUnknown_08DB9038[]; -extern const u32 gUnknown_08DB9058[]; -extern const u32 gUnknown_08DB9130[]; -extern const u32 gUnknown_08DB9154[]; -extern const u32 gUnknown_08DB9218[]; -extern const u32 gUnknown_08DB9234[]; -extern const u32 gUnknown_08DB92FC[]; -extern const u32 gUnknown_08DB931C[]; -extern const u32 gUnknown_08DB93E8[]; -extern const u32 gUnknown_08DB940C[]; -extern const u32 gUnknown_08DB94CC[]; -extern const u32 gUnknown_08DB94E8[]; -extern const u32 gUnknown_08DB95AC[]; -extern const u32 gUnknown_08DB95D0[]; -extern const u32 gUnknown_08DB96C4[]; -extern const u32 gUnknown_08DB96EC[]; -extern const u32 gUnknown_08DB97F4[]; -extern const u32 gUnknown_08DB981C[]; -extern const u32 gUnknown_08DB9908[]; -extern const u32 gUnknown_08DB9930[]; -extern const u32 gUnknown_08DB9A54[]; -extern const u32 gUnknown_08DB9A7C[]; -extern const u32 gUnknown_08DB9B7C[]; -extern const u32 gUnknown_08DB9BA4[]; -extern const u32 gUnknown_08DB9CB0[]; -extern const u32 gUnknown_08DB9CD8[]; -extern const u32 gUnknown_08DB9DAC[]; -extern const u32 gUnknown_08DB9DD4[]; -extern const u32 gUnknown_08DB9EE4[]; -extern const u32 gUnknown_08DB9F08[]; -extern const u32 gUnknown_08DB9FFC[]; -extern const u32 gUnknown_08DBA020[]; -extern const u32 gUnknown_08DBA12C[]; + +// Decorations +extern const u32 gDecorIcon_HeavyDesk[]; +extern const u32 gDecorIconPalette_HeavyDesk[]; +extern const u32 gDecorIcon_RaggedDesk[]; +extern const u32 gDecorIconPalette_RaggedDesk[]; +extern const u32 gDecorIcon_ComfortDesk[]; +extern const u32 gDecorIconPalette_ComfortDesk[]; +extern const u32 gDecorIcon_PrettyDesk[]; +extern const u32 gDecorIconPalette_PrettyDesk[]; +extern const u32 gDecorIcon_BrickDesk[]; +extern const u32 gDecorIconPalette_BrickDesk[]; +extern const u32 gDecorIcon_CampDesk[]; +extern const u32 gDecorIconPalette_CampDesk[]; +extern const u32 gDecorIcon_HardDesk[]; +extern const u32 gDecorIconPalette_HardDesk[]; +extern const u32 gDecorIcon_RedPlant[]; +extern const u32 gDecorIconPalette_RedPlant[]; +extern const u32 gDecorIcon_TropicalPlant[]; +extern const u32 gDecorIconPalette_TropicalPlant[]; +extern const u32 gDecorIcon_PrettyFlowers[]; +extern const u32 gDecorIconPalette_PrettyFlowers[]; +extern const u32 gDecorIcon_ColorfulPlant[]; +extern const u32 gDecorIconPalette_ColorfulPlant[]; +extern const u32 gDecorIcon_BigPlant[]; +extern const u32 gDecorIconPalette_BigPlant[]; +extern const u32 gDecorIcon_GorgeousPlant[]; +extern const u32 gDecorIconPalette_GorgeousPlant[]; +extern const u32 gDecorIcon_RedBrick[]; +extern const u32 gDecorIconPalette_RedBrick[]; +extern const u32 gDecorIcon_YellowBrick[]; +extern const u32 gDecorIconPalette_YellowBrick[]; +extern const u32 gDecorIcon_BlueBrick[]; +extern const u32 gDecorIconPalette_BlueBrick[]; +extern const u32 gDecorIcon_RedTent[]; +extern const u32 gDecorIconPalette_RedTent[]; +extern const u32 gDecorIcon_BlueTent[]; +extern const u32 gDecorIconPalette_BlueTent[]; +extern const u32 gDecorIcon_SolidBoard[]; +extern const u32 gDecorIconPalette_SolidBoard[]; +extern const u32 gDecorIcon_Slide[]; +extern const u32 gDecorIconPalette_Slide[]; +extern const u32 gDecorIcon_Tire[]; +extern const u32 gDecorIconPalette_Tire[]; +extern const u32 gDecorIcon_Stand[]; +extern const u32 gDecorIconPalette_Stand[]; +extern const u32 gDecorIcon_BreakableDoor[]; +extern const u32 gDecorIconPalette_BreakableDoor[]; +extern const u32 gDecorIcon_SandOrnament[]; +extern const u32 gDecorIconPalette_SandOrnament[]; +extern const u32 gDecorIcon_GlassOrnament[]; +extern const u32 gDecorIconPalette_GlassOrnament[]; +extern const u32 gDecorIcon_SurfMat[]; +extern const u32 gDecorIconPalette_SurfMat[]; +extern const u32 gDecorIcon_ThunderMat[]; +extern const u32 gDecorIconPalette_ThunderMat[]; +extern const u32 gDecorIcon_FireBlastMat[]; +extern const u32 gDecorIconPalette_FireBlastMat[]; +extern const u32 gDecorIcon_PowderSnowMat[]; +extern const u32 gDecorIconPalette_PowderSnowMat[]; +extern const u32 gDecorIcon_AttractMat[]; +extern const u32 gDecorIconPalette_AttractMat[]; +extern const u32 gDecorIcon_FissureMat[]; +extern const u32 gDecorIconPalette_FissureMat[]; +extern const u32 gDecorIcon_SpikesMat[]; +extern const u32 gDecorIconPalette_SpikesMat[]; +extern const u32 gDecorIcon_SnorlaxDoll[]; +extern const u32 gDecorIconPalette_SnorlaxDoll[]; +extern const u32 gDecorIcon_RhydonDoll[]; +extern const u32 gDecorIconPalette_RhydonDoll[]; +extern const u32 gDecorIcon_LaprasDoll[]; +extern const u32 gDecorIconPalette_LaprasDoll[]; +extern const u32 gDecorIcon_VenusaurDoll[]; +extern const u32 gDecorIconPalette_VenusaurDoll[]; +extern const u32 gDecorIcon_CharizardDoll[]; +extern const u32 gDecorIconPalette_CharizardDoll[]; +extern const u32 gDecorIcon_BlastoiseDoll[]; +extern const u32 gDecorIconPalette_BlastoiseDoll[]; +extern const u32 gDecorIcon_WailmerDoll[]; +extern const u32 gDecorIconPalette_WailmerDoll[]; +extern const u32 gDecorIcon_RegirockDoll[]; +extern const u32 gDecorIconPalette_RegirockDoll[]; +extern const u32 gDecorIcon_RegiceDoll[]; +extern const u32 gDecorIconPalette_RegiceDoll[]; +extern const u32 gDecorIcon_RegisteelDoll[]; +extern const u32 gDecorIconPalette_RegisteelDoll[]; + extern const u32 gWallclock_Gfx[]; extern const u16 gWallclockMale_Pal[]; extern const u16 gWallclockFemale_Pal[]; diff --git a/include/item.h b/include/item.h index 881d3a3d4..87ff57bc7 100644 --- a/include/item.h +++ b/include/item.h @@ -1,26 +1,7 @@ #ifndef GUARD_ITEM_H #define GUARD_ITEM_H -// These constants are used in gItems -enum -{ - POCKET_NONE, - POCKET_ITEMS, - POCKET_POKE_BALLS, - POCKET_TM_HM, - POCKET_BERRIES, - POCKET_KEY_ITEMS, -}; - -enum -{ - ITEMS_POCKET, - BALLS_POCKET, - TMHM_POCKET, - BERRIES_POCKET, - KEYITEMS_POCKET, - POCKETS_COUNT -}; +#include "constants/item.h" typedef void (*ItemUseFunc)(u8); diff --git a/include/item_menu.h b/include/item_menu.h index 5580fa4b4..b1275549d 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -69,8 +69,8 @@ extern u16 gSpecialVar_ItemId; // Exported ROM declarations void sub_81AAC14(void); -void sub_81AAC50(void); -void sub_81AAC70(void); +void FavorLadyOpenBagMenu(void); +void QuizLadyOpenBagMenu(void); void sub_81AAC28(void); void sub_81AABB0(void); void SetInitialScrollAndCursorPositions(u8 pocketId); diff --git a/include/lilycove_lady.h b/include/lilycove_lady.h index f26285d68..1ec327be9 100644 --- a/include/lilycove_lady.h +++ b/include/lilycove_lady.h @@ -2,16 +2,16 @@ #define GUARD_LILYCOVE_LADY_H u8 GetLilycoveLadyId(void); -void SetLilycoveLady(void); -void sub_818DA78(void); -void sub_818DEF4(void); -void sub_818E564(void); -void sub_818E570(const LilycoveLady *lilycoveLady); +void InitLilycoveLady(void); +void ResetLilycoveLadyForRecordMix(void); +void FieldCallback_FavorLadyEnableScriptContexts(void); +void FieldCallback_QuizLadyEnableScriptContexts(void); +void QuizLadyClearQuestionForRecordMix(const LilycoveLady *lilycoveLady); bool8 GivePokeblockToContestLady(struct Pokeblock *pokeblock); -void sub_818E7E0(u8 *dest1, u8 *dest2); -void sub_818E81C(u8 *dest); -void sub_818E848(u8 *dest); -void sub_818E868(u8 *dest, u8 category); +void BufferContestLadyMonName(u8 *dest1, u8 *dest2); +void BufferContestLadyPlayerName(u8 *dest); +void BufferContestLadyLanguage(u8 *dest); +void BufferContestName(u8 *dest, u8 category); u8 sub_818E880(void); #endif //GUARD_LILYCOVE_LADY_H diff --git a/include/mon_markings.h b/include/mon_markings.h index 8e4ec58bd..241b31e01 100644 --- a/include/mon_markings.h +++ b/include/mon_markings.h @@ -1,17 +1,19 @@ #ifndef POKEEMERALD_MON_MARKINGS_H #define POKEEMERALD_MON_MARKINGS_H +#define NUM_MON_MARKINGS 4 + struct PokemonMarkMenu { /*0x0000*/ u16 baseTileTag; /*0x0002*/ u16 basePaletteTag; /*0x0004*/ u8 markings; // bit flags /*0x0005*/ s8 cursorPos; - /*0x0006*/ bool8 markingsArray[4]; + /*0x0006*/ bool8 markingsArray[NUM_MON_MARKINGS]; /*0x000A*/ u8 cursorBaseY; /*0x000B*/ bool8 spriteSheetLoadRequired; /*0x000C*/ struct Sprite *menuWindowSprites[2]; // upper and lower halves of menu window - /*0x0014*/ struct Sprite *menuMarkingSprites[4]; + /*0x0014*/ struct Sprite *menuMarkingSprites[NUM_MON_MARKINGS]; /*0x0024*/ struct Sprite *unkSprite; /*0x0028*/ struct Sprite *menuTextSprite; /*0x002C*/ const u8 *frameTiles; diff --git a/include/party_menu.h b/include/party_menu.h index c9843e484..d76e50788 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -26,6 +26,41 @@ enum PARTY_GIVE_ITEM, }; +enum +{ + TUTOR_MOVE_MEGA_PUNCH, + TUTOR_MOVE_SWORDS_DANCE, + TUTOR_MOVE_MEGA_KICK, + TUTOR_MOVE_BODY_SLAM, + TUTOR_MOVE_DOUBLE_EDGE, + TUTOR_MOVE_COUNTER, + TUTOR_MOVE_SEISMIC_TOSS, + TUTOR_MOVE_MIMIC, + TUTOR_MOVE_METRONOME, + TUTOR_MOVE_SOFT_BOILED, + TUTOR_MOVE_DREAM_EATER, + TUTOR_MOVE_THUNDER_WAVE, + TUTOR_MOVE_EXPLOSION, + TUTOR_MOVE_ROCK_SLIDE, + TUTOR_MOVE_SUBSTITUTE, + TUTOR_MOVE_DYNAMIC_PUNCH, + TUTOR_MOVE_ROLLOUT, + TUTOR_MOVE_PSYCH_UP, + TUTOR_MOVE_SNORE, + TUTOR_MOVE_ICY_WIND, + TUTOR_MOVE_ENDURE, + TUTOR_MOVE_MUD_SLAP, + TUTOR_MOVE_ICE_PUNCH, + TUTOR_MOVE_SWAGGER, + TUTOR_MOVE_SLEEP_TALK, + TUTOR_MOVE_SWIFT, + TUTOR_MOVE_DEFENSE_CURL, + TUTOR_MOVE_THUNDER_PUNCH, + TUTOR_MOVE_FIRE_PUNCH, + TUTOR_MOVE_FURY_CUTTER, + TUTOR_MOVE_COUNT +}; + struct Struct203CEC8 { MainCallback exitCallback; diff --git a/include/pokedex.h b/include/pokedex.h index a1b7378bf..532c823ee 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -4,6 +4,7 @@ extern u8 gUnusedPokedexU8; extern void (*gUnknown_030060B4)(void); +#define KANTO_DEX_COUNT 151 #define HOENN_DEX_COUNT 202 #define NATIONAL_DEX_COUNT 386 @@ -43,7 +44,7 @@ s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId); u16 CreateMonSpriteFromNationalDexNumber(u16, s16, s16, u16); bool16 HasAllHoennMons(void); void ResetPokedexScrollPositions(void); -u16 sub_80C0944(void); +bool16 HasAllMons(void); void CB2_Pokedex(void); #endif // GUARD_POKEDEX_H diff --git a/include/pokemon.h b/include/pokemon.h index 07bcff2e3..6a34e3cda 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -4,136 +4,6 @@ #include "constants/pokemon.h" #include "sprite.h" -#define MON_DATA_PERSONALITY 0 -#define MON_DATA_OT_ID 1 -#define MON_DATA_NICKNAME 2 -#define MON_DATA_LANGUAGE 3 -#define MON_DATA_SANITY_IS_BAD_EGG 4 -#define MON_DATA_SANITY_HAS_SPECIES 5 -#define MON_DATA_SANITY_IS_EGG 6 -#define MON_DATA_OT_NAME 7 -#define MON_DATA_MARKINGS 8 -#define MON_DATA_CHECKSUM 9 -#define MON_DATA_ENCRYPT_SEPARATOR 10 -#define MON_DATA_SPECIES 11 -#define MON_DATA_HELD_ITEM 12 -#define MON_DATA_MOVE1 13 -#define MON_DATA_MOVE2 14 -#define MON_DATA_MOVE3 15 -#define MON_DATA_MOVE4 16 -#define MON_DATA_PP1 17 -#define MON_DATA_PP2 18 -#define MON_DATA_PP3 19 -#define MON_DATA_PP4 20 -#define MON_DATA_PP_BONUSES 21 -#define MON_DATA_COOL 22 -#define MON_DATA_BEAUTY 23 -#define MON_DATA_CUTE 24 -#define MON_DATA_EXP 25 -#define MON_DATA_HP_EV 26 -#define MON_DATA_ATK_EV 27 -#define MON_DATA_DEF_EV 28 -#define MON_DATA_SPEED_EV 29 -#define MON_DATA_SPATK_EV 30 -#define MON_DATA_SPDEF_EV 31 -#define MON_DATA_FRIENDSHIP 32 -#define MON_DATA_SMART 33 -#define MON_DATA_POKERUS 34 -#define MON_DATA_MET_LOCATION 35 -#define MON_DATA_MET_LEVEL 36 -#define MON_DATA_MET_GAME 37 -#define MON_DATA_POKEBALL 38 -#define MON_DATA_HP_IV 39 -#define MON_DATA_ATK_IV 40 -#define MON_DATA_DEF_IV 41 -#define MON_DATA_SPEED_IV 42 -#define MON_DATA_SPATK_IV 43 -#define MON_DATA_SPDEF_IV 44 -#define MON_DATA_IS_EGG 45 -#define MON_DATA_ABILITY_NUM 46 -#define MON_DATA_TOUGH 47 -#define MON_DATA_SHEEN 48 -#define MON_DATA_OT_GENDER 49 -#define MON_DATA_COOL_RIBBON 50 -#define MON_DATA_BEAUTY_RIBBON 51 -#define MON_DATA_CUTE_RIBBON 52 -#define MON_DATA_SMART_RIBBON 53 -#define MON_DATA_TOUGH_RIBBON 54 -#define MON_DATA_STATUS 55 -#define MON_DATA_LEVEL 56 -#define MON_DATA_HP 57 -#define MON_DATA_MAX_HP 58 -#define MON_DATA_ATK 59 -#define MON_DATA_DEF 60 -#define MON_DATA_SPEED 61 -#define MON_DATA_SPATK 62 -#define MON_DATA_SPDEF 63 -#define MON_DATA_MAIL 64 -#define MON_DATA_SPECIES2 65 -#define MON_DATA_IVS 66 -#define MON_DATA_CHAMPION_RIBBON 67 -#define MON_DATA_WINNING_RIBBON 68 -#define MON_DATA_VICTORY_RIBBON 69 -#define MON_DATA_ARTIST_RIBBON 70 -#define MON_DATA_EFFORT_RIBBON 71 -#define MON_DATA_GIFT_RIBBON_1 72 -#define MON_DATA_GIFT_RIBBON_2 73 -#define MON_DATA_GIFT_RIBBON_3 74 -#define MON_DATA_GIFT_RIBBON_4 75 -#define MON_DATA_GIFT_RIBBON_5 76 -#define MON_DATA_GIFT_RIBBON_6 77 -#define MON_DATA_GIFT_RIBBON_7 78 -#define MON_DATA_FATEFUL_ENCOUNTER 79 -#define MON_DATA_OBEDIENCE 80 -#define MON_DATA_KNOWN_MOVES 81 -#define MON_DATA_RIBBON_COUNT 82 -#define MON_DATA_RIBBONS 83 -#define MON_DATA_ATK2 84 -#define MON_DATA_DEF2 85 -#define MON_DATA_SPEED2 86 -#define MON_DATA_SPATK2 87 -#define MON_DATA_SPDEF2 88 - -#define MAX_LEVEL 100 - -#define OT_ID_RANDOM_NO_SHINY 2 -#define OT_ID_PRESET 1 -#define OT_ID_PLAYER_ID 0 - -#define MON_GIVEN_TO_PARTY 0x0 -#define MON_GIVEN_TO_PC 0x1 -#define MON_CANT_GIVE 0x2 - -#define PLAYER_HAS_TWO_USABLE_MONS 0x0 -#define PLAYER_HAS_ONE_MON 0x1 -#define PLAYER_HAS_ONE_USABLE_MON 0x2 - -#define MON_MALE 0x00 -#define MON_FEMALE 0xFE -#define MON_GENDERLESS 0xFF - -#define FRIENDSHIP_EVENT_GROW_LEVEL 0x0 -#define FRIENDSHIP_EVENT_VITAMIN 0x1 // unused -#define FRIENDSHIP_EVENT_BATTLE_ITEM 0x2 // unused -#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 0x3 -#define FRIENDSHIP_EVENT_LEARN_TMHM 0x4 -#define FRIENDSHIP_EVENT_WALKING 0x5 -#define FRIENDSHIP_EVENT_FAINT_SMALL 0x6 -#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 0x7 -#define FRIENDSHIP_EVENT_FAINT_LARGE 0x8 - -#define STATUS_PRIMARY_NONE 0x0 -#define STATUS_PRIMARY_POISON 0x1 -#define STATUS_PRIMARY_PARALYSIS 0x2 -#define STATUS_PRIMARY_SLEEP 0x3 -#define STATUS_PRIMARY_FREEZE 0x4 -#define STATUS_PRIMARY_BURN 0x5 -#define STATUS_PRIMARY_POKERUS 0x6 -#define STATUS_PRIMARY_FAINTED 0x7 - -#define MAX_TOTAL_EVS 510 -#define UNOWN_FORM_COUNT 28 - struct PokemonSubstruct0 { u16 species; @@ -145,8 +15,8 @@ struct PokemonSubstruct0 struct PokemonSubstruct1 { - u16 moves[4]; - u8 pp[4]; + u16 moves[MAX_MON_MOVES]; + u8 pp[MAX_MON_MOVES]; }; struct PokemonSubstruct2 @@ -273,7 +143,7 @@ struct BattlePokemon /*0x06*/ u16 speed; /*0x08*/ u16 spAttack; /*0x0A*/ u16 spDefense; - /*0x0C*/ u16 moves[4]; + /*0x0C*/ u16 moves[MAX_MON_MOVES]; /*0x14*/ u32 hpIV:5; /*0x14*/ u32 attackIV:5; /*0x15*/ u32 defenseIV:5; @@ -287,7 +157,7 @@ struct BattlePokemon /*0x21*/ u8 type1; /*0x22*/ u8 type2; /*0x23*/ u8 unknown; - /*0x24*/ u8 pp[4]; + /*0x24*/ u8 pp[MAX_MON_MOVES]; /*0x28*/ u16 hp; /*0x2A*/ u8 level; /*0x2B*/ u8 friendship; @@ -348,13 +218,6 @@ struct BattleMove u8 flags; }; -#define FLAG_MAKES_CONTACT 0x1 -#define FLAG_PROTECT_AFFECTED 0x2 -#define FLAG_MAGICCOAT_AFFECTED 0x4 -#define FLAG_SNATCH_AFFECTED 0x8 -#define FLAG_MIRROR_MOVE_AFFECTED 0x10 -#define FLAG_KINGSROCK_AFFECTED 0x20 - struct SpindaSpot { u8 x, y; @@ -367,46 +230,6 @@ struct __attribute__((packed)) LevelUpMove u16 level:7; }; -enum -{ - GROWTH_MEDIUM_FAST, - GROWTH_ERRATIC, - GROWTH_FLUCTUATING, - GROWTH_MEDIUM_SLOW, - GROWTH_FAST, - GROWTH_SLOW -}; - -enum -{ - BODY_COLOR_RED, - BODY_COLOR_BLUE, - BODY_COLOR_YELLOW, - BODY_COLOR_GREEN, - BODY_COLOR_BLACK, - BODY_COLOR_BROWN, - BODY_COLOR_PURPLE, - BODY_COLOR_GRAY, - BODY_COLOR_WHITE, - BODY_COLOR_PINK -}; - -#define EVO_FRIENDSHIP 0x0001 // Pokémon levels up with friendship ≥ 220 -#define EVO_FRIENDSHIP_DAY 0x0002 // Pokémon levels up during the day with friendship ≥ 220 -#define EVO_FRIENDSHIP_NIGHT 0x0003 // Pokémon levels up at night with friendship ≥ 220 -#define EVO_LEVEL 0x0004 // Pokémon reaches the specified level -#define EVO_TRADE 0x0005 // Pokémon is traded -#define EVO_TRADE_ITEM 0x0006 // Pokémon is traded while it's holding the specified item -#define EVO_ITEM 0x0007 // specified item is used on Pokémon -#define EVO_LEVEL_ATK_GT_DEF 0x0008 // Pokémon reaches the specified level with attack > defense -#define EVO_LEVEL_ATK_EQ_DEF 0x0009 // Pokémon reaches the specified level with attack = defense -#define EVO_LEVEL_ATK_LT_DEF 0x000a // Pokémon reaches the specified level with attack < defense -#define EVO_LEVEL_SILCOON 0x000b // Pokémon reaches the specified level with a Silcoon personality value -#define EVO_LEVEL_CASCOON 0x000c // Pokémon reaches the specified level with a Cascoon personality value -#define EVO_LEVEL_NINJASK 0x000d // Pokémon reaches the specified level (special value for Ninjask) -#define EVO_LEVEL_SHEDINJA 0x000e // Pokémon reaches the specified level (special value for Shedinja) -#define EVO_BEAUTY 0x000f // Pokémon levels up with beauty ≥ specified value - struct Evolution { u16 method; @@ -414,8 +237,6 @@ struct Evolution u16 targetSpecies; }; -#define EVOS_PER_MON 5 - extern u8 gPlayerPartyCount; extern struct Pokemon gPlayerParty[PARTY_SIZE]; extern u8 gEnemyPartyCount; @@ -506,7 +327,7 @@ u8 CalculatePlayerPartyCount(void); u8 CalculateEnemyPartyCount(void); u8 GetMonsStateToDoubles(void); u8 GetMonsStateToDoubles_2(void); -u8 GetAbilityBySpecies(u16 species, bool8 abilityNum); +u8 GetAbilityBySpecies(u16 species, u8 abilityNum); u8 GetMonAbility(struct Pokemon *mon); void CreateSecretBaseEnemyParty(struct SecretBase *secretBaseRecord); u8 GetSecretBaseTrainerPicIndex(void); diff --git a/include/pokenav.h b/include/pokenav.h index db32e3029..b1c3287f1 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -56,6 +56,32 @@ enum POKENAV_MENU_E, }; +enum +{ + MC_HEADER_MR_STONE, + MC_HEADER_PROF_BIRCH, + MC_HEADER_BRENDAN, + MC_HEADER_MAY, + MC_HEADER_WALLY, + MC_HEADER_NORMAN, + MC_HEADER_MOM, + MC_HEADER_STEVEN, + MC_HEADER_SCOTT, + MC_HEADER_ROXANNE, + MC_HEADER_BRAWLY, + MC_HEADER_WATTSON, + MC_HEADER_FLANNERY, + MC_HEADER_WINONA, + MC_HEADER_TATE_LIZA, + MC_HEADER_JUAN, + MC_HEADER_SIDNEY, + MC_HEADER_PHOEBE, + MC_HEADER_GLACIA, + MC_HEADER_DRAKE, + MC_HEADER_WALLACE, + MC_HEADER_COUNT +}; + // pokenav.c void sub_81C7694(u32); u32 sub_81C76AC(void); @@ -109,15 +135,15 @@ bool32 sub_81C81D4(const struct BgTemplate *arg0, struct MatchCallListTemplate * void sub_81C8234(void); // pokenav_match_call_data.c -bool32 sub_81D17E8(u32 idx); +bool32 MatchCall_HasCheckPage(u32 idx); u8 MatchCallMapSecGetByIndex(u32 idx); bool32 sub_81D1BF8(u32 idx); bool32 MatchCallFlagGetByIndex(u32 idx); u32 MatchCall_GetRematchTableIdx(u32 idx); u32 GetTrainerIdxByRematchIdx(u32 rematchIdx); -int sub_81D1BD0(u32 idx); +int MatchCall_GetOverrideFacilityClass(u32 idx); void MatchCall_GetMessage(u32 idx, u8 *dest); -const u8 *sub_81D1B40(u32 idx, u32 offset); +const u8 *MatchCall_GetOverrideFlavorText(u32 idx, u32 offset); void sub_81D1A78(u32 idx, const u8 **desc, const u8 **name); // pokenav_main_menu.c diff --git a/include/script_menu.h b/include/script_menu.h index efb51870b..086ad147f 100644 --- a/include/script_menu.h +++ b/include/script_menu.h @@ -1,20 +1,20 @@ #ifndef GUARD_SCRIPT_MENU_H #define GUARD_SCRIPT_MENU_H -extern const u8 *const gUnknown_0858BAF0[]; +extern const u8 *const gStdStrings[]; -bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 var3, u8 var4); -bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 var3, u8 var4, u8 var5); -bool8 ScriptMenu_YesNo(u8 var1, u8 var2); -bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount); -bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3); +bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress); +bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 defaultChoice); +bool8 ScriptMenu_YesNo(u8 left, u8 top); +bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 columnCount); +bool8 ScriptMenu_ShowPokemonPic(u16 species, u8 x, u8 y); bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void); -int convert_pixel_width_to_tile_width(int); -u8 CreateWindowFromRect(u8, u8, u8, u8); -void ClearToTransparentAndRemoveWindow(u8); -int display_text_and_get_width(const u8*, int); -int sub_80E2D5C(int arg0, int tileWidth); -bool16 ScrSpecial_CreatePCMenu(void); +int ConvertPixelWidthToTileWidth(int width); +u8 CreateWindowFromRect(u8 x, u8 y, u8 width, u8 height); +void ClearToTransparentAndRemoveWindow(u8 windowId); +int DisplayTextAndGetWidth(const u8* str, int width); +int ScriptMenu_AdjustLeftCoordFromWidth(int left, int width); +bool16 ScriptMenu_CreatePCMultichoice(void); void ScriptMenu_DisplayPCStartupPrompt(void); #endif //GUARD_SCRIPT_MENU_H diff --git a/include/script_movement.h b/include/script_movement.h index 4c3fa6002..f9a97cf46 100644 --- a/include/script_movement.h +++ b/include/script_movement.h @@ -1,8 +1,8 @@ #ifndef GUARD_SCRIPT_MOVEMENT_H #define GUARD_SCRIPT_MOVEMENT_H -bool8 ScriptMovement_StartObjectMovementScript(u8, u8, u8, const u8 *); -bool8 ScriptMovement_IsObjectMovementFinished(u8, u8, u8); -void sub_80D338C(void); +bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGroup, const u8 *movementScript); +bool8 ScriptMovement_IsObjectMovementFinished(u8 localId, u8 mapNum, u8 mapGroup); +void ScriptMovement_UnfreezeEventObjects(void); #endif // GUARD_SCRIPT_MOVEMENT_H diff --git a/include/slot_machine.h b/include/slot_machine.h index d441b7411..1b22e165f 100644 --- a/include/slot_machine.h +++ b/include/slot_machine.h @@ -4,6 +4,7 @@ #define NUM_REELS 3 #define REEL_NUM_TAGS 21 #define REEL_TAG_HEIGHT 24 +#define SLOT_MACHINE_COUNT 12 // Lucky Flags #define LUCKY_BIAS_REPLAY (1 << 0) diff --git a/include/strings.h b/include/strings.h index 7e7fcd322..c1414269a 100644 --- a/include/strings.h +++ b/include/strings.h @@ -758,31 +758,29 @@ extern const u8 BattleFrontier_Lounge2_Text_26174D[]; extern const u8 BattleFrontier_Lounge2_Text_2617F9[]; extern const u8 BattleFrontier_Lounge2_Text_2618C4[]; -extern const u8 BattleFrontier_Lounge5_Text_26468D[]; -extern const u8 BattleFrontier_Lounge5_Text_2646E5[]; -extern const u8 BattleFrontier_Lounge5_Text_264741[]; -extern const u8 BattleFrontier_Lounge5_Text_2647A4[]; -extern const u8 BattleFrontier_Lounge5_Text_2647FC[]; -extern const u8 BattleFrontier_Lounge5_Text_264858[]; -extern const u8 BattleFrontier_Lounge5_Text_2648BE[]; -extern const u8 BattleFrontier_Lounge5_Text_264916[]; -extern const u8 BattleFrontier_Lounge5_Text_264972[]; -extern const u8 BattleFrontier_Lounge5_Text_2649D5[]; -extern const u8 BattleFrontier_Lounge5_Text_264A3F[]; -extern const u8 BattleFrontier_Lounge5_Text_264A9B[]; -extern const u8 BattleFrontier_Lounge5_Text_264AF3[]; -extern const u8 BattleFrontier_Lounge5_Text_264B5D[]; -extern const u8 BattleFrontier_Lounge5_Text_2648BE[]; -extern const u8 BattleFrontier_Lounge5_Text_264BC3[]; -extern const u8 BattleFrontier_Lounge5_Text_264C36[]; -extern const u8 BattleFrontier_Lounge5_Text_2648BE[]; -extern const u8 BattleFrontier_Lounge5_Text_264C95[]; -extern const u8 BattleFrontier_Lounge5_Text_264D01[]; -extern const u8 BattleFrontier_Lounge5_Text_264D6B[]; -extern const u8 BattleFrontier_Lounge5_Text_264DD7[]; -extern const u8 BattleFrontier_Lounge5_Text_264E33[]; -extern const u8 BattleFrontier_Lounge5_Text_264E8F[]; -extern const u8 BattleFrontier_Lounge5_Text_2648BE[]; +// Battle Frontier Nature Girl +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlHardy[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlLonely[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlBrave[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlAdamant[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlNaughty[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlBold[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlDocileNaiveQuietQuirky[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlRelaxed[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlImpish[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlLax[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlTimid[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlHasty[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlSerious[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlJolly[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlModest[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlMild[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlBashful[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlRash[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlCalm[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlGentle[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlSassy[]; +extern const u8 BattleFrontier_Lounge5_Text_NatureGirlCareful[]; extern const u8 BattleFrontier_Lounge3_Text_262261[]; extern const u8 BattleFrontier_Lounge3_Text_26230D[]; @@ -1024,81 +1022,76 @@ extern const u8 gText_PokenavRibbons_RibbonListButtons[]; extern const u8 gText_PokenavRibbons_RibbonCheckButtons[]; extern const u8 gText_Number2[]; -extern const u8 gUnknown_085EAD37[]; -extern const u8 gUnknown_085EAD41[]; -extern const u8 gUnknown_085EAD67[]; -extern const u8 gUnknown_085EAD6D[]; -extern const u8 gUnknown_085EAD72[]; -extern const u8 gUnknown_085EAD84[]; -extern const u8 gUnknown_085EAD96[]; -extern const u8 gUnknown_085EADA4[]; -extern const u8 gUnknown_085EADB5[]; -extern const u8 gUnknown_085EADC4[]; -extern const u8 gUnknown_085EADD5[]; -extern const u8 gUnknown_085EADE7[]; -extern const u8 gUnknown_085EADF9[]; -extern const u8 gUnknown_085EAE04[]; -extern const u8 gUnknown_085EAE12[]; -extern const u8 gUnknown_085EAE1B[]; -extern const u8 gUnknown_085EAE27[]; -extern const u8 gUnknown_085EAE2C[]; -extern const u8 gUnknown_085EAE31[]; -extern const u8 gUnknown_085EAE35[]; -extern const u8 gUnknown_085EAE39[]; -extern const u8 gUnknown_085EAE3D[]; -extern const u8 gUnknown_085EAE41[]; -extern const u8 gUnknown_085EAD5F[]; -extern const u8 gUnknown_085EAE53[]; -extern const u8 gUnknown_085EAE5A[]; +extern const u8 gText_Petalburg[]; +extern const u8 gText_Slateport[]; +extern const u8 gText_Enter2[]; +extern const u8 gText_Info2[]; +extern const u8 gText_WhatsAContest[]; +extern const u8 gText_TypesOfContests[]; +extern const u8 gText_Ranks[]; +extern const u8 gText_Decoration2[]; +extern const u8 gText_PackUp[]; +extern const u8 gText_Registry[]; +extern const u8 gText_Information[]; +extern const u8 gText_Mach[]; +extern const u8 gText_Acro[]; +extern const u8 gText_Psn[]; +extern const u8 gText_Par[]; +extern const u8 gText_Slp[]; +extern const u8 gText_Brn[]; +extern const u8 gText_Frz[]; +extern const u8 gText_Dewford[]; +extern const u8 gText_SawIt[]; +extern const u8 gText_NotYet[]; extern const u8 gText_Yes[]; extern const u8 gText_No[]; -extern const u8 gUnknown_085EAEA2[]; -extern const u8 gUnknown_085EAEAC[]; -extern const u8 gUnknown_0827ECBC[]; -extern const u8 gUnknown_0827ECC3[]; -extern const u8 gUnknown_0827ECCD[]; -extern const u8 gUnknown_0827ECD5[]; -extern const u8 gUnknown_0827ECDD[]; -extern const u8 gUnknown_0827ECE3[]; -extern const u8 gUnknown_0827ECEB[]; -extern const u8 gUnknown_0827ECF2[]; -extern const u8 gUnknown_0827ECF8[]; -extern const u8 gUnknown_0827ED00[]; -extern const u8 gUnknown_0827ED06[]; -extern const u8 gUnknown_0827ED10[]; -extern const u8 gUnknown_0827ED18[]; -extern const u8 gUnknown_0827ED22[]; -extern const u8 gUnknown_0827ED2C[]; -extern const u8 gUnknown_0827ED36[]; -extern const u8 gUnknown_0827ED40[]; -extern const u8 gUnknown_0827ED46[]; -extern const u8 gUnknown_0827ED4F[]; -extern const u8 gUnknown_0827ED59[]; -extern const u8 gUnknown_0827ED65[]; -extern const u8 gUnknown_0827ED70[]; -extern const u8 gUnknown_0827ED74[]; -extern const u8 gUnknown_0827ED78[]; -extern const u8 gUnknown_0827ED80[]; -extern const u8 gUnknown_0827ED95[]; -extern const u8 gUnknown_0827EDAA[]; -extern const u8 gUnknown_0827EDB5[]; -extern const u8 gUnknown_0827EDBA[]; -extern const u8 gUnknown_0827EDC1[]; -extern const u8 gUnknown_0827EDC9[]; -extern const u8 gUnknown_0827EDD5[]; -extern const u8 gUnknown_0827EDE4[]; -extern const u8 gUnknown_0827EDF0[]; -extern const u8 gUnknown_0827EDF5[]; -extern const u8 gUnknown_0827EDF7[]; -extern const u8 gUnknown_0827EDF9[]; -extern const u8 gUnknown_0827EDFB[]; -extern const u8 gUnknown_0827EDFD[]; -extern const u8 gUnknown_0827EDFF[]; -extern const u8 gUnknown_0827EE01[]; -extern const u8 gUnknown_0827EE03[]; -extern const u8 gUnknown_0827EE05[]; -extern const u8 gUnknown_0827EE07[]; -extern const u8 gUnknown_0827EE09[]; +extern const u8 gText_Challenge[]; +extern const u8 gText_Info3[]; +extern const u8 gTrickHouse_Mechadoll_Oddish[]; +extern const u8 gTrickHouse_Mechadoll_Poochyena[]; +extern const u8 gTrickHouse_Mechadoll_Taillow[]; +extern const u8 gTrickHouse_Mechadoll_Azurill[]; +extern const u8 gTrickHouse_Mechadoll_Lotad[]; +extern const u8 gTrickHouse_Mechadoll_Wingull[]; +extern const u8 gTrickHouse_Mechadoll_Dustox[]; +extern const u8 gTrickHouse_Mechadoll_Zubat[]; +extern const u8 gTrickHouse_Mechadoll_Nincada[]; +extern const u8 gTrickHouse_Mechadoll_Ralts[]; +extern const u8 gTrickHouse_Mechadoll_Zigzagoon[]; +extern const u8 gTrickHouse_Mechadoll_Slakoth[]; +extern const u8 gTrickHouse_Mechadoll_Poochyena2[]; +extern const u8 gTrickHouse_Mechadoll_Shroomish[]; +extern const u8 gTrickHouse_Mechadoll_Zigzagoon2[]; +extern const u8 gTrickHouse_Mechadoll_Poochyena3[]; +extern const u8 gTrickHouse_Mechadoll_Zubat2[]; +extern const u8 gTrickHouse_Mechadoll_Carvanha[]; +extern const u8 gTrickHouse_Mechadoll_BurnHeal[]; +extern const u8 gTrickHouse_Mechadoll_HarborMail[]; +extern const u8 gTrickHouse_Mechadoll_SamePrice[]; +extern const u8 gTrickHouse_Mechadoll_60Yen[]; +extern const u8 gTrickHouse_Mechadoll_55Yen[]; +extern const u8 gTrickHouse_Mechadoll_Nothing[]; +extern const u8 gTrickHouse_Mechadoll_CostMore[]; +extern const u8 gTrickHouse_Mechadoll_CostLess[]; +extern const u8 gTrickHouse_Mechadoll_SamePrice2[]; +extern const u8 gTrickHouse_Mechadoll_Male[]; +extern const u8 gTrickHouse_Mechadoll_Female[]; +extern const u8 gTrickHouse_Mechadoll_Neither[]; +extern const u8 gTrickHouse_Mechadoll_ElderlyMen[]; +extern const u8 gTrickHouse_Mechadoll_ElderlyLadies[]; +extern const u8 gTrickHouse_Mechadoll_SameNumber[]; +extern const u8 gTrickHouse_Mechadoll_None[]; +extern const u8 gTrickHouse_Mechadoll_One[]; +extern const u8 gTrickHouse_Mechadoll_Two[]; +extern const u8 gTrickHouse_Mechadoll_Two2[]; +extern const u8 gTrickHouse_Mechadoll_Three[]; +extern const u8 gTrickHouse_Mechadoll_Four[]; +extern const u8 gTrickHouse_Mechadoll_Six[]; +extern const u8 gTrickHouse_Mechadoll_Seven[]; +extern const u8 gTrickHouse_Mechadoll_Eight[]; +extern const u8 gTrickHouse_Mechadoll_Six2[]; +extern const u8 gTrickHouse_Mechadoll_Seven2[]; +extern const u8 gTrickHouse_Mechadoll_Eight2[]; // Pokedex strings extern const u8 gUnknown_085E87A5[]; @@ -1149,65 +1142,64 @@ extern const u8 gText_DexEmptyString[]; extern const u8 gText_DexSearchDontSpecify[]; extern const u8 gText_DexSearchTypeNone[]; -extern const u8 gUnknown_085EAEC3[]; -extern const u8 gUnknown_085EAED6[]; -extern const u8 gUnknown_085EAEE6[]; -extern const u8 gUnknown_085EAEF6[]; -extern const u8 gUnknown_085EAF02[]; -extern const u8 gUnknown_085EAF0E[]; -extern const u8 gUnknown_085EAF1B[]; -extern const u8 gUnknown_085EAF24[]; -extern const u8 gUnknown_085EAF2F[]; -extern const u8 gUnknown_085EAF34[]; -extern const u8 gUnknown_085EAF3E[]; -extern const u8 gUnknown_085EAF4B[]; -extern const u8 gUnknown_085EAF58[]; -extern const u8 gUnknown_085EAF65[]; -extern const u8 gUnknown_085EAF70[]; -extern const u8 gUnknown_085EAF7D[]; -extern const u8 gUnknown_085EAF87[]; -extern const u8 gUnknown_085EAF93[]; -extern const u8 gUnknown_085EAF9F[]; -extern const u8 gUnknown_085EAFAB[]; -extern const u8 gUnknown_085EAFB6[]; -extern const u8 gUnknown_085EAFCF[]; -extern const u8 gUnknown_085EAFE8[]; -extern const u8 gUnknown_085EB089[]; -extern const u8 gUnknown_085EB09C[]; -extern const u8 gUnknown_085EB0AF[]; -extern const u8 gUnknown_085EB0C2[]; -extern const u8 gUnknown_085EB0D5[]; -extern const u8 gUnknown_085EB002[]; -extern const u8 gUnknown_085EB017[]; -extern const u8 gUnknown_085EB02A[]; -extern const u8 gUnknown_085EB034[]; +extern const u8 gText_FreshWaterAndPrice[]; +extern const u8 gText_SodaPopAndPrice[]; +extern const u8 gText_LemonadeAndPrice[]; +extern const u8 gText_HowToRide[]; +extern const u8 gText_HowToTurn[]; +extern const u8 gText_SandySlopes[]; +extern const u8 gText_Wheelies[]; +extern const u8 gText_BunnyHops[]; +extern const u8 gText_Jump[]; +extern const u8 gText_Satisfied[]; +extern const u8 gText_Dissatisfied[]; +extern const u8 gText_DeepSeaTooth[]; +extern const u8 gText_DeepSeaScale[]; +extern const u8 gText_BlueFlute2[]; +extern const u8 gText_YellowFlute2[]; +extern const u8 gText_RedFlute2[]; +extern const u8 gText_WhiteFlute2[]; +extern const u8 gText_BlackFlute2[]; +extern const u8 gText_GlassChair[]; +extern const u8 gText_GlassDesk[]; +extern const u8 gText_TreeckoDollAndPrice[]; +extern const u8 gText_TorchicDollAndPrice[]; +extern const u8 gText_MudkipDollAndPrice[]; +extern const u8 gText_TM32AndPrice[]; +extern const u8 gText_TM29AndPrice[]; +extern const u8 gText_TM35AndPrice[]; +extern const u8 gText_TM24AndPrice[]; +extern const u8 gText_TM13AndPrice[]; +extern const u8 gText_50CoinsAndPrice[]; +extern const u8 gText_500CoinsAndPrice[]; +extern const u8 gText_Excellent2[]; +extern const u8 gText_NotSoGood[]; extern const u8 gText_LilycoveCity[]; -extern const u8 gUnknown_085EB07E[]; -extern const u8 gUnknown_085EB084[]; -extern const u8 gUnknown_085EB040[]; -extern const u8 gUnknown_085EB04A[]; -extern const u8 gUnknown_085EB057[]; -extern const u8 gUnknown_085EB062[]; +extern const u8 gText_Right[]; +extern const u8 gText_Left[]; +extern const u8 gText_RedShard[]; +extern const u8 gText_YellowShard[]; +extern const u8 gText_BlueShard[]; +extern const u8 gText_GreenShard[]; extern const u8 gText_Opponent[]; extern const u8 gText_Tourney_Tree[]; extern const u8 gText_ReadyToStart[]; -extern const u8 gUnknown_085EB5BC[]; -extern const u8 gUnknown_085EB5C3[]; -extern const u8 gUnknown_085EB5C8[]; -extern const u8 gUnknown_085EB29A[]; -extern const u8 gUnknown_085EB2A3[]; -extern const u8 gUnknown_085EB372[]; -extern const u8 gUnknown_085EB37F[]; -extern const u8 gUnknown_085EB389[]; -extern const u8 gUnknown_085EAE6E[]; -extern const u8 gUnknown_085EAE7C[]; -extern const u8 gUnknown_085EAE8A[]; -extern const u8 gUnknown_085EAD6D[]; -extern const u8 gUnknown_085EB397[]; -extern const u8 gUnknown_085EB3A4[]; -extern const u8 gUnknown_085EB3B1[]; -extern const u8 gUnknown_085EB3D4[]; -extern const u8 gUnknown_085EB3C6[]; +extern const u8 gText_Record2[]; +extern const u8 gText_Rest[]; +extern const u8 gText_Retire[]; +extern const u8 gText_RedTent[]; +extern const u8 gText_BlueTent[]; +extern const u8 gText_TradeCenter[]; +extern const u8 gText_Colosseum[]; +extern const u8 gText_RecordCorner[]; +extern const u8 gText_SingleBattle[]; +extern const u8 gText_DoubleBattle[]; +extern const u8 gText_MultiBattle[]; +extern const u8 gText_BerryCrush3[]; +extern const u8 gText_PokemonJump[]; +extern const u8 gText_DodrioBerryPicking[]; +extern const u8 gText_JoinGroup[]; +extern const u8 gText_BecomeLeader[]; extern const u8 gText_NormalRank[]; extern const u8 gText_SuperRank[]; extern const u8 gText_HyperRank[]; @@ -1219,56 +1211,56 @@ extern const u8 gText_AboutE_Mode[]; extern const u8 gText_AboutG_Mode[]; extern const u8 gText_E_Mode[]; extern const u8 gText_G_Mode[]; -extern const u8 gUnknown_085EB278[]; -extern const u8 gUnknown_085EB28A[]; -extern const u8 gUnknown_085EB290[]; -extern const u8 gUnknown_085EB295[]; -extern const u8 gUnknown_085EB2E4[]; -extern const u8 gUnknown_085EB2F0[]; -extern const u8 gUnknown_085EB2FC[]; -extern const u8 gUnknown_085EB3DF[]; -extern const u8 gUnknown_085EB3EA[]; -extern const u8 gUnknown_085EB3F1[]; -extern const u8 gUnknown_085EB3FC[]; -extern const u8 gUnknown_085EB40A[]; -extern const u8 gUnknown_085EB415[]; -extern const u8 gUnknown_085EB41D[]; -extern const u8 gUnknown_085EB424[]; -extern const u8 gUnknown_085EB45C[]; -extern const u8 gUnknown_085EB469[]; -extern const u8 gUnknown_085EB475[]; -extern const u8 gUnknown_085EB482[]; -extern const u8 gUnknown_085EB42F[]; -extern const u8 gUnknown_085EB43A[]; -extern const u8 gUnknown_085EB444[]; -extern const u8 gUnknown_085EB451[]; -extern const u8 gUnknown_085EB48E[]; -extern const u8 gUnknown_085EB496[]; -extern const u8 gUnknown_085EB4A3[]; -extern const u8 gUnknown_085EB4AD[]; -extern const u8 gUnknown_085EB4B9[]; -extern const u8 gUnknown_085EB4C7[]; -extern const u8 gUnknown_085EB4D4[]; -extern const u8 gUnknown_085EB4E0[]; -extern const u8 gUnknown_085EB532[]; -extern const u8 gUnknown_085EB543[]; -extern const u8 gUnknown_085EB555[]; -extern const u8 gUnknown_085EB563[]; -extern const u8 gUnknown_085EB56E[]; -extern const u8 gUnknown_085EB57E[]; -extern const u8 gUnknown_085EB589[]; -extern const u8 gUnknown_085EB5B6[]; -extern const u8 gUnknown_085EE14B[]; -extern const u8 gUnknown_085EE14F[]; -extern const u8 gUnknown_085EB2FF[]; -extern const u8 gUnknown_085EB310[]; -extern const u8 gUnknown_085EB317[]; -extern const u8 gUnknown_085EB31F[]; +extern const u8 gText_Blank[]; +extern const u8 gText_5BP[]; +extern const u8 gText_10BP[]; +extern const u8 gText_15BP[]; +extern const u8 gText_ClawFossil[]; +extern const u8 gText_RootFossil[]; +extern const u8 gText_No4[]; +extern const u8 gText_TwoStyles[]; +extern const u8 gText_Lv50_3[]; +extern const u8 gText_OpenLevel2[]; +extern const u8 gText_MonTypeAndNo[]; +extern const u8 gText_HoldItems[]; +extern const u8 gText_Symbols2[]; +extern const u8 gText_Record3[]; +extern const u8 gText_BattlePts[]; +extern const u8 gText_BattleRules[]; +extern const u8 gText_JudgeMind[]; +extern const u8 gText_JudgeSkill[]; +extern const u8 gText_JudgeBody[]; +extern const u8 gText_TowerInfo[]; +extern const u8 gText_BattleMon[]; +extern const u8 gText_BattleSalon[]; +extern const u8 gText_MultiLink2[]; +extern const u8 gText_Matchup[]; +extern const u8 gText_TourneyTree[]; +extern const u8 gText_DoubleKO[]; +extern const u8 gText_BasicRules[]; +extern const u8 gText_SwapPartners[]; +extern const u8 gText_SwapNumber[]; +extern const u8 gText_SwapNotes[]; +extern const u8 gText_OpenLevel3[]; +extern const u8 gText_PyramidPokemon[]; +extern const u8 gText_PyramidTrainers[]; +extern const u8 gText_PyramidMaze[]; +extern const u8 gText_BattleBag2[]; +extern const u8 gText_PokenavAndBag[]; +extern const u8 gText_HeldItems[]; +extern const u8 gText_PokemonOrder[]; +extern const u8 gText_GoOn[]; +extern const u8 gText_Red[]; +extern const u8 gText_Blue[]; +extern const u8 gText_IllBattleNow[]; +extern const u8 gText_IWon[]; +extern const u8 gText_ILost[]; +extern const u8 gText_IWontTell[]; extern const u8 gText_CaveOfOrigin[]; extern const u8 gText_MtPyre[]; extern const u8 gText_SkyPillar[]; extern const u8 gText_DontRemember[]; -extern const u8 gUnknown_085EB597[]; +extern const u8 gText_BattlePokemon[]; extern const u8 gText_NormalTagMatch[]; extern const u8 gText_VarietyTagMatch[]; extern const u8 gText_UniqueTagMatch[]; @@ -1281,29 +1273,15 @@ extern const u8 gText_TrainerHill2F[]; extern const u8 gText_TrainerHill3F[]; extern const u8 gText_TrainerHill4F[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_277F1B[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_277F5A[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_277F96[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_27889C[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_27879F[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_2787D5[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_278831[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_27889C[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_27879F[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_2787D5[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_2787FC[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_27889C[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_27879F[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_2787D5[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_278831[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_2787FC[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_27889C[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_277F1B[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_277F5A[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_27889C[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_27879F[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_2787D5[]; -extern const u8 OldaleTown_PokemonCenter_2F_Text_27889C[]; +// Cable Club multichoice text +extern const u8 CableClub_Text_TradeUsingLinkCable[]; +extern const u8 CableClub_Text_BattleUsingLinkCable[]; +extern const u8 CableClub_Text_RecordCornerUsingLinkCable[]; +extern const u8 CableClub_Text_CancelSelectedItem[]; +extern const u8 CableClub_Text_YouMayTradeHere[]; +extern const u8 CableClub_Text_YouMayBattleHere[]; +extern const u8 CableClub_Text_CanMixRecords[]; +extern const u8 CableClub_Text_CanMakeBerryPowder[]; // Frontier records. extern const u8 gText_WinStreak[]; @@ -2744,6 +2722,31 @@ extern const u8 gText_JumpsInARow[]; extern const u8 gText_BestScore2[]; extern const u8 gText_ExcellentsInARow[]; +// Lilycove Lady +extern const u8 gText_ContestLady_Handsome[]; +extern const u8 gText_ContestLady_Vinny[]; +extern const u8 gText_ContestLady_Moreme[]; +extern const u8 gText_ContestLady_Ironhard[]; +extern const u8 gText_ContestLady_Muscle[]; +extern const u8 gText_ContestLady_Coolness[]; +extern const u8 gText_ContestLady_Beauty[]; +extern const u8 gText_ContestLady_Cuteness[]; +extern const u8 gText_ContestLady_Smartness[]; +extern const u8 gText_ContestLady_Toughness[]; +extern const u8 gText_QuizLady_Lady[]; +extern const u8 gText_FavorLady_Slippery[]; +extern const u8 gText_FavorLady_Roundish[]; +extern const u8 gText_FavorLady_Whamish[]; +extern const u8 gText_FavorLady_Shiny[]; +extern const u8 gText_FavorLady_Sticky[]; +extern const u8 gText_FavorLady_Pointy[]; + +extern const u8 gText_CoolnessContest[]; +extern const u8 gText_BeautyContest[]; +extern const u8 gText_CutenessContest[]; +extern const u8 gText_SmartnessContest[]; +extern const u8 gText_ToughnessContest[]; + // Pokenav Match Call extern const u8 gText_CallCantBeMadeHere[]; extern const u8 gText_NumberRegistered[]; diff --git a/include/task.h b/include/task.h index 4852571b4..d0ca34f7f 100644 --- a/include/task.h +++ b/include/task.h @@ -5,6 +5,7 @@ #define TAIL_SENTINEL 0xFF #define NUM_TASKS 16 +#define NUM_TASK_DATA 16 typedef void (*TaskFunc)(u8 taskId); @@ -15,7 +16,7 @@ struct Task u8 prev; u8 next; u8 priority; - s16 data[16]; + s16 data[NUM_TASK_DATA]; }; extern struct Task gTasks[]; diff --git a/include/text.h b/include/text.h index d3ff663bb..e37773475 100644 --- a/include/text.h +++ b/include/text.h @@ -114,6 +114,21 @@ // 0x7 #define TEXT_COLOR_BLUE 0x8 +#define PLACEHOLDER_ID_UNKNOWN 0x0 +#define PLACEHOLDER_ID_PLAYER 0x1 +#define PLACEHOLDER_ID_STRING_VAR_1 0x2 +#define PLACEHOLDER_ID_STRING_VAR_2 0x3 +#define PLACEHOLDER_ID_STRING_VAR_3 0x4 +#define PLACEHOLDER_ID_KUN 0x5 +#define PLACEHOLDER_ID_RIVAL 0x6 +#define PLACEHOLDER_ID_VERSION 0x7 +#define PLACEHOLDER_ID_AQUA 0x8 +#define PLACEHOLDER_ID_MAGMA 0x9 +#define PLACEHOLDER_ID_ARCHIE 0xA +#define PLACEHOLDER_ID_MAXIE 0xB +#define PLACEHOLDER_ID_KYOGRE 0xC +#define PLACEHOLDER_ID_GROUDON 0xD + // battle placeholders are located in battle_message.h #define NUM_TEXT_PRINTERS 32 diff --git a/include/trainer_hill.h b/include/trainer_hill.h index e605ac654..31480287a 100644 --- a/include/trainer_hill.h +++ b/include/trainer_hill.h @@ -1,6 +1,52 @@ #ifndef GUARD_TRAINER_HILL_H #define GUARD_TRAINER_HILL_H +#define HILL_TRAINER_NAME_LENGTH 11 + +struct TrainerHillTrainer +{ + u8 name[HILL_TRAINER_NAME_LENGTH]; + u8 facilityClass; + u32 unused; + u16 speechBefore[6]; + u16 speechWin[6]; + u16 speechLose[6]; + u16 speechAfter[6]; + struct BattleTowerPokemon mons[PARTY_SIZE]; +}; + +struct TrHillRoomTrainers +{ + u8 name[2][HILL_TRAINER_NAME_LENGTH]; + u8 facilityClass[2]; +}; + +struct TrHillDisplay +{ + u8 data[0x100]; + u16 unk3A0[16]; + u8 coords[2]; // x first 4 bits, y last 4 bits + u8 direction; // array of 4 bits for each trainer + u8 range; // array of 4 bits for each trainer +}; + +struct TrHillFloor +{ + u8 unk0; + u8 unk1; + struct TrainerHillTrainer trainers[2]; + struct TrHillDisplay display; +}; + +struct TrHillTag +{ + u8 unkField_0; + u8 unused1; + u8 numFloors; + u32 checksum; + struct TrHillFloor floors[0]; +}; + extern u32 *gTrainerHillVBlankCounter; void CallTrainerHillFunction(void); |