diff --git a/common_syms/field_specials.txt b/common_syms/field_specials.txt index 25d874a65..7adb3f669 100644 --- a/common_syms/field_specials.txt +++ b/common_syms/field_specials.txt @@ -1 +1 @@ -gUnknown_030061D0 +gScrollableMultichoice_ListMenuTemplate diff --git a/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc b/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc index 003582e1f..1860efd16 100644 --- a/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc @@ -318,7 +318,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_250B91:: @ 8250B91 BattleFrontier_BattlePyramidLobby_EventScript_250BA4:: @ 8250BA4 copyvar VAR_0x8004, VAR_RESULT - special sub_813B968 + special GetBattlePyramidHint switch VAR_RESULT case 0, BattleFrontier_BattlePyramidLobby_EventScript_250C8E case 1, BattleFrontier_BattlePyramidLobby_EventScript_250C97 diff --git a/data/maps/BattleFrontier_BattleTowerBattleRoom2/scripts.inc b/data/maps/BattleFrontier_BattleTowerBattleRoom2/scripts.inc index c2659b407..ecd7ac78a 100644 --- a/data/maps/BattleFrontier_BattleTowerBattleRoom2/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerBattleRoom2/scripts.inc @@ -25,7 +25,7 @@ BattleFrontier_BattleTowerBattleRoom2_EventScript_248F29:: @ 8248F29 return BattleFrontier_BattleTowerBattleRoom2_EventScript_248F2F:: @ 8248F2F - special sub_813A76C + special SetBattleTowerLinkPlayerGfx return BattleFrontier_BattleTowerBattleRoom2_MapScript2_248F33: @ 8248F33 diff --git a/data/maps/BattleFrontier_BattleTowerCorridor2/scripts.inc b/data/maps/BattleFrontier_BattleTowerCorridor2/scripts.inc index 5b4732ffb..6e3e05959 100644 --- a/data/maps/BattleFrontier_BattleTowerCorridor2/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerCorridor2/scripts.inc @@ -25,7 +25,7 @@ BattleFrontier_BattleTowerCorridor2_EventScript_248D8B:: @ 8248D8B return BattleFrontier_BattleTowerCorridor2_EventScript_248D91:: @ 8248D91 - special sub_813A76C + special SetBattleTowerLinkPlayerGfx return BattleFrontier_BattleTowerCorridor2_MapScript2_248D95: @ 8248D95 diff --git a/data/maps/BattleFrontier_BattleTowerElevator/scripts.inc b/data/maps/BattleFrontier_BattleTowerElevator/scripts.inc index 0e94d9154..f84ec194d 100644 --- a/data/maps/BattleFrontier_BattleTowerElevator/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerElevator/scripts.inc @@ -12,9 +12,9 @@ BattleFrontier_BattleTowerElevator_EventScript_2419F0:: @ 82419F0 applymovement 1, BattleFrontier_BattleTowerElevator_Movement_241A86 applymovement EVENT_OBJ_ID_PLAYER, BattleFrontier_BattleTowerElevator_Movement_241A8A waitmovement 0 - special sub_813A080 + special BufferBattleTowerElevatorFloors waitse - special ShakeScreenInElevator + special MoveElevator waitstate delay 48 applymovement 1, BattleFrontier_BattleTowerElevator_Movement_241A8E diff --git a/data/maps/BattleFrontier_Lounge1/scripts.inc b/data/maps/BattleFrontier_Lounge1/scripts.inc index 581cbd31e..dee3fd431 100644 --- a/data/maps/BattleFrontier_Lounge1/scripts.inc +++ b/data/maps/BattleFrontier_Lounge1/scripts.inc @@ -31,7 +31,7 @@ BattleFrontier_Lounge1_EventScript_25E7BF:: @ 825E7BF specialvar VAR_RESULT, ScriptGetPartyMonSpecies compare VAR_RESULT, SPECIES_EGG goto_if_eq BattleFrontier_Lounge1_EventScript_25E7FF - special sub_8139D98 + special BufferVarsForIVRater compare VAR_0x8005, 90 goto_if_le BattleFrontier_Lounge1_EventScript_25E87F compare VAR_0x8005, 120 diff --git a/data/maps/BattleFrontier_Lounge7/scripts.inc b/data/maps/BattleFrontier_Lounge7/scripts.inc index 4ea73e135..5b3f88dcf 100644 --- a/data/maps/BattleFrontier_Lounge7/scripts.inc +++ b/data/maps/BattleFrontier_Lounge7/scripts.inc @@ -230,7 +230,7 @@ BattleFrontier_Lounge7_EventScript_26562A:: @ 826562A end BattleFrontier_Lounge7_EventScript_265635:: @ 8265635 - special sub_813ADB8 + special CloseBattleFrontierTutorWindow special CloseBattlePointsWindow msgbox BattleFrontier_Lounge7_Text_265A0E, MSGBOX_DEFAULT release @@ -261,10 +261,10 @@ BattleFrontier_Lounge7_EventScript_26564F:: @ 826564F BattleFrontier_Lounge7_EventScript_265696:: @ 8265696 msgbox BattleFrontier_Lounge7_Text_26595A, MSGBOX_DEFAULT - special sub_813AEB4 + special GetBattleFrontierTutorMoveIndex fadescreen 1 special CloseBattlePointsWindow - special sub_813ADB8 + special CloseBattleFrontierTutorWindow special sub_81B892C waitstate compare VAR_RESULT, 0 diff --git a/data/maps/LilycoveCity_DepartmentStoreElevator/scripts.inc b/data/maps/LilycoveCity_DepartmentStoreElevator/scripts.inc index 5e8c39ff1..859c568e5 100644 --- a/data/maps/LilycoveCity_DepartmentStoreElevator/scripts.inc +++ b/data/maps/LilycoveCity_DepartmentStoreElevator/scripts.inc @@ -7,7 +7,7 @@ LilycoveCity_DepartmentStoreElevator_EventScript_220624:: @ 8220624 setvar VAR_0x8004, 0 call_if_unset FLAG_TEMP_2, LilycoveCity_DepartmentStoreElevator_EventScript_2207FC copyvar VAR_0x8005, VAR_DEPT_STORE_FLOOR - special sub_8139B60 + special ShowDeptStoreElevatorFloorSelect message gUnknown_08272C1D waitmessage setvar VAR_0x8004, 0 @@ -107,17 +107,17 @@ LilycoveCity_DepartmentStoreElevator_EventScript_2207B8:: @ 82207B8 end LilycoveCity_DepartmentStoreElevator_EventScript_2207E0:: @ 82207E0 - special sub_8139C10 + special CloseDeptStoreElevatorWindow release end LilycoveCity_DepartmentStoreElevator_EventScript_2207E5:: @ 82207E5 - special sub_8139C10 + special CloseDeptStoreElevatorWindow closemessage applymovement VAR_LAST_TALKED, Common_Movement_WalkInPlaceDown waitmovement 0 waitse - special ShakeScreenInElevator + special MoveElevator waitstate setflag FLAG_TEMP_2 return diff --git a/data/maps/PetalburgCity_Gym/scripts.inc b/data/maps/PetalburgCity_Gym/scripts.inc index 119760379..749ed18f2 100644 --- a/data/maps/PetalburgCity_Gym/scripts.inc +++ b/data/maps/PetalburgCity_Gym/scripts.inc @@ -418,7 +418,7 @@ PetalburgCity_Gym_EventScript_204E3B:: @ 8204E3B setflag FLAG_DEFEATED_PETALBURG_GYM setvar VAR_PETALBURG_GYM_STATE, 7 setflag FLAG_BADGE05_GET - special sub_813B9A0 + special ResetHealLocationFromDewford call PetalburgCity_Gym_EventScript_2721F8 setflag FLAG_HIDE_MAUVILLE_GYM_WATTSON clearflag FLAG_HIDE_MAUVILLE_CITY_WATTSON diff --git a/data/maps/SootopolisCity/scripts.inc b/data/maps/SootopolisCity/scripts.inc index 668a18561..d481924a2 100644 --- a/data/maps/SootopolisCity/scripts.inc +++ b/data/maps/SootopolisCity/scripts.inc @@ -217,7 +217,7 @@ SootopolisCity_EventScript_1E5946:: @ 81E5946 setweather WEATHER_ALTERNATING doweather setvar VAR_0x8004, 0 - special sub_813B7D8 + special Script_DoRayquazaScene waitstate applymovement 10, Common_Movement_WalkInPlaceLeft applymovement 9, Common_Movement_WalkInPlaceRight @@ -317,7 +317,7 @@ SootopolisCity_EventScript_1E5A82:: @ 81E5A82 setweather WEATHER_ALTERNATING doweather setvar VAR_0x8004, 0 - special sub_813B7D8 + special Script_DoRayquazaScene waitstate applymovement 10, Common_Movement_WalkInPlaceLeft applymovement 9, Common_Movement_WalkInPlaceRight @@ -509,7 +509,7 @@ SootopolisCity_EventScript_1E5C1E:: @ 81E5C1E removeobject 10 addobject 11 setvar VAR_0x8004, 1 - special sub_813B7D8 + special Script_DoRayquazaScene waitstate playse SE_T_KAMI special SpawnCameraObject @@ -562,7 +562,7 @@ SootopolisCity_EventScript_1E5CCE:: @ 81E5CCE removeobject 10 addobject 11 setvar VAR_0x8004, 1 - special sub_813B7D8 + special Script_DoRayquazaScene waitstate special SpawnCameraObject applymovement EVENT_OBJ_ID_CAMERA, SootopolisCity_Movement_1E5E63 diff --git a/data/maps/TrainerHill_Elevator/scripts.inc b/data/maps/TrainerHill_Elevator/scripts.inc index ecc48a9e9..bf3d0f9f7 100644 --- a/data/maps/TrainerHill_Elevator/scripts.inc +++ b/data/maps/TrainerHill_Elevator/scripts.inc @@ -39,18 +39,20 @@ TrainerHill_Elevator_EventScript_269375:: @ 8269375 waitstate end +@ Unused TrainerHill_Elevator_EventScript_2693CE:: @ 82693CE goto TrainerHill_Elevator_EventScript_2693D4 end +@ Functionally unused TrainerHill_Elevator_EventScript_2693D4:: @ 82693D4 - special sub_8139C10 + special CloseDeptStoreElevatorWindow releaseall end TrainerHill_Elevator_EventScript_2693D9:: @ 82693D9 waitse - special ShakeScreenInElevator + special MoveElevator waitstate return diff --git a/data/specials.inc b/data/specials.inc index 499f21e0b..70c164461 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -284,7 +284,7 @@ gSpecials:: @ 81DBA64 def_special sub_80FB7A4 def_special DoSoftReset def_special GameClear - def_special ShakeScreenInElevator + def_special MoveElevator def_special ShowGlassWorkshopMenu def_special SpawnCameraObject def_special RemoveCameraObject @@ -316,7 +316,7 @@ gSpecials:: @ 81DBA64 def_special CopyCurSecretBaseOwnerName_StrVar1 def_special ScriptCheckFreePokemonStorageSpace def_special DoSealedChamberShakingEffect1 - def_special sub_8139B60 + def_special ShowDeptStoreElevatorFloorSelect def_special GetShieldToyTVDecorationInfo def_special IsPokerusInParty def_special SetSootopolisGymCrackedIceMetatiles @@ -442,7 +442,7 @@ gSpecials:: @ 81DBA64 def_special sub_8027AAC def_special sub_8139980 def_special GetDeptStoreDefaultFloorChoice - def_special sub_8139D98 + def_special BufferVarsForIVRater def_special sub_80F905C def_special sub_800B518 def_special sub_80F90DC @@ -456,12 +456,12 @@ gSpecials:: @ 81DBA64 def_special sub_80B3028 def_special ShowScrollableMultichoice def_special sub_813A630 - def_special sub_813A080 + def_special BufferBattleTowerElevatorFloors def_special sub_81C6A94 def_special sub_81C4F24 def_special sub_81B95E0 def_special sub_81B9620 - def_special sub_813A76C + def_special SetBattleTowerLinkPlayerGfx def_special ShowNatureGirlMessage def_special ShowBattlePointsWindow def_special UpdateBattlePointsWindow @@ -478,15 +478,15 @@ gSpecials:: @ 81DBA64 def_special PrintPlayerBerryPowderAmount def_special ShowFrontierGamblerLookingMessage def_special ShowFrontierGamblerGoMessage - def_special sub_813B7D8 + def_special Script_DoRayquazaScene def_special sub_81C72A4 def_special sp106_CreateStartMenu def_special CountPlayerTrainerStars def_special BufferBattleFrontierTutorMoveName - def_special sub_813ADB8 + def_special CloseBattleFrontierTutorWindow def_special sub_813ADD4 def_special sub_81B892C - def_special sub_813AEB4 + def_special GetBattleFrontierTutorMoveIndex def_special sub_813AF48 def_special DoDeoxysRockInteraction def_special sub_813B1D0 @@ -516,7 +516,7 @@ gSpecials:: @ 81DBA64 def_special sub_813B568 def_special sub_813B534 def_special CallTrainerHillFunction - def_special sub_813B7D8 + def_special Script_DoRayquazaScene @ Listed twice def_special sub_813B80C def_special sub_81D4BEC def_special sub_80224D0 @@ -524,14 +524,14 @@ gSpecials:: @ 81DBA64 def_special DoWaldaNamingScreen def_special TryGetWallpaperWithWaldaPhrase def_special sub_8139ED0 - def_special sub_813B968 + def_special GetBattlePyramidHint def_special sub_80F8B94 def_special ShowTrainerHillRecords def_special sub_80B4808 - def_special sub_813B9A0 + def_special ResetHealLocationFromDewford def_special sub_81B9918 def_special sub_80722E0 def_special TryPrepareSecondApproachingTrainer def_special RemoveRecordsWindow - def_special sub_8139C10 + def_special CloseDeptStoreElevatorWindow def_special sub_80B3BC4 diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h index 9675615de..d287dd2db 100644 --- a/include/constants/battle_frontier.h +++ b/include/constants/battle_frontier.h @@ -45,6 +45,34 @@ #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/field_specials.h b/include/constants/field_specials.h index e9042dba3..5ec38d1d4 100644 --- a/include/constants/field_specials.h +++ b/include/constants/field_specials.h @@ -6,6 +6,13 @@ #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 @@ -21,6 +28,7 @@ #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 @@ -41,33 +49,4 @@ #define DEPT_STORE_FLOORNUM_11F 14 #define DEPT_STORE_FLOORNUM_ROOFTOP 15 -// 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 - - #endif // GUARD_CONSTANTS_FIELD_SPECIALS_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/src/field_specials.c b/src/field_specials.c index 8db4ea9fb..0f777edfb 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -35,6 +35,7 @@ #include "rtc.h" #include "script.h" #include "script_menu.h" +#include "slot_machine.h" #include "sound.h" #include "starter_choose.h" #include "string_util.h" @@ -47,9 +48,11 @@ #include "constants/battle_frontier.h" #include "constants/decorations.h" #include "constants/event_objects.h" +#include "constants/event_object_movement_constants.h" #include "constants/field_effects.h" #include "constants/field_specials.h" #include "constants/items.h" +#include "constants/heal_locations.h" #include "constants/map_types.h" #include "constants/maps.h" #include "constants/songs.h" @@ -69,16 +72,16 @@ static EWRAM_DATA u8 sPetalburgGymSlidingDoorFrameCounter = 0; static EWRAM_DATA u8 gTutorMoveAndElevatorWindowId = 0; static EWRAM_DATA u16 gLilycoveDeptStore_NeverRead = 0; static EWRAM_DATA u16 gLilycoveDeptStore_DefaultFloorChoice = 0; -static EWRAM_DATA struct ListMenuItem *gUnknown_0203AB64 = NULL; -static EWRAM_DATA u16 gUnknown_0203AB68 = 0; +static EWRAM_DATA struct ListMenuItem *gScrollableMultichoice_ListMenuItem = NULL; +static EWRAM_DATA u16 gScrollableMultichoice_ScrollOffset = 0; static EWRAM_DATA u16 gFrontierExchangeCorner_NeverRead = 0; -static EWRAM_DATA u8 gScrollableMultichoiceSprite = 0; +static EWRAM_DATA u8 gScrollableMultichoice_ItemSpriteId = 0; static EWRAM_DATA u8 gBattlePointsWindowId = 0; -static EWRAM_DATA u8 gFrontierExchangeCornerItemIconWindowId = 0; +static EWRAM_DATA u8 gFrontierExchangeCorner_ItemIconWindowId = 0; static EWRAM_DATA u8 gUnknown_0203AB6F = 0; static EWRAM_DATA u32 gUnknown_0203AB70 = 0; -struct ListMenuTemplate gUnknown_030061D0; +struct ListMenuTemplate gScrollableMultichoice_ListMenuTemplate; extern const u16 gEventObjectPalette8[]; extern const u16 gEventObjectPalette17[]; @@ -101,20 +104,20 @@ static void Task_LotteryCornerComputerEffect(u8); static void LotteryCornerComputerEffect(struct Task *); static void sub_81395BC(u8 taskId); static void sub_8139620(u8 taskId); -static void sub_8139AF4(u8 taskId); -static void sub_8139C2C(u16 a1, bool8 descending); -static void MoveElevatorWindowLights(u8 taskId); -static void sub_813A2DC(u8 taskId); -static void FillFrontierExchangeCornerWindow(u16 menu, u16 selection); +static void Task_MoveElevator(u8 taskId); +static void MoveElevatorWindowLights(u16 floorDelta, bool8 descending); +static void Task_MoveElevatorWindowLights(u8 taskId); +static void Task_ShowScrollableMultichoice(u8 taskId); +static void FillFrontierExchangeCornerWindowAndItemIcon(u16 menu, u16 selection); static void ShowBattleFrontierTutorWindow(u8 menu, u16 selection); -static void sub_813A42C(void); -static void sub_813A4EC(u8 taskId); -static void sub_813A694(u8 taskId); -static void sub_813A46C(s32 itemIndex, bool8 onInit, struct ListMenu *list); +static void InitScrollableMultichoice(void); +static void ScrollableMultichoice_ProcessInput(u8 taskId); +static void ScrollableMultichoice_UpdateScrollArrows(u8 taskId); +static void ScrollableMultichoice_MoveCursor(s32 itemIndex, bool8 onInit, struct ListMenu *list); static void HideFrontierExchangeCornerItemIcon(u16 menu, u16 unused); static void ShowBattleFrontierTutorMoveDescription(u8 menu, u16 selection); -static void sub_813A570(u8 taskId); -static void sub_813A738(u8 taskId); +static void CloseScrollableMultichoice(u8 taskId); +static void ScrollableMultichoice_RemoveScrollArrows(u8 taskId); static void sub_813A600(u8 taskId); static void sub_813A664(u8 taskId); static void ShowFrontierExchangeCornerItemIcon(u16 item); @@ -312,16 +315,16 @@ u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y) { case 1: case 8: - return 1; + return SS_TIDAL_LOCATION_SLATEPORT; case 3: case 9: - return 4; + return SS_TIDAL_LOCATION_ROUTE131; case 4: case 5: - return 2; + return SS_TIDAL_LOCATION_LILYCOVE; case 6: case 10: - return 3; + return SS_TIDAL_LOCATION_ROUTE124; case 2: if (*varCruiseStepCount < 60) { @@ -358,7 +361,7 @@ u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y) } *mapGroup = MAP_GROUP(ROUTE132); *y = 20; - return 0; + return SS_TIDAL_LOCATION_OTHER; } bool32 ShouldDoWallyCall(void) @@ -518,8 +521,13 @@ void SpawnLinkPartnerEventObject(void) u8 j = 0; s16 x = 0; s16 y = 0; - u8 gUnknown_085B2B5C[] = {7, 9, 8, 10}; - s8 gUnknown_085B2B60[][2] = { + u8 movementTypes[] = { + MOVEMENT_TYPE_FACE_UP, + MOVEMENT_TYPE_FACE_LEFT, + MOVEMENT_TYPE_FACE_DOWN, + MOVEMENT_TYPE_FACE_RIGHT + }; + s8 coordOffsets[][2] = { { 0, 1}, { 1, 0}, { 0, -1}, @@ -579,10 +587,10 @@ void SpawnLinkPartnerEventObject(void) linkSpriteId = EVENT_OBJ_GFX_RIVAL_MAY_NORMAL; break; } - SpawnSpecialEventObjectParameterized(linkSpriteId, gUnknown_085B2B5C[j], 0xf0 - i, gUnknown_085B2B60[j][0] + x + 7, gUnknown_085B2B60[j][1] + y + 7, 0); + SpawnSpecialEventObjectParameterized(linkSpriteId, movementTypes[j], 0xf0 - i, coordOffsets[j][0] + x + 7, coordOffsets[j][1] + y + 7, 0); LoadLinkPartnerEventObjectSpritePalette(linkSpriteId, 0xf0 - i, i); j++; - if (j == 4) + if (j == MAX_LINK_PLAYERS) { j = 0; } @@ -1296,7 +1304,7 @@ void IsGrassTypeInParty(void) void SpawnCameraObject(void) { - u8 obj = SpawnSpecialEventObjectParameterized(EVENT_OBJ_GFX_BOY_1, 8, EVENT_OBJ_ID_CAMERA, gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7, 3); + u8 obj = SpawnSpecialEventObjectParameterized(EVENT_OBJ_GFX_BOY_1, MOVEMENT_TYPE_FACE_DOWN, EVENT_OBJ_ID_CAMERA, gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7, 3); gEventObjects[obj].invisible = TRUE; CameraObjectSetFollowedObjectId(gEventObjects[obj].spriteId); } @@ -1329,16 +1337,16 @@ void BufferEReaderTrainerName(void) u16 GetSlotMachineId(void) { - static const u8 gUnknown_085B2B88[] = {12, 2, 4, 5, 1, 8, 7, 11, 3, 10, 9, 6}; - static const u8 gUnknown_085B2B94[] = {0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5}; - static const u8 gUnknown_085B2BA0[] = {3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5}; + static const u8 sSlotMachineRandomSeed[] = {12, 2, 4, 5, 1, 8, 7, 11, 3, 10, 9, 6}; + static const u8 sSlotMachineIds[] = {0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5}; + static const u8 sSlotMachineServiceDayIds[] = {3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5}; - u32 v0 = gSaveBlock1Ptr->easyChatPairs[0].unk0_0 + gSaveBlock1Ptr->easyChatPairs[0].unk2 + gUnknown_085B2B88[gSpecialVar_0x8004]; + u32 rnd = gSaveBlock1Ptr->easyChatPairs[0].unk0_0 + gSaveBlock1Ptr->easyChatPairs[0].unk2 + sSlotMachineRandomSeed[gSpecialVar_0x8004]; if (GetPriceReduction(POKENEWS_GAME_CORNER)) { - return gUnknown_085B2BA0[v0 % 12]; + return sSlotMachineServiceDayIds[rnd % SLOT_MACHINE_COUNT]; } - return gUnknown_085B2B94[v0 % 12]; + return sSlotMachineIds[rnd % SLOT_MACHINE_COUNT]; } bool8 FoundAbandonedShipRoom1Key(void) @@ -1444,7 +1452,7 @@ void SetShoalItemFlag(u16 v0) void PutZigzagoonInPlayerParty(void) { u16 monData; - CreateMon(&gPlayerParty[0], SPECIES_ZIGZAGOON, 7, 0x20, FALSE, 0, OT_ID_PLAYER_ID, 0); + CreateMon(&gPlayerParty[0], SPECIES_ZIGZAGOON, 7, 32, FALSE, 0, OT_ID_PLAYER_ID, 0); monData = TRUE; SetMonData(&gPlayerParty[0], MON_DATA_ABILITY_NUM, &monData); monData = MOVE_TACKLE; @@ -1830,17 +1838,18 @@ u16 GetDeptStoreDefaultFloorChoice(void) return gLilycoveDeptStore_DefaultFloorChoice; } -void ShakeScreenInElevator(void) +void MoveElevator(void) { - static const u8 gUnknown_085B2C18[] = { 0x08, 0x10, 0x18, 0x20, 0x26, 0x2e, 0x34, 0x38, 0x39 }; + static const u8 sElevatorTripLength[] = { 8, 16, 24, 32, 38, 46, 52, 56, 57 }; - s16 *data = gTasks[CreateTask(sub_8139AF4, 9)].data; + s16 *data = gTasks[CreateTask(Task_MoveElevator, 9)].data; u16 floorDelta; data[1] = 0; data[2] = 0; data[4] = 1; + // descending if (gSpecialVar_0x8005 > gSpecialVar_0x8006) { floorDelta = gSpecialVar_0x8005 - gSpecialVar_0x8006; @@ -1855,14 +1864,14 @@ void ShakeScreenInElevator(void) if (floorDelta > 8) floorDelta = 8; - data[5] = gUnknown_085B2C18[floorDelta]; + data[5] = sElevatorTripLength[floorDelta]; SetCameraPanningCallback(NULL); - sub_8139C2C(floorDelta, data[6]); + MoveElevatorWindowLights(floorDelta, data[6]); PlaySE(SE_ELEBETA); } -static void sub_8139AF4(u8 taskId) +static void Task_MoveElevator(u8 taskId) { s16 *data = gTasks[taskId].data; data[1]++; @@ -1872,6 +1881,8 @@ static void sub_8139AF4(u8 taskId) data[2]++; data[4] = -data[4]; SetCameraPanning(0, data[4]); + + // arrived at floor if (data[2] == data[5]) { PlaySE(SE_PINPON); @@ -1882,7 +1893,7 @@ static void sub_8139AF4(u8 taskId) } } -void sub_8139B60(void) +void ShowDeptStoreElevatorFloorSelect(void) { int xPos; @@ -1899,27 +1910,27 @@ void sub_8139B60(void) CopyWindowToVram(gTutorMoveAndElevatorWindowId, 3); } -void sub_8139C10(void) +void CloseDeptStoreElevatorWindow(void) { ClearStdWindowAndFrameToTransparent(gTutorMoveAndElevatorWindowId, TRUE); RemoveWindow(gTutorMoveAndElevatorWindowId); } -static void sub_8139C2C(u16 a1, bool8 descending) +static void MoveElevatorWindowLights(u16 floorDelta, bool8 descending) { - static const u8 gUnknown_085B2C21[] = { 0x03, 0x06, 0x09, 0x0c, 0x0f, 0x12, 0x15, 0x18, 0x1b }; + static const u8 sElevatorLightCycles[] = { 3, 6, 9, 12, 15, 18, 21, 24, 27 }; - if (FuncIsActiveTask(MoveElevatorWindowLights) != TRUE) + if (FuncIsActiveTask(Task_MoveElevatorWindowLights) != TRUE) { - u8 taskId = CreateTask(MoveElevatorWindowLights, 8); + u8 taskId = CreateTask(Task_MoveElevatorWindowLights, 8); gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0; gTasks[taskId].data[2] = descending; - gTasks[taskId].data[3] = gUnknown_085B2C21[a1]; + gTasks[taskId].data[3] = sElevatorLightCycles[floorDelta]; } } -static void MoveElevatorWindowLights(u8 taskId) +static void Task_MoveElevatorWindowLights(u8 taskId) { u8 x, y; s16 *data = gTasks[taskId].data; @@ -1960,7 +1971,7 @@ static void MoveElevatorWindowLights(u8 taskId) data[1]++; } -void sub_8139D98(void) +void BufferVarsForIVRater(void) { u8 i; u32 ivStorage[NUM_STATS]; @@ -2227,8 +2238,8 @@ void ShowFrontierManiacMessage(void) ShowFieldMessage(sFrontierManiacMessages[facility][i]); } -// gSpecialVar_0x8005 and 0x8006 here are used by ShakeScreenInElevator -void sub_813A080(void) +// gSpecialVar_0x8005 and 0x8006 here are used by MoveElevator +void BufferBattleTowerElevatorFloors(void) { static const u16 sBattleTowerStreakThresholds[] = { 7, 14, 21, 28, 35, 49, 63, 77, 91, 0 @@ -2262,7 +2273,7 @@ void sub_813A080(void) // data[1]: number of options in the multichoice void ShowScrollableMultichoice(void) { - u8 taskId = CreateTask(sub_813A2DC, 8); + u8 taskId = CreateTask(Task_ShowScrollableMultichoice, 8); struct Task *task = &gTasks[taskId]; task->data[11] = gSpecialVar_0x8004; @@ -2279,7 +2290,7 @@ void ShowScrollableMultichoice(void) task->data[15] = taskId; break; case SCROLL_MULTI_GLASS_WORKSHOP_VENDOR: - task->data[0] = 5; + task->data[0] = MAX_SCROLL_MULTI_ON_SCREEN - 1; task->data[1] = 8; task->data[2] = 1; task->data[3] = 1; @@ -2289,7 +2300,7 @@ void ShowScrollableMultichoice(void) task->data[15] = taskId; break; case SCROLL_MULTI_POKEMON_FAN_CLUB_RATER: - task->data[0] = 6; + task->data[0] = MAX_SCROLL_MULTI_ON_SCREEN; task->data[1] = 12; task->data[2] = 1; task->data[3] = 1; @@ -2299,7 +2310,7 @@ void ShowScrollableMultichoice(void) task->data[15] = taskId; break; case SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_1: - task->data[0] = 6; + task->data[0] = MAX_SCROLL_MULTI_ON_SCREEN; task->data[1] = 11; task->data[2] = 14; task->data[3] = 1; @@ -2309,7 +2320,7 @@ void ShowScrollableMultichoice(void) task->data[15] = taskId; break; case SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_2: - task->data[0] = 6; + task->data[0] = MAX_SCROLL_MULTI_ON_SCREEN; task->data[1] = 6; task->data[2] = 14; task->data[3] = 1; @@ -2319,7 +2330,7 @@ void ShowScrollableMultichoice(void) task->data[15] = taskId; break; case SCROLL_MULTI_BF_EXCHANGE_CORNER_VITAMIN_VENDOR: - task->data[0] = 6; + task->data[0] = MAX_SCROLL_MULTI_ON_SCREEN; task->data[1] = 7; task->data[2] = 14; task->data[3] = 1; @@ -2329,7 +2340,7 @@ void ShowScrollableMultichoice(void) task->data[15] = taskId; break; case SCROLL_MULTI_BF_EXCHANGE_CORNER_HOLD_ITEM_VENDOR: - task->data[0] = 6; + task->data[0] = MAX_SCROLL_MULTI_ON_SCREEN; task->data[1] = 10; task->data[2] = 14; task->data[3] = 1; @@ -2339,7 +2350,7 @@ void ShowScrollableMultichoice(void) task->data[15] = taskId; break; case SCROLL_MULTI_BERRY_POWDER_VENDOR: - task->data[0] = 6; + task->data[0] = MAX_SCROLL_MULTI_ON_SCREEN; task->data[1] = 12; task->data[2] = 15; task->data[3] = 1; @@ -2349,7 +2360,7 @@ void ShowScrollableMultichoice(void) task->data[15] = taskId; break; case SCROLL_MULTI_BF_RECEPTIONIST: - task->data[0] = 6; + task->data[0] = MAX_SCROLL_MULTI_ON_SCREEN; task->data[1] = 10; task->data[2] = 17; task->data[3] = 1; @@ -2360,7 +2371,7 @@ void ShowScrollableMultichoice(void) break; case SCROLL_MULTI_BF_MOVE_TUTOR_1: case SCROLL_MULTI_BF_MOVE_TUTOR_2: - task->data[0] = 6; + task->data[0] = MAX_SCROLL_MULTI_ON_SCREEN; task->data[1] = 11; task->data[2] = 15; task->data[3] = 1; @@ -2370,7 +2381,7 @@ void ShowScrollableMultichoice(void) task->data[15] = taskId; break; case SCROLL_MULTI_SS_TIDAL_DESTINATION: - task->data[0] = 6; + task->data[0] = MAX_SCROLL_MULTI_ON_SCREEN; task->data[1] = 7; task->data[2] = 19; task->data[3] = 1; @@ -2380,7 +2391,7 @@ void ShowScrollableMultichoice(void) task->data[15] = taskId; break; case SCROLL_MULTI_BATTLE_TENT_RULES: - task->data[0] = 6; + task->data[0] = MAX_SCROLL_MULTI_ON_SCREEN; task->data[1] = 7; task->data[2] = 17; task->data[3] = 1; @@ -2402,7 +2413,6 @@ static const u8 *const sScrollableMenuOptions[][MAX_SCROLL_MULTI_LENGTH] = { gText_Exit }, - [SCROLL_MULTI_GLASS_WORKSHOP_VENDOR] = { gText_BlueFlute, @@ -2414,7 +2424,6 @@ static const u8 *const sScrollableMenuOptions[][MAX_SCROLL_MULTI_LENGTH] = gText_PrettyDesk, gText_Exit }, - [SCROLL_MULTI_POKEMON_FAN_CLUB_RATER] = { gText_0Pts, @@ -2430,7 +2439,6 @@ static const u8 *const sScrollableMenuOptions[][MAX_SCROLL_MULTI_LENGTH] = gText_100Pts, gText_QuestionMark }, - [SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_1] = { gText_KissPoster16BP, @@ -2445,7 +2453,6 @@ static const u8 *const sScrollableMenuOptions[][MAX_SCROLL_MULTI_LENGTH] = gText_TotodileDoll80BP, gText_Exit }, - [SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_2] = { gText_LaprasDoll128BP, @@ -2455,7 +2462,6 @@ static const u8 *const sScrollableMenuOptions[][MAX_SCROLL_MULTI_LENGTH] = gText_BlastoiseDoll256BP, gText_Exit }, - [SCROLL_MULTI_BF_EXCHANGE_CORNER_VITAMIN_VENDOR] = { gText_Protein1BP, @@ -2466,7 +2472,6 @@ static const u8 *const sScrollableMenuOptions[][MAX_SCROLL_MULTI_LENGTH] = gText_HpUp1BP, gText_Exit }, - [SCROLL_MULTI_BF_EXCHANGE_CORNER_HOLD_ITEM_VENDOR] = { gText_Leftovers48BP, @@ -2480,7 +2485,6 @@ static const u8 *const sScrollableMenuOptions[][MAX_SCROLL_MULTI_LENGTH] = gText_ScopeLens64BP, gText_Exit }, - [SCROLL_MULTI_BERRY_POWDER_VENDOR] = { gText_EnergyPowder50, @@ -2496,7 +2500,6 @@ static const u8 *const sScrollableMenuOptions[][MAX_SCROLL_MULTI_LENGTH] = gText_PPUp3000, gText_Exit }, - [SCROLL_MULTI_BF_RECEPTIONIST] = { gText_BattleTower2, @@ -2510,7 +2513,6 @@ static const u8 *const sScrollableMenuOptions[][MAX_SCROLL_MULTI_LENGTH] = gText_ExchangeService, gText_Exit }, - [SCROLL_MULTI_BF_MOVE_TUTOR_1] = { gText_Softboiled16BP, @@ -2525,7 +2527,6 @@ static const u8 *const sScrollableMenuOptions[][MAX_SCROLL_MULTI_LENGTH] = gText_SwordsDance48BP, gText_Exit }, - [SCROLL_MULTI_BF_MOVE_TUTOR_2] = { gText_DefenseCurl16BP, @@ -2540,7 +2541,6 @@ static const u8 *const sScrollableMenuOptions[][MAX_SCROLL_MULTI_LENGTH] = gText_FirePunch48BP, gText_Exit }, - [SCROLL_MULTI_SS_TIDAL_DESTINATION] = { gText_SlateportCity, @@ -2551,7 +2551,6 @@ static const u8 *const sScrollableMenuOptions[][MAX_SCROLL_MULTI_LENGTH] = gText_FarawayIsland, gText_Exit }, - [SCROLL_MULTI_BATTLE_TENT_RULES] = { gText_BattleTrainers, @@ -2564,7 +2563,7 @@ static const u8 *const sScrollableMenuOptions[][MAX_SCROLL_MULTI_LENGTH] = } }; -static void sub_813A2DC(u8 taskId) +static void Task_ShowScrollableMultichoice(u8 taskId) { u32 unk1; u8 i, windowId; @@ -2572,19 +2571,19 @@ static void sub_813A2DC(u8 taskId) struct Task *task = &gTasks[taskId]; ScriptContext2_Enable(); - gUnknown_0203AB68 = 0; - gScrollableMultichoiceSprite = MAX_SPRITES; - FillFrontierExchangeCornerWindow(task->data[11], 0); + gScrollableMultichoice_ScrollOffset = 0; + gScrollableMultichoice_ItemSpriteId = MAX_SPRITES; + FillFrontierExchangeCornerWindowAndItemIcon(task->data[11], 0); ShowBattleFrontierTutorWindow(task->data[11], 0); - gUnknown_0203AB64 = AllocZeroed(task->data[1] * 8); + gScrollableMultichoice_ListMenuItem = AllocZeroed(task->data[1] * 8); gFrontierExchangeCorner_NeverRead = 0; - sub_813A42C(); + InitScrollableMultichoice(); for (unk1 = 0, i = 0; i < task->data[1]; i++) { const u8 *text = sScrollableMenuOptions[gSpecialVar_0x8004][i]; - gUnknown_0203AB64[i].name = text; - gUnknown_0203AB64[i].id = i; + gScrollableMultichoice_ListMenuItem[i].name = text; + gScrollableMultichoice_ListMenuItem[i].id = i; unk1 = display_text_and_get_width(text, unk1); } @@ -2608,58 +2607,58 @@ static void sub_813A2DC(u8 taskId) task->data[13] = windowId; SetStandardWindowBorderStyle(windowId, 0); - gUnknown_030061D0.totalItems = task->data[1]; - gUnknown_030061D0.maxShowed = task->data[0]; - gUnknown_030061D0.windowId = task->data[13]; + gScrollableMultichoice_ListMenuTemplate.totalItems = task->data[1]; + gScrollableMultichoice_ListMenuTemplate.maxShowed = task->data[0]; + gScrollableMultichoice_ListMenuTemplate.windowId = task->data[13]; - sub_813A694(taskId); - task->data[14] = ListMenuInit(&gUnknown_030061D0, task->data[7], task->data[8]); + ScrollableMultichoice_UpdateScrollArrows(taskId); + task->data[14] = ListMenuInit(&gScrollableMultichoice_ListMenuTemplate, task->data[7], task->data[8]); schedule_bg_copy_tilemap_to_vram(0); - gTasks[taskId].func = sub_813A4EC; + gTasks[taskId].func = ScrollableMultichoice_ProcessInput; } -static void sub_813A42C(void) +static void InitScrollableMultichoice(void) { - gUnknown_030061D0.items = gUnknown_0203AB64; - gUnknown_030061D0.moveCursorFunc = sub_813A46C; - gUnknown_030061D0.itemPrintFunc = NULL; - gUnknown_030061D0.totalItems = 1; - gUnknown_030061D0.maxShowed = 1; - gUnknown_030061D0.windowId = 0; - gUnknown_030061D0.header_X = 0; - gUnknown_030061D0.item_X = 8; - gUnknown_030061D0.cursor_X = 0; - gUnknown_030061D0.upText_Y = 1; - gUnknown_030061D0.cursorPal = 2; - gUnknown_030061D0.fillValue = 1; - gUnknown_030061D0.cursorShadowPal = 3; - gUnknown_030061D0.lettersSpacing = 0; - gUnknown_030061D0.itemVerticalPadding = 0; - gUnknown_030061D0.scrollMultiple = 0; - gUnknown_030061D0.fontId = 1; - gUnknown_030061D0.cursorKind = 0; + gScrollableMultichoice_ListMenuTemplate.items = gScrollableMultichoice_ListMenuItem; + gScrollableMultichoice_ListMenuTemplate.moveCursorFunc = ScrollableMultichoice_MoveCursor; + gScrollableMultichoice_ListMenuTemplate.itemPrintFunc = NULL; + gScrollableMultichoice_ListMenuTemplate.totalItems = 1; + gScrollableMultichoice_ListMenuTemplate.maxShowed = 1; + gScrollableMultichoice_ListMenuTemplate.windowId = 0; + gScrollableMultichoice_ListMenuTemplate.header_X = 0; + gScrollableMultichoice_ListMenuTemplate.item_X = 8; + gScrollableMultichoice_ListMenuTemplate.cursor_X = 0; + gScrollableMultichoice_ListMenuTemplate.upText_Y = 1; + gScrollableMultichoice_ListMenuTemplate.cursorPal = 2; + gScrollableMultichoice_ListMenuTemplate.fillValue = 1; + gScrollableMultichoice_ListMenuTemplate.cursorShadowPal = 3; + gScrollableMultichoice_ListMenuTemplate.lettersSpacing = 0; + gScrollableMultichoice_ListMenuTemplate.itemVerticalPadding = 0; + gScrollableMultichoice_ListMenuTemplate.scrollMultiple = 0; + gScrollableMultichoice_ListMenuTemplate.fontId = 1; + gScrollableMultichoice_ListMenuTemplate.cursorKind = 0; } -static void sub_813A46C(s32 itemIndex, bool8 onInit, struct ListMenu *list) +static void ScrollableMultichoice_MoveCursor(s32 itemIndex, bool8 onInit, struct ListMenu *list) { u8 taskId; PlaySE(SE_SELECT); - taskId = FindTaskIdByFunc(sub_813A4EC); + taskId = FindTaskIdByFunc(ScrollableMultichoice_ProcessInput); if (taskId != 0xFF) { u16 selection; struct Task *task = &gTasks[taskId]; ListMenuGetScrollAndRow(task->data[14], &selection, NULL); - gUnknown_0203AB68 = selection; + gScrollableMultichoice_ScrollOffset = selection; ListMenuGetCurrentItemArrayId(task->data[14], &selection); HideFrontierExchangeCornerItemIcon(task->data[11], gFrontierExchangeCorner_NeverRead); - FillFrontierExchangeCornerWindow(task->data[11], selection); + FillFrontierExchangeCornerWindowAndItemIcon(task->data[11], selection); ShowBattleFrontierTutorMoveDescription(task->data[11], selection); gFrontierExchangeCorner_NeverRead = selection; } } -static void sub_813A4EC(u8 taskId) +static void ScrollableMultichoice_ProcessInput(u8 taskId) { struct Task *task = &gTasks[taskId]; s32 input = ListMenu_ProcessInput(task->data[14]); @@ -2671,22 +2670,22 @@ static void sub_813A4EC(u8 taskId) case LIST_CANCEL: gSpecialVar_Result = 0x7F; PlaySE(SE_SELECT); - sub_813A570(taskId); + CloseScrollableMultichoice(taskId); break; default: gSpecialVar_Result = input; PlaySE(SE_SELECT); if (!task->data[6]) { - sub_813A570(taskId); + CloseScrollableMultichoice(taskId); } else if (input == task->data[1] - 1) { - sub_813A570(taskId); + CloseScrollableMultichoice(taskId); } else { - sub_813A738(taskId); + ScrollableMultichoice_RemoveScrollArrows(taskId); task->func = sub_813A600; EnableBothScriptContexts(); } @@ -2694,15 +2693,15 @@ static void sub_813A4EC(u8 taskId) } } -static void sub_813A570(u8 taskId) +static void CloseScrollableMultichoice(u8 taskId) { - u16 array; + u16 selection; struct Task *task = &gTasks[taskId]; - ListMenuGetCurrentItemArrayId(task->data[14], &array); - HideFrontierExchangeCornerItemIcon(task->data[11], array); - sub_813A738(taskId); + ListMenuGetCurrentItemArrayId(task->data[14], &selection); + HideFrontierExchangeCornerItemIcon(task->data[11], selection); + ScrollableMultichoice_RemoveScrollArrows(taskId); DestroyListMenuTask(task->data[14], NULL, NULL); - Free(gUnknown_0203AB64); + Free(gScrollableMultichoice_ListMenuItem); ClearStdWindowAndFrameToTransparent(task->data[13], 1); FillWindowPixelBuffer(task->data[13], PIXEL_FILL(0)); CopyWindowToVram(task->data[13], 2); @@ -2725,6 +2724,7 @@ static void sub_813A600(u8 taskId) } } +// Never called void sub_813A630(void) { u8 taskId = FindTaskIdByFunc(sub_813A600); @@ -2741,13 +2741,13 @@ void sub_813A630(void) static void sub_813A664(u8 taskId) { ScriptContext2_Enable(); - sub_813A694(taskId); - gTasks[taskId].func = sub_813A4EC; + ScrollableMultichoice_UpdateScrollArrows(taskId); + gTasks[taskId].func = ScrollableMultichoice_ProcessInput; } -static void sub_813A694(u8 taskId) +static void ScrollableMultichoice_UpdateScrollArrows(u8 taskId) { - static const struct ScrollArrowsTemplate gUnknown_085B3030 = { + static const struct ScrollArrowsTemplate sScrollableMultichoice_ScrollArrowsTemplate = { .firstArrowType = SCROLL_ARROW_UP, .firstX = 0, .firstY = 0, @@ -2762,7 +2762,7 @@ static void sub_813A694(u8 taskId) }; struct Task *task = &gTasks[taskId]; - struct ScrollArrowsTemplate template = gUnknown_085B3030; + struct ScrollArrowsTemplate template = sScrollableMultichoice_ScrollArrowsTemplate; if (task->data[0] != task->data[1]) { template.firstX = (task->data[4] / 2) * 8 + 12 + (task->data[2] - 1) * 8; @@ -2771,11 +2771,11 @@ static void sub_813A694(u8 taskId) template.secondY = task->data[5] * 8 + 10; template.fullyUpThreshold = 0; template.fullyDownThreshold = task->data[1] - task->data[0]; - task->data[12] = AddScrollIndicatorArrowPair(&template, &gUnknown_0203AB68); + task->data[12] = AddScrollIndicatorArrowPair(&template, &gScrollableMultichoice_ScrollOffset); } } -static void sub_813A738(u8 taskId) +static void ScrollableMultichoice_RemoveScrollArrows(u8 taskId) { struct Task *task = &gTasks[taskId]; if (task->data[0] != task->data[1]) @@ -2806,7 +2806,7 @@ void ShowGlassWorkshopMenu(void) */ } -void sub_813A76C(void) +void SetBattleTowerLinkPlayerGfx(void) { u8 i; for (i = 0; i < 2; i++) @@ -3016,7 +3016,7 @@ u16 GetFrontierBattlePoints(void) void ShowFrontierExchangeCornerItemIconWindow(void) { - static const struct WindowTemplate sFrontierExchangeCornerItemIcon_WindowTemplate = { + static const struct WindowTemplate sFrontierExchangeCorner_ItemIconWindowTemplate = { .bg = 0, .tilemapLeft = 2, .tilemapTop = 9, @@ -3026,18 +3026,18 @@ void ShowFrontierExchangeCornerItemIconWindow(void) .baseBlock = 20, }; - gFrontierExchangeCornerItemIconWindowId = AddWindow(&sFrontierExchangeCornerItemIcon_WindowTemplate); - SetStandardWindowBorderStyle(gFrontierExchangeCornerItemIconWindowId, 0); - CopyWindowToVram(gFrontierExchangeCornerItemIconWindowId, 2); + gFrontierExchangeCorner_ItemIconWindowId = AddWindow(&sFrontierExchangeCorner_ItemIconWindowTemplate); + SetStandardWindowBorderStyle(gFrontierExchangeCorner_ItemIconWindowId, 0); + CopyWindowToVram(gFrontierExchangeCorner_ItemIconWindowId, 2); } void CloseFrontierExchangeCornerItemIconWindow(void) { - ClearStdWindowAndFrameToTransparent(gFrontierExchangeCornerItemIconWindowId, TRUE); - RemoveWindow(gFrontierExchangeCornerItemIconWindowId); + ClearStdWindowAndFrameToTransparent(gFrontierExchangeCorner_ItemIconWindowId, TRUE); + RemoveWindow(gFrontierExchangeCorner_ItemIconWindowId); } -static void FillFrontierExchangeCornerWindow(u16 menu, u16 selection) +static void FillFrontierExchangeCornerWindowAndItemIcon(u16 menu, u16 selection) { #include "data/battle_frontier/battle_frontier_exchange_corner.h" @@ -3056,7 +3056,7 @@ static void FillFrontierExchangeCornerWindow(u16 menu, u16 selection) { FreeSpriteTilesByTag(5500); FreeSpritePaletteByTag(5500); - gScrollableMultichoiceSprite = AddDecorationIconObject(sFrontierExchangeCorner_Decor1[selection], 33, 88, 0, 5500, 5500); + gScrollableMultichoice_ItemSpriteId = AddDecorationIconObject(sFrontierExchangeCorner_Decor1[selection], 33, 88, 0, 5500, 5500); } break; case SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_2: @@ -3069,7 +3069,7 @@ static void FillFrontierExchangeCornerWindow(u16 menu, u16 selection) { FreeSpriteTilesByTag(5500); FreeSpritePaletteByTag(5500); - gScrollableMultichoiceSprite = AddDecorationIconObject(sFrontierExchangeCorner_Decor2[selection], 33, 88, 0, 5500, 5500); + gScrollableMultichoice_ItemSpriteId = AddDecorationIconObject(sFrontierExchangeCorner_Decor2[selection], 33, 88, 0, 5500, 5500); } break; case SCROLL_MULTI_BF_EXCHANGE_CORNER_VITAMIN_VENDOR: @@ -3088,19 +3088,19 @@ static void ShowFrontierExchangeCornerItemIcon(u16 item) { FreeSpriteTilesByTag(5500); FreeSpritePaletteByTag(5500); - gScrollableMultichoiceSprite = AddItemIconSprite(5500, 5500, item); + gScrollableMultichoice_ItemSpriteId = AddItemIconSprite(5500, 5500, item); - if (gScrollableMultichoiceSprite != MAX_SPRITES) + if (gScrollableMultichoice_ItemSpriteId != MAX_SPRITES) { - gSprites[gScrollableMultichoiceSprite].oam.priority = 0; - gSprites[gScrollableMultichoiceSprite].pos1.x = 36; - gSprites[gScrollableMultichoiceSprite].pos1.y = 92; + gSprites[gScrollableMultichoice_ItemSpriteId].oam.priority = 0; + gSprites[gScrollableMultichoice_ItemSpriteId].pos1.x = 36; + gSprites[gScrollableMultichoice_ItemSpriteId].pos1.y = 92; } } static void HideFrontierExchangeCornerItemIcon(u16 menu, u16 unused) { - if (gScrollableMultichoiceSprite != MAX_SPRITES) + if (gScrollableMultichoice_ItemSpriteId != MAX_SPRITES) { switch (menu) { @@ -3108,10 +3108,10 @@ static void HideFrontierExchangeCornerItemIcon(u16 menu, u16 unused) case SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_2: case SCROLL_MULTI_BF_EXCHANGE_CORNER_VITAMIN_VENDOR: case SCROLL_MULTI_BF_EXCHANGE_CORNER_HOLD_ITEM_VENDOR: - DestroySpriteAndFreeResources(&gSprites[gScrollableMultichoiceSprite]); + DestroySpriteAndFreeResources(&gSprites[gScrollableMultichoice_ItemSpriteId]); break; } - gScrollableMultichoiceSprite = MAX_SPRITES; + gScrollableMultichoice_ItemSpriteId = MAX_SPRITES; } } @@ -3225,12 +3225,13 @@ static void ShowBattleFrontierTutorMoveDescription(u8 menu, u16 selection) } } -void sub_813ADB8(void) +void CloseBattleFrontierTutorWindow(void) { ClearStdWindowAndFrameToTransparent(gTutorMoveAndElevatorWindowId, TRUE); RemoveWindow(gTutorMoveAndElevatorWindowId); } +// Never called void sub_813ADD4(void) { u16 scrollOffset, selectedRow; @@ -3242,7 +3243,7 @@ void sub_813ADD4(void) ListMenuGetScrollAndRow(task->data[14], &scrollOffset, &selectedRow); SetStandardWindowBorderStyle(task->data[13], 0); - for (i = 0; i < 6; i++) + for (i = 0; i < MAX_SCROLL_MULTI_ON_SCREEN; i++) { AddTextPrinterParameterized5(task->data[13], 1, sScrollableMenuOptions[gSpecialVar_0x8004][scrollOffset + i], 10, i * 16, TEXT_SPEED_FF, NULL, 0, 0); } @@ -3253,7 +3254,7 @@ void sub_813ADD4(void) } } -void sub_813AEB4(void) +void GetBattleFrontierTutorMoveIndex(void) { u8 i; u16 moveTutor = 0; @@ -3291,6 +3292,7 @@ void sub_813AEB4(void) } } +// Never called void sub_813AF48(void) { u8 taskId = FindTaskIdByFunc(sub_813A600); @@ -3298,7 +3300,7 @@ void sub_813AF48(void) { struct Task *task = &gTasks[taskId]; DestroyListMenuTask(task->data[14], NULL, NULL); - Free(gUnknown_0203AB64); + Free(gScrollableMultichoice_ListMenuItem); ClearStdWindowAndFrameToTransparent(task->data[13], TRUE); FillWindowPixelBuffer(task->data[13], PIXEL_FILL(0)); ClearWindowTilemap(task->data[13]); @@ -3687,6 +3689,7 @@ bool32 sub_813B4E0(void) return FALSE; } +// Always returns FALSE bool32 sub_813B514(void) { if (!VarGet(VAR_ALWAYS_ZERO_0x403F)) @@ -3839,7 +3842,7 @@ static void sub_813B57C(u8 taskId) } } -void sub_813B7D8(void) +void Script_DoRayquazaScene(void) { if (gSpecialVar_0x8004 == 0) { @@ -3909,17 +3912,18 @@ static void _fwalk(u8 taskId) } } -void sub_813B968(void) +void GetBattlePyramidHint(void) { gSpecialVar_Result = gSpecialVar_0x8004 / 7; gSpecialVar_Result -= (gSpecialVar_Result / 20) * 20; } -void sub_813B9A0(void) +// Used to avoid a potential softlock if the player respawns on Dewford with no way off +void ResetHealLocationFromDewford(void) { if (gSaveBlock1Ptr->lastHealLocation.mapGroup == MAP_GROUP(DEWFORD_TOWN) && gSaveBlock1Ptr->lastHealLocation.mapNum == MAP_NUM(DEWFORD_TOWN)) { - SetLastHealLocationWarp(3); + SetLastHealLocationWarp(HEAL_LOCATION_PETALBURG_CITY); } } diff --git a/src/region_map.c b/src/region_map.c index a98964e5c..ea2cbfa6a 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -24,6 +24,7 @@ #include "region_map.h" #include "constants/region_map_sections.h" #include "heal_location.h" +#include "constants/field_specials.h" #include "constants/heal_locations.h" #include "constants/map_types.h" #include "constants/rgb.h" @@ -1144,20 +1145,20 @@ static void RegionMap_InitializeStateBasedOnSSTidalLocation(void) x = 0; switch (GetSSTidalLocation(&mapGroup, &mapNum, &xOnMap, &yOnMap)) { - case 1: + case SS_TIDAL_LOCATION_SLATEPORT: gRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY; break; - case 2: + case SS_TIDAL_LOCATION_LILYCOVE: gRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY; break; - case 3: + case SS_TIDAL_LOCATION_ROUTE124: gRegionMap->mapSecId = MAPSEC_ROUTE_124; break; - case 4: + case SS_TIDAL_LOCATION_ROUTE131: gRegionMap->mapSecId = MAPSEC_ROUTE_131; break; default: - case 0: + case SS_TIDAL_LOCATION_OTHER: mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum); gRegionMap->mapSecId = mapHeader->regionMapSectionId;