summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhlosioneer <mattmdrr2@gmail.com>2019-03-02 17:35:44 -0500
committerPhlosioneer <mattmdrr2@gmail.com>2019-03-02 17:35:44 -0500
commit9372731c3ef1ac5f7ed59a85b071bde7b87d2460 (patch)
tree3122377a548140355ae1a3350212cc52827bc9ac /src
parent3716da5430a976d05afecdf82f43f14fc2584949 (diff)
parent043071ae12aa6854119a44304a5facbd58fa3624 (diff)
Merge branch 'master' into main-menu-state-machine
Diffstat (limited to 'src')
-rwxr-xr-xsrc/battle_anim_effects_2.c6
-rw-r--r--src/battle_controllers.c2
-rw-r--r--src/battle_pyramid.c4
-rw-r--r--src/battle_setup.c2
-rw-r--r--src/battle_tower.c8
-rw-r--r--src/berry_blender.c13
-rw-r--r--src/bg.c4
-rw-r--r--src/cable_club.c43
-rw-r--r--src/decoration.c18
-rw-r--r--src/easy_chat.c1696
-rw-r--r--src/event_data.c22
-rw-r--r--src/field_control_avatar.c14
-rw-r--r--src/field_effect.c4
-rw-r--r--src/field_screen_effect.c6
-rw-r--r--src/field_specials.c141
-rw-r--r--src/fieldmap.c39
-rw-r--r--src/fldeff_escalator.c14
-rw-r--r--src/fldeff_misc.c10
-rw-r--r--src/item.c4
-rwxr-xr-xsrc/item_menu.c2
-rw-r--r--src/lilycove_lady.c6
-rw-r--r--src/link.c28
-rw-r--r--src/link_rfu.c22
-rw-r--r--src/load_save.c2
-rw-r--r--src/lottery_corner.c2
-rw-r--r--src/main.c14
-rw-r--r--src/match_call.c2
-rw-r--r--src/menu_helpers.c4
-rw-r--r--src/mirage_tower.c2
-rw-r--r--src/mystery_event_menu.c2
-rw-r--r--src/overworld.c989
-rwxr-xr-xsrc/party_menu.c15
-rw-r--r--src/pokenav.c2
-rw-r--r--src/record_mixing.c50
-rw-r--r--src/region_map.c8
-rw-r--r--src/rom_8011DC0.c6
-rw-r--r--src/roulette.c4
-rw-r--r--src/save.c10
-rw-r--r--src/scrcmd.c12
-rwxr-xr-xsrc/script_pokemon_util_80F87D8.c21
-rw-r--r--src/secret_base.c166
-rw-r--r--src/slot_machine.c2781
-rw-r--r--src/start_menu.c14
-rw-r--r--src/task.c3
-rw-r--r--src/time_events.c2
-rw-r--r--src/trade.c12
-rwxr-xr-xsrc/trainer_card.c4
-rw-r--r--src/trainer_hill.c86
-rw-r--r--src/tv.c51
49 files changed, 3306 insertions, 3066 deletions
diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c
index 0c6f2ef11..ee6676e64 100755
--- a/src/battle_anim_effects_2.c
+++ b/src/battle_anim_effects_2.c
@@ -1417,7 +1417,7 @@ static void AnimTask_WithdrawStep(u8 taskId)
}
}
-// Animates a "zap of energy" used in KINESIS.
+// Animates a "zap of energy" used in KINESIS.
// arg 0: x pixel offset
// arg 1: y pixel offset
// arg 2: vertical flip
@@ -1592,7 +1592,7 @@ void sub_8103AA4(struct Sprite *sprite)
sprite->data[3] = sub_8151534(sub_8151534(b, a), sub_8151624(0x1C0));
sprite->data[4] = sub_8151534(sub_8151534(c, a), sub_8151624(0x1C0));
sprite->callback = sub_8103A00;
- }
+ }
}
static void sub_8103BE4(u8 taskId)
@@ -3470,7 +3470,7 @@ void AnimOrbitFast(struct Sprite *sprite)
static void AnimOrbitFastStep(struct Sprite *sprite)
{
- if ((u16)(sprite->data[1] - 64) < 128)
+ if (sprite->data[1] >= 64 && sprite->data[1] <= 191)
sprite->subpriority = sprite->data[7] + 1;
else
sprite->subpriority = sprite->data[7] - 1;
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index 70a53f332..29272c19a 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -767,7 +767,7 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
{
if (IsLinkMaster())
{
- sub_800A620();
+ CheckShouldAdvanceLinkState();
gTasks[taskId].data[11]++;
}
else
diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c
index 340c17c59..34da3a25d 100644
--- a/src/battle_pyramid.c
+++ b/src/battle_pyramid.c
@@ -1267,7 +1267,7 @@ static u8 GetPostBattleDirectionHintTextIndex(int *hintType, u8 minDistanceForEx
{
for (x = 0; x < 32; x++)
{
- if ((map[x] & 0x3FF) == FLOOR_EXIT_METATILE)
+ if ((map[x] & METATILE_ID_MASK) == FLOOR_EXIT_METATILE)
{
x += 7 - gEventObjects[gSelectedEventObject].initialCoords.x;
y += 7 - gEventObjects[gSelectedEventObject].initialCoords.y;
@@ -1568,7 +1568,7 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio
{
for (x = 0; x < mapLayout->width; x++)
{
- if ((layoutMap[x] & 0x3FF) != FLOOR_EXIT_METATILE)
+ if ((layoutMap[x] & METATILE_ID_MASK) != FLOOR_EXIT_METATILE)
{
map[x] = layoutMap[x];
}
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 7626420e9..40423697e 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -641,7 +641,7 @@ u8 BattleSetup_GetTerrainId(void)
return BATTLE_TERRAIN_BUILDING;
case MAP_TYPE_UNDERWATER:
return BATTLE_TERRAIN_UNDERWATER;
- case MAP_TYPE_6:
+ case MAP_TYPE_OCEAN_ROUTE:
if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
return BATTLE_TERRAIN_WATER;
return BATTLE_TERRAIN_PLAIN;
diff --git a/src/battle_tower.c b/src/battle_tower.c
index 35c72f613..46aab4bac 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -2401,9 +2401,9 @@ static void sub_8163EE4(void)
for (i = 0; i < 6; i++)
{
- playerRecord->greeting[i] = gSaveBlock1Ptr->unk2BBC[i];
- playerRecord->speechWon[i] = gSaveBlock1Ptr->unk2BC8[i];
- playerRecord->speechLost[i] = gSaveBlock1Ptr->unk2BD4[i];
+ playerRecord->greeting[i] = gSaveBlock1Ptr->easyChatBattleStart[i];
+ playerRecord->speechWon[i] = gSaveBlock1Ptr->easyChatBattleWon[i];
+ playerRecord->speechLost[i] = gSaveBlock1Ptr->easyChatBattleLost[i];
}
for (i = 0; i < 4; i++)
@@ -3059,7 +3059,7 @@ static void FillEReaderTrainerWithPlayerData(void)
j = 7;
for (i = 0; i < 6; i++)
{
- ereaderTrainer->greeting[i] = gSaveBlock1Ptr->unk2BBC[i];
+ ereaderTrainer->greeting[i] = gSaveBlock1Ptr->easyChatBattleStart[i];
ereaderTrainer->farewellPlayerLost[i] = j;
ereaderTrainer->farewellPlayerWon[i] = j + 6;
j++;
diff --git a/src/berry_blender.c b/src/berry_blender.c
index 0241fa26d..8d852819b 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -34,6 +34,8 @@
#include "battle_records.h"
#include "graphics.h"
#include "new_game.h"
+#include "save.h"
+#include "link.h"
#define BLENDER_SCORE_BEST 0
#define BLENDER_SCORE_GOOD 1
@@ -140,15 +142,8 @@ extern const u8 gText_Space[];
extern const u8 gText_BlenderMaxSpeedRecord[];
extern const u8 gText_234Players[];
-extern void sub_800A418(void);
-extern u8 sub_800A9D8(void);
extern void sub_81AABF0(void (*callback)(void));
extern void sub_800B4C0(void);
-extern void ClearLinkCallback(void);
-extern void sub_8009F8C(void);
-extern void sub_8153430(void);
-extern bool8 sub_8153474(void);
-extern void sub_80EECEC(void);
// this file's functions
static void BerryBlender_SetBackgroundsPos(void);
@@ -2600,7 +2595,7 @@ static bool8 LinkPlayAgainHandleSaving(void)
}
break;
case 2:
- sub_8153430();
+ FullSaveGame();
sBerryBlenderData->field_1A0++;
sBerryBlenderData->framesToWait = 0;
break;
@@ -2614,7 +2609,7 @@ static bool8 LinkPlayAgainHandleSaving(void)
case 4:
if (IsLinkTaskFinished())
{
- if (sub_8153474())
+ if (CheckSaveFile())
{
sBerryBlenderData->field_1A0 = 5;
}
diff --git a/src/bg.c b/src/bg.c
index f73f5998d..1826f9a28 100644
--- a/src/bg.c
+++ b/src/bg.c
@@ -1056,7 +1056,7 @@ void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 widt
for (x16 = x; x16 < (x + width); x16++)
{
CopyTileMapEntry(&firstTileNum, &((u16*)sGpuBgConfigs2[bg].tilemap)[(u16)GetTileMapIndexFromCoords(x16, y16, attribute, mode, mode2)], paletteSlot, 0, 0);
- firstTileNum = (firstTileNum & 0xFC00) + ((firstTileNum + tileNumDelta) & 0x3FF);
+ firstTileNum = (firstTileNum & (METATILE_COLLISION_MASK | METATILE_ELEVATION_MASK)) + ((firstTileNum + tileNumDelta) & METATILE_ID_MASK);
}
}
break;
@@ -1067,7 +1067,7 @@ void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 widt
for (x16 = x; x16 < (x + width); x16++)
{
((u8*)sGpuBgConfigs2[bg].tilemap)[(y16 * mode3) + x16] = firstTileNum;
- firstTileNum = (firstTileNum & 0xFC00) + ((firstTileNum + tileNumDelta) & 0x3FF);
+ firstTileNum = (firstTileNum & (METATILE_COLLISION_MASK | METATILE_ELEVATION_MASK)) + ((firstTileNum + tileNumDelta) & METATILE_ID_MASK);
}
}
break;
diff --git a/src/cable_club.c b/src/cable_club.c
index dfef39975..b80e76e99 100644
--- a/src/cable_club.c
+++ b/src/cable_club.c
@@ -284,7 +284,7 @@ static void sub_80B2804(u8 taskId)
if (GetFieldMessageBoxMode() == FIELD_MESSAGE_BOX_HIDDEN)
{
- if (sub_800AA48() != GetLinkPlayerCount_2())
+ if (GetSavedPlayerCount() != GetLinkPlayerCount_2())
{
ShowFieldAutoScrollMessage(gText_ConfirmLinkWhenPlayersReady);
gTasks[taskId].func = sub_80B270C;
@@ -297,7 +297,7 @@ static void sub_80B2804(u8 taskId)
else if (gMain.heldKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- sub_800A620();
+ CheckShouldAdvanceLinkState();
gTasks[taskId].func = sub_80B28A8;
}
}
@@ -312,7 +312,7 @@ static void sub_80B28A8(u8 taskId)
|| sub_80B2D6C(taskId) == TRUE)
return;
- if (GetLinkPlayerCount_2() != sub_800AA48())
+ if (GetLinkPlayerCount_2() != GetSavedPlayerCount())
{
gTasks[taskId].func = sub_80B2D2C;
}
@@ -354,7 +354,7 @@ static void sub_80B2918(u8 taskId)
else
{
gFieldLinkPlayerCount = GetLinkPlayerCount_2();
- gUnknown_03005DB4 = GetMultiplayerId();
+ gLocalLinkPlayerId = GetMultiplayerId();
sub_800AA04(gFieldLinkPlayerCount);
card = (struct TrainerCard *)gBlockSendBuffer;
TrainerCard_GenerateCardForPlayer(card);
@@ -401,7 +401,7 @@ static void sub_80B2A08(u8 taskId)
else
{
gFieldLinkPlayerCount = GetLinkPlayerCount_2();
- gUnknown_03005DB4 = GetMultiplayerId();
+ gLocalLinkPlayerId = GetMultiplayerId();
sub_800AA04(gFieldLinkPlayerCount);
card = (struct TrainerCard *)gBlockSendBuffer;
TrainerCard_GenerateCardForPlayer(card);
@@ -766,9 +766,9 @@ static void sub_80B3194(u8 taskId)
static void sub_80B31E8(u8 taskId)
{
- if (sub_800AA48() == GetLinkPlayerCount_2())
+ if (GetSavedPlayerCount() == GetLinkPlayerCount_2())
{
- sub_800A620();
+ CheckShouldAdvanceLinkState();
gTasks[taskId].func = sub_80B3220;
}
}
@@ -974,7 +974,7 @@ void sub_80B360C(void)
if (gSpecialVar_0x8004 == 1 || gSpecialVar_0x8004 == 2)
{
- UpdatePlayerLinkBattleRecords(gUnknown_03005DB4 ^ 1);
+ UpdatePlayerLinkBattleRecords(gLocalLinkPlayerId ^ 1);
if (gWirelessCommType)
{
switch (gBattleOutcome)
@@ -995,13 +995,13 @@ void sub_80B360C(void)
}
else
{
- gMain.savedCallback = c2_8056854;
+ gMain.savedCallback = CB2_ReturnToFieldFromMultiplayer;
}
SetMainCallback2(sub_80A0514);
}
-void sub_80B36EC(void)
+void CleanupLinkRoomState(void)
{
if (gSpecialVar_0x8004 == 1 || gSpecialVar_0x8004 == 2 || gSpecialVar_0x8004 == 5 || gSpecialVar_0x8004 == 9)
{
@@ -1011,9 +1011,9 @@ void sub_80B36EC(void)
SetWarpDestinationToDynamicWarp(0x7F);
}
-void sub_80B371C(void)
+void ExitLinkRoom(void)
{
- sub_80872B0();
+ QueueExitLinkRoomKey();
}
static void sub_80B3728(u8 taskId)
@@ -1030,7 +1030,7 @@ static void sub_80B3728(u8 taskId)
if (IsFieldMessageBoxHidden())
{
sub_8087288();
- sub_8009628(gSpecialVar_0x8005);
+ SetLocalLinkPlayerId(gSpecialVar_0x8005);
task->data[0] = 2;
}
break;
@@ -1132,7 +1132,8 @@ static void sub_80B3894(u8 taskId)
}
}
-void sub_80B3924(void)
+// Note: VAR_0x8005 is set to the ID of the trade seat.
+void PlayerEnteredTradeSeat(void)
{
if (gWirelessCommType != 0)
{
@@ -1154,7 +1155,8 @@ void nullsub_37(void)
}
-void sub_80B3968(void)
+// Note: VAR_0x8005 is set to the ID of the player spot.
+void ColosseumPlayerSpotTriggered(void)
{
gLinkType = 0x2211;
@@ -1168,6 +1170,7 @@ void sub_80B3968(void)
}
}
+// This function is never called.
static void sub_80B39A4(void)
{
u8 taskId = CreateTask(sub_80B3728, 80);
@@ -1179,14 +1182,16 @@ void sp02A_crash_sound(void)
ShowTrainerCardInLink(gSpecialVar_0x8006, CB2_ReturnToFieldContinueScriptPlayMapMusic);
}
-bool32 sub_80B39D4(u8 linkPlayerIndex)
+// Returns FALSE if the player has no stars. Returns TRUE otherwise, and puts the name of the
+// color into gStringVar2.
+bool32 GetLinkTrainerCardColor(u8 linkPlayerIndex)
{
u32 trainerCardColorIndex;
gSpecialVar_0x8006 = linkPlayerIndex;
StringCopy(gStringVar1, gLinkPlayers[linkPlayerIndex].name);
- trainerCardColorIndex = sub_80C4904(linkPlayerIndex);
+ trainerCardColorIndex = GetTrainerCardStars(linkPlayerIndex);
if (trainerCardColorIndex == 0)
return FALSE;
@@ -1265,13 +1270,13 @@ void sub_80B3AF8(u8 taskId)
}
break;
case 2:
- if (GetLinkPlayerCount_2() >= sub_800AA48())
+ if (GetLinkPlayerCount_2() >= GetSavedPlayerCount())
{
if (IsLinkMaster())
{
if (++data[1] > 30)
{
- sub_800A620();
+ CheckShouldAdvanceLinkState();
data[0]++;
}
}
diff --git a/src/decoration.c b/src/decoration.c
index 8f6c9c449..0712b5d32 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -1158,7 +1158,7 @@ void sub_8127B90(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decor)
u16 i;
u16 j;
u16 behavior;
- u16 flags;
+ u16 impassableFlag;
u16 v0;
u16 v1;
s16 decLeft;
@@ -1173,11 +1173,11 @@ void sub_8127B90(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decor)
behavior = GetBehaviorByMetatileId(0x200 + gDecorations[decor].tiles[i * decWidth + j]);
if (MetatileBehavior_IsSecretBaseImpassable(behavior) == TRUE || (gDecorations[decor].permission != DECORPERM_PASS_FLOOR && (behavior >> 12)))
{
- flags = 0xc00;
+ impassableFlag = METATILE_COLLISION_MASK;
}
else
{
- flags = 0x000;
+ impassableFlag = 0x000;
}
if (gDecorations[decor].permission != DECORPERM_NA_WALL && MetatileBehavior_IsSecretBaseNorthWall(MapGridGetMetatileBehaviorAt(decLeft, decBottom)) == TRUE)
{
@@ -1190,11 +1190,11 @@ void sub_8127B90(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decor)
v1 = sub_8127B54(gDecorations[decor].id, i * decWidth + j);
if (v1 != 0xFFFF)
{
- MapGridSetMetatileEntryAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | flags | v1);
+ MapGridSetMetatileEntryAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | impassableFlag | v1);
}
else
{
- MapGridSetMetatileIdAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | flags);
+ MapGridSetMetatileIdAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | impassableFlag);
}
}
}
@@ -1254,7 +1254,7 @@ void sub_8127E18(void)
break;
}
}
- VarSet(VAR_0x3F20 + gMapHeader.events->eventObjects[j].graphicsId, sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0]);
+ VarSet(UNKNOWN_VAR_OFFSET_3F20 + gMapHeader.events->eventObjects[j].graphicsId, sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0]);
gSpecialVar_0x8005 = gMapHeader.events->eventObjects[j].localId;
gSpecialVar_0x8006 = sCurDecorMapX;
gSpecialVar_0x8007 = sCurDecorMapY;
@@ -1502,7 +1502,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
{
curX = gTasks[taskId].data[0] + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & 0xf000;
+ behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK;
if (!sub_81284F4(behaviorAt, decoration))
{
return FALSE;
@@ -1527,7 +1527,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
{
curX = gTasks[taskId].data[0] + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & 0xf000;
+ behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK;
if (!MetatileBehavior_IsNormal(behaviorAt) && !sub_8128484(behaviorAt, behaviorBy))
{
return FALSE;
@@ -1547,7 +1547,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
{
curX = gTasks[taskId].data[0] + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[j]) & 0xf000;
+ behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[j]) & METATILE_ELEVATION_MASK;
if (!MetatileBehavior_IsNormal(behaviorAt) && !MetatileBehavior_IsSecretBaseNorthWall(behaviorAt))
{
return FALSE;
diff --git a/src/easy_chat.c b/src/easy_chat.c
index b602077ad..b03058eb9 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -34,18 +34,18 @@
#include "constants/species.h"
#define EZCHAT_TASK_STATE 0
-#define EZCHAT_TASK_KIND 1
+#define EZCHAT_TASK_TYPE 1
#define EZCHAT_TASK_WORDS 2
#define EZCHAT_TASK_MAINCALLBACK 4
#define EZCHAT_TASK_UNK06 6
#define EZCHAT_TASK_SIZE 7
-EWRAM_DATA struct EasyChatScreen *gEasyChatScreen = NULL;
-EWRAM_DATA struct Unk203A11C *gUnknown_0203A11C = 0;
-EWRAM_DATA struct Unk203A120 *gUnknown_0203A120 = 0;
+static EWRAM_DATA struct EasyChatScreen *sEasyChatScreen = NULL;
+static EWRAM_DATA struct Unk203A11C *sUnknown_0203A11C = NULL;
+static EWRAM_DATA struct Unk203A120 *sUnknown_0203A120 = NULL;
static void sub_811A2C0(u8);
-static void sub_811A278(void);
+static void MainCallback_EasyChatScreen(void);
static bool8 sub_811A428(u8);
static void sub_811A2FC(u8);
static void sub_811A4D0(MainCallback);
@@ -67,8 +67,8 @@ static u16 sub_811B0E8(void);
static u16 sub_811B0F8(void);
static u16 sub_811B150(void);
static u16 sub_811B1B4(void);
-static u8 sub_811BA68(void);
-static u8 sub_811BCC8(u8);
+static u8 GetEasyChatScreenFrameId(void);
+static u8 GetEachChatScreenTemplateId(u8);
static void sub_811BDF0(u8 *);
static void sub_811BF78(void);
static bool8 sub_811BF8C(void);
@@ -79,7 +79,7 @@ static bool8 sub_811C170(void);
static bool8 sub_811F28C(void);
static void sub_811F2B8(void);
static u8 sub_811F3AC(void);
-static int sub_811BA3C(void);
+static int FooterHasFourOptions(void);
static int sub_811B184(void);
static int sub_811B264(void);
static int sub_811B32C(void);
@@ -169,7 +169,7 @@ static bool8 sub_811CDD4(void);
static bool8 sub_811CE14(void);
static bool8 sub_811CE54(void);
static void sub_811DF60(u8, u8);
-static int sub_811E920(int);
+static int GetFooterOptionXOffset(int);
static void sub_811DF90(void);
static void sub_811D104(u8);
static void sub_811D214(u8);
@@ -228,10 +228,10 @@ static u16 sub_811F5C4(u16);
static u16 sub_811F6B8(u16);
static bool8 sub_811F764(u16, u8);
static int sub_811F838(u16);
-static void sub_811A8CC(void);
-static void sub_811A8F0(void);
-static void sub_811A914(void);
-static void sub_811A938(void);
+static void DoQuizAnswerEasyChatScreen(void);
+static void DoQuizQuestionEasyChatScreen(void);
+static void DoQuizSetAnswerEasyChatScreen(void);
+static void DoQuizSetQuestionEasyChatScreen(void);
struct Unk8597530
{
@@ -242,28 +242,29 @@ struct Unk8597530
static const struct Unk8597530 sUnknown_08597530[] = {
{
.word = 26,
- .callback = sub_811A8CC,
+ .callback = DoQuizAnswerEasyChatScreen,
},
{
.word = 25,
- .callback = sub_811A8F0,
+ .callback = DoQuizQuestionEasyChatScreen,
},
{
.word = 28,
- .callback = sub_811A914,
+ .callback = DoQuizSetAnswerEasyChatScreen,
},
{
.word = 27,
- .callback = sub_811A938,
+ .callback = DoQuizSetQuestionEasyChatScreen,
},
};
-static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
+
+static const struct EasyChatScreenTemplate sEasyChatScreenTemplates[] = {
{
- .unk_00 = 0,
+ .type = EASY_CHAT_TYPE_PROFILE,
.numColumns = 2,
.numRows = 2,
- .unk_03_0 = 0,
- .unk_03_7 = 0,
+ .frameId = 0,
+ .fourFooterOptions = FALSE,
.titleText = gText_Profile,
.instructionsText1 = gText_CombineFourWordsOrPhrases,
.instructionsText2 = gText_AndMakeYourProfile,
@@ -271,11 +272,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = gText_IsAsShownOkay,
},
{
- .unk_00 = 1,
+ .type = EASY_CHAT_TYPE_BATTLE_START,
.numColumns = 2,
.numRows = 3,
- .unk_03_0 = 1,
- .unk_03_7 = 0,
+ .frameId = 1,
+ .fourFooterOptions = FALSE,
.titleText = gText_AtTheBattlesStart,
.instructionsText1 = gText_CombineSixWordsOrPhrases,
.instructionsText2 = gText_AndMakeAMessage,
@@ -283,11 +284,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = gText_IsAsShownOkay,
},
{
- .unk_00 = 2,
+ .type = EASY_CHAT_TYPE_BATTLE_WON,
.numColumns = 2,
.numRows = 3,
- .unk_03_0 = 1,
- .unk_03_7 = 0,
+ .frameId = 1,
+ .fourFooterOptions = FALSE,
.titleText = gText_UponWinningABattle,
.instructionsText1 = gText_CombineSixWordsOrPhrases,
.instructionsText2 = gText_AndMakeAMessage,
@@ -295,11 +296,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = gText_IsAsShownOkay,
},
{
- .unk_00 = 3,
+ .type = EASY_CHAT_TYPE_BATTLE_LOST,
.numColumns = 2,
.numRows = 3,
- .unk_03_0 = 1,
- .unk_03_7 = 0,
+ .frameId = 1,
+ .fourFooterOptions = FALSE,
.titleText = gText_UponLosingABattle,
.instructionsText1 = gText_CombineSixWordsOrPhrases,
.instructionsText2 = gText_AndMakeAMessage,
@@ -307,11 +308,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = gText_IsAsShownOkay,
},
{
- .unk_00 = 4,
+ .type = EASY_CHAT_TYPE_MAIL,
.numColumns = 2,
.numRows = 5,
- .unk_03_0 = 2,
- .unk_03_7 = 0,
+ .frameId = 2,
+ .fourFooterOptions = FALSE,
.titleText = NULL,
.instructionsText1 = gText_CombineNineWordsOrPhrases,
.instructionsText2 = gText_AndMakeAMessage2,
@@ -319,11 +320,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = gText_IsAsShownOkay,
},
{
- .unk_00 = 5,
+ .type = EASY_CHAT_TYPE_INTERVIEW,
.numColumns = 2,
.numRows = 2,
- .unk_03_0 = 5,
- .unk_03_7 = 0,
+ .frameId = 5,
+ .fourFooterOptions = FALSE,
.titleText = gText_Interview,
.instructionsText1 = gText_CombineFourWordsOrPhrases,
.instructionsText2 = gText_LetsReplyToTheInterview,
@@ -331,11 +332,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = gText_IsAsShownOkay,
},
{
- .unk_00 = 6,
+ .type = EASY_CHAT_TYPE_BARD_SONG,
.numColumns = 2,
.numRows = 3,
- .unk_03_0 = 1,
- .unk_03_7 = 0,
+ .frameId = 1,
+ .fourFooterOptions = FALSE,
.titleText = gText_TheBardsSong,
.instructionsText1 = gText_ChangeJustOneWordOrPhrase,
.instructionsText2 = gText_AndImproveTheBardsSong,
@@ -343,11 +344,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = gText_IsAsShownOkay,
},
{
- .unk_00 = 7,
+ .type = EASY_CHAT_TYPE_FAN_CLUB,
.numColumns = 1,
.numRows = 1,
- .unk_03_0 = 4,
- .unk_03_7 = 0,
+ .frameId = 4,
+ .fourFooterOptions = FALSE,
.titleText = gText_Interview,
.instructionsText1 = gText_FindWordsThatDescribeYour,
.instructionsText2 = gText_FeelingsRightNow,
@@ -355,11 +356,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = gText_IsAsShownOkay,
},
{
- .unk_00 = 9,
+ .type = EASY_CHAT_TYPE_TRENDY_PHRASE,
.numColumns = 2,
.numRows = 1,
- .unk_03_0 = 3,
- .unk_03_7 = 0,
+ .frameId = 3,
+ .fourFooterOptions = FALSE,
.titleText = gText_WhatsHipAndHappening,
.instructionsText1 = gText_CombineTwoWordsOrPhrases,
.instructionsText2 = gText_AndMakeATrendySaying,
@@ -367,11 +368,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = gText_IsAsShownOkay,
},
{
- .unk_00 = 16,
+ .type = EASY_CHAT_TYPE_QUIZ_QUESTION,
.numColumns = 2,
.numRows = 5,
- .unk_03_0 = 7,
- .unk_03_7 = 1,
+ .frameId = 7,
+ .fourFooterOptions = TRUE,
.titleText = NULL,
.instructionsText1 = gText_AfterYouHaveReadTheQuiz,
.instructionsText2 = gText_QuestionPressTheAButton,
@@ -379,11 +380,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = NULL,
},
{
- .unk_00 = 15,
+ .type = EASY_CHAT_TYPE_QUIZ_ANSWER,
.numColumns = 1,
.numRows = 1,
- .unk_03_0 = 6,
- .unk_03_7 = 1,
+ .frameId = 6,
+ .fourFooterOptions = TRUE,
.titleText = gText_TheQuizAnswerIs,
.instructionsText1 = gText_OutOfTheListedChoices,
.instructionsText2 = gText_SelectTheAnswerToTheQuiz,
@@ -391,11 +392,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = gText_IsAsShownOkay,
},
{
- .unk_00 = 17,
+ .type = EASY_CHAT_TYPE_QUIZ_SET_QUESTION,
.numColumns = 2,
.numRows = 5,
- .unk_03_0 = 8,
- .unk_03_7 = 1,
+ .frameId = 8,
+ .fourFooterOptions = TRUE,
.titleText = NULL,
.instructionsText1 = gText_CombineNineWordsOrPhrases,
.instructionsText2 = gText_AndCreateAQuiz,
@@ -403,11 +404,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = NULL,
},
{
- .unk_00 = 18,
+ .type = EASY_CHAT_TYPE_QUIZ_SET_ANSWER,
.numColumns = 1,
.numRows = 1,
- .unk_03_0 = 6,
- .unk_03_7 = 1,
+ .frameId = 6,
+ .fourFooterOptions = TRUE,
.titleText = gText_TheQuizAnswerIs,
.instructionsText1 = gText_PickAWordOrPhraseAnd,
.instructionsText2 = gText_SetTheQuizAnswer,
@@ -415,11 +416,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = NULL,
},
{
- .unk_00 = 6,
+ .type = EASY_CHAT_TYPE_BARD_SONG,
.numColumns = 2,
.numRows = 3,
- .unk_03_0 = 1,
- .unk_03_7 = 0,
+ .frameId = 1,
+ .fourFooterOptions = FALSE,
.titleText = gText_TheBardsSong,
.instructionsText1 = gText_ChangeJustOneWordOrPhrase,
.instructionsText2 = gText_AndImproveTheBardsSong,
@@ -427,11 +428,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = gText_IsAsShownOkay,
},
{
- .unk_00 = 19,
+ .type = EASY_CHAT_TYPE_APPRENTICE,
.numColumns = 2,
.numRows = 3,
- .unk_03_0 = 1,
- .unk_03_7 = 0,
+ .frameId = 1,
+ .fourFooterOptions = FALSE,
.titleText = gText_ApprenticesPhrase,
.instructionsText1 = gText_FindWordsWhichFit,
.instructionsText2 = gText_TheTrainersImage,
@@ -439,11 +440,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = gText_IsAsShownOkay,
},
{
- .unk_00 = 13,
+ .type = EASY_CHAT_TYPE_GOOD_SAYING,
.numColumns = 2,
.numRows = 1,
- .unk_03_0 = 3,
- .unk_03_7 = 0,
+ .frameId = 3,
+ .fourFooterOptions = FALSE,
.titleText = gText_GoodSaying,
.instructionsText1 = gText_CombineTwoWordsOrPhrases2,
.instructionsText2 = gText_ToTeachHerAGoodSaying,
@@ -451,11 +452,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = gText_IsAsShownOkay,
},
{
- .unk_00 = 10,
+ .type = EASY_CHAT_TYPE_GABBY_AND_TY,
.numColumns = 1,
.numRows = 1,
- .unk_03_0 = 4,
- .unk_03_7 = 0,
+ .frameId = 4,
+ .fourFooterOptions = FALSE,
.titleText = gText_Interview,
.instructionsText1 = gText_FindWordsThatDescribeYour,
.instructionsText2 = gText_FeelingsRightNow,
@@ -463,11 +464,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = gText_IsAsShownOkay,
},
{
- .unk_00 = 12,
+ .type = EASY_CHAT_TYPE_BATTLE_TOWER_INTERVIEW,
.numColumns = 1,
.numRows = 1,
- .unk_03_0 = 4,
- .unk_03_7 = 0,
+ .frameId = 4,
+ .fourFooterOptions = FALSE,
.titleText = gText_Interview,
.instructionsText1 = gText_FindWordsThatDescribeYour,
.instructionsText2 = gText_FeelingsRightNow,
@@ -475,11 +476,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = gText_IsAsShownOkay,
},
{
- .unk_00 = 11,
+ .type = EASY_CHAT_TYPE_CONTEST_INTERVIEW,
.numColumns = 1,
.numRows = 1,
- .unk_03_0 = 4,
- .unk_03_7 = 0,
+ .frameId = 4,
+ .fourFooterOptions = FALSE,
.titleText = gText_Interview,
.instructionsText1 = gText_FindWordsThatDescribeYour,
.instructionsText2 = gText_FeelingsRightNow,
@@ -487,11 +488,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = gText_IsAsShownOkay,
},
{
- .unk_00 = 14,
+ .type = EASY_CHAT_TYPE_FAN_QUESTION,
.numColumns = 1,
.numRows = 1,
- .unk_03_0 = 4,
- .unk_03_7 = 0,
+ .frameId = 4,
+ .fourFooterOptions = FALSE,
.titleText = gText_FansQuestion,
.instructionsText1 = gText_FindWordsWhichFit,
.instructionsText2 = gText_TheTrainersImage,
@@ -499,11 +500,11 @@ static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
.confirmText2 = gText_IsAsShownOkay,
},
{
- .unk_00 = 20,
+ .type = EASY_CHAT_TYPE_QUESTIONNAIRE,
.numColumns = 2,
.numRows = 2,
- .unk_03_0 = 0,
- .unk_03_7 = 0,
+ .frameId = 0,
+ .fourFooterOptions = FALSE,
.titleText = gText_Questionnaire,
.instructionsText1 = gText_CombineFourWordsOrPhrases,
.instructionsText2 = gText_AndFillOutTheQuestionnaire,
@@ -534,10 +535,10 @@ static const u16 sBerryMasterWifePhrases[][2] = {
{EC_WORD_SUPER, EC_WORD_HUSTLE},
};
-static const u16 sUnknown_08597780[] = INCBIN_U16("graphics/misc/interview_triangle_cursor.gbapal");
-static const u32 sUnknown_085977A0[] = INCBIN_U32("graphics/misc/interview_triangle_cursor.4bpp");
-static const u32 sUnknown_085977C0[] = INCBIN_U32("graphics/misc/interview_arrow.4bpp");
-static const u32 sUnknown_085978C0[] = INCBIN_U32("graphics/misc/interview_buttons.4bpp");
+static const u16 sEasyChatTriangleCursorPalette[] = INCBIN_U16("graphics/easy_chat/triangle_cursor.gbapal");
+static const u32 sEasyChatTriangleCursorGfx[] = INCBIN_U32("graphics/easy_chat/triangle_cursor.4bpp");
+static const u32 sEasyChatScrollIndicatorGfx[] = INCBIN_U32("graphics/easy_chat/scroll_indicator.4bpp");
+static const u32 sEasyChatStartSelectButtonsGfx[] = INCBIN_U32("graphics/easy_chat/start_select_buttons.4bpp");
static const u16 sUnknown_085979C0[] = INCBIN_U16("graphics/misc/interview_frame.gbapal");
static const u32 sUnknown_085979E0[] = INCBIN_U32("graphics/misc/interview_frame.4bpp.lz");
static const u16 sUnknown_08597B14[] = INCBIN_U16("graphics/misc/interview_frame_orange.gbapal");
@@ -546,69 +547,69 @@ static const u32 sUnknown_08597B54[] = INCBIN_U32("graphics/misc/interview_frame
static const u16 sUnknown_08597C1C[] = INCBIN_U16("graphics/misc/8597C1C.gbapal");
static const u16 sUnknown_08597C24[] = INCBIN_U16("graphics/misc/8597C24.gbapal");
-static const struct Unk08597C30 gUnknown_08597C30[] = {
+static const struct EasyChatPhraseFrameDimensions sPhraseFrameDimensions[] = {
{
- .unk0_0 = 3,
- .unk0_5 = 4,
- .unk1 = 24,
- .unk2 = 4,
- .unk3 = 0,
+ .left = 3,
+ .top = 4,
+ .width = 24,
+ .height = 4,
+ .footerId = 0,
},
{
- .unk0_0 = 3,
- .unk0_5 = 3,
- .unk1 = 24,
- .unk2 = 6,
- .unk3 = 0,
+ .left = 3,
+ .top = 3,
+ .width = 24,
+ .height = 6,
+ .footerId = 0,
},
{
- .unk0_0 = 3,
- .unk0_5 = 0,
- .unk1 = 24,
- .unk2 = 10,
- .unk3 = 0,
+ .left = 3,
+ .top = 0,
+ .width = 24,
+ .height = 10,
+ .footerId = 0,
},
{
- .unk0_0 = 3,
- .unk0_5 = 5,
- .unk1 = 24,
- .unk2 = 2,
- .unk3 = 0,
+ .left = 3,
+ .top = 5,
+ .width = 24,
+ .height = 2,
+ .footerId = 0,
},
{
- .unk0_0 = 16,
- .unk0_5 = 5,
- .unk1 = 12,
- .unk2 = 2,
- .unk3 = 0,
+ .left = 16,
+ .top = 5,
+ .width = 12,
+ .height = 2,
+ .footerId = 0,
},
{
- .unk0_0 = 3,
- .unk0_5 = 4,
- .unk1 = 24,
- .unk2 = 4,
- .unk3 = 0,
+ .left = 3,
+ .top = 4,
+ .width = 24,
+ .height = 4,
+ .footerId = 0,
},
{
- .unk0_0 = 9,
- .unk0_5 = 4,
- .unk1 = 12,
- .unk2 = 2,
- .unk3 = 1,
+ .left = 9,
+ .top = 4,
+ .width = 12,
+ .height = 2,
+ .footerId = 1,
},
{
- .unk0_0 = 5,
- .unk0_5 = 3,
- .unk1 = 0x14,
- .unk2 = 10,
- .unk3 = 3,
+ .left = 5,
+ .top = 3,
+ .width = 0x14,
+ .height = 10,
+ .footerId = 3,
},
{
- .unk0_0 = 3,
- .unk0_5 = 0,
- .unk1 = 24,
- .unk2 = 10,
- .unk3 = 2,
+ .left = 3,
+ .top = 0,
+ .width = 24,
+ .height = 10,
+ .footerId = 2,
},
};
@@ -701,28 +702,28 @@ static const u8 *const sUnknown_08597C90[] = {
gUnknown_862B86C,
};
-static const struct SpriteSheet sUnknown_08597CA0[] = {
+static const struct SpriteSheet sEasyChatSpriteSheets[] = {
{
- .data = sUnknown_085977A0,
+ .data = sEasyChatTriangleCursorGfx,
.size = 0x0020,
.tag = 0
},
{
- .data = sUnknown_085977C0,
+ .data = sEasyChatScrollIndicatorGfx,
.size = 0x0100,
.tag = 2
},
{
- .data = sUnknown_085978C0,
+ .data = sEasyChatStartSelectButtonsGfx,
.size = 0x0100,
.tag = 3
},
{0}
};
-static const struct SpritePalette sUnknown_08597CC0[] = {
+static const struct SpritePalette sEasyChatSpritePalettes[] = {
{
- .data = sUnknown_08597780,
+ .data = sEasyChatTriangleCursorPalette,
.tag = 0,
},
{
@@ -999,7 +1000,7 @@ static const struct SpriteTemplate sUnknown_08597E48 = {
.callback = SpriteCallbackDummy,
};
-static const u8 sUnknown_08597E60[][4] = {
+static const u8 sFooterOptionXOffsets[][4] = {
{16, 111, 196, 0},
{16, 78, 130, 160},
{16, 80, 134, 170},
@@ -1039,14 +1040,14 @@ const u8 *const gEasyChatGroupNamePointers[] = {
[EC_GROUP_POKEMON_2] = gEasyChatGroupName_Pokemon2,
};
-static const u16 sUnknown_0859E62C[] = {
+static const u16 sDefaultProfileWords[] = {
EC_WORD_I_AM,
EC_WORD_A,
EC_WORD_POKEMON,
EC_WORD_FRIEND,
};
-static const u16 sUnknown_0859E634[] = {
+static const u16 sDefaultBattleStartWords[] = {
EC_WORD_ARE,
EC_WORD_YOU,
EC_WORD_READY,
@@ -1077,20 +1078,20 @@ static const u16 sUnknown_0859E658[] = {
SPECIES_DEOXYS,
};
-void sub_811A20C(u8 kind, u16 *words, MainCallback callback, u8 sizeParam)
+void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback, u8 displayedPersonType)
{
u8 taskId;
ResetTasks();
taskId = CreateTask(sub_811A2C0, 0);
- gTasks[taskId].data[EZCHAT_TASK_KIND] = kind;
- gTasks[taskId].data[EZCHAT_TASK_SIZE] = sizeParam;
+ gTasks[taskId].data[EZCHAT_TASK_TYPE] = type;
+ gTasks[taskId].data[EZCHAT_TASK_SIZE] = displayedPersonType;
SetWordTaskArg(taskId, EZCHAT_TASK_WORDS, (u32)words);
SetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK, (u32)callback);
- SetMainCallback2(sub_811A278);
+ SetMainCallback2(MainCallback_EasyChatScreen);
}
-static void sub_811A278(void)
+static void MainCallback_EasyChatScreen(void)
{
RunTasks();
AnimateSprites();
@@ -1098,7 +1099,7 @@ static void sub_811A278(void)
UpdatePaletteFade();
}
-static void sub_811A290(void)
+static void VBlankCallback_EasyChatScreen(void)
{
TransferPlttBuffer();
LoadOam();
@@ -1113,7 +1114,7 @@ static void sub_811A2A4(u8 taskId, TaskFunc taskFunc)
static void sub_811A2C0(u8 taskId)
{
- if (!is_c1_link_related_active())
+ if (!IsUpdateLinkStateCBActive())
{
while (sub_811A428(taskId));
}
@@ -1136,22 +1137,22 @@ static void sub_811A2FC(u8 taskId)
switch (data[EZCHAT_TASK_STATE])
{
case 0:
- SetVBlankCallback(sub_811A290);
+ SetVBlankCallback(VBlankCallback_EasyChatScreen);
BlendPalettes(0xFFFFFFFF, 16, 0);
- BeginNormalPaletteFade(-1, -1, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, 0);
data[EZCHAT_TASK_STATE] = 5;
break;
case 1:
v0 = sub_811AAAC();
if (sub_811A88C(v0))
{
- BeginNormalPaletteFade(-1, -2, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, 0);
data[EZCHAT_TASK_STATE] = 3;
data[EZCHAT_TASK_UNK06] = v0;
}
else if (v0 == 0x18)
{
- BeginNormalPaletteFade(-1, -1, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, 0);
data[EZCHAT_TASK_STATE] = 4;
}
else if (v0 != 0)
@@ -1163,27 +1164,19 @@ static void sub_811A2FC(u8 taskId)
break;
case 2:
if (!sub_811C170())
- {
data[EZCHAT_TASK_STATE] = 1;
- }
break;
case 3:
if (!gPaletteFade.active)
- {
sub_811A8A4(data[EZCHAT_TASK_UNK06]);
- }
break;
case 4:
if (!gPaletteFade.active)
- {
sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
- }
break;
case 5:
if (!gPaletteFade.active)
- {
data[EZCHAT_TASK_STATE] = 1;
- }
break;
}
}
@@ -1208,7 +1201,7 @@ static bool8 sub_811A428(u8 taskId)
}
break;
case 2:
- if (!EasyChat_AllocateResources(data[EZCHAT_TASK_KIND], (u16 *)GetWordTaskArg(taskId, EZCHAT_TASK_WORDS), data[EZCHAT_TASK_SIZE]))
+ if (!EasyChat_AllocateResources(data[EZCHAT_TASK_TYPE], (u16 *)GetWordTaskArg(taskId, EZCHAT_TASK_WORDS), data[EZCHAT_TASK_SIZE]))
{
sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
}
@@ -1241,98 +1234,98 @@ static void sub_811A4D0(MainCallback callback)
SetMainCallback2(callback);
}
-void easy_chat_input_maybe(void)
+void ShowEasyChatScreen(void)
{
int i;
u16 *words;
struct MauvilleManBard *bard;
- u8 sizeParam = 3;
+ u8 displayedPersonType = EASY_CHAT_PERSON_DISPLAY_NONE;
switch (gSpecialVar_0x8004)
{
- case 0:
- words = gSaveBlock1Ptr->unk2BB0;
+ case EASY_CHAT_TYPE_PROFILE:
+ words = gSaveBlock1Ptr->easyChatProfile;
break;
- case 1:
- words = gSaveBlock1Ptr->unk2BBC;
+ case EASY_CHAT_TYPE_BATTLE_START:
+ words = gSaveBlock1Ptr->easyChatBattleStart;
break;
- case 2:
- words = gSaveBlock1Ptr->unk2BC8;
+ case EASY_CHAT_TYPE_BATTLE_WON:
+ words = gSaveBlock1Ptr->easyChatBattleWon;
break;
- case 3:
- words = gSaveBlock1Ptr->unk2BD4;
+ case EASY_CHAT_TYPE_BATTLE_LOST:
+ words = gSaveBlock1Ptr->easyChatBattleLost;
break;
- case 4:
+ case EASY_CHAT_TYPE_MAIL:
words = gSaveBlock1Ptr->mail[gSpecialVar_0x8005].words;
break;
- case 6:
+ case EASY_CHAT_TYPE_BARD_SONG:
bard = &gSaveBlock1Ptr->oldMan.bard;
for (i = 0; i < 6; i ++)
- {
bard->temporaryLyrics[i] = bard->songLyrics[i];
- }
+
words = bard->temporaryLyrics;
break;
- case 5:
+ case EASY_CHAT_TYPE_INTERVIEW:
words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainer.words;
- sizeParam = gSpecialVar_0x8006;
+ displayedPersonType = gSpecialVar_0x8006;
break;
- case 7:
+ case EASY_CHAT_TYPE_FAN_CLUB:
words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words[gSpecialVar_0x8006];
- sizeParam = 1;
+ displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE;
break;
- case 8:
+ case EASY_CHAT_TYPE_UNK_8:
words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].unkShow04.words;
- sizeParam = 0;
+ displayedPersonType = EASY_CHAT_PERSON_REPORTER_MALE;
break;
- case 9:
+ case EASY_CHAT_TYPE_TRENDY_PHRASE:
words = (u16 *)gStringVar3;
words[0] = gSaveBlock1Ptr->easyChatPairs[0].words[0];
words[1] = gSaveBlock1Ptr->easyChatPairs[0].words[1];
break;
- case 10:
+ case EASY_CHAT_TYPE_GABBY_AND_TY:
words = gSaveBlock1Ptr->gabbyAndTyData.quote;
*words = -1;
- sizeParam = 1;
+ displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE;
break;
- case 11:
+ case EASY_CHAT_TYPE_CONTEST_INTERVIEW:
words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainer.words[gSpecialVar_0x8006];
- sizeParam = 0;
+ displayedPersonType = EASY_CHAT_PERSON_REPORTER_MALE;
break;
- case 12:
+ case EASY_CHAT_TYPE_BATTLE_TOWER_INTERVIEW:
words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words18;
- sizeParam = 1;
+ displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE;
break;
- case 13:
+ case EASY_CHAT_TYPE_GOOD_SAYING:
words = (u16 *)gStringVar3;
InitializeEasyChatWordArray(words, 2);
break;
- case 14:
+ case EASY_CHAT_TYPE_FAN_QUESTION:
words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanClubSpecial.words;
words[0] = -1;
- sizeParam = 2;
+ displayedPersonType = EASY_CHAT_PERSON_BOY;
break;
- case 15:
+ case EASY_CHAT_TYPE_QUIZ_ANSWER:
words = &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016;
break;
- case 16:
+ case EASY_CHAT_TYPE_QUIZ_QUESTION:
return;
- case 17:
+ case EASY_CHAT_TYPE_QUIZ_SET_QUESTION:
words = gSaveBlock1Ptr->lilycoveLady.quiz.unk_002;
break;
- case 18:
+ case EASY_CHAT_TYPE_QUIZ_SET_ANSWER:
words = &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014;
break;
- case 19:
+ case EASY_CHAT_TYPE_APPRENTICE:
words = gSaveBlock2Ptr->apprentices[0].easyChatWords;
break;
- case 20:
+ case EASY_CHAT_TYPE_QUESTIONNAIRE:
words = GetSaveBlock1Field3564();
break;
default:
return;
}
+
CleanupOverworldWindowsAndTilemaps();
- sub_811A20C(gSpecialVar_0x8004, words, CB2_ReturnToFieldContinueScript, sizeParam);
+ DoEasyChatScreen(gSpecialVar_0x8004, words, CB2_ReturnToFieldContinueScript, displayedPersonType);
}
static void sub_811A7E4(void)
@@ -1351,7 +1344,7 @@ static void sub_811A7E4(void)
lilycoveLady = &gSaveBlock1Ptr->lilycoveLady;
lilycoveLady->quiz.unk_016 = -1;
CleanupOverworldWindowsAndTilemaps();
- sub_811A8F0();
+ DoQuizQuestionEasyChatScreen();
}
return;
}
@@ -1389,88 +1382,100 @@ static void sub_811A8A4(u16 word)
sub_811A4D0(sUnknown_08597530[i].callback);
}
-static void sub_811A8CC(void)
+static void DoQuizAnswerEasyChatScreen(void)
{
- sub_811A20C(0xF, &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016, CB2_ReturnToFieldContinueScript, 3);
+ DoEasyChatScreen(
+ EASY_CHAT_TYPE_QUIZ_ANSWER,
+ &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016,
+ CB2_ReturnToFieldContinueScript,
+ EASY_CHAT_PERSON_DISPLAY_NONE);
}
-static void sub_811A8F0(void)
+static void DoQuizQuestionEasyChatScreen(void)
{
- sub_811A20C(0x10, gSaveBlock1Ptr->lilycoveLady.quiz.unk_002, CB2_ReturnToFieldContinueScript, 3);
+ DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_QUESTION,
+ gSaveBlock1Ptr->lilycoveLady.quiz.unk_002,
+ CB2_ReturnToFieldContinueScript,
+ EASY_CHAT_PERSON_DISPLAY_NONE);
}
-static void sub_811A914(void)
+static void DoQuizSetAnswerEasyChatScreen(void)
{
- sub_811A20C(0x12, &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014, CB2_ReturnToFieldContinueScript, 3);
+ DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_SET_ANSWER,
+ &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014,
+ CB2_ReturnToFieldContinueScript,
+ EASY_CHAT_PERSON_DISPLAY_NONE);
}
-static void sub_811A938(void)
+static void DoQuizSetQuestionEasyChatScreen(void)
{
- sub_811A20C(0x11, gSaveBlock1Ptr->lilycoveLady.quiz.unk_002, CB2_ReturnToFieldContinueScript, 3);
+ DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_SET_QUESTION,
+ gSaveBlock1Ptr->lilycoveLady.quiz.unk_002,
+ CB2_ReturnToFieldContinueScript,
+ EASY_CHAT_PERSON_DISPLAY_NONE);
}
-static bool8 EasyChat_AllocateResources(u8 kind, u16 *words, u8 sizeParam)
+static bool8 EasyChat_AllocateResources(u8 type, u16 *words, u8 displayedPersonType)
{
u8 templateId;
int i;
- gEasyChatScreen = malloc(sizeof(*gEasyChatScreen));
- if (gEasyChatScreen == NULL)
- {
+ sEasyChatScreen = malloc(sizeof(*sEasyChatScreen));
+ if (sEasyChatScreen == NULL)
return FALSE;
- }
- gEasyChatScreen->kind = kind;
- gEasyChatScreen->words = words;
- gEasyChatScreen->mainCursorColumn = 0;
- gEasyChatScreen->mainCursorRow = 0;
- gEasyChatScreen->unk_09 = 0;
- gEasyChatScreen->sizeParam = sizeParam;
- gEasyChatScreen->unk_13 = 0;
- templateId = sub_811BCC8(kind);
- if (kind == 0x10)
+
+ sEasyChatScreen->type = type;
+ sEasyChatScreen->words = words;
+ sEasyChatScreen->mainCursorColumn = 0;
+ sEasyChatScreen->mainCursorRow = 0;
+ sEasyChatScreen->unk_09 = 0;
+ sEasyChatScreen->displayedPersonType = displayedPersonType;
+ sEasyChatScreen->unk_13 = 0;
+ templateId = GetEachChatScreenTemplateId(type);
+ if (type == EASY_CHAT_TYPE_QUIZ_QUESTION)
{
- sub_811BDF0(gEasyChatScreen->unk_14);
- gEasyChatScreen->titleText = gEasyChatScreen->unk_14;
- gEasyChatScreen->state = 7;
+ sub_811BDF0(sEasyChatScreen->unk_14);
+ sEasyChatScreen->titleText = sEasyChatScreen->unk_14;
+ sEasyChatScreen->state = 7;
}
else
{
- gEasyChatScreen->state = 0;
- gEasyChatScreen->titleText = gEasyChatScreenTemplates[templateId].titleText;
- }
- gEasyChatScreen->numColumns = gEasyChatScreenTemplates[templateId].numColumns;
- gEasyChatScreen->numRows = gEasyChatScreenTemplates[templateId].numRows;
- gEasyChatScreen->unk_07 = gEasyChatScreen->numColumns * gEasyChatScreen->numRows;
- gEasyChatScreen->templateId = templateId;
- if (gEasyChatScreen->unk_07 > 9)
- {
- gEasyChatScreen->unk_07 = 9;
+ sEasyChatScreen->state = 0;
+ sEasyChatScreen->titleText = sEasyChatScreenTemplates[templateId].titleText;
}
+
+ sEasyChatScreen->numColumns = sEasyChatScreenTemplates[templateId].numColumns;
+ sEasyChatScreen->numRows = sEasyChatScreenTemplates[templateId].numRows;
+ sEasyChatScreen->unk_07 = sEasyChatScreen->numColumns * sEasyChatScreen->numRows;
+ sEasyChatScreen->templateId = templateId;
+ if (sEasyChatScreen->unk_07 > 9)
+ sEasyChatScreen->unk_07 = 9;
+
if (words != NULL)
{
- CpuCopy16(words, gEasyChatScreen->ecWordBuffer, gEasyChatScreen->unk_07 * sizeof(u16));
+ CpuCopy16(words, sEasyChatScreen->ecWordBuffer, sEasyChatScreen->unk_07 * sizeof(u16));
}
else
{
- for (i = 0; i < gEasyChatScreen->unk_07; i ++)
- {
- gEasyChatScreen->ecWordBuffer[i] = -1;
- }
- gEasyChatScreen->words = gEasyChatScreen->ecWordBuffer;
+ for (i = 0; i < sEasyChatScreen->unk_07; i ++)
+ sEasyChatScreen->ecWordBuffer[i] = -1;
+
+ sEasyChatScreen->words = sEasyChatScreen->ecWordBuffer;
}
- gEasyChatScreen->unk_0d = (sub_811F3AC() - 1) / 2 + 1;
+
+ sEasyChatScreen->unk_0d = (sub_811F3AC() - 1) / 2 + 1;
return TRUE;
}
static void EasyChat_FreeResources(void)
{
- if (gEasyChatScreen != NULL)
- FREE_AND_SET_NULL(gEasyChatScreen);
+ if (sEasyChatScreen != NULL)
+ FREE_AND_SET_NULL(sEasyChatScreen);
}
static u16 sub_811AAAC(void)
{
- switch (gEasyChatScreen->state)
+ switch (sEasyChatScreen->state)
{
case 0:
return sub_811AB68();
@@ -1500,7 +1505,7 @@ static u16 sub_811AAAC(void)
bool32 sub_811AB44(void)
{
- switch (sub_811BA68())
+ switch (GetEasyChatScreenFrameId())
{
case 2:
case 7:
@@ -1517,10 +1522,10 @@ static u16 sub_811AB68(void)
if (gMain.newKeys & A_BUTTON)
{
sub_811BF78();
- gEasyChatScreen->state = 2;
- gEasyChatScreen->unk_0a = 0;
- gEasyChatScreen->unk_0b = 0;
- gEasyChatScreen->unk_0c = 0;
+ sEasyChatScreen->state = 2;
+ sEasyChatScreen->unk_0a = 0;
+ sEasyChatScreen->unk_0b = 0;
+ sEasyChatScreen->unk_0c = 0;
return 9;
}
else if (gMain.newKeys & B_BUTTON)
@@ -1533,51 +1538,51 @@ static u16 sub_811AB68(void)
}
else if (gMain.newKeys & DPAD_UP)
{
- gEasyChatScreen->mainCursorRow--;
+ sEasyChatScreen->mainCursorRow--;
break;
}
else if (gMain.newKeys & DPAD_LEFT)
{
- gEasyChatScreen->mainCursorColumn--;
+ sEasyChatScreen->mainCursorColumn--;
break;
}
else if (gMain.newKeys & DPAD_DOWN)
{
- gEasyChatScreen->mainCursorRow++;
+ sEasyChatScreen->mainCursorRow++;
break;
}
else if (gMain.newKeys & DPAD_RIGHT)
{
- gEasyChatScreen->mainCursorColumn++;
+ sEasyChatScreen->mainCursorColumn++;
break;
}
return 0;
} while (0);
- if (gEasyChatScreen->mainCursorRow < 0)
- gEasyChatScreen->mainCursorRow = gEasyChatScreenTemplates[gEasyChatScreen->templateId].numRows;
+ if (sEasyChatScreen->mainCursorRow < 0)
+ sEasyChatScreen->mainCursorRow = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows;
- if (gEasyChatScreen->mainCursorRow > gEasyChatScreenTemplates[gEasyChatScreen->templateId].numRows)
- gEasyChatScreen->mainCursorRow = 0;
+ if (sEasyChatScreen->mainCursorRow > sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows)
+ sEasyChatScreen->mainCursorRow = 0;
- if (gEasyChatScreen->mainCursorRow == gEasyChatScreenTemplates[gEasyChatScreen->templateId].numRows)
+ if (sEasyChatScreen->mainCursorRow == sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows)
{
- if (gEasyChatScreen->mainCursorColumn > 2)
- gEasyChatScreen->mainCursorColumn = 2;
+ if (sEasyChatScreen->mainCursorColumn > 2)
+ sEasyChatScreen->mainCursorColumn = 2;
- gEasyChatScreen->state = 1;
+ sEasyChatScreen->state = 1;
return 3;
}
- if (gEasyChatScreen->mainCursorColumn < 0)
- gEasyChatScreen->mainCursorColumn = gEasyChatScreenTemplates[gEasyChatScreen->templateId].numColumns - 1;
+ if (sEasyChatScreen->mainCursorColumn < 0)
+ sEasyChatScreen->mainCursorColumn = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns - 1;
- if (gEasyChatScreen->mainCursorColumn >= gEasyChatScreenTemplates[gEasyChatScreen->templateId].numColumns)
- gEasyChatScreen->mainCursorColumn = 0;
+ if (sEasyChatScreen->mainCursorColumn >= sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns)
+ sEasyChatScreen->mainCursorColumn = 0;
- if (sub_811AB44() && gEasyChatScreen->mainCursorColumn == 1 && gEasyChatScreen->mainCursorRow == 4)
- gEasyChatScreen->mainCursorColumn = 0;
+ if (sub_811AB44() && sEasyChatScreen->mainCursorColumn == 1 && sEasyChatScreen->mainCursorRow == 4)
+ sEasyChatScreen->mainCursorColumn = 0;
return 2;
}
@@ -1588,7 +1593,7 @@ static u16 sub_811ACDC(void)
{
if (gMain.newKeys & A_BUTTON)
{
- switch (gEasyChatScreen->mainCursorColumn)
+ switch (sEasyChatScreen->mainCursorColumn)
{
case 0:
return sub_811B184();
@@ -1611,47 +1616,47 @@ static u16 sub_811ACDC(void)
}
else if (gMain.newKeys & DPAD_UP)
{
- gEasyChatScreen->mainCursorRow--;
+ sEasyChatScreen->mainCursorRow--;
break;
}
else if (gMain.newKeys & DPAD_LEFT)
{
- gEasyChatScreen->mainCursorColumn--;
+ sEasyChatScreen->mainCursorColumn--;
break;
}
else if (gMain.newKeys & DPAD_DOWN)
{
- gEasyChatScreen->mainCursorRow = 0;
+ sEasyChatScreen->mainCursorRow = 0;
break;
}
else if (gMain.newKeys & DPAD_RIGHT)
{
- gEasyChatScreen->mainCursorColumn++;
+ sEasyChatScreen->mainCursorColumn++;
break;
}
return 0;
} while (0);
- if (gEasyChatScreen->mainCursorRow == gEasyChatScreenTemplates[gEasyChatScreen->templateId].numRows)
+ if (sEasyChatScreen->mainCursorRow == sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows)
{
- int numFooterColumns = sub_811BA3C() ? 4 : 3;
- if (gEasyChatScreen->mainCursorColumn < 0)
- gEasyChatScreen->mainCursorColumn = numFooterColumns - 1;
+ int numFooterColumns = FooterHasFourOptions() ? 4 : 3;
+ if (sEasyChatScreen->mainCursorColumn < 0)
+ sEasyChatScreen->mainCursorColumn = numFooterColumns - 1;
- if (gEasyChatScreen->mainCursorColumn >= numFooterColumns)
- gEasyChatScreen->mainCursorColumn = 0;
+ if (sEasyChatScreen->mainCursorColumn >= numFooterColumns)
+ sEasyChatScreen->mainCursorColumn = 0;
return 3;
}
- if (gEasyChatScreen->mainCursorColumn >= gEasyChatScreenTemplates[gEasyChatScreen->templateId].numColumns)
- gEasyChatScreen->mainCursorColumn = gEasyChatScreenTemplates[gEasyChatScreen->templateId].numColumns - 1;
+ if (sEasyChatScreen->mainCursorColumn >= sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns)
+ sEasyChatScreen->mainCursorColumn = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns - 1;
- if (sub_811AB44() && gEasyChatScreen->mainCursorColumn == 1 && gEasyChatScreen->mainCursorRow == 4)
- gEasyChatScreen->mainCursorColumn = 0;
+ if (sub_811AB44() && sEasyChatScreen->mainCursorColumn == 1 && sEasyChatScreen->mainCursorRow == 4)
+ sEasyChatScreen->mainCursorColumn = 0;
- gEasyChatScreen->state = 0;
+ sEasyChatScreen->state = 0;
return 2;
}
@@ -1662,10 +1667,10 @@ static u16 sub_811AE44(void)
if (gMain.newKeys & A_BUTTON)
{
- if (gEasyChatScreen->unk_0a != -1)
+ if (sEasyChatScreen->unk_0a != -1)
return sub_811B2B0();
- switch (gEasyChatScreen->unk_0b)
+ switch (sEasyChatScreen->unk_0b)
{
case 0:
return sub_811B33C();
@@ -1698,7 +1703,7 @@ static u16 sub_811AF00(void)
{
if (gMain.newKeys & B_BUTTON)
{
- gEasyChatScreen->state = 2;
+ sEasyChatScreen->state = 2;
return 14;
}
@@ -1734,11 +1739,11 @@ static u16 sub_811AF8C(void)
{
case MENU_B_PRESSED: // B Button
case 1: // No
- gEasyChatScreen->state = sub_811B2A4();
+ sEasyChatScreen->state = sub_811B2A4();
return 7;
case 0: // Yes
gSpecialVar_Result = 0;
- var0 = gEasyChatScreen->kind - 17;
+ var0 = sEasyChatScreen->type - EASY_CHAT_TYPE_QUIZ_SET_QUESTION;
if (var0 < 2)
sub_811B3E4();
@@ -1754,7 +1759,7 @@ static u16 sub_811AFEC(void)
{
case MENU_B_PRESSED: // B Button
case 1: // No
- gEasyChatScreen->state = sub_811B2A4();
+ sEasyChatScreen->state = sub_811B2A4();
return 7;
case 0: // Yes
sub_811BE9C();
@@ -1772,11 +1777,11 @@ static u16 sub_811B040(void)
{
case MENU_B_PRESSED: // B Button
case 1: // No
- gEasyChatScreen->state = 1;
+ sEasyChatScreen->state = 1;
return 7;
case 0: // Yes
sub_811B418();
- gEasyChatScreen->state = 1;
+ sEasyChatScreen->state = 1;
return 8;
default:
return 0;
@@ -1798,7 +1803,7 @@ static u16 sub_811B0BC(void)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- gEasyChatScreen->state = sub_811B2A4();
+ sEasyChatScreen->state = sub_811B2A4();
return 7;
}
@@ -1807,7 +1812,7 @@ static u16 sub_811B0BC(void)
static u16 sub_811B0E8(void)
{
- gEasyChatScreen->state = 10;
+ sEasyChatScreen->state = 10;
return 6;
}
@@ -1818,8 +1823,8 @@ static u16 sub_811B0F8(void)
case MENU_B_PRESSED: // B Button
case 1: // No
sub_811B454();
- gEasyChatScreen->unk_08 = 0;
- gEasyChatScreen->state = 8;
+ sEasyChatScreen->stateBackup = 0;
+ sEasyChatScreen->state = 8;
return 31;
case 0: // Yes
gSpecialVar_Result = sub_811B4EC();
@@ -1832,124 +1837,127 @@ static u16 sub_811B0F8(void)
static u16 sub_811B150(void)
{
- if (gEasyChatScreen->kind == 19 || gEasyChatScreen->kind == 11)
+ if (sEasyChatScreen->type == EASY_CHAT_TYPE_APPRENTICE
+ || sEasyChatScreen->type == EASY_CHAT_TYPE_CONTEST_INTERVIEW)
{
- gEasyChatScreen->unk_08 = gEasyChatScreen->state;
- gEasyChatScreen->state = 8;
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ sEasyChatScreen->state = 8;
return 34;
}
else
{
- gEasyChatScreen->unk_08 = gEasyChatScreen->state;
- gEasyChatScreen->state = 4;
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ sEasyChatScreen->state = 4;
return 5;
}
}
static int sub_811B184(void)
{
- gEasyChatScreen->unk_08 = gEasyChatScreen->state;
- if (gEasyChatScreen->kind != 6)
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ if (sEasyChatScreen->type != EASY_CHAT_TYPE_BARD_SONG)
{
- gEasyChatScreen->state = 5;
+ sEasyChatScreen->state = 5;
return 4;
}
else
{
- gEasyChatScreen->unk_08 = gEasyChatScreen->state;
- gEasyChatScreen->state = 8;
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ sEasyChatScreen->state = 8;
return 32;
}
}
static u16 sub_811B1B4(void)
{
- gEasyChatScreen->unk_08 = gEasyChatScreen->state;
- if (gEasyChatScreen->kind == 17)
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_QUESTION)
{
if (sub_811BD64())
{
- gEasyChatScreen->state = 8;
+ sEasyChatScreen->state = 8;
return 29;
}
if (sub_811BDB0())
{
- gEasyChatScreen->state = 8;
+ sEasyChatScreen->state = 8;
return 30;
}
- gEasyChatScreen->state = 6;
+ sEasyChatScreen->state = 6;
return 6;
}
- else if (gEasyChatScreen->kind == 18)
+ else if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_ANSWER)
{
if (sub_811BDB0())
{
- gEasyChatScreen->state = 8;
+ sEasyChatScreen->state = 8;
return 30;
}
if (sub_811BD64())
{
- gEasyChatScreen->state = 8;
+ sEasyChatScreen->state = 8;
return 29;
}
- gEasyChatScreen->state = 6;
+ sEasyChatScreen->state = 6;
return 6;
}
- else if (gEasyChatScreen->kind == 9 || gEasyChatScreen->kind == 13)
+ else if (sEasyChatScreen->type == EASY_CHAT_TYPE_TRENDY_PHRASE
+ || sEasyChatScreen->type == EASY_CHAT_TYPE_GOOD_SAYING)
{
if (!sub_811BD2C())
{
- gEasyChatScreen->state = 8;
+ sEasyChatScreen->state = 8;
return 33;
}
- gEasyChatScreen->state = 6;
+ sEasyChatScreen->state = 6;
return 6;
}
- else if (gEasyChatScreen->kind == 19 || gEasyChatScreen->kind == 11)
+ else if (sEasyChatScreen->type == EASY_CHAT_TYPE_APPRENTICE
+ || sEasyChatScreen->type == EASY_CHAT_TYPE_CONTEST_INTERVIEW)
{
if (sub_811BCF4())
{
- gEasyChatScreen->state = 8;
+ sEasyChatScreen->state = 8;
return 34;
}
- gEasyChatScreen->state = 6;
+ sEasyChatScreen->state = 6;
return 6;
}
- else if (gEasyChatScreen->kind == 20)
+ else if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUESTIONNAIRE)
{
- gEasyChatScreen->state = 6;
+ sEasyChatScreen->state = 6;
return 6;
}
else
{
if (sub_811BCF4() == 1 || !sub_811B4EC())
{
- gEasyChatScreen->state = 4;
+ sEasyChatScreen->state = 4;
return 5;
}
- gEasyChatScreen->state = 6;
+ sEasyChatScreen->state = 6;
return 6;
}
}
static int sub_811B264(void)
{
- gEasyChatScreen->unk_08 = gEasyChatScreen->state;
- switch (gEasyChatScreen->kind)
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ switch (sEasyChatScreen->type)
{
- case 15:
+ case EASY_CHAT_TYPE_QUIZ_ANSWER:
return 25;
- case 17:
+ case EASY_CHAT_TYPE_QUIZ_SET_QUESTION:
sub_811B3E4();
return 28;
- case 18:
+ case EASY_CHAT_TYPE_QUIZ_SET_ANSWER:
sub_811B3E4();
return 27;
default:
@@ -1959,14 +1967,14 @@ static int sub_811B264(void)
static u8 sub_811B2A4(void)
{
- return gEasyChatScreen->unk_08;
+ return sEasyChatScreen->stateBackup;
}
static int sub_811B2B0(void)
{
u16 var1;
- if (gEasyChatScreen->unk_09 == 0)
+ if (sEasyChatScreen->unk_09 == 0)
{
u8 groupId = sub_811F3B8(sub_811B8E8());
sub_811F548(0, groupId);
@@ -1980,36 +1988,36 @@ static int sub_811B2B0(void)
if (var1 == 0)
return 0;
- gEasyChatScreen->unk_0f = (var1 - 1) / 2;
- gEasyChatScreen->unk_0e = 0;
- gEasyChatScreen->unk_10 = 0;
- gEasyChatScreen->unk_11 = 0;
- gEasyChatScreen->state = 3;
+ sEasyChatScreen->unk_0f = (var1 - 1) / 2;
+ sEasyChatScreen->unk_0e = 0;
+ sEasyChatScreen->unk_10 = 0;
+ sEasyChatScreen->unk_11 = 0;
+ sEasyChatScreen->state = 3;
return 11;
}
static int sub_811B32C(void)
{
- gEasyChatScreen->state = 0;
+ sEasyChatScreen->state = 0;
return 10;
}
static int sub_811B33C(void)
{
- gEasyChatScreen->unk_0a = 0;
- gEasyChatScreen->unk_0b = 0;
- gEasyChatScreen->unk_0c = 0;
- if (!gEasyChatScreen->unk_09)
- gEasyChatScreen->unk_09 = 1;
+ sEasyChatScreen->unk_0a = 0;
+ sEasyChatScreen->unk_0b = 0;
+ sEasyChatScreen->unk_0c = 0;
+ if (!sEasyChatScreen->unk_09)
+ sEasyChatScreen->unk_09 = 1;
else
- gEasyChatScreen->unk_09 = 0;
+ sEasyChatScreen->unk_09 = 0;
return 23;
}
static int sub_811B368(void)
{
- if (gEasyChatScreen->kind == 6)
+ if (sEasyChatScreen->type == EASY_CHAT_TYPE_BARD_SONG)
{
PlaySE(SE_HAZURE);
return 0;
@@ -2032,14 +2040,14 @@ static int sub_811B394(void)
else
{
sub_811B488(easyChatWord);
- if (gEasyChatScreen->kind != 6)
+ if (sEasyChatScreen->type != EASY_CHAT_TYPE_BARD_SONG)
{
- gEasyChatScreen->state = 0;
+ sEasyChatScreen->state = 0;
return 12;
}
else
{
- gEasyChatScreen->state = 9;
+ sEasyChatScreen->state = 9;
return 13;
}
}
@@ -2048,36 +2056,36 @@ static int sub_811B394(void)
static void sub_811B3E4(void)
{
int i;
- for (i = 0; i < gEasyChatScreen->unk_07; i++)
- gEasyChatScreen->words[i] = gEasyChatScreen->ecWordBuffer[i];
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
+ sEasyChatScreen->words[i] = sEasyChatScreen->ecWordBuffer[i];
}
static void sub_811B418(void)
{
int i;
- for (i = 0; i < gEasyChatScreen->unk_07; i++)
- gEasyChatScreen->ecWordBuffer[i] = 0xFFFF;
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
+ sEasyChatScreen->ecWordBuffer[i] = 0xFFFF;
}
static void sub_811B454(void)
{
int i;
- for (i = 0; i < gEasyChatScreen->unk_07; i++)
- gEasyChatScreen->ecWordBuffer[i] = gEasyChatScreen->words[i];
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
+ sEasyChatScreen->ecWordBuffer[i] = sEasyChatScreen->words[i];
}
static void sub_811B488(u16 easyChatWord)
{
u16 index = sub_811B8C8();
- gEasyChatScreen->ecWordBuffer[index] = easyChatWord;
+ sEasyChatScreen->ecWordBuffer[index] = easyChatWord;
}
static u8 sub_811B4AC(void)
{
u16 i;
- for (i = 0; i < gEasyChatScreen->unk_07; i++)
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
{
- if (gEasyChatScreen->ecWordBuffer[i] != gEasyChatScreen->words[i])
+ if (sEasyChatScreen->ecWordBuffer[i] != sEasyChatScreen->words[i])
return 1;
}
@@ -2086,7 +2094,7 @@ static u8 sub_811B4AC(void)
static int sub_811B4EC(void)
{
- u8 var0 = gEasyChatScreen->kind - 17;
+ u8 var0 = sEasyChatScreen->type - EASY_CHAT_TYPE_QUIZ_SET_QUESTION;
if (var0 < 2)
{
if (sub_811BD64())
@@ -2105,9 +2113,9 @@ static int sub_811B4EC(void)
static u16 sub_811B528(int arg0)
{
- if (gEasyChatScreen->unk_0a != -1)
+ if (sEasyChatScreen->unk_0a != -1)
{
- if (gEasyChatScreen->unk_09 == 0)
+ if (sEasyChatScreen->unk_09 == 0)
return sub_811B568(arg0);
else
return sub_811B634(arg0);
@@ -2123,32 +2131,32 @@ static int sub_811B568(u32 arg0)
switch (arg0)
{
case 2:
- if (gEasyChatScreen->unk_0b != -gEasyChatScreen->unk_0c)
+ if (sEasyChatScreen->unk_0b != -sEasyChatScreen->unk_0c)
{
- if (gEasyChatScreen->unk_0b)
+ if (sEasyChatScreen->unk_0b)
{
- gEasyChatScreen->unk_0b--;
+ sEasyChatScreen->unk_0b--;
return 15;
}
else
{
- gEasyChatScreen->unk_0c--;
+ sEasyChatScreen->unk_0c--;
return 17;
}
}
break;
case 3:
- if (gEasyChatScreen->unk_0b + gEasyChatScreen->unk_0c < gEasyChatScreen->unk_0d - 1)
+ if (sEasyChatScreen->unk_0b + sEasyChatScreen->unk_0c < sEasyChatScreen->unk_0d - 1)
{
int var0;
- if (gEasyChatScreen->unk_0b < 3)
+ if (sEasyChatScreen->unk_0b < 3)
{
- gEasyChatScreen->unk_0b++;
+ sEasyChatScreen->unk_0b++;
var0 = 15;
}
else
{
- gEasyChatScreen->unk_0c++;
+ sEasyChatScreen->unk_0c++;
var0 = 16;
}
@@ -2157,16 +2165,16 @@ static int sub_811B568(u32 arg0)
}
break;
case 1:
- if (gEasyChatScreen->unk_0a)
- gEasyChatScreen->unk_0a--;
+ if (sEasyChatScreen->unk_0a)
+ sEasyChatScreen->unk_0a--;
else
sub_811B744();
return 15;
case 0:
- if (gEasyChatScreen->unk_0a < 1)
+ if (sEasyChatScreen->unk_0a < 1)
{
- gEasyChatScreen->unk_0a++;
+ sEasyChatScreen->unk_0a++;
if (sub_811B9C8())
sub_811B744();
}
@@ -2185,30 +2193,30 @@ static int sub_811B634(u32 arg0)
switch (arg0)
{
case 2:
- if (gEasyChatScreen->unk_0b > 0)
- gEasyChatScreen->unk_0b--;
+ if (sEasyChatScreen->unk_0b > 0)
+ sEasyChatScreen->unk_0b--;
else
- gEasyChatScreen->unk_0b = 3;
+ sEasyChatScreen->unk_0b = 3;
sub_811B978();
return 15;
case 3:
- if (gEasyChatScreen->unk_0b < 3)
- gEasyChatScreen->unk_0b++;
+ if (sEasyChatScreen->unk_0b < 3)
+ sEasyChatScreen->unk_0b++;
else
- gEasyChatScreen->unk_0b = 0;
+ sEasyChatScreen->unk_0b = 0;
sub_811B978();
return 15;
case 0:
- gEasyChatScreen->unk_0a++;
+ sEasyChatScreen->unk_0a++;
if (sub_811B9C8())
sub_811B744();
return 15;
case 1:
- gEasyChatScreen->unk_0a--;
- if (gEasyChatScreen->unk_0a < 0)
+ sEasyChatScreen->unk_0a--;
+ if (sEasyChatScreen->unk_0a < 0)
sub_811B744();
return 15;
@@ -2222,26 +2230,26 @@ static int sub_811B6C4(u32 arg0)
switch (arg0)
{
case 2:
- if (gEasyChatScreen->unk_0b)
- gEasyChatScreen->unk_0b--;
+ if (sEasyChatScreen->unk_0b)
+ sEasyChatScreen->unk_0b--;
else
- gEasyChatScreen->unk_0b = 2;
+ sEasyChatScreen->unk_0b = 2;
return 15;
case 3:
- if (gEasyChatScreen->unk_0b < 2)
- gEasyChatScreen->unk_0b++;
+ if (sEasyChatScreen->unk_0b < 2)
+ sEasyChatScreen->unk_0b++;
else
- gEasyChatScreen->unk_0b = 0;
+ sEasyChatScreen->unk_0b = 0;
return 15;
case 1:
- gEasyChatScreen->unk_0b++;
+ sEasyChatScreen->unk_0b++;
sub_811B768();
return 15;
case 0:
- gEasyChatScreen->unk_0a = 0;
- gEasyChatScreen->unk_0b++;
+ sEasyChatScreen->unk_0a = 0;
+ sEasyChatScreen->unk_0b++;
return 15;
}
@@ -2250,21 +2258,21 @@ static int sub_811B6C4(u32 arg0)
static void sub_811B744(void)
{
- gEasyChatScreen->unk_0a = 0xFF;
- if (gEasyChatScreen->unk_0b)
- gEasyChatScreen->unk_0b--;
+ sEasyChatScreen->unk_0a = 0xFF;
+ if (sEasyChatScreen->unk_0b)
+ sEasyChatScreen->unk_0b--;
}
static void sub_811B768(void)
{
- if (gEasyChatScreen->unk_09 == 0)
+ if (sEasyChatScreen->unk_09 == 0)
{
- gEasyChatScreen->unk_0a = 1;
+ sEasyChatScreen->unk_0a = 1;
sub_811B978();
}
else
{
- gEasyChatScreen->unk_0a = sub_811B960(gEasyChatScreen->unk_0b);
+ sEasyChatScreen->unk_0a = sub_811B960(sEasyChatScreen->unk_0b);
}
}
@@ -2274,16 +2282,16 @@ static u16 sub_811B794(u32 arg0)
switch (arg0)
{
case 2:
- if (gEasyChatScreen->unk_11 + gEasyChatScreen->unk_0e > 0)
+ if (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e > 0)
{
- if (gEasyChatScreen->unk_11 > 0)
+ if (sEasyChatScreen->unk_11 > 0)
{
- gEasyChatScreen->unk_11--;
+ sEasyChatScreen->unk_11--;
result = 18;
}
else
{
- gEasyChatScreen->unk_0e--;
+ sEasyChatScreen->unk_0e--;
result = 19;
}
@@ -2292,16 +2300,16 @@ static u16 sub_811B794(u32 arg0)
}
break;
case 3:
- if (gEasyChatScreen->unk_11 + gEasyChatScreen->unk_0e < gEasyChatScreen->unk_0f)
+ if (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e < sEasyChatScreen->unk_0f)
{
- if (gEasyChatScreen->unk_11 < 3)
+ if (sEasyChatScreen->unk_11 < 3)
{
- gEasyChatScreen->unk_11++;
+ sEasyChatScreen->unk_11++;
result = 18;
}
else
{
- gEasyChatScreen->unk_0e++;
+ sEasyChatScreen->unk_0e++;
result = 20;
}
@@ -2310,42 +2318,42 @@ static u16 sub_811B794(u32 arg0)
}
break;
case 1:
- if (gEasyChatScreen->unk_10 > 0)
- gEasyChatScreen->unk_10--;
+ if (sEasyChatScreen->unk_10 > 0)
+ sEasyChatScreen->unk_10--;
else
- gEasyChatScreen->unk_10 = 1;
+ sEasyChatScreen->unk_10 = 1;
sub_811B9A0();
return 18;
case 0:
- if (gEasyChatScreen->unk_10 < 1)
+ if (sEasyChatScreen->unk_10 < 1)
{
- gEasyChatScreen->unk_10++;
+ sEasyChatScreen->unk_10++;
if (sub_811BA1C())
- gEasyChatScreen->unk_10 = 0;
+ sEasyChatScreen->unk_10 = 0;
}
else
{
- gEasyChatScreen->unk_10 = 0;
+ sEasyChatScreen->unk_10 = 0;
}
return 18;
case 4:
- if (gEasyChatScreen->unk_0e)
+ if (sEasyChatScreen->unk_0e)
{
- if (gEasyChatScreen->unk_0e > 3)
- gEasyChatScreen->unk_0e -= 4;
+ if (sEasyChatScreen->unk_0e > 3)
+ sEasyChatScreen->unk_0e -= 4;
else
- gEasyChatScreen->unk_0e = 0;
+ sEasyChatScreen->unk_0e = 0;
return 21;
}
break;
case 5:
- if (gEasyChatScreen->unk_0e <= gEasyChatScreen->unk_0f - 4)
+ if (sEasyChatScreen->unk_0e <= sEasyChatScreen->unk_0f - 4)
{
- gEasyChatScreen->unk_0e += 4;
- if (gEasyChatScreen->unk_0e > gEasyChatScreen->unk_0f - 3)
- gEasyChatScreen->unk_0e = gEasyChatScreen->unk_0f + 0xFD;
+ sEasyChatScreen->unk_0e += 4;
+ if (sEasyChatScreen->unk_0e > sEasyChatScreen->unk_0f - 3)
+ sEasyChatScreen->unk_0e = sEasyChatScreen->unk_0f + 0xFD;
sub_811B9A0();
return 22;
@@ -2358,24 +2366,24 @@ static u16 sub_811B794(u32 arg0)
static u16 sub_811B8C8(void)
{
- return (gEasyChatScreen->mainCursorRow * gEasyChatScreen->numColumns) + gEasyChatScreen->mainCursorColumn;
+ return (sEasyChatScreen->mainCursorRow * sEasyChatScreen->numColumns) + sEasyChatScreen->mainCursorColumn;
}
static u16 sub_811B8E8(void)
{
- return 2 * (gEasyChatScreen->unk_0b + gEasyChatScreen->unk_0c) + gEasyChatScreen->unk_0a;
+ return 2 * (sEasyChatScreen->unk_0b + sEasyChatScreen->unk_0c) + sEasyChatScreen->unk_0a;
}
static int sub_811B908(void)
{
- int var0 = (u8)gEasyChatScreen->unk_0a < 7 ? gEasyChatScreen->unk_0a : 0;
- int var1 = (u8)gEasyChatScreen->unk_0b < 4 ? gEasyChatScreen->unk_0b : 0;
+ int var0 = (u8)sEasyChatScreen->unk_0a < 7 ? sEasyChatScreen->unk_0a : 0;
+ int var1 = (u8)sEasyChatScreen->unk_0b < 4 ? sEasyChatScreen->unk_0b : 0;
return sUnknown_08597748[var1][var0];
}
static u16 sub_811B940(void)
{
- return 2 * (gEasyChatScreen->unk_11 + gEasyChatScreen->unk_0e) + gEasyChatScreen->unk_10;
+ return 2 * (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e) + sEasyChatScreen->unk_10;
}
static u8 sub_811B960(u8 arg0)
@@ -2394,8 +2402,8 @@ static void sub_811B978(void)
{
while (sub_811B9C8())
{
- if (gEasyChatScreen->unk_0a)
- gEasyChatScreen->unk_0a--;
+ if (sEasyChatScreen->unk_0a)
+ sEasyChatScreen->unk_0a--;
else
break;
}
@@ -2405,8 +2413,8 @@ static void sub_811B9A0(void)
{
while (sub_811BA1C())
{
- if (gEasyChatScreen->unk_10)
- gEasyChatScreen->unk_10--;
+ if (sEasyChatScreen->unk_10)
+ sEasyChatScreen->unk_10--;
else
break;
}
@@ -2414,10 +2422,10 @@ static void sub_811B9A0(void)
static u8 sub_811B9C8(void)
{
- if (gEasyChatScreen->unk_09 == 0)
+ if (sEasyChatScreen->unk_09 == 0)
return sub_811B8E8() >= sub_811F3AC() ? 1 : 0;
else
- return gEasyChatScreen->unk_0a > sub_811B960(gEasyChatScreen->unk_0b) ? 1 : 0;
+ return sEasyChatScreen->unk_0a > sub_811B960(sEasyChatScreen->unk_0b) ? 1 : 0;
}
static u8 sub_811BA1C(void)
@@ -2425,73 +2433,73 @@ static u8 sub_811BA1C(void)
return sub_811B940() >= sub_811F5B0() ? 1 : 0;
}
-static int sub_811BA3C(void)
+static int FooterHasFourOptions(void)
{
- return gEasyChatScreenTemplates[gEasyChatScreen->templateId].unk_03_7;
+ return sEasyChatScreenTemplates[sEasyChatScreen->templateId].fourFooterOptions;
}
-u8 sub_811BA5C(void)
+static u8 GetEasyChatScreenType(void)
{
- return gEasyChatScreen->kind;
+ return sEasyChatScreen->type;
}
-static u8 sub_811BA68(void)
+static u8 GetEasyChatScreenFrameId(void)
{
- return gEasyChatScreenTemplates[gEasyChatScreen->templateId].unk_03_0;
+ return sEasyChatScreenTemplates[sEasyChatScreen->templateId].frameId;
}
-const u8 *sub_811BA88(void)
+const u8 *GetTitleText(void)
{
- return gEasyChatScreen->titleText;
+ return sEasyChatScreen->titleText;
}
-u16 *sub_811BA94(void)
+static u16 *GetEasyChatWordBuffer(void)
{
- return gEasyChatScreen->ecWordBuffer;
+ return sEasyChatScreen->ecWordBuffer;
}
-u8 sub_811BAA0(void)
+static u8 GetNumRows(void)
{
- return gEasyChatScreen->numRows;
+ return sEasyChatScreen->numRows;
}
-u8 sub_811BAAC(void)
+static u8 GetNumColumns(void)
{
- return gEasyChatScreen->numColumns;
+ return sEasyChatScreen->numColumns;
}
-u8 sub_811BAB8(void)
+static u8 GetMainCursorColumn(void)
{
- return gEasyChatScreen->mainCursorColumn;
+ return sEasyChatScreen->mainCursorColumn;
}
-u8 sub_811BAC4(void)
+static u8 GetMainCursorRow(void)
{
- return gEasyChatScreen->mainCursorRow;
+ return sEasyChatScreen->mainCursorRow;
}
static void GetEasyChatInstructionsText(const u8 **str1, const u8 **str2)
{
- *str1 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].instructionsText1;
- *str2 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].instructionsText2;
+ *str1 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].instructionsText1;
+ *str2 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].instructionsText2;
}
static void GetEasyChatConfirmText(const u8 **str1, const u8 **str2)
{
- *str1 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].confirmText1;
- *str2 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].confirmText2;
+ *str1 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].confirmText1;
+ *str2 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].confirmText2;
}
static void sub_811BB40(const u8 **str1, const u8 **str2)
{
- switch (gEasyChatScreen->kind)
+ switch (sEasyChatScreen->type)
{
- case 4:
+ case EASY_CHAT_TYPE_MAIL:
*str1 = gText_StopGivingPkmnMail;
*str2 = NULL;
break;
- case 15:
- case 16:
+ case EASY_CHAT_TYPE_QUIZ_ANSWER:
+ case EASY_CHAT_TYPE_QUIZ_QUESTION:
*str1 = gText_LikeToQuitQuiz;
*str2 = gText_ChallengeQuestionMark;
break;
@@ -2511,34 +2519,34 @@ static void GetEasyChatConfirmDeletionText(const u8 **str1, const u8 **str2)
void sub_811BB9C(u8 *arg0, u8 *arg1)
{
- *arg0 = gEasyChatScreen->unk_0a;
- *arg1 = gEasyChatScreen->unk_0b;
+ *arg0 = sEasyChatScreen->unk_0a;
+ *arg1 = sEasyChatScreen->unk_0b;
}
u8 sub_811BBB0(void)
{
- return gEasyChatScreen->unk_09;
+ return sEasyChatScreen->unk_09;
}
u8 sub_811BBBC(void)
{
- return gEasyChatScreen->unk_0c;
+ return sEasyChatScreen->unk_0c;
}
void sub_811BBC8(u8 *arg0, u8 *arg1)
{
- *arg0 = gEasyChatScreen->unk_10;
- *arg1 = gEasyChatScreen->unk_11;
+ *arg0 = sEasyChatScreen->unk_10;
+ *arg1 = sEasyChatScreen->unk_11;
}
u8 sub_811BBDC(void)
{
- return gEasyChatScreen->unk_0e;
+ return sEasyChatScreen->unk_0e;
}
u8 sub_811BBE8(void)
{
- return gEasyChatScreen->unk_0f;
+ return sEasyChatScreen->unk_0f;
}
static u8 unref_sub_811BBF4(void)
@@ -2548,14 +2556,14 @@ static u8 unref_sub_811BBF4(void)
int sub_811BBF8(void)
{
- switch (gEasyChatScreen->state)
+ switch (sEasyChatScreen->state)
{
case 2:
- if (gEasyChatScreen->unk_09 == 0 && gEasyChatScreen->unk_0c)
+ if (sEasyChatScreen->unk_09 == 0 && sEasyChatScreen->unk_0c)
return 1;
break;
case 3:
- if (gEasyChatScreen->unk_0e)
+ if (sEasyChatScreen->unk_0e)
return 1;
break;
}
@@ -2565,14 +2573,14 @@ int sub_811BBF8(void)
int sub_811BC2C(void)
{
- switch (gEasyChatScreen->state)
+ switch (sEasyChatScreen->state)
{
case 2:
- if (gEasyChatScreen->unk_09 == 0 && gEasyChatScreen->unk_0c + 4 <= gEasyChatScreen->unk_0d - 1)
+ if (sEasyChatScreen->unk_09 == 0 && sEasyChatScreen->unk_0c + 4 <= sEasyChatScreen->unk_0d - 1)
return 1;
break;
case 3:
- if (gEasyChatScreen->unk_0e + 4 <= gEasyChatScreen->unk_0f)
+ if (sEasyChatScreen->unk_0e + 4 <= sEasyChatScreen->unk_0f)
return 1;
break;
}
@@ -2580,9 +2588,9 @@ int sub_811BC2C(void)
return 0;
}
-static int sub_811BC70(void)
+static int FooterHasFourOptions_(void)
{
- return sub_811BA3C();
+ return FooterHasFourOptions();
}
u8 sub_811BC7C(const u16 *arg0, u8 arg1)
@@ -2591,25 +2599,25 @@ u8 sub_811BC7C(const u16 *arg0, u8 arg1)
for (i = 0; i < arg1; i++)
{
- if (arg0[i] != gEasyChatScreen->ecWordBuffer[i])
+ if (arg0[i] != sEasyChatScreen->ecWordBuffer[i])
return 1;
}
return 0;
}
-u8 sub_811BCBC(void)
+static u8 GetDisplayedPersonType(void)
{
- return gEasyChatScreen->sizeParam;
+ return sEasyChatScreen->displayedPersonType;
}
-static u8 sub_811BCC8(u8 entryType)
+static u8 GetEachChatScreenTemplateId(u8 type)
{
u32 i;
- for (i = 0; i < ARRAY_COUNT(gEasyChatScreenTemplates); i++)
+ for (i = 0; i < ARRAY_COUNT(sEasyChatScreenTemplates); i++)
{
- if (gEasyChatScreenTemplates[i].unk_00 == entryType)
+ if (sEasyChatScreenTemplates[i].type == type)
return i;
}
@@ -2620,9 +2628,9 @@ static int sub_811BCF4(void)
{
int i;
- for (i = 0; i < gEasyChatScreen->unk_07; i++)
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
{
- if (gEasyChatScreen->ecWordBuffer[i] != 0xFFFF)
+ if (sEasyChatScreen->ecWordBuffer[i] != 0xFFFF)
return 0;
}
@@ -2633,9 +2641,9 @@ static int sub_811BD2C(void)
{
int i;
- for (i = 0; i < gEasyChatScreen->unk_07; i++)
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
{
- if (gEasyChatScreen->ecWordBuffer[i] == 0xFFFF)
+ if (sEasyChatScreen->ecWordBuffer[i] == 0xFFFF)
return 0;
}
@@ -2647,7 +2655,7 @@ static int sub_811BD64(void)
int i;
struct SaveBlock1 *saveBlock1;
- if (gEasyChatScreen->kind == 17)
+ if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_QUESTION)
return sub_811BCF4();
saveBlock1 = gSaveBlock1Ptr;
@@ -2663,7 +2671,7 @@ static int sub_811BD64(void)
static int sub_811BDB0(void)
{
struct LilycoveLadyQuiz *quiz;
- if (gEasyChatScreen->kind == 18)
+ if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_ANSWER)
return sub_811BCF4();
quiz = &gSaveBlock1Ptr->lilycoveLady.quiz;
@@ -2694,10 +2702,10 @@ static void sub_811BE54(void)
u16 *ecWord;
u8 *str;
- ecWord = gEasyChatScreen->ecWordBuffer;
+ ecWord = sEasyChatScreen->ecWordBuffer;
str = gStringVar2;
i = 0;
- while (i < gEasyChatScreen->unk_07)
+ while (i < sEasyChatScreen->unk_07)
{
str = CopyEasyChatWordPadded(str, *ecWord, 0);
*str = 0;
@@ -2712,22 +2720,22 @@ static void sub_811BE54(void)
static void sub_811BE9C(void)
{
- switch (gEasyChatScreen->kind)
+ switch (sEasyChatScreen->type)
{
- case 0:
+ case EASY_CHAT_TYPE_PROFILE:
FlagSet(FLAG_SYS_CHAT_USED);
break;
- case 20:
+ case EASY_CHAT_TYPE_QUESTIONNAIRE:
if (sub_811BF20())
gSpecialVar_0x8004 = 2;
else
gSpecialVar_0x8004 = 0;
break;
- case 9:
+ case EASY_CHAT_TYPE_TRENDY_PHRASE:
sub_811BE54();
- gSpecialVar_0x8004 = sub_81226D8(gEasyChatScreen->ecWordBuffer);
+ gSpecialVar_0x8004 = sub_81226D8(sEasyChatScreen->ecWordBuffer);
break;
- case 13:
+ case EASY_CHAT_TYPE_GOOD_SAYING:
gSpecialVar_0x8004 = sub_811BF40();
break;
}
@@ -2752,7 +2760,7 @@ static u16 sub_811BF40(void)
static void sub_811BF78(void)
{
- gEasyChatScreen->unk_13 = 0;
+ sEasyChatScreen->unk_13 = 0;
}
static int sub_811BF88(int easyChatWord)
@@ -2770,13 +2778,13 @@ static bool8 sub_811BF8C(void)
static bool8 sub_811BFA4(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sEasyChatBgTemplates, ARRAY_COUNT(sEasyChatBgTemplates));
- SetBgTilemapBuffer(3, gUnknown_0203A11C->unkB00);
- SetBgTilemapBuffer(1, gUnknown_0203A11C->unk300);
+ SetBgTilemapBuffer(3, sUnknown_0203A11C->unkB00);
+ SetBgTilemapBuffer(1, sUnknown_0203A11C->unk300);
InitWindows(sEasyChatWindowTemplates);
DeactivateAllTextPrinters();
sub_811CF64();
@@ -2787,7 +2795,7 @@ static bool8 sub_811BFA4(void)
DecompressAndLoadBgGfxUsingHeap(3, gEasyChatWindow_Gfx, 0, 0, 0);
CopyToBgTilemapBuffer(3, gEasyChatWindow_Tilemap, 0, 0);
sub_811D60C();
- sub_811D424(gUnknown_0203A11C->unk300);
+ sub_811D424(sUnknown_0203A11C->unk300);
sub_811D230();
sub_811E948();
CopyBgTilemapBufferToVram(3);
@@ -2804,7 +2812,7 @@ static bool8 sub_811BFA4(void)
break;
case 4:
sub_811DE90();
- if (sub_811BA5C() != 16)
+ if (GetEasyChatScreenType() != EASY_CHAT_TYPE_QUIZ_QUESTION)
sub_811DEC4();
break;
case 5:
@@ -2830,26 +2838,26 @@ static bool8 sub_811BFA4(void)
return FALSE;
}
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return TRUE;
}
static void sub_811C13C(void)
{
- if (gUnknown_0203A11C)
- FREE_AND_SET_NULL(gUnknown_0203A11C);
+ if (sUnknown_0203A11C)
+ FREE_AND_SET_NULL(sUnknown_0203A11C);
}
static void sub_811C158(u16 arg0)
{
- gUnknown_0203A11C->unk4 = arg0;
- gUnknown_0203A11C->unk0 = 0;
+ sUnknown_0203A11C->unk4 = arg0;
+ sUnknown_0203A11C->unk0 = 0;
sub_811C170();
}
static bool8 sub_811C170(void)
{
- switch (gUnknown_0203A11C->unk4)
+ switch (sUnknown_0203A11C->unk4)
{
case 0: return FALSE;
case 1: return sub_811C2D4();
@@ -2892,11 +2900,11 @@ static bool8 sub_811C170(void)
static bool8 sub_811C2D4(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811D2C8();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -2910,21 +2918,21 @@ static bool8 sub_811C30C(void)
u8 i;
u16 *ecWordBuffer;
u16 *ecWord;
- u8 var0;
+ u8 frameId;
u8 cursorColumn, cursorRow, numColumns;
s16 var1;
int stringWidth;
int trueStringWidth;
u8 var2;
- u8 sp0[64];
+ u8 str[64];
- ecWordBuffer = sub_811BA94();
- var0 = sub_811BA68();
- cursorColumn = sub_811BAB8();
- cursorRow = sub_811BAC4();
- numColumns = sub_811BAAC();
+ ecWordBuffer = GetEasyChatWordBuffer();
+ frameId = GetEasyChatScreenFrameId();
+ cursorColumn = GetMainCursorColumn();
+ cursorRow = GetMainCursorRow();
+ numColumns = GetNumColumns();
ecWord = &ecWordBuffer[cursorRow * numColumns];
- var1 = 8 * gUnknown_08597C30[var0].unk0_0 + 13;
+ var1 = 8 * sPhraseFrameDimensions[frameId].left + 13;
for (i = 0; i < cursorColumn; i++)
{
if (*ecWord == 0xFFFF)
@@ -2933,8 +2941,8 @@ static bool8 sub_811C30C(void)
}
else
{
- CopyEasyChatWord(sp0, *ecWord);
- stringWidth = GetStringWidth(1, sp0, 0);
+ CopyEasyChatWord(str, *ecWord);
+ stringWidth = GetStringWidth(1, str, 0);
}
trueStringWidth = stringWidth + 17;
@@ -2942,27 +2950,27 @@ static bool8 sub_811C30C(void)
ecWord++;
}
- var2 = 8 * (gUnknown_08597C30[var0].unk0_5 + cursorRow * 2);
+ var2 = 8 * (sPhraseFrameDimensions[frameId].top + cursorRow * 2);
sub_811DF60(var1, var2 + 8);
return FALSE;
}
static bool8 sub_811C3E4(void)
{
- u8 var0 = sub_811E920(sub_811BAB8());
- sub_811DF60(var0, 96);
+ u8 xOffset = GetFooterOptionXOffset(GetMainCursorColumn());
+ sub_811DF60(xOffset, 96);
return FALSE;
}
static bool8 sub_811C404(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
sub_811D104(2);
sub_811D214(1);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -2973,13 +2981,13 @@ static bool8 sub_811C404(void)
static bool8 sub_811C448(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
sub_811D104(3);
sub_811D214(0);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -2990,13 +2998,13 @@ static bool8 sub_811C448(void)
static bool8 sub_811C48C(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
sub_811D104(1);
sub_811D214(1);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -3007,14 +3015,14 @@ static bool8 sub_811C48C(void)
static bool8 sub_811C4D0(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DFB0();
sub_811D104(0);
sub_811D2C8();
ShowBg(0);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -3025,13 +3033,13 @@ static bool8 sub_811C4D0(void)
static bool8 sub_811C518(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DFB0();
sub_811D104(0);
sub_811D2C8();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
// Fall through
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -3042,31 +3050,31 @@ static bool8 sub_811C518(void)
static bool8 sub_811C554(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
HideBg(0);
sub_811DE5C(0, 0, 0, 0);
sub_811D6D4();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811D9CC(0);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 2:
if (!IsDma3ManagerBusyWithBgCopy() && !sub_811DAA4())
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 3:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811E3AC();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 4:
@@ -3075,7 +3083,7 @@ static bool8 sub_811C554(void)
sub_811DFC8();
sub_811E6E0(0);
sub_811E64C();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -3088,31 +3096,31 @@ static bool8 sub_811C554(void)
static bool8 sub_811C620(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811E050();
sub_811E4AC();
sub_811E6B0();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
if (sub_811E4D0() == TRUE)
break;
sub_811D9CC(1);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
// Fall through
case 2:
if (!sub_811DAA4())
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 3:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811DFB0();
ShowBg(0);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 4:
@@ -3124,20 +3132,20 @@ static bool8 sub_811C620(void)
static bool8 sub_811C6C0(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811E050();
sub_811E6B0();
sub_811E55C();
sub_811D9CC(5);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
if (!sub_811DAA4() && !sub_811E5B8())
{
sub_811D6D4();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 2:
@@ -3145,7 +3153,7 @@ static bool8 sub_811C6C0(void)
{
sub_811D9CC(6);
sub_811E578();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 3:
@@ -3153,7 +3161,7 @@ static bool8 sub_811C6C0(void)
{
sub_811E64C();
sub_811DFC8();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -3172,11 +3180,11 @@ static bool8 sub_811C780(void)
static bool8 sub_811C78C(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DDAC(1, 4);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
// Fall through
case 1:
if (!sub_811DE10())
@@ -3193,17 +3201,17 @@ static bool8 sub_811C78C(void)
static bool8 sub_811C7D4(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DDAC(-1, 4);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
// Fall through
case 1:
if (!sub_811DE10())
{
sub_811E64C();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -3216,33 +3224,33 @@ static bool8 sub_811C7D4(void)
static bool8 sub_811C830(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811E050();
sub_811E4AC();
sub_811E6B0();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
if (!sub_811E4D0())
{
sub_811D9B4();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 2:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811D9CC(2);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 3:
if (!sub_811DAA4())
{
sub_811D698(2);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 4:
@@ -3252,7 +3260,7 @@ static bool8 sub_811C830(void)
sub_811E6E0(1);
sub_811E64C();
sub_811E794();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -3265,38 +3273,38 @@ static bool8 sub_811C830(void)
static bool8 sub_811C8F0(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811D2C8();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
sub_811E380();
sub_811E6B0();
sub_811E7F8();
sub_811D9B4();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 2:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811D9CC(3);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 3:
if (!sub_811DAA4())
{
ShowBg(0);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 4:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811DFB0();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -3309,45 +3317,45 @@ static bool8 sub_811C8F0(void)
static bool8 sub_811C99C(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811D2C8();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
sub_811E380();
sub_811E6B0();
sub_811E7F8();
sub_811D9B4();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 2:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811D9CC(3);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 3:
if (!sub_811DAA4())
{
sub_811D104(3);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 4:
if (!IsDma3ManagerBusyWithBgCopy())
{
ShowBg(0);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 5:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811DFB0();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -3360,34 +3368,34 @@ static bool8 sub_811C99C(void)
static bool8 sub_811CA5C(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811E380();
sub_811E6B0();
sub_811E7F8();
sub_811D9B4();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811D9CC(4);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 2:
if (!sub_811DAA4())
{
sub_811D6D4();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 3:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811E3AC();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 4:
@@ -3396,7 +3404,7 @@ static bool8 sub_811CA5C(void)
sub_811DFC8();
sub_811E6E0(0);
sub_811E64C();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -3413,17 +3421,17 @@ static bool8 sub_811CB18(void)
static bool8 sub_811CB24(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811D7A4();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811DDAC(1, 4);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 2:
@@ -3432,7 +3440,7 @@ static bool8 sub_811CB24(void)
sub_811E30C();
sub_811E64C();
sub_811E794();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -3445,17 +3453,17 @@ static bool8 sub_811CB24(void)
static bool8 sub_811CB98(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811D7C8();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811DDAC(-1, 4);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 2:
@@ -3463,7 +3471,7 @@ static bool8 sub_811CB98(void)
{
sub_811E64C();
sub_811E794();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -3476,18 +3484,18 @@ static bool8 sub_811CB98(void)
static bool8 sub_811CC08(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811D7EC();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
{
s16 var0 = sub_811BBDC() - sub_811DE48();
sub_811DDAC(var0, 8);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 2:
@@ -3496,7 +3504,7 @@ static bool8 sub_811CC08(void)
sub_811E30C();
sub_811E64C();
sub_811E794();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -3509,18 +3517,18 @@ static bool8 sub_811CC08(void)
static bool8 sub_811CC90(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811D830();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
{
s16 var0 = sub_811BBDC() - sub_811DE48();
sub_811DDAC(var0, 8);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 2:
@@ -3528,7 +3536,7 @@ static bool8 sub_811CC90(void)
{
sub_811E64C();
sub_811E794();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -3541,12 +3549,12 @@ static bool8 sub_811CC90(void)
static bool8 sub_811CD14(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
sub_811D104(4);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -3557,12 +3565,12 @@ static bool8 sub_811CD14(void)
static bool8 sub_811CD54(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
sub_811D104(5);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -3573,12 +3581,12 @@ static bool8 sub_811CD54(void)
static bool8 sub_811CD94(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
sub_811D104(6);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -3589,12 +3597,12 @@ static bool8 sub_811CD94(void)
static bool8 sub_811CDD4(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
sub_811D104(7);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -3605,12 +3613,12 @@ static bool8 sub_811CDD4(void)
static bool8 sub_811CE14(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
sub_811D104(8);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -3621,12 +3629,12 @@ static bool8 sub_811CE14(void)
static bool8 sub_811CE54(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
sub_811D104(9);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -3637,22 +3645,22 @@ static bool8 sub_811CE54(void)
static bool8 sub_811CE94(void)
{
- gUnknown_0203A11C = Alloc(sizeof(*gUnknown_0203A11C));
- if (!gUnknown_0203A11C)
+ sUnknown_0203A11C = Alloc(sizeof(*sUnknown_0203A11C));
+ if (!sUnknown_0203A11C)
return FALSE;
- gUnknown_0203A11C->unk0 = 0;
- gUnknown_0203A11C->unk2D8 = NULL;
- gUnknown_0203A11C->unk2DC = NULL;
- gUnknown_0203A11C->unk2E0 = NULL;
- gUnknown_0203A11C->unk2E4 = NULL;
- gUnknown_0203A11C->unk2E8 = NULL;
- gUnknown_0203A11C->unk2EC = NULL;
- gUnknown_0203A11C->unk2F0 = NULL;
- gUnknown_0203A11C->unk2F4 = NULL;
- gUnknown_0203A11C->unk2F8 = NULL;
- gUnknown_0203A11C->unk2FC = NULL;
- gUnknown_0203A11C->unkA = sub_811BC70();
+ sUnknown_0203A11C->unk0 = 0;
+ sUnknown_0203A11C->unk2D8 = NULL;
+ sUnknown_0203A11C->unk2DC = NULL;
+ sUnknown_0203A11C->unk2E0 = NULL;
+ sUnknown_0203A11C->unk2E4 = NULL;
+ sUnknown_0203A11C->unk2E8 = NULL;
+ sUnknown_0203A11C->unk2EC = NULL;
+ sUnknown_0203A11C->unk2F0 = NULL;
+ sUnknown_0203A11C->unk2F4 = NULL;
+ sUnknown_0203A11C->unk2F8 = NULL;
+ sUnknown_0203A11C->unk2FC = NULL;
+ sUnknown_0203A11C->unkA = FooterHasFourOptions_();
return TRUE;
}
@@ -3684,7 +3692,7 @@ static void sub_811CF64(void)
static void sub_811CFCC(void)
{
int xOffset;
- const u8 *titleText = sub_811BA88();
+ const u8 *titleText = GetTitleText();
if (!titleText)
return;
@@ -3776,19 +3784,19 @@ static void sub_811D214(u8 initialCursorPos)
static void sub_811D230(void)
{
- u8 var0;
+ u8 frameId;
struct WindowTemplate template;
- var0 = sub_811BA68();
+ frameId = GetEasyChatScreenFrameId();
template.bg = 3;
- template.tilemapLeft = gUnknown_08597C30[var0].unk0_0;
- template.tilemapTop = gUnknown_08597C30[var0].unk0_5;
- template.width = gUnknown_08597C30[var0].unk1;
- template.height = gUnknown_08597C30[var0].unk2;
+ template.tilemapLeft = sPhraseFrameDimensions[frameId].left;
+ template.tilemapTop = sPhraseFrameDimensions[frameId].top;
+ template.width = sPhraseFrameDimensions[frameId].width;
+ template.height = sPhraseFrameDimensions[frameId].height;
template.paletteNum = 11;
template.baseBlock = 0x6C;
- gUnknown_0203A11C->windowId = AddWindow(&template);
- PutWindowTilemap(gUnknown_0203A11C->windowId);
+ sUnknown_0203A11C->windowId = AddWindow(&template);
+ PutWindowTilemap(sUnknown_0203A11C->windowId);
}
static void sub_811D2C8(void)
@@ -3797,27 +3805,27 @@ static void sub_811D2C8(void)
u16 *ecWord;
u8 numColumns, numRows;
u8 *str;
- int var0;
+ int frameId;
int var1;
int i, j, k;
- ecWord = sub_811BA94();
- numColumns = sub_811BAAC();
- numRows = sub_811BAA0();
- var0 = sub_811BA68();
+ ecWord = GetEasyChatWordBuffer();
+ numColumns = GetNumColumns();
+ numRows = GetNumRows();
+ frameId = GetEasyChatScreenFrameId();
var1 = 0;
- if (var0 == 7)
+ if (frameId == 7)
var1 = 1;
- FillWindowPixelBuffer(gUnknown_0203A11C->windowId, PIXEL_FILL(1));
+ FillWindowPixelBuffer(sUnknown_0203A11C->windowId, PIXEL_FILL(1));
for (i = 0; i < numRows; i++)
{
memcpy(spC, sText_Clear17, sizeof(sText_Clear17));
if (var1)
spC[2] = 6;
- str = gUnknown_0203A11C->unkB;
- gUnknown_0203A11C->unkB[0] = EOS;
+ str = sUnknown_0203A11C->unkB;
+ sUnknown_0203A11C->unkB[0] = EOS;
str = StringAppend(str, spC);
for (j = 0; j < numColumns; j++)
{
@@ -3846,7 +3854,7 @@ static void sub_811D2C8(void)
spC[2] = 3;
str = StringAppend(str, spC);
- if (var0 == 2 || var0 == 7 || var0 == 8)
+ if (frameId == 2 || frameId == 7 || frameId == 8)
{
if (j == 0 && i == 4)
break;
@@ -3854,27 +3862,27 @@ static void sub_811D2C8(void)
}
*str = EOS;
- sub_811D028(gUnknown_0203A11C->windowId, 1, gUnknown_0203A11C->unkB, 0, i * 16 + 1, 0xFF, 0);
+ sub_811D028(sUnknown_0203A11C->windowId, 1, sUnknown_0203A11C->unkB, 0, i * 16 + 1, 0xFF, 0);
}
- CopyWindowToVram(gUnknown_0203A11C->windowId, 3);
+ CopyWindowToVram(sUnknown_0203A11C->windowId, 3);
}
static void sub_811D424(u16 *tilemap)
{
- u8 var0;
+ u8 frameId;
int right, bottom;
int x, y;
- var0 = sub_811BA68();
+ frameId = GetEasyChatScreenFrameId();
CpuFastFill(0, tilemap, BG_SCREEN_SIZE);
- if (var0 == 2 || var0 == 8)
+ if (frameId == 2 || frameId == 8)
{
- right = gUnknown_08597C30[var0].unk0_0 + gUnknown_08597C30[var0].unk1;
- bottom = gUnknown_08597C30[var0].unk0_5 + gUnknown_08597C30[var0].unk2;
- for (y = gUnknown_08597C30[var0].unk0_5; y < bottom; y++)
+ right = sPhraseFrameDimensions[frameId].left + sPhraseFrameDimensions[frameId].width;
+ bottom = sPhraseFrameDimensions[frameId].top + sPhraseFrameDimensions[frameId].height;
+ for (y = sPhraseFrameDimensions[frameId].top; y < bottom; y++)
{
- x = gUnknown_08597C30[var0].unk0_0 - 1;
+ x = sPhraseFrameDimensions[frameId].left - 1;
tilemap[y * 32 + x] = 0x1005;
x++;
for (; x < right; x++)
@@ -3885,10 +3893,10 @@ static void sub_811D424(u16 *tilemap)
}
else
{
- y = gUnknown_08597C30[var0].unk0_5 - 1;
- x = gUnknown_08597C30[var0].unk0_0 - 1;
- right = gUnknown_08597C30[var0].unk0_0 + gUnknown_08597C30[var0].unk1;
- bottom = gUnknown_08597C30[var0].unk0_5 + gUnknown_08597C30[var0].unk2;
+ y = sPhraseFrameDimensions[frameId].top - 1;
+ x = sPhraseFrameDimensions[frameId].left - 1;
+ right = sPhraseFrameDimensions[frameId].left + sPhraseFrameDimensions[frameId].width;
+ bottom = sPhraseFrameDimensions[frameId].top + sPhraseFrameDimensions[frameId].height;
tilemap[y * 32 + x] = 0x1001;
x++;
for (; x < right; x++)
@@ -3898,7 +3906,7 @@ static void sub_811D424(u16 *tilemap)
y++;
for (; y < bottom; y++)
{
- x = gUnknown_08597C30[var0].unk0_0 - 1;
+ x = sPhraseFrameDimensions[frameId].left - 1;
tilemap[y * 32 + x] = 0x1005;
x++;
for (; x < right; x++)
@@ -3907,7 +3915,7 @@ static void sub_811D424(u16 *tilemap)
tilemap[y* 32 + x] = 0x1007;
}
- x = gUnknown_08597C30[var0].unk0_0 - 1;
+ x = sPhraseFrameDimensions[frameId].left - 1;
tilemap[y * 32 + x] = 0x1009;
x++;
for (; x < right; x++)
@@ -3919,12 +3927,12 @@ static void sub_811D424(u16 *tilemap)
static void sub_811D60C(void)
{
- u8 var0;
+ u8 frameId;
u16 *tilemap;
tilemap = GetBgTilemapBuffer(3);
- var0 = sub_811BA68();
- switch (gUnknown_08597C30[var0].unk3)
+ frameId = GetEasyChatScreenFrameId();
+ switch (sPhraseFrameDimensions[frameId].footerId)
{
case 2:
tilemap += 0x2A0;
@@ -4072,11 +4080,11 @@ static void sub_811D864(u8 arg0, u8 arg1)
easyChatWord = sub_811F578(var0++);
if (easyChatWord != 0xFFFF)
{
- CopyEasyChatWordPadded(gUnknown_0203A11C->unkCC, easyChatWord, 0);
+ CopyEasyChatWordPadded(sUnknown_0203A11C->unkCC, easyChatWord, 0);
if (!sub_811BF88(easyChatWord))
- sub_811D028(2, 1, gUnknown_0203A11C->unkCC, (j * 13 + 3) * 8, y, 0xFF, NULL);
+ sub_811D028(2, 1, sUnknown_0203A11C->unkCC, (j * 13 + 3) * 8, y, 0xFF, NULL);
else
- sub_811D058(2, 1, gUnknown_0203A11C->unkCC, (j * 13 + 3) * 8, y, 0xFF, 1, 5, 3);
+ sub_811D058(2, 1, sUnknown_0203A11C->unkCC, (j * 13 + 3) * 8, y, 0xFF, 1, 5, 3);
}
}
@@ -4122,48 +4130,48 @@ static void sub_811D9CC(int arg0)
switch (arg0)
{
case 0:
- gUnknown_0203A11C->unk6 = 0;
- gUnknown_0203A11C->unk7 = 10;
+ sUnknown_0203A11C->unk6 = 0;
+ sUnknown_0203A11C->unk7 = 10;
break;
case 1:
- gUnknown_0203A11C->unk6 = 9;
- gUnknown_0203A11C->unk7 = 0;
+ sUnknown_0203A11C->unk6 = 9;
+ sUnknown_0203A11C->unk7 = 0;
break;
case 2:
- gUnknown_0203A11C->unk6 = 11;
- gUnknown_0203A11C->unk7 = 17;
+ sUnknown_0203A11C->unk6 = 11;
+ sUnknown_0203A11C->unk7 = 17;
break;
case 3:
- gUnknown_0203A11C->unk6 = 17;
- gUnknown_0203A11C->unk7 = 0;
+ sUnknown_0203A11C->unk6 = 17;
+ sUnknown_0203A11C->unk7 = 0;
break;
case 4:
- gUnknown_0203A11C->unk6 = 17;
- gUnknown_0203A11C->unk7 = 10;
+ sUnknown_0203A11C->unk6 = 17;
+ sUnknown_0203A11C->unk7 = 10;
break;
case 5:
- gUnknown_0203A11C->unk6 = 18;
- gUnknown_0203A11C->unk7 = 22;
+ sUnknown_0203A11C->unk6 = 18;
+ sUnknown_0203A11C->unk7 = 22;
break;
case 6:
- gUnknown_0203A11C->unk6 = 22;
- gUnknown_0203A11C->unk7 = 18;
+ sUnknown_0203A11C->unk6 = 22;
+ sUnknown_0203A11C->unk7 = 18;
break;
}
- gUnknown_0203A11C->unk8 = gUnknown_0203A11C->unk6 < gUnknown_0203A11C->unk7 ? 1 : -1;
+ sUnknown_0203A11C->unk8 = sUnknown_0203A11C->unk6 < sUnknown_0203A11C->unk7 ? 1 : -1;
}
static bool8 sub_811DAA4(void)
{
u8 var0, var1;
- if (gUnknown_0203A11C->unk6 == gUnknown_0203A11C->unk7)
+ if (sUnknown_0203A11C->unk6 == sUnknown_0203A11C->unk7)
return FALSE;
- gUnknown_0203A11C->unk6 += gUnknown_0203A11C->unk8;
- sub_811DADC(gUnknown_0203A11C->unk6);
- var0 = gUnknown_0203A11C->unk6;
- var1 = gUnknown_0203A11C->unk7;
+ sUnknown_0203A11C->unk6 += sUnknown_0203A11C->unk8;
+ sub_811DADC(sUnknown_0203A11C->unk6);
+ var0 = sUnknown_0203A11C->unk6;
+ var1 = sUnknown_0203A11C->unk7;
return (var0 ^ var1) > 0;
}
@@ -4244,7 +4252,7 @@ static void sub_811DC28(int left, int top, int width, int height)
int bottom;
int x, y;
- tilemap = gUnknown_0203A11C->unk300;
+ tilemap = sUnknown_0203A11C->unk300;
right = left + width - 1;
bottom = top + height - 1;
x = left;
@@ -4278,7 +4286,7 @@ static void sub_811DC28(int left, int top, int width, int height)
static void sub_811DD84(void)
{
ChangeBgY(2, 0x800, 0);
- gUnknown_0203A11C->unk2CE = 0;
+ sUnknown_0203A11C->unk2CE = 0;
}
static void sub_811DDAC(s16 arg0, u8 arg1)
@@ -4287,15 +4295,15 @@ static void sub_811DDAC(s16 arg0, u8 arg1)
s16 var0;
bgY = GetBgY(2);
- gUnknown_0203A11C->unk2CE += arg0;
+ sUnknown_0203A11C->unk2CE += arg0;
var0 = arg0 * 16;
bgY += var0 << 8;
if (arg1)
{
- gUnknown_0203A11C->unk2D0 = bgY;
- gUnknown_0203A11C->unk2D4 = arg1 * 256;
+ sUnknown_0203A11C->unk2D0 = bgY;
+ sUnknown_0203A11C->unk2D4 = arg1 * 256;
if (var0 < 0)
- gUnknown_0203A11C->unk2D4 = -gUnknown_0203A11C->unk2D4;
+ sUnknown_0203A11C->unk2D4 = -sUnknown_0203A11C->unk2D4;
}
else
{
@@ -4308,20 +4316,20 @@ static bool8 sub_811DE10(void)
int bgY;
bgY = GetBgY(2);
- if (bgY == gUnknown_0203A11C->unk2D0)
+ if (bgY == sUnknown_0203A11C->unk2D0)
{
return FALSE;
}
else
{
- ChangeBgY(2, gUnknown_0203A11C->unk2D4, 1);
+ ChangeBgY(2, sUnknown_0203A11C->unk2D4, 1);
return TRUE;
}
}
static int sub_811DE48(void)
{
- return gUnknown_0203A11C->unk2CE;
+ return sUnknown_0203A11C->unk2CE;
}
static void sub_811DE5C(u8 left, u8 top, u8 width, u8 height)
@@ -4336,19 +4344,19 @@ static void sub_811DE90(void)
{
u32 i;
- LoadSpriteSheets(sUnknown_08597CA0);
- LoadSpritePalettes(sUnknown_08597CC0);
+ LoadSpriteSheets(sEasyChatSpriteSheets);
+ LoadSpritePalettes(sEasyChatSpritePalettes);
for (i = 0; i < ARRAY_COUNT(sUnknown_08597CE8); i++)
LoadCompressedSpriteSheet(&sUnknown_08597CE8[i]);
}
static void sub_811DEC4(void)
{
- u8 var0 = sub_811BA68();
- int x = gUnknown_08597C30[var0].unk0_0 * 8 + 13;
- int y = gUnknown_08597C30[var0].unk0_5 * 8 + 8;
+ u8 frameId = GetEasyChatScreenFrameId();
+ int x = sPhraseFrameDimensions[frameId].left * 8 + 13;
+ int y = sPhraseFrameDimensions[frameId].top * 8 + 8;
u8 spriteId = CreateSprite(&sUnknown_08597D18, x, y, 2);
- gUnknown_0203A11C->unk2D8 = &gSprites[spriteId];
+ sUnknown_0203A11C->unk2D8 = &gSprites[spriteId];
gSprites[spriteId].data[1] = 1;
}
@@ -4367,44 +4375,44 @@ static void sub_811DF28(struct Sprite *sprite)
static void sub_811DF60(u8 x, u8 y)
{
- gUnknown_0203A11C->unk2D8->pos1.x = x;
- gUnknown_0203A11C->unk2D8->pos1.y = y;
- gUnknown_0203A11C->unk2D8->pos2.x = 0;
- gUnknown_0203A11C->unk2D8->data[0] = 0;
+ sUnknown_0203A11C->unk2D8->pos1.x = x;
+ sUnknown_0203A11C->unk2D8->pos1.y = y;
+ sUnknown_0203A11C->unk2D8->pos2.x = 0;
+ sUnknown_0203A11C->unk2D8->data[0] = 0;
}
static void sub_811DF90(void)
{
- gUnknown_0203A11C->unk2D8->data[0] = 0;
- gUnknown_0203A11C->unk2D8->data[1] = 0;
- gUnknown_0203A11C->unk2D8->pos2.x = 0;
+ sUnknown_0203A11C->unk2D8->data[0] = 0;
+ sUnknown_0203A11C->unk2D8->data[1] = 0;
+ sUnknown_0203A11C->unk2D8->pos2.x = 0;
}
static void sub_811DFB0(void)
{
- gUnknown_0203A11C->unk2D8->data[1] = 1;
+ sUnknown_0203A11C->unk2D8->data[1] = 1;
}
static void sub_811DFC8(void)
{
u8 spriteId = CreateSprite(&sUnknown_08597D68, 0, 0, 3);
- gUnknown_0203A11C->unk2DC = &gSprites[spriteId];
- gUnknown_0203A11C->unk2DC->pos2.x = 32;
+ sUnknown_0203A11C->unk2DC = &gSprites[spriteId];
+ sUnknown_0203A11C->unk2DC->pos2.x = 32;
spriteId = CreateSprite(&sUnknown_08597D68, 0, 0, 3);
- gUnknown_0203A11C->unk2E0 = &gSprites[spriteId];
- gUnknown_0203A11C->unk2E0->pos2.x = -32;
+ sUnknown_0203A11C->unk2E0 = &gSprites[spriteId];
+ sUnknown_0203A11C->unk2E0->pos2.x = -32;
- gUnknown_0203A11C->unk2DC->hFlip = 1;
+ sUnknown_0203A11C->unk2DC->hFlip = 1;
sub_811E088();
}
static void sub_811E050(void)
{
- DestroySprite(gUnknown_0203A11C->unk2DC);
- gUnknown_0203A11C->unk2DC = NULL;
- DestroySprite(gUnknown_0203A11C->unk2E0);
- gUnknown_0203A11C->unk2E0 = NULL;
+ DestroySprite(sUnknown_0203A11C->unk2DC);
+ sUnknown_0203A11C->unk2DC = NULL;
+ DestroySprite(sUnknown_0203A11C->unk2E0);
+ sUnknown_0203A11C->unk2E0 = NULL;
}
static void sub_811E088(void)
@@ -4412,7 +4420,7 @@ static void sub_811E088(void)
u8 var0;
u8 var1;
- if (gUnknown_0203A11C->unk2DC && gUnknown_0203A11C->unk2E0)
+ if (sUnknown_0203A11C->unk2DC && sUnknown_0203A11C->unk2E0)
{
sub_811BB9C(&var0, &var1);
if (!sub_811BBB0())
@@ -4426,23 +4434,23 @@ static void sub_811E0EC(s8 arg0, s8 arg1)
{
if (arg0 != -1)
{
- StartSpriteAnim(gUnknown_0203A11C->unk2DC, 0);
- gUnknown_0203A11C->unk2DC->pos1.x = arg0 * 84 + 58;
- gUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 96;
+ StartSpriteAnim(sUnknown_0203A11C->unk2DC, 0);
+ sUnknown_0203A11C->unk2DC->pos1.x = arg0 * 84 + 58;
+ sUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 96;
- StartSpriteAnim(gUnknown_0203A11C->unk2E0, 0);
- gUnknown_0203A11C->unk2E0->pos1.x = arg0 * 84 + 58;
- gUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 96;
+ StartSpriteAnim(sUnknown_0203A11C->unk2E0, 0);
+ sUnknown_0203A11C->unk2E0->pos1.x = arg0 * 84 + 58;
+ sUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 96;
}
else
{
- StartSpriteAnim(gUnknown_0203A11C->unk2DC, 1);
- gUnknown_0203A11C->unk2DC->pos1.x = 216;
- gUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 112;
+ StartSpriteAnim(sUnknown_0203A11C->unk2DC, 1);
+ sUnknown_0203A11C->unk2DC->pos1.x = 216;
+ sUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 112;
- StartSpriteAnim(gUnknown_0203A11C->unk2E0, 1);
- gUnknown_0203A11C->unk2E0->pos1.x = 216;
- gUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 112;
+ StartSpriteAnim(sUnknown_0203A11C->unk2E0, 1);
+ sUnknown_0203A11C->unk2E0->pos1.x = 216;
+ sUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 112;
}
}
@@ -4466,32 +4474,32 @@ static void sub_811E1A4(s8 arg0, s8 arg1)
anim = 3;
}
- StartSpriteAnim(gUnknown_0203A11C->unk2DC, anim);
- gUnknown_0203A11C->unk2DC->pos1.x = x;
- gUnknown_0203A11C->unk2DC->pos1.y = y;
+ StartSpriteAnim(sUnknown_0203A11C->unk2DC, anim);
+ sUnknown_0203A11C->unk2DC->pos1.x = x;
+ sUnknown_0203A11C->unk2DC->pos1.y = y;
- StartSpriteAnim(gUnknown_0203A11C->unk2E0, anim);
- gUnknown_0203A11C->unk2E0->pos1.x = x;
- gUnknown_0203A11C->unk2E0->pos1.y = y;
+ StartSpriteAnim(sUnknown_0203A11C->unk2E0, anim);
+ sUnknown_0203A11C->unk2E0->pos1.x = x;
+ sUnknown_0203A11C->unk2E0->pos1.y = y;
}
else
{
- StartSpriteAnim(gUnknown_0203A11C->unk2DC, 1);
- gUnknown_0203A11C->unk2DC->pos1.x = 216;
- gUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 112;
+ StartSpriteAnim(sUnknown_0203A11C->unk2DC, 1);
+ sUnknown_0203A11C->unk2DC->pos1.x = 216;
+ sUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 112;
- StartSpriteAnim(gUnknown_0203A11C->unk2E0, 1);
- gUnknown_0203A11C->unk2E0->pos1.x = 216;
- gUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 112;
+ StartSpriteAnim(sUnknown_0203A11C->unk2E0, 1);
+ sUnknown_0203A11C->unk2E0->pos1.x = 216;
+ sUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 112;
}
}
static void sub_811E288(void)
{
u8 spriteId = CreateSprite(&sUnknown_08597D18, 0, 0, 4);
- gUnknown_0203A11C->unk2E4 = &gSprites[spriteId];
- gUnknown_0203A11C->unk2E4->callback = sub_811E2DC;
- gUnknown_0203A11C->unk2E4->oam.priority = 2;
+ sUnknown_0203A11C->unk2E4 = &gSprites[spriteId];
+ sUnknown_0203A11C->unk2E4->callback = sub_811E2DC;
+ sUnknown_0203A11C->unk2E4->oam.priority = 2;
sub_811E30C();
}
@@ -4518,58 +4526,58 @@ static void sub_811E30C(void)
static void sub_811E34C(u8 x, u8 y)
{
- if (gUnknown_0203A11C->unk2E4)
+ if (sUnknown_0203A11C->unk2E4)
{
- gUnknown_0203A11C->unk2E4->pos1.x = x;
- gUnknown_0203A11C->unk2E4->pos1.y = y;
- gUnknown_0203A11C->unk2E4->pos2.x = 0;
- gUnknown_0203A11C->unk2E4->data[0] = 0;
+ sUnknown_0203A11C->unk2E4->pos1.x = x;
+ sUnknown_0203A11C->unk2E4->pos1.y = y;
+ sUnknown_0203A11C->unk2E4->pos2.x = 0;
+ sUnknown_0203A11C->unk2E4->data[0] = 0;
}
}
static void sub_811E380(void)
{
- if (gUnknown_0203A11C->unk2E4)
+ if (sUnknown_0203A11C->unk2E4)
{
- DestroySprite(gUnknown_0203A11C->unk2E4);
- gUnknown_0203A11C->unk2E4 = NULL;
+ DestroySprite(sUnknown_0203A11C->unk2E4);
+ sUnknown_0203A11C->unk2E4 = NULL;
}
}
static void sub_811E3AC(void)
{
u8 spriteId = CreateSprite(&sUnknown_08597DF0, 208, 128, 6);
- gUnknown_0203A11C->unk2E8 = &gSprites[spriteId];
- gUnknown_0203A11C->unk2E8->pos2.x = -64;
+ sUnknown_0203A11C->unk2E8 = &gSprites[spriteId];
+ sUnknown_0203A11C->unk2E8->pos2.x = -64;
spriteId = CreateSprite(&sUnknown_08597DD0, 208, 80, 5);
- gUnknown_0203A11C->unk2EC = &gSprites[spriteId];
- gUnknown_0203A11C->unk9 = 0;
+ sUnknown_0203A11C->unk2EC = &gSprites[spriteId];
+ sUnknown_0203A11C->unk9 = 0;
}
static bool8 sub_811E418(void)
{
- switch (gUnknown_0203A11C->unk9)
+ switch (sUnknown_0203A11C->unk9)
{
default:
return FALSE;
case 0:
- gUnknown_0203A11C->unk2E8->pos2.x += 8;
- if (gUnknown_0203A11C->unk2E8->pos2.x >= 0)
+ sUnknown_0203A11C->unk2E8->pos2.x += 8;
+ if (sUnknown_0203A11C->unk2E8->pos2.x >= 0)
{
- gUnknown_0203A11C->unk2E8->pos2.x = 0;
+ sUnknown_0203A11C->unk2E8->pos2.x = 0;
if (!sub_811BBB0())
- StartSpriteAnim(gUnknown_0203A11C->unk2EC, 1);
+ StartSpriteAnim(sUnknown_0203A11C->unk2EC, 1);
else
- StartSpriteAnim(gUnknown_0203A11C->unk2EC, 2);
+ StartSpriteAnim(sUnknown_0203A11C->unk2EC, 2);
- gUnknown_0203A11C->unk9++;
+ sUnknown_0203A11C->unk9++;
}
break;
case 1:
- if (gUnknown_0203A11C->unk2EC->animEnded)
+ if (sUnknown_0203A11C->unk2EC->animEnded)
{
- gUnknown_0203A11C->unk9 = 2;
+ sUnknown_0203A11C->unk9 = 2;
return FALSE;
}
}
@@ -4579,29 +4587,29 @@ static bool8 sub_811E418(void)
static void sub_811E4AC(void)
{
- gUnknown_0203A11C->unk9 = 0;
- StartSpriteAnim(gUnknown_0203A11C->unk2EC, 3);
+ sUnknown_0203A11C->unk9 = 0;
+ StartSpriteAnim(sUnknown_0203A11C->unk2EC, 3);
}
static bool8 sub_811E4D0(void)
{
- switch (gUnknown_0203A11C->unk9)
+ switch (sUnknown_0203A11C->unk9)
{
default:
return FALSE;
case 0:
- if (gUnknown_0203A11C->unk2EC->animEnded)
- gUnknown_0203A11C->unk9 = 1;
+ if (sUnknown_0203A11C->unk2EC->animEnded)
+ sUnknown_0203A11C->unk9 = 1;
break;
case 1:
- gUnknown_0203A11C->unk2E8->pos2.x -= 8;
- if (gUnknown_0203A11C->unk2E8->pos2.x <= -64)
+ sUnknown_0203A11C->unk2E8->pos2.x -= 8;
+ if (sUnknown_0203A11C->unk2E8->pos2.x <= -64)
{
- DestroySprite(gUnknown_0203A11C->unk2EC);
- DestroySprite(gUnknown_0203A11C->unk2E8);
- gUnknown_0203A11C->unk2EC = NULL;
- gUnknown_0203A11C->unk2E8 = NULL;
- gUnknown_0203A11C->unk9++;
+ DestroySprite(sUnknown_0203A11C->unk2EC);
+ DestroySprite(sUnknown_0203A11C->unk2E8);
+ sUnknown_0203A11C->unk2EC = NULL;
+ sUnknown_0203A11C->unk2E8 = NULL;
+ sUnknown_0203A11C->unk9++;
return FALSE;
}
}
@@ -4611,33 +4619,33 @@ static bool8 sub_811E4D0(void)
static void sub_811E55C(void)
{
- StartSpriteAnim(gUnknown_0203A11C->unk2EC, 4);
+ StartSpriteAnim(sUnknown_0203A11C->unk2EC, 4);
}
static void sub_811E578(void)
{
if (!sub_811BBB0())
- StartSpriteAnim(gUnknown_0203A11C->unk2EC, 1);
+ StartSpriteAnim(sUnknown_0203A11C->unk2EC, 1);
else
- StartSpriteAnim(gUnknown_0203A11C->unk2EC, 2);
+ StartSpriteAnim(sUnknown_0203A11C->unk2EC, 2);
}
static bool8 sub_811E5B8(void)
{
- return !gUnknown_0203A11C->unk2EC->animEnded;
+ return !sUnknown_0203A11C->unk2EC->animEnded;
}
static void sub_811E5D4(void)
{
u8 spriteId = CreateSprite(&sUnknown_08597E48, 96, 80, 0);
if (spriteId != MAX_SPRITES)
- gUnknown_0203A11C->unk2F0 = &gSprites[spriteId];
+ sUnknown_0203A11C->unk2F0 = &gSprites[spriteId];
spriteId = CreateSprite(&sUnknown_08597E48, 96, 156, 0);
if (spriteId != MAX_SPRITES)
{
- gUnknown_0203A11C->unk2F4 = &gSprites[spriteId];
- gUnknown_0203A11C->unk2F4->vFlip = 1;
+ sUnknown_0203A11C->unk2F4 = &gSprites[spriteId];
+ sUnknown_0203A11C->unk2F4->vFlip = 1;
}
sub_811E6B0();
@@ -4645,27 +4653,27 @@ static void sub_811E5D4(void)
static void sub_811E64C(void)
{
- gUnknown_0203A11C->unk2F0->invisible = !sub_811BBF8();
- gUnknown_0203A11C->unk2F4->invisible = !sub_811BC2C();
+ sUnknown_0203A11C->unk2F0->invisible = !sub_811BBF8();
+ sUnknown_0203A11C->unk2F4->invisible = !sub_811BC2C();
}
static void sub_811E6B0(void)
{
- gUnknown_0203A11C->unk2F0->invisible = 1;
- gUnknown_0203A11C->unk2F4->invisible = 1;
+ sUnknown_0203A11C->unk2F0->invisible = 1;
+ sUnknown_0203A11C->unk2F4->invisible = 1;
}
static void sub_811E6E0(int arg0)
{
if (!arg0)
{
- gUnknown_0203A11C->unk2F0->pos1.x = 96;
- gUnknown_0203A11C->unk2F4->pos1.x = 96;
+ sUnknown_0203A11C->unk2F0->pos1.x = 96;
+ sUnknown_0203A11C->unk2F4->pos1.x = 96;
}
else
{
- gUnknown_0203A11C->unk2F0->pos1.x = 120;
- gUnknown_0203A11C->unk2F4->pos1.x = 120;
+ sUnknown_0203A11C->unk2F0->pos1.x = 120;
+ sUnknown_0203A11C->unk2F4->pos1.x = 120;
}
}
@@ -4673,13 +4681,13 @@ static void sub_811E720(void)
{
u8 spriteId = CreateSprite(&sUnknown_08597E30, 220, 84, 1);
if (spriteId != MAX_SPRITES)
- gUnknown_0203A11C->unk2F8 = &gSprites[spriteId];
+ sUnknown_0203A11C->unk2F8 = &gSprites[spriteId];
spriteId = CreateSprite(&sUnknown_08597E30, 220, 156, 1);
if (spriteId != MAX_SPRITES)
{
- gUnknown_0203A11C->unk2FC = &gSprites[spriteId];
- StartSpriteAnim(gUnknown_0203A11C->unk2FC, 1);
+ sUnknown_0203A11C->unk2FC = &gSprites[spriteId];
+ StartSpriteAnim(sUnknown_0203A11C->unk2FC, 1);
}
sub_811E7F8();
@@ -4687,14 +4695,14 @@ static void sub_811E720(void)
static void sub_811E794(void)
{
- gUnknown_0203A11C->unk2F8->invisible = !sub_811BBF8();
- gUnknown_0203A11C->unk2FC->invisible = !sub_811BC2C();
+ sUnknown_0203A11C->unk2F8->invisible = !sub_811BBF8();
+ sUnknown_0203A11C->unk2FC->invisible = !sub_811BC2C();
}
static void sub_811E7F8(void)
{
- gUnknown_0203A11C->unk2F8->invisible = 1;
- gUnknown_0203A11C->unk2FC->invisible = 1;
+ sUnknown_0203A11C->unk2F8->invisible = 1;
+ sUnknown_0203A11C->unk2FC->invisible = 1;
}
static void sub_811E828(void)
@@ -4702,22 +4710,22 @@ static void sub_811E828(void)
int graphicsId;
u8 spriteId;
- switch (sub_811BCBC())
+ switch (GetDisplayedPersonType())
{
- case 0:
+ case EASY_CHAT_PERSON_REPORTER_MALE:
graphicsId = EVENT_OBJ_GFX_REPORTER_M;
break;
- case 1:
+ case EASY_CHAT_PERSON_REPORTER_FEMALE:
graphicsId = EVENT_OBJ_GFX_REPORTER_F;
break;
- case 2:
+ case EASY_CHAT_PERSON_BOY:
graphicsId = EVENT_OBJ_GFX_BOY_1;
break;
default:
return;
}
- if (sub_811BA68() != 4)
+ if (GetEasyChatScreenFrameId() != 4)
return;
spriteId = AddPseudoEventObject(graphicsId, SpriteCallbackDummy, 76, 40, 0);
@@ -4741,10 +4749,10 @@ static void sub_811E828(void)
}
}
-int sub_811E8E4(void)
+int GetFooterIndex(void)
{
- u8 var0 = sub_811BA68();
- switch (gUnknown_08597C30[var0].unk3)
+ u8 frameId = GetEasyChatScreenFrameId();
+ switch (sPhraseFrameDimensions[frameId].footerId)
{
case 1:
return 1;
@@ -4757,11 +4765,11 @@ int sub_811E8E4(void)
}
}
-static int sub_811E920(int arg0)
+static int GetFooterOptionXOffset(int option)
{
- int var0 = sub_811E8E4();
- if (var0 < 3)
- return sUnknown_08597E60[var0][arg0] + 4;
+ int footerIndex = GetFooterIndex();
+ if (footerIndex < 3)
+ return sFooterOptionXOffsets[footerIndex][option] + 4;
else
return 0;
}
@@ -4771,8 +4779,8 @@ static void sub_811E948(void)
int i;
u16 windowId;
struct WindowTemplate template;
- int var0 = sub_811E8E4();
- if (var0 == 3)
+ int footerId = GetFooterIndex();
+ if (footerId == 3)
return;
template.bg = 3;
@@ -4786,10 +4794,10 @@ static void sub_811E948(void)
FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
for (i = 0; i < 4; i++)
{
- const u8 *str = sFooterTextOptions[var0][i];
+ const u8 *str = sFooterTextOptions[footerId][i];
if (str)
{
- int x = sUnknown_08597E60[var0][i];
+ int x = sFooterOptionXOffsets[footerId][i];
sub_811D028(windowId, 1, str, x, 1, 0, NULL);
}
}
@@ -5075,13 +5083,13 @@ void sub_811EECC(void)
switch (gSpecialVar_0x8004)
{
case 0:
- easyChatWords = gSaveBlock1Ptr->unk2BB0;
+ easyChatWords = gSaveBlock1Ptr->easyChatProfile;
columns = 2;
rows = 2;
break;
case 1:
- easyChatWords = gSaveBlock1Ptr->unk2BBC;
- if (sub_811EDC4(gSaveBlock1Ptr->unk2BBC, 3, 2, 18))
+ easyChatWords = gSaveBlock1Ptr->easyChatBattleStart;
+ if (sub_811EDC4(gSaveBlock1Ptr->easyChatBattleStart, 3, 2, 18))
{
columns = 2;
rows = 3;
@@ -5093,12 +5101,12 @@ void sub_811EECC(void)
}
break;
case 2:
- easyChatWords = gSaveBlock1Ptr->unk2BC8;
+ easyChatWords = gSaveBlock1Ptr->easyChatBattleWon;
columns = 3;
rows = 2;
break;
case 3:
- easyChatWords = gSaveBlock1Ptr->unk2BD4;
+ easyChatWords = gSaveBlock1Ptr->easyChatBattleLost;
columns = 3;
rows = 2;
break;
@@ -5237,16 +5245,16 @@ void InitEasyChatPhrases(void)
u16 i, j;
for (i = 0; i < 4; i++)
- gSaveBlock1Ptr->unk2BB0[i] = sUnknown_0859E62C[i];
+ gSaveBlock1Ptr->easyChatProfile[i] = sDefaultProfileWords[i];
for (i = 0; i < 6; i++)
- gSaveBlock1Ptr->unk2BBC[i] = sUnknown_0859E634[i];
+ gSaveBlock1Ptr->easyChatBattleStart[i] = sDefaultBattleStartWords[i];
for (i = 0; i < 6; i++)
- gSaveBlock1Ptr->unk2BC8[i] = sUnknown_0859E640[i];
+ gSaveBlock1Ptr->easyChatBattleWon[i] = sUnknown_0859E640[i];
for (i = 0; i < 6; i++)
- gSaveBlock1Ptr->unk2BD4[i] = sUnknown_0859E64C[i];
+ gSaveBlock1Ptr->easyChatBattleLost[i] = sUnknown_0859E64C[i];
for (i = 0; i < MAIL_COUNT; i++)
{
@@ -5264,8 +5272,8 @@ void InitEasyChatPhrases(void)
static bool8 sub_811F28C(void)
{
- gUnknown_0203A120 = Alloc(sizeof(*gUnknown_0203A120));
- if (!gUnknown_0203A120)
+ sUnknown_0203A120 = Alloc(sizeof(*sUnknown_0203A120));
+ if (!sUnknown_0203A120)
return FALSE;
sub_811F2D4();
@@ -5275,46 +5283,46 @@ static bool8 sub_811F28C(void)
static void sub_811F2B8(void)
{
- if (gUnknown_0203A120)
- FREE_AND_SET_NULL(gUnknown_0203A120);
+ if (sUnknown_0203A120)
+ FREE_AND_SET_NULL(sUnknown_0203A120);
}
static void sub_811F2D4(void)
{
int i;
- gUnknown_0203A120->unk0 = 0;
+ sUnknown_0203A120->unk0 = 0;
if (GetNationalPokedexCount(FLAG_GET_SEEN))
- gUnknown_0203A120->unk2[gUnknown_0203A120->unk0++] = EC_GROUP_POKEMON;
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_POKEMON;
for (i = EC_GROUP_TRAINER; i <= EC_GROUP_ADJECTIVES; i++)
- gUnknown_0203A120->unk2[gUnknown_0203A120->unk0++] = i;
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = i;
if (FlagGet(FLAG_SYS_GAME_CLEAR))
{
- gUnknown_0203A120->unk2[gUnknown_0203A120->unk0++] = EC_GROUP_EVENTS;
- gUnknown_0203A120->unk2[gUnknown_0203A120->unk0++] = EC_GROUP_MOVE_1;
- gUnknown_0203A120->unk2[gUnknown_0203A120->unk0++] = EC_GROUP_MOVE_2;
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_EVENTS;
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_MOVE_1;
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_MOVE_2;
}
if (FlagGet(FLAG_SYS_HIPSTER_MEET))
- gUnknown_0203A120->unk2[gUnknown_0203A120->unk0++] = EC_GROUP_TRENDY_SAYING;
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_TRENDY_SAYING;
if (IsNationalPokedexEnabled())
- gUnknown_0203A120->unk2[gUnknown_0203A120->unk0++] = EC_GROUP_POKEMON_2;
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_POKEMON_2;
}
static u8 sub_811F3AC(void)
{
- return gUnknown_0203A120->unk0;
+ return sUnknown_0203A120->unk0;
}
static u8 sub_811F3B8(u8 index)
{
- if (index >= gUnknown_0203A120->unk0)
+ if (index >= sUnknown_0203A120->unk0)
return EC_NUM_GROUPS;
else
- return gUnknown_0203A120->unk2[index];
+ return sUnknown_0203A120->unk2[index];
}
u8 *unref_sub_811F3E0(u8 *dest, u8 groupId, u16 totalChars)
@@ -5362,7 +5370,7 @@ static void sub_811F46C(void)
{
numWords = gEasyChatWordsByLetterPointers[i].numWords;
words = gEasyChatWordsByLetterPointers[i].words;
- gUnknown_0203A120->unk2E[i] = 0;
+ sUnknown_0203A120->unk2E[i] = 0;
index = 0;
for (j = 0; j < numWords; j++)
{
@@ -5382,8 +5390,8 @@ static void sub_811F46C(void)
{
if (sub_811F860(words[k]))
{
- gUnknown_0203A120->unk64[i][index++] = words[k];
- gUnknown_0203A120->unk2E[i]++;
+ sUnknown_0203A120->unk64[i][index++] = words[k];
+ sUnknown_0203A120->unk2E[i]++;
break;
}
}
@@ -5396,22 +5404,22 @@ static void sub_811F46C(void)
static void sub_811F548(int arg0, u16 groupId)
{
if (!arg0)
- gUnknown_0203A120->unk3BA0 = sub_811F5C4(groupId);
+ sUnknown_0203A120->unk3BA0 = sub_811F5C4(groupId);
else
- gUnknown_0203A120->unk3BA0 = sub_811F6B8(groupId);
+ sUnknown_0203A120->unk3BA0 = sub_811F6B8(groupId);
}
static u16 sub_811F578(u16 arg0)
{
- if (arg0 >= gUnknown_0203A120->unk3BA0)
+ if (arg0 >= sUnknown_0203A120->unk3BA0)
return 0xFFFF;
else
- return gUnknown_0203A120->unk3984[arg0];
+ return sUnknown_0203A120->unk3984[arg0];
}
static u16 sub_811F5B0(void)
{
- return gUnknown_0203A120->unk3BA0;
+ return sUnknown_0203A120->unk3BA0;
}
static u16 sub_811F5C4(u16 groupId)
@@ -5429,7 +5437,7 @@ static u16 sub_811F5C4(u16 groupId)
for (i = 0, totalWords = 0; i < numWords; i++)
{
if (sub_811F764(list[i], groupId))
- gUnknown_0203A120->unk3984[totalWords++] = EC_WORD(groupId, list[i]);
+ sUnknown_0203A120->unk3984[totalWords++] = EC_WORD(groupId, list[i]);
}
return totalWords;
@@ -5441,7 +5449,7 @@ static u16 sub_811F5C4(u16 groupId)
{
u16 alphabeticalOrder = wordInfo[i].alphabeticalOrder;
if (sub_811F764(alphabeticalOrder, groupId))
- gUnknown_0203A120->unk3984[totalWords++] = EC_WORD(groupId, alphabeticalOrder);
+ sUnknown_0203A120->unk3984[totalWords++] = EC_WORD(groupId, alphabeticalOrder);
}
return totalWords;
@@ -5453,8 +5461,8 @@ static u16 sub_811F6B8(u16 alphabeticalGroup)
u16 i;
u16 totalWords;
- for (i = 0, totalWords = 0; i < gUnknown_0203A120->unk2E[alphabeticalGroup]; i++)
- gUnknown_0203A120->unk3984[totalWords++] = gUnknown_0203A120->unk64[alphabeticalGroup][i];
+ for (i = 0, totalWords = 0; i < sUnknown_0203A120->unk2E[alphabeticalGroup]; i++)
+ sUnknown_0203A120->unk3984[totalWords++] = sUnknown_0203A120->unk64[alphabeticalGroup][i];
return totalWords;
}
@@ -5462,9 +5470,9 @@ static u16 sub_811F6B8(u16 alphabeticalGroup)
static bool8 sub_811F72C(u8 arg0)
{
int i;
- for (i = 0; i < gUnknown_0203A120->unk0; i++)
+ for (i = 0; i < sUnknown_0203A120->unk0; i++)
{
- if (gUnknown_0203A120->unk2[i] == arg0)
+ if (sUnknown_0203A120->unk2[i] == arg0)
return TRUE;
}
diff --git a/src/event_data.c b/src/event_data.c
index e75c37773..50628f984 100644
--- a/src/event_data.c
+++ b/src/event_data.c
@@ -23,8 +23,8 @@ EWRAM_DATA u16 gSpecialVar_LastTalked = 0;
EWRAM_DATA u16 gSpecialVar_Facing = 0;
EWRAM_DATA u16 gSpecialVar_MonBoxId = 0;
EWRAM_DATA u16 gSpecialVar_MonBoxPos = 0;
-EWRAM_DATA u16 gSpecialVar_0x8014 = 0;
-EWRAM_DATA static u8 gUnknown_020375FC[16] = {0};
+EWRAM_DATA u16 gSpecialVar_Unused_0x8014 = 0;
+EWRAM_DATA static u8 gSpecialFlags[16] = {0};
extern u16 *const gSpecialVars[];
@@ -32,7 +32,7 @@ void InitEventData(void)
{
memset(gSaveBlock1Ptr->flags, 0, sizeof(gSaveBlock1Ptr->flags));
memset(gSaveBlock1Ptr->vars, 0, sizeof(gSaveBlock1Ptr->vars));
- memset(gUnknown_020375FC, 0, sizeof(gUnknown_020375FC));
+ memset(gSpecialFlags, 0, sizeof(gSpecialFlags));
}
void ClearTempFieldEventData(void)
@@ -131,13 +131,13 @@ void sub_809D4D8(void)
void sub_809D570(void)
{
VarSet(VAR_EVENT_PICHU_SLOT, 0);
- VarSet(VAR_0x40DE, 0);
- VarSet(VAR_0x40DF, 0);
- VarSet(VAR_0x40E0, 0);
- VarSet(VAR_0x40E1, 0);
- VarSet(VAR_0x40E2, 0);
- VarSet(VAR_0x40E3, 0);
- VarSet(VAR_0x40E4, 0);
+ VarSet(VAR_NEVER_READ_0x40DE, 0);
+ VarSet(VAR_NEVER_READ_0x40DF, 0);
+ VarSet(VAR_NEVER_READ_0x40E0, 0);
+ VarSet(VAR_NEVER_READ_0x40E1, 0);
+ VarSet(VAR_NEVER_READ_0x40E2, 0);
+ VarSet(VAR_NEVER_READ_0x40E3, 0);
+ VarSet(VAR_NEVER_READ_0x40E4, 0);
}
void DisableResetRTC(void)
@@ -199,7 +199,7 @@ u8 *GetFlagPointer(u16 id)
else if (id < SPECIAL_FLAGS_START)
return &gSaveBlock1Ptr->flags[id / 8];
else
- return &gUnknown_020375FC[(id - SPECIAL_FLAGS_START) / 8];
+ return &gSpecialFlags[(id - SPECIAL_FLAGS_START) / 8];
}
u8 FlagSet(u16 id)
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index cffafaf9f..8a7076591 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -557,9 +557,9 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior)
ScriptContext1_SetupScript(EventScript_EggHatch);
return TRUE;
}
- if (sub_813B3B0() == TRUE)
+ if (UnusualWeatherHasExpired() == TRUE)
{
- ScriptContext1_SetupScript(gUnknown_08273D1F);
+ ScriptContext1_SetupScript(UnusualWeather_EventScript_EndEventAndCleanup_1);
return TRUE;
}
if (ShouldDoBrailleRegicePuzzle() == TRUE)
@@ -567,27 +567,27 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior)
ScriptContext1_SetupScript(IslandCave_EventScript_238EAF);
return TRUE;
}
- if (is_tile_that_overrides_player_control() == TRUE)
+ if (ShouldDoWallyCall() == TRUE)
{
ScriptContext1_SetupScript(MauvilleCity_EventScript_1DF7BA);
return TRUE;
}
- if (sub_8138120() == TRUE)
+ if (ShouldDoWinonaCall() == TRUE)
{
ScriptContext1_SetupScript(Route119_EventScript_1F49EC);
return TRUE;
}
- if (sub_8138168() == TRUE)
+ if (ShouldDoScottCall() == TRUE)
{
ScriptContext1_SetupScript(LittlerootTown_ProfessorBirchsLab_EventScript_1FA4D6);
return TRUE;
}
- if (sub_81381B0() == TRUE)
+ if (ShouldDoRoxanneCall() == TRUE)
{
ScriptContext1_SetupScript(RustboroCity_Gym_EventScript_21307B);
return TRUE;
}
- if (sub_81381F8() == TRUE)
+ if (ShouldDoRivalRayquazaCall() == TRUE)
{
ScriptContext1_SetupScript(MossdeepCity_SpaceCenter_2F_EventScript_224175);
return TRUE;
diff --git a/src/field_effect.c b/src/field_effect.c
index e7c0b39b9..158d4dead 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -2443,7 +2443,7 @@ static void sub_80B8410(struct Task *task)
bool8 FldEff_FieldMoveShowMon(void)
{
u8 taskId;
- if (is_map_type_1_2_3_5_or_6(GetCurrentMapType()) == TRUE)
+ if (IsMapTypeOutdoors(GetCurrentMapType()) == TRUE)
{
taskId = CreateTask(sub_80B8554, 0xff);
} else
@@ -2620,7 +2620,7 @@ static void sub_80B8874(u16 offs)
dest = (u16 *)(VRAM + 0x140 + offs);
for (i = 0; i < 0x140; i++, dest++)
{
- *dest = gFieldMoveStreaksTilemap[i] | 0xf000;
+ *dest = gFieldMoveStreaksTilemap[i] | METATILE_ELEVATION_MASK;
}
}
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
index 0a4f3212b..e7476dea3 100644
--- a/src/field_screen_effect.c
+++ b/src/field_screen_effect.c
@@ -255,7 +255,7 @@ void sub_80AF2B4(u8 taskId)
break;
case 2:
sub_8009F18();
- sub_8086C2C();
+ ResetAllMultiplayerState();
ScriptContext2_Disable();
DestroyTask(taskId);
break;
@@ -621,7 +621,7 @@ void sub_80AF948(void)
CreateTask(sub_80AF8E0, 10);
}
-static void sub_80AF96C(u8 taskId)
+static void Task_ReturnToWorldFromLinkRoom(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -654,7 +654,7 @@ static void sub_80AF96C(u8 taskId)
void sub_80AF9F8(void)
{
- CreateTask(sub_80AF96C, 10);
+ CreateTask(Task_ReturnToWorldFromLinkRoom, 10);
}
static void sub_80AFA0C(u8 taskId)
diff --git a/src/field_specials.c b/src/field_specials.c
index 2e0b03290..a6e0ef746 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -360,17 +360,17 @@ u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y)
return 0;
}
-bool32 is_tile_that_overrides_player_control(void)
+bool32 ShouldDoWallyCall(void)
{
if (FlagGet(FLAG_ENABLE_FIRST_WALLY_POKENAV_CALL))
{
switch (gMapHeader.mapType)
{
- case 1:
- case 2:
- case 3:
- case 6:
- if (++(*GetVarPointer(VAR_0x40F2)) < 0xFA)
+ case MAP_TYPE_TOWN:
+ case MAP_TYPE_CITY:
+ case MAP_TYPE_ROUTE:
+ case MAP_TYPE_OCEAN_ROUTE:
+ if (++(*GetVarPointer(VAR_WALLY_CALL_STEP_COUNTER)) < 250)
{
return FALSE;
}
@@ -387,7 +387,7 @@ bool32 is_tile_that_overrides_player_control(void)
return TRUE;
}
-bool32 sub_8138120(void)
+bool32 ShouldDoWinonaCall(void)
{
if (FlagGet(FLAG_REGISTER_WINONA_POKENAV))
{
@@ -396,8 +396,8 @@ bool32 sub_8138120(void)
case MAP_TYPE_TOWN:
case MAP_TYPE_CITY:
case MAP_TYPE_ROUTE:
- case MAP_TYPE_6:
- if (++(*GetVarPointer(VAR_0x40F3)) < 10)
+ case MAP_TYPE_OCEAN_ROUTE:
+ if (++(*GetVarPointer(VAR_WINONA_CALL_STEP_COUNTER)) < 10)
{
return FALSE;
}
@@ -414,7 +414,7 @@ bool32 sub_8138120(void)
return TRUE;
}
-bool32 sub_8138168(void)
+bool32 ShouldDoScottCall(void)
{
if (FlagGet(FLAG_SCOTT_CALL_NATIONAL_DEX))
{
@@ -424,7 +424,7 @@ bool32 sub_8138168(void)
case 2:
case 3:
case 6:
- if (++(*GetVarPointer(VAR_0x40F5)) < 0xA)
+ if (++(*GetVarPointer(VAR_SCOTT_CALL_STEP_COUNTER)) < 10)
{
return FALSE;
}
@@ -441,7 +441,7 @@ bool32 sub_8138168(void)
return TRUE;
}
-bool32 sub_81381B0(void)
+bool32 ShouldDoRoxanneCall(void)
{
if (FlagGet(FLAG_ENABLE_ROXANNE_FIRST_CALL))
{
@@ -451,7 +451,7 @@ bool32 sub_81381B0(void)
case 2:
case 3:
case 6:
- if (++(*GetVarPointer(VAR_0x40F4)) < 0xFA)
+ if (++(*GetVarPointer(VAR_ROXANNE_CALL_STEP_COUNTER)) < 250)
{
return FALSE;
}
@@ -468,7 +468,7 @@ bool32 sub_81381B0(void)
return TRUE;
}
-bool32 sub_81381F8(void)
+bool32 ShouldDoRivalRayquazaCall(void)
{
if (FlagGet(FLAG_DEFEATED_MAGMA_SPACE_CENTER))
{
@@ -478,7 +478,7 @@ bool32 sub_81381F8(void)
case 2:
case 3:
case 6:
- if (++(*GetVarPointer(VAR_0x40F6)) < 0xFA)
+ if (++(*GetVarPointer(VAR_RIVAL_RAYQUAZA_CALL_STEP_COUNTER)) < 250)
{
return FALSE;
}
@@ -887,8 +887,8 @@ static void PetalburgGymFunc(u8 a0, u16 a1)
}
for (i = 0; i < nDoors; i++)
{
- MapGridSetMetatileIdAt(x[i] + 7, y[i] + 7, a1 | 0xc00);
- MapGridSetMetatileIdAt(x[i] + 7, y[i] + 8, (a1 + 8) | 0xc00);
+ MapGridSetMetatileIdAt(x[i] + 7, y[i] + 7, a1 | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(x[i] + 7, y[i] + 8, (a1 + 8) | METATILE_COLLISION_MASK);
}
DrawWholeMapView();
}
@@ -1100,7 +1100,7 @@ static void PCTurnOnEffect_1(s16 flag, s8 dx, s8 dy)
tileId = 0x27e;
}
}
- MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | 0xc00);
+ MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | METATILE_COLLISION_MASK);
}
void DoPCTurnOffEffect(void)
@@ -1141,7 +1141,7 @@ static void PCTurnOffEffect(void)
{
tileId = 0x259;
}
- MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | 0xc00);
+ MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | METATILE_COLLISION_MASK);
DrawWholeMapView();
}
@@ -1516,7 +1516,7 @@ bool8 FoundBlackGlasses(void)
void SetRoute119Weather(void)
{
- if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType()) != TRUE)
+ if (IsMapTypeOutdoors(GetLastUsedWarpMapType()) != TRUE)
{
SetSav1Weather(20);
}
@@ -1524,7 +1524,7 @@ void SetRoute119Weather(void)
void SetRoute123Weather(void)
{
- if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType()) != TRUE)
+ if (IsMapTypeOutdoors(GetLastUsedWarpMapType()) != TRUE)
{
SetSav1Weather(21);
}
@@ -1892,7 +1892,7 @@ static void sub_8139C80(u8 taskId)
{
for (x = 0; x < 3; x++)
{
- MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2BF4[y][data[0] % 3] | 0xC00);
+ MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2BF4[y][data[0] % 3] | METATILE_COLLISION_MASK);
}
}
}
@@ -1902,7 +1902,7 @@ static void sub_8139C80(u8 taskId)
{
for (x = 0; x < 3; x++)
{
- MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2C06[y][data[0] % 3] | 0xC00);
+ MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2C06[y][data[0] % 3] | METATILE_COLLISION_MASK);
}
}
}
@@ -3421,40 +3421,59 @@ bool8 sub_813B260(void)
return FALSE;
}
-void sub_813B2E4(void)
+void CreateUnusualWeatherEvent(void)
{
u16 randomValue = Random();
- VarSet(VAR_0x4038, 0);
+ VarSet(VAR_UNUSUAL_WEATHER_STEP_COUNTER, 0);
if (FlagGet(FLAG_DEFEATED_KYOGRE) == TRUE)
{
- VarSet(VAR_0x4037, (randomValue & 7) + 1);
+ VarSet(VAR_UNUSUAL_WEATHER_LOCATION, (randomValue % UNUSUAL_WEATHER_COUNT_PER_LEGENDARY) + UNUSUAL_WEATHER_GROUDON_LOCATIONS_START);
}
else if (FlagGet(FLAG_DEFEATED_GROUDON) == TRUE)
{
- VarSet(VAR_0x4037, (randomValue & 7) + 9);
+ VarSet(VAR_UNUSUAL_WEATHER_LOCATION, (randomValue % UNUSUAL_WEATHER_COUNT_PER_LEGENDARY) + UNUSUAL_WEATHER_KYOGRE_LOCATIONS_START);
}
else if ((randomValue & 1) == 0)
{
randomValue = Random();
- VarSet(VAR_0x4037, (randomValue & 7) + 1);
+ VarSet(VAR_UNUSUAL_WEATHER_LOCATION, (randomValue % UNUSUAL_WEATHER_COUNT_PER_LEGENDARY) + UNUSUAL_WEATHER_GROUDON_LOCATIONS_START);
}
else
{
randomValue = Random();
- VarSet(VAR_0x4037, (randomValue & 7) + 9);
- }
-}
-
-bool32 sub_813B374(void)
-{
- static const u8 gUnknown_085B3400[] = { 0x1d, 0x1d, 0x1e, 0x1e, 0x1f, 0x1f, 0x21, 0x21, 0x14, 0x14, 0x28, 0x28, 0x2a, 0x2a, 0x2c, 0x2c };
+ VarSet(VAR_UNUSUAL_WEATHER_LOCATION, (randomValue % UNUSUAL_WEATHER_COUNT_PER_LEGENDARY) + UNUSUAL_WEATHER_KYOGRE_LOCATIONS_START);
+ }
+}
+
+// Saves the map name for the current unusual weather location in gStringVar1, then
+// returns TRUE if the weather is for Kyogre, and FALSE if it's for Groudon.
+bool32 GetUnusualWeatherMapNameAndType(void)
+{
+ static const u8 sUnusualWeatherMapNumbers[] = {
+ MAP_NUM(ROUTE114),
+ MAP_NUM(ROUTE114),
+ MAP_NUM(ROUTE115),
+ MAP_NUM(ROUTE115),
+ MAP_NUM(ROUTE116),
+ MAP_NUM(ROUTE116),
+ MAP_NUM(ROUTE118),
+ MAP_NUM(ROUTE118),
+ MAP_NUM(ROUTE105),
+ MAP_NUM(ROUTE105),
+ MAP_NUM(ROUTE125),
+ MAP_NUM(ROUTE125),
+ MAP_NUM(ROUTE127),
+ MAP_NUM(ROUTE127),
+ MAP_NUM(ROUTE129),
+ MAP_NUM(ROUTE129)
+ };
- u16 var = VarGet(VAR_0x4037);
+ u16 unusualWeather = VarGet(VAR_UNUSUAL_WEATHER_LOCATION);
- GetMapName(gStringVar1, gUnknown_085B3400[var - 1], 0);
+ GetMapName(gStringVar1, sUnusualWeatherMapNumbers[unusualWeather - 1], 0);
- if (var < 9)
+ if (unusualWeather < UNUSUAL_WEATHER_KYOGRE_LOCATIONS_START)
{
return FALSE;
}
@@ -3464,21 +3483,39 @@ bool32 sub_813B374(void)
}
}
-bool8 sub_813B3B0(void)
-{
- static const u8 gUnknown_085B3410[] = { 0x1d, 0x1d, 0x1e, 0x1e, 0x1f, 0x1f, 0x21, 0x21, 0x14, 0x14, 0x28, 0x28, 0x2a, 0x2a, 0x2c, 0x2c };
+bool8 UnusualWeatherHasExpired(void)
+{
+ // Duplicate array.
+ static const u8 sUnusualWeatherMapNumbers_2[] = {
+ MAP_NUM(ROUTE114),
+ MAP_NUM(ROUTE114),
+ MAP_NUM(ROUTE115),
+ MAP_NUM(ROUTE115),
+ MAP_NUM(ROUTE116),
+ MAP_NUM(ROUTE116),
+ MAP_NUM(ROUTE118),
+ MAP_NUM(ROUTE118),
+ MAP_NUM(ROUTE105),
+ MAP_NUM(ROUTE105),
+ MAP_NUM(ROUTE125),
+ MAP_NUM(ROUTE125),
+ MAP_NUM(ROUTE127),
+ MAP_NUM(ROUTE127),
+ MAP_NUM(ROUTE129),
+ MAP_NUM(ROUTE129)
+ };
- u16 var1 = VarGet(VAR_0x4038);
- u16 var2 = VarGet(VAR_0x4037);
+ u16 steps = VarGet(VAR_UNUSUAL_WEATHER_STEP_COUNTER);
+ u16 unusualWeather = VarGet(VAR_UNUSUAL_WEATHER_LOCATION);
- if (!var2)
+ if (unusualWeather == UNUSUAL_WEATHER_NONE)
{
return FALSE;
}
- if (++var1 > 999)
+ if (++steps > 999)
{
- VarSet(VAR_0x4038, 0);
+ VarSet(VAR_UNUSUAL_WEATHER_STEP_COUNTER, 0);
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(UNDERWATER_MARINE_CAVE))
{
switch (gSaveBlock1Ptr->location.mapNum)
@@ -3488,7 +3525,7 @@ bool8 sub_813B3B0(void)
case MAP_NUM(MARINE_CAVE_END):
case MAP_NUM(TERRA_CAVE_ENTRANCE):
case MAP_NUM(TERRA_CAVE_END):
- VarSet(VAR_0x4039, 1);
+ VarSet(VAR_SHOULD_END_UNUSUAL_WEATHER, 1);
return FALSE;
default:
break;
@@ -3503,27 +3540,27 @@ bool8 sub_813B3B0(void)
case MAP_NUM(UNDERWATER5):
case MAP_NUM(UNDERWATER6):
case MAP_NUM(UNDERWATER7):
- VarSet(VAR_0x4039, 1);
+ VarSet(VAR_SHOULD_END_UNUSUAL_WEATHER, 1);
return FALSE;
default:
break;
}
}
- if (gSaveBlock1Ptr->location.mapNum == gUnknown_085B3410[var2 - 1] &&
+ if (gSaveBlock1Ptr->location.mapNum == sUnusualWeatherMapNumbers_2[unusualWeather - 1] &&
gSaveBlock1Ptr->location.mapGroup == 0)
{
return TRUE;
}
else
{
- VarSet(VAR_0x4037, 0);
+ VarSet(VAR_UNUSUAL_WEATHER_LOCATION, UNUSUAL_WEATHER_NONE);
return FALSE;
}
}
else
{
- VarSet(VAR_0x4038, var1);
+ VarSet(VAR_UNUSUAL_WEATHER_STEP_COUNTER, steps);
return FALSE;
}
}
@@ -3577,7 +3614,7 @@ bool32 sub_813B4E0(void)
bool32 sub_813B514(void)
{
- if (!VarGet(VAR_0x403F))
+ if (!VarGet(VAR_ALWAYS_ZERO_0x403F))
{
return FALSE;
}
diff --git a/src/fieldmap.c b/src/fieldmap.c
index cf5f0356e..a96b71c0f 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -383,15 +383,15 @@ u8 MapGridGetZCoordAt(int x, int y)
i = (x + 1) & 1;
i += ((y + 1) & 1) * 2;
block = gMapHeader.mapLayout->border[i];
- block |= 0xc00;
+ block |= METATILE_COLLISION_MASK;
}
- if (block == 0x3ff)
+ if (block == METATILE_ID_UNDEFINED)
{
return 0;
}
- return block >> 12;
+ return block >> METATILE_ELEVATION_SHIFT;
}
u8 MapGridIsImpassableAt(int x, int y)
@@ -411,13 +411,13 @@ u8 MapGridIsImpassableAt(int x, int y)
i = (x + 1) & 1;
i += ((y + 1) & 1) * 2;
block = gMapHeader.mapLayout->border[i];
- block |= 0xc00;
+ block |= METATILE_COLLISION_MASK;
}
- if (block == 0x3ff)
+ if (block == METATILE_ID_UNDEFINED)
{
return 1;
}
- return (block & 0xc00) >> 10;
+ return (block & METATILE_COLLISION_MASK) >> METATILE_COLLISION_SHIFT;
}
u32 MapGridGetMetatileIdAt(int x, int y)
@@ -439,18 +439,19 @@ u32 MapGridGetMetatileIdAt(int x, int y)
mapLayout = gMapHeader.mapLayout;
i = (x + 1) & 1;
i += ((y + 1) & 1) * 2;
- block = mapLayout->border[i] | 0xc00;
+ block = mapLayout->border[i] | METATILE_COLLISION_MASK;
}
- if (block == 0x3ff)
+ if (block == METATILE_ID_UNDEFINED)
{
border = gMapHeader.mapLayout->border;
j = (x + 1) & 1;
j += ((y + 1) & 1) * 2;
block2 = gMapHeader.mapLayout->border[j];
- block2 |= 0xc00;
- return block2 & block;
+ // This OR is completely pointless.
+ block2 |= METATILE_COLLISION_MASK;
+ return block2 & METATILE_ID_MASK;
}
- return block & 0x3ff;
+ return block & METATILE_ID_MASK;
}
u32 MapGridGetMetatileBehaviorAt(int x, int y)
@@ -464,7 +465,7 @@ u8 MapGridGetMetatileLayerTypeAt(int x, int y)
{
u16 metatile;
metatile = MapGridGetMetatileIdAt(x, y);
- return (GetBehaviorByMetatileId(metatile) & 0xf000) >> 12;
+ return (GetBehaviorByMetatileId(metatile) & METATILE_ELEVATION_MASK) >> METATILE_ELEVATION_SHIFT;
}
void MapGridSetMetatileIdAt(int x, int y, u16 metatile)
@@ -474,7 +475,7 @@ void MapGridSetMetatileIdAt(int x, int y, u16 metatile)
&& y >= 0 && y < gBackupMapLayout.height)
{
i = x + y * gBackupMapLayout.width;
- gBackupMapLayout.map[i] = (gBackupMapLayout.map[i] & 0xf000) | (metatile & 0xfff);
+ gBackupMapLayout.map[i] = (gBackupMapLayout.map[i] & METATILE_ELEVATION_MASK) | (metatile & ~METATILE_ELEVATION_MASK);
}
}
@@ -654,7 +655,7 @@ int GetMapBorderIdAt(int x, int y)
i = gBackupMapLayout.width;
i *= y;
block = gBackupMapLayout.map[x + i];
- if (block == 0x3ff)
+ if (block == METATILE_ID_UNDEFINED)
{
goto fail;
}
@@ -664,8 +665,8 @@ int GetMapBorderIdAt(int x, int y)
mapLayout = gMapHeader.mapLayout;
j = (x + 1) & 1;
j += ((y + 1) & 1) * 2;
- block2 = 0xc00 | mapLayout->border[j];
- if (block2 == 0x3ff)
+ block2 = METATILE_COLLISION_MASK | mapLayout->border[j];
+ if (block2 == METATILE_ID_UNDEFINED)
{
goto fail;
}
@@ -921,9 +922,9 @@ void sub_8088B94(int x, int y, int a2)
if (x >= 0 && x < gBackupMapLayout.width && y >= 0 && y < gBackupMapLayout.height)
{
if (a2 != 0)
- gBackupMapLayout.map[x + gBackupMapLayout.width * y] |= 0xC00;
+ gBackupMapLayout.map[x + gBackupMapLayout.width * y] |= METATILE_COLLISION_MASK;
else
- gBackupMapLayout.map[x + gBackupMapLayout.width * y] &= 0xF3FF;
+ gBackupMapLayout.map[x + gBackupMapLayout.width * y] &= ~METATILE_COLLISION_MASK;
}
}
@@ -937,7 +938,7 @@ static bool8 SkipCopyingMetatileFromSavedMap(u16* mapMetatilePtr, u16 mapWidth,
else
mapMetatilePtr += mapWidth;
- if (sub_80FADE4(*mapMetatilePtr & 0x3FF, yMode) == 1)
+ if (sub_80FADE4(*mapMetatilePtr & METATILE_ID_MASK, yMode) == 1)
return TRUE;
return FALSE;
}
diff --git a/src/fldeff_escalator.c b/src/fldeff_escalator.c
index 3d00fb162..7ab2db4db 100644
--- a/src/fldeff_escalator.c
+++ b/src/fldeff_escalator.c
@@ -7,7 +7,7 @@
static EWRAM_DATA u8 sEscalatorAnim_TaskId = 0;
-static void sub_80E12E8(u8 taskId, const s16 *list, u16 c)
+static void sub_80E12E8(u8 taskId, const s16 *list, u16 isImpassableFlag)
{
s16 r5 = gTasks[taskId].data[4] - 1;
s16 r3 = gTasks[taskId].data[5] - 1;
@@ -26,9 +26,9 @@ static void sub_80E12E8(u8 taskId, const s16 *list, u16 c)
if (list[r4] == metatileId)
{
if (r4 != 2)
- MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[r4 + 1]);
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[r4 + 1]);
else
- MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[0]);
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[0]);
}
}
}
@@ -44,9 +44,9 @@ static void sub_80E12E8(u8 taskId, const s16 *list, u16 c)
if (list[2 - r4] == metatileId)
{
if (r4 != 2)
- MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[1 - r4]);
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[1 - r4]);
else
- MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[2]);
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[2]);
}
}
}
@@ -76,13 +76,13 @@ static void sub_80E1444(u8 taskId)
sub_80E12E8(taskId, gUnknown_08589AC0, 0);
break;
case 2:
- sub_80E12E8(taskId, gUnknown_08589AC6, 0xC00);
+ sub_80E12E8(taskId, gUnknown_08589AC6, METATILE_COLLISION_MASK);
break;
case 3:
sub_80E12E8(taskId, gUnknown_08589ACC, 0);
break;
case 4:
- sub_80E12E8(taskId, gUnknown_08589AD2, 0xC00);
+ sub_80E12E8(taskId, gUnknown_08589AD2, METATILE_COLLISION_MASK);
break;
case 5:
sub_80E12E8(taskId, gUnknown_08589AD8, 0);
diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c
index df4576a7f..d4d6075f3 100644
--- a/src/fldeff_misc.c
+++ b/src/fldeff_misc.c
@@ -1126,7 +1126,7 @@ void GetShieldToyTVDecorationInfo(void)
if (!VarGet(VAR_CURRENT_SECRET_BASE))
return;
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x10);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x10);
break;
case 734:
ConvertIntToDecimalStringN(gStringVar1, 50, STR_CONV_MODE_LEFT_ALIGN, 2);
@@ -1137,7 +1137,7 @@ void GetShieldToyTVDecorationInfo(void)
if (!VarGet(VAR_CURRENT_SECRET_BASE))
return;
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x20);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x20);
break;
case 756:
gSpecialVar_Result = 1;
@@ -1145,7 +1145,7 @@ void GetShieldToyTVDecorationInfo(void)
if (!VarGet(VAR_CURRENT_SECRET_BASE))
return;
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x80);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x80);
break;
case 757:
gSpecialVar_Result = 2;
@@ -1153,7 +1153,7 @@ void GetShieldToyTVDecorationInfo(void)
if (!VarGet(VAR_CURRENT_SECRET_BASE))
return;
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x80);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x80);
break;
case 758:
gSpecialVar_Result = 3;
@@ -1161,7 +1161,7 @@ void GetShieldToyTVDecorationInfo(void)
if (!VarGet(VAR_CURRENT_SECRET_BASE))
return;
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x80);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x80);
break;
}
}
diff --git a/src/item.c b/src/item.c
index 71c2dc0f7..0e13ddf4c 100644
--- a/src/item.c
+++ b/src/item.c
@@ -539,8 +539,8 @@ bool8 RemoveBagItem(u16 itemId, u16 count)
if (CurrentMapIsSecretBase() == TRUE)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x200);
- VarSet(VAR_0x40ED, itemId);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x200);
+ VarSet(VAR_SECRET_BASE_LAST_ITEM_USED, itemId);
}
var = GetItemListPosition(pocket);
diff --git a/src/item_menu.c b/src/item_menu.c
index ae2b7d47b..5b9946e62 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -8,6 +8,7 @@
#include "bg.h"
#include "constants/items.h"
#include "constants/songs.h"
+#include "data2.h"
#include "decompress.h"
#include "event_data.h"
#include "event_object_movement.h"
@@ -446,7 +447,6 @@ EWRAM_DATA u16 gSpecialVar_ItemId = 0;
static EWRAM_DATA struct TempWallyStruct *gUnknown_0203CE80 = 0;
extern u8 *const gPocketNamesStringsTable[];
-extern const u8 gMoveNames[][0xD];
extern u8* gReturnToXStringsTable[];
extern const u8 EventScript_2736B3[];
extern const u16 gUnknown_0860F074[];
diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c
index 3d4f8a90d..dc38d8848 100644
--- a/src/lilycove_lady.c
+++ b/src/lilycove_lady.c
@@ -695,7 +695,7 @@ u8 sub_818E2D8(void)
void sub_818E2FC(void)
{
- easy_chat_input_maybe();
+ ShowEasyChatScreen();
}
bool8 sub_818E308(void)
@@ -763,8 +763,8 @@ void sub_818E430(void)
void sub_818E47C(void)
{
- gSpecialVar_0x8004 = 0x11;
- easy_chat_input_maybe();
+ gSpecialVar_0x8004 = EASY_CHAT_TYPE_QUIZ_SET_QUESTION;
+ ShowEasyChatScreen();
}
void sub_818E490(void)
diff --git a/src/link.c b/src/link.c
index 9aedbc961..a49ffaca8 100644
--- a/src/link.c
+++ b/src/link.c
@@ -28,7 +28,7 @@
#include "link.h"
#include "link_rfu.h"
-extern u16 gUnknown_03005DA8;
+extern u16 gHeldKeyCodeToSend;
// Static type declarations
@@ -302,9 +302,9 @@ void LinkTestScreen(void)
SetMainCallback2(CB2_LinkTest);
}
-void sub_8009628(u8 a0)
+void SetLocalLinkPlayerId(u8 playerId)
{
- gLocalLinkPlayer.id = a0;
+ gLocalLinkPlayer.id = playerId;
}
static void InitLocalLinkPlayer(void)
@@ -695,12 +695,12 @@ static void BuildSendCmd(u16 command)
gSendCmd[0] = LINKCMD_0x5566;
break;
case LINKCMD_SEND_HELD_KEYS_2:
- if (gUnknown_03005DA8 == 0 || gLinkTransferringData)
+ if (gHeldKeyCodeToSend == 0 || gLinkTransferringData)
{
break;
}
gSendCmd[0] = LINKCMD_SEND_HELD_KEYS_2;
- gSendCmd[1] = gUnknown_03005DA8;
+ gSendCmd[1] = gHeldKeyCodeToSend;
break;
}
}
@@ -714,11 +714,11 @@ void sub_8009F18(void)
gLinkCallback = sub_8009F70;
}
-bool32 sub_8009F3C(void)
+bool32 IsSendingKeysToLink(void)
{
if (gWirelessCommType)
{
- return sub_800F7E4();
+ return IsSendingKeysToRfu();
}
if (gLinkCallback == sub_8009F70)
{
@@ -1142,7 +1142,7 @@ void ResetBlockReceivedFlag(u8 who)
}
}
-void sub_800A620(void)
+void CheckShouldAdvanceLinkState(void)
{
if ((gLinkStatus & LINK_STAT_MASTER) && EXTRACT_PLAYER_COUNT(gLinkStatus) > 1)
{
@@ -1327,7 +1327,9 @@ void sub_800AA04(u8 a0)
}
}
-u8 sub_800AA48(void)
+// The number of players when trading began. This is frequently compared against the
+// current number of connected players to check if anyone dropped out.
+u8 GetSavedPlayerCount(void)
{
return gSavedLinkPlayerCount;
}
@@ -1849,7 +1851,7 @@ bool8 HandleLinkConnection(void)
r5 = sub_8010F1C();
if (sub_808766C() == TRUE)
{
- if (r4 == TRUE || sub_800F0B8() || r5)
+ if (r4 == TRUE || IsRfuRecvQueueEmpty() || r5)
{
return TRUE;
}
@@ -1882,18 +1884,18 @@ void sub_800B4C0(void)
}
}
-u32 sub_800B4DC(void)
+u32 GetLinkRecvQueueLength(void)
{
if (gWirelessCommType != 0)
{
- return sub_80124D4();
+ return GetRfuRecvQueueLength();
}
return gLink.recvQueue.count;
}
bool8 sub_800B504(void)
{
- if (sub_800B4DC() > 2)
+ if (GetLinkRecvQueueLength() > 2)
{
return TRUE;
}
diff --git a/src/link_rfu.c b/src/link_rfu.c
index 4ad2a5169..8da6b166a 100644
--- a/src/link_rfu.c
+++ b/src/link_rfu.c
@@ -18,7 +18,7 @@
#include "constants/species.h"
#include "save.h"
-extern u16 gUnknown_03005DA8;
+extern u16 gHeldKeyCodeToSend;
extern void nullsub_89(u8 taskId);
struct UnkRfuStruct_1 gUnknown_03004140;
@@ -2991,7 +2991,7 @@ static void sub_800F048(void)
}
}
-bool32 sub_800F0B8(void)
+bool32 IsRfuRecvQueueEmpty(void)
{
s32 i;
s32 j;
@@ -3212,7 +3212,7 @@ bool32 sub_800F4F0(void)
for (i = 0; i < CMD_LENGTH - 1; i++)
gSendCmd[i] = 0;
}
- return sub_800F0B8();
+ return IsRfuRecvQueueEmpty();
}
void sub_800F638(u8 unused, u32 flags)
@@ -3272,10 +3272,12 @@ u8 sub_800F74C(const u8 *a0)
void rfu_func_080F97B8(void)
{
- if (gReceivedRemoteLinkPlayers && gUnknown_03005DA8 && gLinkTransferringData != 1)
+ if (gReceivedRemoteLinkPlayers
+ && gHeldKeyCodeToSend != LINK_KEY_CODE_NULL
+ && gLinkTransferringData != TRUE)
{
gUnknown_03000D78[0]++;
- gUnknown_03005DA8 |= (gUnknown_03000D78[0] << 8);
+ gHeldKeyCodeToSend |= (gUnknown_03000D78[0] << 8);
sub_800FD14(0xbe00);
}
}
@@ -3285,7 +3287,7 @@ struct UnkLinkRfuStruct_02022B14 *sub_800F7DC(void)
return &gUnknown_02022B14;
}
-bool32 sub_800F7E4(void)
+bool32 IsSendingKeysToRfu(void)
{
return gUnknown_03005000.unk_00 == rfu_func_080F97B8;
}
@@ -3509,7 +3511,7 @@ void sub_800FD14(u16 command)
gSendCmd[1 + i] = gUnknown_03005000.unk_f2[i];
break;
case 0xbe00:
- gSendCmd[1] = gUnknown_03005DA8;
+ gSendCmd[1] = gHeldKeyCodeToSend;
break;
case 0xee00:
break;
@@ -3799,10 +3801,10 @@ bool32 sub_8010454(u32 a0)
u8 sub_801048C(bool32 a0)
{
- if (a0 == 0)
+ if (a0 == FALSE)
return sub_800D550(0, 0);
sub_800D550(1, 0x258);
- return FALSE;
+ return 0;
}
void sub_80104B0(void)
@@ -5163,7 +5165,7 @@ u32 sub_80124C0(void)
return gUnknown_03005000.unk_9e8.unk_232;
}
-u32 sub_80124D4(void)
+u32 GetRfuRecvQueueLength(void)
{
return gUnknown_03005000.unk_124.unk_8c2;
}
diff --git a/src/load_save.c b/src/load_save.c
index 0d19c6dae..7d307ec1b 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -99,7 +99,7 @@ void MoveSaveBlocks_ResetHeap(void)
hblankCB = gMain.hblankCallback;
gMain.vblankCallback = NULL;
gMain.hblankCallback = NULL;
- gUnknown_0203CF5C = NULL;
+ gTrainerHillVBlankCounter = NULL;
saveBlock2Copy = (struct SaveBlock2 *)(gHeap);
saveBlock1Copy = (struct SaveBlock1 *)(gHeap + sizeof(struct SaveBlock2));
diff --git a/src/lottery_corner.c b/src/lottery_corner.c
index bd7d17ef7..bb3bb7a5c 100644
--- a/src/lottery_corner.c
+++ b/src/lottery_corner.c
@@ -27,7 +27,7 @@ void ResetLotteryCorner(void)
u16 rand = Random();
SetLotteryNumber((Random() << 16) | rand);
- VarSet(VAR_POKELOT_PRIZE, 0);
+ VarSet(VAR_POKELOT_PRIZE_ITEM, 0);
}
void SetRandomLotteryNumber(u16 i)
diff --git a/src/main.c b/src/main.c
index 61c5e3386..3049f4f90 100644
--- a/src/main.c
+++ b/src/main.c
@@ -163,7 +163,7 @@ static void UpdateLinkAndCallCallbacks(void)
static void InitMainCallbacks(void)
{
gMain.vblankCounter1 = 0;
- gUnknown_0203CF5C = NULL;
+ gTrainerHillVBlankCounter = NULL;
gMain.vblankCounter2 = 0;
gMain.callback1 = NULL;
SetMainCallback2(CB2_InitCopyrightScreenAfterBootup);
@@ -324,8 +324,8 @@ static void VBlankIntr(void)
gMain.vblankCounter1++;
- if (gUnknown_0203CF5C && *gUnknown_0203CF5C < 0xFFFFFFFF)
- (*gUnknown_0203CF5C)++;
+ if (gTrainerHillVBlankCounter && *gTrainerHillVBlankCounter < 0xFFFFFFFF)
+ (*gTrainerHillVBlankCounter)++;
if (gMain.vblankCallback)
gMain.vblankCallback();
@@ -393,14 +393,14 @@ static void WaitForVBlank(void)
;
}
-void sub_80008DC(u32 *var)
+void SetTrainerHillVBlankCounter(u32 *counter)
{
- gUnknown_0203CF5C = var;
+ gTrainerHillVBlankCounter = counter;
}
-void sub_80008E8(void)
+void ClearTrainerHillVBlankCounter(void)
{
- gUnknown_0203CF5C = NULL;
+ gTrainerHillVBlankCounter = NULL;
}
void DoSoftReset(void)
diff --git a/src/match_call.c b/src/match_call.c
index d4da8d791..cca55fcb6 100644
--- a/src/match_call.c
+++ b/src/match_call.c
@@ -1016,7 +1016,7 @@ static bool32 MapAllowsMatchCall(void)
if (gMapHeader.regionMapSectionId == MAPSEC_SOOTOPOLIS_CITY
&& FlagGet(FLAG_HIDE_SOOTOPOLIS_CITY_RAYQUAZA) == TRUE
- && FlagGet(FLAG_UNUSED_0x0DC) == FALSE)
+ && FlagGet(FLAG_NEVER_SET_0x0DC) == FALSE)
return FALSE;
if (gMapHeader.regionMapSectionId == MAPSEC_MT_CHIMNEY
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index 49da6bda3..25058abf9 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -293,7 +293,7 @@ bool8 sub_8122148(u16 itemId)
bool8 itemid_80BF6D8_mail_related(u16 itemId)
{
- if (is_c1_link_related_active() != TRUE && InUnionRoom() != TRUE)
+ if (IsUpdateLinkStateCBActive() != TRUE && InUnionRoom() != TRUE)
return TRUE;
else if (ItemIsMail(itemId) != TRUE)
return TRUE;
@@ -303,7 +303,7 @@ bool8 itemid_80BF6D8_mail_related(u16 itemId)
bool8 sub_81221AC(void)
{
- if (is_c1_link_related_active() == TRUE || gReceivedRemoteLinkPlayers == 1)
+ if (IsUpdateLinkStateCBActive() == TRUE || gReceivedRemoteLinkPlayers == 1)
return TRUE;
else
return FALSE;
diff --git a/src/mirage_tower.c b/src/mirage_tower.c
index a8dd5d9de..4f5834db1 100644
--- a/src/mirage_tower.c
+++ b/src/mirage_tower.c
@@ -317,7 +317,7 @@ void SetMirageTowerVisibility(void)
u16 rand;
bool8 visible;
- if (VarGet(VAR_0x40CB))
+ if (VarGet(VAR_ROUTE_111_STATE))
{
FlagClear(FLAG_MIRAGE_TOWER_VISIBLE);
return;
diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c
index 1c886565a..ad4a2e692 100644
--- a/src/mystery_event_menu.c
+++ b/src/mystery_event_menu.c
@@ -179,7 +179,7 @@ static void CB2_MysteryEventMenu(void)
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- sub_800A620();
+ CheckShouldAdvanceLinkState();
DrawStdFrameWithCustomTileAndPalette(1, 1, 1, 0xD);
PrintMysteryMenuText(1, gText_LoadingEvent, 1, 2, 0);
PutWindowTilemap(1);
diff --git a/src/overworld.c b/src/overworld.c
index a10d1e17a..0ff8d5b7f 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -66,32 +66,47 @@
#include "constants/species.h"
#include "constants/weather.h"
+#define PLAYER_TRADING_STATE_IDLE 0x80
+#define PLAYER_TRADING_STATE_BUSY 0x81
+#define PLAYER_TRADING_STATE_UNK_2 0x82
+#define PLAYER_TRADING_STATE_EXITING_ROOM 0x83
+
+#define FACING_NONE 0
+#define FACING_UP 1
+#define FACING_DOWN 2
+#define FACING_LEFT 3
+#define FACING_RIGHT 4
+#define FACING_FORCED_UP 7
+#define FACING_FORCED_DOWN 8
+#define FACING_FORCED_LEFT 9
+#define FACING_FORCED_RIGHT 10
+
// event scripts
extern const u8 EventScript_WhiteOut[];
-extern const u8 EventScript_271862[];
-extern const u8 EventScript_277513[];
-extern const u8 EventScript_TradeRoom_TooBusyToNotice[];
-extern const u8 EventScript_TradeRoom_ReadTrainerCard1[];
-extern const u8 EventScript_TradeRoom_ReadTrainerCard2[];
-extern const u8 gUnknown_08277388[];
-extern const u8 gUnknown_082773A3[];
-extern const u8 gUnknown_082773BE[];
-extern const u8 gUnknown_082773D9[];
-extern const u8 gUnknown_0827741D[];
-extern const u8 gUnknown_08277432[];
-extern const u8 gUnknown_08277447[];
-extern const u8 gUnknown_0827745C[];
-extern const u8 gUnknown_08277374[];
-extern const u8 gUnknown_0827737E[];
-extern const u8 gUnknown_082773FF[];
-extern const u8 gUnknown_082773F5[];
-extern const u8 gUnknown_082774EF[];
-extern const u8 gUnknown_08277509[];
+extern const u8 EventScript_ResetMrBriney[];
+extern const u8 EventScript_DoLinkRoomExit[];
+extern const u8 gEventScript_TradeRoom_TooBusyToNotice[];
+extern const u8 gEventScript_TradeRoom_ReadTrainerCard_NoColor[];
+extern const u8 gEventScript_TradeRoom_ReadTrainerCard_Normal[];
+extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot0[];
+extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot1[];
+extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot2[];
+extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot3[];
+extern const u8 EventScript_RecordCenter_Spot0[];
+extern const u8 EventScript_RecordCenter_Spot1[];
+extern const u8 EventScript_RecordCenter_Spot2[];
+extern const u8 EventScript_RecordCenter_Spot3[];
+extern const u8 EventScript_SingleBattleColosseum_PlayerSpot0[];
+extern const u8 EventScript_SingleBattleColosseum_PlayerSpot1[];
+extern const u8 EventScript_TradeCenter_Chair1[];
+extern const u8 EventScript_TradeCenter_Chair0[];
+extern const u8 EventScript_ConfirmLeaveTradeRoom[];
+extern const u8 EventScript_TerminateLink[];
extern const struct MapLayout *const gMapLayouts[];
extern const struct MapHeader *const *const gMapGroups[];
extern const int gMaxFlashLevel;
-extern const u16 gUnknown_82EC7C4[];
+extern const u16 gOverworldBackgroundLayerFlags[];
static void Overworld_ResetStateAfterWhiteOut(void);
static void c2_80567AC(void);
@@ -106,63 +121,63 @@ static bool32 load_map_stuff(u8 *state, u32);
static bool32 map_loading_iteration_2_link(u8 *state);
static void mli4_mapscripts_and_other(void);
static void InitOverworldGraphicsRegisters(void);
-static u8 sub_8087858(u8);
-static u16 sub_80871C0(u32 a1);
+static u8 GetSpriteForLinkedPlayer(u8);
+static u16 KeyInterCB_SendNothing(u32 a1);
static void sub_80867C8(void);
static void sub_80867D8(void);
static void sub_8086AE4(void);
static void sub_80869DC(void);
static void sub_8086B14(void);
-static void sub_8086AAC(void);
+static void SetCameraToTrackGuestPlayer(void);
static void sub_8086988(bool32 arg0);
static void sub_8086A80(void);
static void sub_8086A68(void);
static void sub_8086860(void);
-static void sub_8086AC8(void);
-static void sub_8086B9C(void);
-static void sub_8086C40(void);
-static void sub_8086C90(void);
-static void sub_8086FA0(u16);
-static void sub_8086F38(u16*, s32);
-static u8 npc_something3(u8 a1, u8 a2);
+static void SetCameraToTrackGuestPlayer_2(void);
+static void CreateLinkPlayerSprites(void);
+static void ClearAllPlayerKeys(void);
+static void ResetAllTradingStates(void);
+static void UpdateHeldKeyCode(u16);
+static void UpdateAllLinkPlayers(u16*, s32);
+static u8 FlipVerticalAndClearForced(u8 a1, u8 a2);
static u8 LinkPlayerDetectCollision(u8 selfEventObjId, u8 a2, s16 x, s16 y);
static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion);
-static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y);
-static u8 sub_80878A0(u8 linkPlayerId);
-static u8 sub_80878C0(u8 linkPlayerId);
+static void GetLinkPlayerCoords(u8 linkPlayerId, u16 *x, u16 *y);
+static u8 GetLinkPlayerFacingDirection(u8 linkPlayerId);
+static u8 GetLinkPlayerElevation(u8 linkPlayerId);
static s32 sub_80878E4(u8 linkPlayerId);
static u8 GetLinkPlayerIdAt(s16 x, s16 y);
-static void sub_808796C(u8 linkPlayerId, u8 a2);
+static void SetPlayerFacingDirection(u8 linkPlayerId, u8 a2);
static void ZeroEventObject(struct EventObject *eventObj);
static void SpawnLinkPlayerEventObject(u8 linkPlayerId, s16 x, s16 y, u8 a4);
static void InitLinkPlayerEventObjectPos(struct EventObject *eventObj, s16 x, s16 y);
static void sub_80877DC(u8 linkPlayerId, u8 a2);
static void sub_808780C(u8 linkPlayerId);
-static u8 sub_8087858(u8 linkPlayerId);
+static u8 GetSpriteForLinkedPlayer(u8 linkPlayerId);
static void sub_8087584(void);
-static u32 sub_8087690(void);
+static u32 GetLinkSendQueueLength(void);
static void ZeroLinkPlayerEventObject(struct LinkPlayerEventObject *linkPlayerEventObj);
-static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1);
-static u16 sub_8087480(const u8 *script);
+static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *a1);
+static u16 GetDirectionForEventScript(const u8 *script);
static void sub_8087510(void);
-static void sub_808751C(void);
+static void InitLinkRoomStartMenuScript(void);
static void sub_8087530(const u8 *script);
-static void sub_808754C(void);
-static void sub_8087568(const u8 *script);
-static void sub_80872D8(s32 linkPlayerId, s32 a2, struct UnkStruct_8054FF8 *a3);
-static bool32 sub_8087340(struct UnkStruct_8054FF8 *a1);
-static bool32 sub_8087358(struct UnkStruct_8054FF8 *a1);
-static u8 *sub_8087370(struct UnkStruct_8054FF8 *a1);
-static bool32 sub_8087388(struct UnkStruct_8054FF8 *a1);
-static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1);
-static u16 sub_808711C(u32);
-static u16 sub_8087140(u32);
-static void sub_808709C(u16 *a1);
-static u16 sub_80870B0(u32 a1);
-static u16 sub_80870F8(u32 a1);
-static u16 sub_8087068(u16 a1);
-static void c1_link_related(void);
-static void c1_link_related_func_set(u16 (*func)(u32));
+static void CreateConfirmLeaveTradeRoomPrompt(void);
+static void InitMenuBasedScript(const u8 *script);
+static void LoadTradeRoomPlayer(s32 linkPlayerId, s32 a2, struct TradeRoomPlayer *a3);
+static bool32 sub_8087340(struct TradeRoomPlayer *a1);
+static bool32 sub_8087340_2(struct TradeRoomPlayer *a1);
+static u8 *TryGetTileEventScript(struct TradeRoomPlayer *a1);
+static bool32 PlayerIsAtSouthExit(struct TradeRoomPlayer *a1);
+static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *a1);
+static u16 KeyInterCB_DeferToRecvQueue(u32);
+static u16 KeyInterCB_DeferToSendQueue(u32);
+static void ResetPlayerHeldKeys(u16 *a1);
+static u16 KeyInterCB_SelfIdle(u32 a1);
+static u16 KeyInterCB_DeferToEventScript(u32 a1);
+static u16 GetDirectionForDpadKey(u16 a1);
+static void CB1_UpdateLinkState(void);
+static void SetKeyInterceptCallback(u16 (*func)(u32));
static void SetFieldVBlankCallback(void);
static void FieldClearVBlankHBlankCallbacks(void);
static void sub_8085810(void);
@@ -171,21 +186,24 @@ static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStr
static u16 GetCenterScreenMetatileBehavior(void);
// IWRAM bss vars
-IWRAM_DATA static void *sUnknown_03000E0C;
-IWRAM_DATA static u8 sUnknown_03000E10[4];
-IWRAM_DATA static u16 (*sUnknown_03000E14)(u32);
-IWRAM_DATA static u8 sUnknown_03000E18;
-IWRAM_DATA static u8 sUnknown_03000E19;
+IWRAM_DATA static void *sUnusedOverworldCallback;
+IWRAM_DATA static u8 sPlayerTradingStates[4];
+// This callback is called with a player's key code. It then returns an
+// adjusted key code, effectively intercepting the input before anything
+// can process it.
+IWRAM_DATA static u16 (*sPlayerKeyInterceptCallback)(u32);
+IWRAM_DATA static bool8 sUnknown_03000E18;
+IWRAM_DATA static u8 sRfuKeepAliveTimer;
IWRAM_DATA static u32 sUnusedVar;
// IWRAM common
u16 *gBGTilemapBuffers1;
u16 *gBGTilemapBuffers2;
u16 *gBGTilemapBuffers3;
-u16 gUnknown_03005DA8;
+u16 gHeldKeyCodeToSend;
void (*gFieldCallback)(void);
bool8 (*gFieldCallback2)(void);
-u8 gUnknown_03005DB4;
+u8 gLocalLinkPlayerId; // This is our player id in a multiplayer mode.
u8 gFieldLinkPlayerCount;
// EWRAM vars
@@ -319,43 +337,47 @@ static const struct ScanlineEffectParams sFlashEffectParams =
0,
};
-static u8 sub_80879D8(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 sub_80879F8(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 sub_80879FC(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 MovementEventModeCB_Normal(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 MovementEventModeCB_Ignored(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 MovementEventModeCB_Normal_2(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 (*const gUnknown_08339DC8[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
+static u8 (*const gLinkPlayerMovementModes[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
{
- sub_80879D8,
- sub_80879F8,
- sub_80879FC,
+ MovementEventModeCB_Normal, // MOVEMENT_MODE_FREE
+ MovementEventModeCB_Ignored, // MOVEMENT_MODE_FROZEN
+ MovementEventModeCB_Normal_2, // MOVEMENT_MODE_SCRIPTED
};
-static u8 sub_8087A1C(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 sub_8087A20(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 sub_8087A88(struct LinkPlayerEventObject *, struct EventObject *, u8);
-
-static u8 (*const gUnknown_08339DD4[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
-{
- sub_8087A1C,
- sub_8087A20,
- sub_8087A20,
- sub_8087A20,
- sub_8087A20,
- sub_8087A1C,
- sub_8087A1C,
- sub_8087A88,
- sub_8087A88,
- sub_8087A88,
- sub_8087A88,
+static u8 FacingHandler_DoNothing(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 FacingHandler_DpadMovement(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 FacingHandler_ForcedFacingChange(struct LinkPlayerEventObject *, struct EventObject *, u8);
+
+// These handlers return TRUE if the movement was scripted and successful, and FALSE otherwise.
+static bool8 (*const gLinkPlayerFacingHandlers[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
+{
+ FacingHandler_DoNothing,
+ FacingHandler_DpadMovement,
+ FacingHandler_DpadMovement,
+ FacingHandler_DpadMovement,
+ FacingHandler_DpadMovement,
+ FacingHandler_DoNothing,
+ FacingHandler_DoNothing,
+ FacingHandler_ForcedFacingChange,
+ FacingHandler_ForcedFacingChange,
+ FacingHandler_ForcedFacingChange,
+ FacingHandler_ForcedFacingChange,
};
-static void sub_8087AA0(struct LinkPlayerEventObject *, struct EventObject *);
-static void sub_8087AA8(struct LinkPlayerEventObject *, struct EventObject *);
+static void MovementStatusHandler_EnterFreeMode(struct LinkPlayerEventObject *, struct EventObject *);
+static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerEventObject *, struct EventObject *);
-static void (*const gUnknown_08339E00[])(struct LinkPlayerEventObject *, struct EventObject *) =
+// These handlers are run after an attempted movement.
+static void (*const gMovementStatusHandler[])(struct LinkPlayerEventObject *, struct EventObject *) =
{
- sub_8087AA0,
- sub_8087AA8,
+ // FALSE:
+ MovementStatusHandler_EnterFreeMode,
+ // TRUE:
+ MovementStatusHandler_TryAdvanceScript,
};
// code
@@ -387,7 +409,7 @@ void Overworld_ResetStateAfterTeleport(void)
FlagClear(FLAG_SYS_SAFARI_MODE);
FlagClear(FLAG_SYS_USE_STRENGTH);
FlagClear(FLAG_SYS_USE_FLASH);
- ScriptContext2_RunNewScript(EventScript_271862);
+ ScriptContext2_RunNewScript(EventScript_ResetMrBriney);
}
void Overworld_ResetStateAfterDigEscRope(void)
@@ -408,10 +430,12 @@ static void Overworld_ResetStateAfterWhiteOut(void)
FlagClear(FLAG_SYS_SAFARI_MODE);
FlagClear(FLAG_SYS_USE_STRENGTH);
FlagClear(FLAG_SYS_USE_FLASH);
- if (VarGet(VAR_0x4039) == 1)
+ // If you were defeated by Kyogre/Groudon and the step counter has
+ // maxed out, end the unusual weather.
+ if (VarGet(VAR_SHOULD_END_UNUSUAL_WEATHER) == 1)
{
- VarSet(VAR_0x4039, 0);
- VarSet(VAR_0x4037, 0);
+ VarSet(VAR_SHOULD_END_UNUSUAL_WEATHER, 0);
+ VarSet(VAR_UNUSUAL_WEATHER_LOCATION, UNUSUAL_WEATHER_NONE);
}
}
@@ -676,7 +700,7 @@ void UpdateEscapeWarp(s16 x, s16 y)
{
u8 currMapType = GetCurrentMapType();
u8 destMapType = GetMapTypeByGroupAndId(sWarpDestination.mapGroup, sWarpDestination.mapNum);
- if (is_map_type_1_2_3_5_or_6(currMapType) && is_map_type_1_2_3_5_or_6(destMapType) != TRUE)
+ if (IsMapTypeOutdoors(currMapType) && IsMapTypeOutdoors(destMapType) != TRUE)
SetEscapeWarp(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x - 7, y - 6);
}
@@ -821,8 +845,8 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum)
static void mli0_load_map(u32 a1)
{
- bool8 v2;
- bool8 indoors;
+ bool8 isOutdoors;
+ bool8 isIndoors;
LoadCurrentMapData();
if (!(sUnknown_020322D8 & 1))
@@ -835,8 +859,8 @@ static void mli0_load_map(u32 a1)
LoadEventObjTemplatesFromHeader();
}
- v2 = is_map_type_1_2_3_5_or_6(gMapHeader.mapType);
- indoors = Overworld_MapTypeIsIndoors(gMapHeader.mapType);
+ isOutdoors = IsMapTypeOutdoors(gMapHeader.mapType);
+ isIndoors = IsMapTypeIndoors(gMapHeader.mapType);
sub_80EB218();
TrySetMapSaveWarpStatus();
@@ -848,7 +872,7 @@ static void mli0_load_map(u32 a1)
DoTimeBasedEvents();
SetSav1WeatherFromCurrMapHeader();
ChooseAmbientCrySpecies();
- if (v2)
+ if (isOutdoors)
FlagClear(FLAG_SYS_USE_FLASH);
SetDefaultFlashLevel();
Overworld_ClearSavedMusic();
@@ -862,7 +886,7 @@ static void mli0_load_map(u32 a1)
else
InitMap();
- if (a1 != 1 && indoors)
+ if (a1 != 1 && isIndoors)
{
UpdateTVScreensOnMap(gBackupMapLayout.width, gBackupMapLayout.height);
sub_80E9238(1);
@@ -923,7 +947,7 @@ static u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *pla
static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStruct, u8 transitionFlags, u16 metatileBehavior, u8 mapType)
{
- if (FlagGet(FLAG_SYS_CRUISE_MODE) && mapType == MAP_TYPE_6)
+ if (FlagGet(FLAG_SYS_CRUISE_MODE) && mapType == MAP_TYPE_OCEAN_ROUTE)
return DIR_EAST;
else if (MetatileBehavior_IsDeepSouthWarp(metatileBehavior) == TRUE)
return DIR_NORTH;
@@ -1016,7 +1040,7 @@ static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp)
case MAP_NUM(ROUTE128):
return TRUE;
default:
- if (VarGet(VAR_0x405E) < 4)
+ if (VarGet(VAR_RAYQUAZA_STATE) < 4)
return FALSE;
switch (warp->mapNum)
{
@@ -1032,7 +1056,7 @@ static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp)
static bool16 NoMusicInSotopolisWithLegendaries(struct WarpData *warp)
{
- if (VarGet(VAR_0x40CA) != 1)
+ if (VarGet(VAR_SKY_PILLAR_STATE) != 1)
return FALSE;
else if (warp->mapGroup != MAP_GROUP(SOOTOPOLIS_CITY))
return FALSE;
@@ -1057,9 +1081,9 @@ static bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp)
static bool16 IsInflitratedSpaceCenter(struct WarpData *warp)
{
- if (VarGet(VAR_0x405D) == 0)
+ if (VarGet(VAR_MOSSDEEP_STATE) == 0)
return FALSE;
- else if (VarGet(VAR_0x405D) > 2)
+ else if (VarGet(VAR_MOSSDEEP_STATE) > 2)
return FALSE;
else if (warp->mapGroup != MAP_GROUP(MOSSDEEP_CITY_SPACE_CENTER_1F))
return FALSE;
@@ -1197,7 +1221,7 @@ void Overworld_ChangeMusicTo(u16 newMusic)
u8 GetMapMusicFadeoutSpeed(void)
{
const struct MapHeader *mapHeader = GetDestinationWarpMapHeader();
- if (Overworld_MapTypeIsIndoors(mapHeader->mapType) == TRUE)
+ if (IsMapTypeIndoors(mapHeader->mapType) == TRUE)
return 2;
else
return 4;
@@ -1210,7 +1234,7 @@ void TryFadeOutOldMapMusic(void)
if (FlagGet(FLAG_SPECIAL_FLAG_0x4001) != TRUE && warpMusic != GetCurrentMapMusic())
{
if (currentMusic == MUS_NAMINORI
- && VarGet(VAR_0x40CA) == 2
+ && VarGet(VAR_SKY_PILLAR_STATE) == 2
&& gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY)
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(SOOTOPOLIS_CITY)
&& sWarpDestination.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY)
@@ -1328,13 +1352,13 @@ u8 GetLastUsedWarpMapType(void)
return GetMapTypeByWarpData(&gLastUsedWarp);
}
-bool8 is_map_type_1_2_3_5_or_6(u8 mapType)
+bool8 IsMapTypeOutdoors(u8 mapType)
{
if (mapType == MAP_TYPE_ROUTE
|| mapType == MAP_TYPE_TOWN
|| mapType == MAP_TYPE_UNDERWATER
|| mapType == MAP_TYPE_CITY
- || mapType == MAP_TYPE_6)
+ || mapType == MAP_TYPE_OCEAN_ROUTE)
return TRUE;
else
return FALSE;
@@ -1344,14 +1368,14 @@ bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType)
{
if (mapType == MAP_TYPE_ROUTE
|| mapType == MAP_TYPE_TOWN
- || mapType == MAP_TYPE_6
+ || mapType == MAP_TYPE_OCEAN_ROUTE
|| mapType == MAP_TYPE_CITY)
return TRUE;
else
return FALSE;
}
-bool8 Overworld_MapTypeIsIndoors(u8 mapType)
+bool8 IsMapTypeIndoors(u8 mapType)
{
if (mapType == MAP_TYPE_INDOOR
|| mapType == MAP_TYPE_SECRET_BASE)
@@ -1407,9 +1431,9 @@ static void ResetSafariZoneFlag_(void)
ResetSafariZoneFlag();
}
-bool32 is_c1_link_related_active(void)
+bool32 IsUpdateLinkStateCBActive(void)
{
- if (gMain.callback1 == c1_link_related)
+ if (gMain.callback1 == CB1_UpdateLinkState)
return TRUE;
else
return FALSE;
@@ -1476,9 +1500,10 @@ void SetMainCallback1(MainCallback cb)
gMain.callback1 = cb;
}
-void sub_8085E94(void *a0)
+// This function is never called.
+void SetUnusedCallback(void *func)
{
- sUnknown_03000E0C = a0;
+ sUnusedOverworldCallback = func;
}
static bool8 map_post_load_hook_exec(void)
@@ -1595,15 +1620,15 @@ static void c2_80567AC(void)
if (map_loading_iteration_3(&gMain.state))
{
SetFieldVBlankCallback();
- SetMainCallback1(c1_link_related);
- sub_8086C2C();
+ SetMainCallback1(CB1_UpdateLinkState);
+ ResetAllMultiplayerState();
SetMainCallback2(CB2_Overworld);
}
}
void CB2_ReturnToField(void)
{
- if (is_c1_link_related_active() == TRUE)
+ if (IsUpdateLinkStateCBActive() == TRUE)
{
SetMainCallback2(CB2_ReturnToFieldLink);
}
@@ -1629,12 +1654,12 @@ void CB2_ReturnToFieldLink(void)
SetMainCallback2(CB2_Overworld);
}
-void c2_8056854(void)
+void CB2_ReturnToFieldFromMultiplayer(void)
{
FieldClearVBlankHBlankCallbacks();
StopMapMusic();
- SetMainCallback1(c1_link_related);
- sub_8086C2C();
+ SetMainCallback1(CB1_UpdateLinkState);
+ ResetAllMultiplayerState();
if (gWirelessCommType != 0)
gFieldCallback = sub_80AF314;
@@ -1810,7 +1835,7 @@ static bool32 map_loading_iteration_3(u8 *state)
sub_8086AE4();
sub_80869DC();
sub_8086B14();
- sub_8086AAC();
+ SetCameraToTrackGuestPlayer();
(*state)++;
break;
case 4:
@@ -1980,9 +2005,9 @@ static bool32 map_loading_iteration_2_link(u8 *state)
(*state)++;
break;
case 2:
- sub_8086B9C();
+ CreateLinkPlayerSprites();
sub_8086A68();
- sub_8086AC8();
+ SetCameraToTrackGuestPlayer_2();
(*state)++;
break;
case 3:
@@ -2083,7 +2108,7 @@ static void InitOverworldGraphicsRegisters(void)
SetGpuReg(REG_OFFSET_WIN0V, 0xFF);
SetGpuReg(REG_OFFSET_WIN1H, 0xFFFF);
SetGpuReg(REG_OFFSET_WIN1V, 0xFFFF);
- SetGpuReg(REG_OFFSET_BLDCNT, gUnknown_82EC7C4[1] | gUnknown_82EC7C4[2] | gUnknown_82EC7C4[3]
+ SetGpuReg(REG_OFFSET_BLDCNT, gOverworldBackgroundLayerFlags[1] | gOverworldBackgroundLayerFlags[2] | gOverworldBackgroundLayerFlags[3]
| BLDCNT_TGT2_OBJ | BLDCNT_EFFECT_BLEND);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(13, 7));
InitOverworldBgs();
@@ -2169,21 +2194,25 @@ static void sub_8086A80(void)
InitCameraUpdateCallback(gPlayerAvatar.spriteId);
}
-static void sub_8086AAC(void)
+static void SetCameraToTrackGuestPlayer(void)
{
- InitCameraUpdateCallback(sub_8087858(gUnknown_03005DB4));
+ InitCameraUpdateCallback(GetSpriteForLinkedPlayer(gLocalLinkPlayerId));
}
-static void sub_8086AC8(void)
+// Duplicate function.
+static void SetCameraToTrackGuestPlayer_2(void)
{
- InitCameraUpdateCallback(sub_8087858(gUnknown_03005DB4));
+ InitCameraUpdateCallback(GetSpriteForLinkedPlayer(gLocalLinkPlayerId));
}
static void sub_8086AE4(void)
{
u16 x, y;
GetCameraFocusCoords(&x, &y);
- sub_8088B3C(x + gUnknown_03005DB4, y);
+
+ // This is a hack of some kind; it's undone in sub_8086B14, which is called
+ // soon after this function.
+ sub_8088B3C(x + gLocalLinkPlayerId, y);
}
static void sub_8086B14(void)
@@ -2192,7 +2221,7 @@ static void sub_8086B14(void)
u16 x, y;
GetCameraFocusCoords(&x, &y);
- x -= gUnknown_03005DB4;
+ x -= gLocalLinkPlayerId;
for (i = 0; i < gFieldLinkPlayerCount; i++)
{
@@ -2200,161 +2229,180 @@ static void sub_8086B14(void)
CreateLinkPlayerSprite(i, gLinkPlayers[i].version);
}
- sub_8086C40();
+ ClearAllPlayerKeys();
}
-static void sub_8086B9C(void)
+static void CreateLinkPlayerSprites(void)
{
u16 i;
for (i = 0; i < gFieldLinkPlayerCount; i++)
CreateLinkPlayerSprite(i, gLinkPlayers[i].version);
}
-static void c1_link_related(void)
+
+static void CB1_UpdateLinkState(void)
{
- if (gWirelessCommType == 0 || !sub_800F0B8() || !sub_8009F3C())
+ if (gWirelessCommType == 0 || !IsRfuRecvQueueEmpty() || !IsSendingKeysToLink())
{
- u8 var = gUnknown_03005DB4;
- sub_8086F38(gLinkPartnersHeldKeys, var);
- sub_8086FA0(sUnknown_03000E14(var));
- sub_8086C40();
+ u8 selfId = gLocalLinkPlayerId;
+ UpdateAllLinkPlayers(gLinkPartnersHeldKeys, selfId);
+
+ // Note: Because guestId is between 0 and 4, while the smallest key code is
+ // LINK_KEY_CODE_EMPTY, this is functionally equivalent to `sPlayerKeyInterceptCallback(0)`.
+ // It is expecting the callback to be KeyInterCB_SelfIdle, and that will
+ // completely ignore any input parameters.
+ //
+ // UpdateHeldKeyCode performs a sanity check on its input; if
+ // sPlayerKeyInterceptCallback echoes back the argument, which is selfId, then
+ // it'll use LINK_KEY_CODE_EMPTY instead.
+ //
+ // Note 2: There are some key intercept callbacks that treat the key as a player
+ // ID. It's so hacky.
+ UpdateHeldKeyCode(sPlayerKeyInterceptCallback(selfId));
+ ClearAllPlayerKeys();
}
}
-void sub_8086C2C(void)
+void ResetAllMultiplayerState(void)
{
- sub_8086C90();
- c1_link_related_func_set(sub_80870B0);
+ ResetAllTradingStates();
+ SetKeyInterceptCallback(KeyInterCB_SelfIdle);
}
-static void sub_8086C40(void)
+static void ClearAllPlayerKeys(void)
{
- sub_808709C(gLinkPartnersHeldKeys);
+ ResetPlayerHeldKeys(gLinkPartnersHeldKeys);
}
-static void c1_link_related_func_set(u16 (*func)(u32))
+static void SetKeyInterceptCallback(u16 (*func)(u32))
{
- sUnknown_03000E19 = 0;
- sUnknown_03000E14 = func;
+ sRfuKeepAliveTimer = 0;
+ sPlayerKeyInterceptCallback = func;
}
-static void sub_8086C64(void)
+// Once every ~60 frames, if the link state hasn't changed (timer reset by calls
+// to SetKeyInterceptCallback), it does a bunch of sanity checks on the connection.
+// I'm not sure if sRfuKeepAliveTimer is reset in the process, though; rfu stuff is
+// still undocumented.
+static void CheckRfuKeepAliveTimer(void)
{
- if (gWirelessCommType != 0 && ++sUnknown_03000E19 > 60)
+ if (gWirelessCommType != 0 && ++sRfuKeepAliveTimer > 60)
sub_8010198();
}
-static void sub_8086C90(void)
+static void ResetAllTradingStates(void)
{
s32 i;
for (i = 0; i < 4; i++)
- sUnknown_03000E10[i] = 0x80;
+ sPlayerTradingStates[i] = PLAYER_TRADING_STATE_IDLE;
}
-static bool32 sub_8086CA8(u16 a1)
+// Returns true if all connected players are in tradingState.
+static bool32 AreAllPlayersInTradingState(u16 tradingState)
{
s32 i;
s32 count = gFieldLinkPlayerCount;
for (i = 0; i < count; i++)
- if (sUnknown_03000E10[i] != a1)
+ if (sPlayerTradingStates[i] != tradingState)
return FALSE;
return TRUE;
}
-static bool32 sub_8086CE0(u16 a1)
+static bool32 IsAnyPlayerInTradingState(u16 tradingState)
{
s32 i;
s32 count = gFieldLinkPlayerCount;
for (i = 0; i < count; i++)
- if (sUnknown_03000E10[i] == a1)
+ if (sPlayerTradingStates[i] == tradingState)
return TRUE;
return FALSE;
}
-static void sub_8086D18(u32 a1, u16 a2, struct UnkStruct_8054FF8 *a3, u16 *a4)
+static void HandleLinkPlayerKeyInput(u32 playerId, u16 key, struct TradeRoomPlayer *trainer, u16 *forceFacing)
{
const u8 *script;
- if (sUnknown_03000E10[a1] == 0x80)
+ if (sPlayerTradingStates[playerId] == PLAYER_TRADING_STATE_IDLE)
{
- script = sub_8087370(a3);
+ script = TryGetTileEventScript(trainer);
if (script)
{
- *a4 = sub_8087480(script);
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ *forceFacing = GetDirectionForEventScript(script);
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_80870F8);
+ SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
sub_8087530(script);
}
return;
}
- if (sub_8086CE0(0x83) == 1)
+ if (IsAnyPlayerInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM) == TRUE)
{
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_80870F8);
+ SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
sub_8087584();
}
return;
}
- switch (a2)
+
+ switch (key)
{
- case 24:
- if (sub_8087358(a3))
+ case LINK_KEY_CODE_START_BUTTON:
+ if (sub_8087340_2(trainer))
{
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_80870F8);
- sub_808751C();
+ SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
+ InitLinkRoomStartMenuScript();
}
}
break;
- case 18:
- if (sub_8087388(a3) == TRUE)
+ case LINK_KEY_CODE_DPAD_DOWN:
+ if (PlayerIsAtSouthExit(trainer) == TRUE)
{
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_80870F8);
- sub_808754C();
+ SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
+ CreateConfirmLeaveTradeRoomPrompt();
}
}
break;
- case 25:
- script = sub_80873B4(a3);
+ case LINK_KEY_CODE_A_BUTTON:
+ script = TryInteractWithPlayer(trainer);
if (script)
{
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_80870F8);
- sub_8087568(script);
+ SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
+ InitMenuBasedScript(script);
}
}
break;
- case 27:
- if (sub_8087340(a3))
+ case LINK_KEY_CODE_HANDLE_RECV_QUEUE:
+ if (sub_8087340(trainer))
{
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_808711C);
+ SetKeyInterceptCallback(KeyInterCB_DeferToRecvQueue);
sub_8087510();
}
}
break;
- case 28:
- if (sub_8087340(a3))
+ case LINK_KEY_CODE_HANDLE_SEND_QUEUE:
+ if (sub_8087340(trainer))
{
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_8087140);
+ SetKeyInterceptCallback(KeyInterCB_DeferToSendQueue);
sub_8087510();
}
}
@@ -2362,388 +2410,403 @@ static void sub_8086D18(u32 a1, u16 a2, struct UnkStruct_8054FF8 *a3, u16 *a4)
}
}
- switch (a2)
+ switch (key)
{
- case 23:
- sUnknown_03000E10[a1] = 0x83;
+ case LINK_KEY_CODE_EXIT_ROOM:
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_EXITING_ROOM;
break;
- case 22:
- sUnknown_03000E10[a1] = 0x82;
+ case LINK_KEY_CODE_UNK_2:
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_UNK_2;
break;
- case 26:
- sUnknown_03000E10[a1] = 0x80;
- if (a3->b)
- c1_link_related_func_set(sub_80870B0);
+ case LINK_KEY_CODE_UNK_4:
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_IDLE;
+ if (trainer->isLocalPlayer)
+ SetKeyInterceptCallback(KeyInterCB_SelfIdle);
break;
- case 29:
- if (sUnknown_03000E10[a1] == 0x82)
- sUnknown_03000E10[a1] = 0x81;
+ case LINK_KEY_CODE_UNK_7:
+ if (sPlayerTradingStates[playerId] == PLAYER_TRADING_STATE_UNK_2)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
break;
}
}
-static void sub_8086F38(u16 *a1, s32 a2)
+static void UpdateAllLinkPlayers(u16 *keys, s32 selfId)
{
- struct UnkStruct_8054FF8 st;
+ struct TradeRoomPlayer trainer;
s32 i;
for (i = 0; i < 4; i++)
{
- u8 v5 = a1[i];
- u16 v8 = 0;
- sub_80872D8(i, a2, &st);
- sub_8086D18(i, v5, &st, &v8);
- if (sUnknown_03000E10[i] == 0x80)
- v8 = sub_8087068(v5);
- sub_808796C(i, v8);
+ u8 key = keys[i];
+ u16 setFacing = FACING_NONE;
+ LoadTradeRoomPlayer(i, selfId, &trainer);
+ HandleLinkPlayerKeyInput(i, key, &trainer, &setFacing);
+ if (sPlayerTradingStates[i] == PLAYER_TRADING_STATE_IDLE)
+ setFacing = GetDirectionForDpadKey(key);
+ SetPlayerFacingDirection(i, setFacing);
}
}
-static void sub_8086FA0(u16 a1)
+static void UpdateHeldKeyCode(u16 key)
{
- if (a1 >= 17 && a1 < 30)
- gUnknown_03005DA8 = a1;
+ if (key >= LINK_KEY_CODE_EMPTY && key < LINK_KEY_CODE_UNK_8)
+ gHeldKeyCodeToSend = key;
else
- gUnknown_03005DA8 = 17;
+ gHeldKeyCodeToSend = LINK_KEY_CODE_EMPTY;
if (gWirelessCommType != 0
- && sub_8087690() > 1
- && is_c1_link_related_active() == TRUE
- && sub_8009F3C() == TRUE)
+ && GetLinkSendQueueLength() > 1
+ && IsUpdateLinkStateCBActive() == TRUE
+ && IsSendingKeysToLink() == TRUE)
{
- switch (a1)
+ switch (key)
{
- case 17:
- case 18:
- case 19:
- case 20:
- case 21:
- case 24:
- case 25:
- gUnknown_03005DA8 = 0;
+ case LINK_KEY_CODE_EMPTY:
+ case LINK_KEY_CODE_DPAD_DOWN:
+ case LINK_KEY_CODE_DPAD_UP:
+ case LINK_KEY_CODE_DPAD_LEFT:
+ case LINK_KEY_CODE_DPAD_RIGHT:
+ case LINK_KEY_CODE_START_BUTTON:
+ case LINK_KEY_CODE_A_BUTTON:
+ gHeldKeyCodeToSend = LINK_KEY_CODE_NULL;
break;
}
}
}
-static u16 sub_808700C(u32 a1)
+static u16 KeyInterCB_ReadButtons(u32 key)
{
if (gMain.heldKeys & DPAD_UP)
- return 19;
+ return LINK_KEY_CODE_DPAD_UP;
else if (gMain.heldKeys & DPAD_DOWN)
- return 18;
+ return LINK_KEY_CODE_DPAD_DOWN;
else if (gMain.heldKeys & DPAD_LEFT)
- return 20;
+ return LINK_KEY_CODE_DPAD_LEFT;
else if (gMain.heldKeys & DPAD_RIGHT)
- return 21;
+ return LINK_KEY_CODE_DPAD_RIGHT;
else if (gMain.newKeys & START_BUTTON)
- return 24;
+ return LINK_KEY_CODE_START_BUTTON;
else if (gMain.newKeys & A_BUTTON)
- return 25;
+ return LINK_KEY_CODE_A_BUTTON;
else
- return 17;
+ return LINK_KEY_CODE_EMPTY;
}
-static u16 sub_8087068(u16 a1)
+static u16 GetDirectionForDpadKey(u16 a1)
{
switch (a1)
{
- case 21:
- return 4;
- case 20:
- return 3;
- case 19:
- return 1;
- case 18:
- return 2;
+ case LINK_KEY_CODE_DPAD_RIGHT:
+ return FACING_RIGHT;
+ case LINK_KEY_CODE_DPAD_LEFT:
+ return FACING_LEFT;
+ case LINK_KEY_CODE_DPAD_UP:
+ return FACING_UP;
+ case LINK_KEY_CODE_DPAD_DOWN:
+ return FACING_DOWN;
default:
- return 0;
+ return FACING_NONE;
}
}
-static void sub_808709C(u16 *a1)
+// Overwrites the keys with 0x11
+static void ResetPlayerHeldKeys(u16 *keys)
{
s32 i;
for (i = 0; i < 4; i++)
- a1[i] = 17;
+ keys[i] = LINK_KEY_CODE_EMPTY;
}
-static u16 sub_80870B0(u32 a1)
+
+static u16 KeyInterCB_SelfIdle(u32 key)
{
- if (ScriptContext2_IsEnabled() == 1)
- return 17;
- if (sub_800B4DC() > 4)
- return 27;
- if (sub_8087690() <= 4)
- return sub_808700C(a1);
- return 28;
+ if (ScriptContext2_IsEnabled() == TRUE)
+ return LINK_KEY_CODE_EMPTY;
+ if (GetLinkRecvQueueLength() > 4)
+ return LINK_KEY_CODE_HANDLE_RECV_QUEUE;
+ if (GetLinkSendQueueLength() <= 4)
+ return KeyInterCB_ReadButtons(key);
+ return LINK_KEY_CODE_HANDLE_SEND_QUEUE;
}
-static u16 sub_80870EC(u32 a1)
+static u16 sub_80870EC(u32 key)
{
- sub_8086C64();
- return 17;
+ CheckRfuKeepAliveTimer();
+ return LINK_KEY_CODE_EMPTY;
}
-static u16 sub_80870F8(u32 a1)
+// Ignore the player's inputs as long as there is an event script
+// in ScriptContext2.
+static u16 KeyInterCB_DeferToEventScript(u32 key)
{
u16 retVal;
if (ScriptContext2_IsEnabled() == TRUE)
{
- retVal = 17;
+ retVal = LINK_KEY_CODE_EMPTY;
}
else
{
- retVal = 26;
- c1_link_related_func_set(sub_80870EC);
+ retVal = LINK_KEY_CODE_UNK_4;
+ SetKeyInterceptCallback(sub_80870EC);
}
return retVal;
}
-static u16 sub_808711C(u32 a1)
+// Ignore the player's inputs as long as there are events being recived.
+static u16 KeyInterCB_DeferToRecvQueue(u32 key)
{
u16 retVal;
- if (sub_800B4DC() > 2)
+ if (GetLinkRecvQueueLength() > 2)
{
- retVal = 17;
+ retVal = LINK_KEY_CODE_EMPTY;
}
else
{
- retVal = 26;
+ retVal = LINK_KEY_CODE_UNK_4;
ScriptContext2_Disable();
- c1_link_related_func_set(sub_80870EC);
+ SetKeyInterceptCallback(sub_80870EC);
}
return retVal;
}
-static u16 sub_8087140(u32 a1)
+// Ignore the player's inputs as long as there are events being sent.
+static u16 KeyInterCB_DeferToSendQueue(u32 key)
{
u16 retVal;
- if (sub_8087690() > 2)
+ if (GetLinkSendQueueLength() > 2)
{
- retVal = 17;
+ retVal = LINK_KEY_CODE_EMPTY;
}
else
{
- retVal = 26;
+ retVal = LINK_KEY_CODE_UNK_4;
ScriptContext2_Disable();
- c1_link_related_func_set(sub_80870EC);
+ SetKeyInterceptCallback(sub_80870EC);
}
return retVal;
}
-static u16 sub_8087164(u32 a1)
+static u16 KeyInterCB_DoNothingAndKeepAlive(u32 key)
{
- sub_8086C64();
- return 17;
+ CheckRfuKeepAliveTimer();
+ return LINK_KEY_CODE_EMPTY;
}
-static u16 sub_8087170(u32 linkPlayerId)
+static u16 sub_8087170(u32 keyOrPlayerId)
{
- if (sUnknown_03000E10[linkPlayerId] == 0x82)
+ if (sPlayerTradingStates[keyOrPlayerId] == PLAYER_TRADING_STATE_UNK_2)
{
if (gMain.newKeys & B_BUTTON)
{
- c1_link_related_func_set(sub_8087164);
- return 29;
+ SetKeyInterceptCallback(KeyInterCB_DoNothingAndKeepAlive);
+ return LINK_KEY_CODE_UNK_7;
}
else
{
- return 17;
+ return LINK_KEY_CODE_EMPTY;
}
}
else
{
- sub_8086C64();
- return 17;
+ CheckRfuKeepAliveTimer();
+ return LINK_KEY_CODE_EMPTY;
}
}
static u16 sub_80871AC(u32 a1)
{
- c1_link_related_func_set(sub_8087170);
- return 22;
+ SetKeyInterceptCallback(sub_8087170);
+ return LINK_KEY_CODE_UNK_2;
}
-static u16 sub_80871C0(u32 a1)
+static u16 KeyInterCB_SendNothing(u32 key)
{
- return 17;
+ return LINK_KEY_CODE_EMPTY;
}
-static u16 sub_80871C4(u32 a1)
+static u16 KeyInterCB_WaitForPlayersToExit(u32 keyOrPlayerId)
{
- if (sUnknown_03000E10[a1] != 0x83)
- sub_8086C64();
- if (sub_8086CA8(0x83) == TRUE)
+ // keyOrPlayerId could be any keycode. This callback does no sanity checking
+ // on the size of the key. It's assuming that it is being called from
+ // CB1_UpdateLinkState.
+ if (sPlayerTradingStates[keyOrPlayerId] != PLAYER_TRADING_STATE_EXITING_ROOM)
+ CheckRfuKeepAliveTimer();
+ if (AreAllPlayersInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM) == TRUE)
{
- ScriptContext1_SetupScript(EventScript_277513);
- c1_link_related_func_set(sub_80871C0);
+ ScriptContext1_SetupScript(EventScript_DoLinkRoomExit);
+ SetKeyInterceptCallback(KeyInterCB_SendNothing);
}
- return 17;
+ return LINK_KEY_CODE_EMPTY;
}
-static u16 sub_80871FC(u32 a1)
+static u16 KeyInterCB_SendExitRoomKey(u32 key)
{
- c1_link_related_func_set(sub_80871C4);
- return 23;
+ SetKeyInterceptCallback(KeyInterCB_WaitForPlayersToExit);
+ return LINK_KEY_CODE_EXIT_ROOM;
}
-static u16 sub_8087210(u32 a1)
+// Duplicate function.
+static u16 KeyInterCB_SendNothing_2(u32 key)
{
- return 17;
+ return LINK_KEY_CODE_EMPTY;
}
u32 sub_8087214(void)
{
- if (sub_8086CE0(0x83) == TRUE)
+ if (IsAnyPlayerInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM) == TRUE)
return 2;
- if (sUnknown_03000E14 == sub_8087170 && sUnknown_03000E10[gUnknown_03005DB4] != 0x82)
+ if (sPlayerKeyInterceptCallback == sub_8087170 && sPlayerTradingStates[gLocalLinkPlayerId] != PLAYER_TRADING_STATE_UNK_2)
return 0;
- if (sUnknown_03000E14 == sub_8087164 && sUnknown_03000E10[gUnknown_03005DB4] == 0x81)
+ if (sPlayerKeyInterceptCallback == KeyInterCB_DoNothingAndKeepAlive && sPlayerTradingStates[gLocalLinkPlayerId] == PLAYER_TRADING_STATE_BUSY)
return 2;
- if (sub_8086CA8(0x82) != 0)
+ if (AreAllPlayersInTradingState(PLAYER_TRADING_STATE_UNK_2) != FALSE)
return 1;
return 0;
}
bool32 sub_808727C(void)
{
- return sub_8086CE0(0x83);
+ return IsAnyPlayerInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM);
}
u16 sub_8087288(void)
{
- c1_link_related_func_set(sub_80871AC);
+ SetKeyInterceptCallback(sub_80871AC);
return 0;
}
u16 sub_808729C(void)
{
- c1_link_related_func_set(sub_80870F8);
+ SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
return 0;
}
-u16 sub_80872B0(void)
+// The exit room key will be sent at the next opportunity.
+// The return value is meaningless.
+u16 QueueExitLinkRoomKey(void)
{
- c1_link_related_func_set(sub_80871FC);
+ SetKeyInterceptCallback(KeyInterCB_SendExitRoomKey);
return 0;
}
u16 sub_80872C4(void)
{
- c1_link_related_func_set(sub_8087210);
+ SetKeyInterceptCallback(KeyInterCB_SendNothing_2);
return 0;
}
-static void sub_80872D8(s32 linkPlayerId, s32 a2, struct UnkStruct_8054FF8 *a3)
+static void LoadTradeRoomPlayer(s32 linkPlayerId, s32 myPlayerId, struct TradeRoomPlayer *trainer)
{
s16 x, y;
- a3->a = linkPlayerId;
- a3->b = (linkPlayerId == a2) ? 1 : 0;
- a3->c = gLinkPlayerEventObjects[linkPlayerId].mode;
- a3->d = sub_80878A0(linkPlayerId);
- sub_8087878(linkPlayerId, &x, &y);
- a3->sub.x = x;
- a3->sub.y = y;
- a3->sub.height = sub_80878C0(linkPlayerId);
- a3->field_C = MapGridGetMetatileBehaviorAt(x, y);
+ trainer->playerId = linkPlayerId;
+ trainer->isLocalPlayer = (linkPlayerId == myPlayerId) ? 1 : 0;
+ trainer->c = gLinkPlayerEventObjects[linkPlayerId].movementMode;
+ trainer->facing = GetLinkPlayerFacingDirection(linkPlayerId);
+ GetLinkPlayerCoords(linkPlayerId, &x, &y);
+ trainer->pos.x = x;
+ trainer->pos.y = y;
+ trainer->pos.height = GetLinkPlayerElevation(linkPlayerId);
+ trainer->field_C = MapGridGetMetatileBehaviorAt(x, y);
}
-static bool32 sub_8087340(struct UnkStruct_8054FF8 *a1)
+static bool32 sub_8087340(struct TradeRoomPlayer *player)
{
- u8 v1 = a1->c;
- if (v1 == 2 || v1 == 0)
+ u8 v1 = player->c;
+ if (v1 == MOVEMENT_MODE_SCRIPTED || v1 == MOVEMENT_MODE_FREE)
return TRUE;
else
return FALSE;
}
-static bool32 sub_8087358(struct UnkStruct_8054FF8 *a1)
+// Duplicate function.
+static bool32 sub_8087340_2(struct TradeRoomPlayer *player)
{
- u8 v1 = a1->c;
- if (v1 == 2 || v1 == 0)
+ u8 v1 = player->c;
+ if (v1 == MOVEMENT_MODE_SCRIPTED || v1 == MOVEMENT_MODE_FREE)
return TRUE;
else
return FALSE;
}
-static u8 *sub_8087370(struct UnkStruct_8054FF8 *a1)
+static u8 *TryGetTileEventScript(struct TradeRoomPlayer *player)
{
- if (a1->c != 2)
- return 0;
- return GetCoordEventScriptAtMapPosition(&a1->sub);
+ if (player->c != MOVEMENT_MODE_SCRIPTED)
+ return FACING_NONE;
+ return GetCoordEventScriptAtMapPosition(&player->pos);
}
-static bool32 sub_8087388(struct UnkStruct_8054FF8 *a1)
+static bool32 PlayerIsAtSouthExit(struct TradeRoomPlayer *player)
{
- if (a1->c != 2 && a1->c != 0)
+ if (player->c != MOVEMENT_MODE_SCRIPTED && player->c != MOVEMENT_MODE_FREE)
return FALSE;
- else if (!MetatileBehavior_IsSouthArrowWarp(a1->field_C))
+ else if (!MetatileBehavior_IsSouthArrowWarp(player->field_C))
return FALSE;
- else if (a1->d != 1)
+ else if (player->facing != 1)
return FALSE;
else
return TRUE;
}
-static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1)
+static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *player)
{
- struct MapPosition unkStruct;
+ struct MapPosition otherPlayerPos;
u8 linkPlayerId;
- if (a1->c && a1->c != 2)
- return 0;
+ if (player->c != MOVEMENT_MODE_FREE && player->c != MOVEMENT_MODE_SCRIPTED)
+ return FACING_NONE;
- unkStruct = a1->sub;
- unkStruct.x += gDirectionToVectors[a1->d].x;
- unkStruct.y += gDirectionToVectors[a1->d].y;
- unkStruct.height = 0;
- linkPlayerId = GetLinkPlayerIdAt(unkStruct.x, unkStruct.y);
+ otherPlayerPos = player->pos;
+ otherPlayerPos.x += gDirectionToVectors[player->facing].x;
+ otherPlayerPos.y += gDirectionToVectors[player->facing].y;
+ otherPlayerPos.height = 0;
+ linkPlayerId = GetLinkPlayerIdAt(otherPlayerPos.x, otherPlayerPos.y);
if (linkPlayerId != 4)
{
- if (!a1->b)
- return EventScript_TradeRoom_TooBusyToNotice;
- else if (sUnknown_03000E10[linkPlayerId] != 0x80)
- return EventScript_TradeRoom_TooBusyToNotice;
- else if (!sub_80B39D4(linkPlayerId))
- return EventScript_TradeRoom_ReadTrainerCard1;
+ if (!player->isLocalPlayer)
+ return gEventScript_TradeRoom_TooBusyToNotice;
+ else if (sPlayerTradingStates[linkPlayerId] != PLAYER_TRADING_STATE_IDLE)
+ return gEventScript_TradeRoom_TooBusyToNotice;
+ else if (!GetLinkTrainerCardColor(linkPlayerId))
+ return gEventScript_TradeRoom_ReadTrainerCard_NoColor;
else
- return EventScript_TradeRoom_ReadTrainerCard2;
- }
-
- return GetInteractedLinkPlayerScript(&unkStruct, a1->field_C, a1->d);
-}
-
-static u16 sub_8087480(const u8 *script)
-{
- if (script == gUnknown_08277388)
- return 10;
- else if (script == gUnknown_082773A3)
- return 9;
- else if (script == gUnknown_082773BE)
- return 10;
- else if (script == gUnknown_082773D9)
- return 9;
- else if (script == gUnknown_0827741D)
- return 10;
- else if (script == gUnknown_08277432)
- return 9;
- else if (script == gUnknown_08277447)
- return 10;
- else if (script == gUnknown_0827745C)
- return 9;
- else if (script == gUnknown_08277374)
- return 10;
- else if (script == gUnknown_0827737E)
- return 9;
- else if (script == gUnknown_082773F5)
- return 10;
- else if (script == gUnknown_082773FF)
- return 9;
+ return gEventScript_TradeRoom_ReadTrainerCard_Normal;
+ }
+
+ return GetInteractedLinkPlayerScript(&otherPlayerPos, player->field_C, player->facing);
+}
+
+// This returns which direction to force the player to look when one of
+// these event scripts runs.
+static u16 GetDirectionForEventScript(const u8 *script)
+{
+ if (script == EventScript_DoubleBattleColosseum_PlayerSpot0)
+ return FACING_FORCED_RIGHT;
+ else if (script == EventScript_DoubleBattleColosseum_PlayerSpot1)
+ return FACING_FORCED_LEFT;
+ else if (script == EventScript_DoubleBattleColosseum_PlayerSpot2)
+ return FACING_FORCED_RIGHT;
+ else if (script == EventScript_DoubleBattleColosseum_PlayerSpot3)
+ return FACING_FORCED_LEFT;
+ else if (script == EventScript_RecordCenter_Spot0)
+ return FACING_FORCED_RIGHT;
+ else if (script == EventScript_RecordCenter_Spot1)
+ return FACING_FORCED_LEFT;
+ else if (script == EventScript_RecordCenter_Spot2)
+ return FACING_FORCED_RIGHT;
+ else if (script == EventScript_RecordCenter_Spot3)
+ return FACING_FORCED_LEFT;
+ else if (script == EventScript_SingleBattleColosseum_PlayerSpot0)
+ return FACING_FORCED_RIGHT;
+ else if (script == EventScript_SingleBattleColosseum_PlayerSpot1)
+ return FACING_FORCED_LEFT;
+ else if (script == EventScript_TradeCenter_Chair0)
+ return FACING_FORCED_RIGHT;
+ else if (script == EventScript_TradeCenter_Chair1)
+ return FACING_FORCED_LEFT;
else
- return 0;
+ return FACING_NONE;
}
static void sub_8087510(void)
@@ -2751,7 +2814,7 @@ static void sub_8087510(void)
ScriptContext2_Enable();
}
-static void sub_808751C(void)
+static void InitLinkRoomStartMenuScript(void)
{
PlaySE(SE_WIN_OPEN);
ShowStartMenu();
@@ -2765,14 +2828,14 @@ static void sub_8087530(const u8 *script)
ScriptContext2_Enable();
}
-static void sub_808754C(void)
+static void CreateConfirmLeaveTradeRoomPrompt(void)
{
PlaySE(SE_WIN_OPEN);
- ScriptContext1_SetupScript(gUnknown_082774EF);
+ ScriptContext1_SetupScript(EventScript_ConfirmLeaveTradeRoom);
ScriptContext2_Enable();
}
-static void sub_8087568(const u8 *script)
+static void InitMenuBasedScript(const u8 *script)
{
PlaySE(SE_SELECT);
ScriptContext1_SetupScript(script);
@@ -2781,18 +2844,18 @@ static void sub_8087568(const u8 *script)
static void sub_8087584(void)
{
- ScriptContext1_SetupScript(gUnknown_08277509);
+ ScriptContext1_SetupScript(EventScript_TerminateLink);
ScriptContext2_Enable();
}
bool32 sub_8087598(void)
{
- if (!is_c1_link_related_active())
- return 0;
- if (sub_800B4DC() >= 3)
- sUnknown_03000E18 = 1;
+ if (!IsUpdateLinkStateCBActive())
+ return FALSE;
+ if (GetLinkRecvQueueLength() >= 3)
+ sUnknown_03000E18 = TRUE;
else
- sUnknown_03000E18 = 0;
+ sUnknown_03000E18 = FALSE;
return sUnknown_03000E18;
}
@@ -2800,19 +2863,19 @@ bool32 sub_80875C8(void)
{
u8 temp;
- if (sub_800B4DC() < 2)
+ if (GetLinkRecvQueueLength() < 2)
return FALSE;
- else if (is_c1_link_related_active() != TRUE)
+ else if (IsUpdateLinkStateCBActive() != TRUE)
return FALSE;
- else if (sub_8009F3C() != TRUE)
+ else if (IsSendingKeysToLink() != TRUE)
return FALSE;
- else if (sUnknown_03000E14 == sub_808711C)
+ else if (sPlayerKeyInterceptCallback == KeyInterCB_DeferToRecvQueue)
return TRUE;
- else if (sUnknown_03000E14 != sub_80870F8)
+ else if (sPlayerKeyInterceptCallback != KeyInterCB_DeferToEventScript)
return FALSE;
temp = sUnknown_03000E18;
- sUnknown_03000E18 = 0;
+ sUnknown_03000E18 = FALSE;
if (temp == TRUE)
return TRUE;
@@ -2824,13 +2887,13 @@ bool32 sub_80875C8(void)
bool32 sub_8087634(void)
{
- if (sub_8087690() < 2)
+ if (GetLinkSendQueueLength() < 2)
return FALSE;
- else if (is_c1_link_related_active() != TRUE)
+ else if (IsUpdateLinkStateCBActive() != TRUE)
return FALSE;
- else if (sub_8009F3C() != TRUE)
+ else if (IsSendingKeysToLink() != TRUE)
return FALSE;
- else if (sUnknown_03000E14 == sub_8087140)
+ else if (sPlayerKeyInterceptCallback == KeyInterCB_DeferToSendQueue)
return TRUE;
else
return FALSE;
@@ -2840,13 +2903,13 @@ bool32 sub_808766C(void)
{
if (gWirelessCommType != 0)
return FALSE;
- else if (!sub_8009F3C())
+ else if (!IsSendingKeysToLink())
return FALSE;
else
return TRUE;
}
-static u32 sub_8087690(void)
+static u32 GetLinkSendQueueLength(void)
{
if (gWirelessCommType != 0)
return gUnknown_03005000.unk_9e8.unk_232;
@@ -2881,7 +2944,7 @@ static void SpawnLinkPlayerEventObject(u8 linkPlayerId, s16 x, s16 y, u8 a4)
linkPlayerEventObj->active = 1;
linkPlayerEventObj->linkPlayerId = linkPlayerId;
linkPlayerEventObj->eventObjId = eventObjId;
- linkPlayerEventObj->mode = 0;
+ linkPlayerEventObj->movementMode = MOVEMENT_MODE_FREE;
eventObj->active = 1;
eventObj->singleMovementActive = a4;
@@ -2923,14 +2986,15 @@ static void sub_808780C(u8 linkPlayerId)
eventObj->active = 0;
}
-static u8 sub_8087858(u8 linkPlayerId)
+// Returns the spriteId corresponding to this player.
+static u8 GetSpriteForLinkedPlayer(u8 linkPlayerId)
{
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
return eventObj->spriteId;
}
-static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y)
+static void GetLinkPlayerCoords(u8 linkPlayerId, u16 *x, u16 *y)
{
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
@@ -2938,14 +3002,14 @@ static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y)
*y = eventObj->currentCoords.y;
}
-static u8 sub_80878A0(u8 linkPlayerId)
+static u8 GetLinkPlayerFacingDirection(u8 linkPlayerId)
{
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
return eventObj->range.as_byte;
}
-static u8 sub_80878C0(u8 linkPlayerId)
+static u8 GetLinkPlayerElevation(u8 linkPlayerId)
{
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
@@ -2965,7 +3029,7 @@ static u8 GetLinkPlayerIdAt(s16 x, s16 y)
for (i = 0; i < 4; i++)
{
if (gLinkPlayerEventObjects[i].active
- && (gLinkPlayerEventObjects[i].mode == 0 || gLinkPlayerEventObjects[i].mode == 2))
+ && (gLinkPlayerEventObjects[i].movementMode == 0 || gLinkPlayerEventObjects[i].movementMode == 2))
{
struct EventObject *eventObj = &gEventObjects[gLinkPlayerEventObjects[i].eventObjId];
if (eventObj->currentCoords.x == x && eventObj->currentCoords.y == y)
@@ -2975,7 +3039,7 @@ static u8 GetLinkPlayerIdAt(s16 x, s16 y)
return 4;
}
-static void sub_808796C(u8 linkPlayerId, u8 a2)
+static void SetPlayerFacingDirection(u8 linkPlayerId, u8 facing)
{
struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
u8 eventObjId = linkPlayerEventObj->eventObjId;
@@ -2983,94 +3047,111 @@ static void sub_808796C(u8 linkPlayerId, u8 a2)
if (linkPlayerEventObj->active)
{
- if (a2 > 10)
+ if (facing > FACING_FORCED_RIGHT)
+ {
eventObj->triggerGroundEffectsOnMove = 1;
+ }
else
- gUnknown_08339E00[gUnknown_08339DC8[linkPlayerEventObj->mode](linkPlayerEventObj, eventObj, a2)](linkPlayerEventObj, eventObj);
+ {
+ // This is a hack to split this code onto two separate lines, without declaring a local variable.
+ // C++ style inline variables would be nice here.
+ #define TEMP gLinkPlayerMovementModes[linkPlayerEventObj->movementMode](linkPlayerEventObj, eventObj, facing)
+
+ gMovementStatusHandler[TEMP](linkPlayerEventObj, eventObj);
+
+ // Clean up the hack.
+ #undef TEMP
+ }
}
}
-static u8 sub_80879D8(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
+
+static u8 MovementEventModeCB_Normal(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- return gUnknown_08339DD4[a3](linkPlayerEventObj, eventObj, a3);
+ return gLinkPlayerFacingHandlers[a3](linkPlayerEventObj, eventObj, a3);
}
-static u8 sub_80879F8(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
+static u8 MovementEventModeCB_Ignored(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- return 1;
+ return FACING_UP;
}
-static u8 sub_80879FC(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
+// Duplicate Function
+static u8 MovementEventModeCB_Normal_2(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- return gUnknown_08339DD4[a3](linkPlayerEventObj, eventObj, a3);
+ return gLinkPlayerFacingHandlers[a3](linkPlayerEventObj, eventObj, a3);
}
-static u8 sub_8087A1C(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
+static bool8 FacingHandler_DoNothing(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- return 0;
+ return FALSE;
}
-static u8 sub_8087A20(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
+static bool8 FacingHandler_DpadMovement(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
s16 x, y;
- eventObj->range.as_byte = npc_something3(a3, eventObj->range.as_byte);
+ eventObj->range.as_byte = FlipVerticalAndClearForced(a3, eventObj->range.as_byte);
EventObjectMoveDestCoords(eventObj, eventObj->range.as_byte, &x, &y);
if (LinkPlayerDetectCollision(linkPlayerEventObj->eventObjId, eventObj->range.as_byte, x, y))
{
- return 0;
+ return FALSE;
}
else
{
eventObj->directionSequenceIndex = 16;
ShiftEventObjectCoords(eventObj, x, y);
EventObjectUpdateZCoord(eventObj);
- return 1;
+ return TRUE;
}
}
-static u8 sub_8087A88(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
+static bool8 FacingHandler_ForcedFacingChange(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- eventObj->range.as_byte = npc_something3(a3, eventObj->range.as_byte);
- return 0;
+ eventObj->range.as_byte = FlipVerticalAndClearForced(a3, eventObj->range.as_byte);
+ return FALSE;
}
-static void sub_8087AA0(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
+// This is called every time a free movement happens. Most of the time it's a No-Op.
+static void MovementStatusHandler_EnterFreeMode(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
{
- linkPlayerEventObj->mode = 0;
+ linkPlayerEventObj->movementMode = MOVEMENT_MODE_FREE;
}
-static void sub_8087AA8(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
+static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
{
eventObj->directionSequenceIndex--;
- linkPlayerEventObj->mode = 1;
+ linkPlayerEventObj->movementMode = MOVEMENT_MODE_FROZEN;
MoveCoords(eventObj->range.as_byte, &eventObj->initialCoords.x, &eventObj->initialCoords.y);
if (!eventObj->directionSequenceIndex)
{
ShiftStillEventObjectCoords(eventObj);
- linkPlayerEventObj->mode = 2;
+ linkPlayerEventObj->movementMode = MOVEMENT_MODE_SCRIPTED;
}
}
-static u8 npc_something3(u8 a1, u8 a2)
+// Flip Up/Down facing codes. If newFacing doesn't specify a direction, default
+// to oldFacing. Note that this clears also the "FORCED" part of the facing code,
+// even for Left/Right codes.
+static u8 FlipVerticalAndClearForced(u8 newFacing, u8 oldFacing)
{
- switch (a1 - 1)
+ switch (newFacing)
{
- case 0:
- case 6:
- return 2;
- case 1:
- case 7:
- return 1;
- case 2:
- case 8:
- return 3;
- case 3:
- case 9:
- return 4;
+ case FACING_UP:
+ case FACING_FORCED_UP:
+ return DIR_NORTH;
+ case FACING_DOWN:
+ case FACING_FORCED_DOWN:
+ return DIR_SOUTH;
+ case FACING_LEFT:
+ case FACING_FORCED_LEFT:
+ return DIR_WEST;
+ case FACING_RIGHT:
+ case FACING_FORCED_RIGHT:
+ return DIR_EAST;
}
- return a2;
+ return oldFacing;
}
static u8 LinkPlayerDetectCollision(u8 selfEventObjId, u8 a2, s16 x, s16 y)
@@ -3130,7 +3211,7 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite)
SetObjectSubpriorityByZCoord(eventObj->previousElevation, sprite, 1);
sprite->oam.priority = ZCoordToPriority(eventObj->previousElevation);
- if (!linkPlayerEventObj->mode)
+ if (!linkPlayerEventObj->movementMode != MOVEMENT_MODE_FREE)
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(eventObj->range.as_byte));
else
StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(eventObj->range.as_byte));
diff --git a/src/party_menu.c b/src/party_menu.c
index 23e4361bc..525063326 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -63,6 +63,7 @@
#include "window.h"
#include "constants/battle.h"
#include "constants/battle_frontier.h"
+#include "constants/easy_chat.h"
#include "constants/field_effects.h"
#include "constants/flags.h"
#include "constants/items.h"
@@ -4212,7 +4213,11 @@ static void sub_81B452C(void)
{
u8 mail = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAIL);
- sub_811A20C(4, gSaveBlock1Ptr->mail[mail].words, sub_81B4578, 3);
+ DoEasyChatScreen(
+ EASY_CHAT_TYPE_MAIL,
+ gSaveBlock1Ptr->mail[mail].words,
+ sub_81B4578,
+ EASY_CHAT_PERSON_DISPLAY_NONE);
}
static void sub_81B4578(void)
@@ -6386,7 +6391,11 @@ static void sub_81B814C(void)
sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], gUnknown_0203CEC8.unkC);
mail = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAIL);
- sub_811A20C(4, gSaveBlock1Ptr->mail[mail].words, sub_81B81A8, 3);
+ DoEasyChatScreen(
+ EASY_CHAT_TYPE_MAIL,
+ gSaveBlock1Ptr->mail[mail].words,
+ sub_81B81A8,
+ EASY_CHAT_PERSON_DISPLAY_NONE);
}
static void sub_81B81A8(void)
@@ -6514,7 +6523,7 @@ static void sub_81B8474(u8 taskId)
gTasks[taskId].func = sub_81B8104;
}
-void sub_81B8518(u8 unused)
+void InitChooseHalfPartyForBattle(u8 unused)
{
sub_81B8558();
InitPartyMenu(4, 0, 0, 0, 0, sub_81B1370, gMain.savedCallback);
diff --git a/src/pokenav.c b/src/pokenav.c
index 217d98132..8eb82ffa5 100644
--- a/src/pokenav.c
+++ b/src/pokenav.c
@@ -388,7 +388,7 @@ u32 sub_81C7078(u32 (*func)(s32), u32 priority)
{
u16 taskId;
- if (!is_c1_link_related_active())
+ if (!IsUpdateLinkStateCBActive())
taskId = CreateTask(sub_81C7170, priority);
else
taskId = CreateTask(sub_81C71E4, priority);
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 2ac5f9e4c..ad34bc432 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -106,7 +106,7 @@ static EWRAM_DATA union PlayerRecords *sSentRecord = NULL;
// Static ROM declarations
static void Task_RecordMixing_Main(u8 taskId);
-static void sub_80E7324(u8 taskId);
+static void Task_MixingRecordsRecv(u8 taskId);
static void Task_SendPacket(u8 taskId);
static void Task_CopyReceiveBuffer(u8 taskId);
static void Task_SendPacket_SwitchToReceive(u8 taskId);
@@ -120,7 +120,7 @@ static void ReceiveLilycoveLadyData(LilycoveLady *, size_t, u8);
static void sub_80E7B2C(const u8 *);
static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *, size_t, u8, TVShow *);
static void ReceiveGiftItem(u16 *item, u8 which);
-static void sub_80E7FF8(u8 taskId);
+static void Task_DoRecordMixing(u8 taskId);
static void sub_80E8110(struct Apprentice *arg0, struct Apprentice *arg1);
static void ReceiveApprenticeData(struct Apprentice *arg0, size_t arg1, u32 arg2);
static void ReceiveRankingHallRecords(struct PlayerHallRecords *hallRecords, size_t arg1, u32 arg2);
@@ -170,7 +170,8 @@ static const u8 gUnknown_0858CFBE[3][4] =
#define BUFFER_CHUNK_SIZE 200
-void sub_80E6BE8(void)
+// Note: VAR_0x8005 contains the spotId.
+void RecordMixingPlayerSpotTriggered(void)
{
sub_80B37D4(Task_RecordMixing_Main);
}
@@ -313,6 +314,7 @@ static void Task_RecordMixing_SoundEffect(u8 taskId)
#define tState data[0]
#define tSndEffTaskId data[15]
+// Note: Currently, special var 8005 contains the player's spot id.
static void Task_RecordMixing_Main(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -322,16 +324,16 @@ static void Task_RecordMixing_Main(u8 taskId)
case 0: // init
sSentRecord = malloc(sizeof(union PlayerRecords));
sReceivedRecords = malloc(sizeof(union PlayerRecords) * 4);
- sub_8009628(gSpecialVar_0x8005);
+ SetLocalLinkPlayerId(gSpecialVar_0x8005);
VarSet(VAR_TEMP_0, 1);
gUnknown_03001130 = FALSE;
PrepareExchangePacket();
CreateRecordMixingSprite();
tState = 1;
- data[10] = CreateTask(sub_80E7324, 80);
+ data[10] = CreateTask(Task_MixingRecordsRecv, 80);
tSndEffTaskId = CreateTask(Task_RecordMixing_SoundEffect, 81);
break;
- case 1: // wait for sub_80E7324
+ case 1: // wait for Task_MixingRecordsRecv
if (!gTasks[data[10]].isActive)
{
tState = 2;
@@ -341,11 +343,11 @@ static void Task_RecordMixing_Main(u8 taskId)
}
break;
case 2:
- data[10] = CreateTask(sub_80E7FF8, 10);
+ data[10] = CreateTask(Task_DoRecordMixing, 10);
tState = 3;
PlaySE(SE_W226);
break;
- case 3: // wait for sub_80E7FF8
+ case 3: // wait for Task_DoRecordMixing
if (!gTasks[data[10]].isActive)
{
tState = 4;
@@ -381,7 +383,7 @@ static void Task_RecordMixing_Main(u8 taskId)
#undef tState
#undef tSndEffTaskId
-static void sub_80E7324(u8 taskId)
+static void Task_MixingRecordsRecv(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -405,7 +407,7 @@ static void sub_80E7324(u8 taskId)
u8 players = GetLinkPlayerCount_2();
if (IsLinkMaster() == TRUE)
{
- if (players == sub_800AA48())
+ if (players == GetSavedPlayerCount())
{
PlaySE(SE_PIN);
task->data[0] = 201;
@@ -420,14 +422,15 @@ static void sub_80E7324(u8 taskId)
}
break;
case 201:
- if (sub_800AA48() == GetLinkPlayerCount_2() && ++task->data[12] > (GetLinkPlayerCount_2() * 30))
+ // We're the link master. Delay for 30 frames per connected player.
+ if (GetSavedPlayerCount() == GetLinkPlayerCount_2() && ++task->data[12] > (GetLinkPlayerCount_2() * 30))
{
- sub_800A620();
+ CheckShouldAdvanceLinkState();
task->data[0] = 1;
}
break;
case 301:
- if (sub_800AA48() == GetLinkPlayerCount_2())
+ if (GetSavedPlayerCount() == GetLinkPlayerCount_2())
task->data[0] = 1;
break;
case 400: // wait 20 frames
@@ -470,6 +473,7 @@ static void sub_80E7324(u8 taskId)
StorePtrInTaskData(sReceivedRecords, (u16 *)&gTasks[subTaskId].data[5]);
sRecordStructSize = sizeof(struct PlayerRecordsEmerald);
}
+ // Note: This task is destroyed by Task_CopyReceiveBuffer when it's done.
}
break;
case 5: // wait 60 frames
@@ -938,7 +942,7 @@ static void ReceiveGiftItem(u16 *item, u8 which)
}
}
-static void sub_80E7FF8(u8 taskId)
+static void Task_DoRecordMixing(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -953,20 +957,22 @@ static void sub_80E7FF8(u8 taskId)
else
task->data[0] = 6;
break;
+
+ // Mixing Ruby/Sapphire records.
case 2:
SetContinueGameWarpStatusToDynamicWarp();
- sub_8153430();
+ FullSaveGame();
task->data[0] ++;
break;
case 3:
- if (sub_8153474())
+ if (CheckSaveFile())
{
ClearContinueGameWarpStatus2();
task->data[0] = 4;
task->data[1] = 0;
}
break;
- case 4:
+ case 4: // Wait 10 frames
if (++task->data[1] > 10)
{
sub_800AC34();
@@ -974,22 +980,24 @@ static void sub_80E7FF8(u8 taskId)
}
break;
case 5:
- if (gReceivedRemoteLinkPlayers == 0)
+ if (gReceivedRemoteLinkPlayers == FALSE)
DestroyTask(taskId);
break;
+
+ // Mixing Emerald records.
case 6:
- if (!sub_801048C(0))
+ if (!sub_801048C(FALSE))
{
CreateTask(sub_8153688, 5);
task->data[0] ++;
}
break;
- case 7:
+ case 7: // wait for sub_8153688 to finish.
if (!FuncIsActiveTask(sub_8153688))
{
if (gWirelessCommType)
{
- sub_801048C(1);
+ sub_801048C(TRUE);
task->data[0] = 8;
}
else
diff --git a/src/region_map.c b/src/region_map.c
index 67cf9cc0f..8dadc78a7 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -883,7 +883,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
case MAP_TYPE_CITY:
case MAP_TYPE_ROUTE:
case MAP_TYPE_UNDERWATER:
- case MAP_TYPE_6:
+ case MAP_TYPE_OCEAN_ROUTE:
gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
gRegionMap->playerIsInCave = FALSE;
mapWidth = gMapHeader.mapLayout->width;
@@ -896,7 +896,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
}
break;
case MAP_TYPE_UNDERGROUND:
- case MAP_TYPE_7:
+ case MAP_TYPE_UNUSED_2:
if (gMapHeader.flags & 0x02)
{
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum);
@@ -1159,7 +1159,7 @@ static u16 RegionMap_GetTerraCaveMapSecId(void)
{
s16 idx;
- idx = VarGet(VAR_0x4037) - 1;
+ idx = VarGet(VAR_UNUSUAL_WEATHER_LOCATION) - 1;
if (idx < 0 || idx > 15)
{
idx = 0;
@@ -1171,7 +1171,7 @@ static void RegionMap_GetMarineCaveCoords(u16 *x, u16 *y)
{
u16 idx;
- idx = VarGet(VAR_0x4037);
+ idx = VarGet(VAR_UNUSUAL_WEATHER_LOCATION);
if (idx < 9 || idx > 16)
{
idx = 9;
diff --git a/src/rom_8011DC0.c b/src/rom_8011DC0.c
index b06e5cd61..64850d2e3 100644
--- a/src/rom_8011DC0.c
+++ b/src/rom_8011DC0.c
@@ -188,7 +188,7 @@ extern u8 gUnknown_02022C3E;
extern u16 gUnknown_02022C3C;
extern u8 gUnknown_02022C20[];
extern u8 gFieldLinkPlayerCount;
-extern u8 gUnknown_03005DB4;
+extern u8 gLocalLinkPlayerId;
// IWRAM vars
IWRAM_DATA struct UnkStruct_Leader *gUnknown_03000DA0;
@@ -1641,7 +1641,7 @@ void sub_8014304(s8 mapGroup, s8 mapNum, s32 x, s32 y, u16 arg4)
gSpecialVar_0x8004 = arg4;
VarSet(VAR_CABLE_CLUB_STATE, arg4);
gFieldLinkPlayerCount = GetLinkPlayerCount();
- gUnknown_03005DB4 = GetMultiplayerId();
+ gLocalLinkPlayerId = GetMultiplayerId();
SetCableClubWarp();
SetWarpDestination(mapGroup, mapNum, -1, x, y);
WarpIntoMap();
@@ -1697,7 +1697,7 @@ void sub_801440C(u8 taskId)
case 81:
CleanupOverworldWindowsAndTilemaps();
gMain.savedCallback = sub_801AC54;
- sub_81B8518(3);
+ InitChooseHalfPartyForBattle(3);
break;
case 1:
CleanupOverworldWindowsAndTilemaps();
diff --git a/src/roulette.c b/src/roulette.c
index e099e878c..05d5006f0 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -996,7 +996,7 @@ static void sub_81405CC(void)
taskId = gUnknown_0203AB88->varA4 = CreateTask(sub_81408A8, 0);
gTasks[taskId].data[6] = 6;
gTasks[taskId].data[13] = GetCoins();
- sub_80EDE84(GetCoins());
+ AlertTVThatPlayerPlayedRoulette(GetCoins());
gUnknown_0203AB88->varA5 = CreateTask(sub_8140814, 1);
SetMainCallback2(sub_8140238);
return;
@@ -1964,7 +1964,7 @@ static void sub_8141DE4(u8 taskId)
gSpecialVar_0x8004 = TRUE;
else
gSpecialVar_0x8004 = FALSE;
- sub_80EDD78(GetCoins());
+ AlertTVOfNewCoinTotal(GetCoins());
BeginHardwarePaletteFade(0xFF, 0, 0, 16, 0);
gTasks[taskId].func = sub_8141E7C;
}
diff --git a/src/save.c b/src/save.c
index a22e20f0b..4444e122c 100644
--- a/src/save.c
+++ b/src/save.c
@@ -659,10 +659,10 @@ static void UpdateSaveAddresses(void)
u8 HandleSavingData(u8 saveType)
{
u8 i;
- u32 *backupVar = gUnknown_0203CF5C;
+ u32 *backupVar = gTrainerHillVBlankCounter;
u8 *tempAddr;
- gUnknown_0203CF5C = NULL;
+ gTrainerHillVBlankCounter = NULL;
UpdateSaveAddresses();
switch (saveType)
{
@@ -705,7 +705,7 @@ u8 HandleSavingData(u8 saveType)
save_write_to_flash(0xFFFF, gRamSaveSectionLocations);
break;
}
- gUnknown_0203CF5C = backupVar;
+ gTrainerHillVBlankCounter = backupVar;
return 0;
}
@@ -768,7 +768,7 @@ u8 sub_8153408(void) // trade.s save
return 0;
}
-u8 sub_8153430(void)
+u8 FullSaveGame(void)
{
if (gFlashMemoryPresent != TRUE)
return 1;
@@ -780,7 +780,7 @@ u8 sub_8153430(void)
return 0;
}
-bool8 sub_8153474(void)
+bool8 CheckSaveFile(void)
{
u8 retVal = FALSE;
u16 val = ++gUnknown_03006208;
diff --git a/src/scrcmd.c b/src/scrcmd.c
index d60fb071c..314504600 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -1203,7 +1203,7 @@ bool8 ScrCmd_turnvobject(struct ScriptContext *ctx)
bool8 ScrCmd_lockall(struct ScriptContext *ctx)
{
- if (is_c1_link_related_active())
+ if (IsUpdateLinkStateCBActive())
{
return FALSE;
}
@@ -1217,7 +1217,7 @@ bool8 ScrCmd_lockall(struct ScriptContext *ctx)
bool8 ScrCmd_lock(struct ScriptContext *ctx)
{
- if (is_c1_link_related_active())
+ if (IsUpdateLinkStateCBActive())
{
return FALSE;
}
@@ -2028,14 +2028,14 @@ bool8 ScrCmd_setmetatile(struct ScriptContext *ctx)
u16 x = VarGet(ScriptReadHalfword(ctx));
u16 y = VarGet(ScriptReadHalfword(ctx));
u16 tileId = VarGet(ScriptReadHalfword(ctx));
- u16 v8 = VarGet(ScriptReadHalfword(ctx));
+ u16 isImpassable = VarGet(ScriptReadHalfword(ctx));
x += 7;
y += 7;
- if (!v8)
+ if (!isImpassable)
MapGridSetMetatileIdAt(x, y, tileId);
else
- MapGridSetMetatileIdAt(x, y, tileId | 0xC00);
+ MapGridSetMetatileIdAt(x, y, tileId | METATILE_COLLISION_MASK);
return FALSE;
}
@@ -2182,7 +2182,7 @@ bool8 ScrCmd_cmdD8(struct ScriptContext *ctx)
bool8 ScrCmd_cmdD9(struct ScriptContext *ctx)
{
- if (is_c1_link_related_active())
+ if (IsUpdateLinkStateCBActive())
{
return FALSE;
}
diff --git a/src/script_pokemon_util_80F87D8.c b/src/script_pokemon_util_80F87D8.c
index cade00b50..7d6020c7a 100755
--- a/src/script_pokemon_util_80F87D8.c
+++ b/src/script_pokemon_util_80F87D8.c
@@ -29,6 +29,7 @@
#include "constants/items.h"
#include "constants/species.h"
#include "constants/vars.h"
+#include "constants/battle_frontier.h"
extern const u16 gEventObjectPalette8[];
extern const u16 gEventObjectPalette17[];
@@ -40,7 +41,7 @@ static const u8 gUnknown_0858D8EC[] = { 3, 4, 5, 14 };
static void sub_80F8EE8(u8 taskId);
static void sub_80F9088(u8 taskId);
-static void sub_80F9460(void);
+static void CB2_ReturnFromChooseHalfParty(void);
static void sub_80F94B8(void);
void SetContestTrainerGfxIds(void)
@@ -640,22 +641,24 @@ void ScriptSetMonMoveSlot(u8 monIndex, u16 move, u8 slot)
SetMonMoveSlot(&gPlayerParty[monIndex], move, slot);
}
-void sub_80F9438(void)
+// Note: When control returns to the event script, gSpecialVar_Result will be
+// TRUE if the party selection was successful.
+void ChooseHalfPartyForBattle(void)
{
- gMain.savedCallback = sub_80F9460;
- VarSet(VAR_FRONTIER_FACILITY, 9); // this isn't a valid frontier facility id (??)
- sub_81B8518(0);
+ gMain.savedCallback = CB2_ReturnFromChooseHalfParty;
+ VarSet(VAR_FRONTIER_FACILITY, FRONTIER_FACILITY_DOUBLE_COLOSSEUM);
+ InitChooseHalfPartyForBattle(0);
}
-static void sub_80F9460(void)
+static void CB2_ReturnFromChooseHalfParty(void)
{
switch (gSelectedOrderFromParty[0])
{
case 0:
- gSpecialVar_Result = 0;
+ gSpecialVar_Result = FALSE;
break;
default:
- gSpecialVar_Result = 1;
+ gSpecialVar_Result = TRUE;
break;
}
@@ -665,7 +668,7 @@ static void sub_80F9460(void)
void sub_80F9490(void)
{
gMain.savedCallback = sub_80F94B8;
- sub_81B8518(gSpecialVar_0x8004 + 1);
+ InitChooseHalfPartyForBattle(gSpecialVar_0x8004 + 1);
}
static void sub_80F94B8(void)
diff --git a/src/secret_base.c b/src/secret_base.c
index f8480fef0..9147c19f9 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -60,7 +60,7 @@ struct SecretBaseRecordMixer {
// Static RAM declarations
EWRAM_DATA u8 sCurSecretBaseId = 0;
-EWRAM_DATA u8 gUnknown_0203A01D = 0;
+EWRAM_DATA bool8 gInFriendSecretBase = FALSE;
EWRAM_DATA struct SecretBaseListMenuBuffer *gUnknown_0203A020 = NULL;
// Static ROM declarations
@@ -259,7 +259,7 @@ void sub_80E8CB0(s16 *xPtr, s16 *yPtr, u16 tile)
{
for (x = 0; x < mapLayout->width; x ++)
{
- if ((mapLayout->map[y * mapLayout->width + x] & 0x3ff) == tile)
+ if ((mapLayout->map[y * mapLayout->width + x] & METATILE_ID_MASK) == tile)
{
*xPtr = x;
*yPtr = y;
@@ -282,7 +282,7 @@ void sub_80E8D4C(void)
{
if (gUnknown_0858CFCC[i].tile1 == tile)
{
- MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | 0xC00);
+ MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | METATILE_COLLISION_MASK);
CurrentMapDrawMetatileAt(x, y);
return;
}
@@ -291,7 +291,7 @@ void sub_80E8D4C(void)
{
if (gUnknown_0858CFCC[i].tile2 == tile)
{
- MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile1 | 0xC00);
+ MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile1 | METATILE_COLLISION_MASK);
CurrentMapDrawMetatileAt(x, y);
return;
}
@@ -352,7 +352,7 @@ void sub_80E8EE0(struct MapEvents const *events)
{
if (gUnknown_0858CFCC[i].tile1 == tile_id)
{
- MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | 0xc00);
+ MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | METATILE_COLLISION_MASK);
break;
}
}
@@ -407,7 +407,7 @@ void sub_80E9068(void)
bool8 sub_80E909C(void)
{
- if (gMapHeader.mapType == MAP_TYPE_SECRET_BASE && VarGet(VAR_0x4097) == 0)
+ if (gMapHeader.mapType == MAP_TYPE_SECRET_BASE && VarGet(VAR_INIT_SECRET_BASE) == 0)
{
return FALSE;
}
@@ -434,7 +434,7 @@ void sub_80E9108(void)
sub_80E8CB0(&x, &y, 0x220);
x += 7;
y += 7;
- MapGridSetMetatileIdAt(x, y, 0x220 | 0xC00);
+ MapGridSetMetatileIdAt(x, y, 0x220 | METATILE_COLLISION_MASK);
CurrentMapDrawMetatileAt(x, y);
pal_fill_black();
CreateTask(sub_80E90C8, 0);
@@ -492,12 +492,12 @@ void sub_80E9238(u8 flagIn)
if (curBaseId != 0)
{
sub_80E8CB0(&x, &y, 0x220);
- MapGridSetMetatileIdAt(x + 7, y + 7, 0x221 | 0xc00);
+ MapGridSetMetatileIdAt(x + 7, y + 7, 0x221 | METATILE_COLLISION_MASK);
}
- else if (flagIn == 1 && VarGet(VAR_0x4089) == 1)
+ else if (flagIn == 1 && VarGet(VAR_SECRET_BASE_INITIALIZED) == 1)
{
sub_80E8CB0(&x, &y, 0x220);
- MapGridSetMetatileIdAt(x + 7, y + 7, 0x20a | 0xc00);
+ MapGridSetMetatileIdAt(x + 7, y + 7, 0x20a | METATILE_COLLISION_MASK);
}
}
}
@@ -552,7 +552,7 @@ void sub_80E933C(void)
metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7);
if (MetatileBehavior_IsSecretBaseLargeMatEdge(metatile) == TRUE || MetatileBehavior_IsLargeMatCenter(metatile) == TRUE)
{
- gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].graphicsId + VAR_0x3F20;
+ gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].graphicsId + UNKNOWN_VAR_OFFSET_3F20;
VarSet(gSpecialVar_Result, gDecorations[roomDecor[decorIdx]].tiles[0]);
gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].localId;
FlagClear(gSpecialVar_0x8004 + 0xAE);
@@ -791,7 +791,7 @@ void sub_80E9AD0(void)
{
if (gUnknown_0858CFCC[j].tile2 == tile)
{
- MapGridSetMetatileIdAt(events->bgEvents[i].x + 7, events->bgEvents[i].y + 7, gUnknown_0858CFCC[j].tile1 | 0xc00);
+ MapGridSetMetatileIdAt(events->bgEvents[i].x + 7, events->bgEvents[i].y + 7, gUnknown_0858CFCC[j].tile1 | METATILE_COLLISION_MASK);
break;
}
}
@@ -1186,11 +1186,11 @@ void SecretBasePerStepCallback(u8 taskId)
case 0:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- gUnknown_0203A01D = TRUE;
+ gInFriendSecretBase = TRUE;
}
else
{
- gUnknown_0203A01D = FALSE;
+ gInFriendSecretBase = FALSE;
}
PlayerGetDestCoords(&data[2], &data[3]);
data[1] = 1;
@@ -1201,103 +1201,103 @@ void SecretBasePerStepCallback(u8 taskId)
{
data[2] = x;
data[3] = y;
- VarSet(VAR_0x40EC, VarGet(VAR_0x40EC) + 1);
+ VarSet(VAR_SECRET_BASE_STEP_COUNTER, VarGet(VAR_SECRET_BASE_STEP_COUNTER) + 1);
behavior = MapGridGetMetatileBehaviorAt(x, y);
tileId = MapGridGetMetatileIdAt(x, y);
if (tileId == 0x234 || tileId == 0x23C)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x20);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x20);
}
}
else if (tileId == 0x2b8 || tileId == 0x2b9 || tileId == 0x2ba || tileId == 0x2c0 || tileId == 0x2c1 || tileId == 0x2c2 || tileId == 0x2c8 || tileId == 0x2c9 || tileId == 0x2ca)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x01);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x01);
}
}
else if (tileId == 0x239 || tileId == 0x241 || tileId == 0x251 || tileId == 0x259)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x04);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x04);
}
}
else if ((behavior == 0x34 && tileId == 0x26d) || (behavior == 0x35 && MapGridGetMetatileIdAt(x, y) == 0x26a))
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x200);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x200);
}
}
else if (behavior == 0xc1 && tileId == 0x23d)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) ^ 0x1000);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x2000);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ 0x1000);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x2000);
}
}
else if (behavior == 0x47 && tileId == 0x23e)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x1000);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) ^ 0x2000);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x1000);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ 0x2000);
}
}
else if (MetatileBehavior_IsSecretBaseGlitterMat(behavior) == TRUE)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x80);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x80);
}
}
else if (MetatileBehavior_IsSecretBaseBalloon(behavior) == TRUE)
{
PopSecretBaseBalloon(MapGridGetMetatileIdAt(x, y), x, y);
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
switch ((int)MapGridGetMetatileIdAt(x, y))
{
case 0x338:
case 0x33c:
case 0x340:
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x02);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x02);
break;
case 0x228:
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x100);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x100);
break;
}
}
}
else if (MetatileBehavior_IsSecretBaseBreakableDoor(behavior) == TRUE)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x400);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x400);
}
ShatterSecretBaseBreakableDoor(x, y);
}
else if (MetatileBehavior_IsSecretBaseSoundMat(behavior) == TRUE){
- if (gUnknown_0203A01D == TRUE) {
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x8000);
+ if (gInFriendSecretBase == TRUE) {
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x8000);
}
}
else if (MetatileBehavior_IsSecretBaseJumpMat(behavior) == TRUE)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x4000);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x4000);
}
}
else if (MetatileBehavior_IsSecretBaseSpinMat(behavior) == TRUE)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x02);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x02);
}
}
}
@@ -1780,33 +1780,33 @@ void sub_80EB18C(struct SecretBaseRecord *bases)
void sub_80EB1AC(void)
{
- VarSet(VAR_0x40EC, 0);
- VarSet(VAR_0x40ED, 0);
- VarSet(VAR_0x40EE, 0);
- VarSet(VAR_0x40EF, 0);
+ VarSet(VAR_SECRET_BASE_STEP_COUNTER, 0);
+ VarSet(VAR_SECRET_BASE_LAST_ITEM_USED, 0);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, 0);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, 0);
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40F0, TRUE);
+ VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, TRUE);
}
else
{
- VarSet(VAR_0x40F0, FALSE);
+ VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, FALSE);
}
- gUnknown_0203A01D = FALSE;
+ gInFriendSecretBase = FALSE;
}
void sub_80EB218(void)
{
- if (VarGet(VAR_0x40F0) && gUnknown_0203A01D == TRUE && !CurrentMapIsSecretBase())
+ if (VarGet(VAR_SECRET_BASE_IS_NOT_LOCAL) && gInFriendSecretBase == TRUE && !CurrentMapIsSecretBase())
{
- VarSet(VAR_0x40F0, FALSE);
- gUnknown_0203A01D = FALSE;
+ VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, FALSE);
+ gInFriendSecretBase = FALSE;
sub_80EEA70();
- VarSet(VAR_0x40EC, 0);
- VarSet(VAR_0x40ED, 0);
- VarSet(VAR_0x40EE, 0);
- VarSet(VAR_0x40EF, 0);
- VarSet(VAR_0x40F0, FALSE);
+ VarSet(VAR_SECRET_BASE_STEP_COUNTER, 0);
+ VarSet(VAR_SECRET_BASE_LAST_ITEM_USED, 0);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, 0);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, 0);
+ VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, FALSE);
}
}
@@ -1814,7 +1814,7 @@ void sub_80EB290(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x800);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x800);
}
}
@@ -1822,7 +1822,7 @@ void sub_80EB2C8(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x400);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x400);
}
}
@@ -1830,9 +1830,9 @@ void sub_80EB300(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x2000);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x2000);
}
}
@@ -1840,9 +1840,9 @@ void sub_80EB368(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x800);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x800);
}
}
@@ -1850,9 +1850,9 @@ void sub_80EB3D0(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x1000);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x1000);
}
}
@@ -1860,9 +1860,9 @@ void sub_80EB438(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x001);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x001);
}
}
@@ -1891,7 +1891,7 @@ void sub_80EB498(void)
case 0x334:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x4000);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x4000);
}
break;
}
@@ -1909,7 +1909,7 @@ void sub_80EB56C(void)
case 0x28b:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x40);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x40);
}
break;
case 0x2d8:
@@ -1932,21 +1932,21 @@ void sub_80EB56C(void)
case 0x2fb:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x8);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x8);
}
break;
case 0x22c:
case 0x233:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x40);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x40);
}
break;
case 0x288:
case 0x289:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x100);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x100);
}
break;
case 0x22d:
@@ -1954,7 +1954,7 @@ void sub_80EB56C(void)
case 0x22f:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x10);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x10);
}
break;
case 0x287:
@@ -1982,7 +1982,7 @@ void sub_80EB56C(void)
case 0x2cf:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8);
}
break;
}
@@ -2009,7 +2009,7 @@ void sub_80EB9E0(void)
case 0x2c6:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8);
}
break;
}
@@ -2047,14 +2047,14 @@ void sub_80EBB28(void)
case 0x2c7:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8);
}
break;
case 0x280:
case 0x281:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x100);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x100);
}
break;
case 0x225:
@@ -2062,7 +2062,7 @@ void sub_80EBB28(void)
case 0x227:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x10);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x10);
}
break;
}
@@ -2080,7 +2080,7 @@ void sub_80EBE7C(void)
case 0x28e:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x4);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x4);
}
break;
}
diff --git a/src/slot_machine.c b/src/slot_machine.c
index 759704f2b..a2e1f1554 100644
--- a/src/slot_machine.c
+++ b/src/slot_machine.c
@@ -60,33 +60,33 @@ enum
struct SlotMachineEwramStruct
{
/*0x00*/ u8 state;
- /*0x01*/ u8 unk01;
+ /*0x01*/ u8 machineId;
/*0x02*/ u8 pikaPower;
- /*0x03*/ u8 unk03;
- /*0x04*/ u8 unk04;
- /*0x05*/ u8 unk05;
- /*0x06*/ u8 unk06;
- /*0x07*/ u8 unk07;
+ /*0x03*/ u8 luckyGame;
+ /*0x04*/ u8 luckyFlags;
+ /*0x05*/ u8 reelTimeDraw;
+ /*0x06*/ u8 luckySpinsLeft; // tentative
+ /*0x07*/ u8 biasTag;
/*0x08*/ u16 matchedSymbols;
- /*0x0A*/ u8 unk0A;
- /*0x0B*/ u8 unk0B;
+ /*0x0A*/ u8 fairRollsLeft; // only happens if you win reeltime
+ /*0x0B*/ u8 fairRollsUsed;
/*0x0C*/ s16 coins;
/*0x0E*/ s16 payout;
- /*0x10*/ s16 unk10;
+ /*0x10*/ s16 netCoinLoss; // coins lost to machine (but never goes below 0)
/*0x12*/ s16 bet;
- /*0x14*/ s16 unk14;
- /*0x16*/ s16 unk16;
- /*0x18*/ s16 unk18;
- /*0x1A*/ s16 unk1A;
- /*0x1C*/ s16 unk1C[3];
- /*0x22*/ u16 unk22[3];
- /*0x28*/ s16 reelPositions[3];
- /*0x2E*/ s16 unk2E[3];
- /*0x34*/ s16 unk34[3];
- /*0x3A*/ u8 reelTasks[3];
- /*0x3D*/ u8 unk3D;
- /*0x3E*/ u8 unk3E;
- /*0x3F*/ u8 unk3F;
+ /*0x14*/ s16 reeltimePixelOffset;
+ /*0x16*/ s16 reeltimePosition;
+ /*0x18*/ s16 currReel;
+ /*0x1A*/ s16 reelIncrement; // speed of reel
+ /*0x1C*/ s16 reelPixelOffsets[3];
+ /*0x22*/ u16 reelPixelOffsetsWhileStopping[3];
+ /*0x28*/ s16 reelTagOffsets[3];
+ /*0x2E*/ s16 reelExtraTurns[3];
+ /*0x34*/ s16 winnerRows[3];
+ /*0x3A*/ u8 slotReelTasks[3];
+ /*0x3D*/ u8 unkTaskPointer3D;
+ /*0x3E*/ u8 unkTaskPointer3E;
+ /*0x3F*/ u8 reelTimeSprite3F;
/*0x40*/ u8 unk40;
/*0x41*/ u8 unk41;
/*0x42*/ u8 unk42;
@@ -95,8 +95,8 @@ struct SlotMachineEwramStruct
/*0x49*/ u8 unk49[2];
/*0x49*/ u8 unk4B[3];
/*0x4E*/ u8 unk4E[2];
- /*0x50*/ u8 unk50[2];
- /*0x52*/ u8 unk52[2];
+ /*0x50*/ u8 reelTimeSprites1[2];
+ /*0x52*/ u8 reelTimeSprites2[2];
/*0x54*/ u8 unk54[4];
/*0x58*/ u16 win0h;
/*0x5a*/ u16 win0v;
@@ -115,238 +115,238 @@ struct UnkStruct1
#define SLOTMACHINE_GFX_TILES 233
-/*static */void CB2_SlotMachineSetup(void);
-/*static */void CB2_SlotMachineLoop(void);
-/*static */void PlaySlotMachine_Internal(u8 arg0, MainCallback cb);
-/*static */void SlotMachineDummyTask(u8 taskId);
-/*static */void SlotMachineSetup_0_0(void);
-/*static */void SlotMachineSetup_6_2(void);
-/*static */void SlotMachineSetup_1_0(void);
-/*static */void SlotMachineSetup_2_0(void);
-/*static */void SlotMachineSetup_2_1(void);
-/*static */void SlotMachineSetup_0_1(void);
-/*static */void SlotMachineSetup_3_0(void);
-/*static */void SlotMachineSetup_4_0(void);
-/*static */void SlotMachineSetup_5_0(void);
-/*static */void SlotMachineSetup_6_0(void);
-/*static */void SlotMachineSetup_6_1(void);
-/*static */void SlotMachineSetup_8_0(void);
-/*static */void SlotMachineSetup_9_0(void);
-/*static */void SlotMachineSetup_10_0(void);
-/*static */void SlotMachineSetup_10_1(void);
-/*static */void sub_8101D04(void);
-/*static */void sub_8104DA4(void);
-/*static */void sub_8101D24(u8 taskId);
-/*static */bool8 sub_8101D5C(struct Task *task);
-/*static */bool8 sub_8101D8C(struct Task *task);
-/*static */bool8 sub_8101DB0(struct Task *task);
-/*static */bool8 sub_8101DF4(struct Task *task);
-/*static */bool8 sub_8101E10(struct Task *task);
-/*static */bool8 sub_8101E3C(struct Task *task);
-/*static */bool8 sub_8101F44(struct Task *task);
-/*static */bool8 sub_8101F60(struct Task *task);
-/*static */bool8 sub_8101F88(struct Task *task);
-/*static */bool8 sub_8101FA4(struct Task *task);
-/*static */bool8 sub_8102008(struct Task *task);
-/*static */bool8 sub_8102034(struct Task *task);
-/*static */bool8 sub_8102058(struct Task *task);
-/*static */bool8 sub_8102090(struct Task *task);
-/*static */bool8 sub_81020C8(struct Task *task);
-/*static */bool8 sub_81021E0(struct Task *task);
-/*static */bool8 sub_81021FC(struct Task *task);
-/*static */bool8 sub_8102264(struct Task *task);
-/*static */bool8 sub_81022A0(struct Task *task);
-/*static */bool8 sub_81022CC(struct Task *task);
-/*static */bool8 sub_81022F0(struct Task *task);
-/*static */bool8 sub_8102318(struct Task *task);
-/*static */bool8 sub_8102344(struct Task *task);
-/*static */bool8 sub_810239C(struct Task *task);
-/*static */bool8 sub_81023B8(struct Task *task);
-/*static */bool8 sub_81023E0_(struct Task *task);
-/*static */bool8 sub_81023FC(struct Task *task);
-/*static */bool8 sub_8102424(struct Task *task);
-/*static */bool8 sub_8102460(struct Task *task);
-/*static */void sub_8102484(void);
-/*static */void sub_81024F0(void);
-/*static */bool8 sub_8102540_(void);
-/*static */u8 sub_8102578(void);
-/*static */u16 dp15_jump_random_unknown(void);
-/*static */u8 sub_81025BC(void);
-/*static */void CheckMatch(void);
-/*static */void CheckMatch_CenterRow(void);
-/*static */void CheckMatch_TopAndBottom(void);
-/*static */void CheckMatch_Diagonals(void);
-/*static */u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3);
-/*static */void sub_8102A24(void);
-/*static */void sub_8102A64(u8 taskId);
-/*static */bool8 sub_8102A44(void);
-/*static */bool8 sub_8102A9C(struct Task *task);
-/*static */bool8 sub_8102AD0(struct Task *task);
-/*static */bool8 sub_8102B80(struct Task *task);
-/*static */u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y);
-/*static */void sub_8102DA8(void);
-/*static */void sub_8102DEC(u8 a0);
-/*static */void sub_8102E1C(u8 a0);
-/*static */bool8 sub_8102E40(u8 a0);
-/*static */void sub_8102E68(u8 taskId);
-/*static */bool8 sub_8102EA0(struct Task *task);
-/*static */bool8 sub_8102EA4(struct Task *task);
-/*static */bool8 sub_8102EC0(struct Task *task);
-/*static */bool8 sub_8102F4C(struct Task *task);
-/*static */bool8 sub_8103008(struct Task *task);
-/*static */bool8 sub_810305C(void);
-/*static */bool8 sub_8103154(u8 a0, u8 a1);
-/*static */bool8 sub_81031B4(u8 a0, u8 a1);
-/*static */bool8 sub_81032C0(void);
-/*static */bool8 sub_81032E8(void);
-/*static */bool8 sub_810333C(void);
-/*static */bool8 sub_81033DC(void);
-/*static */bool8 sub_810341C(u8 a0);
-/*static */bool8 sub_810347C(u8 a0);
-/*static */void sub_81034F4(void);
-/*static */void sub_8103540(void);
-/*static */void sub_8103564(void);
-/*static */void j5_08111E84(void);
-/*static */void sub_8103668(void);
-/*static */void sub_810380C(void);
-/*static */void sub_8103830(void);
-/*static */void sub_8103910(void);
-/*static */void sub_8103A78(void);
-/*static */void sub_8103C14(u8 a0);
-/*static */void sub_8103C48(u8 taskId);
-/*static */void sub_8103D50(u8 a0);
-/*static */void sub_8103C78(struct Task *task, u8 taskId);
-/*static */void sub_8103CAC(struct Task *task, u8 taskId);
-/*static */void sub_8103CC8(struct Task *task, u8 taskId);
-/*static */void sub_8103D8C(u8 a0);
-/*static */void sub_8103DC8(void);
-/*static */void sub_8103E04(u8 a0);
-/*static */bool8 sub_8103E38(void);
-/*static */bool8 sub_8103E7C(void);
-/*static */bool8 sub_8103EAC(u8 spriteId);
-/*static */void sub_8103EE4(struct Sprite *sprite);
-/*static */void sub_8103F70(void);
-/*static */bool8 sub_8103FA0(void);
-/*static */void sub_8103FE8_(u8 taskId);
-/*static */void sub_8104048(void);
-/*static */void sub_8104064(u8 pikaPower);
-/*static */bool8 sub_81040C8(void);
-/*static */void sub_81040E8(u8 taskId);
-/*static */void nullsub_68(struct Task *task);
-/*static */void sub_810411C(struct Task *task);
-/*static */void sub_8104144(struct Task *task);
-/*static */void sub_81041AC(struct Task *task);
-/*static */void sub_812D394(struct Task *task);
-/*static */void sub_810423C(u8 pikaPower);
-/*static */void sub_810430C(void);
-/*static */bool8 sub_810432C(void);
-/*static */void sub_810434C(u8 taskId);
-/*static */void sub_810437C(struct Task *task);
-/*static */void sub_81043EC(struct Task *task);
-/*static */void sub_8104468(struct Task *task);
-/*static */void sub_8104498(struct Task *task);
-/*static */void sub_8104548(struct Task *task);
-/*static */void sub_8104598(struct Task *task);
-/*static */void sub_81045CC(struct Task *task);
-/*static */void sub_810463C(struct Task *task);
-/*static */void sub_81046C0(struct Task *task);
-/*static */void sub_8104764(struct Task *task);
-/*static */void sub_8104794(struct Task *task);
-/*static */void sub_81047EC(struct Task *task);
-/*static */void sub_8104860(struct Task *task);
-/*static */void sub_81048A8(struct Task *task);
-/*static */void sub_81048CC(struct Task *task);
-/*static */void sub_8104940(struct Task *task);
-/*static */void sub_81049C8(struct Task *task);
-/*static */void sub_81049F8(struct Task *task);
-/*static */void sub_8104A40(s16 a0, s16 a1);
-/*static */void sub_8104A88(s16 a0);
-/*static */void sub_8104AB8(u8 a0);
-/*static */bool8 sub_8104AEC(void);
-/*static */void sub_8104B0C(u8 taskId);
-/*static */void sub_8104B3C(struct Task *task);
-/*static */void sub_8104B60(struct Task *task);
-/*static */void sub_8104B80(struct Task *task);
-/*static */void sub_8104BC8(struct Task *task);
-/*static */void sub_812DD78(struct Task *task);
-/*static */void sub_8104BFC(struct Task *task);
-/*static */void sub_812DE14(struct Task *task);
-/*static */void sub_812DE30(struct Task *task);
-/*static */void sub_8104C44(struct Task *task);
-/*static */void sub_8104C5C(void);
-/*static */void sub_8104CAC(u8 arg0);
-/*static */bool8 sub_8104E18(void);
-/*static */void nullsub_69(struct Task *task);
-/*static */void sub_8104E74_(u8 taskId);
-/*static */void sub_8104EA8(void);
-/*static */void sub_8104F8C(void);
-/*static */void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3);
-/*static */void sub_81050C4(void);
-/*static */void sub_8105100(void);
-/*static */void sub_810514C(void);
-/*static */void sub_81051C0(void);
-/*static */void sub_8105284_(void);
-/*static */void sub_81052EC(void);
-/*static */void sub_81053A0(void);
-/*static */void sub_810545C(void);
-/*static */void sub_81054B8(void);
-/*static */void sub_8105524(void);
-/*static */void sub_8105554(void);
-/*static */void sub_8105578(void);
-/*static */void sub_8105688(s16 a0);
-/*static */void sub_81056C0(void);
-/*static */void sub_81056F0(void);
-/*static */void sub_81057E8(s16 a0);
-/*static */void sub_8105804(void);
-/*static */void sub_8105854(void);
-/*static */void sub_81058A0(void);
-/*static */void sub_81058C4(void);
-/*static */void sub_81059B8(void);
-/*static */void sub_81059E8(void);
-/*static */bool8 sub_8105ACC(void);
-/*static */void sub_8105AEC(void);
-/*static */u8 sub_8105B1C(s16 x, s16 y);
-/*static */void sub_8105B88(u8 spriteId);
-/*static */u8 sub_8105BF8(u8 templateIdx, void (*callback)(struct Sprite*), s16 x, s16 y, s16 a4);
-/*static */void sub_81063C0(void);
-/*static */void sub_8106404(void);
-/*static */void sub_8106448(void);
-/*static */void sub_81064B8(void);
-/*static */void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4);
-/*static */void sub_81065DC(void);
-/*static */void sub_812F958(void);
-/*static */void sub_812F968(void);
-/*static */void LoadSlotMachineWheelOverlay(void);
-/*static */u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2);
+static void CB2_SlotMachineSetup(void);
+static void CB2_SlotMachineLoop(void);
+static void PlaySlotMachine_Internal(u8 slotMachineIndex, MainCallback cb);
+static void SlotMachineDummyTask(u8 taskId);
+static void SlotMachineSetup_0_0(void);
+static void SlotMachineSetup_6_2(void);
+static void SlotMachineSetup_1_0(void);
+static void SlotMachineSetup_2_0(void);
+static void SlotMachineSetup_2_1(void);
+static void SlotMachineSetup_0_1(void);
+static void SlotMachineSetup_3_0(void);
+static void SlotMachineSetup_4_0(void);
+static void SlotMachineSetup_5_0(void);
+static void SlotMachineSetup_6_0(void);
+static void SlotMachineSetup_6_1(void);
+static void SlotMachineSetup_8_0(void);
+static void SlotMachineSetup_9_0(void);
+static void SlotMachineSetup_10_0(void);
+static void SlotMachineSetupGameplayTasks(void);
+static void GameplayTasks_Slots(void);
+static void sub_8104DA4(void);
+static void RunSlotActions(u8 taskId);
+static bool8 SlotAction_UnfadeScreen(struct Task *task);
+static bool8 SlotAction_WaitForUnfade(struct Task *task);
+static bool8 SlotAction_SetSlotMachineVars(struct Task *task);
+static bool8 SlotAction3(struct Task *task);
+static bool8 SlotAction4(struct Task *task);
+static bool8 SlotAction_AwaitPlayerInput(struct Task *task);
+static bool8 SlotAction_PrintYouDontHaveThreeCoins(struct Task *task);
+static bool8 SlotAction_ExitYouDontHaveThreeCoinsMessage(struct Task *task);
+static bool8 SlotAction_GivingInformation(struct Task *task);
+static bool8 SlotAction9(struct Task *task);
+static bool8 SlotAction10(struct Task *task);
+static bool8 SlotAction_SetLuckySpins(struct Task *task);
+static bool8 SlotAction_AwaitReelStop(struct Task *task);
+static bool8 SlotAction_WaitForAllReelsToStop(struct Task *task);
+static bool8 SlotAction_CheckMatches(struct Task *task);
+static bool8 SlotAction_WaitForPayoutToBeAwarded(struct Task *task);
+static bool8 SlotAction_EndOfRoll(struct Task *task);
+static bool8 SlotAction_MatchedPower(struct Task *task);
+static bool8 SlotAction18(struct Task *task);
+static bool8 SlotAction_Loop(struct Task *task);
+static bool8 SlotAction_NoMatches(struct Task *task);
+static bool8 SlotAction_PrintQuitTheGame(struct Task *task);
+static bool8 SlotAction_SeeIfPlayerQuits(struct Task *task);
+static bool8 SlotAction_PrintMessage_9999Coins(struct Task *task);
+static bool8 SlotAction_ExitMessage_9999Coins(struct Task *task);
+static bool8 SlotAction_PrintMessage_NoMoreCoins(struct Task *task);
+static bool8 SlotAction_ExitMessage_NoMoreCoins(struct Task *task);
+static bool8 SlotAction_EndGame(struct Task *task);
+static bool8 SlotAction_FreeDataStructures(struct Task *task);
+static void DrawLuckyFlags(void);
+static void SetLuckySpins(void);
+static bool8 IsThisRoundLucky(void);
+static u8 AttemptsAtLuckyFlags_Top3(void);
+static u16 SlowReelSpeed(void);
+static u8 AttemptsAtLuckyFlags_NotTop3(void);
+static void CheckMatch(void);
+static void CheckMatch_CenterRow(void);
+static void CheckMatch_TopAndBottom(void);
+static void CheckMatch_Diagonals(void);
+static u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3);
+static void AwardPayout(void);
+static void RunAwardPayoutActions(u8 taskId);
+static bool8 IsFinalTask_RunAwardPayoutActions(void);
+static bool8 AwardPayoutAction0(struct Task *task);
+static bool8 AwardPayoutAction_GivePayoutToPlayer(struct Task *task);
+static bool8 AwardPayoutAction_FreeTask(struct Task *task);
+static u8 GetNearbyTag_Quantized(u8 x, s16 y);
+static void GameplayTask_StopSlotReel(void);
+static void ReelTasks_SetUnkTaskData(u8 a0);
+static void sub_8102E1C(u8 a0);
+static bool8 IsSlotReelMoving(u8 a0);
+static void RunSlotReelActions(u8 taskId);
+static bool8 SlotReelAction_StayStill(struct Task *task);
+static bool8 SlotReelAction_Spin(struct Task *task);
+static bool8 SlotReelAction_DecideWhereToStop(struct Task *task);
+static bool8 SlotReelAction_MoveToStop(struct Task *task);
+static bool8 SlotReelAction_OscillatingStop(struct Task *task);
+static bool8 DecideReelTurns_BiasTag_Reel1(void);
+static bool8 DecideReelTurns_BiasTag_Reel1_Bet1(u8 a0, u8 a1);
+static bool8 DecideReelTurns_BiasTag_Reel1_Bet2or3(u8 a0, u8 a1);
+static bool8 DecideReelTurns_BiasTag_Reel2(void);
+static bool8 DecideReelTurns_BiasTag_Reel2_Bet1or2(void);
+static bool8 DecideReelTurns_BiasTag_Reel2_Bet3(void);
+static bool8 DecideReelTurns_BiasTag_Reel3(void);
+static bool8 DecideReelTurns_BiasTag_Reel3_Bet1or2(u8 a0);
+static bool8 DecideReelTurns_BiasTag_Reel3_Bet3(u8 a0);
+static void DecideReelTurns_NoBiasTag_Reel1(void);
+static void DecideReelTurns_NoBiasTag_Reel2(void);
+static void DecideReelTurns_NoBiasTag_Reel2_Bet1(void);
+static void DecideReelTurns_NoBiasTag_Reel2_Bet2(void);
+static void DecideReelTurns_NoBiasTag_Reel2_Bet3(void);
+static void DecideReelTurns_NoBiasTag_Reel3(void);
+static void DecideReelTurns_NoBiasTag_Reel3_Bet1(void);
+static void DecideReelTurns_NoBiasTag_Reel3_Bet2(void);
+static void DecideReelTurns_NoBiasTag_Reel3_Bet3(void);
+static void sub_8103C14(u8 a0);
+static void sub_8103C48(u8 taskId);
+static void LoadBetTiles(u8 a0);
+static void sub_8103C78(struct Task *task, u8 taskId);
+static void sub_8103CAC(struct Task *task, u8 taskId);
+static void sub_8103CC8(struct Task *task, u8 taskId);
+static void sub_8103D8C(u8 a0);
+static void sub_8103DC8(void);
+static void sub_8103E04(u8 a0);
+static bool8 sub_8103E38(void);
+static bool8 sub_8103E7C(void);
+static bool8 sub_8103EAC(u8 spriteId);
+static void sub_8103EE4(struct Sprite *sprite);
+static void sub_8103F70(void);
+static bool8 sub_8103FA0(void);
+static void sub_8103FE8_(u8 taskId);
+static void GameplayTask_PikaPower(void);
+static void DisplayPikaPower(u8 pikaPower);
+static bool8 sub_81040C8(void);
+static void sub_81040E8(u8 taskId);
+static void nullsub_68(struct Task *task);
+static void sub_810411C(struct Task *task);
+static void sub_8104144(struct Task *task);
+static void sub_81041AC(struct Task *task);
+static void ClearTaskDataFields_2orHigher(struct Task *task);
+static void sub_810423C(u8 pikaPower);
+static void BeginReeltime(void);
+static bool8 IsFinalTask_RunReelTimeActions(void);
+static void RunReeltimeActions(u8 taskId);
+static void ReeltimeAction0(struct Task *task);
+static void ReeltimeAction1(struct Task *task);
+static void ReeltimeAction2(struct Task *task);
+static void ReeltimeAction3(struct Task *task);
+static void ReeltimeAction4(struct Task *task);
+static void ReeltimeAction5(struct Task *task);
+static void ReeltimeAction6(struct Task *task);
+static void ReelTimeAction_LandOnOutcome(struct Task *task);
+static void ReeltimeAction8(struct Task *task);
+static void ReeltimeAction9(struct Task *task);
+static void ReeltimeAction10(struct Task *task);
+static void ReeltimeAction11(struct Task *task);
+static void ReeltimeAction12(struct Task *task);
+static void ReeltimeAction13(struct Task *task);
+static void ReeltimeAction14(struct Task *task);
+static void ReeltimeAction15(struct Task *task);
+static void ReeltimeAction16(struct Task *task);
+static void ReeltimeAction17(struct Task *task);
+static void sub_8104A40(s16 a0, s16 a1);
+static void sub_8104A88(s16 a0);
+static void OpenInfoBox(u8 a0);
+static bool8 IsInfoBoxClosed(void);
+static void RunInfoBoxActions(u8 taskId);
+static void InfoBox_FadeIn(struct Task *task);
+static void InfoBox_WaitForFade(struct Task *task);
+static void InfoBox_8104B80(struct Task *task);
+static void InfoBox_AwaitPlayerInput(struct Task *task);
+static void InfoBox_AddText(struct Task *task);
+static void InfoBox_8104BFC(struct Task *task);
+static void InfoBox_812DE14(struct Task *task);
+static void InfoBox_812DE30(struct Task *task);
+static void InfoBox_FreeTask(struct Task *task);
+static void sub_8104C5C(void);
+static void sub_8104CAC(u8 arg0);
+static bool8 sub_8104E18(void);
+static void nullsub_69(struct Task *task);
+static void sub_8104E74_(u8 taskId);
+static void sub_8104EA8(void);
+static void sub_8104F8C(void);
+static void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3);
+static void sub_81050C4(void);
+static void sub_8105100(void);
+static void sub_810514C(void);
+static void sub_81051C0(void);
+static void sub_8105284_(void);
+static void sub_81052EC(void);
+static void sub_81053A0(void);
+static void sub_810545C(void);
+static void sub_81054B8(void);
+static void sub_8105524(void);
+static void sub_8105554(void);
+static void CreateReelTimeSprites1(void);
+static void sub_8105688(s16 a0);
+static void sub_81056C0(void);
+static void CreateReelTimeSprite2(void);
+static void sub_81057E8(s16 a0);
+static void sub_8105804(void);
+static void sub_8105854(void);
+static void sub_81058A0(void);
+static void sub_81058C4(void);
+static void sub_81059B8(void);
+static void sub_81059E8(void);
+static bool8 sub_8105ACC(void);
+static void sub_8105AEC(void);
+static u8 sub_8105B1C(s16 x, s16 y);
+static void sub_8105B88(u8 spriteId);
+static u8 sub_8105BF8(u8 templateIdx, void (*callback)(struct Sprite*), s16 x, s16 y, s16 a4);
+static void sub_81063C0(void);
+static void sub_8106404(void);
+static void sub_8106448(void);
+static void sub_81064B8(void);
+static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4);
+static void sub_81065DC(void);
+static void sub_812F958(void);
+static void sub_812F968(void);
+static void LoadSlotMachineWheelOverlay(void);
+static u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2);
// Ewram variables
-static EWRAM_DATA u16 *gUnknown_0203AAC8 = NULL;
-static EWRAM_DATA u16 *gUnknown_0203AACC = NULL;
-static EWRAM_DATA u16 *gUnknown_0203AAD0 = NULL;
-static EWRAM_DATA u8 *gUnknown_0203AAD4 = NULL;
-static EWRAM_DATA u8 *gUnknown_0203AAD8 = NULL;
-static EWRAM_DATA u16 *gUnknown_0203AADC = NULL;
-static EWRAM_DATA u8 *gUnknown_0203AAE0 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAE4 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAE8 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAEC = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAF0 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAF4 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAF8 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAFC = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB00 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB04 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB08 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB0C = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB10 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB14 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB18 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB1C = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB20 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB24 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB28 = NULL;
-static EWRAM_DATA struct SpriteSheet *gUnknown_0203AB2C = NULL;
-static EWRAM_DATA struct SpriteSheet *gUnknown_0203AB30 = NULL;
+static EWRAM_DATA u16 *sUnknown_0203AAC8 = NULL;
+static EWRAM_DATA u16 *sSelectedPikaPowerTile = NULL;
+static EWRAM_DATA u16 *sUnknown_0203AAD0 = NULL;
+static EWRAM_DATA u8 *sUnknown_0203AAD4 = NULL;
+static EWRAM_DATA u8 *sUnknown_0203AAD8 = NULL;
+static EWRAM_DATA u16 *sUnknown_0203AADC = NULL;
+static EWRAM_DATA u8 *sUnknown_0203AAE0 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAE4 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAE8 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAEC = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAF0 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAF4 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAF8 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAFC = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB00 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB04 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB08 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB0C = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB10 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB14 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB18 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB1C = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB20 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB24 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB28 = NULL;
+static EWRAM_DATA struct SpriteSheet *sUnknown_0203AB2C = NULL;
+static EWRAM_DATA struct SpriteSheet *sUnknown_0203AB30 = NULL;
static EWRAM_DATA struct SlotMachineEwramStruct *sSlotMachine = NULL;
// IWRAM bss
@@ -355,10 +355,10 @@ static IWRAM_DATA struct SpriteFrameImage *gUnknown_03001188[26];
// Const rom data.
extern const struct UnkStruct1 *const gUnknown_083ED048[];
extern const u16 gPalette_83EDE24[];
-extern const u8 gUnknown_083ECD04[][3];
-extern const u8 gUnknown_083ECE3A[];
-extern const u16 gUnknown_083ECE42[];
-extern const u16 gUnknown_083ECE48[];
+extern const u8 gLuckyRoundProbabilities[][3];
+extern const u8 gBiasTags[];
+extern const u16 gLuckyFlagSettings_Top3[];
+extern const u16 gLuckyFlagSettings_NotTop3[];
extern const s16 gUnknown_083ECE7E[][2];
extern const SpriteCallback gUnknown_083ECF0C[];
extern const struct SpriteTemplate *const gUnknown_083EDB5C[];
@@ -369,36 +369,36 @@ extern const struct SpriteTemplate gSpriteTemplate_83ED54C;
extern const struct SpriteTemplate gSpriteTemplate_83ED534;
extern const u8 gUnknown_083ECC58[2];
extern const struct SpriteTemplate gSpriteTemplate_83ED51C;
-extern const u16 gUnknown_083ECE12[];
+extern const u16 gProbabilityTable_SkipToReeltimeAction14[];
extern const u16 *const gUnknown_083EDE10[];
-extern const u16 gUnknown_083ECE1C[][2];
-extern const u16 gUnknown_083ECE30[];
-extern const u16 sSlotMatchFlags[];
-extern const u16 sSlotPayouts[];
+extern const u16 gReelIncrementTable[][2];
+extern const u16 gReelTimeBonusIncrementTable[];
+extern const u16 gSlotMatchFlags[];
+extern const u16 gSlotPayouts[];
extern const u8 *const gUnknown_083EDCE4;
extern const u8 *const gUnknown_083EDCDC;
-extern const u32 sReelTimeGfx[];
-extern const struct SpriteSheet sSlotMachineSpriteSheets[];
+extern const u32 gReelTimeGfx[];
+extern const struct SpriteSheet gSlotMachineSpriteSheets[];
extern const struct SpritePalette gSlotMachineSpritePalettes[];
extern const u16 *const gUnknown_083EDE20;
-extern const s16 gUnknown_083ECCF8[][2];
+extern const s16 gInitialReelPositions[][2];
extern const struct BgTemplate gUnknown_085A7424[4];
extern const struct WindowTemplate gUnknown_085A7434[];
-extern const u8 gUnknown_083ECD16[][6];
-extern const u8 gUnknown_083ECD28[][6];
-extern const u8 gUnknown_083ECD46[][17];
-extern const u8 gUnknown_083ECDAC[][17];
-extern const u8 sSym2Match[];
-extern const u8 gUnknown_083ECCF1[];
-extern const u8 sReelSymbols[][21];
+extern const u8 gLuckyFlagProbabilities_Top3[][6];
+extern const u8 gLuckyFlagProbabilities_NotTop3[][6];
+extern const u8 gReeltimeProbabilities_UnluckyGame[][17];
+extern const u8 gReelTimeProbabilities_LuckyGame[][17];
+extern const u8 gSym2Match[];
+extern const u8 gReelTimeTags[];
+extern const u8 gReelSymbols[][REEL_NUM_TAGS];
extern const u16 *const gUnknown_083EDD08[];
extern const u16 *const gUnknown_083EDD1C[];
extern const u8 gUnknown_083EDD30[];
-extern const u8 gUnknown_083EDD35[][2];
-extern const u8 gUnknown_083EDD3B[];
+extern const u8 gBettingTilesId[][2];
+extern const u8 gNumberBettingTiles[];
extern const u16 *const gUnknown_083EDDA0[];
extern const u16 *const gUnknown_083EDDAC;
-extern const u16 sReelTimeWindowTilemap[];
+extern const u16 gReelTimeWindowTilemap[];
extern const u16 gUnknown_085A9898[];
extern void (*const gUnknown_083ED064[])(void);
@@ -453,106 +453,108 @@ const struct WindowTemplate gUnknown_085A7444 =
0, 1, 3, 20, 13, 13, 1
};
-const u8 gUnknown_085A744C[] = {3, 1, 2, 0};
-
-bool8 (*const gUnknown_083ECAAC[])(struct Task *task) =
-{
- sub_8101D5C,
- sub_8101D8C,
- sub_8101DB0,
- sub_8101DF4,
- sub_8101E10,
- sub_8101E3C,
- sub_8101F44,
- sub_8101F60,
- sub_8101F88,
- sub_8101FA4,
- sub_8102008,
- sub_8102034,
- sub_8102058,
- sub_8102090,
- sub_81020C8,
- sub_81021E0,
- sub_81021FC,
- sub_8102264,
- sub_81022A0,
- sub_81022CC,
- sub_81022F0,
- sub_8102318,
- sub_8102344,
- sub_810239C,
- sub_81023B8,
- sub_81023E0_,
- sub_81023FC,
- sub_8102424,
- sub_8102460,
+const u8 gColors_ReeltimeHelp[] = {3, 1, 2, 0};
+
+bool8 (*const SlotActions[])(struct Task *task) =
+{
+ SlotAction_UnfadeScreen, // 0
+ SlotAction_WaitForUnfade, // 1
+ SlotAction_SetSlotMachineVars, // 2
+ SlotAction3, // 3
+ SlotAction4, // 4
+ SlotAction_AwaitPlayerInput, // 5
+ SlotAction_PrintYouDontHaveThreeCoins, // 6
+ SlotAction_ExitYouDontHaveThreeCoinsMessage, // 7
+ SlotAction_GivingInformation, // 8
+ SlotAction9, // 9
+ SlotAction10, // 10
+ SlotAction_SetLuckySpins, // 11
+ SlotAction_AwaitReelStop, // 12
+ SlotAction_WaitForAllReelsToStop, // 13
+ SlotAction_CheckMatches, // 14
+ SlotAction_WaitForPayoutToBeAwarded, // 15
+ SlotAction_EndOfRoll, // 16
+ SlotAction_MatchedPower, // 17
+ SlotAction18, // 18
+ SlotAction_Loop, // 19
+ SlotAction_NoMatches, // 20
+ SlotAction_PrintQuitTheGame, // 21
+ SlotAction_SeeIfPlayerQuits, // 22
+ SlotAction_PrintMessage_9999Coins, // 23
+ SlotAction_ExitMessage_9999Coins, // 24
+ SlotAction_PrintMessage_NoMoreCoins, // 25
+ SlotAction_ExitMessage_NoMoreCoins, // 26
+ SlotAction_EndGame, // 27
+ SlotAction_FreeDataStructures, // 28
};
-bool8 (*const gUnknown_083ECB20[])(struct Task *task) =
+bool8 (*const AwardPayoutActions[])(struct Task *task) =
{
- sub_8102A9C,
- sub_8102AD0,
- sub_8102B80
+ AwardPayoutAction0,
+ AwardPayoutAction_GivePayoutToPlayer,
+ AwardPayoutAction_FreeTask
};
-bool8 (*const gUnknown_083ECB2C[])(struct Task *task) =
+bool8 (*const SlotReelActions[])(struct Task *task) =
{
- sub_8102EA0,
- sub_8102EA4,
- sub_8102EC0,
- sub_8102F4C,
- sub_8103008
+ SlotReelAction_StayStill,
+ SlotReelAction_Spin,
+ SlotReelAction_DecideWhereToStop,
+ SlotReelAction_MoveToStop,
+ SlotReelAction_OscillatingStop
};
-bool8 (*const gUnknown_083ECB40[])(void) =
+// returns True if a match with the biasTag is possible in that reel
+// also modifies data in sSlotMachine reel arrays to indicate how to get to the matching state
+bool8 (*const DecideReelTurns_BiasTag[])(void) =
{
- sub_810305C,
- sub_81032C0,
- sub_81033DC
+ DecideReelTurns_BiasTag_Reel1,
+ DecideReelTurns_BiasTag_Reel2,
+ DecideReelTurns_BiasTag_Reel3
};
-void (*const gUnknown_083ECB4C[])(void) =
+void (*const DecideReelTurns_NoBiasTag[])(void) =
{
- sub_81034F4,
- sub_8103540,
- sub_810380C
+ DecideReelTurns_NoBiasTag_Reel1,
+ DecideReelTurns_NoBiasTag_Reel2,
+ DecideReelTurns_NoBiasTag_Reel3
};
-const u16 gUnknown_085A74FC[] = {2, 4, 4, 4, 8};
+const u16 ReelStopShocks[] = {2, 4, 4, 4, 8};
-bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1) =
+bool8 (*const DecideReelTurns_BiasTag_Reel1_Bets[])(u8 tag1, u8 tag2) =
{
- sub_8103154,
- sub_81031B4,
- sub_81031B4
+ DecideReelTurns_BiasTag_Reel1_Bet1,
+ DecideReelTurns_BiasTag_Reel1_Bet2or3,
+ DecideReelTurns_BiasTag_Reel1_Bet2or3
};
-bool8 (*const gUnknown_083ECB70[])(void) =
+bool8 (*const DecideReelTurns_BiasTag_Reel2_Bets[])(void) =
{
- sub_81032E8,
- sub_81032E8,
- sub_810333C
+ DecideReelTurns_BiasTag_Reel2_Bet1or2,
+ DecideReelTurns_BiasTag_Reel2_Bet1or2,
+ DecideReelTurns_BiasTag_Reel2_Bet3
};
-bool8 (*const gUnknown_083ECB7C[])(u8 a0) =
+bool8 (*const DecideReelTurns_BiasTag_Reel3_Bets[])(u8 biasTag) =
{
- sub_810341C,
- sub_810341C,
- sub_810347C
+ DecideReelTurns_BiasTag_Reel3_Bet1or2,
+ DecideReelTurns_BiasTag_Reel3_Bet1or2,
+ DecideReelTurns_BiasTag_Reel3_Bet3
};
-void (*const gUnknown_083ECB88[])(void) =
+void (*const DecideReelTurns_NoBiasTag_Reel2_Bets[])(void) =
{
- sub_8103564,
- j5_08111E84,
- sub_8103668
+ DecideReelTurns_NoBiasTag_Reel2_Bet1,
+ DecideReelTurns_NoBiasTag_Reel2_Bet2,
+ DecideReelTurns_NoBiasTag_Reel2_Bet3
};
-void (*const gUnknown_083ECB94[])(void) =
+void (*const DecideReelTurns_NoBiasTag_Reel3_Bets[])(void) =
{
- sub_8103830,
- sub_8103910,
- sub_8103A78
+ DecideReelTurns_NoBiasTag_Reel3_Bet1,
+ DecideReelTurns_NoBiasTag_Reel3_Bet2,
+ DecideReelTurns_NoBiasTag_Reel3_Bet3
};
void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId) =
@@ -572,57 +574,57 @@ void (*const gUnknown_083ECBB4[])(struct Task *task) =
sub_81041AC
};
-const u16 gUnknown_083ECBC4[][2] =
+const u16 pikaPowerTileTable[][2] =
{
{0x9e, 0x6e},
{0x9f, 0x6f},
{0xaf, 0x7f},
};
-void (*const gUnknown_083ECBD0[])(struct Task *task) =
-{
- sub_810437C,
- sub_81043EC,
- sub_8104468,
- sub_8104498,
- sub_8104548,
- sub_8104598,
- sub_81045CC,
- sub_810463C,
- sub_81046C0,
- sub_8104764,
- sub_8104794,
- sub_81047EC,
- sub_8104860,
- sub_81048A8,
- sub_81048CC,
- sub_8104940,
- sub_81049C8,
- sub_8104794,
- sub_81049F8
+void (*const ReeltimeActions[])(struct Task *task) =
+{
+ ReeltimeAction0,
+ ReeltimeAction1,
+ ReeltimeAction2,
+ ReeltimeAction3,
+ ReeltimeAction4,
+ ReeltimeAction5,
+ ReeltimeAction6,
+ ReelTimeAction_LandOnOutcome,
+ ReeltimeAction8,
+ ReeltimeAction9,
+ ReeltimeAction10,
+ ReeltimeAction11,
+ ReeltimeAction12,
+ ReeltimeAction13,
+ ReeltimeAction14,
+ ReeltimeAction15,
+ ReeltimeAction16,
+ ReeltimeAction10,
+ ReeltimeAction17
};
const u8 gUnknown_085A75C0[] = {1, 1, 2, 2};
const s16 gUnknown_085A75C4[] = {0x40, 0x30, 0x18, 0x08};
const s16 gUnknown_085A75CC[] = {10, 8, 6, 4};
-void (*const gUnknown_083ECC30[])(struct Task *task) =
-{
- sub_8104B3C,
- sub_8104B60,
- sub_8104B80,
- sub_8104B60,
- sub_812DD78,
- sub_8104B60,
- sub_8104BC8,
- sub_8104B60,
- sub_812DE14,
- sub_8104B60,
- sub_812DE30,
- sub_8104B60,
- sub_8104BFC,
- sub_8104B60,
- sub_8104C44,
+void (*const InfoBoxActions[])(struct Task *task) =
+{
+ InfoBox_FadeIn,
+ InfoBox_WaitForFade,
+ InfoBox_8104B80,
+ InfoBox_WaitForFade,
+ InfoBox_AddText,
+ InfoBox_WaitForFade,
+ InfoBox_AwaitPlayerInput,
+ InfoBox_WaitForFade,
+ InfoBox_812DE14,
+ InfoBox_WaitForFade,
+ InfoBox_812DE30,
+ InfoBox_WaitForFade,
+ InfoBox_8104BFC,
+ InfoBox_WaitForFade,
+ InfoBox_FreeTask,
};
void (*const gUnknown_083ECC54[])(struct Task *task) =
@@ -651,7 +653,7 @@ extern const struct SpriteTemplate gSpriteTemplate_83ED45C;
// code
#define tState data[0]
-/*static */void Task_FadeToSlotMachine(u8 taskId)
+static void Task_FadeToSlotMachine(u8 taskId)
{
switch (gTasks[taskId].tState)
{
@@ -669,19 +671,19 @@ extern const struct SpriteTemplate gSpriteTemplate_83ED45C;
}
}
-void PlaySlotMachine(u8 arg0, MainCallback cb)
+void PlaySlotMachine(u8 slotMachineIndex, MainCallback cb)
{
u8 taskId;
sSlotMachine = AllocZeroed(sizeof(*sSlotMachine));
- PlaySlotMachine_Internal(arg0, cb);
+ PlaySlotMachine_Internal(slotMachineIndex, cb);
taskId = CreateTask(Task_FadeToSlotMachine, 0);
gTasks[taskId].tState = 0;
}
#undef tState
-/*static */void CB2_SlotMachineSetup(void)
+static void CB2_SlotMachineSetup(void)
{
switch (gMain.state)
{
@@ -733,7 +735,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
break;
case 10:
SlotMachineSetup_10_0();
- SlotMachineSetup_10_1();
+ SlotMachineSetupGameplayTasks();
gMain.state++;
break;
case 11:
@@ -742,7 +744,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
}
}
-/*static */void CB2_SlotMachineLoop(void)
+static void CB2_SlotMachineLoop(void)
{
RunTasks();
AnimateSprites();
@@ -750,7 +752,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
UpdatePaletteFade();
}
-/*static */void SlotMachine_VBlankCallback(void)
+static void SlotMachine_VBlankCallback(void)
{
LoadOam();
ProcessSpriteCopyRequests();
@@ -761,25 +763,26 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
SetGpuReg(REG_OFFSET_WINOUT, sSlotMachine->winOut);
}
-/*static */void PlaySlotMachine_Internal(u8 arg0, MainCallback cb)
+static void PlaySlotMachine_Internal(u8 slotMachineIndex, MainCallback cb)
{
- struct Task *task = gTasks + CreateTask(SlotMachineDummyTask, 0xFF);
- task->data[0] = arg0;
+ struct Task *task = &gTasks[CreateTask(SlotMachineDummyTask, 0xFF)];
+ task->data[0] = slotMachineIndex;
StoreWordInTwoHalfwords(task->data + 1, (intptr_t)cb);
}
-/*static */void sub_81019EC(void)
+
+static void sub_81019EC(void)
{
- struct Task *task = gTasks + FindTaskIdByFunc(SlotMachineDummyTask);
- sSlotMachine->unk01 = task->data[0];
+ struct Task *task = &gTasks[FindTaskIdByFunc(SlotMachineDummyTask)];
+ sSlotMachine->machineId = task->data[0];
LoadWordFromTwoHalfwords((u16 *)(task->data + 1), (u32 *)&sSlotMachine->prevMainCb);
}
-/*static */void SlotMachineDummyTask(u8 taskId)
+static void SlotMachineDummyTask(u8 taskId)
{
}
-/*static */void SlotMachineSetup_0_0(void)
+static void SlotMachineSetup_0_0(void)
{
SetVBlankCallback(NULL);
SetHBlankCallback(NULL);
@@ -790,24 +793,24 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
DeactivateAllTextPrinters();
}
-/*static */void SlotMachineSetup_6_0(void)
+static void SlotMachineSetup_6_0(void)
{
SetVBlankCallback(SlotMachine_VBlankCallback);
EnableInterrupts(INTR_FLAG_VBLANK);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON);
}
-/*static */void SlotMachineSetup_1_0(void)
+static void SlotMachineSetup_1_0(void)
{
DmaClearLarge16(3, (u16 *)(BG_VRAM), BG_VRAM_SIZE, 0x1000);
}
-/*static */void SlotMachineSetup_2_0(void)
+static void SlotMachineSetup_2_0(void)
{
DmaClear16(3, (u16 *)OAM, OAM_SIZE);
}
-/*static */void SlotMachineSetup_2_1(void)
+static void SlotMachineSetup_2_1(void)
{
SetGpuReg(REG_OFFSET_BG0CNT, 0);
SetGpuReg(REG_OFFSET_BG1CNT, 0);
@@ -827,40 +830,42 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(9, 8));
}
-/*static */void SlotMachineSetup_0_1(void)
+// set up initial state of slot machine
+static void SlotMachineSetup_0_1(void)
{
u8 i;
- sub_81019EC();
+ sub_81019EC(); // assigns sSlotMachine->machineId, etc.
sSlotMachine->state = 0;
sSlotMachine->pikaPower = 0;
- sSlotMachine->unk03 = Random() & 1;
- sSlotMachine->unk04 = 0;
+ sSlotMachine->luckyGame = Random() & 1;
+ sSlotMachine->luckyFlags = 0;
sSlotMachine->matchedSymbols = 0;
- sSlotMachine->unk0A = 0;
- sSlotMachine->unk0B = 0;
+ sSlotMachine->fairRollsLeft = 0;
+ sSlotMachine->fairRollsUsed = 0;
sSlotMachine->coins = GetCoins();
sSlotMachine->payout = 0;
- sSlotMachine->unk10 = 0;
+ sSlotMachine->netCoinLoss = 0;
sSlotMachine->bet = 0;
- sSlotMachine->unk18 = 0;
- sSlotMachine->unk1A = 8;
+ sSlotMachine->currReel = 0;
+ sSlotMachine->reelIncrement = 8;
sSlotMachine->win0h = 0xf0;
sSlotMachine->win0v = 0xa0;
sSlotMachine->winIn = 0x3f;
sSlotMachine->winOut = 0x3f;
sSlotMachine->backupMapMusic = GetCurrentMapMusic();
- for (i = 0; i < 3; i++)
+
+ for (i = 0; i < NUM_REELS; i++)
{
- sSlotMachine->unk22[i] = 0;
- sSlotMachine->reelPositions[i] = gUnknown_083ECCF8[i][sSlotMachine->unk03] % 21;
- sSlotMachine->unk1C[i] = 0x1f8 - sSlotMachine->reelPositions[i] * 24;
- sSlotMachine->unk1C[i] %= 0x1f8;
+ sSlotMachine->reelPixelOffsetsWhileStopping[i] = 0;
+ sSlotMachine->reelTagOffsets[i] = gInitialReelPositions[i][sSlotMachine->luckyGame] % REEL_NUM_TAGS;
+ sSlotMachine->reelPixelOffsets[i] = REEL_NUM_TAGS * REEL_TAG_HEIGHT - sSlotMachine->reelTagOffsets[i] * REEL_TAG_HEIGHT;
+ sSlotMachine->reelPixelOffsets[i] %= REEL_NUM_TAGS * REEL_TAG_HEIGHT;
}
- sub_80EDE70(GetCoins());
+ AlertTVThatPlayerPlayedSlotMachine(GetCoins());
}
-/*static */void SlotMachineSetup_3_0(void)
+static void SlotMachineSetup_3_0(void)
{
ResetPaletteFade();
ResetSpriteData();
@@ -869,22 +874,23 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
ResetTasks();
}
-/*static */void SlotMachineSetup_4_0(void)
+static void SlotMachineSetup_4_0(void)
{
- gUnknown_0203AACC = Alloc(8);
- gUnknown_0203AAD0 = AllocZeroed(0xE);
- gUnknown_0203AADC = AllocZeroed(8);
+ sSelectedPikaPowerTile = Alloc(8);
+ sUnknown_0203AAD0 = AllocZeroed(0xE);
+ sUnknown_0203AADC = AllocZeroed(8);
- gUnknown_0203AAD0[0] = 0x2051;
- gUnknown_0203AAD0[1] = 0x2851;
- gUnknown_0203AAD0[2] = 0x2061;
- gUnknown_0203AAD0[3] = 0x2861;
- gUnknown_0203AAD0[4] = 0x20BE;
- gUnknown_0203AAD0[5] = 0x28BE;
- gUnknown_0203AAD0[6] = 0x20BF;
+ // several of these are 1 bit off from each other
+ sUnknown_0203AAD0[0] = 0x2051;
+ sUnknown_0203AAD0[1] = 0x2851;
+ sUnknown_0203AAD0[2] = 0x2061;
+ sUnknown_0203AAD0[3] = 0x2861;
+ sUnknown_0203AAD0[4] = 0x20BE;
+ sUnknown_0203AAD0[5] = 0x28BE;
+ sUnknown_0203AAD0[6] = 0x20BF;
}
-/*static */void SlotMachineSetup_5_0(void)
+static void SlotMachineSetup_5_0(void)
{
sub_8106448();
sub_81064B8();
@@ -894,7 +900,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
PutWindowTilemap(0);
}
-/*static */void SlotMachineSetup_10_0(void)
+static void SlotMachineSetup_10_0(void)
{
sub_8104EA8();
sub_8104F8C();
@@ -902,26 +908,28 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
sub_81050C4();
}
-/*static */void SlotMachineSetup_10_1(void)
+// create gameplay tasks
+static void SlotMachineSetupGameplayTasks(void)
{
- sub_8104048();
- sub_8102DA8();
+ GameplayTask_PikaPower();
+ GameplayTask_StopSlotReel();
sub_8104C5C();
- sub_8101D04();
+ GameplayTasks_Slots();
}
-/*static */void sub_8101D04(void)
+static void GameplayTasks_Slots(void)
{
- sub_8101D24(CreateTask(sub_8101D24, 0));
+ RunSlotActions(CreateTask(RunSlotActions, 0));
}
-/*static */void sub_8101D24(u8 taskId)
+// task->data[0] is a timer
+static void RunSlotActions(u8 taskId)
{
- while (gUnknown_083ECAAC[sSlotMachine->state](gTasks + taskId))
+ while (SlotActions[sSlotMachine->state](&gTasks[taskId]))
;
}
-/*static */bool8 sub_8101D5C(struct Task *task)
+static bool8 SlotAction_UnfadeScreen(struct Task *task)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
sub_810423C(sSlotMachine->pikaPower);
@@ -929,25 +937,25 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_8101D8C(struct Task *task)
+static bool8 SlotAction_WaitForUnfade(struct Task *task)
{
if (!gPaletteFade.active)
sSlotMachine->state++;
return FALSE;
}
-/*static */bool8 sub_8101DB0(struct Task *task)
+static bool8 SlotAction_SetSlotMachineVars(struct Task *task)
{
sSlotMachine->payout = 0;
sSlotMachine->bet = 0;
- sSlotMachine->unk18 = 0;
- sSlotMachine->unk04 &= 0xc0;
+ sSlotMachine->currReel = 0;
+ sSlotMachine->luckyFlags &= (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777);
sSlotMachine->state = 4;
if (sSlotMachine->coins <= 0)
{
sSlotMachine->state = 25;
}
- else if (sSlotMachine->unk0A)
+ else if (sSlotMachine->fairRollsLeft)
{
sSlotMachine->state = 3;
sub_8104CAC(4);
@@ -955,14 +963,14 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return TRUE;
}
-/*static */bool8 sub_8101DF4(struct Task *task)
+static bool8 SlotAction3(struct Task *task)
{
if (sub_8104E18())
sSlotMachine->state = 4;
return FALSE;
}
-/*static */bool8 sub_8101E10(struct Task *task)
+static bool8 SlotAction4(struct Task *task)
{
sub_8104CAC(0);
sSlotMachine->state = 5;
@@ -971,27 +979,27 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return TRUE;
}
-/*static */bool8 sub_8101E3C(struct Task *task)
+static bool8 SlotAction_AwaitPlayerInput(struct Task *task)
{
s16 i;
if (gMain.newKeys & SELECT_BUTTON)
{
- sub_8104AB8(0);
+ OpenInfoBox(0);
sSlotMachine->state = 8;
}
- else if (gMain.newKeys & R_BUTTON)
+ else if (gMain.newKeys & R_BUTTON) // bet the max amount
{
if (sSlotMachine->coins - (3 - sSlotMachine->bet) >= 0)
{
for (i = sSlotMachine->bet; i < 3; i++)
- sub_8103D50(i);
+ LoadBetTiles(i);
sSlotMachine->coins -= (3 - sSlotMachine->bet);
sSlotMachine->bet = 3;
sSlotMachine->state = 9;
PlaySE(SE_REGI);
}
- else
+ else // you didn't have enough coins to bet the max
{
sSlotMachine->state = 6;
}
@@ -1001,19 +1009,21 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
if (gMain.newKeys & DPAD_DOWN && sSlotMachine->coins != 0)
{
PlaySE(SE_REGI);
- sub_8103D50(sSlotMachine->bet);
+ LoadBetTiles(sSlotMachine->bet);
sSlotMachine->coins--;
sSlotMachine->bet++;
}
+ // player maxed out or finished betting
if (sSlotMachine->bet >= 3 || (sSlotMachine->bet != 0 && gMain.newKeys & A_BUTTON))
sSlotMachine->state = 9;
+ // player wants to quit
if (gMain.newKeys & B_BUTTON)
sSlotMachine->state = 21;
}
return FALSE;
}
-/*static */bool8 sub_8101F44(struct Task *task)
+static bool8 SlotAction_PrintYouDontHaveThreeCoins(struct Task *task)
{
DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_YouDontHaveThreeCoins, 0, 1, 0, 0);
@@ -1022,7 +1032,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_8101F60(struct Task *task)
+static bool8 SlotAction_ExitYouDontHaveThreeCoinsMessage(struct Task *task)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
@@ -1032,25 +1042,30 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_8101F88(struct Task *task)
+static bool8 SlotAction_GivingInformation(struct Task *task)
{
- if (sub_8104AEC())
+ if (IsInfoBoxClosed())
sSlotMachine->state = 5;
return FALSE;
}
-/*static */bool8 sub_8101FA4(struct Task *task)
+// probably make all the slots roll
+static bool8 SlotAction9(struct Task *task)
{
- sub_8102484();
+ DrawLuckyFlags();
sub_8104DA4();
- sub_8102DEC(0);
- sub_8102DEC(1);
- sub_8102DEC(2);
- sub_80EEC80();
+
+ // for each reel...
+ ReelTasks_SetUnkTaskData(0);
+ ReelTasks_SetUnkTaskData(1);
+ ReelTasks_SetUnkTaskData(2);
+
+ sub_80EEC80(); // something with daily slot variable
+
task->data[0] = 0;
- if (sSlotMachine->unk04 & 0x20)
+ if (sSlotMachine->luckyFlags & LUCKY_BIAS_REELTIME)
{
- sub_810430C();
+ BeginReeltime();
sSlotMachine->state = 10;
}
else
@@ -1058,52 +1073,52 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
sub_8104CAC(1);
sSlotMachine->state = 11;
}
- sSlotMachine->unk1A = 8;
- if (sSlotMachine->unk0A)
- sSlotMachine->unk1A = dp15_jump_random_unknown();
+ sSlotMachine->reelIncrement = 8;
+ if (sSlotMachine->fairRollsLeft)
+ sSlotMachine->reelIncrement = SlowReelSpeed();
return FALSE;
}
-/*static */bool8 sub_8102008(struct Task *task)
+static bool8 SlotAction10(struct Task *task)
{
- if (sub_810432C())
+ if (IsFinalTask_RunReelTimeActions())
{
sub_8104CAC(1);
- sSlotMachine->unk04 &= 0xDF;
+ sSlotMachine->luckyFlags &= ~LUCKY_BIAS_REELTIME;
sSlotMachine->state = 11;
}
return FALSE;
}
-/*static */bool8 sub_8102034(struct Task *task)
+static bool8 SlotAction_SetLuckySpins(struct Task *task)
{
if (++task->data[0] >= 30)
{
- sub_81024F0();
+ SetLuckySpins();
sSlotMachine->state = 12;
}
return FALSE;
}
-/*static */bool8 sub_8102058(struct Task *task)
+static bool8 SlotAction_AwaitReelStop(struct Task *task)
{
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_JYUNI);
- sub_8102E1C(sSlotMachine->unk18);
- sub_8103C14(sSlotMachine->unk18);
+ sub_8102E1C(sSlotMachine->currReel);
+ sub_8103C14(sSlotMachine->currReel);
sSlotMachine->state = 13;
}
return FALSE;
}
-/*static */bool8 sub_8102090(struct Task *task)
+static bool8 SlotAction_WaitForAllReelsToStop(struct Task *task)
{
- if (!sub_8102E40(sSlotMachine->unk18))
+ if (!IsSlotReelMoving(sSlotMachine->currReel))
{
- sSlotMachine->unk18++;
+ sSlotMachine->currReel++;
sSlotMachine->state = 12;
- if (sSlotMachine->unk18 > 2)
+ if (sSlotMachine->currReel > 2)
{
sSlotMachine->state = 14;
}
@@ -1112,24 +1127,25 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_81020C8(struct Task *task)
+// once all reels have stopped
+static bool8 SlotAction_CheckMatches(struct Task *task)
{
- sSlotMachine->unk04 &= 0xc0;
+ sSlotMachine->luckyFlags &= (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777);
CheckMatch();
- if (sSlotMachine->unk0A)
+ if (sSlotMachine->fairRollsLeft)
{
- sSlotMachine->unk0A--;
- sSlotMachine->unk0B++;
+ sSlotMachine->fairRollsLeft--;
+ sSlotMachine->fairRollsUsed++;
}
if (sSlotMachine->matchedSymbols)
{
sSlotMachine->state = 15;
- sub_8102A24();
+ AwardPayout();
sub_8103F70();
- if ((sSlotMachine->unk10 -= sSlotMachine->payout) < 0)
+ if ((sSlotMachine->netCoinLoss -= sSlotMachine->payout) < 0)
{
- sSlotMachine->unk10 = 0;
+ sSlotMachine->netCoinLoss = 0;
}
if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
{
@@ -1146,42 +1162,44 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
PlayFanfare(MUS_ME_B_SMALL);
sub_8104CAC(2);
}
+ // if you matched 777...
if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_MIXED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
{
- sSlotMachine->unk04 &= 0x3f;
+ sSlotMachine->luckyFlags &= ~(LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777);
if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
{
- sSlotMachine->unk0A = 0;
- sSlotMachine->unk0B = 0;
- sSlotMachine->unk03 = 0;
+ sSlotMachine->fairRollsLeft = 0;
+ sSlotMachine->fairRollsUsed = 0;
+ sSlotMachine->luckyGame = FALSE;
if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_BLUE))
- sSlotMachine->unk03 = 1;
+ // this may be an error, but if you get blue 777, the game becomes lucky
+ sSlotMachine->luckyGame = TRUE;
}
}
if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER) && sSlotMachine->pikaPower < 16)
{
sSlotMachine->pikaPower++;
- sub_8104064(sSlotMachine->pikaPower);
+ DisplayPikaPower(sSlotMachine->pikaPower);
}
}
else
{
sub_8104CAC(3);
sSlotMachine->state = 20;
- if ((sSlotMachine->unk10 += sSlotMachine->bet) > 9999)
- sSlotMachine->unk10 = 9999;
+ if ((sSlotMachine->netCoinLoss += sSlotMachine->bet) > 9999)
+ sSlotMachine->netCoinLoss = 9999;
}
return FALSE;
}
-/*static */bool8 sub_81021E0(struct Task *task)
+static bool8 SlotAction_WaitForPayoutToBeAwarded(struct Task *task)
{
- if (sub_8102A44())
+ if (IsFinalTask_RunAwardPayoutActions())
sSlotMachine->state = 16;
return FALSE;
}
-/*static */bool8 sub_81021FC(struct Task *task)
+static bool8 SlotAction_EndOfRoll(struct Task *task)
{
if (sub_8103FA0())
{
@@ -1190,12 +1208,12 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
IncrementGameStat(GAME_STAT_SLOT_JACKPOTS);
if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
{
- sSlotMachine->unk18 = 0;
+ sSlotMachine->currReel = 0;
sSlotMachine->state = 9;
}
if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER))
sSlotMachine->state = 17;
- if (sSlotMachine->unk0A && sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ if (sSlotMachine->fairRollsLeft && sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
{
sub_8104CAC(4);
sSlotMachine->state = 18;
@@ -1204,7 +1222,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_8102264(struct Task *task)
+static bool8 SlotAction_MatchedPower(struct Task *task)
{
if (!sub_81040C8())
{
@@ -1212,7 +1230,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
{
sSlotMachine->state = 9;
- if (sSlotMachine->unk0A)
+ if (sSlotMachine->fairRollsLeft)
{
sub_8104CAC(4);
sSlotMachine->state = 18;
@@ -1222,7 +1240,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_81022A0(struct Task *task)
+static bool8 SlotAction18(struct Task *task)
{
if (sub_8104E18())
{
@@ -1235,7 +1253,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_81022CC(struct Task *task)
+static bool8 SlotAction_Loop(struct Task *task)
{
sub_8103D8C(0);
sub_8103D8C(1);
@@ -1244,7 +1262,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_81022F0(struct Task *task)
+static bool8 SlotAction_NoMatches(struct Task *task)
{
if (++task->data[1] > 64)
{
@@ -1254,7 +1272,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_8102318(struct Task *task)
+static bool8 SlotAction_PrintQuitTheGame(struct Task *task)
{
DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_QuitTheGame, 0, 1, 0, 0);
@@ -1264,10 +1282,10 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_8102344(struct Task *task)
+static bool8 SlotAction_SeeIfPlayerQuits(struct Task *task)
{
s8 input = Menu_ProcessInputNoWrapClearOnChoose();
- if (input == 0)
+ if (input == 0) // player chooses to quit
{
ClearDialogWindowAndFrame(0, TRUE);
sub_8103D8C(0);
@@ -1276,7 +1294,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
sSlotMachine->coins += sSlotMachine->bet;
sSlotMachine->state = 27;
}
- else if (input == 1 || input == -1)
+ else if (input == 1 || input == -1) // player chooses not to quit
{
ClearDialogWindowAndFrame(0, TRUE);
sSlotMachine->state = 5;
@@ -1284,7 +1302,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_810239C(struct Task *task)
+static bool8 SlotAction_PrintMessage_9999Coins(struct Task *task)
{
DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_YouveGot9999Coins, 0, 1, 0, 0);
@@ -1293,7 +1311,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_81023B8(struct Task *task)
+static bool8 SlotAction_ExitMessage_9999Coins(struct Task *task)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
@@ -1303,7 +1321,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_81023E0_(struct Task *task)
+static bool8 SlotAction_PrintMessage_NoMoreCoins(struct Task *task)
{
DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_YouveRunOutOfCoins, 0, 1, 0, 0);
@@ -1312,7 +1330,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_81023FC(struct Task *task)
+static bool8 SlotAction_ExitMessage_NoMoreCoins(struct Task *task)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
@@ -1322,214 +1340,219 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_8102424(struct Task *task)
+static bool8 SlotAction_EndGame(struct Task *task)
{
SetCoins(sSlotMachine->coins);
- sub_80EDD78(GetCoins());
+ AlertTVOfNewCoinTotal(GetCoins());
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
sSlotMachine->state++;
return FALSE;
}
-/*static */bool8 sub_8102460(struct Task *task)
+static bool8 SlotAction_FreeDataStructures(struct Task *task)
{
if (!gPaletteFade.active)
{
SetMainCallback2(sSlotMachine->prevMainCb);
- FREE_AND_SET_NULL(gUnknown_0203AAF4);
- FREE_AND_SET_NULL(gUnknown_0203AAF8);
- FREE_AND_SET_NULL(gUnknown_0203AAFC);
- FREE_AND_SET_NULL(gUnknown_0203AB00);
- FREE_AND_SET_NULL(gUnknown_0203AB04);
- FREE_AND_SET_NULL(gUnknown_0203AB08);
- FREE_AND_SET_NULL(gUnknown_0203AB0C);
- FREE_AND_SET_NULL(gUnknown_0203AB10);
- FREE_AND_SET_NULL(gUnknown_0203AB14);
- FREE_AND_SET_NULL(gUnknown_0203AB18);
- FREE_AND_SET_NULL(gUnknown_0203AB1C);
- FREE_AND_SET_NULL(gUnknown_0203AB20);
- FREE_AND_SET_NULL(gUnknown_0203AB24);
- FREE_AND_SET_NULL(gUnknown_0203AB28);
- if (gUnknown_0203AAE4 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAE4);
- if (gUnknown_0203AAE8 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAE8);
- if (gUnknown_0203AAEC != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAEC);
- if (gUnknown_0203AAF0 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAF0);
- FREE_AND_SET_NULL(gUnknown_0203AAC8);
- FREE_AND_SET_NULL(gUnknown_0203AACC);
- FREE_AND_SET_NULL(gUnknown_0203AAD0);
- FREE_AND_SET_NULL(gUnknown_0203AAD4);
- FREE_AND_SET_NULL(gUnknown_0203AAD8);
- FREE_AND_SET_NULL(gUnknown_0203AADC);
- FREE_AND_SET_NULL(gUnknown_0203AAE0);
- FREE_AND_SET_NULL(gUnknown_0203AB2C);
- FREE_AND_SET_NULL(gUnknown_0203AB30);
+ FREE_AND_SET_NULL(sUnknown_0203AAF4);
+ FREE_AND_SET_NULL(sUnknown_0203AAF8);
+ FREE_AND_SET_NULL(sUnknown_0203AAFC);
+ FREE_AND_SET_NULL(sUnknown_0203AB00);
+ FREE_AND_SET_NULL(sUnknown_0203AB04);
+ FREE_AND_SET_NULL(sUnknown_0203AB08);
+ FREE_AND_SET_NULL(sUnknown_0203AB0C);
+ FREE_AND_SET_NULL(sUnknown_0203AB10);
+ FREE_AND_SET_NULL(sUnknown_0203AB14);
+ FREE_AND_SET_NULL(sUnknown_0203AB18);
+ FREE_AND_SET_NULL(sUnknown_0203AB1C);
+ FREE_AND_SET_NULL(sUnknown_0203AB20);
+ FREE_AND_SET_NULL(sUnknown_0203AB24);
+ FREE_AND_SET_NULL(sUnknown_0203AB28);
+ if (sUnknown_0203AAE4 != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAE4);
+ if (sUnknown_0203AAE8 != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAE8);
+ if (sUnknown_0203AAEC != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAEC);
+ if (sUnknown_0203AAF0 != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAF0);
+ FREE_AND_SET_NULL(sUnknown_0203AAC8);
+ FREE_AND_SET_NULL(sSelectedPikaPowerTile);
+ FREE_AND_SET_NULL(sUnknown_0203AAD0);
+ FREE_AND_SET_NULL(sUnknown_0203AAD4);
+ FREE_AND_SET_NULL(sUnknown_0203AAD8);
+ FREE_AND_SET_NULL(sUnknown_0203AADC);
+ FREE_AND_SET_NULL(sUnknown_0203AAE0);
+ FREE_AND_SET_NULL(sUnknown_0203AB2C);
+ FREE_AND_SET_NULL(sUnknown_0203AB30);
FREE_AND_SET_NULL(sSlotMachine);
}
return FALSE;
}
-/*static */void sub_8102484(void)
+static void DrawLuckyFlags(void)
{
- u8 r3;
+ u8 attempts;
- if (sSlotMachine->unk0A == 0)
+ if (sSlotMachine->fairRollsLeft == 0)
{
- if (!(sSlotMachine->unk04 & 0xc0))
+ if (!(sSlotMachine->luckyFlags & (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777)))
{
- if (sub_8102540_())
+ if (IsThisRoundLucky())
{
- r3 = sub_8102578();
- if (r3 != 3)
+ attempts = AttemptsAtLuckyFlags_Top3();
+ if (attempts != 3) // if you found a lucky number
{
- sSlotMachine->unk04 |= gUnknown_083ECE42[r3];
- if (r3 != 1)
+ // attempts == 1: reelTime flag set
+ sSlotMachine->luckyFlags |= gLuckyFlagSettings_Top3[attempts];
+ if (attempts != 1)
{
return;
}
}
}
- r3 = sub_81025BC();
- if (r3 != 5)
+ // if it's not a lucky round or you got reel time, roll for the lower lucky flags
+ attempts = AttemptsAtLuckyFlags_NotTop3();
+ if (attempts != 5) // if you found a lucky number
{
- sSlotMachine->unk04 |= gUnknown_083ECE48[r3];
+ sSlotMachine->luckyFlags |= gLuckyFlagSettings_NotTop3[attempts];
}
}
}
}
-/*static */void sub_81024F0(void)
+static void SetLuckySpins(void)
{
- sSlotMachine->unk06 = 0;
- if (sSlotMachine->unk04)
- sSlotMachine->unk06 = 1;
+ sSlotMachine->luckySpinsLeft = 0;
+ if (sSlotMachine->luckyFlags)
+ sSlotMachine->luckySpinsLeft = 1;
}
-/*static */u8 sub_810250C(u8 a0)
+static u8 GetBiasTag(u8 luckyFlags)
{
u8 i;
for (i = 0; i < 8; i++)
{
- if (a0 & 1)
- return gUnknown_083ECE3A[i];
- a0 >>= 1;
+ if (luckyFlags & 1)
+ return gBiasTags[i];
+ luckyFlags >>= 1;
}
return 0;
}
-/*static */bool8 sub_8102540_(void)
+// you have way more luck betting 3 coins than anything lower
+static bool8 IsThisRoundLucky(void)
{
u8 rval = Random();
- if (gUnknown_083ECD04[sSlotMachine->unk01][sSlotMachine->bet - 1] > rval)
+ if (gLuckyRoundProbabilities[sSlotMachine->machineId][sSlotMachine->bet - 1] > rval)
return TRUE;
return FALSE;
}
-/*static */u8 sub_8102578(void)
+static u8 AttemptsAtLuckyFlags_Top3(void)
{
- s16 i;
+ s16 count;
- for (i = 0; i < 3; i++)
+ for (count = 0; count < 3; count++)
{
s16 rval = Random() & 0xff;
- s16 value = gUnknown_083ECD16[i][sSlotMachine->unk01];
+ s16 value = gLuckyFlagProbabilities_Top3[count][sSlotMachine->machineId];
if (value > rval)
break;
}
- return i;
+ return count;
}
-/*static */u8 sub_81025BC(void)
+static u8 AttemptsAtLuckyFlags_NotTop3(void)
{
- s16 i;
+ s16 count;
- for (i = 0; i < 5; i++)
+ for (count = 0; count < 5; count++)
{
- s16 rval = Random() & 0xff;
- s16 r3 = gUnknown_083ECD28[i][sSlotMachine->unk01];
- if (i == 0 && sSlotMachine->unk03 == 1)
+ s16 rval = Random() & 0xff; // random byte
+ s16 value = gLuckyFlagProbabilities_NotTop3[count][sSlotMachine->machineId];
+ // make first attempt easier if it's a lucky game
+ if (count == 0 && sSlotMachine->luckyGame == TRUE)
{
- r3 += 10;
- if (r3 > 0x100)
- r3 = 0x100;
+ value += 10;
+ if (value > 0x100)
+ value = 0x100;
}
- else if (i == 4 && sSlotMachine->unk03 == 1)
+ // make last attempt harder if it's a lucky game
+ else if (count == 4 && sSlotMachine->luckyGame == TRUE)
{
- r3 -= 10;
- if (r3 < 0)
- r3 = 0;
+ value -= 10;
+ if (value < 0)
+ value = 0;
}
- if (r3 > rval)
+ if (value > rval)
break;
}
- return i;
+ return count;
}
-/*static */u8 sub_810264C(u8 a0)
+static u8 GetReelTimeProbability(u8 reelTimeDraw)
{
- if (sSlotMachine->unk03 == 0)
- return gUnknown_083ECD46[a0][sSlotMachine->pikaPower];
+ if (sSlotMachine->luckyGame == FALSE)
+ return gReeltimeProbabilities_UnluckyGame[reelTimeDraw][sSlotMachine->pikaPower];
else
- return gUnknown_083ECDAC[a0][sSlotMachine->pikaPower];
+ return gReelTimeProbabilities_LuckyGame[reelTimeDraw][sSlotMachine->pikaPower];
}
-/*static */void sub_8102680(void)
+static void GetReeltimeDraw(void)
{
u8 rval;
- s16 i;
+ s16 reelTimeDraw;
- sSlotMachine->unk05 = 0;
+ sSlotMachine->reelTimeDraw = 0;
rval = Random();
- if (rval < sub_810264C(0))
+ if (rval < GetReelTimeProbability(0))
return;
- for (i = 5; i > 0; i--)
+ for (reelTimeDraw = 5; reelTimeDraw > 0; reelTimeDraw--)
{
rval = Random();
- if (rval < sub_810264C(i))
+ if (rval < GetReelTimeProbability(reelTimeDraw))
break;
}
- sSlotMachine->unk05 = i;
+ sSlotMachine->reelTimeDraw = reelTimeDraw;
}
-/*static */bool8 sub_81026DC(u16 a0)
+static bool8 SkipToReeltimeAction14(u16 i)
{
u16 rval = Random() & 0xff;
- if (rval < gUnknown_083ECE12[a0])
+ if (rval < gProbabilityTable_SkipToReeltimeAction14[i])
return TRUE;
else
return FALSE;
}
-/*static */u16 dp15_jump_random_unknown(void)
+static u16 SlowReelSpeed(void)
{
- u8 r4 = 0;
+ u8 i = 0;
u8 rval;
u8 value;
- if (sSlotMachine->unk10 >= 300)
- r4 = 4;
- else if (sSlotMachine->unk10 >= 250)
- r4 = 3;
- else if (sSlotMachine->unk10 >= 200)
- r4 = 2;
- else if (sSlotMachine->unk10 >= 150)
- r4 = 1;
+ if (sSlotMachine->netCoinLoss >= 300)
+ i = 4;
+ else if (sSlotMachine->netCoinLoss >= 250)
+ i = 3;
+ else if (sSlotMachine->netCoinLoss >= 200)
+ i = 2;
+ else if (sSlotMachine->netCoinLoss >= 150)
+ i = 1;
rval = Random() % 100;
- value = gUnknown_083ECE1C[r4][0];
+ value = gReelIncrementTable[i][0];
if (rval < value)
return 4;
rval = Random() % 100;
- value = gUnknown_083ECE1C[r4][1] + gUnknown_083ECE30[sSlotMachine->unk0B];
+ value = gReelIncrementTable[i][1] + gReelTimeBonusIncrementTable[sSlotMachine->fairRollsUsed];
if (rval < value)
return 2;
return 8;
}
-/*static */void CheckMatch(void)
+static void CheckMatch(void)
{
sSlotMachine->matchedSymbols = 0;
CheckMatch_CenterRow();
@@ -1539,88 +1562,88 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
CheckMatch_Diagonals();
}
-/*static */void CheckMatch_CenterRow(void)
+static void CheckMatch_CenterRow(void)
{
u8 c1, c2, c3, match;
- c1 = GetTagOfReelSymbolOnScreenAtPos(0, 2);
- c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
- c3 = GetTagOfReelSymbolOnScreenAtPos(2, 2);
+ c1 = GetNearbyTag_Quantized(0, 2);
+ c2 = GetNearbyTag_Quantized(1, 2);
+ c3 = GetNearbyTag_Quantized(2, 2);
match = GetMatchFromSymbolsInRow(c1, c2, c3);
if (match != SLOT_MACHINE_MATCHED_NONE)
{
- sSlotMachine->payout += sSlotPayouts[match];
- sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += gSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
sub_8103E04(0);
}
}
-/*static */void CheckMatch_TopAndBottom(void)
+static void CheckMatch_TopAndBottom(void)
{
u8 c1, c2, c3, match;
- c1 = GetTagOfReelSymbolOnScreenAtPos(0, 1);
- c2 = GetTagOfReelSymbolOnScreenAtPos(1, 1);
- c3 = GetTagOfReelSymbolOnScreenAtPos(2, 1);
+ c1 = GetNearbyTag_Quantized(0, 1);
+ c2 = GetNearbyTag_Quantized(1, 1);
+ c3 = GetNearbyTag_Quantized(2, 1);
match = GetMatchFromSymbolsInRow(c1, c2, c3);
if (match != SLOT_MACHINE_MATCHED_NONE)
{
if (match == SLOT_MACHINE_MATCHED_1CHERRY)
match = SLOT_MACHINE_MATCHED_2CHERRY;
- sSlotMachine->payout += sSlotPayouts[match];
- sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += gSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
sub_8103E04(1);
}
- c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3);
- c2 = GetTagOfReelSymbolOnScreenAtPos(1, 3);
- c3 = GetTagOfReelSymbolOnScreenAtPos(2, 3);
+ c1 = GetNearbyTag_Quantized(0, 3);
+ c2 = GetNearbyTag_Quantized(1, 3);
+ c3 = GetNearbyTag_Quantized(2, 3);
match = GetMatchFromSymbolsInRow(c1, c2, c3);
if (match != SLOT_MACHINE_MATCHED_NONE)
{
if (match == SLOT_MACHINE_MATCHED_1CHERRY)
match = SLOT_MACHINE_MATCHED_2CHERRY;
- sSlotMachine->payout += sSlotPayouts[match];
- sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += gSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
sub_8103E04(2);
}
}
-/*static */void CheckMatch_Diagonals(void)
+static void CheckMatch_Diagonals(void)
{
u8 c1, c2, c3, match;
- c1 = GetTagOfReelSymbolOnScreenAtPos(0, 1);
- c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
- c3 = GetTagOfReelSymbolOnScreenAtPos(2, 3);
+ c1 = GetNearbyTag_Quantized(0, 1);
+ c2 = GetNearbyTag_Quantized(1, 2);
+ c3 = GetNearbyTag_Quantized(2, 3);
match = GetMatchFromSymbolsInRow(c1, c2, c3);
if (match != SLOT_MACHINE_MATCHED_NONE)
{
if (match != SLOT_MACHINE_MATCHED_1CHERRY)
{
- sSlotMachine->payout += sSlotPayouts[match];
- sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += gSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
}
sub_8103E04(3);
}
- c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3);
- c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
- c3 = GetTagOfReelSymbolOnScreenAtPos(2, 1);
+ c1 = GetNearbyTag_Quantized(0, 3);
+ c2 = GetNearbyTag_Quantized(1, 2);
+ c3 = GetNearbyTag_Quantized(2, 1);
match = GetMatchFromSymbolsInRow(c1, c2, c3);
if (match != SLOT_MACHINE_MATCHED_NONE)
{
if (match != SLOT_MACHINE_MATCHED_1CHERRY)
{
- sSlotMachine->payout += sSlotPayouts[match];
- sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += gSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
}
sub_8103E04(4);
}
}
-/*static */u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3)
+static u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3)
{
if (c1 == c2 && c1 == c3)
- return sSym2Match[c1];
+ return gSym2Match[c1];
if (c1 == SLOT_MACHINE_TAG_7_RED && c2 == SLOT_MACHINE_TAG_7_RED && c3 == SLOT_MACHINE_TAG_7_BLUE)
return SLOT_MACHINE_MATCHED_777_MIXED;
if (c1 == SLOT_MACHINE_TAG_7_BLUE && c2 == SLOT_MACHINE_TAG_7_BLUE && c3 == SLOT_MACHINE_TAG_7_RED)
@@ -1630,26 +1653,26 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return SLOT_MACHINE_MATCHED_NONE;
}
-/*static */void sub_8102A24(void)
+static void AwardPayout(void)
{
- sub_8102A64(CreateTask(sub_8102A64, 4));
+ RunAwardPayoutActions(CreateTask(RunAwardPayoutActions, 4));
}
-/*static */bool8 sub_8102A44(void)
+static bool8 IsFinalTask_RunAwardPayoutActions(void)
{
- if (FindTaskIdByFunc(sub_8102A64) == 0xFF)
+ if (FindTaskIdByFunc(RunAwardPayoutActions) == TAIL_SENTINEL)
return TRUE;
else
return FALSE;
}
-/*static */void sub_8102A64(u8 taskId)
+static void RunAwardPayoutActions(u8 taskId)
{
- while (gUnknown_083ECB20[gTasks[taskId].data[0]](gTasks + taskId))
+ while (AwardPayoutActions[gTasks[taskId].data[0]](&gTasks[taskId]))
;
}
-/*static */bool8 sub_8102A9C(struct Task *task)
+static bool8 AwardPayoutAction0(struct Task *task)
{
if (sub_8103E38())
{
@@ -1662,8 +1685,8 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
}
return FALSE;
}
-
-/*static */bool8 sub_8102AD0(struct Task *task)
+// task->data[1]: timer
+static bool8 AwardPayoutAction_GivePayoutToPlayer(struct Task *task)
{
if (!task->data[1]--)
{
@@ -1689,165 +1712,175 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_8102B80(struct Task *task)
+static bool8 AwardPayoutAction_FreeTask(struct Task *task)
{
if (sub_8103E7C())
- DestroyTask(FindTaskIdByFunc(sub_8102A64));
+ DestroyTask(FindTaskIdByFunc(RunAwardPayoutActions));
return FALSE;
}
-/*static */u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y)
+
+// Returns the tag that is posOffset below the tag at the top of reelIndex's tape
+static u8 GetNearbyTag_Quantized(u8 reelIndex, s16 posOffset)
{
- s16 offset = (sSlotMachine->reelPositions[x] + y) % 21;
- if (offset < 0)
- offset += 21;
- return sReelSymbols[x][offset];
+ s16 tagIndex = (sSlotMachine->reelTagOffsets[reelIndex] + posOffset) % REEL_NUM_TAGS;
+ if (tagIndex < 0)
+ tagIndex += REEL_NUM_TAGS;
+ return gReelSymbols[reelIndex][tagIndex];
}
-/*static */u8 GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(u8 x, s16 y)
+
+// Calculates GetNearbyTag_Quantized as if the reel was snapped downwards into place
+static u8 GetNearbyTag(u8 reelIndex, s16 posOffset)
{
- s16 r6 = 0;
- s16 result = sSlotMachine->unk1C[x] % 24;
+ s16 tagOffset = 0;
+ s16 result = sSlotMachine->reelPixelOffsets[reelIndex] % 24;
if (result != 0)
- r6 = -1;
- return GetTagOfReelSymbolOnScreenAtPos(x, y + r6);
+ tagOffset = -1;
+ return GetNearbyTag_Quantized(reelIndex, posOffset + tagOffset);
}
-/*static */u8 sub_8102C48(s16 a0)
+static u8 GetNearbyReelTimeTag(s16 n)
{
- s16 r1 = (sSlotMachine->unk16 + a0) % 6;
- if (r1 < 0)
- r1 += 6;
- return gUnknown_083ECCF1[r1];
+ s16 newPosition = (sSlotMachine->reeltimePosition + n) % 6;
+ if (newPosition < 0)
+ newPosition += 6;
+ return gReelTimeTags[newPosition];
}
-/*static */void sub_8102C84(u8 a0, s16 a1)
+static void AdvanceSlotReel(u8 reelIndex, s16 value)
{
- sSlotMachine->unk1C[a0] += a1;
- sSlotMachine->unk1C[a0] %= 504;
- sSlotMachine->reelPositions[a0] = 21 - sSlotMachine->unk1C[a0] / 24;
+ sSlotMachine->reelPixelOffsets[reelIndex] += value;
+ sSlotMachine->reelPixelOffsets[reelIndex] %= 504;
+ sSlotMachine->reelTagOffsets[reelIndex] = REEL_NUM_TAGS - sSlotMachine->reelPixelOffsets[reelIndex] / 24;
}
-s16 sub_8102CCC(u8 a0, s16 a1)
+s16 AdvanceSlotReelToNextTag(u8 reelIndex, s16 value)
{
- s16 r1 = sSlotMachine->unk1C[a0] % 24;
- if (r1 != 0)
+ s16 offset = sSlotMachine->reelPixelOffsets[reelIndex] % 24;
+ if (offset != 0)
{
- if (r1 < a1)
- a1 = r1;
- sub_8102C84(a0, a1);
- r1 = sSlotMachine->unk1C[a0] % 24;
+ if (offset < value)
+ value = offset;
+ AdvanceSlotReel(reelIndex, value);
+ offset = sSlotMachine->reelPixelOffsets[reelIndex] % 24;
}
- return r1;
+ return offset;
}
-/*static */void sub_8102D28(s16 a0)
+static void AdvanceReeltimeReel(s16 value)
{
- sSlotMachine->unk14 += a0;
- sSlotMachine->unk14 %= 120;
- sSlotMachine->unk16 = 6 - sSlotMachine->unk14 / 20;
+ sSlotMachine->reeltimePixelOffset += value;
+ sSlotMachine->reeltimePixelOffset %= 120;
+ sSlotMachine->reeltimePosition = 6 - sSlotMachine->reeltimePixelOffset / 20;
}
-s16 sub_8102D5C(s16 a0)
+s16 AdvanceReeltimeReelToNextTag(s16 value)
{
- s16 r1 = sSlotMachine->unk14 % 20;
- if (r1 != 0)
+ s16 offset = sSlotMachine->reeltimePixelOffset % 20;
+ if (offset != 0)
{
- if (r1 < a0)
- a0 = r1;
- sub_8102D28(a0);
- r1 = sSlotMachine->unk14 % 20;
+ if (offset < value)
+ value = offset;
+ AdvanceReeltimeReel(value);
+ offset = sSlotMachine->reeltimePixelOffset % 20;
}
- return r1;
+ return offset;
}
-/*static */void sub_8102DA8(void)
+static void GameplayTask_StopSlotReel(void)
{
u8 i;
for (i = 0; i < 3; i++)
{
- u8 taskId = CreateTask(sub_8102E68, 2);
+ u8 taskId = CreateTask(RunSlotReelActions, 2);
gTasks[taskId].data[15] = i;
- sSlotMachine->reelTasks[i] = taskId;
- sub_8102E68(taskId);
+ sSlotMachine->slotReelTasks[i] = taskId;
+ RunSlotReelActions(taskId);
}
}
-/*static */void sub_8102DEC(u8 a0)
+static void ReelTasks_SetUnkTaskData(u8 reelIndex)
{
- gTasks[sSlotMachine->reelTasks[a0]].data[0] = 1;
- gTasks[sSlotMachine->reelTasks[a0]].data[14] = 1;
+ gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[0] = 1;
+ gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[14] = 1;
}
-/*static */void sub_8102E1C(u8 a0)
+static void sub_8102E1C(u8 reelIndex)
{
- gTasks[sSlotMachine->reelTasks[a0]].data[0] = 2;
+ gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[0] = 2;
}
-/*static */bool8 sub_8102E40(u8 a0)
+static bool8 IsSlotReelMoving(u8 reelIndex)
{
- return gTasks[sSlotMachine->reelTasks[a0]].data[14];
+ return gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[14];
}
-/*static */void sub_8102E68(u8 taskId)
+static void RunSlotReelActions(u8 taskId)
{
- while (gUnknown_083ECB2C[gTasks[taskId].data[0]](gTasks + taskId))
+ while (SlotReelActions[gTasks[taskId].data[0]](&gTasks[taskId]))
;
}
-/*static */bool8 sub_8102EA0(struct Task *task)
+// task->data[1] reel turns
+// task->data[15] reelIndex
+static bool8 SlotReelAction_StayStill(struct Task *task)
{
return FALSE;
}
-/*static */bool8 sub_8102EA4(struct Task *task)
+static bool8 SlotReelAction_Spin(struct Task *task)
{
- sub_8102C84(task->data[15], sSlotMachine->unk1A);
+ AdvanceSlotReel(task->data[15], sSlotMachine->reelIncrement);
return FALSE;
}
-
-/*static */bool8 sub_8102EC0(struct Task *task)
+// As in previous generations, the slot machine often doesn't stop exactly when you press stop
+static bool8 SlotReelAction_DecideWhereToStop(struct Task *task)
{
task->data[0]++;
- sSlotMachine->unk34[task->data[15]] = 0;
- sSlotMachine->unk2E[task->data[15]] = 0;
- if (sSlotMachine->unk0A == 0 && (sSlotMachine->unk04 == 0 || sSlotMachine->unk06 == 0 || !gUnknown_083ECB40[task->data[15]]()))
+ // initialize data for that reel --> these will be changed if gBiasTags can be lined up
+ sSlotMachine->winnerRows[task->data[15]] = 0;
+ sSlotMachine->reelExtraTurns[task->data[15]] = 0;
+
+ if (sSlotMachine->fairRollsLeft == 0 && (sSlotMachine->luckyFlags == 0 || sSlotMachine->luckySpinsLeft == 0 || !DecideReelTurns_BiasTag[task->data[15]]()))
{
- sSlotMachine->unk06 = 0;
- gUnknown_083ECB4C[task->data[15]]();
+ sSlotMachine->luckySpinsLeft = 0;
+ DecideReelTurns_NoBiasTag[task->data[15]]();
}
- task->data[1] = sSlotMachine->unk2E[task->data[15]];
+ task->data[1] = sSlotMachine->reelExtraTurns[task->data[15]];
return TRUE;
}
-/*static */bool8 sub_8102F4C(struct Task *task)
+// go to next tag and then do any additional turns
+static bool8 SlotReelAction_MoveToStop(struct Task *task)
{
- u16 sp[ARRAY_COUNT(gUnknown_085A74FC)];
- s16 r2;
+ u16 reelStopShocks[ARRAY_COUNT(ReelStopShocks)];
+ s16 reelPixelPos;
- memcpy(sp, gUnknown_085A74FC, sizeof(gUnknown_085A74FC));
- r2 = sSlotMachine->unk1C[task->data[15]] % 24;
- if (r2 != 0)
- r2 = sub_8102CCC(task->data[15], sSlotMachine->unk1A);
- else if (sSlotMachine->unk2E[task->data[15]])
+ memcpy(reelStopShocks, ReelStopShocks, sizeof(ReelStopShocks));
+ reelPixelPos = sSlotMachine->reelPixelOffsets[task->data[15]] % 24;
+ if (reelPixelPos != 0)
+ reelPixelPos = AdvanceSlotReelToNextTag(task->data[15], sSlotMachine->reelIncrement);
+ else if (sSlotMachine->reelExtraTurns[task->data[15]])
{
- sSlotMachine->unk2E[task->data[15]]--;
- sub_8102C84(task->data[15], sSlotMachine->unk1A);
- r2 = sSlotMachine->unk1C[task->data[15]] % 24;
+ sSlotMachine->reelExtraTurns[task->data[15]]--;
+ AdvanceSlotReel(task->data[15], sSlotMachine->reelIncrement);
+ reelPixelPos = sSlotMachine->reelPixelOffsets[task->data[15]] % 24;
}
- if (r2 == 0 && sSlotMachine->unk2E[task->data[15]] == 0)
+ if (reelPixelPos == 0 && sSlotMachine->reelExtraTurns[task->data[15]] == 0)
{
task->data[0]++;
- task->data[1] = sp[task->data[1]];
+ task->data[1] = reelStopShocks[task->data[1]];
task->data[2] = 0;
}
return FALSE;
}
-/*static */bool8 sub_8103008(struct Task *task)
+// make selected tag oscillate before it becomes still
+static bool8 SlotReelAction_OscillatingStop(struct Task *task)
{
- sSlotMachine->unk22[task->data[15]] = task->data[1];
+ sSlotMachine->reelPixelOffsetsWhileStopping[task->data[15]] = task->data[1];
task->data[1] = -task->data[1];
task->data[2]++;
if ((task->data[2] & 0x3) == 0)
@@ -1856,103 +1889,111 @@ s16 sub_8102D5C(s16 a0)
{
task->data[0] = 0;
task->data[14] = 0;
- sSlotMachine->unk22[task->data[15]] = 0;
+ sSlotMachine->reelPixelOffsetsWhileStopping[task->data[15]] = 0;
}
return FALSE;
}
-/*static */bool8 sub_810305C(void)
+static bool8 DecideReelTurns_BiasTag_Reel1(void)
{
- u8 r3 = sub_810250C(sSlotMachine->unk04);
- u8 r5 = r3;
- if (sSlotMachine->unk04 & 0xc0)
+ u8 tag2 = GetBiasTag(sSlotMachine->luckyFlags);
+ u8 tag1 = tag2;
+ if (sSlotMachine->luckyFlags & (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777))
{
- r5 = 0;
- r3 = 1;
+ tag1 = SLOT_MACHINE_TAG_7_RED;
+ tag2 = SLOT_MACHINE_TAG_7_BLUE;
}
- return gUnknown_083ECB64[sSlotMachine->bet - 1](r5, r3);
+ return DecideReelTurns_BiasTag_Reel1_Bets[sSlotMachine->bet - 1](tag1, tag2);
}
-/*static */bool8 sub_81030A4(s16 y, u8 tag1, u8 tag2)
+static bool8 AreTagsAtPosition_Reel1(s16 pos, u8 tag1, u8 tag2)
{
- u8 tag = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, y);
+ u8 tag = GetNearbyTag(0, pos);
if (tag == tag1 || tag == tag2)
{
- sSlotMachine->unk07 = tag;
+ sSlotMachine->biasTag = tag;
return TRUE;
}
return FALSE;
}
-/*static */bool8 sub_81030E0(s16 y)
+static bool8 AreCherriesOnScreen_Reel1(s16 offsetFromCenter)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - y) == 4)
+ if (GetNearbyTag(0, 1 - offsetFromCenter) == SLOT_MACHINE_TAG_CHERRY || GetNearbyTag(0, 2 - offsetFromCenter) == SLOT_MACHINE_TAG_CHERRY || GetNearbyTag(0, 3 - offsetFromCenter) == SLOT_MACHINE_TAG_CHERRY)
return TRUE;
else
return FALSE;
}
-/*static */bool8 sub_8103134(void)
+static bool8 IsBiasTowardsCherryOr7s(void)
{
- if (sSlotMachine->unk04 & 0xc2)
+ if (sSlotMachine->luckyFlags & (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777 | LUCKY_BIAS_CHERRY))
return TRUE;
else
return FALSE;
}
-/*static */bool8 sub_8103154(u8 a0, u8 a1)
+static bool8 DecideReelTurns_BiasTag_Reel1_Bet1(u8 tag1, u8 tag2)
{
s16 i;
for (i = 0; i < 5; i++)
{
- if (sub_81030A4(2 - i, a0, a1))
+ // if a lucky tag appears in the center row within 4 turns
+ if (AreTagsAtPosition_Reel1(2 - i, tag1, tag2))
{
- sSlotMachine->unk34[0] = 2;
- sSlotMachine->unk2E[0] = i;
+ sSlotMachine->winnerRows[0] = 2;
+ sSlotMachine->reelExtraTurns[0] = i;
return TRUE;
}
}
return FALSE;
}
-/*static */bool8 sub_81031B4(u8 tag1, u8 tag2)
+static bool8 DecideReelTurns_BiasTag_Reel1_Bet2or3(u8 tag1, u8 tag2)
{
s16 i;
- bool8 r6 = sub_8103134();
- if (r6 || !sub_81030E0(0))
+ bool8 biased = IsBiasTowardsCherryOr7s();
+ // if lucky numbers or no cherries are currently on screen in reel 1...
+ if (biased || !AreCherriesOnScreen_Reel1(0))
{
for (i = 1; i < 4; i++)
{
- if (sub_81030A4(i, tag1, tag2))
+ // if a bias tag is currently on the screen
+ if (AreTagsAtPosition_Reel1(i, tag1, tag2))
{
- sSlotMachine->unk34[0] = i;
- sSlotMachine->unk2E[0] = 0;
+ sSlotMachine->winnerRows[0] = i;
+ sSlotMachine->reelExtraTurns[0] = 0;
return TRUE;
}
}
}
for (i = 1; i < 5; i++)
{
- bool8 r7 = r6;
- if (r7 || !sub_81030E0(i))
+ bool8 biasedCopy = biased; // redundant
+ // if biased or if in the next 4 turns there is a screen with no cherries...
+ if (biasedCopy || !AreCherriesOnScreen_Reel1(i))
{
- if (sub_81030A4(1 - i, tag1, tag2))
+ //...and if a bias tag is in top row of that screen
+ if (AreTagsAtPosition_Reel1(1 - i, tag1, tag2))
{
- if (i == 1 && (r7 || !sub_81030E0(3)))
+ //...and if it only took 1 turn and the lucky tag could also be the bottom row of a screen with no cherries...
+ if (i == 1 && (biasedCopy || !AreCherriesOnScreen_Reel1(3)))
{
- sSlotMachine->unk34[0] = 3;
- sSlotMachine->unk2E[0] = 3;
+ sSlotMachine->winnerRows[0] = 3;
+ sSlotMachine->reelExtraTurns[0] = 3;
return TRUE;
}
- if (i < 4 && (r7 || !sub_81030E0(i + 1)))
+ //...or if it isn't the last turn and the lucky tag could be in the center row of a screen with no cherries...
+ if (i < 4 && (biasedCopy || !AreCherriesOnScreen_Reel1(i + 1)))
{
- sSlotMachine->unk34[0] = 2;
- sSlotMachine->unk2E[0] = i + 1;
+ sSlotMachine->winnerRows[0] = 2;
+ sSlotMachine->reelExtraTurns[0] = i + 1;
return TRUE;
}
- sSlotMachine->unk34[0] = 1;
- sSlotMachine->unk2E[0] = i;
+ //...else
+ sSlotMachine->winnerRows[0] = 1;
+ sSlotMachine->reelExtraTurns[0] = i;
return TRUE;
}
}
@@ -1960,55 +2001,61 @@ s16 sub_8102D5C(s16 a0)
return FALSE;
}
-/*static */bool8 sub_81032C0(void)
+static bool8 DecideReelTurns_BiasTag_Reel2(void)
{
- return gUnknown_083ECB70[sSlotMachine->bet - 1]();
+ return DecideReelTurns_BiasTag_Reel2_Bets[sSlotMachine->bet - 1]();
}
-/*static */bool8 sub_81032E8(void)
+static bool8 DecideReelTurns_BiasTag_Reel2_Bet1or2(void)
{
s16 i;
- s16 unk34_0 = sSlotMachine->unk34[0];
+ s16 biasTagLocation_Reel1 = sSlotMachine->winnerRows[0];
for (i = 0; i < 5; i++)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, unk34_0 - i) == sSlotMachine->unk07)
+ // if biasTag appears in the same row within 4 turns
+ if (GetNearbyTag(1, biasTagLocation_Reel1 - i) == sSlotMachine->biasTag)
{
- sSlotMachine->unk34[1] = unk34_0;
- sSlotMachine->unk2E[1] = i;
+ sSlotMachine->winnerRows[1] = biasTagLocation_Reel1;
+ sSlotMachine->reelExtraTurns[1] = i;
return TRUE;
}
}
return FALSE;
}
-/*static */bool8 sub_810333C(void)
+static bool8 DecideReelTurns_BiasTag_Reel2_Bet3(void)
{
s16 i;
- if (sub_81032E8())
+ // if biasTag appears in the same row within 4 turns...
+ if (DecideReelTurns_BiasTag_Reel2_Bet1or2())
{
- if (sSlotMachine->unk34[0] != 2 && sSlotMachine->unk2E[1] > 1 && sSlotMachine->unk2E[1] != 4)
+ //...and if the biasTag is not in middle row of reel 1 and if biasTag appears in middle row of reel 2 in 2 or 3 turns...
+ if (sSlotMachine->winnerRows[0] != 2 && sSlotMachine->reelExtraTurns[1] > 1 && sSlotMachine->reelExtraTurns[1] != 4)
{
for (i = 0; i < 5; i++)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == sSlotMachine->unk07)
+ //...and if the bias tag will appear in the middle row within 4 turns
+ if (GetNearbyTag(1, 2 - i) == sSlotMachine->biasTag)
{
- sSlotMachine->unk34[1] = 2;
- sSlotMachine->unk2E[1] = i;
+ sSlotMachine->winnerRows[1] = 2;
+ sSlotMachine->reelExtraTurns[1] = i;
break;
}
}
}
return TRUE;
}
- if (sSlotMachine->unk34[0] != 2)
+ // else if the biasTag is not in middle row of reel 1...
+ if (sSlotMachine->winnerRows[0] != 2)
{
for (i = 0; i < 5; i++)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == sSlotMachine->unk07)
+ //...and if the biasTag will appear in the center row of reel 2 within 4 turns
+ if (GetNearbyTag(1, 2 - i) == sSlotMachine->biasTag)
{
- sSlotMachine->unk34[1] = 2;
- sSlotMachine->unk2E[1] = i;
+ sSlotMachine->winnerRows[1] = 2;
+ sSlotMachine->reelExtraTurns[1] = i;
return TRUE;
}
}
@@ -2016,102 +2063,113 @@ s16 sub_8102D5C(s16 a0)
return FALSE;
}
-/*static */bool8 sub_81033DC(void)
+static bool8 DecideReelTurns_BiasTag_Reel3(void)
{
- u8 r3 = sSlotMachine->unk07;
- if (sSlotMachine->unk04 & 0x40)
+ u8 biasTag = sSlotMachine->biasTag;
+ if (sSlotMachine->luckyFlags & LUCKY_BIAS_MIXED_777)
{
- r3 = 0;
- if (sSlotMachine->unk07 == 0)
+ biasTag = SLOT_MACHINE_TAG_7_RED;
+ if (sSlotMachine->biasTag == SLOT_MACHINE_TAG_7_RED)
{
- r3 = 1;
+ biasTag = SLOT_MACHINE_TAG_7_BLUE;
}
}
- return gUnknown_083ECB7C[sSlotMachine->bet - 1](r3);
+ return DecideReelTurns_BiasTag_Reel3_Bets[sSlotMachine->bet - 1](biasTag);
}
-/*static */bool8 sub_810341C(u8 a0)
+static bool8 DecideReelTurns_BiasTag_Reel3_Bet1or2(u8 biasTag)
{
s16 i;
- s16 unk34_1 = sSlotMachine->unk34[1];
+ s16 biasTagLocation_Reel2 = sSlotMachine->winnerRows[1];
for (i = 0; i < 5; i++)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, unk34_1 - i) == a0)
+ // if the biasTag appears in the same row as in reel 2 within 4 turns
+ if (GetNearbyTag(2, biasTagLocation_Reel2 - i) == biasTag)
{
- sSlotMachine->unk34[2] = unk34_1;
- sSlotMachine->unk2E[2] = i;
+ sSlotMachine->winnerRows[2] = biasTagLocation_Reel2;
+ sSlotMachine->reelExtraTurns[2] = i;
return TRUE;
}
}
return FALSE;
}
-/*static */bool8 sub_810347C(u8 a0)
+static bool8 DecideReelTurns_BiasTag_Reel3_Bet3(u8 biasTag)
{
s16 i;
- s16 r8;
- if (sSlotMachine->unk34[0] == sSlotMachine->unk34[1])
- return sub_810341C(a0);
- if (sSlotMachine->unk34[0] == 1)
- r8 = 3;
+ s16 biasTagFinalPos;
+ // if the final position of the biasTag matches in reel 1 and reel 2...
+ if (sSlotMachine->winnerRows[0] == sSlotMachine->winnerRows[1])
+ //...then try to line it up in reel 3
+ return DecideReelTurns_BiasTag_Reel3_Bet1or2(biasTag);
+ // else place it in the row opposite reel 1's
+ if (sSlotMachine->winnerRows[0] == 1)
+ biasTagFinalPos = 3;
else
- r8 = 1;
+ biasTagFinalPos = 1;
for (i = 0; i < 5; i++)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - i) == a0)
+ // if the biasTag lands in that position within 4 turns
+ if (GetNearbyTag(2, biasTagFinalPos - i) == biasTag)
{
- sSlotMachine->unk2E[2] = i;
- sSlotMachine->unk34[2] = r8;
+ sSlotMachine->reelExtraTurns[2] = i;
+ sSlotMachine->winnerRows[2] = biasTagFinalPos;
return TRUE;
}
}
return FALSE;
}
-/*static */void sub_81034F4(void)
+// Advance until there are no cherries on screen in reel 1
+
+static void DecideReelTurns_NoBiasTag_Reel1(void)
{
s16 i = 0;
- while (sub_81030E0(i) != 0)
+ while (AreCherriesOnScreen_Reel1(i) != 0)
i++;
- sSlotMachine->unk2E[0] = i;
+ sSlotMachine->reelExtraTurns[0] = i;
}
-/*static */bool8 sub_8103520(u8 *a0)
+static bool8 IsBiasTag777_SwitchColor(u8 *biasTagPtr)
{
- if (*a0 == 0)
+ if (*biasTagPtr == SLOT_MACHINE_TAG_7_RED)
{
- *a0 = 1;
+ *biasTagPtr = SLOT_MACHINE_TAG_7_BLUE;
return TRUE;
}
- if (*a0 == 1)
+ if (*biasTagPtr == SLOT_MACHINE_TAG_7_BLUE)
{
- *a0 = 0;
+ *biasTagPtr = SLOT_MACHINE_TAG_7_RED;
return TRUE;
}
return FALSE;
}
-/*static */void sub_8103540(void)
+static void DecideReelTurns_NoBiasTag_Reel2(void)
{
- gUnknown_083ECB88[sSlotMachine->bet - 1]();
+ DecideReelTurns_NoBiasTag_Reel2_Bets[sSlotMachine->bet - 1]();
}
-/*static */void sub_8103564(void)
+// only does stuff if the biasTag is one of the 7's, plus other conditions
+static void DecideReelTurns_NoBiasTag_Reel2_Bet1(void)
{
- if (sSlotMachine->unk34[0] != 0 && sSlotMachine->unk04 & 0x80)
+ if (sSlotMachine->winnerRows[0] != 0 && sSlotMachine->luckyFlags & LUCKY_BIAS_777)
{
- u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - sSlotMachine->unk2E[0]);
- if (sub_8103520(&sp0))
+ u8 biasTag = GetNearbyTag(0, 2 - sSlotMachine->reelExtraTurns[0]);
+ //...and if biasTag is one of the 7's...
+ if (IsBiasTag777_SwitchColor(&biasTag))
+ //...swap color of biasTag...
{
s16 i;
for (i = 0; i < 5; i++)
{
- if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i))
+ //...and if the biasTag appears within 4 turns
+ if (biasTag == GetNearbyTag(1, 2 - i))
{
- sSlotMachine->unk34[1] = 2;
- sSlotMachine->unk2E[1] = i;
+ sSlotMachine->winnerRows[1] = 2;
+ sSlotMachine->reelExtraTurns[1] = i;
break;
}
}
@@ -2119,20 +2177,23 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void j5_08111E84(void)
+static void DecideReelTurns_NoBiasTag_Reel2_Bet2(void)
{
- if (sSlotMachine->unk34[0] != 0 && sSlotMachine->unk04 & 0x80)
+ if (sSlotMachine->winnerRows[0] != 0 && sSlotMachine->luckyFlags & LUCKY_BIAS_777)
{
- u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
- if (sub_8103520(&sp0))
+ u8 biasTag = GetNearbyTag(0, sSlotMachine->winnerRows[0] - sSlotMachine->reelExtraTurns[0]);
+ //...and if biasTag is one of the 7's...
+ if (IsBiasTag777_SwitchColor(&biasTag))
+ //...swap color of biasTag...
{
s16 i;
for (i = 0; i < 5; i++)
{
- if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[0] - i))
+ //...and if the biasTag appears in same row in reel 2 within 4 turns
+ if (biasTag == GetNearbyTag(1, sSlotMachine->winnerRows[0] - i))
{
- sSlotMachine->unk34[1] = sSlotMachine->unk34[0];
- sSlotMachine->unk2E[1] = i;
+ sSlotMachine->winnerRows[1] = sSlotMachine->winnerRows[0];
+ sSlotMachine->reelExtraTurns[1] = i;
break;
}
}
@@ -2140,61 +2201,65 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8103668(void)
+static void DecideReelTurns_NoBiasTag_Reel2_Bet3(void)
{
s16 i;
s16 j;
- if (sSlotMachine->unk34[0] != 0 && sSlotMachine->unk04 & 0x80)
+ // if reel 1 has a biasTag and bit 7 is set in luckyFlags...
+ if (sSlotMachine->winnerRows[0] != 0 && sSlotMachine->luckyFlags & LUCKY_BIAS_777)
{
- if (sSlotMachine->unk34[0] == 2)
+ //...and if biasTag appeared in the center row of reel 1
+ if (sSlotMachine->winnerRows[0] == 2)
{
- j5_08111E84();
+ DecideReelTurns_NoBiasTag_Reel2_Bet2();
}
else
{
- u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
- if (sub_8103520(&sp0))
+ u8 biasTag = GetNearbyTag(0, sSlotMachine->winnerRows[0] - sSlotMachine->reelExtraTurns[0]);
+ //...and if biasTag is one of the 7's...
+ if (IsBiasTag777_SwitchColor(&biasTag))
+ //...swap the color of the 7...
{
j = 2;
- if (sSlotMachine->unk34[0] == 3)
+ if (sSlotMachine->winnerRows[0] == 3)
j = 3;
for (i = 0; i < 2; i++, j--)
{
- if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, j))
+ if (biasTag == GetNearbyTag(1, j))
{
- sSlotMachine->unk34[1] = j;
- sSlotMachine->unk2E[1] = 0;
+ sSlotMachine->winnerRows[1] = j;
+ sSlotMachine->reelExtraTurns[1] = 0;
return;
}
}
for (j = 1; j < 5; j++)
{
- if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[0] - j))
+ if (biasTag == GetNearbyTag(1, sSlotMachine->winnerRows[0] - j))
{
- if (sSlotMachine->unk34[0] == 1)
+ if (sSlotMachine->winnerRows[0] == 1)
{
if (j < 3)
{
- sSlotMachine->unk34[1] = 2;
- sSlotMachine->unk2E[1] = j + 1;
+ sSlotMachine->winnerRows[1] = 2;
+ sSlotMachine->reelExtraTurns[1] = j + 1;
}
else
{
- sSlotMachine->unk34[1] = 1;
- sSlotMachine->unk2E[1] = j;
+ sSlotMachine->winnerRows[1] = 1;
+ sSlotMachine->reelExtraTurns[1] = j;
}
}
else
{
if (j < 3)
{
- sSlotMachine->unk34[1] = 3;
- sSlotMachine->unk2E[1] = j;
+ sSlotMachine->winnerRows[1] = 3;
+ sSlotMachine->reelExtraTurns[1] = j;
}
else
{
- sSlotMachine->unk34[1] = 2;
- sSlotMachine->unk2E[1] = j - 1;
+ sSlotMachine->winnerRows[1] = 2;
+ sSlotMachine->reelExtraTurns[1] = j - 1;
}
}
return;
@@ -2205,149 +2270,159 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */bool8 sub_8103764(u8 a0, u8 a1)
+static bool8 AreTagsMixed77(u8 tag1, u8 tag2)
{
- if ((a0 == 0 && a1 == 1) || (a0 == 1 && a1 == 0))
+ if ((tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_BLUE) || (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_RED))
return TRUE;
else
return FALSE;
}
-/*static */bool8 sub_810378C(u8 a0, u8 a1, u8 a2)
+static bool8 AreTagsMixed777(u8 tag1, u8 tag2, u8 tag3)
{
- if ((a0 == 0 && a1 == 1 && a2 == 0) || (a0 == 1 && a1 == 0 && a2 == 1))
+ if ((tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED) ||
+ (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE))
return TRUE;
else
return FALSE;
}
-/*static */bool8 sub_81037BC(u8 a0, u8 a1, u8 a2)
+static bool8 TagsDontMatchOrHaveAny7s(u8 tag1, u8 tag2, u8 tag3)
{
- if ((a0 == 0 && a1 == 1 && a2 == 0) ||
- (a0 == 1 && a1 == 0 && a2 == 1) ||
- (a0 == 0 && a1 == 0 && a2 == 1) ||
- (a0 == 1 && a1 == 1 && a2 == 0) ||
- (a0 == a1 && a0 == a2))
+ if ((tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED) ||
+ (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE) ||
+ (tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE) ||
+ (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED) ||
+ (tag1 == tag2 && tag1 == tag3))
{
return FALSE;
}
return TRUE;
}
-/*static */void sub_810380C(void)
+static void DecideReelTurns_NoBiasTag_Reel3(void)
{
- gUnknown_083ECB94[sSlotMachine->bet - 1]();
+ DecideReelTurns_NoBiasTag_Reel3_Bets[sSlotMachine->bet - 1]();
}
-/*static */void sub_8103830(void)
+static void DecideReelTurns_NoBiasTag_Reel3_Bet1(void)
{
s16 i = 0;
- u8 r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - sSlotMachine->unk2E[0]);
- u8 r1 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - sSlotMachine->unk2E[1]);
- if (r5 == r1)
+ u8 tag1 = GetNearbyTag(0, 2 - sSlotMachine->reelExtraTurns[0]);
+ u8 tag2 = GetNearbyTag(1, 2 - sSlotMachine->reelExtraTurns[1]);
+ // if tags match in first 2 reels...
+ if (tag1 == tag2)
{
+ //...spin until you get non-matching tag
while (1)
{
- u8 r0;
- if (!(r5 == (r0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i)) || (r5 == 0 && r0 == 1) || (r5 == 1 && r0 == 0)))
+ u8 tag3;
+ if (!(tag1 == (tag3 = GetNearbyTag(2, 2 - i)) || (tag1 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE) || (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED)))
break;
i++;
}
}
- else if (sub_8103764(r5, r1))
+ else if (AreTagsMixed77(tag1, tag2))
{
- if (sSlotMachine->unk04 & 0x80)
+ if (sSlotMachine->luckyFlags & LUCKY_BIAS_777)
{
+ //...see if you can match with reel 1 within 4 turns
for (i = 0; i < 5; i++)
{
- if (r5 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i))
+ if (tag1 == GetNearbyTag(2, 2 - i))
{
- sSlotMachine->unk2E[2] = i;
+ sSlotMachine->reelExtraTurns[2] = i;
return;
}
}
}
+ // turn until you aren't matching with reel 1
i = 0;
while (1)
{
- if (r5 != GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i))
+ if (tag1 != GetNearbyTag(2, 2 - i))
break;
i++;
}
}
- sSlotMachine->unk2E[2] = i;
+ sSlotMachine->reelExtraTurns[2] = i;
}
-/*static */void sub_8103910(void)
+static void DecideReelTurns_NoBiasTag_Reel3_Bet2(void)
{
- s16 sp0 = 0;
+ s16 extraTurns = 0;
s16 i;
- u8 r7;
- u8 r6;
- u8 r4;
-
- if (sSlotMachine->unk34[1] != 0 && sSlotMachine->unk34[0] == sSlotMachine->unk34[1] && sSlotMachine->unk04 & 0x80)
- {
- r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[1] - sSlotMachine->unk2E[1]);
- if (sub_8103764(r7, r6))
+ u8 tag1;
+ u8 tag2;
+ u8 tag3;
+ if (sSlotMachine->winnerRows[1] != 0 && sSlotMachine->winnerRows[0] == sSlotMachine->winnerRows[1] && sSlotMachine->luckyFlags & LUCKY_BIAS_777)
+ {
+ tag1 = GetNearbyTag(0, sSlotMachine->winnerRows[0] - sSlotMachine->reelExtraTurns[0]);
+ tag2 = GetNearbyTag(1, sSlotMachine->winnerRows[1] - sSlotMachine->reelExtraTurns[1]);
+ //...and if tags are mixed 7s...
+ if (AreTagsMixed77(tag1, tag2))
{
+ //...try to match with reel 1 within 4 turns
for (i = 0; i < 5; i++)
{
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, sSlotMachine->unk34[1] - i);
- if (r7 == r4)
+ tag3 = GetNearbyTag(2, sSlotMachine->winnerRows[1] - i);
+ if (tag1 == tag3)
{
- sp0 = i;
+ extraTurns = i;
break;
}
}
}
}
+ // GUESS: spin until there's no possible match within 4 turns of you stopping
while (1)
{
- s16 r8;
- for (i = 1, r8 = 0; i < 4; i++)
+ s16 loopExit;
+ for (i = 1, loopExit = 0; i < 4; i++)
{
- r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, i - sSlotMachine->unk2E[0]);
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, i - sSlotMachine->unk2E[1]);
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, i - sp0);
- if (!sub_81037BC(r7, r6, r4) && (!sub_810378C(r7, r6, r4) || !(sSlotMachine->unk04 & 0x80)))
+ tag1 = GetNearbyTag(0, i - sSlotMachine->reelExtraTurns[0]); // why does this update with i
+ tag2 = GetNearbyTag(1, i - sSlotMachine->reelExtraTurns[1]);
+ tag3 = GetNearbyTag(2, i - extraTurns);
+ // if bit 7 of luckyFlags is unset...
+ //...and if all 3 tags match and they're not mixed 7s
+ if (!TagsDontMatchOrHaveAny7s(tag1, tag2, tag3) && (!AreTagsMixed777(tag1, tag2, tag3) || !(sSlotMachine->luckyFlags & LUCKY_BIAS_777)))
{
- r8++;
+ loopExit++;
break;
}
}
- if (r8 == 0)
+ if (loopExit == 0)
break;
- sp0++;
+ extraTurns++;
}
- sSlotMachine->unk2E[2] = sp0;
+ sSlotMachine->reelExtraTurns[2] = extraTurns;
}
-/*static */void sub_8103A78(void)
+static void DecideReelTurns_NoBiasTag_Reel3_Bet3(void)
{
- u8 r6;
- u8 r5;
- u8 r4;
- s16 r8;
+ u8 tag1;
+ u8 tag2;
+ u8 tag3;
+ s16 j;
s16 i;
- sub_8103910();
- if (sSlotMachine->unk34[1] != 0 && sSlotMachine->unk34[0] != sSlotMachine->unk34[1] && sSlotMachine->unk04 & 0x80)
+ DecideReelTurns_NoBiasTag_Reel3_Bet2();
+ if (sSlotMachine->winnerRows[1] != 0 && sSlotMachine->winnerRows[0] != sSlotMachine->winnerRows[1] && sSlotMachine->luckyFlags & LUCKY_BIAS_777)
{
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
- r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[1] - sSlotMachine->unk2E[1]);
- if (sub_8103764(r6, r5))
+ tag1 = GetNearbyTag(0, sSlotMachine->winnerRows[0] - sSlotMachine->reelExtraTurns[0]);
+ tag2 = GetNearbyTag(1, sSlotMachine->winnerRows[1] - sSlotMachine->reelExtraTurns[1]);
+ //..and if tags are mixed 7s...
+ if (AreTagsMixed77(tag1, tag2))
{
- r8 = 1;
- if (sSlotMachine->unk34[0] == 1)
- r8 = 3;
+ j = 1;
+ if (sSlotMachine->winnerRows[0] == 1)
+ j = 3;
for (i = 0; i < 5; i++)
{
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - (sSlotMachine->unk2E[2] + i));
- if (r6 == r4)
+ tag3 = GetNearbyTag(2, j - (sSlotMachine->reelExtraTurns[2] + i));
+ if (tag1 == tag3)
{
- sSlotMachine->unk2E[2] += i;
+ sSlotMachine->reelExtraTurns[2] += i;
break;
}
}
@@ -2355,79 +2430,80 @@ s16 sub_8102D5C(s16 a0)
}
while (1)
{
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - sSlotMachine->unk2E[0]);
- r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - sSlotMachine->unk2E[1]);
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 3 - sSlotMachine->unk2E[2]);
- if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && sSlotMachine->unk04 & 0x80))
+ tag1 = GetNearbyTag(0, 1 - sSlotMachine->reelExtraTurns[0]);
+ tag2 = GetNearbyTag(1, 2 - sSlotMachine->reelExtraTurns[1]);
+ tag3 = GetNearbyTag(2, 3 - sSlotMachine->reelExtraTurns[2]);
+ if (TagsDontMatchOrHaveAny7s(tag1, tag2, tag3) || (AreTagsMixed777(tag1, tag2, tag3) && sSlotMachine->luckyFlags & LUCKY_BIAS_777))
break;
- sSlotMachine->unk2E[2]++;
+ sSlotMachine->reelExtraTurns[2]++;
}
while (1)
{
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - sSlotMachine->unk2E[0]);
- r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - sSlotMachine->unk2E[1]);
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 1 - sSlotMachine->unk2E[2]);
- if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && sSlotMachine->unk04 & 0x80))
+ tag1 = GetNearbyTag(0, 3 - sSlotMachine->reelExtraTurns[0]);
+ tag2 = GetNearbyTag(1, 2 - sSlotMachine->reelExtraTurns[1]);
+ tag3 = GetNearbyTag(2, 1 - sSlotMachine->reelExtraTurns[2]);
+ if (TagsDontMatchOrHaveAny7s(tag1, tag2, tag3) || (AreTagsMixed777(tag1, tag2, tag3) && sSlotMachine->luckyFlags & LUCKY_BIAS_777))
break;
- sSlotMachine->unk2E[2]++;
+ sSlotMachine->reelExtraTurns[2]++;
}
}
-/*static */void sub_8103C14(u8 a0)
+static void sub_8103C14(u8 a0)
{
u8 taskId = CreateTask(sub_8103C48, 5);
gTasks[taskId].data[15] = a0;
sub_8103C48(taskId);
}
-/*static */void sub_8103C48(u8 taskId)
+static void sub_8103C48(u8 taskId)
{
- gUnknown_083ECBA0[gTasks[taskId].data[0]](gTasks + taskId, taskId);
+ gUnknown_083ECBA0[gTasks[taskId].data[0]](&gTasks[taskId], taskId);
}
-/*static */void sub_8103C78(struct Task *task, u8 taskId)
+static void sub_8103C78(struct Task *task, u8 taskId)
{
sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x62, 0x63, 0x72, 0x73);
task->data[0]++;
}
-/*static */void sub_8103CAC(struct Task *task, u8 taskId)
+static void sub_8103CAC(struct Task *task, u8 taskId)
{
if (++task->data[1] > 11)
task->data[0]++;
}
-/*static */void sub_8103CC8(struct Task *task, u8 taskId)
+static void sub_8103CC8(struct Task *task, u8 taskId)
{
sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x42, 0x43, 0x52, 0x53);
DestroyTask(taskId);
}
-/*static */void sub_8103D00(u8 a0)
+static void LoadLitTile(u8 tileId)
{
- LoadPalette(gUnknown_083EDD08[a0], gUnknown_083EDD30[a0], 2);
+ LoadPalette(gUnknown_083EDD08[tileId], gUnknown_083EDD30[tileId], 2);
}
-/*static */void sub_8103D28(u8 a0)
+static void sub_8103D28(u8 a0)
{
LoadPalette(gUnknown_083EDD1C[a0], gUnknown_083EDD30[a0], 2);
}
-/*static */void sub_8103D50(u8 a0)
+// light up the value bet by the player
+static void LoadBetTiles(u8 betVal)
{
u8 i;
- for (i = 0; i < gUnknown_083EDD3B[a0]; i++)
- sub_8103D00(gUnknown_083EDD35[a0][i]);
+ for (i = 0; i < gNumberBettingTiles[betVal]; i++)
+ LoadLitTile(gBettingTilesId[betVal][i]);
}
-/*static */void sub_8103D8C(u8 a0)
+static void sub_8103D8C(u8 a0)
{
u8 i;
- for (i = 0; i < gUnknown_083EDD3B[a0]; i++)
- sub_8103D28(gUnknown_083EDD35[a0][i]);
+ for (i = 0; i < gNumberBettingTiles[a0]; i++)
+ sub_8103D28(gBettingTilesId[a0][i]);
}
-/*static */void sub_8103DC8(void)
+static void sub_8103DC8(void)
{
u8 i;
for (i = 0; i < 5; i++)
@@ -2438,7 +2514,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8103E04(u8 a0)
+static void sub_8103E04(u8 a0)
{
struct Sprite *sprite = gSprites + sSlotMachine->unk44[a0];
sprite->data[1] = 1;
@@ -2449,7 +2525,8 @@ s16 sub_8102D5C(s16 a0)
sprite->data[7] = 0;
}
-/*static */bool8 sub_8103E38(void)
+// something with payout digits
+static bool8 sub_8103E38(void)
{
u8 i;
for (i = 0; i < 5; i++)
@@ -2461,7 +2538,7 @@ s16 sub_8102D5C(s16 a0)
return TRUE;
}
-/*static */bool8 sub_8103E7C(void)
+static bool8 sub_8103E7C(void)
{
u8 i;
for (i = 0; i < 5; i++)
@@ -2472,7 +2549,7 @@ s16 sub_8102D5C(s16 a0)
return TRUE;
}
-/*static */bool8 sub_8103EAC(u8 spriteId)
+static bool8 sub_8103EAC(u8 spriteId)
{
struct Sprite *sprite = gSprites + spriteId;
if (!sprite->data[1])
@@ -2482,7 +2559,7 @@ s16 sub_8102D5C(s16 a0)
return sprite->data[7];
}
-/*static */void sub_8103EE4(struct Sprite *sprite)
+static void sub_8103EE4(struct Sprite *sprite)
{
s16 r4;
if (sprite->data[1])
@@ -2511,14 +2588,14 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8103F70(void)
+static void sub_8103F70(void)
{
u8 taskId = CreateTask(sub_8103FE8_, 6);
gTasks[taskId].data[3] = 1;
sub_8103FE8_(taskId);
}
-/*static */bool8 sub_8103FA0(void)
+static bool8 sub_8103FA0(void)
{
u8 taskId = FindTaskIdByFunc(sub_8103FE8_);
if (!gTasks[taskId].data[2])
@@ -2530,9 +2607,9 @@ s16 sub_8102D5C(s16 a0)
return FALSE;
}
-/*static */void sub_8103FE8_(u8 taskId)
+static void sub_8103FE8_(u8 taskId)
{
- struct Task *task = gTasks + taskId;
+ struct Task *task = &gTasks[taskId];
if (!task->data[1]--)
{
task->data[1] = 4;
@@ -2543,49 +2620,49 @@ s16 sub_8102D5C(s16 a0)
LoadPalette(gUnknown_083EDDA0[task->data[2]], 0x10, 0x20);
}
-/*static */void sub_8104048(void)
+static void GameplayTask_PikaPower(void)
{
- sSlotMachine->unk3E = CreateTask(sub_81040E8, 8);
+ sSlotMachine->unkTaskPointer3E = CreateTask(sub_81040E8, 8);
}
-/*static */void sub_8104064(u8 pikaPower)
+static void DisplayPikaPower(u8 pikaPower)
{
- struct Task *task = gTasks + sSlotMachine->unk3E;
- sub_812D394(task);
+ struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3E];
+ ClearTaskDataFields_2orHigher(task);
task->data[0] = 1;
task->data[1]++;
- task->data[15] = 1;
+ task->data[15] = 1; // points to a reelIndex
}
-/*static */void sub_8104098(void)
+static void sub_8104098(void)
{
- struct Task *task = gTasks + sSlotMachine->unk3E;
- sub_812D394(task);
+ struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3E];
+ ClearTaskDataFields_2orHigher(task);
task->data[0] = 3;
- task->data[15] = 1;
+ task->data[15] = 1; // points to a reelIndex
}
-/*static */bool8 sub_81040C8(void)
+static bool8 sub_81040C8(void)
{
- return gTasks[sSlotMachine->unk3E].data[15];
+ return gTasks[sSlotMachine->unkTaskPointer3E].data[15];
}
-/*static */void sub_81040E8(u8 taskId)
+static void sub_81040E8(u8 taskId)
{
- gUnknown_083ECBB4[gTasks[taskId].data[0]](gTasks + taskId);
+ gUnknown_083ECBB4[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-/*static */void nullsub_68(struct Task *task)
+static void nullsub_68(struct Task *task)
{
}
-/*static */void sub_810411C(struct Task *task)
+static void sub_810411C(struct Task *task)
{
task->data[2] = sub_8105B1C((task->data[1] << 3) + 20, 20);
task->data[0]++;
}
-/*static */void sub_8104144(struct Task *task)
+static void sub_8104144(struct Task *task)
{
if (gSprites[task->data[2]].data[7])
{
@@ -2596,15 +2673,15 @@ s16 sub_8102D5C(s16 a0)
r3 = 1, r2 = 1;
else if (task->data[1] == 16)
r3 = 2, r2 = 2;
- gUnknown_0203AACC[r2] = gUnknown_083ECBC4[r3][0];
- LoadBgTilemap(2, &gUnknown_0203AACC[r2], 2, r5 + 0x40);
+ sSelectedPikaPowerTile[r2] = pikaPowerTileTable[r3][0];
+ LoadBgTilemap(2, &sSelectedPikaPowerTile[r2], 2, r5 + 0x40);
sub_8105B88(task->data[2]);
task->data[0] = 0;
- task->data[15] = 0;
+ task->data[15] = 0; // points to a reelIndex
}
}
-/*static */void sub_81041AC(struct Task *task)
+static void sub_81041AC(struct Task *task)
{
s16 r5 = task->data[1] + 2;
s16 r3 = 0;
@@ -2615,8 +2692,8 @@ s16 sub_8102D5C(s16 a0)
r3 = 2, r2 = 2;
if (task->data[2] == 0)
{
- gUnknown_0203AACC[r2] = gUnknown_083ECBC4[r3][1];
- LoadBgTilemap(2, &gUnknown_0203AACC[r2], 2, r5 + 0x40);
+ sSelectedPikaPowerTile[r2] = pikaPowerTileTable[r3][1];
+ LoadBgTilemap(2, &sSelectedPikaPowerTile[r2], 2, r5 + 0x40);
task->data[1]--;
}
if (++task->data[2] >= 20)
@@ -2628,7 +2705,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_812D394(struct Task *task)
+static void ClearTaskDataFields_2orHigher(struct Task *task)
{
u8 i;
@@ -2636,7 +2713,8 @@ s16 sub_8102D5C(s16 a0)
task->data[i] = 0;
}
-/*static */void sub_810423C(u8 pikaPower)
+// possibly load tiles for pika power meter
+static void sub_810423C(u8 pikaPower)
{
s16 i;
s16 r3 = 0, r1 = 0;
@@ -2646,10 +2724,10 @@ s16 sub_8102D5C(s16 a0)
r3 = 0, r1 = 0;
if (i == 0)
r3 = 1, r1 = 1;
- else if (i == 15)
+ else if (i == 15) // pikaPower meter is full
r3 = 2, r1 = 2;
- gUnknown_0203AACC[r1] = gUnknown_083ECBC4[r3][0];
- LoadBgTilemap(2, &gUnknown_0203AACC[r1], 2, r4 + 0x40);
+ sSelectedPikaPowerTile[r1] = pikaPowerTileTable[r3][0];
+ LoadBgTilemap(2, &sSelectedPikaPowerTile[r1], 2, r4 + 0x40);
}
for (; i < 16; i++, r4++)
{
@@ -2658,39 +2736,43 @@ s16 sub_8102D5C(s16 a0)
r3 = 1, r1 = 1;
else if (i == 15)
r3 = 2, r1 = 2;
- gUnknown_0203AACC[r1] = gUnknown_083ECBC4[r3][1];
- LoadBgTilemap(2, &gUnknown_0203AACC[r1], 2, r4 + 0x40);
+ sSelectedPikaPowerTile[r1] = pikaPowerTileTable[r3][1];
+ LoadBgTilemap(2, &sSelectedPikaPowerTile[r1], 2, r4 + 0x40);
}
- gTasks[sSlotMachine->unk3E].data[1] = pikaPower;
+ gTasks[sSlotMachine->unkTaskPointer3E].data[1] = pikaPower;
}
-/*static */void sub_810430C(void)
+static void BeginReeltime(void)
{
- u8 taskId = CreateTask(sub_810434C, 7);
- sub_810434C(taskId);
+ u8 taskId = CreateTask(RunReeltimeActions, 7);
+ RunReeltimeActions(taskId);
}
-/*static */bool8 sub_810432C(void)
+static bool8 IsFinalTask_RunReelTimeActions(void)
{
- if (FindTaskIdByFunc(sub_810434C) == 0xFF)
+ if (FindTaskIdByFunc(RunReeltimeActions) == TAIL_SENTINEL)
return TRUE;
return FALSE;
}
-/*static */void sub_810434C(u8 taskId)
+static void RunReeltimeActions(u8 taskId)
{
- gUnknown_083ECBD0[gTasks[taskId].data[0]](gTasks + taskId);
+ // task.data[0] points to which ReelTimeAction to do, and starts at 0
+ // task.data[1] has something to do with the threshold
+ // task.data[4] says how many pixels to advance the reel
+ // task.data[5] is a timer
+ ReeltimeActions[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-/*static */void sub_810437C(struct Task *task)
+static void ReeltimeAction0(struct Task *task)
{
- sSlotMachine->unk0A = 0;
- sSlotMachine->unk14 = 0;
- sSlotMachine->unk16 = 0;
+ sSlotMachine->fairRollsLeft = 0;
+ sSlotMachine->reeltimePixelOffset = 0;
+ sSlotMachine->reeltimePosition = 0;
task->data[0]++;
task->data[1] = 0;
task->data[2] = 30;
- task->data[4] = 1280;
+ task->data[4] = 1280; // reel speed
gSpriteCoordOffsetX = 0;
gSpriteCoordOffsetY = 0;
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
@@ -2701,12 +2783,12 @@ s16 sub_8102D5C(s16 a0)
sub_81052EC();
sub_81053A0();
sub_810545C();
- sub_8102680();
+ GetReeltimeDraw();
StopMapMusic();
PlayNewMapMusic(MUS_BD_TIME);
}
-/*static */void sub_81043EC(struct Task *task)
+static void ReeltimeAction1(struct Task *task)
{
s16 r3;
gSpriteCoordOffsetX -= 8;
@@ -2724,21 +2806,21 @@ s16 sub_8102D5C(s16 a0)
task->data[0]++;
task->data[3] = 0;
}
- sub_8102D28(task->data[4] >> 8);
+ AdvanceReeltimeReel(task->data[4] >> 8);
}
-/*static */void sub_8104468(struct Task *task)
+static void ReeltimeAction2(struct Task *task)
{
- sub_8102D28(task->data[4] >> 8);
+ AdvanceReeltimeReel(task->data[4] >> 8);
if (++task->data[5] >= 60)
{
task->data[0]++;
- sub_8105578();
- sub_81056F0();
+ CreateReelTimeSprites1();
+ CreateReelTimeSprite2();
}
}
-/*static */void sub_8104498(struct Task *task)
+static void ReeltimeAction3(struct Task *task)
{
int r5;
u8 sp0[ARRAY_COUNT(gUnknown_085A75C0)];
@@ -2749,12 +2831,14 @@ s16 sub_8102D5C(s16 a0)
memcpy(sp4, gUnknown_085A75C4, sizeof(gUnknown_085A75C4));
memcpy(spC, gUnknown_085A75CC, sizeof(gUnknown_085A75CC));
- sub_8102D28(task->data[4] >> 8);
+ AdvanceReeltimeReel(task->data[4] >> 8);
+ // gradually slow down the reel
task->data[4] -= 4;
r5 = 4 - (task->data[4] >> 8);
sub_8105688(sp4[r5]);
sub_81057E8(spC[r5]);
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, sp0[r5]);
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, sp0[r5]);
+ // once speed goes below 256, go to next ReelTimeAction and keep the speed level
if (task->data[4] <= 0x100)
{
task->data[0]++;
@@ -2763,21 +2847,21 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8104548(struct Task *task)
+static void ReeltimeAction4(struct Task *task)
{
- sub_8102D28(task->data[4] >> 8);
+ AdvanceReeltimeReel(task->data[4] >> 8);
if (++task->data[5] >= 80)
{
task->data[0]++;
task->data[5] = 0;
sub_81057E8(2);
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 3);
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 3);
}
}
-/*static */void sub_8104598(struct Task *task)
+static void ReeltimeAction5(struct Task *task)
{
- sub_8102D28(task->data[4] >> 8);
+ AdvanceReeltimeReel(task->data[4] >> 8);
task->data[4] = (u8)task->data[4] + 0x80;
if (++task->data[5] >= 80)
{
@@ -2786,23 +2870,23 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81045CC(struct Task *task)
+static void ReeltimeAction6(struct Task *task)
{
- sub_8102D28(task->data[4] >> 8);
+ AdvanceReeltimeReel(task->data[4] >> 8);
task->data[4] = (u8)task->data[4] + 0x40;
if (++task->data[5] >= 40)
{
task->data[5] = 0;
- if (sSlotMachine->unk05)
+ if (sSlotMachine->reelTimeDraw)
{
- if (sSlotMachine->unk0A <= task->data[6])
+ if (sSlotMachine->fairRollsLeft <= task->data[6])
task->data[0]++;
}
else if (task->data[6] > 3)
{
task->data[0]++;
}
- else if (sub_81026DC(task->data[6]))
+ else if (SkipToReeltimeAction14(task->data[6]))
{
task->data[0] = 14;
}
@@ -2810,28 +2894,28 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_810463C(struct Task *task)
+static void ReelTimeAction_LandOnOutcome(struct Task *task)
{
- s16 r5 = sSlotMachine->unk14 % 20;
- if (r5)
+ s16 reeltimePixelOffset = sSlotMachine->reeltimePixelOffset % 20;
+ if (reeltimePixelOffset)
{
- r5 = sub_8102D5C(task->data[4] >> 8);
+ reeltimePixelOffset = AdvanceReeltimeReelToNextTag(task->data[4] >> 8);
task->data[4] = (u8)task->data[4] + 0x40;
}
- else if (sub_8102C48(1) != sSlotMachine->unk05)
+ else if (GetNearbyReelTimeTag(1) != sSlotMachine->reelTimeDraw)
{
- sub_8102D28(task->data[4] >> 8);
- r5 = sSlotMachine->unk14 % 20;
+ AdvanceReeltimeReel(task->data[4] >> 8);
+ reeltimePixelOffset = sSlotMachine->reeltimePixelOffset % 20;
task->data[4] = (u8)task->data[4] + 0x40;
}
- if (r5 == 0 && sub_8102C48(1) == sSlotMachine->unk05)
+ if (reeltimePixelOffset == 0 && GetNearbyReelTimeTag(1) == sSlotMachine->reelTimeDraw)
{
- task->data[4] = 0;
+ task->data[4] = 0; // stop moving
task->data[0]++;
}
}
-/*static */void sub_81046C0(struct Task *task)
+static void ReeltimeAction8(struct Task *task)
{
if (++task->data[4] >= 60)
{
@@ -2839,17 +2923,17 @@ s16 sub_8102D5C(s16 a0)
sub_81056C0();
sub_8105804();
task->data[0]++;
- if(sSlotMachine->unk05 == 0)
+ if(sSlotMachine->reelTimeDraw == 0)
{
task->data[4] = 0xa0;
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 5);
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 5);
PlayFanfare(MUS_ME_ZANNEN);
}
else
{
task->data[4] = 0xc0;
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 4);
- gSprites[sSlotMachine->unk3F].animCmdIndex = 0;
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 4);
+ gSprites[sSlotMachine->reelTimeSprite3F].animCmdIndex = 0;
if (sSlotMachine->pikaPower)
{
sub_8104098();
@@ -2860,13 +2944,13 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8104764(struct Task *task)
+static void ReeltimeAction9(struct Task *task)
{
if ((task->data[4] == 0 || --task->data[4] == 0) && !sub_81040C8())
task->data[0]++;
}
-/*static */void sub_8104794(struct Task *task)
+static void ReeltimeAction10(struct Task *task)
{
s16 r4;
gSpriteCoordOffsetX -= 8;
@@ -2880,53 +2964,53 @@ s16 sub_8102D5C(s16 a0)
task->data[0]++;
}
-/*static */void sub_81047EC(struct Task *task)
+static void ReeltimeAction11(struct Task *task)
{
- sSlotMachine->unk0B = 0;
- sSlotMachine->unk0A = sSlotMachine->unk05;
+ sSlotMachine->fairRollsUsed = 0;
+ sSlotMachine->fairRollsLeft = sSlotMachine->reelTimeDraw;
gSpriteCoordOffsetX = 0;
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
- sSlotMachine->unk1A = 8;
+ sSlotMachine->reelIncrement = 8;
sub_810514C();
sub_81054B8();
sub_8105524();
PlayNewMapMusic(sSlotMachine->backupMapMusic);
- if (sSlotMachine->unk0A == 0)
+ if (sSlotMachine->fairRollsLeft == 0)
{
- DestroyTask(FindTaskIdByFunc(sub_810434C));
+ DestroyTask(FindTaskIdByFunc(RunReeltimeActions));
}
else
{
sub_8104CAC(4);
- task->data[1] = dp15_jump_random_unknown();
+ task->data[1] = SlowReelSpeed();
task->data[2] = 0;
task->data[3] = 0;
task->data[0]++;
}
}
-/*static */void sub_8104860(struct Task *task)
+static void ReeltimeAction12(struct Task *task)
{
- if (sSlotMachine->unk1A == task->data[1])
+ if (sSlotMachine->reelIncrement == task->data[1])
task->data[0]++;
- else if (sSlotMachine->unk1C[0] % 24 == 0 && (++task->data[2]& 0x07) == 0)
- sSlotMachine->unk1A >>= 1;
+ else if (sSlotMachine->reelPixelOffsets[0] % 24 == 0 && (++task->data[2]& 0x07) == 0)
+ sSlotMachine->reelIncrement >>= 1;
}
-/*static */void sub_81048A8(struct Task *task)
+static void ReeltimeAction13(struct Task *task)
{
if (sub_8104E18())
- DestroyTask(FindTaskIdByFunc(sub_810434C));
+ DestroyTask(FindTaskIdByFunc(RunReeltimeActions));
}
-/*static */void sub_81048CC(struct Task *task)
+static void ReeltimeAction14(struct Task *task)
{
sub_81054B8();
sub_81056C0();
sub_8105804();
sub_8105854();
gSprites[sSlotMachine->unk4E[0]].invisible = TRUE;
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 5);
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 5);
task->data[0]++;
task->data[4] = 4;
task->data[5] = 0;
@@ -2935,7 +3019,7 @@ s16 sub_8102D5C(s16 a0)
PlaySE(SE_W153);
}
-/*static */void sub_8104940(struct Task *task)
+static void ReeltimeAction15(struct Task *task)
{
gSpriteCoordOffsetY = task->data[4];
SetGpuReg(REG_OFFSET_BG1VOFS, task->data[4]);
@@ -2955,7 +3039,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81049C8(struct Task *task)
+static void ReeltimeAction16(struct Task *task)
{
gSpriteCoordOffsetY = 0;
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
@@ -2966,7 +3050,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81049F8(struct Task *task)
+static void ReeltimeAction17(struct Task *task)
{
gSpriteCoordOffsetX = 0;
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
@@ -2975,20 +3059,20 @@ s16 sub_8102D5C(s16 a0)
sub_8105554();
sub_8105524();
sub_81059B8();
- DestroyTask(FindTaskIdByFunc(sub_810434C));
+ DestroyTask(FindTaskIdByFunc(RunReeltimeActions));
}
-/*static */void sub_8104A40(s16 a0, s16 a1)
+static void sub_8104A40(s16 a0, s16 a1)
{
s16 i;
for (i = 4; i < 15; i++)
{
- LoadBgTilemap(1, &sReelTimeWindowTilemap[a1 + (i - 4) * 20], 2, 32 * i + a0);
+ LoadBgTilemap(1, &gReelTimeWindowTilemap[a1 + (i - 4) * 20], 2, 32 * i + a0);
}
}
-/*static */void sub_8104A88(s16 a0)
+static void sub_8104A88(s16 a0)
{
u8 i;
@@ -2998,39 +3082,39 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8104AB8(u8 a0)
+static void OpenInfoBox(u8 seemsUnused)
{
- u8 taskId = CreateTask(sub_8104B0C, 1);
- gTasks[taskId].data[1] = a0;
- sub_8104B0C(taskId);
+ u8 taskId = CreateTask(RunInfoBoxActions, 1);
+ gTasks[taskId].data[1] = seemsUnused;
+ RunInfoBoxActions(taskId);
}
-/*static */bool8 sub_8104AEC(void)
+static bool8 IsInfoBoxClosed(void)
{
- if (FindTaskIdByFunc(sub_8104B0C) == 0xFF)
+ if (FindTaskIdByFunc(RunInfoBoxActions) == 0xFF)
return TRUE;
else
return FALSE;
}
-/*static */void sub_8104B0C(u8 taskId)
+static void RunInfoBoxActions(u8 taskId)
{
- gUnknown_083ECC30[gTasks[taskId].data[0]](gTasks + taskId);
+ InfoBoxActions[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-/*static */void sub_8104B3C(struct Task *task)
+static void InfoBox_FadeIn(struct Task *task)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
task->data[0]++;
}
-/*static */void sub_8104B60(struct Task *task)
+static void InfoBox_WaitForFade(struct Task *task)
{
if (!gPaletteFade.active)
task->data[0]++;
}
-/*static */void sub_8104B80(struct Task *task)
+static void InfoBox_8104B80(struct Task *task)
{
sub_8104DA4();
sub_81065DC();
@@ -3040,15 +3124,15 @@ s16 sub_8102D5C(s16 a0)
task->data[0]++;
}
-/*static */void sub_812DD78(struct Task *task)
+static void InfoBox_AddText(struct Task *task)
{
- AddTextPrinterParameterized3(1, 1, 2, 5, gUnknown_085A744C, 0, gText_ReelTimeHelp);
+ AddTextPrinterParameterized3(1, 1, 2, 5, gColors_ReeltimeHelp, 0, gText_ReelTimeHelp);
CopyWindowToVram(1, 3);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
task->data[0]++;
}
-/*static */void sub_8104BC8(struct Task *task)
+static void InfoBox_AwaitPlayerInput(struct Task *task)
{
if (gMain.newKeys & (B_BUTTON | SELECT_BUTTON))
{
@@ -3061,51 +3145,52 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_812DE14(struct Task *task)
+static void InfoBox_812DE14(struct Task *task)
{
sub_812F968();
ShowBg(3);
task->data[0]++;
}
-/*static */void sub_812DE30(struct Task *task)
+static void InfoBox_812DE30(struct Task *task)
{
sub_8104CAC(task->data[1]);
task->data[0]++;
}
-/*static */void sub_8104BFC(struct Task *task)
+static void InfoBox_8104BFC(struct Task *task)
{
sub_810423C(sSlotMachine->pikaPower);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
task->data[0]++;
}
-/*static */void sub_8104C44(struct Task *task)
+static void InfoBox_FreeTask(struct Task *task)
{
- DestroyTask(FindTaskIdByFunc(sub_8104B0C));
+ DestroyTask(FindTaskIdByFunc(RunInfoBoxActions));
}
-/*static */void sub_8104C5C(void)
+static void sub_8104C5C(void)
{
u8 i;
struct Task *task;
i = CreateTask(sub_8104E74_, 3);
- sSlotMachine->unk3D = i;
- task = gTasks + i;
+ sSlotMachine->unkTaskPointer3D = i;
+ task = &gTasks[i];
task->data[1] = -1;
for (i = 4; i < 16; i++)
task->data[i] = MAX_SPRITES;
}
-/*static */void sub_8104CAC(u8 arg0)
+// possibly initialize each wheel
+static void sub_8104CAC(u8 arg0)
{
u8 i;
struct Task *task;
sub_8104DA4();
- task = gTasks + sSlotMachine->unk3D;
+ task = &gTasks[sSlotMachine->unkTaskPointer3D];
task->data[1] = arg0;
for (i = 0; gUnknown_083ED048[arg0][i].unk00 != 0xFF; i++)
@@ -3120,10 +3205,10 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8104D30(u8 a0, SpriteCallback a1, s16 a2, s16 a3, s16 a4)
+static void sub_8104D30(u8 a0, SpriteCallback a1, s16 a2, s16 a3, s16 a4)
{
u8 i;
- struct Task *task = gTasks + sSlotMachine->unk3D;
+ struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3D];
for (i = 4; i < 16; i++)
{
if (task->data[i] == MAX_SPRITES)
@@ -3134,26 +3219,26 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8104DA4(void)
+static void sub_8104DA4(void)
{
u8 i;
- struct Task *task = gTasks + sSlotMachine->unk3D;
+ struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3D];
if ((u16)task->data[1] != 0xFFFF)
gUnknown_083ED064[task->data[1]]();
for (i = 4; i < 16; i++)
{
if (task->data[i] != MAX_SPRITES)
{
- DestroySprite(gSprites + task->data[i]);
+ DestroySprite(&gSprites[task->data[i]]);
task->data[i] = MAX_SPRITES;
}
}
}
-/*static */bool8 sub_8104E18(void)
+static bool8 sub_8104E18(void)
{
u8 i;
- struct Task *task = gTasks + sSlotMachine->unk3D;
+ struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3D];
for (i = 4; i < 16; i++)
{
if (task->data[i] != MAX_SPRITES)
@@ -3165,16 +3250,16 @@ s16 sub_8102D5C(s16 a0)
return TRUE;
}
-/*static */void sub_8104E74_(u8 taskId)
+static void sub_8104E74_(u8 taskId)
{
- gUnknown_083ECC54[gTasks[taskId].data[0]](gTasks + taskId);
+ gUnknown_083ECC54[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-/*static */void nullsub_69(struct Task *task)
+static void nullsub_69(struct Task *task)
{
}
-/*static */void sub_8104EA8(void)
+static void sub_8104EA8(void)
{
s16 i;
s16 j;
@@ -3194,14 +3279,14 @@ s16 sub_8102D5C(s16 a0)
/*static */void sub_8104F18(struct Sprite *sprite)
{
- sprite->data[2] = sSlotMachine->unk1C[sprite->data[0]] + sprite->data[1];
+ sprite->data[2] = sSlotMachine->reelPixelOffsets[sprite->data[0]] + sprite->data[1];
sprite->data[2] %= 120;
- sprite->pos1.y = sSlotMachine->unk22[sprite->data[0]] + 28 + sprite->data[2];
- sprite->sheetTileStart = GetSpriteTileStartByTag(GetTagOfReelSymbolOnScreenAtPos(sprite->data[0], sprite->data[2] / 24));
+ sprite->pos1.y = sSlotMachine->reelPixelOffsetsWhileStopping[sprite->data[0]] + 28 + sprite->data[2];
+ sprite->sheetTileStart = GetSpriteTileStartByTag(GetNearbyTag_Quantized(sprite->data[0], sprite->data[2] / 24));
SetSpriteSheetFrameTileNum(sprite);
}
-/*static */void sub_8104F8C(void)
+static void sub_8104F8C(void)
{
s16 i;
s16 x;
@@ -3212,7 +3297,7 @@ s16 sub_8102D5C(s16 a0)
sub_8104FF4(x, 23, 1, i);
}
-/*static */void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3)
+static void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3)
{
struct Sprite *sprite = gSprites + CreateSprite(&gSpriteTemplate_83ED42C, x, y, 13);
sprite->oam.priority = 2;
@@ -3238,44 +3323,44 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81050C4(void)
+static void sub_81050C4(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED444, 0x58, 0x48, 15);
gSprites[spriteId].oam.priority = 3;
SetSubspriteTables(gSprites + spriteId, gSubspriteTables_83ED704);
}
-/*static */void sub_8105100(void)
+static void sub_8105100(void)
{
struct SpriteTemplate spriteTemplate;
u8 spriteId;
- if (gUnknown_0203AAE4 == NULL)
- gUnknown_0203AAE4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5);
-
- gUnknown_0203AAE4[0].data = gUnknown_0203AAD8 + (0 * 0x800);
- gUnknown_0203AAE4[0].size = 0x800;
- gUnknown_0203AAE4[1].data = gUnknown_0203AAD8 + (1 * 0x800);
- gUnknown_0203AAE4[1].size = 0x800;
- gUnknown_0203AAE4[2].data = gUnknown_0203AAD8 + (2 * 0x800);
- gUnknown_0203AAE4[2].size = 0x800;
- gUnknown_0203AAE4[3].data = gUnknown_0203AAD8 + (3 * 0x800);
- gUnknown_0203AAE4[3].size = 0x800;
- gUnknown_0203AAE4[4].data = gUnknown_0203AAD8 + (4 * 0x800);
- gUnknown_0203AAE4[4].size = 0x800;
+ if (sUnknown_0203AAE4 == NULL)
+ sUnknown_0203AAE4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5);
+
+ sUnknown_0203AAE4[0].data = sUnknown_0203AAD8 + (0 * 0x800);
+ sUnknown_0203AAE4[0].size = 0x800;
+ sUnknown_0203AAE4[1].data = sUnknown_0203AAD8 + (1 * 0x800);
+ sUnknown_0203AAE4[1].size = 0x800;
+ sUnknown_0203AAE4[2].data = sUnknown_0203AAD8 + (2 * 0x800);
+ sUnknown_0203AAE4[2].size = 0x800;
+ sUnknown_0203AAE4[3].data = sUnknown_0203AAD8 + (3 * 0x800);
+ sUnknown_0203AAE4[3].size = 0x800;
+ sUnknown_0203AAE4[4].data = sUnknown_0203AAD8 + (4 * 0x800);
+ sUnknown_0203AAE4[4].size = 0x800;
spriteTemplate = gSpriteTemplate_83ED45C;
- spriteTemplate.images = gUnknown_0203AAE4;
+ spriteTemplate.images = sUnknown_0203AAE4;
spriteId = CreateSprite(&spriteTemplate, 280, 80, 1);
gSprites[spriteId].oam.priority = 1;
gSprites[spriteId].coordOffsetEnabled = TRUE;
- sSlotMachine->unk3F = spriteId;
+ sSlotMachine->reelTimeSprite3F = spriteId;
}
-/*static */void sub_810514C(void)
+static void sub_810514C(void)
{
- DestroySprite(gSprites + sSlotMachine->unk3F);
- if (gUnknown_0203AAE4 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAE4);
+ DestroySprite(gSprites + sSlotMachine->reelTimeSprite3F);
+ if (sUnknown_0203AAE4 != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAE4);
}
/*static */void sub_8105170(struct Sprite *sprite)
@@ -3289,19 +3374,19 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81051C0(void)
+static void sub_81051C0(void)
{
struct SpriteTemplate spriteTemplate;
u8 spriteId;
struct Sprite *sprite;
- if (gUnknown_0203AAE8 == NULL)
- gUnknown_0203AAE8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ if (sUnknown_0203AAE8 == NULL)
+ sUnknown_0203AAE8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AAE8[0].data = gUnknown_0203AAD8 + 0x2800;
- gUnknown_0203AAE8[0].size = 0x300;
+ sUnknown_0203AAE8[0].data = sUnknown_0203AAD8 + 0x2800;
+ sUnknown_0203AAE8[0].size = 0x300;
spriteTemplate = gSpriteTemplate_83ED474;
- spriteTemplate.images = gUnknown_0203AAE8;
+ spriteTemplate.images = sUnknown_0203AAE8;
spriteId = CreateSprite(&spriteTemplate, 368, 52, 7);
sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
@@ -3309,13 +3394,13 @@ s16 sub_8102D5C(s16 a0)
SetSubspriteTables(sprite, gSubspriteTables_83ED73C);
sSlotMachine->unk49[0] = spriteId;
- if (gUnknown_0203AAEC == NULL)
- gUnknown_0203AAEC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ if (sUnknown_0203AAEC == NULL)
+ sUnknown_0203AAEC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AAEC[0].data = gUnknown_0203AAD8 + 0x2800 + 0x300;
- gUnknown_0203AAEC[0].size = 0x500;
+ sUnknown_0203AAEC[0].data = sUnknown_0203AAD8 + 0x2800 + 0x300;
+ sUnknown_0203AAEC[0].size = 0x500;
spriteTemplate = gSpriteTemplate_83ED48C;
- spriteTemplate.images = gUnknown_0203AAEC;
+ spriteTemplate.images = sUnknown_0203AAEC;
spriteId = CreateSprite(&spriteTemplate, 368, 84, 7);
sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
@@ -3324,19 +3409,19 @@ s16 sub_8102D5C(s16 a0)
sSlotMachine->unk49[1] = spriteId;
}
-/*static */void sub_8105284_(void)
+static void sub_8105284_(void)
{
struct SpriteTemplate spriteTemplate;
u8 spriteId;
struct Sprite *sprite;
- if (gUnknown_0203AAF0 == NULL)
- gUnknown_0203AAF0 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ if (sUnknown_0203AAF0 == NULL)
+ sUnknown_0203AAF0 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AAF0[0].data = gUnknown_0203AAD8 + 0x3000;
- gUnknown_0203AAF0[0].size = 0x600;
+ sUnknown_0203AAF0[0].data = sUnknown_0203AAD8 + 0x3000;
+ sUnknown_0203AAF0[0].size = 0x600;
spriteTemplate = gSpriteTemplate_83ED4A4;
- spriteTemplate.images = gUnknown_0203AAF0;
+ spriteTemplate.images = sUnknown_0203AAF0;
spriteId = CreateSprite(&spriteTemplate, 0xa8 - gSpriteCoordOffsetX, 0x50, 7);
sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
@@ -3345,7 +3430,7 @@ s16 sub_8102D5C(s16 a0)
sSlotMachine->unk42 = spriteId;
}
-/*static */void sub_81052EC(void)
+static void sub_81052EC(void)
{
u8 i;
s16 r5;
@@ -3362,13 +3447,13 @@ s16 sub_8102D5C(s16 a0)
/*static */void sub_810535C(struct Sprite *sprite)
{
- s16 r0 = (u16)(sSlotMachine->unk14 + sprite->data[7]);
+ s16 r0 = (u16)(sSlotMachine->reeltimePixelOffset + sprite->data[7]);
r0 %= 40;
sprite->pos1.y = r0 + 59;
- StartSpriteAnimIfDifferent(sprite, sub_8102C48(r0 / 20));
+ StartSpriteAnimIfDifferent(sprite, GetNearbyReelTimeTag(r0 / 20));
}
-/*static */void sub_81053A0(void)
+static void sub_81053A0(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x170, 0x64, 9);
struct Sprite *sprite = &gSprites[spriteId];
@@ -3385,7 +3470,7 @@ s16 sub_8102D5C(s16 a0)
sSlotMachine->unk4E[1] = spriteId;
}
-/*static */void sub_810545C(void)
+static void sub_810545C(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4EC, 0x170, 0x4c, 11);
struct Sprite *sprite = &gSprites[spriteId];
@@ -3395,7 +3480,7 @@ s16 sub_8102D5C(s16 a0)
sSlotMachine->unk40 = spriteId;
}
-/*static */void sub_81054B8(void)
+static void sub_81054B8(void)
{
u8 i;
@@ -3403,16 +3488,16 @@ s16 sub_8102D5C(s16 a0)
for (i = 0; i < 2; i++)
DestroySprite(&gSprites[sSlotMachine->unk49[i]]);
- if (gUnknown_0203AAE8 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAE8);
- if (gUnknown_0203AAEC != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAEC);
+ if (sUnknown_0203AAE8 != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAE8);
+ if (sUnknown_0203AAEC != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAEC);
for (i = 0; i < 3; i++)
DestroySprite(&gSprites[sSlotMachine->unk4B[i]]);
}
-/*static */void sub_8105524(void)
+static void sub_8105524(void)
{
u8 i;
@@ -3420,20 +3505,21 @@ s16 sub_8102D5C(s16 a0)
DestroySprite(&gSprites[sSlotMachine->unk4E[i]]);
}
-/*static */void sub_8105554(void)
+static void sub_8105554(void)
{
DestroySprite(&gSprites[sSlotMachine->unk42]);
- if (gUnknown_0203AAF0 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAF0);
+ if (sUnknown_0203AAF0 != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAF0);
}
-/*static */void sub_8105578(void)
+// TODO: check if this is true
+static void CreateReelTimeSprites1(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0x98, 0x20, 5);
struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->hFlip = TRUE;
- sSlotMachine->unk50[0] = spriteId;
+ sSlotMachine->reelTimeSprites1[0] = spriteId;
sprite->data[0] = 8;
sprite->data[1] = -1;
sprite->data[2] = -1;
@@ -3442,7 +3528,7 @@ s16 sub_8102D5C(s16 a0)
spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0xb8, 0x20, 5);
sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
- sSlotMachine->unk50[1] = spriteId;
+ sSlotMachine->reelTimeSprites1[1] = spriteId;
sprite->data[1] = 1;
sprite->data[2] = -1;
sprite->data[7] = 0x20;
@@ -3470,21 +3556,21 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105688(s16 a0)
+static void sub_8105688(s16 a0)
{
- gSprites[sSlotMachine->unk50[0]].data[7] = a0;
- gSprites[sSlotMachine->unk50[1]].data[7] = a0;
+ gSprites[sSlotMachine->reelTimeSprites1[0]].data[7] = a0;
+ gSprites[sSlotMachine->reelTimeSprites1[1]].data[7] = a0;
}
-/*static */void sub_81056C0(void)
+static void sub_81056C0(void)
{
u8 i;
for (i = 0; i < 2; i++)
- DestroySprite(&gSprites[sSlotMachine->unk50[i]]);
+ DestroySprite(&gSprites[sSlotMachine->reelTimeSprites1[i]]);
}
-/*static */void sub_81056F0(void)
+static void CreateReelTimeSprite2(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x48, 0x50, 3);
gSprites[spriteId].oam.priority = 1;
@@ -3492,12 +3578,12 @@ s16 sub_8102D5C(s16 a0)
gSprites[spriteId].data[5] = 0;
gSprites[spriteId].data[6] = 16;
gSprites[spriteId].data[7] = 8;
- sSlotMachine->unk52[0] = spriteId;
+ sSlotMachine->reelTimeSprites2[0] = spriteId;
spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x68, 0x50, 3);
gSprites[spriteId].oam.priority = 1;
gSprites[spriteId].hFlip = TRUE;
- sSlotMachine->unk52[1] = spriteId;
+ sSlotMachine->reelTimeSprites2[1] = spriteId;
}
/*static */void sub_8105784(struct Sprite *sprite)
@@ -3512,20 +3598,20 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81057E8(s16 a0)
+static void sub_81057E8(s16 a0)
{
- gSprites[sSlotMachine->unk52[0]].data[7] = a0;
+ gSprites[sSlotMachine->reelTimeSprites2[0]].data[7] = a0;
}
-/*static */void sub_8105804(void)
+static void sub_8105804(void)
{
u8 i;
MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, 0, 0, 0);
for (i = 0; i < 2; i++)
- DestroySprite(&gSprites[sSlotMachine->unk52[i]]);
+ DestroySprite(&gSprites[sSlotMachine->reelTimeSprites2[i]]);
}
-/*static */void sub_8105854(void)
+static void sub_8105854(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED534, 0xa8, 0x50, 6);
gSprites[spriteId].oam.priority = 1;
@@ -3537,12 +3623,12 @@ s16 sub_8102D5C(s16 a0)
sprite->pos2.y = gSpriteCoordOffsetY;
}
-/*static */void sub_81058A0(void)
+static void sub_81058A0(void)
{
DestroySprite(&gSprites[sSlotMachine->unk41]);
}
-/*static */void sub_81058C4(void)
+static void sub_81058C4(void)
{
u8 i;
u16 sp[] = {0x0, 0x40, 0x80, 0xC0};
@@ -3575,7 +3661,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81059B8(void)
+static void sub_81059B8(void)
{
u8 i;
for (i = 0; i < 4; i++)
@@ -3584,7 +3670,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81059E8(void)
+static void sub_81059E8(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED564, 0xa8, 0x3c, 8);
struct Sprite *sprite = &gSprites[spriteId];
@@ -3621,19 +3707,19 @@ s16 sub_8102D5C(s16 a0)
sprite->pos2.y -= (sprite->data[1] >> 8);
}
-/*static */u8 sub_8105ACC(void)
+static u8 sub_8105ACC(void)
{
return gSprites[sSlotMachine->unk43].data[7];
}
-/*static */void sub_8105AEC(void)
+static void sub_8105AEC(void)
{
struct Sprite *sprite = &gSprites[sSlotMachine->unk43];
FreeOamMatrix(sprite->oam.matrixNum);
DestroySprite(sprite);
}
-/*static */u8 sub_8105B1C(s16 x, s16 y)
+static u8 sub_8105B1C(s16 x, s16 y)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED6CC, x, y, 12);
struct Sprite *sprite = &gSprites[spriteId];
@@ -3649,19 +3735,19 @@ s16 sub_8102D5C(s16 a0)
sprite->data[7] = 1;
}
-/*static */void sub_8105B88(u8 spriteId)
+static void sub_8105B88(u8 spriteId)
{
struct Sprite *sprite = &gSprites[spriteId];
FreeOamMatrix(sprite->oam.matrixNum);
DestroySprite(sprite);
}
-/*static */u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2)
+static u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2)
{
return sub_8105BF8(templateIdx, gUnknown_083ECF0C[cbAndCoordsIdx], gUnknown_083ECE7E[cbAndCoordsIdx][0], gUnknown_083ECE7E[cbAndCoordsIdx][1], a2);
}
-/*static */u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4)
+static u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4)
{
struct SpriteTemplate spriteTemplate;
u8 spriteId;
@@ -3680,12 +3766,12 @@ s16 sub_8102D5C(s16 a0)
return spriteId;
}
-/*static */void sub_8105C64(struct Sprite *sprite)
+static void sub_8105C64(struct Sprite *sprite)
{
sprite->data[7] = 0;
}
-/*static */void sub_8105C6C(struct Sprite *sprite)
+static void sub_8105C6C(struct Sprite *sprite)
{
s16 sp0[] = {4, -4, 4, -4};
s16 sp8[] = {4, 4, -4, -4};
@@ -3704,26 +3790,26 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105CF0(struct Sprite *sprite)
+static void sub_8105CF0(struct Sprite *sprite)
{
sprite->hFlip = TRUE;
sub_8105C6C(sprite);
}
-/*static */void sub_8105D08(struct Sprite *sprite)
+static void sub_8105D08(struct Sprite *sprite)
{
sprite->vFlip = TRUE;
sub_8105C6C(sprite);
}
-/*static */void sub_8105D20(struct Sprite *sprite)
+static void sub_8105D20(struct Sprite *sprite)
{
sprite->hFlip = TRUE;
sprite->vFlip = TRUE;
sub_8105C6C(sprite);
}
-/*static */void sub_8105D3C(struct Sprite *sprite)
+static void sub_8105D3C(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -3750,7 +3836,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105DA4(struct Sprite *sprite)
+static void sub_8105DA4(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -3777,12 +3863,12 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105E08(struct Sprite *sprite)
+static void sub_8105E08(struct Sprite *sprite)
{
switch (sprite->data[0])
{
case 0:
- StartSpriteAnim(sprite, sSlotMachine->unk0A - 1);
+ StartSpriteAnim(sprite, sSlotMachine->fairRollsLeft - 1);
sprite->data[0]++;
// fallthrough
case 1:
@@ -3815,7 +3901,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105EB4(struct Sprite *sprite)
+static void sub_8105EB4(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -3855,7 +3941,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105F54(struct Sprite *sprite)
+static void sub_8105F54(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -3875,7 +3961,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105F9C(struct Sprite *sprite)
+static void sub_8105F9C(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -3909,7 +3995,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8106058(struct Sprite *sprite)
+static void sub_8106058(struct Sprite *sprite)
{
if (sprite->data[1] < 3)
{
@@ -3933,7 +4019,7 @@ s16 sub_8102D5C(s16 a0)
sprite->data[7] = 0;
}
-/*static */void sub_81060FC(struct Sprite *sprite)
+static void sub_81060FC(struct Sprite *sprite)
{
s16 sp00[] = {0, -40, 0, 0, 48, 0, 24, 0};
s16 sp10[] = {-32, 0, -32, -48, 0, -48, 0, -48};
@@ -3968,7 +4054,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81061C8(struct Sprite *sprite)
+static void sub_81061C8(struct Sprite *sprite)
{
s16 sp0[] = {160, 192, 224, 104, 80, 64, 48, 24};
@@ -3983,7 +4069,7 @@ s16 sub_8102D5C(s16 a0)
sprite->data[1]--;
}
-/*static */void sub_8106230(struct Sprite *sprite)
+static void sub_8106230(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -4037,21 +4123,21 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void nullsub_70(void)
+static void nullsub_70(void)
{
}
-/*static */void sub_8106364(void)
+static void sub_8106364(void)
{
SetGpuReg(REG_OFFSET_MOSAIC, 0);
}
-/*static */void sub_8106370(void)
+static void sub_8106370(void)
{
LoadPalette(gUnknown_083EDE20, (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20);
}
-/*static */void sub_810639C(void)
+static void sub_810639C(void)
{
sSlotMachine->win0h = 0xf0;
sSlotMachine->win0v = 0xa0;
@@ -4059,47 +4145,47 @@ s16 sub_8102D5C(s16 a0)
sSlotMachine->winOut = 0x3f;
}
-/*static */void sub_81063C0(void)
+static void sub_81063C0(void)
{
u8 i;
sub_8106404();
- gUnknown_0203AAD4 = Alloc(0x3200);
- LZDecompressWram(gSlotMachineReelTime_Gfx, gUnknown_0203AAD4);
- gUnknown_0203AAD8 = Alloc(0x3600);
- LZDecompressWram(sReelTimeGfx, gUnknown_0203AAD8);
- gUnknown_0203AB30 = AllocZeroed(sizeof(struct SpriteSheet) * 22);
+ sUnknown_0203AAD4 = Alloc(0x3200);
+ LZDecompressWram(gSlotMachineReelTime_Gfx, sUnknown_0203AAD4);
+ sUnknown_0203AAD8 = Alloc(0x3600);
+ LZDecompressWram(gReelTimeGfx, sUnknown_0203AAD8);
+ sUnknown_0203AB30 = AllocZeroed(sizeof(struct SpriteSheet) * 22);
for (i = 0; i < 22; i++)
{
- gUnknown_0203AB30[i].data = sSlotMachineSpriteSheets[i].data;
- gUnknown_0203AB30[i].size = sSlotMachineSpriteSheets[i].size;
- gUnknown_0203AB30[i].tag = sSlotMachineSpriteSheets[i].tag;
+ sUnknown_0203AB30[i].data = gSlotMachineSpriteSheets[i].data;
+ sUnknown_0203AB30[i].size = gSlotMachineSpriteSheets[i].size;
+ sUnknown_0203AB30[i].tag = gSlotMachineSpriteSheets[i].tag;
}
- gUnknown_0203AB30[17].data = gUnknown_0203AAD4 + 0xA00;
- gUnknown_0203AB30[18].data = gUnknown_0203AAD4 + 0x1400;
- gUnknown_0203AB30[19].data = gUnknown_0203AAD4 + 0x1600;
- gUnknown_0203AB30[20].data = gUnknown_0203AAD4 + 0x1900;
- LoadSpriteSheets(gUnknown_0203AB30);
+ sUnknown_0203AB30[17].data = sUnknown_0203AAD4 + 0xA00;
+ sUnknown_0203AB30[18].data = sUnknown_0203AAD4 + 0x1400;
+ sUnknown_0203AB30[19].data = sUnknown_0203AAD4 + 0x1600;
+ sUnknown_0203AB30[20].data = sUnknown_0203AAD4 + 0x1900;
+ LoadSpriteSheets(sUnknown_0203AB30);
LoadSpritePalettes(gSlotMachineSpritePalettes);
}
-/*static */void sub_8106404(void)
+static void sub_8106404(void)
{
u8 *dest;
u8 i, j;
- gUnknown_0203AB2C = AllocZeroed(sizeof(struct SpriteSheet));
- gUnknown_0203AAE0 = AllocZeroed(0x2000);
- dest = gUnknown_0203AAE0;
+ sUnknown_0203AB2C = AllocZeroed(sizeof(struct SpriteSheet));
+ sUnknown_0203AAE0 = AllocZeroed(0x2000);
+ dest = sUnknown_0203AAE0;
for (i = 0; i < 0x40; i++)
{
for (j = 0; j < 0x20; j++, dest++)
*dest = gUnknown_083EDCDC[j];
}
- gUnknown_0203AB2C->data = gUnknown_0203AAE0;
- gUnknown_0203AB2C->size = 0x800;
- gUnknown_0203AB2C->tag = 0x11;
- LoadSpriteSheet(gUnknown_0203AB2C);
+ sUnknown_0203AB2C->data = sUnknown_0203AAE0;
+ sUnknown_0203AB2C->size = 0x800;
+ sUnknown_0203AB2C->tag = 0x11;
+ LoadSpriteSheet(sUnknown_0203AB2C);
}
extern const u32 gSlotMachineMenu_Gfx[];
@@ -4107,27 +4193,27 @@ extern const u16 gSlotMachineMenu_Tilemap[];
extern const u16 gUnknown_08DCEC70[];
extern const u16 gSlotMachineMenu_Pal[];
-/*static */void sub_8106448(void)
+static void sub_8106448(void)
{
- gUnknown_0203AAC8 = Alloc(0x2200);
- LZDecompressWram(gSlotMachineMenu_Gfx, gUnknown_0203AAC8);
- LoadBgTiles(2, gUnknown_0203AAC8, 0x2200, 0);
+ sUnknown_0203AAC8 = Alloc(0x2200);
+ LZDecompressWram(gSlotMachineMenu_Gfx, sUnknown_0203AAC8);
+ LoadBgTiles(2, sUnknown_0203AAC8, 0x2200, 0);
LoadPalette(gSlotMachineMenu_Pal, 0, 160);
LoadPalette(gPalette_83EDE24, 208, 32);
}
-/*static */void sub_81064B8(void)
+static void sub_81064B8(void)
{
sub_812F968();
LoadSlotMachineWheelOverlay();
}
-/*static */void sub_812F968(void)
+static void sub_812F968(void)
{
LoadBgTilemap(2, gSlotMachineMenu_Tilemap, 0x500, 0);
}
-/*static */void LoadSlotMachineWheelOverlay(void)
+static void LoadSlotMachineWheelOverlay(void)
{
s16 x, y, dx;
@@ -4135,143 +4221,143 @@ extern const u16 gSlotMachineMenu_Pal[];
{
for (dx = 0; dx < 4; dx++)
{
- LoadBgTilemap(3, gUnknown_0203AAD0, 2, x + dx + 5 * 32);
- LoadBgTilemap(3, gUnknown_0203AAD0 + 1, 2, x + dx + 13 * 32);
- LoadBgTilemap(3, gUnknown_0203AAD0 + 2, 2, x + dx + 6 * 32);
- LoadBgTilemap(3, gUnknown_0203AAD0 + 3, 2, x + dx + 12 * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0, 2, x + dx + 5 * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0 + 1, 2, x + dx + 13 * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0 + 2, 2, x + dx + 6 * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0 + 3, 2, x + dx + 12 * 32);
}
- LoadBgTilemap(3, gUnknown_0203AAD0 + 4, 2, x + 6 * 32);
- LoadBgTilemap(3, gUnknown_0203AAD0 + 5, 2, x + 12 * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0 + 4, 2, x + 6 * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0 + 5, 2, x + 12 * 32);
for (y = 7; y <= 11; y++)
- LoadBgTilemap(3, gUnknown_0203AAD0 + 6, 2, x + y * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0 + 6, 2, x + y * 32);
}
}
-/*static */void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4)
+static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4)
{
- gUnknown_0203AADC[0] = arg1;
- gUnknown_0203AADC[1] = arg2;
- gUnknown_0203AADC[2] = arg3;
- gUnknown_0203AADC[3] = arg4;
+ sUnknown_0203AADC[0] = arg1;
+ sUnknown_0203AADC[1] = arg2;
+ sUnknown_0203AADC[2] = arg3;
+ sUnknown_0203AADC[3] = arg4;
- LoadBgTilemap(2, gUnknown_0203AADC, 2, 15 * 32 + arg0);
- LoadBgTilemap(2, gUnknown_0203AADC + 1, 2, 15 * 32 + 1 + arg0);
- LoadBgTilemap(2, gUnknown_0203AADC + 2, 2, 16 * 32 + arg0);
- LoadBgTilemap(2, gUnknown_0203AADC + 3, 2, 16 * 32 + 1 + arg0);
+ LoadBgTilemap(2, sUnknown_0203AADC, 2, 15 * 32 + arg0);
+ LoadBgTilemap(2, sUnknown_0203AADC + 1, 2, 15 * 32 + 1 + arg0);
+ LoadBgTilemap(2, sUnknown_0203AADC + 2, 2, 16 * 32 + arg0);
+ LoadBgTilemap(2, sUnknown_0203AADC + 3, 2, 16 * 32 + 1 + arg0);
}
-/*static */void sub_81065DC(void)
+static void sub_81065DC(void)
{
LoadBgTilemap(2, gUnknown_08DCEC70, 0x500, 0);
HideBg(3);
}
-/*static */void SlotMachineSetup_9_0(void)
-{
- gUnknown_03001188[0] = gUnknown_0203AAF4;
- gUnknown_03001188[1] = gUnknown_0203AAF8;
- gUnknown_03001188[2] = gUnknown_0203AAFC;
- gUnknown_03001188[3] = gUnknown_0203AB04;
- gUnknown_03001188[4] = gUnknown_0203AB08;
- gUnknown_03001188[5] = gUnknown_0203AB18;
- gUnknown_03001188[6] = gUnknown_0203AB1C;
- gUnknown_03001188[7] = gUnknown_0203AB20;
- gUnknown_03001188[8] = gUnknown_0203AB24;
- gUnknown_03001188[9] = gUnknown_0203AB28;
- gUnknown_03001188[10] = gUnknown_0203AB00;
- gUnknown_03001188[11] = gUnknown_0203AB00;
- gUnknown_03001188[12] = gUnknown_0203AB00;
- gUnknown_03001188[13] = gUnknown_0203AB00;
- gUnknown_03001188[14] = gUnknown_0203AB0C;
- gUnknown_03001188[15] = gUnknown_0203AB0C;
- gUnknown_03001188[16] = gUnknown_0203AB0C;
- gUnknown_03001188[17] = gUnknown_0203AB0C;
- gUnknown_03001188[18] = gUnknown_0203AB0C;
- gUnknown_03001188[19] = gUnknown_0203AB10;
- gUnknown_03001188[20] = gUnknown_0203AB10;
- gUnknown_03001188[21] = gUnknown_0203AB10;
- gUnknown_03001188[22] = gUnknown_0203AB14;
- gUnknown_03001188[23] = gUnknown_0203AB14;
- gUnknown_03001188[24] = gUnknown_0203AB14;
+static void SlotMachineSetup_9_0(void)
+{
+ gUnknown_03001188[0] = sUnknown_0203AAF4;
+ gUnknown_03001188[1] = sUnknown_0203AAF8;
+ gUnknown_03001188[2] = sUnknown_0203AAFC;
+ gUnknown_03001188[3] = sUnknown_0203AB04;
+ gUnknown_03001188[4] = sUnknown_0203AB08;
+ gUnknown_03001188[5] = sUnknown_0203AB18;
+ gUnknown_03001188[6] = sUnknown_0203AB1C;
+ gUnknown_03001188[7] = sUnknown_0203AB20;
+ gUnknown_03001188[8] = sUnknown_0203AB24;
+ gUnknown_03001188[9] = sUnknown_0203AB28;
+ gUnknown_03001188[10] = sUnknown_0203AB00;
+ gUnknown_03001188[11] = sUnknown_0203AB00;
+ gUnknown_03001188[12] = sUnknown_0203AB00;
+ gUnknown_03001188[13] = sUnknown_0203AB00;
+ gUnknown_03001188[14] = sUnknown_0203AB0C;
+ gUnknown_03001188[15] = sUnknown_0203AB0C;
+ gUnknown_03001188[16] = sUnknown_0203AB0C;
+ gUnknown_03001188[17] = sUnknown_0203AB0C;
+ gUnknown_03001188[18] = sUnknown_0203AB0C;
+ gUnknown_03001188[19] = sUnknown_0203AB10;
+ gUnknown_03001188[20] = sUnknown_0203AB10;
+ gUnknown_03001188[21] = sUnknown_0203AB10;
+ gUnknown_03001188[22] = sUnknown_0203AB14;
+ gUnknown_03001188[23] = sUnknown_0203AB14;
+ gUnknown_03001188[24] = sUnknown_0203AB14;
gUnknown_03001188[25] = NULL;
}
-/*static */void SlotMachineSetup_8_0(void)
+static void SlotMachineSetup_8_0(void)
{
- gUnknown_0203AAF4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AAF4[0].data = gUnknown_0203AAD4;
- gUnknown_0203AAF4[0].size = 0x600;
+ sUnknown_0203AAF4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AAF4[0].data = sUnknown_0203AAD4;
+ sUnknown_0203AAF4[0].size = 0x600;
- gUnknown_0203AAF8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AAF8[0].data = gUnknown_0203AAD4 + 0x600;
- gUnknown_0203AAF8[0].size = 0x200;
+ sUnknown_0203AAF8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AAF8[0].data = sUnknown_0203AAD4 + 0x600;
+ sUnknown_0203AAF8[0].size = 0x200;
- gUnknown_0203AAFC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AAFC[0].data = gUnknown_0203AAD4 + 0x800;
- gUnknown_0203AAFC[0].size = 0x200;
+ sUnknown_0203AAFC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AAFC[0].data = sUnknown_0203AAD4 + 0x800;
+ sUnknown_0203AAFC[0].size = 0x200;
- gUnknown_0203AB00 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB00[0].data = gUnknown_0203AAD4 + 0xA00;
- gUnknown_0203AB00[0].size = 0x200;
+ sUnknown_0203AB00 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB00[0].data = sUnknown_0203AAD4 + 0xA00;
+ sUnknown_0203AB00[0].size = 0x200;
- gUnknown_0203AB04 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB04[0].data = gUnknown_0203AAD4 + 0xC00;
- gUnknown_0203AB04[0].size = 0x300;
+ sUnknown_0203AB04 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB04[0].data = sUnknown_0203AAD4 + 0xC00;
+ sUnknown_0203AB04[0].size = 0x300;
- gUnknown_0203AB08 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB08[0].data = gUnknown_0203AAD4 + 0x1000;
- gUnknown_0203AB08[0].size = 0x400;
+ sUnknown_0203AB08 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB08[0].data = sUnknown_0203AAD4 + 0x1000;
+ sUnknown_0203AB08[0].size = 0x400;
- gUnknown_0203AB0C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB0C[0].data = gUnknown_0203AAD4 + 0x1400;
- gUnknown_0203AB0C[0].size = 0x200;
+ sUnknown_0203AB0C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB0C[0].data = sUnknown_0203AAD4 + 0x1400;
+ sUnknown_0203AB0C[0].size = 0x200;
- gUnknown_0203AB10 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB10[0].data = gUnknown_0203AAD4 + 0x1600;
- gUnknown_0203AB10[0].size = 0x300;
+ sUnknown_0203AB10 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB10[0].data = sUnknown_0203AAD4 + 0x1600;
+ sUnknown_0203AB10[0].size = 0x300;
- gUnknown_0203AB14 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB14[0].data = gUnknown_0203AAD4 + 0x1900;
- gUnknown_0203AB14[0].size = 0x300;
+ sUnknown_0203AB14 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB14[0].data = sUnknown_0203AAD4 + 0x1900;
+ sUnknown_0203AB14[0].size = 0x300;
- gUnknown_0203AB18 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
- gUnknown_0203AB18[0].data = gUnknown_0203AAD4 + 0x1C00;
- gUnknown_0203AB18[0].size = 0x200;
- gUnknown_0203AB18[1].data = gUnknown_0203AAD4 + 0x1E00;
- gUnknown_0203AB18[1].size = 0x200;
+ sUnknown_0203AB18 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
+ sUnknown_0203AB18[0].data = sUnknown_0203AAD4 + 0x1C00;
+ sUnknown_0203AB18[0].size = 0x200;
+ sUnknown_0203AB18[1].data = sUnknown_0203AAD4 + 0x1E00;
+ sUnknown_0203AB18[1].size = 0x200;
- gUnknown_0203AB1C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB1C[0].data = gUnknown_0203AAD4 + 0x2000;
- gUnknown_0203AB1C[0].size = 640;
+ sUnknown_0203AB1C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB1C[0].data = sUnknown_0203AAD4 + 0x2000;
+ sUnknown_0203AB1C[0].size = 640;
- gUnknown_0203AB20 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5);
- gUnknown_0203AB20[0].data = gUnknown_0203AAD4 + 0x2280;
- gUnknown_0203AB20[0].size = 0x80;
- gUnknown_0203AB20[1].data = gUnknown_0203AAD4 + 0x2300;
- gUnknown_0203AB20[1].size = 0x80;
- gUnknown_0203AB20[2].data = gUnknown_0203AAD4 + 0x2380;
- gUnknown_0203AB20[2].size = 0x80;
- gUnknown_0203AB20[3].data = gUnknown_0203AAD4 + 0x2400;
- gUnknown_0203AB20[3].size = 0x80;
- gUnknown_0203AB20[4].data = gUnknown_0203AAD4 + 0x2480;
- gUnknown_0203AB20[4].size = 0x80;
+ sUnknown_0203AB20 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5);
+ sUnknown_0203AB20[0].data = sUnknown_0203AAD4 + 0x2280;
+ sUnknown_0203AB20[0].size = 0x80;
+ sUnknown_0203AB20[1].data = sUnknown_0203AAD4 + 0x2300;
+ sUnknown_0203AB20[1].size = 0x80;
+ sUnknown_0203AB20[2].data = sUnknown_0203AAD4 + 0x2380;
+ sUnknown_0203AB20[2].size = 0x80;
+ sUnknown_0203AB20[3].data = sUnknown_0203AAD4 + 0x2400;
+ sUnknown_0203AB20[3].size = 0x80;
+ sUnknown_0203AB20[4].data = sUnknown_0203AAD4 + 0x2480;
+ sUnknown_0203AB20[4].size = 0x80;
- gUnknown_0203AB24 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
- gUnknown_0203AB24[0].data = gUnknown_0203AAD4 + 0x2600;
- gUnknown_0203AB24[0].size = 0x480;
- gUnknown_0203AB24[1].data = gUnknown_0203AAD4 + 10880;
- gUnknown_0203AB24[1].size = 0x480;
+ sUnknown_0203AB24 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
+ sUnknown_0203AB24[0].data = sUnknown_0203AAD4 + 0x2600;
+ sUnknown_0203AB24[0].size = 0x480;
+ sUnknown_0203AB24[1].data = sUnknown_0203AAD4 + 10880;
+ sUnknown_0203AB24[1].size = 0x480;
- gUnknown_0203AB28 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
- gUnknown_0203AB28[0].data = gUnknown_0203AAD4 + 0x2F00;
- gUnknown_0203AB28[0].size = 0x180;
- gUnknown_0203AB28[1].data = gUnknown_0203AAD4 + 0x3080;
- gUnknown_0203AB28[1].size = 0x180;
+ sUnknown_0203AB28 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
+ sUnknown_0203AB28[0].data = sUnknown_0203AAD4 + 0x2F00;
+ sUnknown_0203AB28[0].size = 0x180;
+ sUnknown_0203AB28[1].data = sUnknown_0203AAD4 + 0x3080;
+ sUnknown_0203AB28[1].size = 0x180;
}
-const u8 sReelSymbols[][21] =
+const u8 gReelSymbols[][REEL_NUM_TAGS] =
{
{
SLOT_MACHINE_TAG_7_RED,
@@ -4344,17 +4430,17 @@ const u8 sReelSymbols[][21] =
},
};
-const u8 gUnknown_083ECCF1[] = {
+const u8 gReelTimeTags[] = {
1, 0, 5, 4, 3, 2
};
-const s16 gUnknown_083ECCF8[][2] = {
+const s16 gInitialReelPositions[][2] = {
{0, 6},
{0, 10},
{0, 2}
};
-const u8 gUnknown_083ECD04[][3] = {
+const u8 gLuckyRoundProbabilities[][3] = {
{1, 1, 12},
{1, 1, 14},
{2, 2, 14},
@@ -4363,13 +4449,13 @@ const u8 gUnknown_083ECD04[][3] = {
{3, 3, 16}
};
-const u8 gUnknown_083ECD16[][6] = {
+const u8 gLuckyFlagProbabilities_Top3[][6] = {
{25, 25, 30, 40, 40, 50},
{25, 25, 30, 30, 35, 35},
{25, 25, 30, 25, 25, 30}
};
-const u8 gUnknown_083ECD28[][6] = {
+const u8 gLuckyFlagProbabilities_NotTop3[][6] = {
{20, 25, 25, 20, 25, 25},
{12, 15, 15, 18, 19, 22},
{25, 25, 25, 30, 30, 40},
@@ -4377,7 +4463,7 @@ const u8 gUnknown_083ECD28[][6] = {
{40, 40, 35, 35, 40, 40}
};
-const u8 gUnknown_083ECD46[][17] = {
+const u8 gReeltimeProbabilities_UnluckyGame[][17] = {
{243, 243, 243, 80, 80, 80, 80, 40, 40, 40, 40, 40, 40, 5, 5, 5, 5},
{ 5, 5, 5, 150, 150, 150, 150, 130, 130, 130, 130, 130, 130, 100, 100, 100, 5},
{ 4, 4, 4, 20, 20, 20, 20, 80, 80, 80, 80, 80, 80, 100, 100, 100, 40},
@@ -4386,7 +4472,7 @@ const u8 gUnknown_083ECD46[][17] = {
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6}
};
-const u8 gUnknown_083ECDAC[][17] = {
+const u8 gReelTimeProbabilities_LuckyGame[][17] = {
{ 243, 243, 243, 200, 200, 200, 200, 160, 160, 160, 160, 160, 160, 70, 70, 70, 5},
{ 5, 5, 5, 25, 25, 25, 25, 5, 5, 5, 5, 5, 5, 2, 2, 2, 6},
{ 4, 4, 4, 25, 25, 25, 25, 30, 30, 30, 30, 30, 30, 40, 40, 40, 35},
@@ -4395,11 +4481,11 @@ const u8 gUnknown_083ECDAC[][17] = {
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 60}
};
-const u16 gUnknown_083ECE12[] = {
- 0x80, 0xaf, 0xc8, 0xe1, 0x100
+const u16 gProbabilityTable_SkipToReeltimeAction14[] = {
+ 128, 175, 200, 225, 256
};
-const u16 gUnknown_083ECE1C[][2] = {
+const u16 gReelIncrementTable[][2] = {
{10, 5},
{10, 10},
{10, 15},
@@ -4407,23 +4493,24 @@ const u16 gUnknown_083ECE1C[][2] = {
{10, 35}
};
-const u16 gUnknown_083ECE30[] = {
+const u16 gReelTimeBonusIncrementTable[] = {
0, 5, 10, 15, 20
};
-const u8 gUnknown_083ECE3A[] = {
- 6, 4, 3, 2, 5, 0, 0, 0
+// tentative name
+const u8 gBiasTags[] = {
+ SLOT_MACHINE_TAG_REPLAY, SLOT_MACHINE_TAG_CHERRY, SLOT_MACHINE_TAG_LOTAD, SLOT_MACHINE_TAG_AZURILL, SLOT_MACHINE_TAG_POWER, SLOT_MACHINE_TAG_7_RED, SLOT_MACHINE_TAG_7_RED, SLOT_MACHINE_TAG_7_RED
};
-const u16 gUnknown_083ECE42[] = {
- 0x80, 0x20, 0x40
+const u16 gLuckyFlagSettings_Top3[] = {
+ LUCKY_BIAS_777, LUCKY_BIAS_REELTIME, LUCKY_BIAS_MIXED_777
};
-const u16 gUnknown_083ECE48[] = {
- 0x10, 0x08, 0x04, 0x02, 0x01
+const u16 gLuckyFlagSettings_NotTop3[] = {
+ LUCKY_BIAS_POWER, LUCKY_BIAS_AZURILL, LUCKY_BIAS_LOTAD, LUCKY_BIAS_CHERRY, LUCKY_BIAS_REPLAY
};
-const u8 sSym2Match[] = {
+const u8 gSym2Match[] = {
SLOT_MACHINE_MATCHED_777_RED,
SLOT_MACHINE_MATCHED_777_BLUE,
SLOT_MACHINE_MATCHED_AZURILL,
@@ -4433,7 +4520,7 @@ const u8 sSym2Match[] = {
SLOT_MACHINE_MATCHED_REPLAY
};
-const u16 sSlotMatchFlags[] = {
+const u16 gSlotMatchFlags[] = {
1 << SLOT_MACHINE_MATCHED_1CHERRY,
1 << SLOT_MACHINE_MATCHED_2CHERRY,
1 << SLOT_MACHINE_MATCHED_REPLAY,
@@ -4445,7 +4532,7 @@ const u16 sSlotMatchFlags[] = {
1 << SLOT_MACHINE_MATCHED_777_BLUE
};
-const u16 sSlotPayouts[] = {
+const u16 gSlotPayouts[] = {
2, 4, 0, 6, 12, 3, 90, 300, 300
};
diff --git a/src/start_menu.c b/src/start_menu.c
index 1be530d3c..f56e5e861 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -84,7 +84,7 @@ EWRAM_DATA static bool8 sSavingComplete = FALSE;
EWRAM_DATA static u8 sSaveInfoWindowId = 0;
// Extern variables.
-extern u8 gUnknown_03005DB4;
+extern u8 gLocalLinkPlayerId;
// Extern functions in not decompiled files.
extern void sub_80AF688(void);
@@ -244,7 +244,7 @@ static void BuildStartMenuActions(void)
{
sNumStartMenuActions = 0;
- if (is_c1_link_related_active() == TRUE)
+ if (IsUpdateLinkStateCBActive() == TRUE)
{
BuildLinkModeStartMenu();
}
@@ -547,7 +547,7 @@ void sub_809FA34(u8 taskId) // Referenced in field_screen.s and rom_8011DC0.s
void ShowStartMenu(void) // Called from overworld.c and field_control_avatar.s
{
- if (!is_c1_link_related_active())
+ if (!IsUpdateLinkStateCBActive())
{
FreezeEventObjects();
sub_808B864();
@@ -672,7 +672,7 @@ static bool8 StartMenuPlayerNameCallback(void)
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
- if (is_c1_link_related_active() || InUnionRoom())
+ if (IsUpdateLinkStateCBActive() || InUnionRoom())
ShowPlayerTrainerCard(CB2_ReturnToFieldWithOpenMenu); // Display trainer card
else if (FlagGet(FLAG_SYS_FRONTIER_PASS))
ShowFrontierPass(CB2_ReturnToFieldWithOpenMenu); // Display frontier pass
@@ -734,7 +734,7 @@ static bool8 StartMenuLinkModePlayerNameCallback(void)
{
PlayRainStoppingSoundEffect();
CleanupOverworldWindowsAndTilemaps();
- ShowTrainerCardInLink(gUnknown_03005DB4, CB2_ReturnToFieldWithOpenMenu);
+ ShowTrainerCardInLink(gLocalLinkPlayerId, CB2_ReturnToFieldWithOpenMenu);
return TRUE;
}
@@ -1265,11 +1265,11 @@ static void sub_80A0550(u8 taskId)
break;
case 1:
SetContinueGameWarpStatusToDynamicWarp();
- sub_8153430();
+ FullSaveGame();
*step = 2;
break;
case 2:
- if (sub_8153474())
+ if (CheckSaveFile())
{
ClearContinueGameWarpStatus2();
*step = 3;
diff --git a/src/task.c b/src/task.c
index 14b97a361..a2df66de8 100644
--- a/src/task.c
+++ b/src/task.c
@@ -1,9 +1,6 @@
#include "global.h"
#include "task.h"
-#define HEAD_SENTINEL 0xFE
-#define TAIL_SENTINEL 0xFF
-
struct Task gTasks[NUM_TASKS];
static void InsertTask(u8 newTaskId);
diff --git a/src/time_events.c b/src/time_events.c
index 9702d321f..bd51f0c2d 100644
--- a/src/time_events.c
+++ b/src/time_events.c
@@ -81,7 +81,7 @@ void UpdateShoalTideFlag(void)
1, // 23
};
- if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType()))
+ if (IsMapTypeOutdoors(GetLastUsedWarpMapType()))
{
RtcCalcLocalTime();
if (tide[gLocalTime.hours])
diff --git a/src/trade.c b/src/trade.c
index d74b7dfc3..9a9828f34 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -1507,13 +1507,13 @@ static void sub_80773D0(void)
}
break;
case 3:
- if (GetLinkPlayerCount_2() >= sub_800AA48())
+ if (GetLinkPlayerCount_2() >= GetSavedPlayerCount())
{
if (IsLinkMaster())
{
if (++gUnknown_0203229C->unk_A8 > 30)
{
- sub_800A620();
+ CheckShouldAdvanceLinkState();
gMain.state++;
}
}
@@ -2762,7 +2762,7 @@ static void sub_80794CC(void)
Free(gUnknown_0203229C);
FreeAllWindowBuffers();
sub_800E084();
- SetMainCallback2(c2_8056854);
+ SetMainCallback2(CB2_ReturnToFieldFromMultiplayer);
}
}
else
@@ -2772,7 +2772,7 @@ static void sub_80794CC(void)
Free(gUnknown_02032184);
Free(gUnknown_0203229C);
FreeAllWindowBuffers();
- SetMainCallback2(c2_8056854);
+ SetMainCallback2(CB2_ReturnToFieldFromMultiplayer);
}
}
}
@@ -4099,11 +4099,11 @@ void sub_807AE50(void)
case 3:
if (IsLinkMaster())
{
- if (GetLinkPlayerCount_2() >= sub_800AA48())
+ if (GetLinkPlayerCount_2() >= GetSavedPlayerCount())
{
if (++gUnknown_020322A0->timer > 30)
{
- sub_800A620();
+ CheckShouldAdvanceLinkState();
gMain.state++;
}
}
diff --git a/src/trainer_card.c b/src/trainer_card.c
index 4a3385559..cd8b34865 100755
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -695,7 +695,7 @@ static void SetPlayerCardData(struct TrainerCard *trainerCard, u8 cardType)
trainerCard->money = GetMoney(&gSaveBlock1Ptr->money);
for (i = 0; i < 4; i++)
- trainerCard->var_28[i] = gSaveBlock1Ptr->unk2BB0[i];
+ trainerCard->var_28[i] = gSaveBlock1Ptr->easyChatProfile[i];
StringCopy(trainerCard->playerName, gSaveBlock2Ptr->playerName);
@@ -1536,7 +1536,7 @@ static void sub_80C48C8(void)
}
}
-u8 sub_80C4904(u8 cardId)
+u8 GetTrainerCardStars(u8 cardId)
{
struct TrainerCard* trainerCards = gTrainerCards;
return trainerCards[cardId].stars;
diff --git a/src/trainer_hill.c b/src/trainer_hill.c
index bf8482d69..43b29e26e 100644
--- a/src/trainer_hill.c
+++ b/src/trainer_hill.c
@@ -30,6 +30,7 @@
#include "constants/species.h"
#include "constants/trainers.h"
#include "constants/easy_chat.h"
+#include "constants/trainer_hill.h"
extern bool32 sub_81D3B34(void);
@@ -92,16 +93,16 @@ struct TrHillStruct2
// EWRAM
static EWRAM_DATA struct TrHillStruct2 *sHillData = NULL;
static EWRAM_DATA struct TrHillRoomTrainers *sRoomTrainers = NULL;
-EWRAM_DATA u32 *gUnknown_0203CF5C = NULL;
+EWRAM_DATA u32 *gTrainerHillVBlankCounter = NULL;
// This file's functions.
-static void sub_81D581C(void);
+static void TrainerHillStartChallenge(void);
static void sub_81D58D8(void);
static void sub_81D5924(void);
static void sub_81D59D0(void);
-static void sub_81D5A70(void);
-static void sub_81D5AB4(void);
-static void sub_81D5AD0(void);
+static void TrainerHillResumeTimer(void);
+static void TrainerHillSetPlayerLost(void);
+static void TrainerHillGetChallengeStatus(void);
static void sub_81D5B2C(void);
static void sub_81D5BBC(void);
static void sub_81D5C00(void);
@@ -112,7 +113,7 @@ static void sub_81D64DC(void);
static void sub_81D64FC(void);
static void sub_81D6518(void);
static void sub_81D6568(void);
-static void sub_81D65A0(void);
+static void TrainerHillSetTag(void);
static void SetUpDataStruct(void);
static void FreeDataStruct(void);
static void nullsub_2(void);
@@ -263,13 +264,13 @@ static const u8 *const sFloorStrings[] =
static void (* const sHillFunctions[])(void) =
{
- sub_81D581C,
+ TrainerHillStartChallenge,
sub_81D58D8,
sub_81D5924,
sub_81D59D0,
- sub_81D5A70,
- sub_81D5AB4,
- sub_81D5AD0,
+ TrainerHillResumeTimer,
+ TrainerHillSetPlayerLost,
+ TrainerHillGetChallengeStatus,
sub_81D5B2C,
sub_81D5BBC,
sub_81D5C00,
@@ -280,7 +281,7 @@ static void (* const sHillFunctions[])(void) =
sub_81D64FC,
sub_81D6518,
sub_81D6568,
- sub_81D65A0,
+ TrainerHillSetTag,
};
static const u8 *const sTagMatchStrings[] =
@@ -318,7 +319,7 @@ void ResetTrainerHillResults(void)
gSaveBlock2Ptr->frontier.field_EF9_1 = 0;
gSaveBlock2Ptr->frontier.field_EF9_0 = 0;
- gSaveBlock1Ptr->trainerHill.field_3D68 = 0;
+ gSaveBlock1Ptr->trainerHill.bestTime = 0;
for (i = 0; i < 4; i++)
SetTimerValue(&gSaveBlock1Ptr->trainerHillTimes[i], HILL_MAX_TIME);
}
@@ -371,7 +372,7 @@ void InitTrainerHillBattleStruct(void)
}
sRoomTrainers->facilityClass[i] = sHillData->tag.floors[sHillData->floorId].trainers[i].facilityClass;
}
- sub_80008DC(&gSaveBlock1Ptr->trainerHill.field_3D64);
+ SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer);
FreeDataStruct();
}
@@ -425,7 +426,7 @@ void CopyTrainerHillTrainerText(u8 which, u16 trainerId)
FreeDataStruct();
}
-static void sub_81D581C(void)
+static void TrainerHillStartChallenge(void)
{
nullsub_2();
if (!sub_81D3B34())
@@ -434,11 +435,11 @@ static void sub_81D581C(void)
gSaveBlock1Ptr->trainerHill.field_3D6E_0f = 0;
gSaveBlock1Ptr->trainerHill.field_3D6C = 0;
- sub_80008DC(&gSaveBlock1Ptr->trainerHill.field_3D64);
- gSaveBlock1Ptr->trainerHill.field_3D64 = 0;
+ SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer);
+ gSaveBlock1Ptr->trainerHill.timer = 0;
gSaveBlock1Ptr->trainerHill.field_3D6E_0c = 0;
gSaveBlock1Ptr->trainerHill.field_3D6E_0b = 0;
- gSaveBlock1Ptr->trainerHill.field_3D6E_0e = 0;
+ gSaveBlock1Ptr->trainerHill.maybeECardScanDuringChallenge = 0;
gSaveBlock2Ptr->frontier.field_EE0 = 0;
gBattleOutcome = 0;
gSaveBlock1Ptr->trainerHill.field_3D6E_0a = 0;
@@ -446,7 +447,7 @@ static void sub_81D581C(void)
static void sub_81D58D8(void)
{
- sub_80008E8();
+ ClearTrainerHillVBlankCounter();
gSpecialVar_Result = 0;
if (gSaveBlock1Ptr->trainerHill.field_3D6E_0c)
gSpecialVar_Result++;
@@ -483,10 +484,10 @@ static void sub_81D59D0(void)
{
gSpecialVar_Result = 2;
}
- else if (GetTimerValue(&gSaveBlock1Ptr->trainerHill.field_3D68) > gSaveBlock1Ptr->trainerHill.field_3D64)
+ else if (GetTimerValue(&gSaveBlock1Ptr->trainerHill.bestTime) > gSaveBlock1Ptr->trainerHill.timer)
{
- SetTimerValue(&gSaveBlock1Ptr->trainerHill.field_3D68, gSaveBlock1Ptr->trainerHill.field_3D64);
- gSaveBlock1Ptr->trainerHillTimes[gSaveBlock1Ptr->trainerHill.tag] = gSaveBlock1Ptr->trainerHill.field_3D68;
+ SetTimerValue(&gSaveBlock1Ptr->trainerHill.bestTime, gSaveBlock1Ptr->trainerHill.timer);
+ gSaveBlock1Ptr->trainerHillTimes[gSaveBlock1Ptr->trainerHill.tag] = gSaveBlock1Ptr->trainerHill.bestTime;
gSpecialVar_Result = 0;
}
else
@@ -497,37 +498,40 @@ static void sub_81D59D0(void)
gSaveBlock1Ptr->trainerHill.field_3D6E_0b = 1;
}
-static void sub_81D5A70(void)
+static void TrainerHillResumeTimer(void)
{
if (!gSaveBlock1Ptr->trainerHill.field_3D6E_0c)
{
- if (gSaveBlock1Ptr->trainerHill.field_3D64 >= HILL_MAX_TIME)
- gSaveBlock1Ptr->trainerHill.field_3D64 = HILL_MAX_TIME;
+ if (gSaveBlock1Ptr->trainerHill.timer >= HILL_MAX_TIME)
+ gSaveBlock1Ptr->trainerHill.timer = HILL_MAX_TIME;
else
- sub_80008DC(&gSaveBlock1Ptr->trainerHill.field_3D64);
+ SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer);
}
}
-static void sub_81D5AB4(void)
+static void TrainerHillSetPlayerLost(void)
{
- gSaveBlock1Ptr->trainerHill.field_3D6E_0d = 1;
+ gSaveBlock1Ptr->trainerHill.hasLost = 1;
}
-static void sub_81D5AD0(void)
+static void TrainerHillGetChallengeStatus(void)
{
- if (gSaveBlock1Ptr->trainerHill.field_3D6E_0d)
+ if (gSaveBlock1Ptr->trainerHill.hasLost)
{
- gSaveBlock1Ptr->trainerHill.field_3D6E_0d = 0;
- gSpecialVar_Result = 0;
+ // The player lost their last match.
+ gSaveBlock1Ptr->trainerHill.hasLost = 0;
+ gSpecialVar_Result = TRAINER_HILL_PLAYER_STATUS_LOST;
}
- else if (gSaveBlock1Ptr->trainerHill.field_3D6E_0e)
+ else if (gSaveBlock1Ptr->trainerHill.maybeECardScanDuringChallenge)
{
- gSaveBlock1Ptr->trainerHill.field_3D6E_0e = 0;
- gSpecialVar_Result = 1;
+ // Unreachable code. Something relating to eCards?
+ gSaveBlock1Ptr->trainerHill.maybeECardScanDuringChallenge = 0;
+ gSpecialVar_Result = TRAINER_HILL_PLAYER_STATUS_ECARD_SCANNED;
}
else
{
- gSpecialVar_Result = 2;
+ // Continue playing.
+ gSpecialVar_Result = TRAINER_HILL_PLAYER_STATUS_NORMAL;
}
}
@@ -535,7 +539,7 @@ static void sub_81D5B2C(void)
{
s32 total, minutes, secondsWhole, secondsFraction;
- total = gSaveBlock1Ptr->trainerHill.field_3D64;
+ total = gSaveBlock1Ptr->trainerHill.timer;
if (total >= HILL_MAX_TIME)
total = HILL_MAX_TIME;
@@ -575,7 +579,7 @@ static void sub_81D5C00(void)
bool8 sub_81D5C18(void)
{
- if (VarGet(VAR_0x40D6) == 0)
+ if (VarGet(VAR_TRAINER_HILL_IS_ACTIVE) == 0)
return FALSE;
else if (gSaveBlock1Ptr->trainerHill.field_3D6E_0c)
return FALSE;
@@ -1048,16 +1052,16 @@ bool32 sub_81D6534(void)
static void sub_81D6568(void)
{
- if (gSaveBlock1Ptr->trainerHill.field_3D6E_0d)
+ if (gSaveBlock1Ptr->trainerHill.hasLost)
gSpecialVar_Result = 0;
else
gSpecialVar_Result = 1;
}
-static void sub_81D65A0(void)
+static void TrainerHillSetTag(void)
{
gSaveBlock1Ptr->trainerHill.tag = gSpecialVar_0x8005;
- gSaveBlock1Ptr->trainerHill.field_3D68 = gSaveBlock1Ptr->trainerHillTimes[gSpecialVar_0x8005];
+ gSaveBlock1Ptr->trainerHill.bestTime = gSaveBlock1Ptr->trainerHillTimes[gSpecialVar_0x8005];
}
static u8 sub_81D65E8(u8 arg0)
@@ -1103,7 +1107,7 @@ static u16 sub_81D6640(void)
i = (i + 1) % 10;
ptr = gUnknown_0862A5CC[var2][i];
- minutes = (signed)(gSaveBlock1Ptr->trainerHill.field_3D64) / (60 * 60);
+ minutes = (signed)(gSaveBlock1Ptr->trainerHill.timer) / (60 * 60);
if (minutes < 12)
id = 0;
else if (minutes < 13)
diff --git a/src/tv.c b/src/tv.c
index 248721083..17243a456 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -39,6 +39,7 @@
#include "tv.h"
#include "data2.h"
#include "constants/layouts.h"
+#include "constants/metatile_behaviors.h"
// Static type declarations
@@ -62,7 +63,7 @@ IWRAM_DATA s8 sTVShowMixingCurSlot;
EWRAM_DATA u16 sPokemonAnglerSpecies = 0;
EWRAM_DATA u16 sPokemonAnglerAttemptCounters = 0;
EWRAM_DATA u16 sFindThatGamerCoinsSpent = 0;
-EWRAM_DATA bool8 sFindThatGamerWhichGame = FALSE;
+EWRAM_DATA u8 sFindThatGamerWhichGame = SLOT_MACHINE;
EWRAM_DATA ALIGNED(4) u8 sRecordMixingPartnersWithoutShowsToShare = 0;
EWRAM_DATA ALIGNED(4) u8 sTVShowState = 0;
EWRAM_DATA u8 sTVSecretBaseSecretsRandomValues[3] = {};
@@ -853,9 +854,9 @@ void SetTVMetatilesOnMap(int width, int height, u16 tileId)
{
for (x = 0; x < width; x ++)
{
- if (MapGridGetMetatileBehaviorAt(x, y) == 0x86) // is this tile a TV?
+ if (MapGridGetMetatileBehaviorAt(x, y) == MB_TELEVISION)
{
- MapGridSetMetatileIdAt(x, y, tileId | 0xc00);
+ MapGridSetMetatileIdAt(x, y, tileId | METATILE_COLLISION_MASK);
}
}
}
@@ -2019,7 +2020,7 @@ void sub_80EDCE8(void)
}
}
-void sub_80EDD78(u16 nCoinsPaidOut)
+void AlertTVOfNewCoinTotal(u16 nCoinsPaidOut)
{
TVShow *show;
bool8 flag;
@@ -2031,7 +2032,7 @@ void sub_80EDD78(u16 nCoinsPaidOut)
flag = FALSE;
switch (sFindThatGamerWhichGame)
{
- case FALSE:
+ case SLOT_MACHINE:
if (nCoinsPaidOut >= sFindThatGamerCoinsSpent + 200)
{
flag = TRUE;
@@ -2044,7 +2045,7 @@ void sub_80EDD78(u16 nCoinsPaidOut)
break;
}
return;
- case TRUE:
+ case ROULETTE:
if (nCoinsPaidOut >= sFindThatGamerCoinsSpent + 50)
{
flag = TRUE;
@@ -2072,15 +2073,15 @@ void sub_80EDD78(u16 nCoinsPaidOut)
}
}
-void sub_80EDE70(u16 nCoinsSpent)
+void AlertTVThatPlayerPlayedSlotMachine(u16 nCoinsSpent)
{
- sFindThatGamerWhichGame = FALSE;
+ sFindThatGamerWhichGame = SLOT_MACHINE;
sFindThatGamerCoinsSpent = nCoinsSpent;
}
-void sub_80EDE84(u16 nCoinsSpent)
+void AlertTVThatPlayerPlayedRoulette(u16 nCoinsSpent)
{
- sFindThatGamerWhichGame = TRUE;
+ sFindThatGamerWhichGame = ROULETTE;
sFindThatGamerCoinsSpent = nCoinsSpent;
}
@@ -2448,8 +2449,8 @@ void sub_80EE72C(void)
show->trainerFanClub.kind = TVSHOW_TRAINER_FAN_CLUB;
show->trainerFanClub.active = FALSE;
StringCopy(show->trainerFanClub.playerName, gSaveBlock2Ptr->playerName);
- show->trainerFanClub.words[0] = gSaveBlock1Ptr->unk2BB0[0];
- show->trainerFanClub.words[1] = gSaveBlock1Ptr->unk2BB0[1];
+ show->trainerFanClub.words[0] = gSaveBlock1Ptr->easyChatProfile[0];
+ show->trainerFanClub.words[1] = gSaveBlock1Ptr->easyChatProfile[1];
tv_store_id_3x(show);
show->trainerFanClub.language = gGameLanguage;
}
@@ -2565,13 +2566,13 @@ void sub_80EEA70(void)
show->secretBaseSecrets.kind = TVSHOW_SECRET_BASE_SECRETS;
show->secretBaseSecrets.active = FALSE;
StringCopy(show->secretBaseSecrets.playerName, gSaveBlock2Ptr->playerName);
- show->secretBaseSecrets.stepsInBase = VarGet(VAR_0x40EC);
+ show->secretBaseSecrets.stepsInBase = VarGet(VAR_SECRET_BASE_STEP_COUNTER);
sub_80E980C();
StringCopy(strbuf, gStringVar1);
StripExtCtrlCodes(strbuf);
StringCopy(show->secretBaseSecrets.baseOwnersName, strbuf);
- show->secretBaseSecrets.item = VarGet(VAR_0x40ED);
- show->secretBaseSecrets.flags = VarGet(VAR_0x40EE) + (VarGet(VAR_0x40EF) << 16);
+ show->secretBaseSecrets.item = VarGet(VAR_SECRET_BASE_LAST_ITEM_USED);
+ show->secretBaseSecrets.flags = VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) + (VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) << 16);
tv_store_id_3x(show);
show->secretBaseSecrets.language = gGameLanguage;
if (show->secretBaseSecrets.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].language == LANGUAGE_JAPANESE)
@@ -7350,7 +7351,7 @@ static void DoTVShowWhatsNo1InHoennToday(void)
ShowFieldMessage(sTVWhatsNo1InHoennTodayTextGroup[state]);
}
-u8 sub_80F5180(TVShow *show)
+u8 TVShowGetFlagCount(TVShow *show)
{
u8 i;
u8 tot;
@@ -7365,7 +7366,7 @@ u8 sub_80F5180(TVShow *show)
return tot;
}
-u8 sub_80F51AC(TVShow *show, u8 a1)
+u8 TVShowGetStateForFlagNumber(TVShow *show, u8 a1)
{
u8 i;
u8 tot;
@@ -7399,7 +7400,7 @@ static void DoTVShowSecretBaseSecrets(void)
case 0:
TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
- bitCount = sub_80F5180(show);
+ bitCount = TVShowGetFlagCount(show);
if (bitCount == 0)
{
sTVShowState = 8;
@@ -7408,12 +7409,12 @@ static void DoTVShowSecretBaseSecrets(void)
{
show->secretBaseSecrets.savedState = 1;
sTVSecretBaseSecretsRandomValues[0] = Random() % bitCount;
- sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[0]);
+ sTVShowState = TVShowGetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[0]);
}
break;
case 1:
TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
- bitCount = sub_80F5180(show);
+ bitCount = TVShowGetFlagCount(show);
switch (bitCount)
{
case 1:
@@ -7423,11 +7424,11 @@ static void DoTVShowSecretBaseSecrets(void)
show->secretBaseSecrets.savedState = 2;
if (sTVSecretBaseSecretsRandomValues[0] == 0)
{
- sTVShowState = sub_80F51AC(show, 1);
+ sTVShowState = TVShowGetStateForFlagNumber(show, 1);
}
else
{
- sTVShowState = sub_80F51AC(show, 0);
+ sTVShowState = TVShowGetStateForFlagNumber(show, 0);
}
break;
default:
@@ -7440,13 +7441,13 @@ static void DoTVShowSecretBaseSecrets(void)
}
}
show->secretBaseSecrets.savedState = 2;
- sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[1]);
+ sTVShowState = TVShowGetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[1]);
break;
}
break;
case 2:
TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
- bitCount = sub_80F5180(show);
+ bitCount = TVShowGetFlagCount(show);
if (bitCount == 2)
{
sTVShowState = 9;
@@ -7462,7 +7463,7 @@ static void DoTVShowSecretBaseSecrets(void)
}
}
show->secretBaseSecrets.savedState = 3;
- sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[2]);
+ sTVShowState = TVShowGetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[2]);
}
break;
case 3: