summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGriffinR <griffin.richards@comcast.net>2019-09-13 20:22:09 -0400
committerhuderlem <huderlem@gmail.com>2019-09-17 16:50:17 -0500
commit6ab49da81133c86a0609832a1336efbee67c1b22 (patch)
treee52ffef0e9c8f1ae291935ea53ed3b1d11f3de1a /src
parent3dbd375779220dd07c88cdcfae51c43b723a86ec (diff)
Clean up field_specials documentation
Diffstat (limited to 'src')
-rw-r--r--src/field_specials.c314
-rw-r--r--src/region_map.c11
2 files changed, 165 insertions, 160 deletions
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;