summaryrefslogtreecommitdiff
path: root/src/field
diff options
context:
space:
mode:
Diffstat (limited to 'src/field')
-rw-r--r--src/field/bard_music.c174
-rw-r--r--src/field/battle_tower.c38
-rw-r--r--src/field/berry_tag_screen.c20
-rw-r--r--src/field/coord_event_weather.c87
-rw-r--r--src/field/decoration.c270
-rw-r--r--src/field/dewford_trend.c6
-rw-r--r--src/field/easy_chat.c2
-rw-r--r--src/field/event_data.c6
-rw-r--r--src/field/field_control_avatar.c6
-rw-r--r--src/field/field_effect.c257
-rw-r--r--src/field/field_effect_helpers.c84
-rw-r--r--src/field/field_fadetransition.c2
-rw-r--r--src/field/field_map_obj.c38
-rw-r--r--src/field/field_map_obj_helpers.c115
-rw-r--r--src/field/field_special_scene.c12
-rw-r--r--src/field/field_specials.c254
-rw-r--r--src/field/field_tasks.c26
-rw-r--r--src/field/field_weather.c25
-rw-r--r--src/field/field_weather_effects.c1
-rw-r--r--src/field/fldeff_secret_base_pc.c2
-rw-r--r--src/field/item_menu.c4
-rw-r--r--src/field/item_use.c7
-rw-r--r--src/field/lottery_corner.c16
-rw-r--r--src/field/map_name_popup.c2
-rw-r--r--src/field/mauville_man.c3
-rw-r--r--src/field/money.c4
-rw-r--r--src/field/overworld.c34
-rw-r--r--src/field/party_menu.c67
-rw-r--r--src/field/player_pc.c22
-rw-r--r--src/field/pokeblock.c6
-rw-r--r--src/field/scrcmd.c4
-rw-r--r--src/field/secret_base.c36
-rw-r--r--src/field/slot_machine.c5314
-rw-r--r--src/field/trainer_see.c96
-rw-r--r--src/field/tv.c723
35 files changed, 6620 insertions, 1143 deletions
diff --git a/src/field/bard_music.c b/src/field/bard_music.c
index daf003233..5c48749cf 100644
--- a/src/field/bard_music.c
+++ b/src/field/bard_music.c
@@ -11,29 +11,185 @@ struct BardSound
/*0x06*/ u16 var06;
};
-extern const struct BardSound (*const gBardMusicTable[])[][6];
-extern s16 *gUnknown_08417068[];
-extern u32 gUnknown_084170F4[];
+static const s16 Unknown_8416F08[] = {-768, 6144};
+static const s16 Unknown_8416F0C[] = {2304, 6144};
+static const s16 Unknown_8416F10[] = {256, 6144};
+static const s16 Unknown_8416F14[] = {1024, 6144};
+static const s16 Unknown_8416F18[] = {2816, 6144};
+static const s16 Unknown_8416F1C[] = {-768, -256, 6144};
+static const s16 Unknown_8416F22[] = {-768, 512, 6144};
+static const s16 Unknown_8416F28[] = {512, 1024, 6144};
+static const s16 Unknown_8416F2E[] = {1536, 2048, 6144};
+static const s16 Unknown_8416F34[] = {2304, 2048, 6144};
+static const s16 Unknown_8416F3A[] = {-768, -256, -768, 6144};
+static const s16 Unknown_8416F42[] = {1024, -768, 1024, 6144};
+static const s16 Unknown_8416F4A[] = {2304, 2048, 1536, 6144};
+static const s16 Unknown_8416F52[] = {256, 512, 1024, 6144};
+static const s16 Unknown_8416F5A[] = {1536, 4096, 3328, 6144};
+static const s16 Unknown_8416F62[] = {1024, 2304, 1024, 2304, 6144};
+static const s16 Unknown_8416F6C[] = {2304, 1024, 3328, 1024, 6144};
+static const s16 Unknown_8416F76[] = {256, 512, 1024, 1536, 6144};
+static const s16 Unknown_8416F80[] = {2048, 1536, 1024, 512, 6144};
+static const s16 Unknown_8416F8A[] = {3840, 3328, 2816, 2560, 6144};
+static const s16 Unknown_8416F94[] = {-768, -256, 256, 512, 1024, 6144};
+static const s16 Unknown_8416FA0[] = {2304, 2048, 1536, 1024, 512, 6144};
+static const s16 Unknown_8416FAC[] = {256, 1024, 2304, 1024, 256, 6144};
+static const s16 Unknown_8416FB8[] = {2304, 1024, 2304, 1024, -768, 6144};
+static const s16 Unknown_8416FC4[] = {2816, 2048, 1024, 1024, 1536, 6144};
+static const s16 Unknown_8416FD0[] = {-768, -256, 256, 512, 1024, 1536, 6144};
+static const s16 Unknown_8416FDE[] = {2048, 1536, 1024, 512, 256, -256, 6144};
+static const s16 Unknown_8416FEC[] = {256, 512, 1024, 256, 512, 4096, 6144};
+static const s16 Unknown_8416FFA[] = {1024, -768, 2304, 1024, 2304, 1024, 6144};
+static const s16 Unknown_8417008[] = {2048, 2304, 2048, 2304, 2048, 2304, 6144};
+static const s16 Unknown_8417016[] = {512, 256, 512, 256, 512, 1024, 512, 6144};
+static const s16 Unknown_8417026[] = {256, 256, -256, -256, -768, 1024, -768, 6144};
+static const s16 Unknown_8417036[] = {2048, 2304, 2816, 3328, 3584, 3328, 2816, 6144};
+static const s16 Unknown_8417046[] = {2048, 1536, 1024, 512, 3328, 2816, 2304, 6144};
+static const s16 Unknown_8417056[] = {768, 1024, 1536, 2048, 1792, 2048, 1024, 6144};
+
+static const s16 *const sWordPitches[] = {
+ Unknown_8416F08,
+ Unknown_8416F0C,
+ Unknown_8416F10,
+ Unknown_8416F14,
+ Unknown_8416F18,
+ Unknown_8416F1C,
+ Unknown_8416F22,
+ Unknown_8416F28,
+ Unknown_8416F2E,
+ Unknown_8416F34,
+ Unknown_8416F3A,
+ Unknown_8416F42,
+ Unknown_8416F4A,
+ Unknown_8416F52,
+ Unknown_8416F5A,
+ Unknown_8416F62,
+ Unknown_8416F6C,
+ Unknown_8416F76,
+ Unknown_8416F80,
+ Unknown_8416F8A,
+ Unknown_8416F94,
+ Unknown_8416FA0,
+ Unknown_8416FAC,
+ Unknown_8416FB8,
+ Unknown_8416FC4,
+ Unknown_8416FD0,
+ Unknown_8416FDE,
+ Unknown_8416FEC,
+ Unknown_8416FFA,
+ Unknown_8417008,
+ Unknown_8417016,
+ Unknown_8417026,
+ Unknown_8417036,
+ Unknown_8417046,
+ Unknown_8417056
+};
+
+static const u32 sBardSoundLengthDeltas[] = {
+ 9,
+ 22,
+ 15,
+ 16,
+ 39,
+ 21,
+ 9,
+ 30,
+ 24,
+ 15,
+ 25,
+ 12,
+ 22,
+ 45,
+ 24,
+ 15,
+ 40,
+ 9,
+ 21,
+ 42,
+ 18,
+ 9,
+ 22,
+ 15,
+ 27,
+ 48,
+ 18,
+ 27,
+ 33,
+ 24,
+ 25,
+ 39,
+ 19,
+ 16,
+ 54,
+ 18,
+ 9,
+ 45,
+ 15,
+ 12,
+ 39,
+ 23,
+ 5,
+ 45,
+ 12,
+ 21,
+ 48,
+ 12,
+ 21,
+ 69,
+ 18,
+ 15
+};
+
+#if ENGLISH
+#include "../src/data/bard_music_en.h"
+#elif GERMAN
+#include "../src/data/bard_music_de.h"
+#endif // ENGLISH/GERMAN
+
+static const struct BardSound (*const gBardMusicTable[])[6] = {
+ BardMusic_POKEMON,
+ BardMusic_TRAINER,
+ BardMusic_STATUS,
+ BardMusic_BATTLE,
+ BardMusic_GREETINGS,
+ BardMusic_PEOPLE,
+ BardMusic_VOICES,
+ BardMusic_SPEECH,
+ BardMusic_ENDINGS,
+ BardMusic_FEELINGS,
+ BardMusic_CONDITIONS,
+ BardMusic_ACTIONS,
+ BardMusic_LIFESTYLE,
+ BardMusic_HOBBIES,
+ BardMusic_TIME,
+ BardMusic_MISC,
+ BardMusic_ADJECTIVES,
+ BardMusic_EVENTS,
+ BardMusic_MOVE_1,
+ BardMusic_MOVE_2,
+ BardMusic_TRENDY_SAYING,
+ BardMusic_POKEMON_2
+};
static s16 CalcWordPitch(u32 arg0, u32 songPos)
{
- return gUnknown_08417068[arg0][songPos];
+ return sWordPitches[arg0][songPos];
}
#if ENGLISH
const struct BardSound *GetWordSounds(u16 group, u16 word)
{
- const struct BardSound (*sounds)[][6] = gBardMusicTable[group];
+ const struct BardSound (*sounds)[6] = gBardMusicTable[group];
- return (*sounds)[word];
+ return sounds[word];
}
#elif GERMAN
const struct BardSound *GetWordSounds(u16 group, u16 word)
{
- const struct BardSound (*sounds)[][6] = gBardMusicTable[group];
+ const struct BardSound (*sounds)[6] = gBardMusicTable[group];
u32 index = de_sub_80EB748(group, word);
- return (*sounds)[index];
+ return sounds[index];
}
#endif
@@ -48,7 +204,7 @@ s32 GetWordPhonemes(struct BardSong *song, const struct BardSound *src, u16 arg2
song->phonemes[i].sound = src[i].var00;
if (src[i].var00 != 0xFF)
{
- s32 length = src[i].var01 + gUnknown_084170F4[src[i].var00];
+ s32 length = src[i].var01 + sBardSoundLengthDeltas[src[i].var00];
song->phonemes[i].length = length;
song->phonemes[i].volume = src[i].volume;
diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c
index 6b6064c16..caebc6a7b 100644
--- a/src/field/battle_tower.c
+++ b/src/field/battle_tower.c
@@ -294,24 +294,24 @@ void sub_8134548(void)
ResetBattleTowerStreak(levelType);
if (!var1)
{
- VarSet(VAR_0x4000, 5);
+ VarSet(VAR_TEMP_0, 5);
}
break;
case 1:
ResetBattleTowerStreak(levelType);
- VarSet(VAR_0x4000, 1);
+ VarSet(VAR_TEMP_0, 1);
var1++;
break;
case 4:
- VarSet(VAR_0x4000, 2);
+ VarSet(VAR_TEMP_0, 2);
var1++;
break;
case 5:
- VarSet(VAR_0x4000, 3);
+ VarSet(VAR_TEMP_0, 3);
var1++;
break;
case 2:
- VarSet(VAR_0x4000, 4);
+ VarSet(VAR_TEMP_0, 4);
var1++;
break;
case 3:
@@ -323,7 +323,7 @@ void sub_8134548(void)
if ((gSaveBlock2.battleTower.var_4AE[0] == 3 || gSaveBlock2.battleTower.var_4AE[0] == 6)
&& (gSaveBlock2.battleTower.var_4AE[1] == 3 || gSaveBlock2.battleTower.var_4AE[1] == 6))
{
- VarSet(VAR_0x4000, 5);
+ VarSet(VAR_TEMP_0, 5);
}
ValidateBattleTowerRecordChecksums();
@@ -801,7 +801,7 @@ void SetBattleTowerTrainerGfxId(u8 trainerIndex)
if (i != 30)
{
u8 trainerObjectGfxId = sMaleTrainerGfxIds[i];
- VarSet(0x4010, trainerObjectGfxId);
+ VarSet(VAR_OBJ_GFX_ID_0, trainerObjectGfxId);
return;
}
@@ -809,11 +809,11 @@ void SetBattleTowerTrainerGfxId(u8 trainerIndex)
if (i != 20)
{
u8 trainerObjectGfxId = sFemaleTrainerGfxIds[i];
- VarSet(0x4010, trainerObjectGfxId);
+ VarSet(VAR_OBJ_GFX_ID_0, trainerObjectGfxId);
return;
}
- VarSet(0x4010, MAP_OBJ_GFX_BOY_1);
+ VarSet(VAR_OBJ_GFX_ID_0, MAP_OBJ_GFX_BOY_1);
}
void SetEReaderTrainerGfxId(void)
@@ -1608,7 +1608,7 @@ void sub_8135534(u8 taskId)
}
}
-void sub_813556C(void)
+void StartSpecialBattle(void)
{
s32 i;
u16 heldItem;
@@ -1616,7 +1616,7 @@ void sub_813556C(void)
switch (gSpecialVar_0x8004)
{
- case 0:
+ case 0: // battle tower battle
gBattleTypeFlags = (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_TRAINER);
gTrainerBattleOpponent = 0;
@@ -1627,7 +1627,7 @@ void sub_813556C(void)
transition = BattleSetup_GetBattleTowerBattleTransition();
BattleTransition_StartOnField(transition);
break;
- case 1:
+ case 1: // secret base battle
for (i = 0; i < PARTY_SIZE; i++)
{
heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
@@ -1639,7 +1639,7 @@ void sub_813556C(void)
transition = BattleSetup_GetBattleTowerBattleTransition();
BattleTransition_StartOnField(transition);
break;
- case 2:
+ case 2: // e-reader trainer battle
ZeroEnemyPartyMons();
for (i = 0; i < 3; i++)
@@ -1658,7 +1658,7 @@ void sub_813556C(void)
}
}
-void sub_8135668(void)
+void SetBattleTowerProperty(void)
{
s32 i;
u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType;
@@ -1740,7 +1740,7 @@ void sub_8135668(void)
}
}
-void sub_81358A4(void)
+void BattleTowerUtil(void)
{
u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType;
@@ -1789,7 +1789,7 @@ void sub_81358A4(void)
}
}
-void sub_8135A14(void)
+void SetBattleTowerParty(void)
{
s32 i;
@@ -1954,7 +1954,7 @@ void sub_8135AC4(void)
sub_8135A3C();
}
-void sub_8135BA0(void)
+void SaveBattleTowerProgress(void)
{
u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType;
@@ -1976,7 +1976,7 @@ void sub_8135BA0(void)
gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8004;
}
- VarSet(VAR_0x4000, 0);
+ VarSet(VAR_TEMP_0, 0);
gSaveBlock2.battleTower.unk_554 = 1;
TrySavingData(EREADER_SAVE);
}
@@ -2336,7 +2336,7 @@ void PrintEReaderTrainerFarewellMessage(void)
}
}
-void sub_813610C(void)
+void TryEnableBravoTrainerBattleTower(void)
{
s32 i;
diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c
index 2abbac287..960a163c1 100644
--- a/src/field/berry_tag_screen.c
+++ b/src/field/berry_tag_screen.c
@@ -29,7 +29,7 @@ struct Struct2000000
};
extern struct Struct2000000 gSharedMem;
-extern u16 gUnknown_030041B4;
+extern u16 gBattle_BG1_Y;
static EWRAM_DATA u8 gUnknown_0203932C = 0;
static EWRAM_DATA s16 gUnknown_0203932E[5] = {0};
@@ -77,8 +77,8 @@ static void sub_8146014(void)
static void sub_814602C(void)
{
- REG_BG0VOFS = gUnknown_030041B4;
- REG_BG1VOFS = gUnknown_030041B4;
+ REG_BG0VOFS = gBattle_BG1_Y;
+ REG_BG1VOFS = gBattle_BG1_Y;
LoadOam();
ProcessSpriteCopyRequests();
@@ -183,7 +183,7 @@ static void sub_8146288(void)
REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(5) | BGCNT_16COLOR | BGCNT_TXT256x256;
REG_BG2CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(6) | BGCNT_16COLOR | BGCNT_TXT256x256;
REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256;
- gUnknown_030041B4 = 0;
+ gBattle_BG1_Y = 0;
}
bool8 sub_81462B8(void)
@@ -394,17 +394,17 @@ static void sub_8146798(u8 taskId)
{
s16 *taskData = gTasks[taskId].data;
- gUnknown_030041B4 = (gUnknown_030041B4 + taskData[0]) & 0xFF;
- if ((taskData[0] > 0 && gUnknown_030041B4 == 144)
- || (taskData[0] < 0 && gUnknown_030041B4 == 112))
+ gBattle_BG1_Y = (gBattle_BG1_Y + taskData[0]) & 0xFF;
+ if ((taskData[0] > 0 && gBattle_BG1_Y == 144)
+ || (taskData[0] < 0 && gBattle_BG1_Y == 112))
{
sub_8146810(gTasks[taskId].data[1]);
sub_81468BC();
}
- if (gUnknown_030041B4 == 0)
+ if (gBattle_BG1_Y == 0)
{
- gTasks[taskId].data[0] = gUnknown_030041B4;
- gTasks[taskId].data[1] = gUnknown_030041B4;
+ gTasks[taskId].data[0] = gBattle_BG1_Y;
+ gTasks[taskId].data[1] = gBattle_BG1_Y;
gTasks[taskId].func = sub_8146480;
}
}
diff --git a/src/field/coord_event_weather.c b/src/field/coord_event_weather.c
index 9c5a1ca4d..db4e9c161 100644
--- a/src/field/coord_event_weather.c
+++ b/src/field/coord_event_weather.c
@@ -1,115 +1,116 @@
#include "global.h"
+#include "constants/weather.h"
#include "coord_event_weather.h"
#include "field_weather.h"
struct CoordEventWeather
{
- u8 weather;
+ u8 coordEventWeather;
void (*func)(void);
};
-static void CoordEventWeather_Indoor(void);
+static void CoordEventWeather_Clouds(void);
static void CoordEventWeather_Sunny(void);
-static void CoordEventWeather_Rain(void);
-static void CoordEventWeather_Snowflakes(void);
+static void CoordEventWeather_LightRain(void);
+static void CoordEventWeather_Snow(void);
static void CoordEventWeather_Thunderstorm(void);
static void CoordEventWeather_Fog(void);
static void CoordEventWeather_DiagonalFog(void);
-static void CoordEventWeather_Snow(void);
+static void CoordEventWeather_Ash(void);
static void CoordEventWeather_Sandstorm(void);
-static void CoordEventWeather_Cloudy(void);
+static void CoordEventWeather_Dark(void);
static void CoordEventWeather_Drought(void);
-static void CoordEventWeather_UnderwaterFog(void);
-static void CoordEventWeather_UnderwaterBubbles(void);
+static void CoordEventWeather_Route119Cycle(void);
+static void CoordEventWeather_Route123Cycle(void);
static const struct CoordEventWeather sCoordEventWeatherFuncs[] =
{
- { 0x1, CoordEventWeather_Indoor },
- { 0x2, CoordEventWeather_Sunny },
- { 0x3, CoordEventWeather_Rain },
- { 0x4, CoordEventWeather_Snowflakes },
- { 0x5, CoordEventWeather_Thunderstorm },
- { 0x6, CoordEventWeather_Fog },
- { 0x7, CoordEventWeather_DiagonalFog },
- { 0x8, CoordEventWeather_Snow },
- { 0x9, CoordEventWeather_Sandstorm },
- { 0xa, CoordEventWeather_Cloudy },
- { 0xb, CoordEventWeather_Drought },
- { 0x14, CoordEventWeather_UnderwaterFog },
- { 0x15, CoordEventWeather_UnderwaterBubbles },
+ { COORD_EVENT_WEATHER_CLOUDS, CoordEventWeather_Clouds },
+ { COORD_EVENT_WEATHER_SUNNY, CoordEventWeather_Sunny },
+ { COORD_EVENT_WEATHER_RAIN_LIGHT, CoordEventWeather_LightRain },
+ { COORD_EVENT_WEATHER_SNOW, CoordEventWeather_Snow },
+ { COORD_EVENT_WEATHER_RAIN_MED, CoordEventWeather_Thunderstorm },
+ { COORD_EVENT_WEATHER_FOG_1, CoordEventWeather_Fog },
+ { COORD_EVENT_WEATHER_FOG_2, CoordEventWeather_DiagonalFog },
+ { COORD_EVENT_WEATHER_ASH, CoordEventWeather_Ash },
+ { COORD_EVENT_WEATHER_SANDSTORM, CoordEventWeather_Sandstorm },
+ { COORD_EVENT_WEATHER_DARK, CoordEventWeather_Dark },
+ { COORD_EVENT_WEATHER_DROUGHT, CoordEventWeather_Drought },
+ { COORD_EVENT_WEATHER_ROUTE119_CYCLE, CoordEventWeather_Route119Cycle },
+ { COORD_EVENT_WEATHER_ROUTE123_CYCLE, CoordEventWeather_Route123Cycle },
};
-static void CoordEventWeather_Indoor(void)
+static void CoordEventWeather_Clouds(void)
{
- SetWeather(1);
+ SetWeather(WEATHER_CLOUDS);
}
static void CoordEventWeather_Sunny(void)
{
- SetWeather(2);
+ SetWeather(WEATHER_SUNNY);
}
-static void CoordEventWeather_Rain(void)
+static void CoordEventWeather_LightRain(void)
{
- SetWeather(3);
+ SetWeather(WEATHER_RAIN_LIGHT);
}
-static void CoordEventWeather_Snowflakes(void)
+static void CoordEventWeather_Snow(void)
{
- SetWeather(4);
+ SetWeather(WEATHER_SNOW);
}
static void CoordEventWeather_Thunderstorm(void)
{
- SetWeather(5);
+ SetWeather(WEATHER_RAIN_MED);
}
static void CoordEventWeather_Fog(void)
{
- SetWeather(6);
+ SetWeather(WEATHER_FOG_1);
}
static void CoordEventWeather_DiagonalFog(void)
{
- SetWeather(9);
+ SetWeather(WEATHER_FOG_2);
}
-static void CoordEventWeather_Snow(void)
+static void CoordEventWeather_Ash(void)
{
- SetWeather(7);
+ SetWeather(WEATHER_ASH);
}
static void CoordEventWeather_Sandstorm(void)
{
- SetWeather(8);
+ SetWeather(WEATHER_SANDSTORM);
}
-static void CoordEventWeather_Cloudy(void)
+static void CoordEventWeather_Dark(void)
{
- SetWeather(11);
+ SetWeather(WEATHER_DARK);
}
static void CoordEventWeather_Drought(void)
{
- SetWeather(12);
+ SetWeather(WEATHER_DROUGHT);
}
-static void CoordEventWeather_UnderwaterFog(void)
+static void CoordEventWeather_Route119Cycle(void)
{
- SetWeather(20);
+ SetWeather(WEATHER_ROUTE119_CYCLE);
}
-static void CoordEventWeather_UnderwaterBubbles(void)
+static void CoordEventWeather_Route123Cycle(void)
{
- SetWeather(21);
+ SetWeather(WEATHER_ROUTE123_CYCLE);
}
-void DoCoordEventWeather(u8 n)
+void DoCoordEventWeather(u8 coordEventWeather)
{
u8 i;
for (i = 0; i < ARRAY_COUNT(sCoordEventWeatherFuncs); i++)
{
- if (sCoordEventWeatherFuncs[i].weather == n)
+ if (sCoordEventWeatherFuncs[i].coordEventWeather == coordEventWeather)
{
sCoordEventWeatherFuncs[i].func();
return;
diff --git a/src/field/decoration.c b/src/field/decoration.c
index 8b774afc3..87a9d8028 100644
--- a/src/field/decoration.c
+++ b/src/field/decoration.c
@@ -1426,139 +1426,6 @@ const struct YesNoFuncTable gUnknown_083EC634[] = {
{sub_8109D04, sub_80FF058}
};
-const u16 gUnknown_083EC654[] = {0x6318, 0x739C, 0x7FFF};
-const u8 gUnknown_083EC65A[] = _("{PALETTE 13}{STR_VAR_1}");
-
-const u8 Unknown_3EC660[] = {0, 1, 2, 3};
-const u8 Unknown_3EC664[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13};
-const u8 Unknown_3EC670[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
-const u8 Unknown_3EC680[] = {0, 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21};
-const u8 Unknown_3EC68C[] = {0, 1, 2, 3, 4, 5, 6, 7};
-const u8 Unknown_3EC694[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
-const u8 Unknown_3EC6B4[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45};
-const u8 Unknown_3EC6D8[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29};
-
-const u8 Unknown_3EC6F0[] = {0, 0, 0, 0};
-const u8 Unknown_3EC6F4[] = {0, 0, 1, 1, 0, 0, 1, 1};
-const u8 Unknown_3EC6FC[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2};
-const u8 Unknown_3EC708[] = {0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 4, 4, 5, 5, 6, 6, 7, 7};
-const u8 Unknown_3EC728[] = {0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3};
-const u8 Unknown_3EC738[] = {0, 0, 0, 0, 1, 1, 1, 1};
-const u8 Unknown_3EC740[] = {0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2};
-const u8 Unknown_3EC74C[] = {0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3, 4, 4, 5, 5, 4, 4, 5, 5, 6, 6, 7, 7, 6, 6, 7, 7};
-const u8 Unknown_3EC76C[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 6, 6, 7, 7, 8, 8};
-const u8 Unknown_3EC790[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 3, 3, 4, 4, 5, 5};
-
-const u8 Unknown_3EC7A8[] = {4, 5, 6, 7};
-const u8 Unknown_3EC7AC[] = {4, 5, 4, 5, 6, 7, 6, 7};
-const u8 Unknown_3EC7B4[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7};
-const u8 Unknown_3EC7C0[] = {4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7};
-const u8 Unknown_3EC7E0[] = {4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7};
-const u8 Unknown_3EC7F0[] = {4, 5, 6, 7, 4, 5, 6, 7};
-const u8 Unknown_3EC7F8[] = {4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7};
-const u8 Unknown_3EC804[] = {4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7};
-const u8 Unknown_3EC824[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7};
-const u8 Unknown_3EC848[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7};
-
-const struct UnkStruct_803EC860 gUnknown_083EC860[] = {
- {Unknown_3EC660, Unknown_3EC6F0, Unknown_3EC7A8, 0x4},
- {Unknown_3EC68C, Unknown_3EC6F4, Unknown_3EC7AC, 0x8},
- {Unknown_3EC664, Unknown_3EC6FC, Unknown_3EC7B4, 0xc},
- {Unknown_3EC694, Unknown_3EC708, Unknown_3EC7C0, 0x20},
- {Unknown_3EC670, Unknown_3EC728, Unknown_3EC7E0, 0x10},
- {Unknown_3EC68C, Unknown_3EC738, Unknown_3EC7F0, 0x8},
- {Unknown_3EC680, Unknown_3EC740, Unknown_3EC7F8, 0xc},
- {Unknown_3EC694, Unknown_3EC74C, Unknown_3EC804, 0x20},
- {Unknown_3EC6B4, Unknown_3EC76C, Unknown_3EC824, 0x24},
- {Unknown_3EC6D8, Unknown_3EC790, Unknown_3EC848, 0x18}
-};
-
-const struct UnkStruct_083EC900 gUnknown_083EC900[] = {
- {0, 1, 0x78, 0x4e},
- {1, 2, 0x80, 0x4e},
- {1, 3, 0x90, 0x56},
- {1, 3, 0x90, 0x46},
- {0, 2, 0x80, 0x46},
- {2, 2, 0x78, 0x46},
- {2, 3, 0x80, 0x56},
- {2, 3, 0x80, 0x36},
- {0, 3, 0x90, 0x46},
- {1, 3, 0x90, 0x46}
-};
-
-const union AnimCmd gSpriteAnim_83EC928[] = {
- ANIMCMD_FRAME(.imageValue = 0, .duration = 0),
- ANIMCMD_END
-};
-
-const union AnimCmd *const gSpriteAnimTable_83EC930[] = {
- gSpriteAnim_83EC928
-};
-
-const struct SpriteFrameImage gSpriteImageTable_83EC934[] = {
- {.data = gUnknown_02038900.image, .size = sizeof(gUnknown_02038900.image)}
-};
-
-const struct SpriteTemplate gSpriteTemplate_83EC93C = {
- .tileTag = 0xffff,
- .paletteTag = 3000,
- .oam = &gUnknown_020391AC,
- .anims = gSpriteAnimTable_83EC930,
- .images = gSpriteImageTable_83EC934,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81009A8
-};
-
-const struct SpritePalette gUnknown_083EC954 = {.data = (u16 *)&gUnknown_02038900.palette, .tag = 3000};
-
-const struct YesNoFuncTable gUnknown_083EC95C = {.yesFunc = sub_81000C4, .noFunc = sub_810065C};
-const struct YesNoFuncTable gUnknown_083EC964 = {.yesFunc = sub_810026C, .noFunc = sub_810065C};
-const struct YesNoFuncTable gUnknown_083EC96C[] = {
- {.yesFunc = sub_80FFAB0, .noFunc = sub_80FFB08},
- {.yesFunc = sub_8100F88, .noFunc = sub_8100FB4}
-};
-
-const u8 gUnknown_083EC97C[] = {4, 4, 4, 4, 0, 3, 3, 0};
-const u8 gUnknown_083EC984[] = {4, 4, 4, 4, 0, 4, 3, 0};
-
-const u16 gUnknown_083EC98C[] = INCBIN_U16("graphics/unknown/83EC98C.gbapal");
-const u16 Unknown_3EC9AC[] = INCBIN_U16("graphics/unknown/83EC9AC.gbapal");
-const struct YesNoFuncTable gUnknown_083EC9CC = {.yesFunc = sub_810153C, .noFunc = sub_8100EEC};
-const struct YesNoFuncTable gUnknown_083EC9D4 = {.yesFunc = sub_8101590, .noFunc = sub_8100EEC};
-const u32 gSpriteImage_83EC9DC[] = INCBIN_U32("graphics/unknown_sprites/83EC9DC.4bpp");
-const struct SpritePalette gUnknown_083ECA5C = {.data = gUnknown_083EC98C, .tag = 8};
-const struct SpritePalette gUnknown_083ECA64 = {.data = Unknown_3EC9AC, .tag = 8};
-const struct OamData gOamData_83ECA6C = {
- .size = 1, .priority = 1
-};
-
-const union AnimCmd gSpriteAnim_83ECA74[] = {
- ANIMCMD_FRAME(.imageValue = 0, .duration = 0),
- ANIMCMD_END
-};
-
-const union AnimCmd *const gSpriteAnimTable_83ECA7C[] = {
- gSpriteAnim_83ECA74
-};
-
-const struct SpriteFrameImage gSpriteImageTable_83ECA80[] = {
- obj_frame_tiles(gSpriteImage_83EC9DC)
-};
-
-const struct SpriteTemplate gSpriteTemplate_83ECA88 = {
- .tileTag = 0xffff,
- .paletteTag = 8,
- .oam = &gOamData_83ECA6C,
- .anims = gSpriteAnimTable_83ECA7C,
- .images = gSpriteImageTable_83ECA80,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8101698
-};
-
-const struct YesNoFuncTable gUnknown_083ECAA0 = {.yesFunc = sub_8101848, .noFunc = sub_80FED3C};
-
-u8 *const unref_label_083ECAA8[] = {gSharedMem};
-
// text
extern u8 gUnknown_0815F399[];
@@ -1605,8 +1472,9 @@ void DoPlayerPCDecoration(u8 taskId)
void sub_80FE2B4(void)
{
- u16 palettes[3];
- memcpy(palettes, gUnknown_083EC654, sizeof gUnknown_083EC654);
+ u16 palettes[3] = {RGB(24, 24, 24),
+ RGB(28, 28, 28),
+ RGB(31, 31, 31)};
LoadPalette(&palettes[2], 0xdf, 2);
LoadPalette(&palettes[1], 0xd1, 2);
LoadPalette(&palettes[0], 0xd8, 2);
@@ -1908,6 +1776,8 @@ void sub_80FE948(u8 taskId)
}
}
+const u8 gUnknown_083EC65A[] = _("{PALETTE 13}{STR_VAR_1}");
+
void sub_80FEABC(u8 taskId, u8 dummy1)
{
u16 i;
@@ -3568,6 +3438,136 @@ u16 sub_810089C(u16 a0)
return ((u16 *)gMapHeader.mapData->secondaryTileset->metatiles)[a0] & 0xfff;
}
+const u8 Unknown_3EC660[] = {0, 1, 2, 3};
+const u8 Unknown_3EC664[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13};
+const u8 Unknown_3EC670[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
+const u8 Unknown_3EC680[] = {0, 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21};
+const u8 Unknown_3EC68C[] = {0, 1, 2, 3, 4, 5, 6, 7};
+const u8 Unknown_3EC694[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
+const u8 Unknown_3EC6B4[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45};
+const u8 Unknown_3EC6D8[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29};
+
+const u8 Unknown_3EC6F0[] = {0, 0, 0, 0};
+const u8 Unknown_3EC6F4[] = {0, 0, 1, 1, 0, 0, 1, 1};
+const u8 Unknown_3EC6FC[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2};
+const u8 Unknown_3EC708[] = {0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 4, 4, 5, 5, 6, 6, 7, 7};
+const u8 Unknown_3EC728[] = {0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3};
+const u8 Unknown_3EC738[] = {0, 0, 0, 0, 1, 1, 1, 1};
+const u8 Unknown_3EC740[] = {0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2};
+const u8 Unknown_3EC74C[] = {0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3, 4, 4, 5, 5, 4, 4, 5, 5, 6, 6, 7, 7, 6, 6, 7, 7};
+const u8 Unknown_3EC76C[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 6, 6, 7, 7, 8, 8};
+const u8 Unknown_3EC790[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 3, 3, 4, 4, 5, 5};
+
+const u8 Unknown_3EC7A8[] = {4, 5, 6, 7};
+const u8 Unknown_3EC7AC[] = {4, 5, 4, 5, 6, 7, 6, 7};
+const u8 Unknown_3EC7B4[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7};
+const u8 Unknown_3EC7C0[] = {4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7};
+const u8 Unknown_3EC7E0[] = {4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7};
+const u8 Unknown_3EC7F0[] = {4, 5, 6, 7, 4, 5, 6, 7};
+const u8 Unknown_3EC7F8[] = {4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7};
+const u8 Unknown_3EC804[] = {4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7};
+const u8 Unknown_3EC824[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7};
+const u8 Unknown_3EC848[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7};
+
+const struct UnkStruct_803EC860 gUnknown_083EC860[] = {
+ {Unknown_3EC660, Unknown_3EC6F0, Unknown_3EC7A8, 0x4},
+ {Unknown_3EC68C, Unknown_3EC6F4, Unknown_3EC7AC, 0x8},
+ {Unknown_3EC664, Unknown_3EC6FC, Unknown_3EC7B4, 0xc},
+ {Unknown_3EC694, Unknown_3EC708, Unknown_3EC7C0, 0x20},
+ {Unknown_3EC670, Unknown_3EC728, Unknown_3EC7E0, 0x10},
+ {Unknown_3EC68C, Unknown_3EC738, Unknown_3EC7F0, 0x8},
+ {Unknown_3EC680, Unknown_3EC740, Unknown_3EC7F8, 0xc},
+ {Unknown_3EC694, Unknown_3EC74C, Unknown_3EC804, 0x20},
+ {Unknown_3EC6B4, Unknown_3EC76C, Unknown_3EC824, 0x24},
+ {Unknown_3EC6D8, Unknown_3EC790, Unknown_3EC848, 0x18}
+};
+
+const struct UnkStruct_083EC900 gUnknown_083EC900[] = {
+ {0, 1, 0x78, 0x4e},
+ {1, 2, 0x80, 0x4e},
+ {1, 3, 0x90, 0x56},
+ {1, 3, 0x90, 0x46},
+ {0, 2, 0x80, 0x46},
+ {2, 2, 0x78, 0x46},
+ {2, 3, 0x80, 0x56},
+ {2, 3, 0x80, 0x36},
+ {0, 3, 0x90, 0x46},
+ {1, 3, 0x90, 0x46}
+};
+
+const union AnimCmd gSpriteAnim_83EC928[] = {
+ ANIMCMD_FRAME(.imageValue = 0, .duration = 0),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_83EC930[] = {
+ gSpriteAnim_83EC928
+};
+
+const struct SpriteFrameImage gSpriteImageTable_83EC934[] = {
+ {.data = gUnknown_02038900.image, .size = sizeof(gUnknown_02038900.image)}
+};
+
+const struct SpriteTemplate gSpriteTemplate_83EC93C = {
+ .tileTag = 0xffff,
+ .paletteTag = 3000,
+ .oam = &gUnknown_020391AC,
+ .anims = gSpriteAnimTable_83EC930,
+ .images = gSpriteImageTable_83EC934,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81009A8
+};
+
+const struct SpritePalette gUnknown_083EC954 = {.data = (u16 *)&gUnknown_02038900.palette, .tag = 3000};
+
+const struct YesNoFuncTable gUnknown_083EC95C = {.yesFunc = sub_81000C4, .noFunc = sub_810065C};
+const struct YesNoFuncTable gUnknown_083EC964 = {.yesFunc = sub_810026C, .noFunc = sub_810065C};
+const struct YesNoFuncTable gUnknown_083EC96C[] = {
+ {.yesFunc = sub_80FFAB0, .noFunc = sub_80FFB08},
+ {.yesFunc = sub_8100F88, .noFunc = sub_8100FB4}
+};
+
+const u8 gUnknown_083EC97C[] = {4, 4, 4, 4, 0, 3, 3, 0};
+const u8 gUnknown_083EC984[] = {4, 4, 4, 4, 0, 4, 3, 0};
+
+const u16 gUnknown_083EC98C[] = INCBIN_U16("graphics/unknown/83EC98C.gbapal");
+const u16 Unknown_3EC9AC[] = INCBIN_U16("graphics/unknown/83EC9AC.gbapal");
+const struct YesNoFuncTable gUnknown_083EC9CC = {.yesFunc = sub_810153C, .noFunc = sub_8100EEC};
+const struct YesNoFuncTable gUnknown_083EC9D4 = {.yesFunc = sub_8101590, .noFunc = sub_8100EEC};
+const u32 gSpriteImage_83EC9DC[] = INCBIN_U32("graphics/unknown_sprites/83EC9DC.4bpp");
+const struct SpritePalette gUnknown_083ECA5C = {.data = gUnknown_083EC98C, .tag = 8};
+const struct SpritePalette gUnknown_083ECA64 = {.data = Unknown_3EC9AC, .tag = 8};
+const struct OamData gOamData_83ECA6C = {
+ .size = 1, .priority = 1
+};
+
+const union AnimCmd gSpriteAnim_83ECA74[] = {
+ ANIMCMD_FRAME(.imageValue = 0, .duration = 0),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_83ECA7C[] = {
+ gSpriteAnim_83ECA74
+};
+
+const struct SpriteFrameImage gSpriteImageTable_83ECA80[] = {
+ obj_frame_tiles(gSpriteImage_83EC9DC)
+};
+
+const struct SpriteTemplate gSpriteTemplate_83ECA88 = {
+ .tileTag = 0xffff,
+ .paletteTag = 8,
+ .oam = &gOamData_83ECA6C,
+ .anims = gSpriteAnimTable_83ECA7C,
+ .images = gSpriteImageTable_83ECA80,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8101698
+};
+
+const struct YesNoFuncTable gUnknown_083ECAA0 = {.yesFunc = sub_8101848, .noFunc = sub_80FED3C};
+
+u8 *const unref_label_083ECAA8[] = {gSharedMem};
+
void sub_81008BC(struct UnkStruct_02038900 *unk_02038900)
{
u8 i;
diff --git a/src/field/dewford_trend.c b/src/field/dewford_trend.c
index b67f3a2bd..9afb7a16d 100644
--- a/src/field/dewford_trend.c
+++ b/src/field/dewford_trend.c
@@ -202,14 +202,14 @@ void sub_80FA4E4(void *a, u32 b, u8 unused)
*(dst++) = *(src++);
}
-void sub_80FA5BC(void)
+void BufferTrendyPhraseString(void)
{
struct EasyChatPair *s = &gSaveBlock1.easyChatPairs[gSpecialVar_0x8004];
ConvertEasyChatWordsToString(gStringVar1, s->words, 2, 1);
}
-void sub_80FA5E4(void)
+void TrendyPhraseIsOld(void)
{
u16 result = 0;
@@ -222,7 +222,7 @@ void sub_80FA5E4(void)
gSpecialVar_Result = result;
}
-void sub_80FA648(void)
+void GetDewfordHallPaintingNameIndex(void)
{
gSpecialVar_Result = (gSaveBlock1.easyChatPairs[0].words[0] + gSaveBlock1.easyChatPairs[0].words[1]) & 7;
}
diff --git a/src/field/easy_chat.c b/src/field/easy_chat.c
index 1dce5863e..94532506f 100644
--- a/src/field/easy_chat.c
+++ b/src/field/easy_chat.c
@@ -314,7 +314,7 @@ void sub_80EB7C4(void)
ShowFieldAutoScrollMessage(gStringVar4);
}
-void sub_80EB83C(void)
+void BufferRandomHobbyOrLifestyleString(void)
{
u16 group, local2;
diff --git a/src/field/event_data.c b/src/field/event_data.c
index 587da8138..9d6d2372b 100644
--- a/src/field/event_data.c
+++ b/src/field/event_data.c
@@ -112,10 +112,10 @@ bool32 CanResetRTC(void)
u16 *GetVarPointer(u16 id)
{
- if (id < 0x4000)
+ if (id < VARS_START)
return NULL;
if (id < 0x8000)
- return &gSaveBlock1.vars[id - 0x4000];
+ return &gSaveBlock1.vars[id - VARS_START];
return gSpecialVars[id - 0x8000];
}
@@ -138,7 +138,7 @@ bool8 VarSet(u16 id, u16 value)
u8 VarGetFieldObjectGraphicsId(u8 id)
{
- return VarGet(0x4010 + id);
+ return VarGet(VAR_OBJ_GFX_ID_0 + id);
}
u8 *GetFlagPointer(u16 id)
diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c
index cd7d3a2e2..52e66f16e 100644
--- a/src/field/field_control_avatar.c
+++ b/src/field/field_control_avatar.c
@@ -355,7 +355,7 @@ static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *position, u8 unuse
case 5:
case 6:
case 7:
- gSpecialVar_0x8004 = ((u32)bgEvent->bgUnion.script >> 16) + 0x258;
+ gSpecialVar_0x8004 = ((u32)bgEvent->bgUnion.script >> 16) + FLAG_HIDDEN_ITEMS_START;
gSpecialVar_0x8005 = (u32)bgEvent->bgUnion.script;
if (FlagGet(gSpecialVar_0x8004) == TRUE)
return NULL;
@@ -363,7 +363,7 @@ static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *position, u8 unuse
case 8:
if (c == 2)
{
- gSpecialVar_0x8004 = (u32)bgEvent->bgUnion.script;
+ gSpecialVar_0x8004 = bgEvent->bgUnion.secretBaseId;
if (sub_80BC050())
return gUnknown_081A2C51;
}
@@ -493,7 +493,7 @@ bool8 sub_8068870(u16 a)
bool8 sub_8068894(void)
{
- sub_8082B78();
+ IncrementRematchStepCounter();
happiness_algorithm_step();
if (overworld_poison_step() == TRUE)
{
diff --git a/src/field/field_effect.c b/src/field/field_effect.c
index 4337300da..1e2aaa4ed 100644
--- a/src/field/field_effect.c
+++ b/src/field/field_effect.c
@@ -310,114 +310,6 @@ void (*const gUnknown_0839F378[])(struct Task *) = {
sub_8087914
};
-const u8 gUnknown_0839F380[] = {1, 3, 4, 2, 1};
-
-void (*const gUnknown_0839F388[])(struct Task *) = {
- sub_8087AA4,
- sub_8087AC8
-};
-
-void (*const gUnknown_0839F390[])(struct Task *) = {
- sub_8087BEC,
- sub_8087C14,
- sub_8087CA4,
- sub_8087D78
-};
-
-void (*const gUnknown_0839F3A0[])(struct Task *) = {
- sub_8087E4C,
- sub_8087ED8,
- sub_8087FDC
-};
-
-void (*const gUnknown_0839F3AC[])(struct Task *) = {
- sub_8088150,
- sub_80881C0,
- sub_8088228,
- sub_80882B4,
- sub_80882E4,
- sub_8088338,
- sub_8088380
-};
-
-void (*const gUnknown_0839F3C8[])(struct Task *) = {
- sub_80884AC,
- sub_80884E8,
- sub_8088554,
- sub_80885A8,
- sub_80885D8,
- sub_808860C,
- sub_808862C
-};
-
-void (*const gUnknown_0839F3E4[])(struct Task *) = {
- sub_8088984,
- sub_80889E4,
- sub_8088A30,
- sub_8088A78,
- sub_8088AF4
-};
-
-void (*const gUnknown_0839F3F8[])(struct Task *) = {
- sub_8088CA0,
- sub_8088CF8,
- sub_8088D3C,
- sub_8088D94,
- sub_8088DD8,
- sub_8088E2C,
- sub_8088EB4,
- sub_8088F10,
- sub_8088F30
-};
-
-const union AffineAnimCmd SpriteAffineAnim_839F41C[] = {
- AFFINEANIMCMD_FRAME(8, 8, -30, 0),
- AFFINEANIMCMD_FRAME(28, 28, 0, 30),
- AFFINEANIMCMD_END
-};
-
-const union AffineAnimCmd SpriteAffineAnim_839F434[] = {
- AFFINEANIMCMD_FRAME(256, 256, 64, 0),
- AFFINEANIMCMD_FRAME(-10, -10, 0, 22),
- AFFINEANIMCMD_END
-};
-
-const union AffineAnimCmd *const gSpriteAffineAnimTable_0839F44C[] = {
- SpriteAffineAnim_839F41C,
- SpriteAffineAnim_839F434
-};
-
-void (*const gUnknown_0839F454[])(struct Task *) = {
- sub_80892A0,
- sub_8089354,
- sub_80893C0,
- sub_8089414,
- sub_808948C,
- sub_80894C4,
- fishE
-};
-
-const s16 gUnknown_0839F470[] = {
- -2,
- -4,
- -5,
- -6,
- -7,
- -8,
- -8,
- -8,
- -7,
- -7,
- -6,
- -5,
- -3,
- -2,
- 0,
- 2,
- 4,
- 8
-};
-
static u8 sActiveList[32];
extern u8 *gFieldEffectScriptPointers[];
@@ -2100,8 +1992,7 @@ void sub_80878F4(struct Task *task)
void sub_8087914(struct Task *task)
{
struct MapObject *mapObject;
- u8 unknown_0839F380[5];
- memcpy(unknown_0839F380, gUnknown_0839F380, sizeof gUnknown_0839F380);
+ u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
if (task->data[14] != 0 && (--task->data[14]) == 0)
{
sub_8053FF8();
@@ -2130,6 +2021,11 @@ void sub_8087914(struct Task *task)
}
}
+void (*const gUnknown_0839F388[])(struct Task *) = {
+ sub_8087AA4,
+ sub_8087AC8
+};
+
void sub_8087A74(u8);
void mapldr_080859D4(void)
@@ -2159,10 +2055,8 @@ void sub_8087AA4(struct Task *task)
void sub_8087AC8(struct Task *task)
{
- struct MapObject *mapObject;
- u8 unknown_0839F380[5];
- memcpy(unknown_0839F380, gUnknown_0839F380, sizeof gUnknown_0839F380);
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
+ struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
if (task->data[1] == 0 || (--task->data[1]) == 0)
{
if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) && !FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
@@ -2195,6 +2089,13 @@ void sub_8087BA8(void)
CreateTask(sub_8087BBC, 0);
}
+void (*const gUnknown_0839F390[])(struct Task *) = {
+ sub_8087BEC,
+ sub_8087C14,
+ sub_8087CA4,
+ sub_8087D78
+};
+
void sub_8087BBC(u8 taskId)
{
gUnknown_0839F390[gTasks[taskId].data[0]](&gTasks[taskId]);
@@ -2211,10 +2112,8 @@ void sub_8087BEC(struct Task *task)
void sub_8087C14(struct Task *task)
{
- struct MapObject *mapObject;
- u8 unknown_0839F380[5];
- memcpy(unknown_0839F380, gUnknown_0839F380, sizeof gUnknown_0839F380);
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
+ struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
if (task->data[1] == 0 || (--task->data[1]) == 0)
{
FieldObjectTurn(mapObject, unknown_0839F380[mapObject->mapobj_unk_18]);
@@ -2233,12 +2132,9 @@ void sub_8087C14(struct Task *task)
void sub_8087CA4(struct Task *task)
{
- struct MapObject *mapObject;
- struct Sprite *sprite;
- u8 unknown_0839F380[5];
- memcpy(unknown_0839F380, gUnknown_0839F380, sizeof gUnknown_0839F380);
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- sprite = &gSprites[gPlayerAvatar.spriteId];
+ u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
+ struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
if ((--task->data[1]) <= 0)
{
task->data[1] = 4;
@@ -2288,6 +2184,12 @@ void mapldr_08085D88(void)
CreateTask(sub_8087E1C, 0);
}
+void (*const gUnknown_0839F3A0[])(struct Task *) = {
+ sub_8087E4C,
+ sub_8087ED8,
+ sub_8087FDC
+};
+
void sub_8087E1C(u8 taskId)
{
gUnknown_0839F3A0[gTasks[taskId].data[0]](&gTasks[taskId]);
@@ -2314,12 +2216,9 @@ void sub_8087E4C(struct Task *task)
void sub_8087ED8(struct Task *task)
{
- u8 unknown_0839F380[5];
- struct MapObject *mapObject;
- struct Sprite *sprite;
- memcpy(unknown_0839F380, gUnknown_0839F380, sizeof gUnknown_0839F380);
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- sprite = &gSprites[gPlayerAvatar.spriteId];
+ u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
+ struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
if ((sprite->pos2.y += task->data[1]) >= -8)
{
if (task->data[13] == 0)
@@ -2356,10 +2255,8 @@ void sub_8087ED8(struct Task *task)
void sub_8087FDC(struct Task *task)
{
- u8 unknown_0839F380[5];
- struct MapObject *mapObject;
- memcpy(unknown_0839F380, gUnknown_0839F380, sizeof gUnknown_0839F380);
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
+ struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
if ((--task->data[1]) == 0)
{
FieldObjectTurn(mapObject, unknown_0839F380[mapObject->mapobj_unk_18]);
@@ -2409,6 +2306,16 @@ bool8 FldEff_FieldMoveShowMonInit(void)
return FALSE;
}
+void (*const gUnknown_0839F3AC[])(struct Task *) = {
+ sub_8088150,
+ sub_80881C0,
+ sub_8088228,
+ sub_80882B4,
+ sub_80882E4,
+ sub_8088338,
+ sub_8088380
+};
+
void sub_8088120(u8 taskId)
{
gUnknown_0839F3AC[gTasks[taskId].data[0]](&gTasks[taskId]);
@@ -2565,6 +2472,16 @@ bool8 sub_8088708(struct Task *);
void sub_80886F8(struct Task *);
bool8 sub_80887C0(struct Task *);
+void (*const gUnknown_0839F3C8[])(struct Task *) = {
+ sub_80884AC,
+ sub_80884E8,
+ sub_8088554,
+ sub_80885A8,
+ sub_80885D8,
+ sub_808860C,
+ sub_808862C
+};
+
void sub_808847C(u8 taskId)
{
gUnknown_0839F3C8[gTasks[taskId].data[0]](&gTasks[taskId]);
@@ -2884,6 +2801,14 @@ u8 FldEff_UseSurf(void)
return FALSE;
}
+void (*const gUnknown_0839F3E4[])(struct Task *) = {
+ sub_8088984,
+ sub_80889E4,
+ sub_8088A30,
+ sub_8088A78,
+ sub_8088AF4
+};
+
void sub_8088954(u8 taskId)
{
gUnknown_0839F3E4[gTasks[taskId].data[0]](&gTasks[taskId]);
@@ -3012,6 +2937,18 @@ u8 FldEff_UseFly(void)
return 0;
}
+void (*const gUnknown_0839F3F8[])(struct Task *) = {
+ sub_8088CA0,
+ sub_8088CF8,
+ sub_8088D3C,
+ sub_8088D94,
+ sub_8088DD8,
+ sub_8088E2C,
+ sub_8088EB4,
+ sub_8088F10,
+ sub_8088F30
+};
+
void sub_8088C70(u8 taskId)
{
gUnknown_0839F3F8[gTasks[taskId].data[0]](&gTasks[taskId]);
@@ -3170,6 +3107,23 @@ void sub_8088FFC(u8 a0, u8 a1)
gSprites[a0].data[6] = a1;
}
+const union AffineAnimCmd SpriteAffineAnim_839F41C[] = {
+ AFFINEANIMCMD_FRAME(8, 8, -30, 0),
+ AFFINEANIMCMD_FRAME(28, 28, 0, 30),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd SpriteAffineAnim_839F434[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 64, 0),
+ AFFINEANIMCMD_FRAME(-10, -10, 0, 22),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_0839F44C[] = {
+ SpriteAffineAnim_839F41C,
+ SpriteAffineAnim_839F434
+};
+
void sub_8089018(struct Sprite *sprite)
{
if (sprite->data[7] == 0)
@@ -3282,6 +3236,16 @@ u8 FldEff_FlyIn(void)
return 0;
}
+void (*const gUnknown_0839F454[])(struct Task *) = {
+ sub_80892A0,
+ sub_8089354,
+ sub_80893C0,
+ sub_8089414,
+ sub_808948C,
+ sub_80894C4,
+ fishE
+};
+
void sub_8089270(u8 taskId)
{
gUnknown_0839F454[gTasks[taskId].data[0]](&gTasks[taskId]);
@@ -3333,10 +3297,27 @@ void sub_8089354(struct Task *task)
void sub_80893C0(struct Task *task)
{
- s16 unknown_0839F470[18];
- struct Sprite *sprite;
- memcpy(unknown_0839F470, gUnknown_0839F470, sizeof gUnknown_0839F470);
- sprite = &gSprites[gPlayerAvatar.spriteId];
+ s16 unknown_0839F470[18] = {
+ -2,
+ -4,
+ -5,
+ -6,
+ -7,
+ -8,
+ -8,
+ -8,
+ -7,
+ -7,
+ -6,
+ -5,
+ -3,
+ -2,
+ 0,
+ 2,
+ 4,
+ 8
+ };
+ struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
sprite->pos2.y = unknown_0839F470[task->data[2]];
if ((++task->data[2]) >= 18)
{
diff --git a/src/field/field_effect_helpers.c b/src/field/field_effect_helpers.c
index 1d831d2e9..165829a55 100644
--- a/src/field/field_effect_helpers.c
+++ b/src/field/field_effect_helpers.c
@@ -31,50 +31,6 @@ static u32 ShowDisguiseFieldEffect(u8, u8, u8);
const u8 UnusedEggString_8401E28[] = _("タマゴ");
-const u16 gUnknown_08401E2C[] = {
- 0x0c,
- 0x1c,
- 0x2c
-};
-
-const u8 gUnknown_08401E32[] = {
- 0,
- 1,
- 2,
- 3
-};
-
-const u16 gUnknown_08401E36[] = {
- 4,
- 4,
- 4,
- 16
-};
-
-void (*const gUnknown_08401E40[])(struct Sprite *) = {
- sub_81275A0,
- sub_81275C4
-};
-
-void (*const gUnknown_08401E48[])(struct Sprite *) = {
- sub_8127DA0,
- sub_8127DD0,
- sub_8127E30
-};
-
-const u8 gUnknown_08401E54[] = {
- 0,
- 0,
- 1,
- 2,
- 3
-};
-
-const u16 gUnknown_08401E5A[] = {
- 3,
- 7
-};
-
void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag)
{
struct Sprite *newSprite;
@@ -107,9 +63,7 @@ static s16 sub_81268D0(struct MapObject *mapObject)
static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite)
{
u8 whichElement;
- u16 unk_8041e2c[ARRAY_COUNT(gUnknown_08401E2C)];
-
- memcpy(unk_8041e2c, gUnknown_08401E2C, sizeof gUnknown_08401E2C);
+ u16 unk_8041e2c[] = {0x0c, 0x1c, 0x2c};
sprite->data[2] = 0;
if (!GetFieldObjectGraphicsInfo(mapObject->graphicsId)->disableReflectionPaletteLoad && ((whichElement = sub_8057450(mapObject->mapobj_unk_1F)) || (whichElement = sub_8057450(mapObject->mapobj_unk_1E))))
{
@@ -237,6 +191,20 @@ void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y)
}
}
+const u8 gUnknown_08401E32[] = {
+ 0,
+ 1,
+ 2,
+ 3
+};
+
+const u16 gUnknown_08401E36[] = {
+ 4,
+ 4,
+ 4,
+ 16
+};
+
u32 FldEff_Shadow(void)
{
u8 mapObjectId;
@@ -589,6 +557,11 @@ u32 FldEff_BikeTireTracks(void)
return spriteId;
}
+void (*const gUnknown_08401E40[])(struct Sprite *) = {
+ sub_81275A0,
+ sub_81275C4
+};
+
void sub_8127584(struct Sprite *sprite)
{
gUnknown_08401E40[sprite->data[0]](sprite);
@@ -917,6 +890,12 @@ u32 FldEff_Ash(void)
return 0;
}
+void (*const gUnknown_08401E48[])(struct Sprite *) = {
+ sub_8127DA0,
+ sub_8127DD0,
+ sub_8127E30
+};
+
void sub_8127D84(struct Sprite *sprite)
{
gUnknown_08401E48[sprite->data[0]](sprite);
@@ -1018,9 +997,7 @@ void sub_8127F7C(struct Sprite *sprite)
static void sub_8127FD4(struct MapObject *mapObject, struct Sprite *sprite)
{
- u8 unk_8041E54[ARRAY_COUNT(gUnknown_08401E54)];
-
- memcpy(unk_8041E54, gUnknown_08401E54, sizeof gUnknown_08401E54);
+ u8 unk_8041E54[] = {0, 0, 1, 2, 3};
if (sub_8127F64(sprite) == 0)
{
StartSpriteAnimIfDifferent(sprite, unk_8041E54[mapObject->placeholder18]);
@@ -1134,11 +1111,8 @@ __attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, stru
static void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struct Sprite *sprite)
{
- u16 unk_8401E5A[ARRAY_COUNT(gUnknown_08401E5A)];
- u8 v0;
-
- memcpy(unk_8401E5A, gUnknown_08401E5A, sizeof gUnknown_08401E5A);
- v0 = sub_8127F5C(sprite);
+ u16 unk_8401E5A[] = {3, 7};
+ u8 v0 = sub_8127F5C(sprite);
if (v0 != 0)
{
if (((u16)(++ sprite->data[4]) & unk_8401E5A[sprite->data[5]]) == 0)
diff --git a/src/field/field_fadetransition.c b/src/field/field_fadetransition.c
index 829ce2dfa..5014e97e3 100644
--- a/src/field/field_fadetransition.c
+++ b/src/field/field_fadetransition.c
@@ -327,7 +327,7 @@ void sub_8080DC4(u8 taskId)
}
}
-void atk17_seteffectuser(void)
+void atk17_seteffectsecondary(void)
{
pal_fill_black();
CreateStartMenuTask(sub_8080DC4);
diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c
index 81c0c5854..ba7c3d68e 100644
--- a/src/field/field_map_obj.c
+++ b/src/field/field_map_obj.c
@@ -2020,7 +2020,7 @@ u8 GetFieldObjectIdByLocalId(u8 localId)
#ifdef NONMATCHING
u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c)
{
- struct MapObject2 *mapObj; //TODO: resolve the mapobj_unk_19b weirdness
+ struct MapObject *mapObj; //TODO: resolve the mapobj_unk_19b weirdness
u8 var;
u16 r3;
u16 r2;
@@ -2029,8 +2029,8 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8
if (GetAvailableFieldObjectSlot(template->localId, b, c, &var) != 0)
return 16;
//_0805ACCE
- mapObj = (struct MapObject2 *)&gMapObjects[var];
- npc_clear_ids_and_state((struct MapObject *)mapObj);
+ mapObj = &gMapObjects[var];
+ npc_clear_ids_and_state(mapObj);
r3 = template->x + 7;
r2 = template->y + 7;
mapObj->active = TRUE;
@@ -2048,8 +2048,8 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8
mapObj->coords3.y = r2;
mapObj->mapobj_unk_0B_0 = template->elevation;
mapObj->elevation = template->elevation;
- mapObj->mapobj_unk_19 = template->unkA_0;
- mapObj->mapobj_unk_19b = template->unkA_4;
+ mapObj->range.as_nybbles.x = template->unkA_0;
+ mapObj->range.as_nybbles.y = template->unkA_4;
mapObj->trainerType = template->unkC;
mapObj->trainerRange_berryTreeId = template->unkE;
mapObj->mapobj_unk_20 = gUnknown_0836DC09[template->movementType];
@@ -2058,10 +2058,10 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8
//asm("":::"r5","r6");
if (gUnknown_0836DBBC[mapObj->animPattern] != 0)
{
- if (mapObj->mapobj_unk_19 == 0)
- mapObj->mapobj_unk_19++;
- if (mapObj->mapobj_unk_19b == 0)
- mapObj->mapobj_unk_19b++;
+ if (mapObj->range.as_nybbles.x == 0)
+ mapObj->range.as_nybbles.x++;
+ if (mapObj->range.as_nybbles.y == 0)
+ mapObj->range.as_nybbles.y++;
}
return var;
}
@@ -5464,7 +5464,7 @@ u8 sub_805FF20(struct MapObject *mapObject, u8 direction)
return npc_block_way(mapObject, x, y, direction);
}
-bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, s16 y);
+bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject *mapObject, s16 x, s16 y);
static bool8 DoesObjectCollideWithObjectAt(struct MapObject *mapObject, s16 x, s16 y);
bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction);
@@ -5472,7 +5472,7 @@ u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u32 dirn)
{
u8 direction;
direction = dirn;
- if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y))
+ if (IsCoordOutsideFieldObjectMovementRect(mapObject, x, y))
return 1;
else if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction))
return 2;
@@ -5489,7 +5489,7 @@ u8 sub_8060024(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
{
u8 flags = 0;
- if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y))
+ if (IsCoordOutsideFieldObjectMovementRect(mapObject, x, y))
flags |= 1;
if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction) || (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction)))
flags |= 2;
@@ -5500,22 +5500,22 @@ u8 sub_8060024(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
return flags;
}
-bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, s16 y)
+bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject *mapObject, s16 x, s16 y)
{
s16 minv;
s16 maxv;
- if (mapObject->mapobj_unk_19 != 0)
+ if (mapObject->range.as_nybbles.x != 0)
{
- minv = mapObject->coords1.x - (mapObject->mapobj_unk_19);
- maxv = mapObject->coords1.x + (mapObject->mapobj_unk_19);
+ minv = mapObject->coords1.x - (mapObject->range.as_nybbles.x);
+ maxv = mapObject->coords1.x + (mapObject->range.as_nybbles.x);
if (minv > x || maxv < x)
return TRUE;
}
- if (mapObject->mapobj_unk_19b != 0)
+ if (mapObject->range.as_nybbles.y != 0)
{
- minv = mapObject->coords1.y - (mapObject->mapobj_unk_19b);
- maxv = mapObject->coords1.y + (mapObject->mapobj_unk_19b);
+ minv = mapObject->coords1.y - (mapObject->range.as_nybbles.y);
+ maxv = mapObject->coords1.y + (mapObject->range.as_nybbles.y);
if (minv > y || maxv < y)
return TRUE;
}
diff --git a/src/field/field_map_obj_helpers.c b/src/field/field_map_obj_helpers.c
index f1a113d44..328b66ed2 100644
--- a/src/field/field_map_obj_helpers.c
+++ b/src/field/field_map_obj_helpers.c
@@ -7,13 +7,92 @@
typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 dir);
-extern s16 gUnknown_08376194[];
-extern SpriteStepFunc *gUnknown_08376180[];
-extern s8 *gUnknown_083761D0[];
-extern s16 gUnknown_083761DC[];
-extern u8 gUnknown_083761E2[];
-extern s16 gUnknown_083761E6[];
-extern u8 gUnknown_083761EC[];
+void Step1(struct Sprite *sprite, u8 dir);
+void Step2(struct Sprite *sprite, u8 dir);
+void Step3(struct Sprite *sprite, u8 dir);
+void Step4(struct Sprite *sprite, u8 dir);
+void Step8(struct Sprite *sprite, u8 dir);
+
+const SpriteStepFunc Unknown_83760F0[] = {
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1
+};
+
+const SpriteStepFunc Unknown_8376130[] = {
+ Step2,
+ Step2,
+ Step2,
+ Step2,
+ Step2,
+ Step2,
+ Step2,
+ Step2
+};
+
+const SpriteStepFunc Unknown_8376150[] = {
+ Step2,
+ Step3,
+ Step3,
+ Step2,
+ Step3,
+ Step3
+};
+
+const SpriteStepFunc Unknown_8376168[] = {
+ Step4,
+ Step4,
+ Step4,
+ Step4
+};
+
+const SpriteStepFunc Unknown_8376178[] = {
+ Step8,
+ Step8
+};
+
+const SpriteStepFunc *const gUnknown_08376180[] = {
+ Unknown_83760F0,
+ Unknown_8376130,
+ Unknown_8376150,
+ Unknown_8376168,
+ Unknown_8376178
+};
+
+const s16 gUnknown_08376194[] = {
+ 16, 8, 6, 4, 2
+};
+
+const s8 Unknown_837619E[] = {
+ -4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0
+};
+
+const s8 Unknown_83761AE[] = {
+ 0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0
+};
+
+const s8 Unknown_83761BE[] = {
+ -2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0
+};
+
+const s8 *const gUnknown_083761D0[] = {
+ Unknown_837619E,
+ Unknown_83761AE,
+ Unknown_83761BE
+};
bool8 FreezeMapObject(struct MapObject *mapObject)
{
@@ -156,14 +235,9 @@ void sub_80646E4(struct Sprite *sprite, u8 a2, u8 a3, u8 a4)
u8 sub_8064704(struct Sprite *sprite)
{
- u8 v2;
- s16 v5[3];
- u8 v6[3];
-
- memcpy(v5, gUnknown_083761DC, 6);
- memcpy(v6, gUnknown_083761E2, 3);
-
- v2 = 0;
+ s16 v5[3] = {0x10, 0x10, 0x20};
+ u8 v6[3] = {0, 0, 1};
+ u8 v2 = 0;
if (sprite->data[4])
Step1(sprite, sprite->data[3]);
@@ -186,14 +260,9 @@ u8 sub_8064704(struct Sprite *sprite)
u8 sub_806478C(struct Sprite *sprite)
{
- u8 v2;
- s16 v5[3];
- u8 v6[3];
-
- memcpy(v5, gUnknown_083761E6, 6);
- memcpy(v6, gUnknown_083761EC, 3);
-
- v2 = 0;
+ s16 v5[3] = {0x20, 0x20, 0x40};
+ u8 v6[3] = {1, 1, 2};
+ u8 v2 = 0;
if (sprite->data[4] && !(sprite->data[6] & 1))
Step1(sprite, sprite->data[3]);
diff --git a/src/field/field_special_scene.c b/src/field/field_special_scene.c
index 0b7fe336e..67b652a57 100644
--- a/src/field/field_special_scene.c
+++ b/src/field/field_special_scene.c
@@ -291,7 +291,7 @@ bool8 sub_80C7754(void)
void Task_HandlePorthole(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- u16 *var = GetVarPointer(VAR_PORTHOLE);
+ u16 *var = GetVarPointer(VAR_PORTHOLE_STATE);
struct WarpData *location = &gSaveBlock1.location;
switch (data[0])
@@ -337,8 +337,8 @@ void Task_HandlePorthole(u8 taskId)
}
break;
case EXIT_PORTHOLE: // exit porthole.
- FlagClear(0x4001);
- FlagClear(0x4000);
+ FlagClear(FLAG_SPECIAL_FLAG_1);
+ FlagClear(FLAG_SPECIAL_FLAG_0);
copy_saved_warp2_bank_and_enter_x_to_warp1(0);
sp13E_warp_to_last_warp();
DestroyTask(taskId);
@@ -352,7 +352,7 @@ void sub_80C78A0(void)
gSprites[spriteId].coordOffsetEnabled = FALSE;
- if (VarGet(0x40B4) == 2)
+ if (VarGet(VAR_PORTHOLE_STATE) == 2)
{
StartSpriteAnim(&gSprites[spriteId], FieldObjectDirectionToImageAnimId(4));
}
@@ -374,8 +374,8 @@ void sub_80C791C(void)
void sub_80C7958(void)
{
FlagSet(FLAG_SYS_CRUISE_MODE);
- FlagSet(0x4001);
- FlagSet(0x4000);
+ FlagSet(FLAG_SPECIAL_FLAG_1);
+ FlagSet(FLAG_SPECIAL_FLAG_0);
saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1);
sub_80C7754();
sub_8080F9C();
diff --git a/src/field/field_specials.c b/src/field/field_specials.c
index 87a9e2d5d..fc6f690a3 100644
--- a/src/field/field_specials.c
+++ b/src/field/field_specials.c
@@ -99,13 +99,13 @@ u16 GetPlayerAvatarBike(void)
return 0;
}
-static void DetermineCyclingRoadResults(u32 arg0, u8 arg1)
+static void DetermineCyclingRoadResults(u32 numFrames, u8 numBikeCollisions)
{
u8 result;
- if (arg1 <= 99)
+ if (numBikeCollisions <= 99)
{
- ConvertIntToDecimalStringN(gStringVar1, arg1, STR_CONV_MODE_LEFT_ALIGN, 2);
+ ConvertIntToDecimalStringN(gStringVar1, numBikeCollisions, STR_CONV_MODE_LEFT_ALIGN, 2);
StringAppend(gStringVar1, gOtherText_Times);
}
else
@@ -113,11 +113,11 @@ static void DetermineCyclingRoadResults(u32 arg0, u8 arg1)
StringCopy(gStringVar1, gOtherText_99Times);
}
- if (arg0 < 3600)
+ if (numFrames < 3600)
{
- ConvertIntToDecimalStringN(gStringVar2, arg0 / 60, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ ConvertIntToDecimalStringN(gStringVar2, numFrames / 60, STR_CONV_MODE_RIGHT_ALIGN, 2);
gStringVar2[2] = CHAR_DECIMAL_SEPARATOR;
- ConvertIntToDecimalStringN(&gStringVar2[3], ((arg0 % 60) * 100) / 60, STR_CONV_MODE_LEADING_ZEROS, 2);
+ ConvertIntToDecimalStringN(&gStringVar2[3], ((numFrames % 60) * 100) / 60, STR_CONV_MODE_LEADING_ZEROS, 2);
StringAppend(gStringVar2, gOtherText_Seconds);
}
else
@@ -126,44 +126,44 @@ static void DetermineCyclingRoadResults(u32 arg0, u8 arg1)
}
result = 0;
- if (arg1 == 0)
+ if (numBikeCollisions == 0)
{
result = 5;
}
- else if (arg1 < 4)
+ else if (numBikeCollisions < 4)
{
result = 4;
}
- else if (arg1 < 10)
+ else if (numBikeCollisions < 10)
{
result = 3;
}
- else if (arg1 < 20)
+ else if (numBikeCollisions < 20)
{
result = 2;
}
- else if (arg1 < 100)
+ else if (numBikeCollisions < 100)
{
result = 1;
}
- if (arg0 / 60 <= 10)
+ if (numFrames / 60 <= 10)
{
result += 5;
}
- else if (arg0 / 60 <= 15)
+ else if (numFrames / 60 <= 15)
{
result += 4;
}
- else if (arg0 / 60 <= 20)
+ else if (numFrames / 60 <= 20)
{
result += 3;
}
- else if (arg0 / 60 <= 40)
+ else if (numFrames / 60 <= 40)
{
result += 2;
}
- else if (arg0 / 60 < 60)
+ else if (numFrames / 60 < 60)
{
result += 1;
}
@@ -173,36 +173,36 @@ static void DetermineCyclingRoadResults(u32 arg0, u8 arg1)
}
void FinishCyclingRoadChallenge(void) {
- const u32 time = gMain.vblankCounter1 - gBikeCyclingTimer;
+ const u32 numFrames = gMain.vblankCounter1 - gBikeCyclingTimer;
- DetermineCyclingRoadResults(time, gBikeCollisions);
- RecordCyclingRoadResults(time, gBikeCollisions);
+ DetermineCyclingRoadResults(numFrames, gBikeCollisions);
+ RecordCyclingRoadResults(numFrames, gBikeCollisions);
}
-static void RecordCyclingRoadResults(u32 arg0, u8 arg1) {
- u16 high = VarGet(0x4028);
- u16 low = VarGet(0x4029);
- u32 record = high + (low << 16);
+static void RecordCyclingRoadResults(u32 numFrames, u8 numBikeCollisions) {
+ u16 low = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_L);
+ u16 high = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_H);
+ u32 framesRecord = low + (high << 16);
- if (record > arg0 || record == 0)
+ if (framesRecord > numFrames || framesRecord == 0)
{
- VarSet(0x4028, arg0);
- VarSet(0x4029, arg0 >> 16);
- VarSet(0x4027, arg1);
+ VarSet(VAR_CYCLING_ROAD_RECORD_TIME_L, numFrames);
+ VarSet(VAR_CYCLING_ROAD_RECORD_TIME_H, numFrames >> 16);
+ VarSet(VAR_CYCLING_ROAD_RECORD_COLLISIONS, numBikeCollisions);
}
}
u16 GetRecordedCyclingRoadResults(void) {
- u16 high = VarGet(0x4028);
- u16 low = VarGet(0x4029);
- u32 record = high + (low << 16);
+ u16 low = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_L);
+ u16 high = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_H);
+ u32 framesRecord = low + (high << 16);
- if (record == 0)
+ if (framesRecord == 0)
{
return FALSE;
}
- DetermineCyclingRoadResults(record, VarGet(0x4027));
+ DetermineCyclingRoadResults(framesRecord, VarGet(VAR_CYCLING_ROAD_RECORD_COLLISIONS));
return TRUE;
}
@@ -212,9 +212,9 @@ void UpdateCyclingRoadState(void) {
return;
}
- if (VarGet(0x40a9) == 2 || VarGet(0x40a9) == 3)
+ if (VarGet(VAR_CYCLING_CHALLENGE_STATE) == 2 || VarGet(VAR_CYCLING_CHALLENGE_STATE) == 3)
{
- VarSet(0x40a9, 0);
+ VarSet(VAR_CYCLING_CHALLENGE_STATE, 0);
Overworld_SetSavedMusic(SE_STOP);
}
}
@@ -242,7 +242,7 @@ bool32 CountSSTidalStep(u16 delta)
u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y)
{
u16 *varCruiseStepCount = GetVarPointer(VAR_CRUISE_STEP_COUNT);
- switch (*GetVarPointer(VAR_PORTHOLE))
+ switch (*GetVarPointer(VAR_PORTHOLE_STATE))
{
case 1:
case 8:
@@ -312,28 +312,23 @@ u8 GetLinkPartnerNames(void)
return nLinkPlayers;
}
-const u8 gUnknown_083F8358[4] = {7, 9, 8, 10};
-const s8 gUnknown_083F835C[4][2] = {
- { 0, 1},
- { 1, 0},
- { 0, -1},
- {-1, 0}
-};
-
void SpawnBerryBlenderLinkPlayerSprites(void)
{
- u8 unknown_083F8358[4];
- u8 unknown_083F835C[4][2];
+ u8 j = 0;
+ s16 x = 0;
+ s16 y = 0;
+ u8 unknown_083F8358[] = {7, 9, 8, 10};
+ s8 unknown_083F835C[][2] = {
+ { 0, 1},
+ { 1, 0},
+ { 0, -1},
+ {-1, 0}
+ };
u8 myLinkPlayerNumber;
u8 playerDirectionLowerNybble;
u8 rivalAvatarGraphicsId;
u8 i;
- u8 j = 0;
- s16 x = 0;
- s16 y = 0;
- memcpy(unknown_083F8358, gUnknown_083F8358, sizeof gUnknown_083F8358);
- memcpy(unknown_083F835C, gUnknown_083F835C, sizeof gUnknown_083F835C);
myLinkPlayerNumber = sub_8008218();
playerDirectionLowerNybble = player_get_direction_lower_nybble();
switch (playerDirectionLowerNybble)
@@ -362,7 +357,7 @@ void SpawnBerryBlenderLinkPlayerSprites(void)
if (myLinkPlayerNumber != i)
{
rivalAvatarGraphicsId = GetRivalAvatarGraphicsIdByStateIdAndGender(0, gLinkPlayers[i].gender);
- SpawnSpecialFieldObjectParametrized(rivalAvatarGraphicsId, unknown_083F8358[j], 0xf0 - i, (s8)unknown_083F835C[j][0] + x + 7, (s8)unknown_083F835C[j][1] + y + 7, 0);
+ SpawnSpecialFieldObjectParametrized(rivalAvatarGraphicsId, unknown_083F8358[j], 0xf0 - i, unknown_083F835C[j][0] + x + 7, unknown_083F835C[j][1] + y + 7, 0);
j++;
if (j == 4)
{
@@ -693,7 +688,7 @@ void GetRivalSonDaughterString(void)
}
}
-u8 sub_810E300(void)
+u8 GetBattleOutcome(void)
{
return gBattleOutcome;
}
@@ -963,11 +958,11 @@ void EndLotteryCornerComputerEffect(void)
}
static void sub_810E874(void);
-void sub_810E944(void);
+void DisplayCurrentElevatorFloor(void);
void sub_810E984(u8);
bool8 sub_810EAC8(u8, u8);
void sub_810EB90(u8, u8);
-void sub_810EBEC(void);
+void ShakeScreenInElevator(void);
void sub_810EC34(u8);
void sub_810EC9C(u8);
void sub_810ECB0(void);
@@ -1079,11 +1074,11 @@ static void sub_810E874(void)
{
MenuPrint(gUnknown_083F8380[gUnknown_03000760[i].var0], 1, 2 * i + 1);
}
- sub_810E944();
+ DisplayCurrentElevatorFloor();
CreateTask(sub_810E984, 8);
}
-void sub_810E944(void)
+void DisplayCurrentElevatorFloor(void)
{
MenuDrawTextWindow(20, 0, 29, 5);
sub_8072BD8(gOtherText_NowOn, 21, 1, 64);
@@ -1121,7 +1116,7 @@ void sub_810E984(u8 taskId)
{
gSpecialVar_Result = 1;
gSpecialVar_0x8005 = gUnknown_0203925B;
- sub_810EBEC();
+ ShakeScreenInElevator();
FieldObjectTurnByLocalIdAndMap(gSpecialVar_LastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, DIR_SOUTH);
sub_810EEDC();
MenuZeroFillScreen();
@@ -1305,7 +1300,7 @@ void sub_810EB90(u8 newPos, u8 maxItems)
}
}
-void sub_810EBEC(void)
+void ShakeScreenInElevator(void)
{
u8 taskId = CreateTask(sub_810EC34, 9);
gTasks[taskId].data[0] = 1;
@@ -1784,12 +1779,12 @@ void GetSecretBaseNearbyMapName(void)
GetMapSectionName(gStringVar1, VarGet(VAR_SECRET_BASE_MAP), 0);
}
-u16 sub_810F404(void)
+u16 GetBestBattleTowerStreak(void)
{
return GetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK);
}
-void sub_810F414(void)
+void BufferEReaderTrainerName(void)
{
SetEReaderTrainerName(gStringVar1);
}
@@ -1798,7 +1793,7 @@ const u8 gUnknown_083F83E0[] = {12, 2, 4, 5, 1, 8, 7, 11, 3, 10, 9, 6};
const u8 gUnknown_083F83EC[] = {0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5};
const u8 gUnknown_083F83F8[] = {3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5};
-u8 sub_810F424(void)
+u8 GetSlotMachineId(void)
{
u32 v0 = gSaveBlock1.easyChatPairs[0].unk0_0 + gSaveBlock1.easyChatPairs[0].unk2 + gUnknown_083F83E0[gSpecialVar_0x8004];
if (GetPriceReduction(2))
@@ -1808,10 +1803,10 @@ u8 sub_810F424(void)
return gUnknown_083F83EC[v0 % 12];
}
-bool8 sub_810F488(void)
+bool8 FoundAbandonedShipRoom1Key(void)
{
u16 *specVar = &gSpecialVar_0x8004;
- u16 flag = 0x277;
+ u16 flag = FLAG_HIDDEN_ITEM_1F;
*specVar = flag;
if (!FlagGet(flag))
{
@@ -1820,10 +1815,10 @@ bool8 sub_810F488(void)
return TRUE;
}
-bool8 sub_810F4B0(void)
+bool8 FoundAbandonedShipRoom2Key(void)
{
u16 *specVar = &gSpecialVar_0x8004;
- u16 flag = 0x278;
+ u16 flag = FLAG_HIDDEN_ITEM_20;
*specVar = flag;
if (!FlagGet(flag))
{
@@ -1832,10 +1827,10 @@ bool8 sub_810F4B0(void)
return TRUE;
}
-bool8 sub_810F4D4(void)
+bool8 FoundAbandonedShipRoom4Key(void)
{
u16 *specVar = &gSpecialVar_0x8004;
- u16 flag = 0x279;
+ u16 flag = FLAG_HIDDEN_ITEM_21;
*specVar = flag;
if (!FlagGet(flag))
{
@@ -1844,10 +1839,10 @@ bool8 sub_810F4D4(void)
return TRUE;
}
-bool8 sub_810F4FC(void)
+bool8 FoundAbandonedShipRoom6Key(void)
{
u16 *specVar = &gSpecialVar_0x8004;
- u16 flag = 0x27a;
+ u16 flag = FLAG_HIDDEN_ITEM_22;
*specVar = flag;
if (!FlagGet(flag))
{
@@ -1879,18 +1874,18 @@ bool8 ScrSpecial_AreLeadMonEVsMaxedOut(void)
return FALSE;
}
-u8 sub_810F5BC(void)
+u8 TryUpdateRusturfTunnelState(void)
{
if (!FlagGet(FLAG_RUSTURF_TUNNEL_OPENED) && gSaveBlock1.location.mapGroup == MAP_GROUP(RUSTURF_TUNNEL) && gSaveBlock1.location.mapNum == MAP_NUM(RUSTURF_TUNNEL))
{
if (FlagGet(FLAG_HIDE_RUSTURF_TUNNEL_ROCK_1))
{
- VarSet(VAR_0x409a, 4);
+ VarSet(VAR_RUSTURF_TUNNEL_STATE, 4);
return TRUE;
}
else if (FlagGet(FLAG_HIDE_RUSTURF_TUNNEL_ROCK_2))
{
- VarSet(VAR_0x409a, 5);
+ VarSet(VAR_RUSTURF_TUNNEL_STATE, 5);
return TRUE;
}
}
@@ -1919,7 +1914,7 @@ void PutZigzagoonInPlayerParty(void)
bool8 IsStarterInParty(void)
{
u8 i;
- u16 starter = GetStarterPokemon(VarGet(VAR_FIRST_POKE));
+ u16 starter = GetStarterPokemon(VarGet(VAR_STARTER_MON));
u8 partyCount = CalculatePlayerPartyCount();
for (i = 0; i < partyCount; i++)
{
@@ -2000,9 +1995,9 @@ static void sub_810F814(u8 taskId)
EnableBothScriptContexts();
}
-bool8 sub_810F828(void)
+bool8 FoundBlackGlasses(void)
{
- return FlagGet(FLAG_UNKNOWN_2B8);
+ return FlagGet(FLAG_HIDDEN_ITEM_BLACK_GLASSES);
}
void SetRoute119Weather(void)
@@ -2045,10 +2040,10 @@ void sub_810F8FC(void)
sub_805ADDC(6);
}
-u16 sub_810F908(void)
+u16 GetDaysUntilPacifidlogTMAvailable(void)
{
- u16 var40c2 = VarGet(VAR_0x40C2);
- if (gLocalTime.days - var40c2 >= 7)
+ u16 tmReceivedDay = VarGet(VAR_PACIFIDLOG_TM_RECEIVED_DAY);
+ if (gLocalTime.days - tmReceivedDay >= 7)
{
return 0;
}
@@ -2056,16 +2051,16 @@ u16 sub_810F908(void)
{
return 8;
}
- return 7 - (gLocalTime.days - var40c2);
+ return 7 - (gLocalTime.days - tmReceivedDay);
}
-u16 sub_810F950(void)
+u16 SetPacifidlogTMReceivedDay(void)
{
- VarSet(VAR_0x40C2, gLocalTime.days);
+ VarSet(VAR_PACIFIDLOG_TM_RECEIVED_DAY, gLocalTime.days);
return gLocalTime.days;
}
-bool8 sub_810F96C(void)
+bool8 MonOTNameMatchesPlayer(void)
{
GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_OT_NAME, gStringVar1);
if (!StringCompareWithoutExtCtrlCodes(gSaveBlock2.playerName, gStringVar1))
@@ -2075,7 +2070,7 @@ bool8 sub_810F96C(void)
return TRUE;
}
-void sub_810F9AC(void)
+void BufferLottoTicketNumber(void)
{
if (gSpecialVar_Result >= 10000)
{
@@ -2114,64 +2109,64 @@ const u8 gUnknown_083F8408[] = {8, 9, 10, 11, 12, 13, 14, 15};
const u8 gUnknown_083F8410[] = {8, 13, 14, 11, 10, 12, 15, 9};
bool8 sub_810FF30(void);
-void sub_810FCE8(void);
+void UpdateMovedLilycoveFanClubMembers(void);
void sub_810FF48(void);
void sub_810FD80(void);
-u16 sub_810FCB0(void);
+u16 GetNumMovedLilycoveFanClubMembers(void);
int sub_810FB9C(void);
void ResetFanClub(void)
{
- gSaveBlock1.vars[0x41] = 0;
- gSaveBlock1.vars[0x42] = 0;
+ gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] = 0;
+ gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_2 - VARS_START] = 0;
}
void sub_810FA74(void)
{
if (sub_810FF30())
{
- sub_810FCE8();
- gSaveBlock1.vars[0x42] = gSaveBlock2.playTimeHours;
+ UpdateMovedLilycoveFanClubMembers();
+ gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_2 - VARS_START] = gSaveBlock2.playTimeHours;
}
}
void sub_810FAA0(void)
{
- if (!((gSaveBlock1.vars[0x41] >> 7) & 1))
+ if (!((gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> 7) & 1))
{
sub_810FF48();
sub_810FD80();
- gSaveBlock1.vars[0x42] = gSaveBlock2.playTimeHours;
- FlagClear(0x315);
- FlagClear(0x316);
- FlagClear(0x317);
- FlagClear(0x318);
- VarSet(VAR_0x4095, 1);
+ gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_2 - VARS_START] = gSaveBlock2.playTimeHours;
+ FlagClear(FLAG_HIDE_FANCLUB_OLD_LADY);
+ FlagClear(FLAG_HIDE_FANCLUB_BOY);
+ FlagClear(FLAG_HIDE_FANCLUB_LITTLE_BOY);
+ FlagClear(FLAG_HIDE_FANCLUB_LADY);
+ VarSet(VAR_LILYCOVE_FAN_CLUB_STATE, 1);
}
}
u8 sub_810FB10(u8 a0)
{
- if (VarGet(VAR_0x4095) == 2)
+ if (VarGet(VAR_LILYCOVE_FAN_CLUB_STATE) == 2)
{
- if ((gSaveBlock1.vars[0x41] & 0x7f) + gUnknown_083F8404[a0] >= 20)
+ if ((gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] & 0x7f) + gUnknown_083F8404[a0] >= 20)
{
- if (sub_810FCB0() < 3)
+ if (GetNumMovedLilycoveFanClubMembers() < 3)
{
sub_810FB9C();
- gSaveBlock1.vars[0x41] &= 0xff80;
+ gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] &= 0xff80;
}
else
{
- gSaveBlock1.vars[0x41] = (gSaveBlock1.vars[0x41] & 0xff80) | 20;
+ gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] = (gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] & 0xff80) | 20;
}
}
else
{
- gSaveBlock1.vars[0x41] += gUnknown_083F8404[a0];
+ gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] += gUnknown_083F8404[a0];
}
}
- return gSaveBlock1.vars[0x41] & 0x7f;
+ return gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] & 0x7f;
}
int sub_810FB9C(void)
@@ -2180,17 +2175,17 @@ int sub_810FB9C(void)
int retval = 0;
for (i=0; i<8; i++)
{
- if (!((gSaveBlock1.vars[0x41] >> gUnknown_083F8408[i]) & 0x01))
+ if (!((gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> gUnknown_083F8408[i]) & 0x01))
{
retval = i;
if (Random() & 1)
{
- gSaveBlock1.vars[0x41] |= (1 << gUnknown_083F8408[i]);
+ gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] |= (1 << gUnknown_083F8408[i]);
return retval;
}
}
}
- gSaveBlock1.vars[0x41] |= (1 << gUnknown_083F8408[retval]);
+ gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] |= (1 << gUnknown_083F8408[retval]);
return retval;
}
@@ -2198,85 +2193,86 @@ int sub_810FC18(void)
{
u8 i;
int retval = 0;
- if (sub_810FCB0() == TRUE)
+ if (GetNumMovedLilycoveFanClubMembers() == 1)
{
return 0;
}
for (i=0; i<8; i++)
{
- if ((gSaveBlock1.vars[0x41] >> gUnknown_083F8410[i]) & 1)
+ if ((gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> gUnknown_083F8410[i]) & 1)
{
retval = i;
if (Random() & 1)
{
- gSaveBlock1.vars[0x41] ^= (1 << gUnknown_083F8410[i]);
+ gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] ^= (1 << gUnknown_083F8410[i]);
return retval;
}
}
}
- if ((gSaveBlock1.vars[0x41] >> gUnknown_083F8410[retval]) & 1)
+ if ((gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> gUnknown_083F8410[retval]) & 1)
{
- gSaveBlock1.vars[0x41] ^= (1 << gUnknown_083F8410[retval]);
+ gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] ^= (1 << gUnknown_083F8410[retval]);
}
return retval;
}
-u16 sub_810FCB0(void)
+u16 GetNumMovedLilycoveFanClubMembers(void)
{
u8 i;
u8 retval = 0;
- for (i=0; i<8; i++)
+ for (i = 0; i < 8; i++)
{
- if ((gSaveBlock1.vars[0x41] >> (i + 8)) & 1)
+ if ((gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> (i + 8)) & 1)
{
- retval ++;
+ retval++;
}
}
+
return retval;
}
-void sub_810FCE8(void)
+void UpdateMovedLilycoveFanClubMembers(void)
{
u8 i = 0;
if (gSaveBlock2.playTimeHours < 999)
{
while (1)
{
- if (sub_810FCB0() < 5)
+ if (GetNumMovedLilycoveFanClubMembers() < 5)
{
- gSaveBlock1.vars[0x42] = gSaveBlock2.playTimeHours;
+ gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_2 - VARS_START] = gSaveBlock2.playTimeHours;
break;
}
else if (i == 8)
{
break;
}
- else if (gSaveBlock2.playTimeHours - gSaveBlock1.vars[0x42] < 12)
+ else if (gSaveBlock2.playTimeHours - gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_2 - VARS_START] < 12)
{
return;
}
sub_810FC18();
- gSaveBlock1.vars[0x42] += 12;
+ gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_2 - VARS_START] += 12;
i++;
}
}
}
-bool8 sub_810FD60(void)
+bool8 ShouldMoveLilycoveFanClubMember(void)
{
- return (gSaveBlock1.vars[0x41] >> gSpecialVar_0x8004) & 0x01;
+ return (gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> gSpecialVar_0x8004) & 0x01;
}
void sub_810FD80(void)
{
- gSaveBlock1.vars[0x41] |= 0x2000;
- gSaveBlock1.vars[0x41] |= 0x100;
- gSaveBlock1.vars[0x41] |= 0x400;
+ gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] |= 0x2000;
+ gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] |= 0x100;
+ gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] |= 0x400;
}
void sub_810FE1C(void *, u8, u8);
-void sub_810FDAC(void)
+void BufferStreakTrainerText(void)
{
u8 a = 0;
u8 b = 0;
@@ -2355,7 +2351,7 @@ void sub_810FE1C(void *linkRecords, u8 a, u8 b)
void sub_810FEFC(void)
{
- if (VarGet(VAR_0x4095) == 2)
+ if (VarGet(VAR_LILYCOVE_FAN_CLUB_STATE) == 2)
{
sub_810FA74();
if (gBattleOutcome == 1)
@@ -2371,12 +2367,12 @@ void sub_810FEFC(void)
bool8 sub_810FF30(void)
{
- return (gSaveBlock1.vars[0x41] >> 7) & 0x01;
+ return (gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] >> 7) & 0x01;
}
void sub_810FF48(void)
{
- gSaveBlock1.vars[0x41] |= 0x80;
+ gSaveBlock1.vars[VAR_FANCLUB_UNKNOWN_1 - VARS_START] |= 0x80;
}
u8 sub_810FF60(void)
diff --git a/src/field/field_tasks.c b/src/field/field_tasks.c
index 108ba64ba..ce5fc6c0e 100644
--- a/src/field/field_tasks.c
+++ b/src/field/field_tasks.c
@@ -554,20 +554,20 @@ const u16 gUnknown_083763E4[] = {
0,
0,
0,
- VAR_0x4001,
- VAR_0x4002,
- VAR_0x4003,
- VAR_0x4004,
+ VAR_TEMP_1,
+ VAR_TEMP_2,
+ VAR_TEMP_3,
+ VAR_TEMP_4,
0,
0,
- VAR_0x4005,
- VAR_0x4006,
- VAR_0x4007,
+ VAR_TEMP_5,
+ VAR_TEMP_6,
+ VAR_TEMP_7,
0,
0,
- VAR_0x4008,
- VAR_0x4009,
- VAR_0x400A,
+ VAR_TEMP_8,
+ VAR_TEMP_9,
+ VAR_TEMP_A,
0,
0,
0,
@@ -608,14 +608,14 @@ bool32 sub_8069D34(s16 x, s16 y)
return FALSE;
}
-void sub_8069D78(void)
+void SetSootopolisGymCrackedIceMetatiles(void)
{
s32 x, y;
s32 width = gMapHeader.mapData->width;
s32 height = gMapHeader.mapData->height;
- for (x=0; x<width; x++)
+ for (x = 0; x < width; x++)
{
- for (y=0; y<height; y++)
+ for (y = 0; y < height; y++)
{
if (sub_8069D34(x, y) == TRUE)
{
diff --git a/src/field/field_weather.c b/src/field/field_weather.c
index ff26b45bf..c954242a1 100644
--- a/src/field/field_weather.c
+++ b/src/field/field_weather.c
@@ -5,6 +5,7 @@
#include "palette.h"
#include "random.h"
#include "script.h"
+#include "constants/weather.h"
#include "constants/songs.h"
#include "sound.h"
#include "sprite.h"
@@ -398,31 +399,31 @@ void sub_807CCAC(void)
case WEATHER_RAIN_MED:
case WEATHER_RAIN_HEAVY:
case WEATHER_SNOW:
- case 11:
+ case WEATHER_DARK:
if (sub_807CDC4() == 0)
{
gWeatherPtr->unknown_6C0 = 3;
gWeatherPtr->unknown_6C6 = 3;
}
break;
- case 12:
+ case WEATHER_DROUGHT:
if (sub_807CE24() == 0)
{
gWeatherPtr->unknown_6C0 = -6;
gWeatherPtr->unknown_6C6 = 3;
}
break;
- case 6:
+ case WEATHER_FOG_1:
if (sub_807CE7C() == 0)
{
gWeatherPtr->unknown_6C0 = 0;
gWeatherPtr->unknown_6C6 = 3;
}
break;
- case 7:
- case 8:
- case 9:
- case 10:
+ case WEATHER_ASH:
+ case WEATHER_SANDSTORM:
+ case WEATHER_FOG_2:
+ case WEATHER_FOG_3:
default:
if (!gPaletteFade.active)
{
@@ -808,9 +809,9 @@ void fade_screen(u8 a, u8 delay)
case WEATHER_RAIN_MED:
case WEATHER_RAIN_HEAVY:
case WEATHER_SNOW:
- case 6:
- case 11:
- case 12:
+ case WEATHER_FOG_1:
+ case WEATHER_DARK:
+ case WEATHER_DROUGHT:
r2 = 1;
break;
default:
@@ -855,7 +856,7 @@ void sub_807D78C(u8 a)
case 1:
if (gWeatherPtr->unknown_6CA != 0)
{
- if (gWeatherPtr->currWeather == 6)
+ if (gWeatherPtr->currWeather == WEATHER_FOG_1)
sub_807D540(r4);
r4 *= 16;
for (i = 0; i < 16; i++)
@@ -868,7 +869,7 @@ void sub_807D78C(u8 a)
BlendPalette(r4, 16, gPaletteFade.y, gPaletteFade.blendColor);
break;
default:
- if (gWeatherPtr->currWeather != 6)
+ if (gWeatherPtr->currWeather != WEATHER_FOG_1)
{
sub_807CEBC(r4, 1, gWeatherPtr->unknown_6C0);
}
diff --git a/src/field/field_weather_effects.c b/src/field/field_weather_effects.c
index 31eda4393..5a59d6c2a 100644
--- a/src/field/field_weather_effects.c
+++ b/src/field/field_weather_effects.c
@@ -4,6 +4,7 @@
#include "overworld.h"
#include "random.h"
#include "script.h"
+#include "constants/weather.h"
#include "constants/songs.h"
#include "sound.h"
#include "sprite.h"
diff --git a/src/field/fldeff_secret_base_pc.c b/src/field/fldeff_secret_base_pc.c
index 8d71a4fb9..394c4bc56 100644
--- a/src/field/fldeff_secret_base_pc.c
+++ b/src/field/fldeff_secret_base_pc.c
@@ -60,7 +60,7 @@ void DoSecretBasePCTurnOffEffect(void)
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
PlaySE(SE_PC_OFF);
- if (!VarGet(VAR_0x4054))
+ if (!VarGet(VAR_CURRENT_SECRET_BASE))
MapGridSetMetatileIdAt(x, y, 3616);
else
MapGridSetMetatileIdAt(x, y, 3617);
diff --git a/src/field/item_menu.c b/src/field/item_menu.c
index 4e283ffe9..e9b8b24d3 100644
--- a/src/field/item_menu.c
+++ b/src/field/item_menu.c
@@ -153,7 +153,7 @@ static const u8 *sPopupMenuActionList;
// common
void (*gFieldItemUseCallback)(u8) = NULL;
-extern u16 gUnknown_030041B4;
+extern u16 gBattle_BG1_Y;
extern struct PocketScrollState gBagPocketScrollStates[];
extern struct ItemSlot *gCurrentBagPocketItemSlots; // selected pocket item slots
extern const u8 Event_NoRegisteredItem[];
@@ -4499,7 +4499,7 @@ u8 CreateBerrySprite(u8 berryId, s16 x, s16 y)
static void SpriteCB_BerrySprite(struct Sprite *sprite)
{
- sprite->pos2.y = -gUnknown_030041B4;
+ sprite->pos2.y = -gBattle_BG1_Y;
}
void sub_80A7DD4(void)
diff --git a/src/field/item_use.c b/src/field/item_use.c
index 37cd8ba78..e1fdddce0 100644
--- a/src/field/item_use.c
+++ b/src/field/item_use.c
@@ -14,6 +14,7 @@
#include "fieldmap.h"
#include "item.h"
#include "item_menu.h"
+#include "constants/flags.h"
#include "constants/items.h"
#include "mail.h"
#include "main.h"
@@ -328,7 +329,7 @@ bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId)
for (i = 0; i < events->bgEventCount; i++)
{
- if ((events -> bgEvents[i].kind == 7) && !FlagGet(events -> bgEvents[i].bgUnion.hiddenItem.hiddenItemId + 600))
+ if ((events -> bgEvents[i].kind == 7) && !FlagGet(events -> bgEvents[i].bgUnion.hiddenItem.hiddenItemId + FLAG_HIDDEN_ITEMS_START))
{
// do a distance lookup of each item so long as the index remains less than the objects on the current map.
distanceX = (u16)events -> bgEvents[i].x + 7;
@@ -360,7 +361,7 @@ bool8 HiddenItemAtPos(struct MapEvents *events, s16 x, s16 y)
{
if (bgEvent[i].kind == 7 && x == (u16)bgEvent[i].x && y == (u16)bgEvent[i].y) // hidden item and coordinates matches x and y passed?
{
- if (!FlagGet(bgEvent[i].bgUnion.hiddenItem.hiddenItemId + 600))
+ if (!FlagGet(bgEvent[i].bgUnion.hiddenItem.hiddenItemId + FLAG_HIDDEN_ITEMS_START))
return TRUE;
else
return FALSE;
@@ -921,7 +922,7 @@ static void PrepareItemUseMessage(void)
void ItemUseOutOfBattle_Repel(u8 var)
{
- if (VarGet(VAR_REPEL_STEP_COUNT) == FALSE)
+ if (VarGet(VAR_REPEL_STEP_COUNT) == 0)
{
VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId));
PrepareItemUseMessage();
diff --git a/src/field/lottery_corner.c b/src/field/lottery_corner.c
index 83febc56e..03de26054 100644
--- a/src/field/lottery_corner.c
+++ b/src/field/lottery_corner.c
@@ -30,7 +30,7 @@ void ResetLotteryCorner(void)
u16 rand = Random();
SetLotteryNumber((Random() << 16) | rand);
- VarSet(VAR_POKELOT_PRIZE, 0);
+ VarSet(VAR_LOTTERY_PRIZE, 0);
}
void SetRandomLotteryNumber(u16 i)
@@ -152,19 +152,19 @@ static u8 GetMatchingDigits(u16 winNumber, u16 otId)
// lottery numbers go from 0 to 99999, not 65535 (0xFFFF). interestingly enough, the function that calls GetLotteryNumber shifts to u16, so it cant be anything above 65535 anyway.
void SetLotteryNumber(u32 lotteryNum)
{
- u16 lowNum = lotteryNum >> 16;
- u16 highNum = lotteryNum;
+ u16 high = lotteryNum >> 16;
+ u16 low = lotteryNum;
- VarSet(VAR_POKELOT_RND1, highNum);
- VarSet(VAR_POKELOT_RND2, lowNum);
+ VarSet(VAR_LOTTERY_RND_L, low);
+ VarSet(VAR_LOTTERY_RND_H, high);
}
u32 GetLotteryNumber(void)
{
- u16 highNum = VarGet(VAR_POKELOT_RND1);
- u16 lowNum = VarGet(VAR_POKELOT_RND2);
+ u16 low = VarGet(VAR_LOTTERY_RND_L);
+ u16 high = VarGet(VAR_LOTTERY_RND_H);
- return (lowNum << 16) | highNum;
+ return (high << 16) | low;
}
// interestingly, this may have been the original lottery number set function, but GF tried to change it to 32-bit later but didnt finish changing all calls as one GetLotteryNumber still shifts to u16.
diff --git a/src/field/map_name_popup.c b/src/field/map_name_popup.c
index 01105d0db..2e2dfc72e 100644
--- a/src/field/map_name_popup.c
+++ b/src/field/map_name_popup.c
@@ -19,7 +19,7 @@ bool8 unref_sub_80A2F44(void)
void ShowMapNamePopup(void)
{
- if (FlagGet(0x4000) != TRUE)
+ if (FlagGet(FLAG_SPECIAL_FLAG_0) != TRUE)
{
if (!FuncIsActiveTask(Task_MapNamePopup))
{
diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c
index 30f6f5233..4db513f65 100644
--- a/src/field/mauville_man.c
+++ b/src/field/mauville_man.c
@@ -10,6 +10,7 @@
#include "overworld.h"
#include "random.h"
#include "script.h"
+#include "constants/map_objects.h"
#include "constants/songs.h"
#include "sound.h"
#include "string_util.h"
@@ -974,7 +975,7 @@ static void Task_BardSong(u8 taskId)
void sub_80F83D0(void)
{
- VarSet(0x4010, 0x45 + GetCurrentMauvilleOldMan());
+ VarSet(VAR_OBJ_GFX_ID_0, MAP_OBJ_GFX_BARD + GetCurrentMauvilleOldMan());
}
struct Story
diff --git a/src/field/money.c b/src/field/money.c
index f277ac905..d0f0ab1f6 100644
--- a/src/field/money.c
+++ b/src/field/money.c
@@ -291,12 +291,12 @@ void CloseMoneyWindow(u8 x, u8 y)
MenuZeroFillWindowRect(x, y, x + 13, y + 3);
}
-bool8 sub_80B7CE8(void)
+bool8 HasEnoughMoneyFor(void)
{
return IsEnoughMoney(gSaveBlock1.money, gSpecialVar_0x8005);
}
-void sub_80B7D0C(void)
+void PayMoneyFor(void)
{
RemoveMoney(&gSaveBlock1.money, gSpecialVar_0x8005);
}
diff --git a/src/field/overworld.c b/src/field/overworld.c
index 834a2afa4..e239daec7 100644
--- a/src/field/overworld.c
+++ b/src/field/overworld.c
@@ -287,7 +287,7 @@ void LoadMapObjTemplatesFromHeader(void)
{
// Clear map object templates
CpuFill32(0, gSaveBlock1.mapObjectTemplates, sizeof(gSaveBlock1.mapObjectTemplates));
-
+
// Copy map header events to save block
CpuCopy32(gMapHeader.events->mapObjects,
gSaveBlock1.mapObjectTemplates,
@@ -600,7 +600,7 @@ void sub_80538F0(u8 mapGroup, u8 mapNum)
ClearTempFieldEventData();
ResetCyclingRoadChallengeData();
prev_quest_postbuffer_cursor_backup_reset();
- sub_8082BD0(mapGroup, mapNum);
+ TryUpdateRandomTrainerRematches(mapGroup, mapNum);
DoTimeBasedEvents();
SetSav1WeatherFromCurrMapHeader();
ChooseAmbientCrySpecies();
@@ -635,7 +635,7 @@ void sub_8053994(u32 a1)
ClearTempFieldEventData();
ResetCyclingRoadChallengeData();
prev_quest_postbuffer_cursor_backup_reset();
- sub_8082BD0(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum);
+ TryUpdateRandomTrainerRematches(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum);
if (a1 != 1)
DoTimeBasedEvents();
SetSav1WeatherFromCurrMapHeader();
@@ -816,7 +816,7 @@ static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp)
static bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp)
{
- if (VarGet(VAR_WEATHER_INSTITUTE_CLEARED))
+ if (VarGet(VAR_WEATHER_INSTITUTE_STATE))
return FALSE;
if (warp->mapGroup != MAP_GROUP(ROUTE119_WEATHER_INSTITUTE_1F))
return FALSE;
@@ -981,7 +981,7 @@ static void PlayAmbientCry(void)
s16 x, y;
s8 pan;
s8 volume;
-
+
PlayerGetDestCoords(&x, &y);
if (sIsAmbientCryWaterMon == TRUE
&& !MetatileBehavior_IsSurfableWaterOrUnderwater(MapGridGetMetatileBehaviorAt(x, y)))
@@ -1158,7 +1158,7 @@ void OverworldBasic(void)
sub_8072EDC();
}
-// This CB2 is used when starting
+// This CB2 is used when starting
void CB2_OverworldBasic(void)
{
OverworldBasic();
@@ -1329,7 +1329,7 @@ void sub_805465C(void)
void sub_805469C(void)
{
FieldClearVBlankHBlankCallbacks();
- gFieldCallback = atk17_seteffectuser;
+ gFieldCallback = atk17_seteffectsecondary;
c2_exit_to_overworld_2_switch();
}
@@ -2430,7 +2430,7 @@ void SpawnLinkPlayerMapObject(u8 linkPlayerId, s16 x, s16 y, u8 a4)
mapObj->active = 1;
mapObj->mapobj_bit_1 = a4;
- mapObj->mapobj_unk_19 = 2;
+ mapObj->range.as_byte = 2;
mapObj->spriteId = 64;
InitLinkPlayerMapObjectPos(mapObj, x, y);
@@ -2453,7 +2453,7 @@ void unref_sub_8055A6C(u8 linkPlayerId, u8 a2)
{
u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
struct MapObject *mapObj = &gMapObjects[mapObjId];
- mapObj->mapobj_unk_19 = a2;
+ mapObj->range.as_byte = a2;
}
}
@@ -2487,7 +2487,7 @@ u8 sub_8055B30(u8 linkPlayerId)
{
u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
struct MapObject *mapObj = &gMapObjects[mapObjId];
- return mapObj->mapobj_unk_19;
+ return mapObj->range.as_byte;
}
u8 sub_8055B50(u8 linkPlayerId)
@@ -2559,10 +2559,10 @@ static u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapOb
{
s16 x, y;
- mapObj->mapobj_unk_19 = npc_something3(a3, mapObj->mapobj_unk_19);
- FieldObjectMoveDestCoords(mapObj, mapObj->mapobj_unk_19, &x, &y);
+ mapObj->range.as_byte = npc_something3(a3, mapObj->range.as_byte);
+ FieldObjectMoveDestCoords(mapObj, mapObj->range.as_byte, &x, &y);
- if (LinkPlayerDetectCollision(linkPlayerMapObj->mapObjId, mapObj->mapobj_unk_19, x, y))
+ if (LinkPlayerDetectCollision(linkPlayerMapObj->mapObjId, mapObj->range.as_byte, x, y))
{
return 0;
}
@@ -2577,7 +2577,7 @@ static u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapOb
static u8 sub_8055D18(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
{
- mapObj->mapobj_unk_19 = npc_something3(a3, mapObj->mapobj_unk_19);
+ mapObj->range.as_byte = npc_something3(a3, mapObj->range.as_byte);
return 0;
}
@@ -2590,7 +2590,7 @@ static void sub_8055D38(struct LinkPlayerMapObject *linkPlayerMapObj, struct Map
{
mapObj->mapobj_unk_21--;
linkPlayerMapObj->mode = 1;
- MoveCoords(mapObj->mapobj_unk_19, &mapObj->coords1.x, &mapObj->coords1.y);
+ MoveCoords(mapObj->range.as_byte, &mapObj->coords1.x, &mapObj->coords1.y);
if (!mapObj->mapobj_unk_21)
{
npc_coords_shift_still(mapObj);
@@ -2662,9 +2662,9 @@ void SpriteCB_LinkPlayer(struct Sprite *sprite)
SetObjectSubpriorityByZCoord(mapObj->elevation, sprite, 1);
sprite->oam.priority = ZCoordToPriority(mapObj->elevation);
if (!linkPlayerMapObj->mode)
- StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(mapObj->mapobj_unk_19));
+ StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(mapObj->range.as_byte));
else
- StartSpriteAnimIfDifferent(sprite, get_go_image_anim_num(mapObj->mapobj_unk_19));
+ StartSpriteAnimIfDifferent(sprite, get_go_image_anim_num(mapObj->range.as_byte));
sub_806487C(sprite, 0);
if (mapObj->mapobj_bit_2)
{
diff --git a/src/field/party_menu.c b/src/field/party_menu.c
index 089f93f9e..9c1150515 100644
--- a/src/field/party_menu.c
+++ b/src/field/party_menu.c
@@ -436,34 +436,6 @@ static const struct PartyMenuHandlersStruct PartyMenuHandlers[] = {
{HandleMoveTutorPartyMenu, SetupMoveTutorPartyMenu, 0}, // PARTY_MENU_TYPE_MOVE_TUTOR
};
-static const u16 gUnknown_08376CD4[] = {
- 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
- 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
-};
-
-static const u16 gUnknown_08376CEC[] = {
- 0x2A, 0x0B, 0x0C, 0x0D, 0x0E, 0x2F,
- 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
-};
-
-static const u8 *const StatNames[] = {
- gOtherText_HP,
- gOtherText_Attack,
- gOtherText_Defense,
- gOtherText_SpAtk,
- gOtherText_SpDef,
- gOtherText_Speed,
-};
-
-static const u8 StatDataTypes[] = {
- MON_DATA_MAX_HP,
- MON_DATA_ATK,
- MON_DATA_DEF,
- MON_DATA_SPATK,
- MON_DATA_SPDEF,
- MON_DATA_SPEED,
-};
-
struct Unk201C000
{
/*0x00*/ struct Pokemon *pokemon;
@@ -1227,12 +1199,11 @@ void sub_806BB3C(s16 a, u16 b)
void sub_806BB9C(u8 a)
{
u8 i;
- u16 *vramPtr;
- const u16 arr[12];
-
- memcpy(&arr, gUnknown_08376CD4, sizeof gUnknown_08376CD4);
-
- vramPtr = (u16 *)(BG_VRAM + 0x3C30);
+ u16 arr[12] = {
+ 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
+ 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
+ };
+ u16 *vramPtr = (u16 *)(BG_VRAM + 0x3C30);
for (i = 0; i < PARTY_SIZE; i++)
{
vramPtr[i] = arr[i] + (a << 12);
@@ -1243,12 +1214,11 @@ void sub_806BB9C(u8 a)
void sub_806BBEC(u8 a)
{
u8 i;
- u16 *vramPtr;
- const u16 arr[12];
-
- memcpy(&arr, gUnknown_08376CEC, sizeof gUnknown_08376CEC);
-
- vramPtr = (u16 *)(BG_VRAM + 0x3CB0);
+ u16 arr[12] = {
+ 0x2A, 0x0B, 0x0C, 0x0D, 0x0E, 0x2F,
+ 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
+ };
+ u16 *vramPtr = (u16 *)(BG_VRAM + 0x3CB0);
for (i = 0; i < PARTY_SIZE; i++)
{
vramPtr[i] = arr[i] + (a << 12);
@@ -4910,6 +4880,23 @@ void DoPPUpItemEffect(u8 taskId, u16 b, TaskFunc c)
gMain.newKeys = 0;
}
+static const u8 *const StatNames[] = {
+ gOtherText_HP,
+ gOtherText_Attack,
+ gOtherText_Defense,
+ gOtherText_SpAtk,
+ gOtherText_SpDef,
+ gOtherText_Speed,
+};
+
+static const u8 StatDataTypes[] = {
+ MON_DATA_MAX_HP,
+ MON_DATA_ATK,
+ MON_DATA_DEF,
+ MON_DATA_SPATK,
+ MON_DATA_SPDEF,
+ MON_DATA_SPEED,
+};
void DoRareCandyItemEffect(u8 taskId, u16 b, TaskFunc c)
{
u8 i;
diff --git a/src/field/player_pc.c b/src/field/player_pc.c
index d92d13ce4..4fef09386 100644
--- a/src/field/player_pc.c
+++ b/src/field/player_pc.c
@@ -171,15 +171,6 @@ static const u8 gNonSelectedItemQuantityFormatText[] = _("{STR_VAR_1}");
static const u8 gSelectedItemQuantityFormatText[] = _("{COLOR RED}{STR_VAR_1}");
static const u8 gUnknown_08406330[] = _("{CLEAR_TO 32}");
-static const u16 gUnknown_08406334[3] =
-{
- 0x5294,
- 0x6B5A,
- 0x7FFF
-};
-
-static const u8 gHighlightedMoveToBagFormatText[] = _("{COLOR RED}{STR_VAR_1}");
-
extern u8 *gUnknown_02039314;
extern struct MenuAction gUnknown_08406298[];
@@ -205,8 +196,8 @@ void NewGameInitPCItems(void)
u8 i;
// because Game Freak don't know how to use a struct or a 2d array
- for(i = 0, ClearItemSlots(gSaveBlock1.pcItems, ARRAY_COUNT(gSaveBlock1.pcItems)); NEW_GAME_PC_ITEMS(i, ITEM_ID) && NEW_GAME_PC_ITEMS(i, QUANTITY) &&
- AddPCItem(NEW_GAME_PC_ITEMS(i, ITEM_ID), NEW_GAME_PC_ITEMS(i, QUANTITY)) == TRUE; i++)
+ for(i = 0, ClearItemSlots(gSaveBlock1.pcItems, ARRAY_COUNT(gSaveBlock1.pcItems)); NEW_GAME_PC_ITEMS(i, PC_ITEM_ID) && NEW_GAME_PC_ITEMS(i, PC_QUANTITY) &&
+ AddPCItem(NEW_GAME_PC_ITEMS(i, PC_ITEM_ID), NEW_GAME_PC_ITEMS(i, PC_QUANTITY)) == TRUE; i++)
;
}
@@ -1007,9 +998,12 @@ static void ItemStorage_GoBackToItemPCMenu(u8 taskId, u8 var)
static void ItemStorage_LoadPalette(void)
{
- u16 arr[3];
+ u16 arr[] = {
+ 0x5294,
+ 0x6B5A,
+ 0x7FFF
+ };
- memcpy(arr, gUnknown_08406334, sizeof(arr));
LoadPalette(&arr[2], 0xDF, 2);
LoadPalette(&arr[1], 0xD1, 2);
LoadPalette(&arr[0], 0xD8, 2);
@@ -1261,6 +1255,8 @@ static void Mailbox_ReturnToFieldFromReadMail(void)
SetMainCallback2(c2_exit_to_overworld_2_switch);
}
+static const u8 gHighlightedMoveToBagFormatText[] = _("{COLOR RED}{STR_VAR_1}");
+
static void Mailbox_MoveToBag(u8 taskId)
{
HandleDestroyMenuCursors();
diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c
index 4a904fbb1..640d4731f 100644
--- a/src/field/pokeblock.c
+++ b/src/field/pokeblock.c
@@ -426,7 +426,7 @@ void sub_810BADC(void)
SetMainCallback2(sub_810B96C);
}
-void sub_810BAF4(void)
+void OpenPokeblockCaseOnFeeder(void)
{
sub_810BA7C(3);
SetMainCallback2(sub_810B96C);
@@ -1041,7 +1041,7 @@ u8 sub_810C9E8(struct Pokeblock *pokeblock)
return feel;
}
-s8 sub_810CA00(void)
+s8 GetFirstFreePokeblockSlot(void)
{
u8 i;
for (i=0; i<ARRAY_COUNT(gSaveBlock1.pokeblocks); i++)
@@ -1056,7 +1056,7 @@ s8 sub_810CA00(void)
bool8 sub_810CA34(struct Pokeblock *pokeblock)
{
- s8 idx = sub_810CA00();
+ s8 idx = GetFirstFreePokeblockSlot();
if (idx == -1)
{
return FALSE;
diff --git a/src/field/scrcmd.c b/src/field/scrcmd.c
index d5fc56e8d..05a909e81 100644
--- a/src/field/scrcmd.c
+++ b/src/field/scrcmd.c
@@ -1722,7 +1722,7 @@ bool8 ScrCmd_settrainerflag(struct ScriptContext *ctx)
{
u16 index = VarGet(ScriptReadHalfword(ctx));
- trainer_flag_set(index);
+ SetTrainerFlag(index);
return FALSE;
}
@@ -1730,7 +1730,7 @@ bool8 ScrCmd_cleartrainerflag(struct ScriptContext *ctx)
{
u16 index = VarGet(ScriptReadHalfword(ctx));
- trainer_flag_clear(index);
+ ClearTrainerFlag(index);
return FALSE;
}
diff --git a/src/field/secret_base.c b/src/field/secret_base.c
index 7589ab1e3..2e4138a3b 100644
--- a/src/field/secret_base.c
+++ b/src/field/secret_base.c
@@ -180,7 +180,7 @@ void sub_80BB5E4(void)
if (gUnknown_020387DC != gSaveBlock1.secretBases[i].secretBaseId)
continue;
gSpecialVar_Result = 1;
- VarSet(VAR_0x4054, i);
+ VarSet(VAR_CURRENT_SECRET_BASE, i);
break;
}
}
@@ -284,7 +284,7 @@ void sub_80BB8CC(void)
for (idx=0; idx<4; idx++) {
gSaveBlock1.secretBases[0].trainerId[idx] = gSaveBlock2.playerTrainerId[idx];
}
- VarSet(VAR_0x4054, 0);
+ VarSet(VAR_CURRENT_SECRET_BASE, 0);
nameLength = sub_80BB8A8(gSaveBlock2.playerName);
memset(gSaveBlock1.secretBases[0].playerName, 0xFF, OT_NAME_LENGTH);
StringCopyN(gSaveBlock1.secretBases[0].playerName, gSaveBlock2.playerName, nameLength);
@@ -333,7 +333,7 @@ void sub_80BBA48(u8 taskid)
}
break;
case 2:
- curbaseid = VarGet(VAR_0x4054);
+ curbaseid = VarGet(VAR_CURRENT_SECRET_BASE);
if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff)
gSaveBlock1.secretBases[curbaseid].sbr_field_10++;
sub_80BBA14();
@@ -412,7 +412,7 @@ void sub_80BBCCC(u8 flagIn)
u16 curBaseId;
u16 x, y;
if (CurrentMapIsSecretBase()) {
- curBaseId = VarGet(VAR_0x4054);
+ curBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
for (x=0; x<16; x++) {
if (gSaveBlock1.secretBases[curBaseId].decorations[x] > 0 && gSaveBlock1.secretBases[curBaseId].decorations[x] <= 0x78 && gDecorations[gSaveBlock1.secretBases[curBaseId].decorations[x]].permission != DECORPERM_SOLID_MAT) {
sub_80FF394((gSaveBlock1.secretBases[curBaseId].decorationPos[x] >> 4) + 7, (gSaveBlock1.secretBases[curBaseId].decorationPos[x] & 0xF) + 7, gSaveBlock1.secretBases[curBaseId].decorations[x]);
@@ -437,7 +437,7 @@ void sub_80BBDD0(void)
u8 metatile;
u8 permission;
u8 ndecor;
- u16 curBase = VarGet(VAR_0x4054);
+ u16 curBase = VarGet(VAR_CURRENT_SECRET_BASE);
if (!CurrentMapIsSecretBase()) {
roomdecor = gSaveBlock1.playerRoomDecor;
roomdecorpos = gSaveBlock1.playerRoomDecorPos;
@@ -478,8 +478,8 @@ void sub_80BBDD0(void)
void sub_80BBFA4(void)
{
- int curBase = VarGet(VAR_0x4054);
- VarSet(VAR_0x401F, gUnknown_083D13EC[sub_80BCCA4(curBase)]);
+ int curBase = VarGet(VAR_CURRENT_SECRET_BASE);
+ VarSet(VAR_OBJ_GFX_ID_F, gUnknown_083D13EC[sub_80BCCA4(curBase)]);
}
void sub_80BBFD8(struct MapPosition *position, struct MapEvents *events)
@@ -571,12 +571,12 @@ u8 *sub_80BC190(u8 *dest, u8 arg1) { // 80bc190
}
u8 *GetSecretBaseMapName(u8 *dest) {
- gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(VAR_0x4054)].secretBaseId;
- return sub_80BC190(dest, VarGet(VAR_0x4054));
+ gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].secretBaseId;
+ return sub_80BC190(dest, VarGet(VAR_CURRENT_SECRET_BASE));
}
-void sub_80BC224(void) {
- u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(VAR_0x4054)].playerName;
+void BufferSecretBaseOwnerName(void) {
+ u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(VAR_CURRENT_SECRET_BASE)].playerName;
u8 *var1 = gStringVar1;
u8 var2 = sub_80BB8A8(var0);
u8 *var3 = StringCopyN(var1, var0, var2);
@@ -830,7 +830,7 @@ void sub_80BC474(void)
}
}
-void sub_80BC50C(void)
+void MoveSecretBase(void)
{
u16 backupValue;
sub_80BC474();
@@ -1173,7 +1173,7 @@ void sub_80BCBF8(u8 taskId)
void sub_80BCC54(u8 taskId)
{
- u16 curBaseIndex = VarGet(VAR_0x4054);
+ u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE);
BuyMenuFreeMemory();
DestroyVerticalScrollIndicator(0);
@@ -1197,9 +1197,9 @@ u8 sub_80BCCA4(u8 secretBaseIndex)
+ gSaveBlock1.secretBases[secretBaseIndex].gender * 5;
}
-const u8 *sub_80BCCE8(void)
+const u8 *GetSecretBaseTrainerLoseText(void)
{
- u8 param = sub_80BCCA4(VarGet(VAR_0x4054));
+ u8 param = sub_80BCCA4(VarGet(VAR_CURRENT_SECRET_BASE));
if (param == 0) return UnknownString_81A1BB2;
if (param == 1) return UnknownString_81A1F67;
if (param == 2) return UnknownString_81A2254;
@@ -1229,7 +1229,7 @@ void unref_sub_80BCD7C(u8 secretBaseIndex)
void sub_80BCE1C(void)
{
- u16 curBaseIndex = VarGet(VAR_0x4054);
+ u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE);
sub_810FB10(1);
CreateSecretBaseEnemyParty(&gSaveBlock1.secretBases[curBaseIndex]);
@@ -1237,12 +1237,12 @@ void sub_80BCE1C(void)
void sub_80BCE4C()
{
- gSaveBlock1.secretBases[VarGet(VAR_0x4054)].sbr_field_1_5 = gSpecialVar_Result;
+ gSaveBlock1.secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].sbr_field_1_5 = gSpecialVar_Result;
}
void sub_80BCE90()
{
- u16 curBaseIndex = VarGet(VAR_0x4054);
+ u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE);
if (!FlagGet(FLAG_DAILY_UNKNOWN_8C2))
{
diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c
index 89ec68b0a..a524790b4 100644
--- a/src/field/slot_machine.c
+++ b/src/field/slot_machine.c
@@ -1,49 +1,2869 @@
#include "global.h"
+#include "constants/songs.h"
+#include "strings2.h"
+#include "overworld.h"
+#include "menu_cursor.h"
+#include "field_effect.h"
+#include "random.h"
+#include "sound.h"
+#include "main.h"
#include "slot_machine.h"
#include "decompress.h"
+#include "trig.h"
+#include "graphics.h"
#include "palette.h"
-#include "task.h"
+#include "util.h"
+#include "text.h"
+#include "menu.h"
#include "ewram.h"
-struct UnkStruct2000000 {
- /*0x00*/ u8 filler00[61];
- /*0x3D*/ u8 unk3D;
-};
-
struct UnkStruct1 {
/*0x00*/ u8 unk00;
/*0x01*/ u8 unk01;
/*0x02*/ s16 unk02;
};
-extern struct UnkStruct1 *gUnknown_083ED048[];
-extern const u16 gPalette_83EDE24[];
-
-extern const u8 gSlotMachine_Gfx[];
#if ENGLISH
#define SLOTMACHINE_GFX_TILES 233
#elif GERMAN
#define SLOTMACHINE_GFX_TILES 236
#endif
-extern const u16 gUnknown_08E95A18[];
-extern u16 gUnknown_08E95AB8[];
-extern u16 gUnknown_08E95FB8[];
+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 sub_8101D04(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_810421C(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_8104BFC(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, SpriteCallback callback, 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 const struct UnkStruct1 *const gUnknown_083ED048[];
+static const u16 gPalette_83EDE24[];
+static const u8 gUnknown_083ECD04[][3];
+static const u8 gUnknown_083ECE3A[];
+static const u16 gUnknown_083ECE42[];
+static const u16 gUnknown_083ECE48[];
+
+void PlaySlotMachine(u8 arg0, MainCallback cb)
+{
+ PlaySlotMachine_Internal(arg0, cb);
+ SetMainCallback2(CB2_SlotMachineSetup);
+}
+
+static void CB2_SlotMachineSetup(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SlotMachineSetup_0_0();
+ SlotMachineSetup_0_1();
+ gMain.state++;
+ break;
+ case 1:
+ SlotMachineSetup_1_0();
+ gMain.state++;
+ break;
+ case 2:
+ SlotMachineSetup_2_0();
+ SlotMachineSetup_2_1();
+ gMain.state++;
+ break;
+ case 3:
+ SlotMachineSetup_3_0();
+ gMain.state++;
+ break;
+ case 4:
+ SlotMachineSetup_4_0();
+ gMain.state++;
+ break;
+ case 5:
+ SlotMachineSetup_5_0();
+ gMain.state++;
+ break;
+ case 6:
+ SlotMachineSetup_6_0();
+ SlotMachineSetup_6_1();
+ SlotMachineSetup_6_2();
+ SetMainCallback2(CB2_SlotMachineLoop);
+ break;
+ }
+}
+
+static void CB2_SlotMachineLoop(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void SlotMachine_VBlankCallback(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ REG_WIN0H = eSlotMachine->win0h;
+ REG_WIN0V = eSlotMachine->win0v;
+ REG_WININ = eSlotMachine->winIn;
+ REG_WINOUT = eSlotMachine->winOut;
+}
+
+static void PlaySlotMachine_Internal(u8 arg0, MainCallback cb)
+{
+ struct Task *task = gTasks + CreateTask(SlotMachineDummyTask, 0xFF);
+ task->data[0] = arg0;
+ StoreWordInTwoHalfwords(task->data + 1, (intptr_t)cb);
+}
+
+static void sub_81019EC(void)
+{
+ struct Task *task = gTasks + FindTaskIdByFunc(SlotMachineDummyTask);
+ eSlotMachine->unk01 = task->data[0];
+ LoadWordFromTwoHalfwords((u16 *)(task->data + 1), (u32 *)&eSlotMachine->prevMainCb);
+}
+
+static void SlotMachineDummyTask(u8 taskId)
+{
+}
+
+static void SlotMachineSetup_0_0(void)
+{
+ SetVBlankCallback(NULL);
+ SetHBlankCallback(NULL);
+ REG_DISPCNT = 0;
+}
+
+static void SlotMachineSetup_6_2(void)
+{
+ u16 imeBak;
+ SetVBlankCallback(SlotMachine_VBlankCallback);
+ imeBak = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = imeBak;
+ REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
+ REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON;
+}
+
+static void SlotMachineSetup_1_0(void)
+{
+ DmaClearLarge16(3, (u16 *)(BG_VRAM), BG_VRAM_SIZE, 0x1000);
+}
+
+static void SlotMachineSetup_2_0(void)
+{
+ DmaClear16(3, (u16 *)OAM, OAM_SIZE);
+}
+
+static void SlotMachineSetup_2_1(void)
+{
+ REG_BG0CNT = 0;
+ REG_BG1CNT = 0;
+ REG_BG2CNT = 0;
+ REG_BG3CNT = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_SCREENBASE(31) | BGCNT_CHARBASE(2);
+ REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(28);
+ REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(29);
+ REG_BG3CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(30);
+ REG_WININ = 0x3f;
+ REG_WINOUT = 0x3f;
+ REG_BLDCNT = BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_OBJ;
+ REG_BLDALPHA = 0x809;
+}
+
+static const s16 gUnknown_083ECCF8[][2];
+
+static void SlotMachineSetup_0_1(void)
+{
+ u8 i;
+
+ sub_81019EC();
+ eSlotMachine->state = 0;
+ eSlotMachine->pikaPower = 0;
+ eSlotMachine->unk03 = Random() & 1;
+ eSlotMachine->unk04 = 0;
+ eSlotMachine->matchedSymbols = 0;
+ eSlotMachine->unk0A = 0;
+ eSlotMachine->unk0B = 0;
+ eSlotMachine->coins = gSaveBlock1.coins;
+ eSlotMachine->payout = 0;
+ eSlotMachine->unk10 = 0;
+ eSlotMachine->bet = 0;
+ eSlotMachine->unk18 = 0;
+ eSlotMachine->unk1A = 8;
+ eSlotMachine->win0h = 0xf0;
+ eSlotMachine->win0v = 0xa0;
+ eSlotMachine->winIn = 0x3f;
+ eSlotMachine->winOut = 0x3f;
+ eSlotMachine->backupMapMusic = GetCurrentMapMusic();
+ for (i = 0; i < 3; i++)
+ {
+ eSlotMachine->unk22[i] = 0;
+ eSlotMachine->reelPositions[i] = gUnknown_083ECCF8[i][eSlotMachine->unk03] % 21;
+ eSlotMachine->unk1C[i] = 0x1f8 - eSlotMachine->reelPositions[i] * 24;
+ eSlotMachine->unk1C[i] %= 0x1f8;
+ }
+}
+
+static void SlotMachineSetup_3_0(void)
+{
+ SetUpWindowConfig(&gWindowConfig_81E7128);
+ InitMenuWindow(&gWindowConfig_81E7128);
+}
+
+static void SlotMachineSetup_4_0(void)
+{
+ ResetPaletteFade();
+ ResetSpriteData();
+ gOamLimit = 128;
+ FreeAllSpritePalettes();
+ ResetTasks();
+}
+
+static void SlotMachineSetup_5_0(void)
+{
+ sub_8106448();
+ sub_81064B8();
+ sub_81063C0();
+}
+
+static void SlotMachineSetup_6_0(void)
+{
+ sub_8104EA8();
+ sub_8104F8C();
+ sub_8103DC8();
+ sub_81050C4();
+}
+
+static void SlotMachineSetup_6_1(void)
+{
+ sub_8104048();
+ sub_8102DA8();
+ sub_8104C5C();
+ sub_8101D04();
+}
+
+static void sub_8101D04(void)
+{
+ sub_8101D24(CreateTask(sub_8101D24, 0));
+}
+
+static 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
+};
+
+static void sub_8101D24(u8 taskId)
+{
+ while (gUnknown_083ECAAC[eSlotMachine->state](gTasks + taskId));
+}
+
+static bool8 sub_8101D5C(struct Task *task)
+{
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ sub_810423C(eSlotMachine->pikaPower);
+ eSlotMachine->state++;
+ return FALSE;
+}
+
+static bool8 sub_8101D8C(struct Task *task)
+{
+ if (!gPaletteFade.active)
+ {
+ eSlotMachine->state++;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8101DB0(struct Task *task)
+{
+ eSlotMachine->payout = 0;
+ eSlotMachine->bet = 0;
+ eSlotMachine->unk18 = 0;
+ eSlotMachine->unk04 &= 0xc0;
+ eSlotMachine->state = 4;
+ if (eSlotMachine->coins <= 0)
+ {
+ eSlotMachine->state = 25;
+ }
+ else if (eSlotMachine->unk0A)
+ {
+ eSlotMachine->state = 3;
+ sub_8104CAC(4);
+ }
+ return TRUE;
+}
+
+static bool8 sub_8101DF4(struct Task *task)
+{
+ if (sub_8104E18())
+ {
+ eSlotMachine->state = 4;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8101E10(struct Task *task)
+{
+ sub_8104CAC(0);
+ eSlotMachine->state = 5;
+ if (eSlotMachine->coins >= 9999)
+ {
+ eSlotMachine->state = 23;
+ }
+ return TRUE;
+}
+
+static bool8 sub_8101E3C(struct Task *task)
+{
+ s16 i;
+
+ if (gMain.newKeys & SELECT_BUTTON)
+ {
+ sub_8104AB8(0);
+ eSlotMachine->state = 8;
+ }
+ else if (gMain.newKeys & R_BUTTON)
+ {
+ if (eSlotMachine->coins - (3 - eSlotMachine->bet) >= 0)
+ {
+ for (i = eSlotMachine->bet; i < 3; i++)
+ {
+ sub_8103D50(i);
+ }
+ eSlotMachine->coins -= (3 - eSlotMachine->bet);
+ eSlotMachine->bet = 3;
+ eSlotMachine->state = 9;
+ PlaySE(SE_REGI);
+ }
+ else
+ {
+ eSlotMachine->state = 6;
+ }
+ }
+ else
+ {
+ if (gMain.newKeys & DPAD_DOWN && eSlotMachine->coins != 0)
+ {
+ PlaySE(SE_REGI);
+ sub_8103D50(eSlotMachine->bet);
+ eSlotMachine->coins--;
+ eSlotMachine->bet++;
+ }
+ if (eSlotMachine->bet >= 3 || (eSlotMachine->bet != 0 && gMain.newKeys & A_BUTTON))
+ {
+ eSlotMachine->state = 9;
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ eSlotMachine->state = 21;
+ }
+ }
+ return FALSE;
+}
+
+static void sub_8101F2C(const u8 *str)
+{
+ MenuDisplayMessageBox();
+ MenuPrint(str, 2, 15);
+}
+
+static bool8 sub_8101F44(struct Task *task)
+{
+ sub_8101F2C(gOtherText_DontHaveThreeCoins);
+ eSlotMachine->state = 7;
+ return FALSE;
+}
+
+static bool8 sub_8101F60(struct Task *task)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ MenuZeroFillScreen();
+ eSlotMachine->state = 5;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8101F88(struct Task *task)
+{
+ if (sub_8104AEC())
+ {
+ eSlotMachine->state = 5;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8101FA4(struct Task *task)
+{
+ sub_8102484();
+ sub_8104DA4();
+ sub_8102DEC(0);
+ sub_8102DEC(1);
+ sub_8102DEC(2);
+ task->data[0] = 0;
+ if (eSlotMachine->unk04 & 0x20)
+ {
+ sub_810430C();
+ eSlotMachine->state = 10;
+ }
+ else
+ {
+ sub_8104CAC(1);
+ eSlotMachine->state = 11;
+ }
+ eSlotMachine->unk1A = 8;
+ if (eSlotMachine->unk0A)
+ {
+ eSlotMachine->unk1A = dp15_jump_random_unknown();
+ }
+ return FALSE;
+}
+
+static bool8 sub_8102008(struct Task *task)
+{
+ if (sub_810432C())
+ {
+ sub_8104CAC(1);
+ eSlotMachine->unk04 &= 0xDF;
+ eSlotMachine->state = 11;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8102034(struct Task *task)
+{
+ if (++task->data[0] >= 30)
+ {
+ sub_81024F0();
+ eSlotMachine->state = 12;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8102058(struct Task *task)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_JYUNI);
+ sub_8102E1C(eSlotMachine->unk18);
+ sub_8103C14(eSlotMachine->unk18);
+ eSlotMachine->state = 13;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8102090(struct Task *task)
+{
+ if (!sub_8102E40(eSlotMachine->unk18))
+ {
+ eSlotMachine->unk18++;
+ eSlotMachine->state = 12;
+ if (eSlotMachine->unk18 > 2)
+ {
+ eSlotMachine->state = 14;
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 sub_81020C8(struct Task *task)
+{
+ eSlotMachine->unk04 &= 0xc0;
+ CheckMatch();
+ if (eSlotMachine->unk0A)
+ {
+ eSlotMachine->unk0A--;
+ eSlotMachine->unk0B++;
+ }
+ if (eSlotMachine->matchedSymbols)
+ {
+ eSlotMachine->state = 15;
+ sub_8102A24();
+ sub_8103F70();
+ if ((eSlotMachine->unk10 -= eSlotMachine->payout) < 0)
+ {
+ eSlotMachine->unk10 = 0;
+ }
+ if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
+ {
+ PlayFanfare(BGM_ME_B_BIG);
+ sub_8104CAC(6);
+ }
+ else if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_MIXED))
+ {
+ PlayFanfare(BGM_ME_B_BIG);
+ sub_8104CAC(5);
+ }
+ else
+ {
+ PlayFanfare(BGM_ME_B_SMALL);
+ sub_8104CAC(2);
+ }
+ if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_MIXED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
+ {
+ eSlotMachine->unk04 &= 0x3f;
+ if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
+ {
+ eSlotMachine->unk0A = 0;
+ eSlotMachine->unk0B = 0;
+ eSlotMachine->unk03 = 0;
+ if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_BLUE))
+ {
+ eSlotMachine->unk03 = 1;
+ }
+ }
+ }
+ if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER) && eSlotMachine->pikaPower < 16)
+ {
+ eSlotMachine->pikaPower++;
+ sub_8104064(eSlotMachine->pikaPower);
+ }
+ }
+ else
+ {
+ sub_8104CAC(3);
+ eSlotMachine->state = 20;
+ if ((eSlotMachine->unk10 += eSlotMachine->bet) > 9999)
+ {
+ eSlotMachine->unk10 = 9999;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 sub_81021E0(struct Task *task)
+{
+ if (sub_8102A44())
+ {
+ eSlotMachine->state = 16;
+ }
+ return FALSE;
+}
+
+static bool8 sub_81021FC(struct Task *task)
+{
+ if (sub_8103FA0())
+ {
+ eSlotMachine->state = 19;
+ if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_RED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE)))
+ {
+ IncrementGameStat(GAME_STAT_SLOT_JACKPOTS);
+ }
+ if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ {
+ eSlotMachine->unk18 = 0;
+ eSlotMachine->state = 9;
+ }
+ if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER))
+ {
+ eSlotMachine->state = 17;
+ }
+ if (eSlotMachine->unk0A && eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ {
+ sub_8104CAC(4);
+ eSlotMachine->state = 18;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 sub_8102264(struct Task *task)
+{
+ if (!sub_81040C8())
+ {
+ eSlotMachine->state = 19;
+ if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ {
+ eSlotMachine->state = 9;
+ if (eSlotMachine->unk0A)
+ {
+ sub_8104CAC(4);
+ eSlotMachine->state = 18;
+ }
+ }
+ }
+ return FALSE;
+}
+
+static bool8 sub_81022A0(struct Task *task)
+{
+ if (sub_8104E18())
+ {
+ eSlotMachine->state = 19;
+ if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ {
+ eSlotMachine->state = 9;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 sub_81022CC(struct Task *task)
+{
+ sub_8103D8C(0);
+ sub_8103D8C(1);
+ sub_8103D8C(2);
+ eSlotMachine->state = 2;
+ return FALSE;
+}
+
+static bool8 sub_81022F0(struct Task *task)
+{
+ if (++task->data[1] > 64)
+ {
+ task->data[1] = 0;
+ eSlotMachine->state = 19;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8102318(struct Task *task)
+{
+ sub_8101F2C(gOtherText_QuitGamePrompt);
+ DisplayYesNoMenu(21, 7, 1);
+ sub_814AB84();
+ eSlotMachine->state = 22;
+ return FALSE;
+}
+
+static bool8 sub_8102344(struct Task *task)
+{
+ s8 input = ProcessMenuInputNoWrap_();
+ if (input == 0)
+ {
+ MenuZeroFillScreen();
+ sub_8103D8C(0);
+ sub_8103D8C(1);
+ sub_8103D8C(2);
+ eSlotMachine->coins += eSlotMachine->bet;
+ eSlotMachine->state = 27;
+ }
+ else if (input == 1 || input == -1)
+ {
+ MenuZeroFillScreen();
+ eSlotMachine->state = 5;
+ }
+ return FALSE;
+}
+
+static bool8 sub_810239C(struct Task *task)
+{
+ sub_8101F2C(gOtherText_MaxCoins);
+ eSlotMachine->state = 24;
+ return FALSE;
+}
+
+static bool8 sub_81023B8(struct Task *task)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ MenuZeroFillScreen();
+ eSlotMachine->state = 5;
+ }
+ return FALSE;
+}
+
+static bool8 sub_81023E0(struct Task *task)
+{
+ sub_8101F2C(gOtherText_OutOfCoins);
+ eSlotMachine->state = 26;
+ return FALSE;
+}
+
+static bool8 sub_81023FC(struct Task *task)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ MenuZeroFillScreen();
+ eSlotMachine->state = 27;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8102424(struct Task *task)
+{
+ gSaveBlock1.coins = eSlotMachine->coins;
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ eSlotMachine->state++;
+ return FALSE;
+}
+
+static bool8 sub_8102460(struct Task *task)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(eSlotMachine->prevMainCb);
+ }
+ return FALSE;
+}
+
+static void sub_8102484(void)
+{
+ u8 r3;
+
+ if (eSlotMachine->unk0A == 0 && !(eSlotMachine->unk04 & 0xc0))
+ {
+ if (sub_8102540())
+ {
+ r3 = sub_8102578();
+ if (r3 != 3)
+ {
+ eSlotMachine->unk04 |= gUnknown_083ECE42[r3];
+ if (r3 != 1)
+ {
+ return;
+ }
+ }
+ }
+ r3 = sub_81025BC();
+ if (r3 != 5)
+ {
+ eSlotMachine->unk04 |= gUnknown_083ECE48[r3];
+ }
+ }
+}
+
+static void sub_81024F0(void)
+{
+ eSlotMachine->unk06 = 0;
+ if (eSlotMachine->unk04)
+ {
+ eSlotMachine->unk06 = 1;
+ }
+}
+
+static u8 sub_810250C(u8 a0)
+{
+ u8 i;
+
+ for (i = 0; i < 8; i++)
+ {
+ if (a0 & 1)
+ {
+ return gUnknown_083ECE3A[i];
+ }
+ a0 >>= 1;
+ }
+ return 0;
+}
+
+static bool8 sub_8102540(void)
+{
+ u8 rval = Random();
+ if (gUnknown_083ECD04[eSlotMachine->unk01][eSlotMachine->bet - 1] > rval)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static const u8 gUnknown_083ECD16[][6];
+
+static u8 sub_8102578(void)
+{
+ s16 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ s16 rval = Random() & 0xff;
+ s16 value = gUnknown_083ECD16[i][eSlotMachine->unk01];
+ if (value > rval)
+ {
+ break;
+ }
+ }
+ return i;
+}
+
+static const u8 gUnknown_083ECD28[][6];
+
+static u8 sub_81025BC(void)
+{
+ s16 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ s16 rval = Random() & 0xff;
+ s16 r3 = gUnknown_083ECD28[i][eSlotMachine->unk01];
+ if (i == 0 && eSlotMachine->unk03 == 1)
+ {
+ r3 += 10;
+ if (r3 > 0x100)
+ {
+ r3 = 0x100;
+ }
+ }
+ else if (i == 4 && eSlotMachine->unk03 == 1)
+ {
+ r3 -= 10;
+ if (r3 < 0)
+ {
+ r3 = 0;
+ }
+ }
+ if (r3 > rval)
+ {
+ break;
+ }
+ }
+ return i;
+}
+
+static const u8 gUnknown_083ECD46[][17];
+static const u8 gUnknown_083ECDAC[][17];
+
+static u8 sub_810264C(u8 a0)
+{
+ if (eSlotMachine->unk03 == 0)
+ {
+ return gUnknown_083ECD46[a0][eSlotMachine->pikaPower];
+ }
+ return gUnknown_083ECDAC[a0][eSlotMachine->pikaPower];
+}
+
+static void sub_8102680(void)
+{
+ u8 rval;
+ s16 i;
+
+ eSlotMachine->unk05 = 0;
+ rval = Random();
+ if (rval < sub_810264C(0))
+ {
+ return;
+ }
+ for (i = 5; i > 0; i--)
+ {
+ rval = Random();
+ if (rval < sub_810264C(i))
+ {
+ break;
+ }
+ }
+ eSlotMachine->unk05 = i;
+}
+
+static const u16 gUnknown_083ECE12[];
+
+static bool8 sub_81026DC(u16 a0)
+{
+ u16 rval = Random() & 0xff;
+ if (rval < gUnknown_083ECE12[a0])
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static const u16 gUnknown_083ECE1C[][2];
+static const u16 gUnknown_083ECE30[];
+
+static u16 dp15_jump_random_unknown(void)
+{
+ u8 r4 = 0;
+ u8 rval;
+ u8 value;
+ if (eSlotMachine->unk10 >= 300)
+ {
+ r4 = 4;
+ }
+ else if (eSlotMachine->unk10 >= 250)
+ {
+ r4 = 3;
+ }
+ else if (eSlotMachine->unk10 >= 200)
+ {
+ r4 = 2;
+ }
+ else if (eSlotMachine->unk10 >= 150)
+ {
+ r4 = 1;
+ }
+ rval = Random() % 100;
+ value = gUnknown_083ECE1C[r4][0];
+ if (rval < value)
+ {
+ return 4;
+ }
+ rval = Random() % 100;
+ value = gUnknown_083ECE1C[r4][1] + gUnknown_083ECE30[eSlotMachine->unk0B];
+ if (rval < value)
+ {
+ return 2;
+ }
+ return 8;
+}
+
+static void CheckMatch(void)
+{
+ eSlotMachine->matchedSymbols = 0;
+ CheckMatch_CenterRow();
+ if (eSlotMachine->bet > 1)
+ {
+ CheckMatch_TopAndBottom();
+ }
+ if (eSlotMachine->bet > 2)
+ {
+ CheckMatch_Diagonals();
+ }
+}
+
+static const u16 sSlotMatchFlags[];
+static const u16 sSlotPayouts[];
+
+static void CheckMatch_CenterRow(void)
+{
+ u8 c1, c2, c3, match;
+
+ c1 = GetTagOfReelSymbolOnScreenAtPos(0, 2);
+ c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
+ c3 = GetTagOfReelSymbolOnScreenAtPos(2, 2);
+ match = GetMatchFromSymbolsInRow(c1, c2, c3);
+ if (match != SLOT_MACHINE_MATCHED_NONE)
+ {
+ eSlotMachine->payout += sSlotPayouts[match];
+ eSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sub_8103E04(0);
+ }
+}
+
+static void CheckMatch_TopAndBottom(void)
+{
+ u8 c1, c2, c3, match;
+
+ c1 = GetTagOfReelSymbolOnScreenAtPos(0, 1);
+ c2 = GetTagOfReelSymbolOnScreenAtPos(1, 1);
+ c3 = GetTagOfReelSymbolOnScreenAtPos(2, 1);
+ match = GetMatchFromSymbolsInRow(c1, c2, c3);
+ if (match != SLOT_MACHINE_MATCHED_NONE)
+ {
+ if (match == SLOT_MACHINE_MATCHED_1CHERRY)
+ {
+ match = SLOT_MACHINE_MATCHED_2CHERRY;
+ }
+ eSlotMachine->payout += sSlotPayouts[match];
+ eSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sub_8103E04(1);
+ }
+ c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3);
+ c2 = GetTagOfReelSymbolOnScreenAtPos(1, 3);
+ c3 = GetTagOfReelSymbolOnScreenAtPos(2, 3);
+ match = GetMatchFromSymbolsInRow(c1, c2, c3);
+ if (match != SLOT_MACHINE_MATCHED_NONE)
+ {
+ if (match == SLOT_MACHINE_MATCHED_1CHERRY)
+ {
+ match = SLOT_MACHINE_MATCHED_2CHERRY;
+ }
+ eSlotMachine->payout += sSlotPayouts[match];
+ eSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sub_8103E04(2);
+ }
+}
+
+static void CheckMatch_Diagonals(void)
+{
+ u8 c1, c2, c3, match;
+
+ c1 = GetTagOfReelSymbolOnScreenAtPos(0, 1);
+ c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
+ c3 = GetTagOfReelSymbolOnScreenAtPos(2, 3);
+ match = GetMatchFromSymbolsInRow(c1, c2, c3);
+ if (match != SLOT_MACHINE_MATCHED_NONE)
+ {
+ if (match != SLOT_MACHINE_MATCHED_1CHERRY)
+ {
+ eSlotMachine->payout += sSlotPayouts[match];
+ eSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ }
+ sub_8103E04(3);
+ }
+ c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3);
+ c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
+ c3 = GetTagOfReelSymbolOnScreenAtPos(2, 1);
+ match = GetMatchFromSymbolsInRow(c1, c2, c3);
+ if (match != SLOT_MACHINE_MATCHED_NONE)
+ {
+ if (match != SLOT_MACHINE_MATCHED_1CHERRY)
+ {
+ eSlotMachine->payout += sSlotPayouts[match];
+ eSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ }
+ sub_8103E04(4);
+ }
+}
+
+static const u8 sSym2Match[];
+
+static u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3)
+{
+ if (c1 == c2 && c1 == c3)
+ {
+ return sSym2Match[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)
+ {
+ return SLOT_MACHINE_MATCHED_777_MIXED;
+ }
+ if (c1 == SLOT_MACHINE_TAG_CHERRY)
+ {
+ return SLOT_MACHINE_MATCHED_1CHERRY;
+ }
+ return SLOT_MACHINE_MATCHED_NONE;
+}
+
+static void sub_8102A24(void)
+{
+ sub_8102A64(CreateTask(sub_8102A64, 4));
+}
+
+static bool8 sub_8102A44(void)
+{
+ if (FindTaskIdByFunc(sub_8102A64) == 0xff)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 (*const gUnknown_083ECB20[])(struct Task *task) = {
+ sub_8102A9C,
+ sub_8102AD0,
+ sub_8102B80
+};
+
+static void sub_8102A64(u8 taskId)
+{
+ while (gUnknown_083ECB20[gTasks[taskId].data[0]](gTasks + taskId));
+}
+
+static bool8 sub_8102A9C(struct Task *task)
+{
+ if (sub_8103E38())
+ {
+ task->data[0]++;
+ if (eSlotMachine->payout == 0)
+ {
+ task->data[0] = 2;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 sub_8102AD0(struct Task *task)
+{
+ if (!task->data[1]--)
+ {
+ if (IsFanfareTaskInactive())
+ {
+ PlaySE(SE_PIN);
+ }
+ eSlotMachine->payout--;
+ if (eSlotMachine->coins < 9999)
+ {
+ eSlotMachine->coins++;
+ }
+ task->data[1] = 8;
+ if (gMain.heldKeys & A_BUTTON)
+ {
+ task->data[1] = 4;
+ }
+ }
+ if (IsFanfareTaskInactive() && gMain.newKeys & START_BUTTON)
+ {
+ PlaySE(SE_PIN);
+ eSlotMachine->coins += eSlotMachine->payout;
+ if (eSlotMachine->coins > 9999)
+ {
+ eSlotMachine->coins = 9999;
+ }
+ eSlotMachine->payout = 0;
+ }
+ if (eSlotMachine->payout == 0)
+ {
+ task->data[0]++;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8102B80(struct Task *task)
+{
+ if (sub_8103E7C())
+ {
+ DestroyTask(FindTaskIdByFunc(sub_8102A64));
+ }
+ return FALSE;
+}
+
+static const u8 sReelSymbols[][21];
+
+static u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y)
+{
+ s16 offset = (eSlotMachine->reelPositions[x] + y) % 21;
+ if (offset < 0)
+ {
+ offset += 21;
+ }
+ return sReelSymbols[x][offset];
+}
+
+static u8 GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(u8 x, s16 y)
+{
+ s16 r6 = 0;
+ if ((eSlotMachine->unk1C[x]) % 24)
+ r6 = -1;
+ return GetTagOfReelSymbolOnScreenAtPos(x, y + r6);
+}
+
+static const u8 gUnknown_083ECCF1[];
+
+static u8 sub_8102C48(s16 a0)
+{
+ s16 r1 = (eSlotMachine->unk16 + a0) % 6;
+ if (r1 < 0)
+ r1 += 6;
+ return gUnknown_083ECCF1[r1];
+}
+
+static void sub_8102C84(u8 a0, s16 a1)
+{
+ eSlotMachine->unk1C[a0] += a1;
+ eSlotMachine->unk1C[a0] %= 504;
+ eSlotMachine->reelPositions[a0] = 21 - eSlotMachine->unk1C[a0] / 24;
+}
+
+static s16 sub_8102CCC(u8 a0, s16 a1)
+{
+ s16 r1 = eSlotMachine->unk1C[a0] % 24;
+ if (r1 != 0)
+ {
+ if (r1 < a1)
+ a1 = r1;
+ sub_8102C84(a0, a1);
+ r1 = eSlotMachine->unk1C[a0] % 24;
+ }
+ return r1;
+}
+
+static void sub_8102D28(s16 a0)
+{
+ eSlotMachine->unk14 += a0;
+ eSlotMachine->unk14 %= 120;
+ eSlotMachine->unk16 = 6 - eSlotMachine->unk14 / 20;
+}
+
+static s16 sub_8102D5C(s16 a0)
+{
+ s16 r1 = eSlotMachine->unk14 % 20;
+ if (r1 != 0)
+ {
+ if (r1 < a0)
+ a0 = r1;
+ sub_8102D28(a0);
+ r1 = eSlotMachine->unk14 % 20;
+ }
+ return r1;
+}
+
+static void sub_8102DA8(void)
+{
+ u8 i;
+ for (i = 0; i < 3; i++)
+ {
+ u8 taskId = CreateTask(sub_8102E68, 2);
+ gTasks[taskId].data[15] = i;
+ eSlotMachine->reelTasks[i] = taskId;
+ sub_8102E68(taskId);
+ }
+}
+
+static void sub_8102DEC(u8 a0)
+{
+ gTasks[eSlotMachine->reelTasks[a0]].data[0] = 1;
+ gTasks[eSlotMachine->reelTasks[a0]].data[14] = 1;
+}
+
+static void sub_8102E1C(u8 a0)
+{
+ gTasks[eSlotMachine->reelTasks[a0]].data[0] = 2;
+}
+
+static bool8 sub_8102E40(u8 a0)
+{
+ return gTasks[eSlotMachine->reelTasks[a0]].data[14];
+}
+
+static bool8 (*const gUnknown_083ECB2C[])(struct Task *task) = {
+ sub_8102EA0,
+ sub_8102EA4,
+ sub_8102EC0,
+ sub_8102F4C,
+ sub_8103008
+};
+
+static void sub_8102E68(u8 taskId)
+{
+ while (gUnknown_083ECB2C[gTasks[taskId].data[0]](gTasks + taskId));
+}
+
+static bool8 sub_8102EA0(struct Task *task)
+{
+ return FALSE;
+}
+
+static bool8 sub_8102EA4(struct Task *task)
+{
+ sub_8102C84(task->data[15], eSlotMachine->unk1A);
+ return FALSE;
+}
+
+static bool8 (*const gUnknown_083ECB40[])(void) = {
+ sub_810305C,
+ sub_81032C0,
+ sub_81033DC
+};
+static void (*const gUnknown_083ECB4C[])(void) = {
+ sub_81034F4,
+ sub_8103540,
+ sub_810380C
+};
+
+static bool8 sub_8102EC0(struct Task *task)
+{
+ task->data[0]++;
+ eSlotMachine->unk34[task->data[15]] = 0;
+ eSlotMachine->unk2E[task->data[15]] = 0;
+ if (eSlotMachine->unk0A == 0 && (eSlotMachine->unk04 == 0 || eSlotMachine->unk06 == 0 || !gUnknown_083ECB40[task->data[15]]()))
+ {
+ eSlotMachine->unk06 = 0;
+ gUnknown_083ECB4C[task->data[15]]();
+ }
+ task->data[1] = eSlotMachine->unk2E[task->data[15]];
+ return TRUE;
+}
+
+static bool8 sub_8102F4C(struct Task *task)
+{
+ u16 sp[] = {2, 4, 4, 4, 8};
+ s16 r2 = eSlotMachine->unk1C[task->data[15]] % 24;
+ if (r2 != 0)
+ {
+ r2 = sub_8102CCC(task->data[15], eSlotMachine->unk1A);
+ }
+ else if (eSlotMachine->unk2E[task->data[15]])
+ {
+ eSlotMachine->unk2E[task->data[15]]--;
+ sub_8102C84(task->data[15], eSlotMachine->unk1A);
+ r2 = eSlotMachine->unk1C[task->data[15]] % 24;
+ }
+ if (r2 == 0 && eSlotMachine->unk2E[task->data[15]] == 0)
+ {
+ task->data[0]++;
+ task->data[1] = sp[task->data[1]];
+ task->data[2] = 0;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8103008(struct Task *task)
+{
+ eSlotMachine->unk22[task->data[15]] = task->data[1];
+ task->data[1] = -task->data[1];
+ task->data[2]++;
+ if ((task->data[2] & 0x3) == 0)
+ {
+ task->data[1] >>= 1;
+ }
+ if (task->data[1] == 0)
+ {
+ task->data[0] = 0;
+ task->data[14] = 0;
+ eSlotMachine->unk22[task->data[15]] = 0;
+ }
+ return FALSE;
+}
+
+static bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1) = {
+ sub_8103154,
+ sub_81031B4,
+ sub_81031B4
+};
+
+static bool8 sub_810305C(void)
+{
+ u8 r3 = sub_810250C(eSlotMachine->unk04);
+ u8 r5 = r3;
+ if (eSlotMachine->unk04 & 0xc0)
+ {
+ r5 = 0;
+ r3 = 1;
+ }
+ return gUnknown_083ECB64[eSlotMachine->bet - 1](r5, r3);
+}
+
+static bool8 sub_81030A4(s16 y, u8 tag1, u8 tag2)
+{
+ u8 tag = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, y);
+ if (tag == tag1 || tag == tag2)
+ {
+ eSlotMachine->unk07 = tag;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 sub_81030E0(s16 y)
+{
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - y) == 4)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8103134(void)
+{
+ if (eSlotMachine->unk04 & 0xc2)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8103154(u8 a0, u8 a1)
+{
+ s16 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ if (sub_81030A4(2 - i, a0, a1))
+ {
+ eSlotMachine->unk34[0] = 2;
+ eSlotMachine->unk2E[0] = i;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 sub_81031B4(u8 tag1, u8 tag2)
+{
+ s16 i;
+ bool8 r6 = sub_8103134();
+ if (r6 || !sub_81030E0(0))
+ {
+ for (i = 1; i < 4; i++)
+ {
+ if (sub_81030A4(i, tag1, tag2))
+ {
+ eSlotMachine->unk34[0] = i;
+ eSlotMachine->unk2E[0] = 0;
+ return TRUE;
+ }
+ }
+ }
+ for (i = 1; i < 5; i++)
+ {
+ bool8 r7 = r6;
+ if (r7 || !sub_81030E0(i))
+ {
+ if (sub_81030A4(1 - i, tag1, tag2))
+ {
+ if (i == 1 && (r7 || !sub_81030E0(3)))
+ {
+ eSlotMachine->unk34[0] = 3;
+ eSlotMachine->unk2E[0] = 3;
+ return TRUE;
+ }
+ if (i < 4 && (r7 || !sub_81030E0(i + 1)))
+ {
+ eSlotMachine->unk34[0] = 2;
+ eSlotMachine->unk2E[0] = i + 1;
+ return TRUE;
+ }
+ eSlotMachine->unk34[0] = 1;
+ eSlotMachine->unk2E[0] = i;
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+static bool8 (*const gUnknown_083ECB70[])(void) = {
+ sub_81032E8,
+ sub_81032E8,
+ sub_810333C
+};
+
+static bool8 sub_81032C0(void)
+{
+ return gUnknown_083ECB70[eSlotMachine->bet - 1]();
+}
+
+static bool8 sub_81032E8(void)
+{
+ s16 i;
+ s16 unk34_0 = eSlotMachine->unk34[0];
+
+ for (i = 0; i < 5; i++)
+ {
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, unk34_0 - i) == eSlotMachine->unk07)
+ {
+ eSlotMachine->unk34[1] = unk34_0;
+ eSlotMachine->unk2E[1] = i;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 sub_810333C(void)
+{
+ s16 i;
+ if (sub_81032E8())
+ {
+ if (eSlotMachine->unk34[0] != 2 && eSlotMachine->unk2E[1] > 1 && eSlotMachine->unk2E[1] != 4)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == eSlotMachine->unk07)
+ {
+ eSlotMachine->unk34[1] = 2;
+ eSlotMachine->unk2E[1] = i;
+ break;
+ }
+ }
+ }
+ return TRUE;
+ }
+ if (eSlotMachine->unk34[0] != 2)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == eSlotMachine->unk07)
+ {
+ eSlotMachine->unk34[1] = 2;
+ eSlotMachine->unk2E[1] = i;
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+static bool8 (*const gUnknown_083ECB7C[])(u8 a0) = {
+ sub_810341C,
+ sub_810341C,
+ sub_810347C
+};
+
+static bool8 sub_81033DC(void)
+{
+ u8 r3 = eSlotMachine->unk07;
+ if (eSlotMachine->unk04 & 0x40)
+ {
+ r3 = 0;
+ if (eSlotMachine->unk07 == 0)
+ {
+ r3 = 1;
+ }
+ }
+ return gUnknown_083ECB7C[eSlotMachine->bet - 1](r3);
+}
+
+static bool8 sub_810341C(u8 a0)
+{
+ s16 i;
+ s16 unk34_1 = eSlotMachine->unk34[1];
+
+ for (i = 0; i < 5; i++)
+ {
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, unk34_1 - i) == a0)
+ {
+ eSlotMachine->unk34[2] = unk34_1;
+ eSlotMachine->unk2E[2] = i;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 sub_810347C(u8 a0)
+{
+ s16 i;
+ s16 r8;
+ if (eSlotMachine->unk34[0] == eSlotMachine->unk34[1])
+ {
+ return sub_810341C(a0);
+ }
+ r8 = 1;
+ if (eSlotMachine->unk34[0] == 1)
+ {
+ r8 = 3;
+ }
+ for (i = 0; i < 5; i++)
+ {
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - i) == a0)
+ {
+ eSlotMachine->unk2E[2] = i;
+ eSlotMachine->unk34[2] = r8;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static void sub_81034F4(void)
+{
+ s16 i;
+ for (i = 0; sub_81030E0(i); i++);
+ eSlotMachine->unk2E[0] = i;
+}
+
+static bool8 sub_8103520(u8 *a0)
+{
+ if (*a0 == 0)
+ {
+ *a0 = 1;
+ return TRUE;
+ }
+ if (*a0 == 1)
+ {
+ *a0 = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void (*const gUnknown_083ECB88[])(void) = {
+ sub_8103564,
+ j5_08111E84,
+ sub_8103668
+};
+
+static void sub_8103540(void)
+{
+ gUnknown_083ECB88[eSlotMachine->bet - 1]();
+}
+
+static void sub_8103564(void)
+{
+ if (eSlotMachine->unk34[0] != 0 && eSlotMachine->unk04 & 0x80)
+ {
+ u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - eSlotMachine->unk2E[0]);
+ if (sub_8103520(&sp0))
+ {
+ s16 i;
+ for (i = 0; i < 5; i++)
+ {
+ if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i))
+ {
+ eSlotMachine->unk34[1] = 2;
+ eSlotMachine->unk2E[1] = i;
+ break;
+ }
+ }
+ }
+ }
+}
+
+static void j5_08111E84(void)
+{
+ if (eSlotMachine->unk34[0] != 0 && eSlotMachine->unk04 & 0x80)
+ {
+ u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]);
+ if (sub_8103520(&sp0))
+ {
+ s16 i;
+ for (i = 0; i < 5; i++)
+ {
+ if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, eSlotMachine->unk34[0] - i))
+ {
+ eSlotMachine->unk34[1] = eSlotMachine->unk34[0];
+ eSlotMachine->unk2E[1] = i;
+ break;
+ }
+ }
+ }
+ }
+}
+
+static void sub_8103668(void)
+{
+ s16 i;
+ s16 j;
+ if (eSlotMachine->unk34[0] != 0 && eSlotMachine->unk04 & 0x80)
+ {
+ if (eSlotMachine->unk34[0] == 2)
+ {
+ j5_08111E84();
+ }
+ else
+ {
+ u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]);
+ if (sub_8103520(&sp0))
+ {
+ j = 2;
+ if (eSlotMachine->unk34[0] == 3)
+ j = 3;
+ for (i = 0; i < 2; i++, j--)
+ {
+ if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, j))
+ {
+ eSlotMachine->unk34[1] = j;
+ eSlotMachine->unk2E[1] = 0;
+ return;
+ }
+ }
+ for (j = 1; j < 5; j++)
+ {
+ if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, eSlotMachine->unk34[0] - j))
+ {
+ if (eSlotMachine->unk34[0] == 1)
+ {
+ if (j < 3)
+ {
+ eSlotMachine->unk34[1] = 2;
+ eSlotMachine->unk2E[1] = j + 1;
+ }
+ else
+ {
+ eSlotMachine->unk34[1] = 1;
+ eSlotMachine->unk2E[1] = j;
+ }
+ }
+ else
+ {
+ if (j < 3)
+ {
+ eSlotMachine->unk34[1] = 3;
+ eSlotMachine->unk2E[1] = j;
+ }
+ else
+ {
+ eSlotMachine->unk34[1] = 2;
+ eSlotMachine->unk2E[1] = j - 1;
+ }
+ }
+ return;
+ }
+ }
+ }
+ }
+ }
+}
+
+static bool8 sub_8103764(u8 a0, u8 a1)
+{
+ if ((a0 == 0 && a1 == 1) || (a0 == 1 && a1 == 0))
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 sub_810378C(u8 a0, u8 a1, u8 a2)
+{
+ if ((a0 == 0 && a1 == 1 && a2 == 0) || (a0 == 1 && a1 == 0 && a2 == 1))
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 sub_81037BC(u8 a0, u8 a1, u8 a2)
+{
+ 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))
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static void (*const gUnknown_083ECB94[])(void) = {
+ sub_8103830,
+ sub_8103910,
+ sub_8103A78
+};
+
+static void sub_810380C(void)
+{
+ gUnknown_083ECB94[eSlotMachine->bet - 1]();
+}
+
+static void sub_8103830(void)
+{
+ s16 i = 0;
+ u8 r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - eSlotMachine->unk2E[0]);
+ u8 r1 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - eSlotMachine->unk2E[1]);
+ if (r5 == r1)
+ {
+ while (1)
+ {
+ u8 r0;
+ if (!(r5 == (r0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i)) || (r5 == 0 && r0 == 1) || (r5 == 1 && r0 == 0)))
+ {
+ break;
+ }
+ i++;
+ }
+ }
+ else if (sub_8103764(r5, r1))
+ {
+ if (eSlotMachine->unk04 & 0x80)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (r5 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i))
+ {
+ eSlotMachine->unk2E[2] = i;
+ return;
+ }
+ }
+ }
+ i = 0;
+ while (1)
+ {
+ if (r5 != GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i))
+ {
+ break;
+ }
+ i++;
+ }
+ }
+ eSlotMachine->unk2E[2] = i;
+}
+
+static void sub_8103910(void)
+{
+ s16 sp0 = 0;
+ s16 i;
+ u8 r7;
+ u8 r6;
+ u8 r4;
+
+ if (eSlotMachine->unk34[1] != 0 && eSlotMachine->unk34[0] == eSlotMachine->unk34[1] && eSlotMachine->unk04 & 0x80)
+ {
+ r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]);
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, eSlotMachine->unk34[1] - eSlotMachine->unk2E[1]);
+ if (sub_8103764(r7, r6))
+ {
+ for (i = 0; i < 5; i++)
+ {
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, eSlotMachine->unk34[1] - i);
+ if (r7 == r4)
+ {
+ sp0 = i;
+ break;
+ }
+ }
+ }
+ }
+ while (1)
+ {
+ s16 r8;
+ for (i = 1, r8 = 0; i < 4; i++)
+ {
+ r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, i - eSlotMachine->unk2E[0]);
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, i - eSlotMachine->unk2E[1]);
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, i - sp0);
+ if (!sub_81037BC(r7, r6, r4) && (!sub_810378C(r7, r6, r4) || !(eSlotMachine->unk04 & 0x80)))
+ {
+ r8++;
+ break;
+ }
+ }
+ if (r8 == 0)
+ {
+ break;
+ }
+ sp0++;
+ }
+ eSlotMachine->unk2E[2] = sp0;
+}
+
+static void sub_8103A78(void)
+{
+ u8 r6;
+ u8 r5;
+ u8 r4;
+ s16 r8;
+ s16 i;
+
+ sub_8103910();
+ if (eSlotMachine->unk34[1] != 0 && eSlotMachine->unk34[0] != eSlotMachine->unk34[1] && eSlotMachine->unk04 & 0x80)
+ {
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]);
+ r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, eSlotMachine->unk34[1] - eSlotMachine->unk2E[1]);
+ if (sub_8103764(r6, r5))
+ {
+ r8 = 1;
+ if (eSlotMachine->unk34[0] == 1)
+ r8 = 3;
+ for (i = 0; i < 5; i++)
+ {
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - (eSlotMachine->unk2E[2] + i));
+ if (r6 == r4)
+ {
+ eSlotMachine->unk2E[2] += i;
+ break;
+ }
+ }
+ }
+ }
+ while (1)
+ {
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - eSlotMachine->unk2E[0]);
+ r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - eSlotMachine->unk2E[1]);
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 3 - eSlotMachine->unk2E[2]);
+ if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && eSlotMachine->unk04 & 0x80))
+ break;
+ eSlotMachine->unk2E[2]++;
+ }
+ while (1)
+ {
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - eSlotMachine->unk2E[0]);
+ r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - eSlotMachine->unk2E[1]);
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 1 - eSlotMachine->unk2E[2]);
+ if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && eSlotMachine->unk04 & 0x80))
+ break;
+ eSlotMachine->unk2E[2]++;
+ }
+}
+
+static void sub_8103C14(u8 a0)
+{
+ u8 taskId = CreateTask(sub_8103C48, 5);
+ gTasks[taskId].data[15] = a0;
+ sub_8103C48(taskId);
+}
+
+static void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId) = {
+ sub_8103C78,
+ sub_8103CAC,
+ sub_8103CC8
+};
+
+static void sub_8103C48(u8 taskId)
+{
+ gUnknown_083ECBA0[gTasks[taskId].data[0]](gTasks + taskId, taskId);
+}
+
+static const s16 gUnknown_083ECBAC[] = {5, 10, 15};
+
+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)
+{
+ if (++task->data[1] > 11)
+ task->data[0]++;
+}
+
+static void sub_8103CC8(struct Task *task, u8 taskId)
+{
+ sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x42, 0x43, 0x52, 0x53);
+ DestroyTask(taskId);
+}
+
+static const u16 *const gUnknown_083EDD08[];
+static const u16 *const gUnknown_083EDD1C[];
+static const u8 gUnknown_083EDD30[];
+
+static void sub_8103D00(u8 a0)
+{
+ LoadPalette(gUnknown_083EDD08[a0], gUnknown_083EDD30[a0], 2);
+}
+
+static void sub_8103D28(u8 a0)
+{
+ LoadPalette(gUnknown_083EDD1C[a0], gUnknown_083EDD30[a0], 2);
+}
+
+static const u8 gUnknown_083EDD35[][2];
+static const u8 gUnknown_083EDD3B[];
+
+static void sub_8103D50(u8 a0)
+{
+ u8 i;
+ for (i = 0; i < gUnknown_083EDD3B[a0]; i++)
+ {
+ sub_8103D00(gUnknown_083EDD35[a0][i]);
+ }
+}
+
+static void sub_8103D8C(u8 a0)
+{
+ u8 i;
+ for (i = 0; i < gUnknown_083EDD3B[a0]; i++)
+ {
+ sub_8103D28(gUnknown_083EDD35[a0][i]);
+ }
+}
+
+static void sub_8103DC8(void)
+{
+ u8 i;
+ for (i = 0; i < 5; i++)
+ {
+ u8 spriteId = CreateInvisibleSprite(sub_8103EE4);
+ gSprites[spriteId].data[0] = i;
+ eSlotMachine->unk44[i] = spriteId;
+ }
+}
+
+static void sub_8103E04(u8 a0)
+{
+ struct Sprite *sprite = gSprites + eSlotMachine->unk44[a0];
+ sprite->data[1] = 1;
+ sprite->data[2] = 4;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ sprite->data[5] = 2;
+ sprite->data[7] = 0;
+}
+
+static bool8 sub_8103E38(void)
+{
+ u8 i;
+ for (i = 0; i < 5; i++)
+ {
+ struct Sprite *sprite = gSprites + eSlotMachine->unk44[i];
+ if (sprite->data[1] && sprite->data[2])
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static bool8 sub_8103E7C(void)
+{
+ u8 i;
+ for (i = 0; i < 5; i++)
+ {
+ if (!sub_8103EAC(eSlotMachine->unk44[i]))
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static bool8 sub_8103EAC(u8 spriteId)
+{
+ struct Sprite *sprite = gSprites + spriteId;
+ if (!sprite->data[1])
+ return TRUE;
+ if (sprite->data[7])
+ sprite->data[1] = 0;
+ return sprite->data[7];
+}
+
+static void sub_8103EE4(struct Sprite *sprite)
+{
+ s16 r4;
+ if (sprite->data[1])
+ {
+ if (!sprite->data[3]--)
+ {
+ sprite->data[7] = 0;
+ sprite->data[3] = 1;
+ sprite->data[4] += sprite->data[5];
+ r4 = 4;
+ if (sprite->data[2])
+ r4 = 8;
+ if (sprite->data[4] <= 0)
+ {
+ sprite->data[7] = 1;
+ sprite->data[5] = -sprite->data[5];
+ if (sprite->data[2])
+ sprite->data[2]--;
+ }
+ else if (sprite->data[4] >= r4)
+ sprite->data[5] = -sprite->data[5];
+ if (sprite->data[2])
+ sprite->data[3] <<= 1;
+ }
+ MultiplyPaletteRGBComponents(gUnknown_083EDD30[sprite->data[0]], sprite->data[4], sprite->data[4], sprite->data[4]);
+ }
+}
+
+static void sub_8103F70(void)
+{
+ u8 taskId = CreateTask(sub_8103FE8, 6);
+ gTasks[taskId].data[3] = 1;
+ sub_8103FE8(taskId);
+}
+
+static const u16 *const gUnknown_083EDDA0[];
+static const u16 *const gUnknown_083EDDAC;
+
+static bool8 sub_8103FA0(void)
+{
+ u8 taskId = FindTaskIdByFunc(sub_8103FE8);
+ if (!gTasks[taskId].data[2])
+ {
+ DestroyTask(taskId);
+ LoadPalette(gUnknown_083EDDAC, 0x10, 0x20);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void sub_8103FE8(u8 taskId)
+{
+ struct Task *task = gTasks + taskId;
+ if (!task->data[1]--)
+ {
+ task->data[1] = 4;
+ task->data[2] += task->data[3];
+ if (task->data[2] == 0 || task->data[2] == 2)
+ {
+ task->data[3] = -task->data[3];
+ }
+ }
+ LoadPalette(gUnknown_083EDDA0[task->data[2]], 0x10, 0x20);
+}
+
+static void sub_8104048(void)
+{
+ eSlotMachine->unk3E = CreateTask(sub_81040E8, 8);
+}
+
+static void sub_8104064(u8 pikaPower)
+{
+ struct Task *task = gTasks + eSlotMachine->unk3E;
+ sub_810421C(task);
+ task->data[0] = 1;
+ task->data[1]++;
+ task->data[15] = 1;
+}
+
+static void sub_8104098(void)
+{
+ struct Task *task = gTasks + eSlotMachine->unk3E;
+ sub_810421C(task);
+ task->data[0] = 3;
+ task->data[15] = 1;
+}
+
+static bool8 sub_81040C8(void)
+{
+ return gTasks[eSlotMachine->unk3E].data[15];
+}
+
+static void (*const gUnknown_083ECBB4[])(struct Task *task) = {
+ nullsub_68,
+ sub_810411C,
+ sub_8104144,
+ sub_81041AC
+};
+
+static void sub_81040E8(u8 taskId)
+{
+ gUnknown_083ECBB4[gTasks[taskId].data[0]](gTasks + taskId);
+}
+
+static void nullsub_68(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 const u16 gUnknown_083ECBC4[][2] = {
+ {0x9e, 0x6e},
+ {0x9f, 0x6f},
+ {0xaf, 0x7f}
+};
+
+static void sub_8104144(struct Task *task)
+{
+ u16 *vaddr = (u16 *)BG_SCREEN_ADDR(29);
+ if (gSprites[task->data[2]].data[7])
+ {
+ s16 r2 = task->data[1] + 2;
+ u8 r0 = 0;
+ if (task->data[1] == 1)
+ r0 = 1;
+ else if (task->data[1] == 16)
+ r0 = 2;
+ vaddr[r2 + 0x40] = gUnknown_083ECBC4[r0][0];
+ sub_8105B88(task->data[2]);
+ task->data[0] = 0;
+ task->data[15] = 0;
+ }
+}
+
+static void sub_81041AC(struct Task *task)
+{
+ u16 *vaddr = (u16 *)BG_SCREEN_ADDR(29);
+ s16 r4 = task->data[1] + 2;
+ u8 r2 = 0;
+ if (task->data[1] == 1)
+ r2 = 1;
+ else if (task->data[1] == 16)
+ r2 = 2;
+ if (task->data[2] == 0)
+ {
+ vaddr[r4 + 0x40] = gUnknown_083ECBC4[r2][1];
+ task->data[1]--;
+ }
+ if (++task->data[2] >= 20)
+ task->data[2] = 0;
+ if (task->data[1] == 0)
+ {
+ task->data[0] = 0;
+ task->data[15] = 0;
+ }
+}
+
+static void sub_810421C(struct Task *task)
+{
+ u8 i;
+
+ for (i = 2; i < 16; i++)
+ task->data[i] = 0;
+}
+
+static void sub_810423C(u8 pikaPower)
+{
+ s16 i;
+ u8 r3;
+ s16 r2 = 3;
+ u16 *vaddr = (u16 *)BG_SCREEN_ADDR(29);
+ for (i = 0; i < pikaPower; i++, r2++)
+ {
+ r3 = 0;
+ if (i == 0)
+ r3 = 1;
+ else if (i == 15)
+ r3 = 2;
+ vaddr[r2 + 0x40] = gUnknown_083ECBC4[r3][0];
+ }
+ for (; i < 16; i++, r2++)
+ {
+ r3 = 0;
+ if (i == 0)
+ r3 = 1;
+ else if (i == 15)
+ r3 = 2;
+ vaddr[r2 + 0x40] = gUnknown_083ECBC4[r3][1];
+ }
+ gTasks[eSlotMachine->unk3E].data[1] = pikaPower;
+}
+
+static void sub_810430C(void)
+{
+ u8 taskId = CreateTask(sub_810434C, 7);
+ sub_810434C(taskId);
+}
+
+static bool8 sub_810432C(void)
+{
+ if (FindTaskIdByFunc(sub_810434C) == 0xFF)
+ return TRUE;
+ return FALSE;
+}
+
+static 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
+};
+
+static void sub_810434C(u8 taskId)
+{
+ gUnknown_083ECBD0[gTasks[taskId].data[0]](gTasks + taskId);
+}
+
+static void sub_810437C(struct Task *task)
+{
+ eSlotMachine->unk0A = 0;
+ eSlotMachine->unk14 = 0;
+ eSlotMachine->unk16 = 0;
+ task->data[0]++;
+ task->data[1] = 0;
+ task->data[2] = 30;
+ task->data[4] = 1280;
+ gSpriteCoordOffsetX = 0;
+ gSpriteCoordOffsetY = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ sub_8104A40(30, 0);
+ sub_81051C0();
+ sub_8105100();
+ sub_81052EC();
+ sub_81053A0();
+ sub_810545C();
+ sub_8102680();
+ StopMapMusic();
+ PlayNewMapMusic(BGM_BD_TIME);
+}
+
+static void sub_81043EC(struct Task *task)
+{
+ s16 r3;
+ gSpriteCoordOffsetX -= 8;
+ task->data[1] += 8;
+ r3 = ((task->data[1] + 240) & 0xff) >> 3;
+ REG_BG1HOFS = task->data[1] & 0x1ff;
+ if (r3 != task->data[2] && task->data[3] <= 18)
+ {
+ task->data[2] = r3;
+ task->data[3] = task->data[1] >> 3;
+ sub_8104A40(r3, task->data[3]);
+ }
+ if (task->data[1] >= 200)
+ {
+ task->data[0]++;
+ task->data[3] = 0;
+ }
+ sub_8102D28(task->data[4] >> 8);
+}
+
+static void sub_8104468(struct Task *task)
+{
+ sub_8102D28(task->data[4] >> 8);
+ if (++task->data[5] >= 60)
+ {
+ task->data[0]++;
+ sub_8105578();
+ sub_81056F0();
+ }
+}
+
+static void sub_8104498(struct Task *task)
+{
+ int r5;
+ u8 sp0[] = {1, 1, 2, 2};
+ s16 sp4[] = {0x40, 0x30, 0x18, 0x08};
+ s16 spC[] = {10, 8, 6, 4};
+
+ sub_8102D28(task->data[4] >> 8);
+ task->data[4] -= 4;
+ r5 = 4 - (task->data[4] >> 8);
+ sub_8105688(sp4[r5]);
+ sub_81057E8(spC[r5]);
+ StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, sp0[r5]);
+ if (task->data[4] <= 0x100)
+ {
+ task->data[0]++;
+ task->data[4] = 0x100;
+ task->data[5] = 0;
+ }
+}
+
+static void sub_8104548(struct Task *task)
+{
+ sub_8102D28(task->data[4] >> 8);
+ if (++task->data[5] >= 80)
+ {
+ task->data[0]++;
+ task->data[5] = 0;
+ sub_81057E8(2);
+ StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 3);
+ }
+}
+
+static void sub_8104598(struct Task *task)
+{
+ sub_8102D28(task->data[4] >> 8);
+ task->data[4] = (u8)task->data[4] + 0x80;
+ if (++task->data[5] >= 80)
+ {
+ task->data[0]++;
+ task->data[5] = 0;
+ }
+}
+
+static void sub_81045CC(struct Task *task)
+{
+ sub_8102D28(task->data[4] >> 8);
+ task->data[4] = (u8)task->data[4] + 0x40;
+ if (++task->data[5] >= 40)
+ {
+ task->data[5] = 0;
+ if (eSlotMachine->unk05)
+ {
+ if (eSlotMachine->unk0A <= task->data[6])
+ {
+ task->data[0]++;
+ }
+ }
+ else if (task->data[6] > 3)
+ {
+ task->data[0]++;
+ }
+ else if (sub_81026DC(task->data[6]))
+ {
+ task->data[0] = 14;
+ }
+ task->data[6]++;
+ }
+}
+
+static void sub_810463C(struct Task *task)
+{
+ s16 r5 = eSlotMachine->unk14 % 20;
+ if (r5)
+ {
+ r5 = sub_8102D5C(task->data[4] >> 8);
+ task->data[4] = (u8)task->data[4] + 0x40;
+ }
+ else if (sub_8102C48(1) != eSlotMachine->unk05)
+ {
+ sub_8102D28(task->data[4] >> 8);
+ r5 = eSlotMachine->unk14 % 20;
+ task->data[4] = (u8)task->data[4] + 0x40;
+ }
+ if (r5 == 0 && sub_8102C48(1) == eSlotMachine->unk05)
+ {
+ task->data[4] = 0;
+ task->data[0]++;
+ }
+}
+
+static void sub_81046C0(struct Task *task)
+{
+ if (++task->data[4] >= 60)
+ {
+ StopMapMusic();
+ sub_81056C0();
+ sub_8105804();
+ task->data[0]++;
+ if(eSlotMachine->unk05 == 0)
+ {
+ task->data[4] = 0xa0;
+ StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 5);
+ PlayFanfare(BGM_ME_ZANNEN);
+ }
+ else
+ {
+ task->data[4] = 0xc0;
+ StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 4);
+ gSprites[eSlotMachine->unk3F].animCmdIndex = 0;
+ if (eSlotMachine->pikaPower)
+ {
+ sub_8104098();
+ eSlotMachine->pikaPower = 0;
+ }
+ PlayFanfare(BGM_ME_B_SMALL);
+ }
+ }
+}
+
+static void sub_8104764(struct Task *task)
+{
+ if ((task->data[4] == 0 || --task->data[4] == 0) && !sub_81040C8())
+ {
+ task->data[0]++;
+ }
+}
+
+static void sub_8104794(struct Task *task)
+{
+ s16 r4;
+ gSpriteCoordOffsetX -= 8;
+ task->data[1] += 8;
+ task->data[3] += 8;
+ r4 = ((task->data[1] - 8) & 0xff) >> 3;
+ REG_BG1HOFS = task->data[1] & 0x1ff;
+ if (task->data[3] >> 3 <= 25)
+ {
+ sub_8104A88(r4);
+ }
+ else
+ {
+ task->data[0]++;
+ }
+}
+
+static void sub_81047EC(struct Task *task)
+{
+ eSlotMachine->unk0B = 0;
+ eSlotMachine->unk0A = eSlotMachine->unk05;
+ gSpriteCoordOffsetX = 0;
+ REG_BG1HOFS = 0;
+ eSlotMachine->unk1A = 8;
+ sub_810514C();
+ sub_81054B8();
+ sub_8105524();
+ PlayNewMapMusic(eSlotMachine->backupMapMusic);
+ if (eSlotMachine->unk0A == 0)
+ {
+ DestroyTask(FindTaskIdByFunc(sub_810434C));
+ }
+ else
+ {
+ sub_8104CAC(4);
+ task->data[1] = dp15_jump_random_unknown();
+ task->data[2] = 0;
+ task->data[3] = 0;
+ task->data[0]++;
+ }
+}
+
+static void sub_8104860(struct Task *task)
+{
+ if (eSlotMachine->unk1A == task->data[1])
+ {
+ task->data[0]++;
+ }
+ else if (eSlotMachine->unk1C[0] % 24 == 0 && (++task->data[2]& 0x07) == 0)
+ {
+ eSlotMachine->unk1A >>= 1;
+ }
+}
+
+static void sub_81048A8(struct Task *task)
+{
+ if (sub_8104E18())
+ {
+ DestroyTask(FindTaskIdByFunc(sub_810434C));
+ }
+}
+
+static void sub_81048CC(struct Task *task)
+{
+ sub_81054B8();
+ sub_81056C0();
+ sub_8105804();
+ sub_8105854();
+ gSprites[eSlotMachine->unk4E[0]].invisible = TRUE;
+ StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 5);
+ task->data[0]++;
+ task->data[4] = 4;
+ task->data[5] = 0;
+ StopMapMusic();
+ PlayFanfare(BGM_ME_ZANNEN);
+ PlaySE(SE_W153);
+}
+
+static void sub_8104940(struct Task *task)
+{
+ gSpriteCoordOffsetY = task->data[4];
+ REG_BG1VOFS = task->data[4];
+ if (task->data[5] & 0x01)
+ task->data[4] = -task->data[4];
+ if ((++task->data[5] & 0x1f) == 0)
+ task->data[4] >>= 1;
+ if (task->data[4] == 0)
+ {
+ sub_81058A0();
+ sub_81058C4();
+ sub_8105284();
+ sub_81059E8();
+ gSprites[eSlotMachine->unk4E[0]].invisible = FALSE;
+ task->data[0]++;
+ task->data[5] = 0;
+ }
+}
+
+static void sub_81049C8(struct Task *task)
+{
+ gSpriteCoordOffsetY = 0;
+ REG_BG1VOFS = 0;
+ if (sub_8105ACC())
+ {
+ task->data[0]++;
+ sub_8105AEC();
+ }
+}
+
+static void sub_81049F8(struct Task *task)
+{
+ gSpriteCoordOffsetX = 0;
+ REG_BG1HOFS = 0;
+ PlayNewMapMusic(eSlotMachine->backupMapMusic);
+ sub_810514C();
+ sub_8105554();
+ sub_8105524();
+ sub_81059B8();
+ DestroyTask(FindTaskIdByFunc(sub_810434C));
+}
+
+static const u16 sReelTimeWindowTilemap[];
+
+static void sub_8104A40(s16 a0, s16 a1)
+{
+ s16 i;
+
+ for (i = 4; i < 15; i++)
+ {
+ u16 tile = sReelTimeWindowTilemap[a1 + (i - 4) * 20];
+ ((u16 *)BG_SCREEN_ADDR(28))[32 * i + a0] = tile;
+ }
+}
+
+static void sub_8104A88(s16 a0)
+{
+ s16 i;
+
+ for (i = 4; i < 15; i++)
+ {
+ ((u16 *)BG_SCREEN_ADDR(28))[32 * i + a0] = 0;
+ }
+}
+
+static void sub_8104AB8(u8 a0)
+{
+ u8 taskId = CreateTask(sub_8104B0C, 1);
+ gTasks[taskId].data[1] = a0;
+ sub_8104B0C(taskId);
+}
+
+static bool8 sub_8104AEC(void)
+{
+ if (FindTaskIdByFunc(sub_8104B0C) == 0xFF)
+ return TRUE;
+ return FALSE;
+}
+
+static void (*const gUnknown_083ECC30[])(struct Task *task) = {
+ sub_8104B3C,
+ sub_8104B60,
+ sub_8104B80,
+ sub_8104B60,
+ sub_8104BC8,
+ sub_8104B60,
+ sub_8104BFC,
+ sub_8104B60,
+ sub_8104C44
+};
+
+static void sub_8104B0C(u8 taskId)
+{
+ gUnknown_083ECC30[gTasks[taskId].data[0]](gTasks + taskId);
+}
+
+static void sub_8104B3C(struct Task *task)
+{
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ task->data[0]++;
+}
+
+static void sub_8104B60(struct Task *task)
+{
+ if (!gPaletteFade.active)
+ {
+ task->data[0]++;
+ }
+}
+
+static void sub_8104B80(struct Task *task)
+{
+ sub_8104DA4();
+ sub_81065DC();
+ BasicInitMenuWindow(&gWindowConfig_81E7144);
+ MenuPrint_PixelCoords(gOtherText_ReelTime, 10, 32, 1);
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ task->data[0]++;
+}
+
+static void sub_8104BC8(struct Task *task)
+{
+ if (gMain.newKeys & (B_BUTTON | SELECT_BUTTON))
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ task->data[0]++;
+ }
+}
+
+static void sub_8104BFC(struct Task *task)
+{
+ MenuZeroFillScreen();
+ BasicInitMenuWindow(&gWindowConfig_81E7128);
+ sub_81064B8();
+ sub_8104CAC(task->data[1]);
+ sub_810423C(eSlotMachine->pikaPower);
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ task->data[0]++;
+}
+
+static void sub_8104C44(struct Task *task)
+{
+ DestroyTask(FindTaskIdByFunc(sub_8104B0C));
+}
+
+static void sub_8104C5C(void)
+{
+ u8 i;
+ struct Task *task;
+ i = CreateTask(sub_8104E74, 3);
+ eSlotMachine->unk3D = i;
+ task = gTasks + i;
+ task->data[1] = -1;
+ for (i = 4; i < 16; i++)
+ {
+ task->data[i] = MAX_SPRITES;
+ }
+}
static void LoadSlotMachineWheelOverlay(void);
-void sub_8104CAC(u8 arg0) {
+static void sub_8104CAC(u8 arg0) {
u8 i;
struct Task *task;
sub_8104DA4();
- task = &gTasks[ewram0_8->unk3D];
+ task = gTasks + eSlotMachine->unk3D;
task->data[1] = arg0;
- i = 0;
- while (gUnknown_083ED048[arg0][i].unk00 != 0xFF)
+ for (i = 0; gUnknown_083ED048[arg0][i].unk00 != 0xFF; i++)
{
u8 spriteId;
spriteId = sub_8105BB4(
@@ -59,20 +2879,1034 @@ void sub_8104CAC(u8 arg0) {
gSprites[spriteId].invisible = TRUE;
}
#endif
+ }
+}
+
+static void sub_8104D30(u8 a0, SpriteCallback a1, s16 a2, s16 a3, s16 a4)
+{
+ u8 i;
+ struct Task *task = gTasks + eSlotMachine->unk3D;
+ for (i = 4; i < 16; i++)
+ {
+ if (task->data[i] == MAX_SPRITES)
+ {
+ task->data[i] = sub_8105BF8(a0, a1, a2, a3, a4);
+ break;
+ }
+ }
+}
+
+static void (*const gUnknown_083ED064[])(void);
+
+void sub_8104DA4(void)
+{
+ u8 i;
+ struct Task *task = gTasks + eSlotMachine->unk3D;
+ 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]);
+ task->data[i] = MAX_SPRITES;
+ }
+ }
+}
+
+static bool8 sub_8104E18(void)
+{
+ u8 i;
+ struct Task *task = gTasks + eSlotMachine->unk3D;
+ for (i = 4; i < 16; i++)
+ {
+ if (task->data[i] != MAX_SPRITES)
+ {
+ if (gSprites[task->data[i]].data[7])
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+static void (*const gUnknown_083ECC54[])(struct Task *task) = {
+ nullsub_69
+};
+
+static void sub_8104E74(u8 taskId)
+{
+ gUnknown_083ECC54[gTasks[taskId].data[0]](gTasks + taskId);
+}
+
+static void nullsub_69(struct Task *task)
+{
+
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED414;
+
+static void sub_8104EA8(void)
+{
+ s16 i;
+ s16 j;
+ s16 x;
+ for (i = 0, x = 0x30; i < 3; i++, x += 0x28)
+ {
+ for (j = 0; j < 120; j += 24)
+ {
+ struct Sprite *sprite = gSprites + CreateSprite(&gSpriteTemplate_83ED414, x, 0, 14);
+ sprite->oam.priority = 3;
+ sprite->data[0] = i;
+ sprite->data[1] = j;
+ sprite->data[3] = -1;
+ }
+ }
+}
+
+static void sub_8104F18(struct Sprite *sprite)
+{
+ sprite->data[2] = eSlotMachine->unk1C[sprite->data[0]] + sprite->data[1];
+ sprite->data[2] %= 120;
+ sprite->pos1.y = eSlotMachine->unk22[sprite->data[0]] + 28 + sprite->data[2];
+ sprite->sheetTileStart = GetSpriteTileStartByTag(GetTagOfReelSymbolOnScreenAtPos(sprite->data[0], sprite->data[2] / 24));
+ SetSpriteSheetFrameTileNum(sprite);
+}
+
+static void sub_8104F8C(void)
+{
+ s16 i;
+ s16 x;
+ for (x = 203, i = 1; i < 10000; i *= 10, x -= 7)
+ {
+ sub_8104FF4(x, 23, 0, i);
+ }
+ for (x = 235, i = 1; i < 10000; i *= 10, x -= 7)
+ {
+ sub_8104FF4(x, 23, 1, i);
+ }
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED42C;
+
+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;
+ sprite->data[0] = a2;
+ sprite->data[1] = a3;
+ sprite->data[2] = a3 * 10;
+ sprite->data[3] = -1;
+}
+
+static void sub_810506C(struct Sprite *sprite)
+{
+ u16 tag = eSlotMachine->coins;
+ if (sprite->data[0])
+ tag = eSlotMachine->payout;
+ if (sprite->data[3] != tag)
+ {
+ sprite->data[3] = tag;
+ tag %= (u16)sprite->data[2];
+ tag /= (u16)sprite->data[1];
+ tag += 7;
+ sprite->sheetTileStart = GetSpriteTileStartByTag(tag);
+ SetSpriteSheetFrameTileNum(sprite);
+ }
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED444;
+static const struct SubspriteTable gSubspriteTables_83ED704[];
+
+static void sub_81050C4(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED444, 0x58, 0x48, 15);
+ gSprites[spriteId].oam.priority = 3;
+ SetSubspriteTables(gSprites + spriteId, gSubspriteTables_83ED704);
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED45C;
+
+static void sub_8105100(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED45C, 0x118, 0x50, 1);
+ gSprites[spriteId].oam.priority = 1;
+ gSprites[spriteId].coordOffsetEnabled = TRUE;
+ eSlotMachine->unk3F = spriteId;
+}
+
+static void sub_810514C(void)
+{
+ DestroySprite(gSprites + eSlotMachine->unk3F);
+}
+
+static void sub_8105170(struct Sprite *sprite)
+{
+ sprite->pos2.y = sprite->pos2.x = 0;
+ if (sprite->animNum == 4)
+ {
+ sprite->pos2.y = sprite->pos2.x = 8;
+ if ((sprite->animCmdIndex != 0 && sprite->animDelayCounter != 0) || (sprite->animCmdIndex == 0 && sprite->animDelayCounter == 0))
+ {
+ sprite->pos2.y = -8;
+ }
+ }
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED474;
+static const struct SpriteTemplate gSpriteTemplate_83ED48C;
+static const struct SubspriteTable gSubspriteTables_83ED73C[];
+static const struct SubspriteTable gSubspriteTables_83ED75C[];
+
+static void sub_81051C0(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED474, 0x170, 0x34, 7);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = TRUE;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED73C);
+ eSlotMachine->unk49[0] = spriteId;
+
+ spriteId = CreateSprite(&gSpriteTemplate_83ED48C, 0x170, 0x54, 7);
+ sprite = gSprites + spriteId;
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = TRUE;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED75C);
+ eSlotMachine->unk49[1] = spriteId;
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED4A4;
+static const struct SubspriteTable gSubspriteTables_83ED78C[];
+
+static void sub_8105284(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4A4, 0xa8 - gSpriteCoordOffsetX, 0x50, 7);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = TRUE;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED78C);
+ eSlotMachine->unk42 = spriteId;
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED4BC;
+
+static void sub_81052EC(void)
+{
+ u8 i;
+ s16 r5;
+ for (i = 0, r5 = 0; i < 3; i++, r5 += 20)
+ {
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4BC, 0x170, 0x00, 10);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->data[7] = r5;
+ eSlotMachine->unk4B[i] = spriteId;
+ }
+}
+
+static void sub_810535C(struct Sprite *sprite)
+{
+ s16 r0 = (u16)(eSlotMachine->unk14 + sprite->data[7]);
+ r0 %= 40;
+ sprite->pos1.y = r0 + 59;
+ StartSpriteAnimIfDifferent(sprite, sub_8102C48(r0 / 20));
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED4D4;
+static const struct SubspriteTable gSubspriteTables_83ED7B4[];
+
+static void sub_81053A0(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x170, 0x64, 9);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = 1;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED7B4);
+ eSlotMachine->unk4E[0] = spriteId;
+
+ spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x120, 0x68, 4);
+ sprite = gSprites + spriteId;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = 1;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED7B4);
+ eSlotMachine->unk4E[1] = spriteId;
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED4EC;
+static const struct SubspriteTable gSubspriteTables_83ED7D4[];
+
+static void sub_810545C(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4EC, 0x170, 0x4c, 11);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = 1;
+ SetSubspriteTables(sprite, gSubspriteTables_83ED7D4);
+ eSlotMachine->unk40 = spriteId;
+}
+
+static void sub_81054B8(void)
+{
+ u8 i;
+
+ DestroySprite(gSprites + eSlotMachine->unk40);
+ for (i = 0; i < 2; i++)
+ {
+ DestroySprite(gSprites + eSlotMachine->unk49[i]);
+ }
+ for (i = 0; i < 3; i++)
+ {
+ DestroySprite(gSprites + eSlotMachine->unk4B[i]);
+ }
+}
+
+static void sub_8105524(void)
+{
+ u8 i;
+ for (i = 0; i < 2; i++)
+ {
+ DestroySprite(gSprites + eSlotMachine->unk4E[i]);
+ }
+}
+
+static void sub_8105554(void)
+{
+ DestroySprite(gSprites + eSlotMachine->unk42);
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED504;
+
+static void sub_8105578(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0x98, 0x20, 5);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->oam.priority = 1;
+ sprite->hFlip = TRUE;
+ eSlotMachine->unk50[0] = spriteId;
+ sprite->data[0] = 8;
+ sprite->data[1] = -1;
+ sprite->data[2] = -1;
+ sprite->data[7] = 0x20;
+
+ spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0xb8, 0x20, 5);
+ sprite = gSprites + spriteId;
+ sprite->oam.priority = 1;
+ eSlotMachine->unk50[1] = spriteId;
+ sprite->data[1] = 1;
+ sprite->data[2] = -1;
+ sprite->data[7] = 0x20;
+}
+
+static void sub_810562C(struct Sprite *sprite)
+{
+ if (sprite->data[0] != 0)
+ {
+ sprite->data[0]--;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->invisible = TRUE;
+ }
+ else
+ {
+ sprite->invisible = FALSE;
+ sprite->pos2.x += sprite->data[1];
+ sprite->pos2.y += sprite->data[2];
+ if (++sprite->data[3] >= 8)
+ {
+ sprite->data[0] = sprite->data[7];
+ sprite->data[3] = 0;
+ }
+ }
+}
+
+static void sub_8105688(s16 a0)
+{
+ gSprites[eSlotMachine->unk50[0]].data[7] = a0;
+ gSprites[eSlotMachine->unk50[1]].data[7] = a0;
+}
+
+static void sub_81056C0(void)
+{
+ u8 i;
+
+ for (i = 0; i < 2; i++)
+ {
+ DestroySprite(gSprites + eSlotMachine->unk50[i]);
+ }
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED51C;
+
+static void sub_81056F0(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x48, 0x50, 3);
+ gSprites[spriteId].oam.priority = 1;
+ gSprites[spriteId].data[0] = 1;
+ gSprites[spriteId].data[5] = 0;
+ gSprites[spriteId].data[6] = 16;
+ gSprites[spriteId].data[7] = 8;
+ eSlotMachine->unk52[0] = spriteId;
+
+ spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x68, 0x50, 3);
+ gSprites[spriteId].oam.priority = 1;
+ gSprites[spriteId].hFlip = TRUE;
+ eSlotMachine->unk52[1] = spriteId;
+}
+
+static const u8 gUnknown_083ECC58[2]; // don't remove this until decompiled through gUnknown_083ECCF8
+
+static void sub_8105784(struct Sprite *sprite)
+{
+ u8 sp[] = {16, 0};
+ if (sprite->data[0] && --sprite->data[6] <= 0)
+ {
+ MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, sp[sprite->data[5]], sp[sprite->data[5]], sp[sprite->data[5]]);
+ ++sprite->data[5];
+ sprite->data[5] &= 1;
+ sprite->data[6] = sprite->data[7];
+ }
+}
+
+static void sub_81057E8(s16 a0)
+{
+ gSprites[eSlotMachine->unk52[0]].data[7] = a0;
+}
+
+static void sub_8105804(void)
+{
+ u8 i;
+ MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, 0, 0, 0);
+ for (i = 0; i < 2; i++)
+ {
+ DestroySprite(gSprites + eSlotMachine->unk52[i]);
+ }
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED534;
+
+static void sub_8105854(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED534, 0xa8, 0x50, 6);
+ gSprites[spriteId].oam.priority = 1;
+ eSlotMachine->unk41 = spriteId;
+}
+
+static void sub_8105894(struct Sprite *sprite)
+{
+ sprite->pos2.y = gSpriteCoordOffsetY;
+}
+
+static void sub_81058A0(void)
+{
+ DestroySprite(gSprites + eSlotMachine->unk41);
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED54C;
+
+static void sub_81058C4(void)
+{
+ u8 i;
+ u16 sp[] = {0x0, 0x40, 0x80, 0xC0};
+ for (i = 0; i < 4; i++)
+ {
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED54C, 0x50 - gSpriteCoordOffsetX, 0x44, 0);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->data[0] = sp[i];
+ eSlotMachine->unk54[i] = spriteId;
+ }
+}
- i += 1;
+static void sub_810594C(struct Sprite *sprite)
+{
+ sprite->data[0] -= 2;
+ sprite->data[0] &= 0xff;
+ sprite->pos2.x = Cos(sprite->data[0], 20);
+ sprite->pos2.y = Sin(sprite->data[0], 6);
+ sprite->subpriority = 0;
+ if (sprite->data[0] >= 0x80)
+ {
+ sprite->subpriority = 2;
+ }
+ if (++sprite->data[1] >= 16)
+ {
+ sprite->hFlip ^= 1;
+ sprite->data[1] = 0;
}
}
-asm(".section .text_b");
+static void sub_81059B8(void)
+{
+ u8 i;
+ for (i = 0; i < 4; i++)
+ {
+ DestroySprite(gSprites + eSlotMachine->unk54[i]);
+ }
+}
+
+static const struct SpriteTemplate gSpriteTemplate_83ED564;
+
+static void sub_81059E8(void)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED564, 0xa8, 0x3c, 8);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->oam.priority = 1;
+ sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
+ InitSpriteAffineAnim(sprite);
+ eSlotMachine->unk43 = spriteId;
+}
+
+static void sub_8105A38(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ if (sprite->affineAnimEnded)
+ sprite->data[0]++;
+ }
+ else if (sprite->data[0] == 1)
+ {
+ sprite->invisible ^= 1;
+ if (++sprite->data[2] >= 24)
+ {
+ sprite->data[0]++;
+ sprite->data[2] = 0;
+ }
+ }
+ else
+ {
+ sprite->invisible = TRUE;
+ if (++sprite->data[2] >= 16)
+ sprite->data[7] = 1;
+ }
+ sprite->data[1] &= 0xff;
+ sprite->data[1] += 16;
+ sprite->pos2.y -= (sprite->data[1] >> 8);
+}
+
+u8 sub_8105ACC(void)
+{
+ return gSprites[eSlotMachine->unk43].data[7];
+}
+
+static void sub_8105AEC(void)
+{
+ struct Sprite *sprite = gSprites + eSlotMachine->unk43;
+ FreeOamMatrix(sprite->oam.matrixNum);
+ DestroySprite(sprite);
+}
-void sub_8106448(void) {
+static const struct SpriteTemplate gSpriteTemplate_83ED6CC;
+
+static u8 sub_8105B1C(s16 x, s16 y)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83ED6CC, x, y, 12);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->oam.priority = 2;
+ sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
+ InitSpriteAffineAnim(sprite);
+ return spriteId;
+}
+
+static void sub_8105B70(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ sprite->data[7] = 1;
+}
+
+static void sub_8105B88(u8 spriteId)
+{
+ struct Sprite *sprite = gSprites + spriteId;
+ FreeOamMatrix(sprite->oam.matrixNum);
+ DestroySprite(sprite);
+}
+
+static const s16 gUnknown_083ECE7E[][2];
+static const SpriteCallback gUnknown_083ECF0C[];
+
+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 const struct SpriteTemplate *const gUnknown_083EDB5C[];
+static const struct SubspriteTable *const gUnknown_083EDBC4[];
+
+static u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4)
+{
+ u8 spriteId = CreateSprite(gUnknown_083EDB5C[templateIdx], x, y, 16);
+ struct Sprite *sprite = gSprites + spriteId;
+ sprite->oam.priority = 3;
+ sprite->callback = callback;
+ sprite->data[6] = a4;
+ sprite->data[7] = 1;
+ if (gUnknown_083EDBC4[templateIdx])
+ SetSubspriteTables(sprite, gUnknown_083EDBC4[templateIdx]);
+ return spriteId;
+}
+
+static void sub_8105C64(struct Sprite *sprite)
+{
+ sprite->data[7] = 0;
+}
+
+static void sub_8105C6C(struct Sprite *sprite)
+{
+ s16 sp0[] = {4, -4, 4, -4};
+ s16 sp8[] = {4, 4, -4, -4};
+
+ if (sprite->data[1]++ >= 16)
+ {
+ sprite->subspriteTableNum ^= 1;
+ sprite->data[1] = 0;
+ }
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ if (sprite->subspriteTableNum != 0)
+ {
+ sprite->pos2.x = sp0[sprite->data[6]];
+ sprite->pos2.y = sp8[sprite->data[6]];
+ }
+}
+
+static void sub_8105CF0(struct Sprite *sprite)
+{
+ sprite->hFlip = TRUE;
+ sub_8105C6C(sprite);
+}
+
+static void sub_8105D08(struct Sprite *sprite)
+{
+ sprite->vFlip = TRUE;
+ sub_8105C6C(sprite);
+}
+
+static void sub_8105D20(struct Sprite *sprite)
+{
+ sprite->hFlip = TRUE;
+ sprite->vFlip = TRUE;
+ sub_8105C6C(sprite);
+}
+
+static void sub_8105D3C(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos1.x += 4;
+ if (sprite->pos1.x >= 0xd0)
+ {
+ sprite->pos1.x = 0xd0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] > 90)
+ {
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->pos1.x += 4;
+ if (sprite->pos1.x >= 0x110)
+ {
+ sprite->data[0]++;
+ }
+ break;
+ case 3:
+ sprite->data[7] = 0;
+ break;
+ }
+}
+
+static void sub_8105DA4(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos1.x -= 4;
+ if (sprite->pos1.x <= 0xd0)
+ {
+ sprite->pos1.x = 0xd0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] > 90)
+ {
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->pos1.x -= 4;
+ if (sprite->pos1.x <= 0x90)
+ {
+ sprite->data[0]++;
+ }
+ break;
+ case 3:
+ sprite->data[7] = 0;
+ break;
+ }
+}
+
+static void sub_8105E08(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ StartSpriteAnim(sprite, eSlotMachine->unk0A - 1);
+ sprite->data[0]++;
+ // fallthrough
+ case 1:
+ if (++sprite->data[1] >= 4)
+ {
+ sprite->data[0]++;
+ sprite->data[1] = 0;
+ }
+ break;
+ case 2:
+ sprite->pos1.x += 4;
+ if (sprite->pos1.x >= 0xd0)
+ {
+ sprite->pos1.x = 0xd0;
+ sprite->data[0]++;
+ }
+ break;
+ case 3:
+ if (++sprite->data[1] > 90)
+ {
+ sprite->data[0]++;
+ }
+ break;
+ case 4:
+ sprite->pos1.x += 4;
+ if (sprite->pos1.x >= 0xf8)
+ {
+ sprite->data[0]++;
+ }
+ break;
+ case 5:
+ sprite->data[7] = 0;
+ break;
+ }
+}
+
+static void sub_8105EB4(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->animPaused = TRUE;
+ sprite->data[0]++;
+ // fallthrough
+ case 1:
+ sprite->pos1.y += 8;
+ if (sprite->pos1.y >= 0x70)
+ {
+ sprite->pos1.y = 0x70;
+ sprite->data[1] = 16;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ if (sprite->data[2] == 0)
+ {
+ sprite->pos1.y -= sprite->data[1];
+ sprite->data[1] = -sprite->data[1];
+ if (++sprite->data[3] >= 2)
+ {
+ sprite->data[1] >>= 2;
+ sprite->data[3] = 0;
+ if (sprite->data[1] == 0)
+ {
+ sprite->data[0]++;
+ sprite->data[7] = 0;
+ sprite->animPaused = FALSE;
+ }
+ }
+ }
+ sprite->data[2]++;
+ sprite->data[2] &= 0x07;
+ break;
+ }
+}
+
+static void sub_8105F54(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (++sprite->data[1] > 8)
+ {
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ sprite->pos1.y += 2;
+ if (sprite->pos1.y >= 0x30)
+ {
+ sprite->pos1.y = 0x30;
+ sprite->data[0]++;
+ sprite->data[7] = 0;
+ }
+ break;
+ }
+}
+
+static void sub_8105F9C(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->invisible = TRUE;
+ if (++sprite->data[1] > 0x20)
+ {
+ sprite->data[0]++;
+ sprite->data[1] = 5;
+ sprite->oam.mosaic = TRUE;
+ sprite->invisible = FALSE;
+ StartSpriteAnim(sprite, 1);
+ REG_MOSAIC = ((sprite->data[1] << 4) | sprite->data[1]) << 8;
+ }
+ break;
+ case 1:
+ sprite->data[1] -= (sprite->data[2] >> 8);
+ if (sprite->data[1] < 0)
+ {
+ sprite->data[1] = 0;
+ }
+ REG_MOSAIC = ((sprite->data[1] << 4) | sprite->data[1]) << 8;
+ sprite->data[2] &= 0xff;
+ sprite->data[2] += 0x80;
+ if (sprite->data[1] == 0)
+ {
+ sprite->data[0]++;
+ sprite->data[7] = 0;
+ sprite->oam.mosaic = FALSE;
+ StartSpriteAnim(sprite, 0);
+ }
+ break;
+ }
+}
+
+static const u16 *const gUnknown_083EDE10[];
+
+static void sub_8106058(struct Sprite *sprite)
+{
+ if (sprite->data[1] < 3)
+ {
+ LoadPalette(gUnknown_083EDE10[sprite->data[1]], (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20);
+ if (++sprite->data[2] >= 4)
+ {
+ sprite->data[1]++;
+ sprite->data[2] = 0;
+ }
+ }
+ else
+ {
+ LoadPalette(gUnknown_083EDE10[sprite->data[1]], (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20);
+ if (++sprite->data[2] >= 25)
+ {
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ }
+ }
+ StartSpriteAnimIfDifferent(sprite, 1);
+ sprite->data[7] = 0;
+}
+
+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};
+ s16 sp20[] = {16, 12, 16, 0, 0, 4, 8, 8};
+
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos2.x = sp00[sprite->data[6]];
+ sprite->pos2.y = sp10[sprite->data[6]];
+ sprite->data[1] = sp20[sprite->data[6]];
+ sprite->data[0]++;
+ // fallthrough
+ case 1:
+ if (sprite->data[1]-- == 0)
+ {
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ if (sprite->pos2.x > 0)
+ {
+ sprite->pos2.x -= 4;
+ }
+ else if (sprite->pos2.x < 0)
+ {
+ sprite->pos2.x += 4;
+ }
+ if (sprite->pos2.y > 0)
+ {
+ sprite->pos2.y -= 4;
+ }
+ else if (sprite->pos2.y < 0)
+ {
+ sprite->pos2.y += 4;
+ }
+ if (sprite->pos2.x == 0 && sprite->pos2.y == 0)
+ {
+ sprite->data[0]++;
+ }
+ break;
+ }
+}
+
+static void sub_81061C8(struct Sprite *sprite)
+{
+ s16 sp0[] = {160, 192, 224, 104, 80, 64, 48, 24};
+
+ if (sprite->data[0] == 0)
+ {
+ sprite->data[0]++;
+ sprite->data[1] = 12;
+ }
+ sprite->pos2.x = Cos(sp0[sprite->data[6]], sprite->data[1]);
+ sprite->pos2.y = Sin(sp0[sprite->data[6]], sprite->data[1]);
+ if (sprite->data[1])
+ {
+ sprite->data[1]--;
+ }
+}
+
+static void sub_8106230(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ eSlotMachine->winIn = 0x2f;
+ eSlotMachine->winOut = 0x3f;
+ eSlotMachine->win0v = 0x2088;
+ sprite->invisible = TRUE;
+ sprite->data[0]++;
+ // fallthrough
+ case 1:
+ sprite->data[1] += 2;
+ sprite->data[2] = sprite->data[1] + 0xb0;
+ sprite->data[3] = 0xf0 - sprite->data[1];
+ if (sprite->data[2] > 0xd0)
+ {
+ sprite->data[2] = 0xd0;
+ }
+ if (sprite->data[3] < 0xd0)
+ {
+ sprite->data[3] = 0xd0;
+ }
+ eSlotMachine->win0h = (sprite->data[2] << 8) | sprite->data[3];
+ if (sprite->data[1] > 0x33)
+ {
+ sprite->data[0]++;
+ eSlotMachine->winIn = 0x3f;
+ }
+ break;
+ case 2:
+ if (eSlotMachine->bet == 0)
+ {
+ break;
+ }
+ sub_8104D30(5, SpriteCallbackDummy, 0xd0, 0x74, 0);
+ eSlotMachine->win0h = 0xc0e0;
+ eSlotMachine->win0v = 0x6880;
+ eSlotMachine->winIn = 0x2f;
+ sprite->data[0]++;
+ sprite->data[1] = 0;
+ // fallthrough
+ case 3:
+ sprite->data[1] += 2;
+ sprite->data[2] = sprite->data[1] + 0xc0;
+ sprite->data[3] = 0xe0 - sprite->data[1];
+ if (sprite->data[2] > 0xd0)
+ {
+ sprite->data[2] = 0xd0;
+ }
+ if (sprite->data[3] < 0xd0)
+ {
+ sprite->data[3] = 0xd0;
+ }
+ eSlotMachine->win0h = (sprite->data[2] << 8) | sprite->data[3];
+ if (sprite->data[1] > 0x0f)
+ {
+ sprite->data[0]++;
+ eSlotMachine->winIn = 0x3f;
+ }
+ break;
+ }
+}
+
+static void nullsub_70(void)
+{
+
+}
+
+static void sub_8106364(void)
+{
+ REG_MOSAIC = 0;
+}
+
+static const u16 *const gUnknown_083EDE20;
+
+static void sub_8106370(void)
+{
+ LoadPalette(gUnknown_083EDE20, (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20);
+}
+
+static void sub_810639C(void)
+{
+ eSlotMachine->win0h = 0xf0;
+ eSlotMachine->win0v = 0xa0;
+ eSlotMachine->winIn = 0x3f;
+ eSlotMachine->winOut = 0x3f;
+}
+
+static const u8 sReelTimeGfx[];
+static const struct SpriteSheet sSlotMachineSpriteSheets[];
+static const struct SpritePalette gSlotMachineSpritePalettes[];
+
+static void sub_81063C0(void)
+{
+ sub_8106404();
+ LZDecompressWram(gSlotMachineReelTimeLights_Gfx, eSlotMachineGfxBuffer);
+ LZDecompressWram(sReelTimeGfx, eSlotMachineReelTimeGfxBuffer);
+ LoadSpriteSheets(sSlotMachineSpriteSheets);
+ LoadSpritePalettes(gSlotMachineSpritePalettes);
+}
+
+static const u8 *const gUnknown_083EDCE4;
+static const struct SpriteSheet gUnknown_083EDCDC;
+
+static void sub_8106404(void)
+{
+ u8 *dest = eSlotMachineGfxBuffer;
+ u8 i = 0;
+ const struct SpriteSheet *sheet = &gUnknown_083EDCDC;
+ const u8 *src = gUnknown_083EDCE4;
+ for (i = 0; i < 0x40; i++)
+ {
+ u8 j;
+ for (j = 0; j < 0x20; j++, dest++)
+ {
+ *dest = src[j];
+ }
+ }
+ LoadSpriteSheet(sheet);
+}
+
+static void sub_8106448(void) {
u32 offsetRead, offsetWrite;
u32 size;
- LZDecompressWram(gSlotMachine_Gfx, ewram10000_2);
+ LZDecompressWram(gSlotMachine_Gfx, eSlotMachineGfxBuffer);
- offsetRead = (u32)ewram10000_2;
+ offsetRead = (u32)eSlotMachineGfxBuffer;
offsetWrite = BG_VRAM;
size = SLOTMACHINE_GFX_TILES * 32;
while (TRUE)
@@ -92,7 +3926,7 @@ void sub_8106448(void) {
LoadPalette(gPalette_83EDE24, 208, 32);
}
-void sub_81064B8(void) {
+static void sub_81064B8(void) {
CpuCopy16(gUnknown_08E95AB8, BG_SCREEN_ADDR(29), 20 * 32 * 2);
LoadSlotMachineWheelOverlay();
}
@@ -123,7 +3957,7 @@ static void LoadSlotMachineWheelOverlay(void) {
}
}
-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) {
u16 *vram = BG_SCREEN_ADDR(29);
vram[15 * 32 + arg0] = arg1;
@@ -132,7 +3966,7 @@ void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) {
vram[16 * 32 + 1 + arg0] = arg4;
}
-void sub_81065DC(void) {
+static void sub_81065DC(void) {
s16 y, x;
u16 *screen;
@@ -147,3 +3981,1433 @@ void sub_81065DC(void) {
}
}
}
+
+static const u8 sReelSymbols[][21] = {
+ {
+ SLOT_MACHINE_TAG_7_RED,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_7_BLUE,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_7_RED,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_7_BLUE,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_REPLAY
+ }, {
+ SLOT_MACHINE_TAG_7_RED,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_7_BLUE,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_CHERRY
+ }, {
+ SLOT_MACHINE_TAG_7_RED,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_7_BLUE,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_REPLAY,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_CHERRY
+ }
+};
+
+static const u8 gUnknown_083ECCF1[] = {
+ 1, 0, 5, 4, 3, 2
+};
+
+static const s16 gUnknown_083ECCF8[][2] = {
+ {0, 6},
+ {0, 10},
+ {0, 2}
+};
+
+static const u8 gUnknown_083ECD04[][3] = {
+ {1, 1, 12},
+ {1, 1, 14},
+ {2, 2, 14},
+ {2, 2, 14},
+ {2, 3, 16},
+ {3, 3, 16}
+};
+
+static const u8 gUnknown_083ECD16[][6] = {
+ {25, 25, 30, 40, 40, 50},
+ {25, 25, 30, 30, 35, 35},
+ {25, 25, 30, 25, 25, 30}
+};
+
+static const u8 gUnknown_083ECD28[][6] = {
+ {20, 25, 25, 20, 25, 25},
+ {12, 15, 15, 18, 19, 22},
+ {25, 25, 25, 30, 30, 40},
+ {25, 25, 20, 20, 15, 15},
+ {40, 40, 35, 35, 40, 40}
+};
+
+static const u8 gUnknown_083ECD46[][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},
+ { 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 45, 45, 45, 100},
+ { 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 5, 5, 100},
+ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6}
+};
+
+static const u8 gUnknown_083ECDAC[][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},
+ { 2, 2, 2, 3, 3, 3, 3, 30, 30, 30, 30, 30, 30, 100, 100, 100, 50},
+ { 1, 1, 1, 2, 2, 2, 2, 30, 30, 30, 30, 30, 30, 40, 40, 40, 100},
+ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 60}
+};
+
+static const u16 gUnknown_083ECE12[] = {
+ 0x80, 0xaf, 0xc8, 0xe1, 0x100
+};
+
+static const u16 gUnknown_083ECE1C[][2] = {
+ {10, 5},
+ {10, 10},
+ {10, 15},
+ {10, 25},
+ {10, 35}
+};
+
+static const u16 gUnknown_083ECE30[] = {
+ 0, 5, 10, 15, 20
+};
+
+
+static const u8 gUnknown_083ECE3A[] = {
+ 6, 4, 3, 2, 5, 0, 0, 0
+};
+
+static const u16 gUnknown_083ECE42[] = {
+ 0x80, 0x20, 0x40
+};
+
+static const u16 gUnknown_083ECE48[] = {
+ 0x10, 0x08, 0x04, 0x02, 0x01
+};
+
+static const u8 sSym2Match[] = {
+ SLOT_MACHINE_MATCHED_777_RED,
+ SLOT_MACHINE_MATCHED_777_BLUE,
+ SLOT_MACHINE_MATCHED_AZURILL,
+ SLOT_MACHINE_MATCHED_LOTAD,
+ SLOT_MACHINE_MATCHED_1CHERRY,
+ SLOT_MACHINE_MATCHED_POWER,
+ SLOT_MACHINE_MATCHED_REPLAY
+};
+
+static const u16 sSlotMatchFlags[] = {
+ 1 << SLOT_MACHINE_MATCHED_1CHERRY,
+ 1 << SLOT_MACHINE_MATCHED_2CHERRY,
+ 1 << SLOT_MACHINE_MATCHED_REPLAY,
+ 1 << SLOT_MACHINE_MATCHED_LOTAD,
+ 1 << SLOT_MACHINE_MATCHED_AZURILL,
+ 1 << SLOT_MACHINE_MATCHED_POWER,
+ 1 << SLOT_MACHINE_MATCHED_777_MIXED,
+ 1 << SLOT_MACHINE_MATCHED_777_RED,
+ 1 << SLOT_MACHINE_MATCHED_777_BLUE
+};
+
+static const u16 sSlotPayouts[] = {
+ 2, 4, 0, 6, 12, 3, 90, 300, 300
+};
+
+static const s16 gUnknown_083ECE7E[][2] = {
+ { 0xd0, 0x38},
+ { 0xb8, 0x00},
+ { 0xc8, 0x08},
+ { 0xd8, 0x10},
+ { 0xe8, 0x18},
+ { 0xd0, 0x48},
+ { 0xd0, 0x08},
+ { 0xd0, 0x40},
+ { 0xd0, 0x38},
+ { 0xc0, 0x58},
+ { 0xe0, 0x58},
+ { 0xc0, 0x78},
+ { 0xe0, 0x78},
+ { 0x90, 0x38},
+ {0x110, 0x58},
+ { 0xa8, 0x70},
+ { 0xd0, 0x54},
+ { 0xd0, 0x70},
+ { 0xbc, 0x34},
+ { 0xd0, 0x34},
+ { 0xe4, 0x34},
+ { 0xb8, 0x48},
+ { 0xc4, 0x48},
+ { 0xd0, 0x48},
+ { 0xdc, 0x48},
+ { 0xe8, 0x48},
+ { 0xbc, 0x34},
+ { 0xd0, 0x34},
+ { 0xe4, 0x34},
+ { 0xb8, 0x48},
+ { 0xc4, 0x48},
+ { 0xd0, 0x48},
+ { 0xdc, 0x48},
+ { 0xe8, 0x48},
+ { 0x00, 0x00}
+};
+
+static const SpriteCallback gUnknown_083ECF0C[] = {
+ sub_8105C64,
+ sub_8105F54,
+ sub_8105F54,
+ sub_8105F54,
+ sub_8105F54,
+ sub_8105F9C,
+ sub_8105EB4,
+ sub_8105C64,
+ sub_8105C64,
+ sub_8105C6C,
+ sub_8105CF0,
+ sub_8105D08,
+ sub_8105D20,
+ sub_8105D3C,
+ sub_8105DA4,
+ sub_8105E08,
+ sub_8105C64,
+ sub_8106058,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81060FC,
+ sub_81061C8,
+ sub_81061C8,
+ sub_81061C8,
+ sub_81061C8,
+ sub_81061C8,
+ sub_81061C8,
+ sub_81061C8,
+ sub_81061C8,
+ sub_8106230
+};
+
+static const struct UnkStruct1 Unknown_83ECF98[] = {
+ {25, 34, 0},
+ {2, 0, 0},
+ {9, 16, 0},
+ {255, 0, 0}
+};
+
+static const struct UnkStruct1 Unknown_83ECFA8[] = {
+ {10, 1, 0},
+ {11, 2, 0},
+ {12, 3, 0},
+ {13, 4, 0},
+ {5, 5, 0},
+ {8, 6, 0},
+ {255, 0, 0}
+};
+
+static const struct UnkStruct1 Unknown_83ECFC4[] = {
+ {3, 7, 0},
+ {8, 17, 0},
+ {255, 0, 0}
+};
+
+static const struct UnkStruct1 Unknown_83ECFD0[] = {
+ {4, 8, 0},
+ {6, 9, 0},
+ {6, 10, 1},
+ {6, 11, 2},
+ {6, 12, 3},
+ {255, 0, 0}
+};
+
+static const struct UnkStruct1 Unknown_83ECFE8[] = {
+ {0, 13, 0},
+ {1, 14, 0},
+ {7, 15, 0},
+ {255, 0, 0}
+};
+
+static const struct UnkStruct1 Unknown_83ECFF8[] = {
+ {19, 26, 0},
+ {20, 27, 1},
+ {21, 28, 2},
+ {14, 29, 3},
+ {15, 30, 4},
+ {16, 31, 5},
+ {17, 32, 6},
+ {18, 33, 7},
+ {8, 17, 0},
+ {255, 0, 0}
+};
+
+static const struct UnkStruct1 Unknown_83ED020[] = {
+ {22, 18, 0},
+ {23, 19, 1},
+ {24, 20, 2},
+ {14, 21, 3},
+ {15, 22, 4},
+ {16, 23, 5},
+ {17, 24, 6},
+ {18, 25, 7},
+ {8, 17, 0},
+ {255, 0, 0}
+};
+
+static const struct UnkStruct1 *const gUnknown_083ED048[] = {
+ Unknown_83ECF98,
+ Unknown_83ECFA8,
+ Unknown_83ECFC4,
+ Unknown_83ECFD0,
+ Unknown_83ECFE8,
+ Unknown_83ED020,
+ Unknown_83ECFF8
+};
+
+static void (*const gUnknown_083ED064[])(void) = {
+ sub_810639C,
+ sub_8106364,
+ sub_8106370,
+ nullsub_70,
+ nullsub_70,
+ sub_8106370,
+ sub_8106370
+};
+
+
+static const struct OamData gOamData_83ED080 = {
+ .y = 0x0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_SQUARE,
+ .x = 0x0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0x0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData gOamData_83ED088 = {
+ .y = 0x0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_V_RECTANGLE,
+ .x = 0x0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0x0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData gOamData_83ED090 = {
+ .y = 0x0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_SQUARE,
+ .x = 0x0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0x0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData gOamData_83ED098 = {
+ .y = 0x0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_V_RECTANGLE,
+ .x = 0x0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0x0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData gOamData_83ED0A0 = {
+ .y = 0x0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_SQUARE,
+ .x = 0x0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0x0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData gOamData_83ED0A8 = {
+ .y = 0x0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_V_RECTANGLE,
+ .x = 0x0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0x0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData gOamData_83ED0B0 = {
+ .y = 0x0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_H_RECTANGLE,
+ .x = 0x0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0x0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData gOamData_83ED0B8 = {
+ .y = 0x0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_SQUARE,
+ .x = 0x0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0x0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED0C0[] = {
+ {eSlotMachineReelTimeGfxBuffer + 0x0000, 0x800},
+ {eSlotMachineReelTimeGfxBuffer + 0x0800, 0x800},
+ {eSlotMachineReelTimeGfxBuffer + 0x1000, 0x800},
+ {eSlotMachineReelTimeGfxBuffer + 0x1800, 0x800},
+ {eSlotMachineReelTimeGfxBuffer + 0x2000, 0x800}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED0E8[] = {
+ {eSlotMachineReelTimeGfxBuffer + 0x2800, 0x300}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED0F0[] = {
+ {eSlotMachineReelTimeGfxBuffer + 0x2B00, 0x500}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED0F8[] = {
+ {eSlotMachineReelTimeGfxBuffer + 0x3000, 0x600}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED100[] = {
+ {gSpriteImage_8E988E8, 0x80},
+ {gSpriteImage_8E98968, 0x80},
+ {gSpriteImage_8E989E8, 0x80},
+ {gSpriteImage_8E98A68, 0x80},
+ {gSpriteImage_8E98AE8, 0x80},
+ {gSpriteImage_8E98B68, 0x80}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED130[] = {
+ {gSpriteImage_8E991E8, 0x200}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED138[] = {
+ {gSpriteImage_8E99808, 0x40}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED140[] = {
+ {gSpriteImage_8E98BE8, 0x100},
+ {gSpriteImage_8E98CE8, 0x100}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED150[] = {
+ {gSpriteImage_8E993E8, 0x400}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED158[] = {
+ {gSpriteImage_8E98DE8, 0x200},
+ {gSpriteImage_8E98FE8, 0x200}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED168[] = {
+ {gSpriteImage_8E98848, 0x20}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED170[] = {
+ {gSpriteImage_8E98868, 0x80}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED178[] = {
+ {eSlotMachineGfxBuffer + 0x0000, 0x600}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED180[] = {
+ {eSlotMachineGfxBuffer + 0x0600, 0x200}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED188[] = {
+ {eSlotMachineGfxBuffer + 0x0800, 0x200}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED190[] = {
+ {eSlotMachineGfxBuffer + 0x0A00, 0x200}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED198[] = {
+ {eSlotMachineGfxBuffer + 0x0C00, 0x300}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED1A0[] = {
+ {eSlotMachineGfxBuffer + 0x1000, 0x400}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED1A8[] = {
+ {eSlotMachineGfxBuffer + 0x1400, 0x200}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED1B0[] = {
+ {eSlotMachineGfxBuffer + 0x1600, 0x300}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED1B8[] = {
+ {eSlotMachineGfxBuffer + 0x1900, 0x300}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED1C0[] = {
+ {eSlotMachineGfxBuffer + 0x1C00, 0x200},
+ {eSlotMachineGfxBuffer + 0x1E00, 0x200},
+ {eSlotMachineGfxBuffer + 0x1E00, 0x200} // is this a typo?
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED1D8[] = {
+ {eSlotMachineGfxBuffer + 0x2000, 0x280}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED1E0[] = {
+ {eSlotMachineGfxBuffer + 0x2280, 0x80},
+ {eSlotMachineGfxBuffer + 0x2300, 0x80},
+ {eSlotMachineGfxBuffer + 0x2380, 0x80},
+ {eSlotMachineGfxBuffer + 0x2400, 0x80},
+ {eSlotMachineGfxBuffer + 0x2480, 0x80}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED208[] = {
+ {eSlotMachineGfxBuffer + 0x2600, 0x480},
+ {eSlotMachineGfxBuffer + 0x2A80, 0x480}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED218[] = {
+ {eSlotMachineGfxBuffer + 0x2F00, 0x180},
+ {eSlotMachineGfxBuffer + 0x3080, 0x180}
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83ED228[] = {
+ {gSpriteImage_8E98828, 0x20}
+};
+
+static const union AnimCmd gSpriteAnim_83ED230[] = {
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED238[] = {
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED240[] = {
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED248[] = {
+ ANIMCMD_FRAME(1, 16),
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED254[] = {
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED260[] = {
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED26C[] = {
+ ANIMCMD_FRAME(2, 32),
+ ANIMCMD_FRAME(3, 32),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED278[] = {
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED280[] = {
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED288[] = {
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED290[] = {
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED298[] = {
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED2A0[] = {
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED2A8[] = {
+ ANIMCMD_FRAME(5, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED2B0[] = {
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED2BC[] = {
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_FRAME(1, 16),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED2C8[] = {
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_FRAME(1, 30),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED2D4[] = {
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED2DC[] = {
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_FRAME(1, 30),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED2E8[] = {
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_FRAME(1, 16),
+ ANIMCMD_FRAME(0, 16),
+ ANIMCMD_FRAME(1, 16, .hFlip = TRUE),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gSpriteAnim_83ED2FC[] = {
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED304[] = {
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED30C[] = {
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED314[] = {
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED31C[] = {
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83ED324[] = {
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED32C[] = {
+ gSpriteAnim_83ED230
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED330[] = {
+ gSpriteAnim_83ED238
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED334[] = {
+ gSpriteAnim_83ED240,
+ gSpriteAnim_83ED248,
+ gSpriteAnim_83ED254,
+ gSpriteAnim_83ED260,
+ gSpriteAnim_83ED26C,
+ gSpriteAnim_83ED278
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED34C[] = {
+ gSpriteAnim_83ED280,
+ gSpriteAnim_83ED288,
+ gSpriteAnim_83ED290,
+ gSpriteAnim_83ED298,
+ gSpriteAnim_83ED2A0,
+ gSpriteAnim_83ED2A8
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED364[] = {
+ gSpriteAnim_83ED2B0
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED368[] = {
+ gSpriteAnim_83ED2BC
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED36C[] = {
+ gSpriteAnim_83ED2C8,
+ gSpriteAnim_83ED2D4
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED374[] = {
+ gSpriteAnim_83ED2DC
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED378[] = {
+ gSpriteAnim_83ED2E8,
+ gSpriteAnim_83ED2FC
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83ED380[] = {
+ gSpriteAnim_83ED304,
+ gSpriteAnim_83ED30C,
+ gSpriteAnim_83ED314,
+ gSpriteAnim_83ED31C,
+ gSpriteAnim_83ED324
+};
+
+static const union AffineAnimCmd gSpriteAffineAnim_83ED394[] = {
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0x1, 0x1, 0, 1),
+ AFFINEANIMCMD_LOOP(255),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_83ED3BC[] = {
+ gSpriteAffineAnim_83ED394
+};
+
+static const union AffineAnimCmd gSpriteAffineAnim_83ED3C0[] = {
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 32),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 6, 32),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 12, 2),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -12, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 12, 2),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 12, 2),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -12, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 12, 2),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_83ED410[] = {
+ gSpriteAffineAnim_83ED3C0
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED414 = {
+ 0, 0, &gOamData_83ED0A0, gSpriteAnimTable_83ED32C, NULL, gDummySpriteAffineAnimTable, sub_8104F18
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED42C = {
+ 7, 4, &gOamData_83ED088, gSpriteAnimTable_83ED32C, NULL, gDummySpriteAffineAnimTable, sub_810506C
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED444 = {
+ 17, 0, &gOamData_83ED0B8, gSpriteAnimTable_83ED32C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED45C = {
+ 0xFFFF, 1, &gOamData_83ED0B8, gSpriteAnimTable_83ED334, gSpriteImageTable_83ED0C0, gDummySpriteAffineAnimTable, sub_8105170
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED474 = {
+ 0xFFFF, 2, &gOamData_83ED088, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED0E8, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED48C = {
+ 0xFFFF, 3, &gOamData_83ED088, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED0F0, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED4A4 = {
+ 0xFFFF, 3, &gOamData_83ED088, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED0F8, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED4BC = {
+ 0xFFFF, 4, &gOamData_83ED090, gSpriteAnimTable_83ED34C, gSpriteImageTable_83ED100, gDummySpriteAffineAnimTable, sub_810535C
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED4D4 = {
+ 0xFFFF, 4, &gOamData_83ED090, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED130, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED4EC = {
+ 0xFFFF, 4, &gOamData_83ED090, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED138, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED504 = {
+ 0xFFFF, 4, &gOamData_83ED098, gSpriteAnimTable_83ED364, gSpriteImageTable_83ED140, gDummySpriteAffineAnimTable, sub_810562C
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED51C = {
+ 0xFFFF, 7, &gOamData_83ED0A8, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED150, gDummySpriteAffineAnimTable, sub_8105784
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED534 = {
+ 0xFFFF, 5, &gOamData_83ED0A0, gSpriteAnimTable_83ED368, gSpriteImageTable_83ED158, gDummySpriteAffineAnimTable, sub_8105894
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED54C = {
+ 0xFFFF, 4, &gOamData_83ED080, gSpriteAnimTable_83ED330, gSpriteImageTable_83ED168, gDummySpriteAffineAnimTable, sub_810594C
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED564 = {
+ 0xFFFF, 4, &gOamData_83ED090, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED170, gSpriteAffineAnimTable_83ED3BC, sub_8105A38
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED57C = {
+ 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED178, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED594 = {
+ 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED180, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED5AC = {
+ 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED188, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED5C4 = {
+ 18, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED190, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED5DC = {
+ 0xFFFF, 6, &gOamData_83ED0B0, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED198, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED5F4 = {
+ 0xFFFF, 6, &gOamData_83ED0B0, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1A0, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED60C = {
+ 19, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1A8, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED624 = {
+ 20, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1B0, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED63C = {
+ 21, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1B8, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED654 = {
+ 0xFFFF, 6, &gOamData_83ED0A0, gSpriteAnimTable_83ED36C, gSpriteImageTable_83ED1C0, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED66C = {
+ 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1D8, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED684 = {
+ 0xFFFF, 6, &gOamData_83ED090, gSpriteAnimTable_83ED380, gSpriteImageTable_83ED1E0, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED69C = {
+ 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED378, gSpriteImageTable_83ED208, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED6B4 = {
+ 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED374, gSpriteImageTable_83ED218, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83ED6CC = {
+ 0xFFFF, 4, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED228, gSpriteAffineAnimTable_83ED410, sub_8105B70
+};
+
+static const struct Subsprite gSubspriteTable_83ED6E4[] = {
+ {-64, -64, ST_OAM_SQUARE, 3, 0x0, 3},
+ {0, -64, ST_OAM_SQUARE, 3, 0x0, 3},
+ {-64, 0, ST_OAM_SQUARE, 3, 0x0, 3},
+ {0, 0, ST_OAM_SQUARE, 3, 0x0, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED704[] = {
+ {4, gSubspriteTable_83ED6E4}
+};
+
+static const struct Subsprite gSubspriteTable_83ED70C[] = {
+ {-32, -12, ST_OAM_H_RECTANGLE, 1, 0x0, 1},
+ {0, -12, ST_OAM_H_RECTANGLE, 1, 0x4, 1},
+ {-32, -4, ST_OAM_H_RECTANGLE, 1, 0x8, 1},
+ {0, -4, ST_OAM_H_RECTANGLE, 1, 0xc, 1},
+ {-32, 4, ST_OAM_H_RECTANGLE, 1, 0x10, 1},
+ {0, 4, ST_OAM_H_RECTANGLE, 1, 0x14, 1}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED73C[] = {
+ {6, gSubspriteTable_83ED70C}
+};
+
+static const struct Subsprite gSubspriteTable_83ED744[] = {
+ {-32, -20, ST_OAM_H_RECTANGLE, 3, 0x0, 1},
+ {-32, 12, ST_OAM_H_RECTANGLE, 1, 0x20, 1},
+ {0, 12, ST_OAM_H_RECTANGLE, 1, 0x24, 1}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED75C[] = {
+ {3, gSubspriteTable_83ED744}
+};
+
+static const struct Subsprite gSubspriteTable_83ED764[] = {
+ {-32, -24, ST_OAM_H_RECTANGLE, 3, 0x0, 1},
+ {-32, 8, ST_OAM_H_RECTANGLE, 1, 0x20, 1},
+ {0, 8, ST_OAM_H_RECTANGLE, 1, 0x24, 1},
+ {-32, 16, ST_OAM_H_RECTANGLE, 1, 0x28, 1},
+ {0, 16, ST_OAM_H_RECTANGLE, 1, 0x2c, 1}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED78C[] = {
+ {5, gSubspriteTable_83ED764}
+};
+
+static const struct Subsprite gSubspriteTable_83ED794[] = {
+ {-32, -8, ST_OAM_H_RECTANGLE, 1, 0x0, 1},
+ {0, -8, ST_OAM_H_RECTANGLE, 1, 0x4, 1},
+ {-32, 0, ST_OAM_H_RECTANGLE, 1, 0x8, 1},
+ {0, 0, ST_OAM_H_RECTANGLE, 1, 0xc, 1}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED7B4[] = {
+ {4, gSubspriteTable_83ED794}
+};
+
+static const struct Subsprite gSubspriteTable_83ED7BC[] = {
+ {-8, -12, ST_OAM_H_RECTANGLE, 0, 0x0, 1},
+ {-8, -4, ST_OAM_H_RECTANGLE, 0, 0x0, 1},
+ {-8, 4, ST_OAM_H_RECTANGLE, 0, 0x0, 1}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED7D4[] = {
+ {3, gSubspriteTable_83ED7BC}
+};
+
+static const struct Subsprite gSubspriteTable_83ED7DC[] = {
+ {-32, -24, ST_OAM_H_RECTANGLE, 3, 0x0, 3},
+ {-32, 8, ST_OAM_H_RECTANGLE, 1, 0x20, 3},
+ {0, 8, ST_OAM_H_RECTANGLE, 1, 0x24, 3},
+ {-32, 16, ST_OAM_H_RECTANGLE, 1, 0x28, 3},
+ {0, 16, ST_OAM_H_RECTANGLE, 1, 0x2c, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED804[] = {
+ {5, gSubspriteTable_83ED7DC}
+};
+
+static const struct Subsprite gSubspriteTable_83ED80C[] = {
+ {-32, -8, ST_OAM_H_RECTANGLE, 1, 0x0, 3},
+ {0, -8, ST_OAM_H_RECTANGLE, 1, 0x4, 3},
+ {-32, 0, ST_OAM_H_RECTANGLE, 1, 0x8, 3},
+ {0, 0, ST_OAM_H_RECTANGLE, 1, 0xc, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED82C[] = {
+ {4, gSubspriteTable_83ED80C}
+};
+
+static const struct Subsprite gSubspriteTable_83ED834[] = {
+ {-32, -8, ST_OAM_H_RECTANGLE, 1, 0x0, 3},
+ {0, -8, ST_OAM_H_RECTANGLE, 1, 0x4, 3},
+ {-32, 0, ST_OAM_H_RECTANGLE, 1, 0x8, 3},
+ {0, 0, ST_OAM_H_RECTANGLE, 1, 0xc, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED854[] = {
+ {4, gSubspriteTable_83ED834}
+};
+
+static const struct Subsprite gSubspriteTable_83ED85C[] = {
+ {-32, -8, ST_OAM_H_RECTANGLE, 1, 0x0, 3},
+ {0, -8, ST_OAM_H_RECTANGLE, 1, 0x4, 3},
+ {-32, 0, ST_OAM_H_RECTANGLE, 1, 0x8, 3},
+ {0, 0, ST_OAM_H_RECTANGLE, 1, 0xc, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED87C[] = {
+ {4, gSubspriteTable_83ED85C}
+};
+
+static const struct Subsprite gSubspriteTable_83ED884[] = {
+ {-32, -12, ST_OAM_H_RECTANGLE, 1, 0x0, 3},
+ {0, -12, ST_OAM_H_RECTANGLE, 1, 0x4, 3},
+ {-32, -4, ST_OAM_H_RECTANGLE, 1, 0x8, 3},
+ {0, -4, ST_OAM_H_RECTANGLE, 1, 0xc, 3},
+ {-32, 4, ST_OAM_H_RECTANGLE, 1, 0x10, 3},
+ {0, 4, ST_OAM_H_RECTANGLE, 1, 0x14, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED8B4[] = {
+ {6, gSubspriteTable_83ED884}
+};
+
+static const struct Subsprite gSubspriteTable_83ED8BC[] = {
+ {-16, -16, ST_OAM_SQUARE, 2, 0x0, 3}
+};
+
+static const struct Subsprite gSubspriteTable_83ED8C4[] = {
+ {-8, -8, ST_OAM_SQUARE, 1, 0x10, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED8CC[] = {
+ {1, gSubspriteTable_83ED8BC},
+ {1, gSubspriteTable_83ED8C4}
+};
+
+static const struct Subsprite gSubspriteTable_83ED8DC[] = {
+ {-24, -24, ST_OAM_H_RECTANGLE, 1, 0x0, 3},
+ {8, -24, ST_OAM_H_RECTANGLE, 0, 0x4, 3},
+ {-24, -16, ST_OAM_H_RECTANGLE, 1, 0x6, 3},
+ {8, -16, ST_OAM_H_RECTANGLE, 0, 0xa, 3},
+ {-24, -8, ST_OAM_H_RECTANGLE, 1, 0xc, 3},
+ {8, -8, ST_OAM_H_RECTANGLE, 0, 0x10, 3},
+ {-24, 0, ST_OAM_H_RECTANGLE, 1, 0x12, 3},
+ {8, 0, ST_OAM_H_RECTANGLE, 0, 0x16, 3},
+ {-24, 8, ST_OAM_H_RECTANGLE, 1, 0x18, 3},
+ {8, 8, ST_OAM_H_RECTANGLE, 0, 0x1c, 3},
+ {-24, 16, ST_OAM_H_RECTANGLE, 1, 0x1e, 3},
+ {8, 16, ST_OAM_H_RECTANGLE, 0, 0x22, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED93C[] = {
+ 12, gSubspriteTable_83ED8DC
+};
+
+static const struct Subsprite gSubspriteTable_83ED944[] = {
+ {-16, -12, ST_OAM_H_RECTANGLE, 2, 0x0, 3},
+ {-16, 4, ST_OAM_H_RECTANGLE, 0, 0x8, 3},
+ {0, 4, ST_OAM_H_RECTANGLE, 0, 0xa, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED95C[] = {
+ {3, gSubspriteTable_83ED944}
+};
+
+static const struct Subsprite gSubspriteTable_83ED964[] = {
+ {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x0, 3},
+ {-8, 0, ST_OAM_H_RECTANGLE, 0, 0x8, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED974[] = {
+ {2, gSubspriteTable_83ED964}
+};
+
+static const struct Subsprite gSubspriteTable_83ED97C[] = {
+ {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x2, 3},
+ {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xa, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED98C[] = {
+ {2, gSubspriteTable_83ED97C}
+};
+
+static const struct Subsprite gSubspriteTable_83ED994[] = {
+ {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x4, 3},
+ {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xc, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED9A4[] = {
+ {2, gSubspriteTable_83ED994}
+};
+
+static const struct Subsprite gSubspriteTable_83ED9AC[] = {
+ {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x6, 3},
+ {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xe, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED9BC[] = {
+ {2, gSubspriteTable_83ED9AC}
+};
+
+static const struct Subsprite gSubspriteTable_83ED9C4[] = {
+ {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x0, 3},
+ {-8, 0, ST_OAM_H_RECTANGLE, 0, 0x8, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED9D4[] = {
+ {2, gSubspriteTable_83ED9C4}
+};
+
+static const struct Subsprite gSubspriteTable_83ED9DC[] = {
+ {-4, -8, ST_OAM_SQUARE, 0, 0x2, 3},
+ {-4, 0, ST_OAM_SQUARE, 0, 0xa, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83ED9EC[] = {
+ {2, gSubspriteTable_83ED9DC}
+};
+
+static const struct Subsprite gSubspriteTable_83ED9F4[] = {
+ {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x3, 3},
+ {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xb, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83EDA04[] = {
+ {2, gSubspriteTable_83ED9F4}
+};
+
+static const struct Subsprite gSubspriteTable_83EDA0C[] = {
+ {-4, -8, ST_OAM_SQUARE, 0, 0x5, 3},
+ {-4, 0, ST_OAM_SQUARE, 0, 0xd, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83EDA1C[] = {
+ {2, gSubspriteTable_83EDA0C}
+};
+
+static const struct Subsprite gSubspriteTable_83EDA24[] = {
+ {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x6, 3},
+ {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xe, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83EDA34[] = {
+ {2, gSubspriteTable_83EDA24}
+};
+
+static const struct Subsprite gSubspriteTable_83EDA3C[] = {
+ {-12, -12, ST_OAM_H_RECTANGLE, 0, 0x0, 3},
+ {4, -12, ST_OAM_SQUARE, 0, 0x2, 3},
+ {-12, -4, ST_OAM_H_RECTANGLE, 0, 0x8, 3},
+ {4, -4, ST_OAM_SQUARE, 0, 0xa, 3},
+ {-12, 4, ST_OAM_H_RECTANGLE, 0, 0x10, 3},
+ {4, 4, ST_OAM_SQUARE, 0, 0x12, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83EDA6C[] = {
+ {6, gSubspriteTable_83EDA3C}
+};
+
+static const struct Subsprite gSubspriteTable_83EDA74[] = {
+ {-8, -12, ST_OAM_H_RECTANGLE, 0, 0x3, 3},
+ {-8, -4, ST_OAM_H_RECTANGLE, 0, 0xb, 3},
+ {-8, 4, ST_OAM_H_RECTANGLE, 0, 0x13, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83EDA8C[] = {
+ {3, gSubspriteTable_83EDA74}
+};
+
+static const struct Subsprite gSubspriteTable_83EDA94[] = {
+ {-12, -12, ST_OAM_H_RECTANGLE, 0, 0x5, 3},
+ {4, -12, ST_OAM_SQUARE, 0, 0x7, 3},
+ {-12, -4, ST_OAM_H_RECTANGLE, 0, 0xd, 3},
+ {4, -4, ST_OAM_SQUARE, 0, 0xf, 3},
+ {-12, 4, ST_OAM_H_RECTANGLE, 0, 0x15, 3},
+ {4, 4, ST_OAM_SQUARE, 0, 0x17, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83EDAC4[] = {
+ {6, gSubspriteTable_83EDA94}
+};
+
+static const struct Subsprite gSubspriteTable_83EDACC[] = {
+ {-12, -12, ST_OAM_H_RECTANGLE, 0, 0x0, 3},
+ {4, -12, ST_OAM_SQUARE, 0, 0x2, 3},
+ {-12, -4, ST_OAM_H_RECTANGLE, 0, 0x8, 3},
+ {4, -4, ST_OAM_SQUARE, 0, 0xa, 3},
+ {-12, 4, ST_OAM_H_RECTANGLE, 0, 0x10, 3},
+ {4, 4, ST_OAM_SQUARE, 0, 0x12, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83EDAFC[] = {
+ {6, gSubspriteTable_83EDACC}
+};
+
+static const struct Subsprite gSubspriteTable_83EDB04[] = {
+ {-8, -12, ST_OAM_H_RECTANGLE, 0, 0x3, 3},
+ {-8, -4, ST_OAM_H_RECTANGLE, 0, 0xb, 3},
+ {-8, 4, ST_OAM_H_RECTANGLE, 0, 0x13, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83EDB1C[] = {
+ {3, gSubspriteTable_83EDB04}
+};
+
+static const struct Subsprite gSubspriteTable_83EDB24[] = {
+ {-12, -12, ST_OAM_H_RECTANGLE, 0, 0x5, 3},
+ {4, -12, ST_OAM_SQUARE, 0, 0x7, 3},
+ {-12, -4, ST_OAM_H_RECTANGLE, 0, 0xd, 3},
+ {4, -4, ST_OAM_SQUARE, 0, 0xf, 3},
+ {-12, 4, ST_OAM_H_RECTANGLE, 0, 0x15, 3},
+ {4, 4, ST_OAM_SQUARE, 0, 0x17, 3}
+};
+
+static const struct SubspriteTable gSubspriteTables_83EDB54[] = {
+ {6, gSubspriteTable_83EDB24}
+};
+
+static const struct SpriteTemplate *const gUnknown_083EDB5C[] = {
+ &gSpriteTemplate_83ED57C,
+ &gSpriteTemplate_83ED594,
+ &gSpriteTemplate_83ED5AC,
+ &gSpriteTemplate_83ED5DC,
+ &gSpriteTemplate_83ED5F4,
+ &gSpriteTemplate_83ED654,
+ &gSpriteTemplate_83ED66C,
+ &gSpriteTemplate_83ED684,
+ &gSpriteTemplate_83ED69C,
+ &gSpriteTemplate_83ED6B4,
+ &gSpriteTemplate_83ED5C4,
+ &gSpriteTemplate_83ED5C4,
+ &gSpriteTemplate_83ED5C4,
+ &gSpriteTemplate_83ED5C4,
+ &gSpriteTemplate_83ED60C,
+ &gSpriteTemplate_83ED60C,
+ &gSpriteTemplate_83ED60C,
+ &gSpriteTemplate_83ED60C,
+ &gSpriteTemplate_83ED60C,
+ &gSpriteTemplate_83ED624,
+ &gSpriteTemplate_83ED624,
+ &gSpriteTemplate_83ED624,
+ &gSpriteTemplate_83ED63C,
+ &gSpriteTemplate_83ED63C,
+ &gSpriteTemplate_83ED63C,
+ &gDummySpriteTemplate
+};
+
+static const struct SubspriteTable *const gUnknown_083EDBC4[] = {
+ gSubspriteTables_83ED804,
+ gSubspriteTables_83ED82C,
+ gSubspriteTables_83ED854,
+ gSubspriteTables_83ED8B4,
+ NULL,
+ NULL,
+ gSubspriteTables_83ED8CC,
+ NULL,
+ gSubspriteTables_83ED93C,
+ gSubspriteTables_83ED95C,
+ gSubspriteTables_83ED974,
+ gSubspriteTables_83ED98C,
+ gSubspriteTables_83ED9A4,
+ gSubspriteTables_83ED9BC,
+ gSubspriteTables_83ED9D4,
+ gSubspriteTables_83ED9EC,
+ gSubspriteTables_83EDA04,
+ gSubspriteTables_83EDA1C,
+ gSubspriteTables_83EDA34,
+ gSubspriteTables_83EDA6C,
+ gSubspriteTables_83EDA8C,
+ gSubspriteTables_83EDAC4,
+ gSubspriteTables_83EDAFC,
+ gSubspriteTables_83EDB1C,
+ gSubspriteTables_83EDB54,
+ NULL
+};
+
+static const struct SpriteSheet sSlotMachineSpriteSheets[] = {
+ {gSlotMachineReelSymbol1Tiles, 0x200, 0},
+ {gSlotMachineReelSymbol2Tiles, 0x200, 1},
+ {gSlotMachineReelSymbol3Tiles, 0x200, 2},
+ {gSlotMachineReelSymbol4Tiles, 0x200, 3},
+ {gSlotMachineReelSymbol5Tiles, 0x200, 4},
+ {gSlotMachineReelSymbol6Tiles, 0x200, 5},
+ {gSlotMachineReelSymbol7Tiles, 0x200, 6},
+ {gSlotMachineNumber0Tiles, 0x40, 7},
+ {gSlotMachineNumber1Tiles, 0x40, 8},
+ {gSlotMachineNumber2Tiles, 0x40, 9},
+ {gSlotMachineNumber3Tiles, 0x40, 10},
+ {gSlotMachineNumber4Tiles, 0x40, 11},
+ {gSlotMachineNumber5Tiles, 0x40, 12},
+ {gSlotMachineNumber6Tiles, 0x40, 13},
+ {gSlotMachineNumber7Tiles, 0x40, 14},
+ {gSlotMachineNumber8Tiles, 0x40, 15},
+ {gSlotMachineNumber9Tiles, 0x40, 16},
+ {eSlotMachineGfxBuffer + 0x0A00, 0x200, 18},
+ {eSlotMachineGfxBuffer + 0x1400, 0x200, 19},
+ {eSlotMachineGfxBuffer + 0x1600, 0x300, 20},
+ {eSlotMachineGfxBuffer + 0x1900, 0x300, 21},
+ {}
+};
+
+static const struct SpriteSheet gUnknown_083EDCDC = {
+ eSlotMachineGfxBuffer + 0x0000, 0x800, 17
+};
+
+static const u8 *const gUnknown_083EDCE4 = gUnknownPalette_08E997E8;
+
+#ifdef SAPPHIRE
+static const u16 UnknownPalette_83EDCE8[] = INCBIN_U16("graphics/unknown/sapphire_83EDD40.gbapal");
+#elif defined(RUBY)
+static const u16 UnknownPalette_83EDCE8[] = INCBIN_U16("graphics/unknown/ruby_83EDCE8.gbapal");
+#endif // RS
+
+static const u16 *const gUnknown_083EDD08[] = {
+ UnknownPalette_83EDCE8 + 10,
+ UnknownPalette_83EDCE8 + 11,
+ UnknownPalette_83EDCE8 + 12,
+ UnknownPalette_83EDCE8 + 13,
+ UnknownPalette_83EDCE8 + 14
+};
+
+static const u16 *const gUnknown_083EDD1C[] = {
+ gUnknown_08E95A18 + 74,
+ gUnknown_08E95A18 + 75,
+ gUnknown_08E95A18 + 76,
+ gUnknown_08E95A18 + 77,
+ gUnknown_08E95A18 + 78
+};
+
+static const u8 gUnknown_083EDD30[] = {
+ 0x4a, 0x4b, 0x4c, 0x4e, 0x4d
+};
+
+static const u8 gUnknown_083EDD35[][2] = {
+ {0, 0},
+ {1, 2},
+ {3, 4}
+};
+static const u8 gUnknown_083EDD3B[] = {1, 2, 2};
+
+#ifdef SAPPHIRE
+static const u16 Unknown_83EDD3E[] = INCBIN_U16("graphics/unknown/sapphire_83EDD96.gbapal");
+static const u16 Unknown_83EDD5E[] = INCBIN_U16("graphics/unknown/sapphire_83EDDB6.gbapal");
+static const u16 Unknown_83EDD7E[] = INCBIN_U16("graphics/unknown/sapphire_83EDDD6.gbapal");
+#elif defined (RUBY)
+static const u16 Unknown_83EDD3E[] = INCBIN_U16("graphics/unknown/ruby_83EDD3E.gbapal");
+static const u16 Unknown_83EDD5E[] = INCBIN_U16("graphics/unknown/ruby_83EDD5E.gbapal");
+static const u16 Unknown_83EDD7E[] = INCBIN_U16("graphics/unknown/ruby_83EDD7E.gbapal");
+#endif // RS
+
+static const u16 *const gUnknown_083EDDA0[] = {
+ Unknown_83EDD3E,
+ Unknown_83EDD5E,
+ Unknown_83EDD7E
+};
+
+static const u16 *const gUnknown_083EDDAC = gUnknown_08E95A18 + 16;
+
+static const u16 Palette_83EDDB0[] = INCBIN_U16("graphics/slot_machine/83EDDB0.gbapal");
+static const u16 Palette_83EDDD0[] = INCBIN_U16("graphics/slot_machine/83EDDD0.gbapal");
+static const u16 Palette_83EDDF0[] = INCBIN_U16("graphics/slot_machine/83EDDF0.gbapal");
+
+static const u16 *const gUnknown_083EDE10[] = {
+ Palette_83EDDB0,
+ Palette_83EDDD0,
+ Palette_83EDDF0,
+ gSlotMachineSpritePalette6
+};
+
+static const u16 *const gUnknown_083EDE20 = gSlotMachineSpritePalette6;
+
+static const u16 gPalette_83EDE24[] = INCBIN_U16("graphics/slot_machine/83EDE24_pal.bin");
+
+static const struct SpritePalette gSlotMachineSpritePalettes[] = {
+ {gSlotMachineSpritePalette0, 0},
+ {gSlotMachineSpritePalette1, 1},
+ {gSlotMachineSpritePalette2, 2},
+ {gSlotMachineSpritePalette3, 3},
+ {gSlotMachineSpritePalette4, 4},
+ {gSlotMachineSpritePalette5, 5},
+ {gSlotMachineSpritePalette6, 6},
+ {gSlotMachineSpritePalette4, 7},
+ {}
+};
+
+static const u8 sReelTimeGfx[] = INCBIN_U8("graphics/slot_machine/reel_time.4bpp.lz");
+
+static const u16 sReelTimeWindowTilemap[] = INCBIN_U16("graphics/slot_machine/reel_time_window_map.bin");
diff --git a/src/field/trainer_see.c b/src/field/trainer_see.c
index 38bc6971c..3034b2b65 100644
--- a/src/field/trainer_see.c
+++ b/src/field/trainer_see.c
@@ -9,14 +9,22 @@
#include "task.h"
#include "util.h"
+static bool8 CheckTrainer(u8);
+static void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3);
+static void objc_exclamation_mark_probably(struct Sprite *sprite);
+static bool8 TrainerCanApproachPlayer(struct MapObject *);
+static void sub_80842C8(struct MapObject *, u8);
+static bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject *trainerObj, u8 approachDistance, u8 direction);
+static void RunTrainerSeeFuncList(u8 taskId);
+
const u8 gSpriteImage_839B308[] = INCBIN_U8("graphics/unknown_sprites/839B4E0/0.4bpp");
const u8 gSpriteImage_839B388[] = INCBIN_U8("graphics/unknown_sprites/839B4E0/1.4bpp");
const u8 gSpriteImage_839B408[] = INCBIN_U8("graphics/unknown_sprites/839B408.4bpp");
-u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
-u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
-u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
-u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
+static u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
+static u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
+static u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
+static u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
static u8 (*const sDirectionalApproachDistanceFuncs[])(struct MapObject *, s16, s16, s16) =
{
@@ -26,9 +34,6 @@ static u8 (*const sDirectionalApproachDistanceFuncs[])(struct MapObject *, s16,
GetTrainerApproachDistanceEast,
};
-extern struct SpriteTemplate gSpriteTemplate_839B510;
-extern struct SpriteTemplate gSpriteTemplate_839B528;
-
bool8 CheckTrainers(void)
{
u8 mapObjId;
@@ -43,7 +48,7 @@ bool8 CheckTrainers(void)
return FALSE;
}
-bool8 CheckTrainer(u8 mapObjId)
+static bool8 CheckTrainer(u8 mapObjId)
{
u8 *scriptPtr = GetFieldObjectScriptPointerByFieldObjectId(mapObjId);
@@ -69,7 +74,7 @@ bool8 CheckTrainer(u8 mapObjId)
}
}
-bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj)
+static bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj)
{
s16 x, y;
u8 i;
@@ -79,14 +84,14 @@ bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj)
if (trainerObj->trainerType == 1) // can only see in one direction
{
approachDistance = sDirectionalApproachDistanceFuncs[trainerObj->mapobj_unk_18 - 1](trainerObj, trainerObj->trainerRange_berryTreeId, x, y);
- return CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, approachDistance, trainerObj->mapobj_unk_18);
+ return CheckPathBetweenTrainerAndPlayer(trainerObj, approachDistance, trainerObj->mapobj_unk_18);
}
else // can see in all directions
{
for (i = 0; i < 4; i++)
{
approachDistance = sDirectionalApproachDistanceFuncs[i](trainerObj, trainerObj->trainerRange_berryTreeId, x, y);
- if (CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, approachDistance, i + 1)) // directions are 1-4 instead of 0-3. south north west east
+ if (CheckPathBetweenTrainerAndPlayer(trainerObj, approachDistance, i + 1)) // directions are 1-4 instead of 0-3. south north west east
return approachDistance;
}
}
@@ -94,7 +99,7 @@ bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj)
}
// Returns how far south the player is from trainer. 0 if out of trainer's sight.
-u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+static u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
{
if (trainerObj->coords2.x == x
&& y > trainerObj->coords2.y
@@ -105,7 +110,7 @@ u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16
}
// Returns how far north the player is from trainer. 0 if out of trainer's sight.
-u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+static u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
{
if (trainerObj->coords2.x == x
&& y < trainerObj->coords2.y
@@ -116,7 +121,7 @@ u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16
}
// Returns how far west the player is from trainer. 0 if out of trainer's sight.
-u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+static u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
{
if (trainerObj->coords2.y == y
&& x < trainerObj->coords2.x
@@ -127,7 +132,7 @@ u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x
}
// Returns how far east the player is from trainer. 0 if out of trainer's sight.
-u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+static u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
{
if (trainerObj->coords2.y == y
&& x > trainerObj->coords2.x
@@ -143,7 +148,7 @@ u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x
#define COLLISION_MASK 1
#endif
-bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *trainerObj, u8 approachDistance, u8 direction)
+static bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject *trainerObj, u8 approachDistance, u8 direction)
{
s16 x, y;
u8 unk19_temp;
@@ -159,21 +164,21 @@ bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *trainerObj, u8 approac
for (i = 0; i <= approachDistance - 1; i++, MoveCoords(direction, &x, &y))
{
- collision = sub_8060024((struct MapObject *)trainerObj, x, y, direction);
+ collision = sub_8060024(trainerObj, x, y, direction);
if (collision != 0 && (collision & COLLISION_MASK))
return FALSE;
}
// preserve mapobj_unk_19 before clearing.
- unk19_temp = trainerObj->mapobj_unk_19;
- unk19b_temp = trainerObj->mapobj_unk_19b;
- trainerObj->mapobj_unk_19 = 0;
- trainerObj->mapobj_unk_19b = 0;
+ unk19_temp = trainerObj->range.as_nybbles.x;
+ unk19b_temp = trainerObj->range.as_nybbles.y;
+ trainerObj->range.as_nybbles.x = 0;
+ trainerObj->range.as_nybbles.y = 0;
collision = npc_block_way((struct MapObject *)trainerObj, x, y, direction);
- trainerObj->mapobj_unk_19 = unk19_temp;
- trainerObj->mapobj_unk_19b = unk19b_temp;
+ trainerObj->range.as_nybbles.x = unk19_temp;
+ trainerObj->range.as_nybbles.y = unk19b_temp;
if (collision == 4)
return approachDistance;
@@ -183,7 +188,7 @@ bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *trainerObj, u8 approac
#define tTrainerObjHi data[1]
#define tTrainerObjLo data[2]
-void sub_80842C8(struct MapObject *trainerObj, u8 b)
+static void sub_80842C8(struct MapObject *trainerObj, u8 b)
{
u8 taskId = CreateTask(RunTrainerSeeFuncList, 0x50);
struct Task *task = &gTasks[taskId];
@@ -193,7 +198,7 @@ void sub_80842C8(struct MapObject *trainerObj, u8 b)
task->data[3] = b;
}
-void sub_80842FC(TaskFunc followupFunc)
+static void sub_80842FC(TaskFunc followupFunc)
{
TaskFunc taskFunc = RunTrainerSeeFuncList;
u8 taskId = FindTaskIdByFunc(taskFunc);
@@ -232,7 +237,7 @@ static bool8 (*const gTrainerSeeFuncList[])(u8 taskId, struct Task *task, struct
sub_80846C8,
};
-void RunTrainerSeeFuncList(u8 taskId)
+static void RunTrainerSeeFuncList(u8 taskId)
{
struct Task *task = &gTasks[taskId];
struct MapObject *trainerObj = (struct MapObject *)((task->tTrainerObjHi << 16) | (task->tTrainerObjLo));
@@ -450,6 +455,41 @@ static void Task_DestroyTrainerApproachTask(u8 taskId)
EnableBothScriptContexts();
}
+static const struct OamData gOamData_839B4D8 = {
+ .size = 1, .priority = 1
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_839B4E0[] = {
+ { gSpriteImage_839B308, sizeof gSpriteImage_839B308 },
+ { gSpriteImage_839B388, sizeof gSpriteImage_839B388 }
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_839B4F0[] = {
+ { gSpriteImage_839B408, sizeof gSpriteImage_839B408 }
+};
+
+static const union AnimCmd gSpriteAnim_839B4F8[] = {
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_839B500[] = {
+ ANIMCMD_FRAME(1, 60),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gSpriteAnimTable_839B508[] = {
+ gSpriteAnim_839B4F8,
+ gSpriteAnim_839B500
+};
+
+static const struct SpriteTemplate gSpriteTemplate_839B510 = {
+ 0xffff, 0xffff, &gOamData_839B4D8, gSpriteAnimTable_839B508, gSpriteImageTable_839B4E0, gDummySpriteAffineAnimTable, objc_exclamation_mark_probably
+};
+static const struct SpriteTemplate gSpriteTemplate_839B528 = {
+ 0xffff, 4100, &gOamData_839B4D8, gSpriteAnimTable_839B508, gSpriteImageTable_839B4F0, gDummySpriteAffineAnimTable, objc_exclamation_mark_probably
+};
+
u8 FldEff_ExclamationMarkIcon1(void)
{
u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x53);
@@ -480,7 +520,7 @@ u8 FldEff_HeartIcon(void)
return 0;
}
-void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3)
+static void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3)
{
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = 1;
@@ -494,7 +534,7 @@ void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3)
StartSpriteAnim(sprite, a3);
}
-void objc_exclamation_mark_probably(struct Sprite *sprite)
+static void objc_exclamation_mark_probably(struct Sprite *sprite)
{
u8 mapObjId;
diff --git a/src/field/tv.c b/src/field/tv.c
index 1d5bf929c..d7a75a709 100644
--- a/src/field/tv.c
+++ b/src/field/tv.c
@@ -80,7 +80,7 @@ extern u16 gLastUsedItem;
static EWRAM_DATA u16 gUnknown_020387E0 = 0;
static EWRAM_DATA u16 gUnknown_020387E2 = 0;
static EWRAM_DATA u8 gUnknown_020387E4 = 0;
-static EWRAM_DATA ALIGNED(4) u8 gUnknown_020387E8 = 0; // why is this aligned to a 4-byte boundary?
+static EWRAM_DATA ALIGNED(4) u8 sTVShowState = 0; // why is this aligned to a 4-byte boundary?
static u8 gUnknown_03000720;
static u8 gUnknown_03000721;
@@ -436,8 +436,8 @@ void ClearTVShowData(void)
u8 showidx;
u8 extradataidx;
for (showidx=0; showidx<25; showidx++) {
- gSaveBlock1.tvShows[showidx].common.var00 = 0;
- gSaveBlock1.tvShows[showidx].common.var01 = 0;
+ gSaveBlock1.tvShows[showidx].common.kind = 0;
+ gSaveBlock1.tvShows[showidx].common.active = 0;
for (extradataidx=0; extradataidx<34; extradataidx++) {
gSaveBlock1.tvShows[showidx].common.pad02[extradataidx] = 0;
}
@@ -452,20 +452,20 @@ extern u8 gSpecialVar_ContestRank;
extern u8 gUnknown_03004316[11];
extern u8 gBattleOutcome;
-void sub_80BF334(void);
-void sub_80BF3A4(void);
-void sub_80BF3DC(void);
-void sub_80BF46C(void);
-void sub_80BF478(void);
-void sub_80BF484(void);
-void sub_80BF4BC(void);
+void InterviewBefore_FanClubLetter(void);
+void InterviewBefore_RecentHappenings(void);
+void InterviewBefore_PkmnFanClubOpinions(void);
+void InterviewBefore_Dummy(void);
+void InterviewBefore_NameRater(void);
+void InterviewBefore_BravoTrainerPkmnProfile(void);
+void InterviewBefore_BravoTrainerBTProfile(void);
void sub_80BE028(void);
void sub_80BE074(void);
void sub_80BE778(void);
void sub_80BEB20(void);
-u8 sub_80BFB54(u8);
+u8 GetTVChannelByShowType(u8);
s8 sub_80BF74C(TVShow tvShow[]);
@@ -476,53 +476,62 @@ void sub_80BE138(TVShow *show);
void sub_80BE160(TVShow *show);
extern u16 gLastUsedItem;
-void sub_80BE5FC(void);
-void sub_80BE65C(void);
-void sub_80BE6A0(void);
-void nullsub_21(void);
-void sub_80BE188(void);
-void sub_80BE320(void);
+void InterviewAfter_FanClubLetter(void);
+void InterviewAfter_RecentHappenings(void);
+void InterviewAfter_PkmnFanClubOpinions(void);
+void InterviewAfter_DummyShow4(void);
+void InterviewAfter_BravoTrainerPokemonProfile(void);
+void InterviewAfter_BravoTrainerBattleTowerProfile(void);
u8 special_0x44(void)
{
u8 i;
u8 j;
+ u8 selIdx;
+ TVShow *show;
-#ifndef NONMATCHING
- asm("":::"r5");
-#endif
-
- for (i = 5; i < 24; i++)
+ for (i = 5; i < ARRAY_COUNT(gSaveBlock1.tvShows) - 1; i++)
{
- if (gSaveBlock1.tvShows[i].common.var00 == 0)
+ if (gSaveBlock1.tvShows[i].common.kind == 0)
+ {
break;
+ }
}
- i = Random() % i;
- j = i;
+
+ j = Random() % i;
+ selIdx = j;
+
do
{
- if (sub_80BFB54(gSaveBlock1.tvShows[i].common.var00) != 4)
+ if (GetTVChannelByShowType(gSaveBlock1.tvShows[j].common.kind) != 4)
{
- if (gSaveBlock1.tvShows[i].common.var01 == 1)
- return i;
+ if (gSaveBlock1.tvShows[j].common.active == TRUE)
+ {
+ return j;
+ }
}
else
{
- struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[i].massOutbreak;
-
- if (massOutbreak->var16 == 0 && massOutbreak->var01 == 1)
- return i;
+ show = &gSaveBlock1.tvShows[j];
+ if (show->massOutbreak.daysLeft == 0 && show->massOutbreak.active == TRUE)
+ {
+ return j;
+ }
+ }
+ if (j == 0)
+ {
+ j = ARRAY_COUNT(gSaveBlock1.tvShows) - 2;
}
-
- if (i == 0)
- i = 23;
else
- i--;
- } while (i != j);
+ {
+ j--;
+ }
+ } while (j != selIdx);
+
return 0xFF;
}
-u8 sub_80BDA30(void);
+u8 FindNonMassOutbreakActiveTVShow(void);
u8 sub_80BD8B8(void)
{
@@ -530,14 +539,14 @@ u8 sub_80BD8B8(void)
if (retval == 0xff)
return 0xff;
- if (gSaveBlock1.outbreakPokemonSpecies != 0 && gSaveBlock1.tvShows[retval].common.var00 == TVSHOW_MASS_OUTBREAK)
- return sub_80BDA30();
+ if (gSaveBlock1.outbreakPokemonSpecies != 0 && gSaveBlock1.tvShows[retval].common.kind == TVSHOW_MASS_OUTBREAK)
+ return FindNonMassOutbreakActiveTVShow();
return retval;
}
u8 CheckForBigMovieOrEmergencyNewsOnTV(void);
void SetTVMetatilesOnMap(int, int, u16);
-bool8 sub_80BECA0(void);
+bool8 FindAnyTVNewsOnTheAir(void);
bool8 IsTVShowInSearchOfTrainersAiring(void);
void UpdateTVScreensOnMap(int width, int height)
@@ -556,7 +565,7 @@ void UpdateTVScreensOnMap(int width, int height)
{
SetTVMetatilesOnMap(width, height, 0x3);
}
- else if (FlagGet(FLAG_SYS_TV_START) && (sub_80BD8B8() != 0xff || sub_80BECA0() != 0xff || IsTVShowInSearchOfTrainersAiring()))
+ else if (FlagGet(FLAG_SYS_TV_START) && (sub_80BD8B8() != 0xff || FindAnyTVNewsOnTheAir() != 0xff || IsTVShowInSearchOfTrainersAiring()))
{
FlagClear(FLAG_SYS_TV_WATCH);
SetTVMetatilesOnMap(width, height, 0x3);
@@ -586,28 +595,28 @@ void TurnOffTVScreen(void)
DrawWholeMapView();
}
-u8 sub_80BDA0C(void)
+u8 GetTVShowType(void)
{
- return gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var00;
+ return gSaveBlock1.tvShows[gSpecialVar_0x8004].common.kind;
}
-u8 sub_80BDA30(void)
+u8 FindNonMassOutbreakActiveTVShow(void)
{
u8 showIdx;
for (showIdx=0; showIdx<24; showIdx++)
{
- if (gSaveBlock1.tvShows[showIdx].common.var00 != 0 && gSaveBlock1.tvShows[showIdx].common.var00 != TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows[showIdx].common.var01 == 1)
+ if (gSaveBlock1.tvShows[showIdx].common.kind != 0 && gSaveBlock1.tvShows[showIdx].common.kind != TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows[showIdx].common.active == 1)
return showIdx;
}
return 0xff;
}
-u8 special_0x4a(void)
+u8 GetNonMassOutbreakActiveTVShow(void)
{
TVShow *tvShow;
tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
- if (tvShow->common.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.outbreakPokemonSpecies)
- return sub_80BDA30();
+ if (tvShow->common.kind == TVSHOW_MASS_OUTBREAK && gSaveBlock1.outbreakPokemonSpecies)
+ return FindNonMassOutbreakActiveTVShow();
return gSpecialVar_0x8004;
}
@@ -677,7 +686,7 @@ void GabbyAndTyBeforeInterview(void)
FlagSet(FLAG_TEMP_1);
}
-void sub_80BDC14(void)
+void GabbyAndTyAfterInterview(void)
{
gSaveBlock1.gabbyAndTyData.valB_0 = gSaveBlock1.gabbyAndTyData.valA_0;
gSaveBlock1.gabbyAndTyData.valB_1 = gSaveBlock1.gabbyAndTyData.valA_1;
@@ -716,7 +725,7 @@ bool8 GabbyAndTyGetLastQuote(void)
return TRUE;
}
-u8 sub_80BDD18(void)
+u8 GabbyAndTyGetLastBattleTrivia(void)
{
if (!gSaveBlock1.gabbyAndTyData.valB_0)
return 1;
@@ -768,27 +777,27 @@ void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void)
}
}
-void sub_80BDE48(void)
+void InterviewAfter(void)
{
switch (gSpecialVar_0x8005)
{
case TVSHOW_FAN_CLUB_LETTER:
- sub_80BE5FC();
+ InterviewAfter_FanClubLetter();
break;
case TVSHOW_RECENT_HAPPENINGS:
- sub_80BE65C();
+ InterviewAfter_RecentHappenings();
break;
case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
- sub_80BE6A0();
+ InterviewAfter_PkmnFanClubOpinions();
break;
case TVSHOW_UNKN_SHOWTYPE_04:
- nullsub_21();
+ InterviewAfter_DummyShow4();
break;
case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
- sub_80BE188();
+ InterviewAfter_BravoTrainerPokemonProfile();
break;
case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
- sub_80BE320();
+ InterviewAfter_BravoTrainerBattleTowerProfile();
break;
}
}
@@ -832,8 +841,8 @@ void sub_80BDEC8(void)
total = 0;
pokemonToday = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].pokemonToday;
- pokemonToday->var00 = TVSHOW_POKEMON_TODAY_CAUGHT;
- pokemonToday->var01 = total;
+ pokemonToday->kind = TVSHOW_POKEMON_TODAY_CAUGHT;
+ pokemonToday->active = total;
if (gBattleResults.unk5_1 != 0)
{
total = 1;
@@ -866,11 +875,11 @@ void sub_80BE028(void)
{
struct TVShowWorldOfMasters *worldOfMasters = &gSaveBlock1.tvShows[24].worldOfMasters;
- if (worldOfMasters->var00 != TVSHOW_WORLD_OF_MASTERS)
+ if (worldOfMasters->kind != TVSHOW_WORLD_OF_MASTERS)
{
sub_80BF55C(gSaveBlock1.tvShows, 24);
worldOfMasters->var06 = GetGameStat(GAME_STAT_STEPS);
- worldOfMasters->var00 = TVSHOW_WORLD_OF_MASTERS;
+ worldOfMasters->kind = TVSHOW_WORLD_OF_MASTERS;
}
worldOfMasters->var02++;
worldOfMasters->var04 = gBattleResults.caughtPoke;
@@ -898,8 +907,8 @@ void sub_80BE074(void)
struct TVShowPokemonTodayFailed *pokemonTodayFailed = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].pokemonTodayFailed;
zero = 0;
- pokemonTodayFailed->var00 = TVSHOW_POKEMON_TODAY_FAILED;
- pokemonTodayFailed->var01 = zero;
+ pokemonTodayFailed->kind = TVSHOW_POKEMON_TODAY_FAILED;
+ pokemonTodayFailed->active = zero;
pokemonTodayFailed->species = gBattleResults.poke1Species;
pokemonTodayFailed->species2 = gBattleResults.lastOpponentSpecies;
pokemonTodayFailed->var10 = total;
@@ -936,16 +945,16 @@ void sub_80BE160(TVShow *show)
show->common.trainerIdHi = playerId >> 8;
}
-void sub_80BE188(void)
+void InterviewAfter_BravoTrainerPokemonProfile(void)
{
struct TVShowBravoTrainerPokemonProfiles *bravoTrainerSrc = &gSaveBlock1.tvShows[24].bravoTrainer;
- if (bravoTrainerSrc->var00 == TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE)
+ if (bravoTrainerSrc->kind == TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE)
{
struct TVShowBravoTrainerPokemonProfiles *bravoTrainerNew = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainer;
- bravoTrainerNew->var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE;
- bravoTrainerNew->var01 = 1;
+ bravoTrainerNew->kind = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE;
+ bravoTrainerNew->active = 1;
bravoTrainerNew->species = bravoTrainerSrc->species;
StringCopy(bravoTrainerNew->playerName, gSaveBlock2.playerName);
StringCopy(bravoTrainerNew->pokemonNickname, bravoTrainerSrc->pokemonNickname);
@@ -965,13 +974,13 @@ void sub_80BE23C(u16 a0)
{
struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[24].bravoTrainer;
- sub_80BF484();
+ InterviewBefore_BravoTrainerPkmnProfile();
gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows);
if (gUnknown_03005D38.var0 != -1)
{
sub_80BF55C(gSaveBlock1.tvShows, 24);
bravoTrainer->var14 = a0;
- bravoTrainer->var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE;
+ bravoTrainer->kind = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE;
}
}
@@ -990,12 +999,12 @@ void sub_80BE284(u8 a0)
}
}
-void sub_80BE320(void)
+void InterviewAfter_BravoTrainerBattleTowerProfile(void)
{
struct TVShowBravoTrainerBattleTowerSpotlight *bravoTrainerTower = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainerTower;
- bravoTrainerTower->var00 = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE;
- bravoTrainerTower->var01 = 1;
+ bravoTrainerTower->kind = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE;
+ bravoTrainerTower->active = 1;
StringCopy(bravoTrainerTower->trainerName, gSaveBlock2.playerName);
StringCopy(bravoTrainerTower->pokemonName, gSaveBlock2.battleTower.defeatedByTrainerName);
bravoTrainerTower->species = gSaveBlock2.battleTower.firstMonSpecies;
@@ -1027,8 +1036,8 @@ void sub_80BE3BC(void)
{
struct TVShowSmartShopper *smartShopper = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].smartshopperShow;
- smartShopper->var00 = TVSHOW_SMART_SHOPPER;
- smartShopper->var01 = rval;
+ smartShopper->kind = TVSHOW_SMART_SHOPPER;
+ smartShopper->active = rval;
smartShopper->shopLocation = gMapHeader.regionMapSectionId;
for (i=0; i<3; i++)
{
@@ -1046,7 +1055,7 @@ void sub_80BE3BC(void)
void sub_80BE478(void)
{
- sub_80BF478();
+ InterviewBefore_NameRater();
if (gSpecialVar_Result == 1)
return;
@@ -1055,8 +1064,8 @@ void sub_80BE478(void)
{
struct TVShowNameRaterShow *nameRaterShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].nameRaterShow;
- nameRaterShow->var00 = TVSHOW_NAME_RATER_SHOW;
- nameRaterShow->var01 = 1;
+ nameRaterShow->kind = TVSHOW_NAME_RATER_SHOW;
+ nameRaterShow->active = 1;
nameRaterShow->species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL);
nameRaterShow->random = Random() % 3;
nameRaterShow->random2 = Random() % 2;
@@ -1089,37 +1098,37 @@ void StartMassOutbreak(void)
gSaveBlock1.outbreakUnk5 = 2;
}
-void sub_80BE5FC(void)
+void InterviewAfter_FanClubLetter(void)
{
struct TVShowFanClubLetter *fanclubLetter = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubLetter;
- fanclubLetter->var00 = TVSHOW_FAN_CLUB_LETTER;
- fanclubLetter->var01 = 1;
+ fanclubLetter->kind = TVSHOW_FAN_CLUB_LETTER;
+ fanclubLetter->active = 1;
StringCopy(fanclubLetter->playerName, gSaveBlock2.playerName);
fanclubLetter->species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL);
sub_80BE160((TVShow *)fanclubLetter);
fanclubLetter->language = GAME_LANGUAGE;
}
-void sub_80BE65C(void)
+void InterviewAfter_RecentHappenings(void)
{
struct TVShowRecentHappenings *recentHappenings = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].recentHappenings;
- recentHappenings->var00 = TVSHOW_RECENT_HAPPENINGS;
- recentHappenings->var01 = 1;
+ recentHappenings->kind = TVSHOW_RECENT_HAPPENINGS;
+ recentHappenings->active = 1;
StringCopy(recentHappenings->playerName, gSaveBlock2.playerName);
recentHappenings->var02 = 0;
sub_80BE160((TVShow *)recentHappenings);
recentHappenings->language = GAME_LANGUAGE;
}
-void sub_80BE6A0(void)
+void InterviewAfter_PkmnFanClubOpinions(void)
{
u8 monIndex;
struct TVShowFanclubOpinions *fanclubOpinions = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubOpinions;
- fanclubOpinions->var00 = TVSHOW_PKMN_FAN_CLUB_OPINIONS;
- fanclubOpinions->var01 = 1;
+ fanclubOpinions->kind = TVSHOW_PKMN_FAN_CLUB_OPINIONS;
+ fanclubOpinions->active = 1;
monIndex = GetLeadMonIndex();
fanclubOpinions->var04A = GetMonData(&gPlayerParty[monIndex], MON_DATA_FRIENDSHIP, NULL) / 16;
fanclubOpinions->var04B = gSpecialVar_0x8007;
@@ -1132,7 +1141,7 @@ void sub_80BE6A0(void)
StripExtCtrlCodes(fanclubOpinions->var10);
}
-void nullsub_21(void)
+void InterviewAfter_DummyShow4(void)
{
}
@@ -1144,7 +1153,7 @@ void sub_80BE778(void)
for (i = 0; i < 24; i++)
{
- if (gSaveBlock1.tvShows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK)
+ if (gSaveBlock1.tvShows[i].massOutbreak.kind == TVSHOW_MASS_OUTBREAK)
return;
}
if (sub_80BF77C(0x147))
@@ -1158,8 +1167,8 @@ void sub_80BE778(void)
s32 val2 = gUnknown_03005D38.var0;
struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[val2].massOutbreak;
- massOutbreak->var00 = TVSHOW_MASS_OUTBREAK;
- massOutbreak->var01 = 1;
+ massOutbreak->kind = TVSHOW_MASS_OUTBREAK;
+ massOutbreak->active = 1;
massOutbreak->level = gPokeOutbreakSpeciesList[val].level;
massOutbreak->var02 = 0;
massOutbreak->var03 = 0;
@@ -1174,7 +1183,7 @@ void sub_80BE778(void)
massOutbreak->var12 = 0;
massOutbreak->probability = 0x32;
massOutbreak->var15 = 0;
- massOutbreak->var16 = 0x01;
+ massOutbreak->daysLeft = 0x01;
sub_80BE160((TVShow *)massOutbreak);
massOutbreak->language = GAME_LANGUAGE;
}
@@ -1214,15 +1223,15 @@ void sub_80BE8EC(u16 arg0)
{
for (showidx=0; showidx<24; showidx++)
{
- if (gSaveBlock1.tvShows[showidx].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK
- && gSaveBlock1.tvShows[showidx].massOutbreak.var01 == 0x01)
+ if (gSaveBlock1.tvShows[showidx].massOutbreak.kind == TVSHOW_MASS_OUTBREAK
+ && gSaveBlock1.tvShows[showidx].massOutbreak.active == 0x01)
{
struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[showidx].massOutbreak;
- if (massOutbreak->var16 < arg0)
- massOutbreak->var16 = 0;
+ if (massOutbreak->daysLeft < arg0)
+ massOutbreak->daysLeft = 0;
else
- massOutbreak->var16 -= arg0;
+ massOutbreak->daysLeft -= arg0;
break;
}
}
@@ -1272,8 +1281,8 @@ void sub_80BE9D4(void)
register u8 zero asm("r1") = 0;
asm(""::"r"(zero));
- pokemonAngler->var00 = TVSHOW_FISHING_ADVICE;
- pokemonAngler->var01 = zero;
+ pokemonAngler->kind = TVSHOW_FISHING_ADVICE;
+ pokemonAngler->active = zero;
pokemonAngler->var02 = gUnknown_020387E2 & 0xFF;
pokemonAngler->var03 = gUnknown_020387E2 >> 8;
pokemonAngler->var04 = gUnknown_020387E0;
@@ -1294,7 +1303,7 @@ void sub_80BEA5C(u16 arg0)
{
struct TVShowWorldOfMasters *worldOfMasters = &gSaveBlock1.tvShows[24].worldOfMasters;
- if (worldOfMasters->var00 == TVSHOW_WORLD_OF_MASTERS)
+ if (worldOfMasters->kind == TVSHOW_WORLD_OF_MASTERS)
{
if (worldOfMasters->var02 < 20)
sub_80BF55C(gSaveBlock1.tvShows, 0x18);
@@ -1313,8 +1322,8 @@ void sub_80BEA88(void)
{
struct TVShowWorldOfMasters *worldOfMastersDst = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].worldOfMasters;
- worldOfMastersDst->var00 = TVSHOW_WORLD_OF_MASTERS;
- worldOfMastersDst->var01 = 0;
+ worldOfMastersDst->kind = TVSHOW_WORLD_OF_MASTERS;
+ worldOfMastersDst->active = 0;
worldOfMastersDst->var02 = worldOfMastersSrc->var02;
worldOfMastersDst->var06 = GetGameStat(GAME_STAT_STEPS) - worldOfMastersSrc->var06;
worldOfMastersDst->var04 = worldOfMastersSrc->var04;
@@ -1333,27 +1342,27 @@ void sub_80BEB20(void)
if (FlagGet(FLAG_SYS_GAME_CLEAR) != 0)
{
- gUnknown_03005D38.var0 = sub_80BEBC8(gSaveBlock1.unknown_2ABC);
+ gUnknown_03005D38.var0 = sub_80BEBC8(gSaveBlock1.pokeNews);
if (gUnknown_03005D38.var0 != -1 && sub_80BF77C(0x28f) != 1)
{
rval = (Random() % 3) + 1;
if (sub_80BEE48(rval) != 1)
{
- gSaveBlock1.unknown_2ABC[gUnknown_03005D38.var0].val0 = rval;
- gSaveBlock1.unknown_2ABC[gUnknown_03005D38.var0].val2 = 4;
- gSaveBlock1.unknown_2ABC[gUnknown_03005D38.var0].val1 = 1;
+ gSaveBlock1.pokeNews[gUnknown_03005D38.var0].kind = rval;
+ gSaveBlock1.pokeNews[gUnknown_03005D38.var0].days = 4;
+ gSaveBlock1.pokeNews[gUnknown_03005D38.var0].state = 1;
}
}
}
}
-int sub_80BEBC8(struct UnknownSaveStruct2ABC *arg0)
+int sub_80BEBC8(struct PokeNews *pokeNews)
{
s8 i;
for (i = 0; i < 16; i++)
{
- if (arg0[i].val0 == 0)
+ if (pokeNews[i].kind == 0)
return i;
}
return -1;
@@ -1369,9 +1378,9 @@ void sub_80BEBF4(void)
void sub_80BEC10(u8 arg0)
{
- gSaveBlock1.unknown_2ABC[arg0].val0 = 0;
- gSaveBlock1.unknown_2ABC[arg0].val1 = 0;
- gSaveBlock1.unknown_2ABC[arg0].val2 = 0;
+ gSaveBlock1.pokeNews[arg0].kind = 0;
+ gSaveBlock1.pokeNews[arg0].state = 0;
+ gSaveBlock1.pokeNews[arg0].days = 0;
}
void sub_80BEC40(void)
@@ -1380,13 +1389,13 @@ void sub_80BEC40(void)
for (i = 0; i < 15; i++)
{
- if (gSaveBlock1.unknown_2ABC[i].val0 == 0)
+ if (gSaveBlock1.pokeNews[i].kind == 0)
{
for (j = i + 1; j < 16; j++)
{
- if (gSaveBlock1.unknown_2ABC[j].val0 != 0)
+ if (gSaveBlock1.pokeNews[j].kind != 0)
{
- gSaveBlock1.unknown_2ABC[i] = gSaveBlock1.unknown_2ABC[j];
+ gSaveBlock1.pokeNews[i] = gSaveBlock1.pokeNews[j];
sub_80BEC10(j);
break;
}
@@ -1395,43 +1404,43 @@ void sub_80BEC40(void)
}
}
-u8 sub_80BECA0(void)
+u8 FindAnyTVNewsOnTheAir(void)
{
u8 i;
for (i = 0; i < 16; i++)
{
- if (gSaveBlock1.unknown_2ABC[i].val0 != 0
- && gSaveBlock1.unknown_2ABC[i].val1 == 1
- && gSaveBlock1.unknown_2ABC[i].val2 < 3)
+ if (gSaveBlock1.pokeNews[i].kind != 0
+ && gSaveBlock1.pokeNews[i].state == 1
+ && gSaveBlock1.pokeNews[i].days < 3)
return i;
}
return 0xFF;
}
-void sub_80BECE8(void)
+void DoPokeNews(void)
{
- u8 arg0;
- arg0 = sub_80BECA0();
- if (arg0 == 0xff)
+ u8 i;
+ i = FindAnyTVNewsOnTheAir();
+ if (i == 0xff)
{
gSpecialVar_Result = 0;
return;
}
- if (gSaveBlock1.unknown_2ABC[arg0].val2 == 0)
+ if (gSaveBlock1.pokeNews[i].days == 0)
{
- gSaveBlock1.unknown_2ABC[arg0].val1 = 2;
+ gSaveBlock1.pokeNews[i].state = 2;
if (gLocalTime.hours < 20)
- ShowFieldMessage(gTVNewsTextGroup2[gSaveBlock1.unknown_2ABC[arg0].val0]);
+ ShowFieldMessage(gTVNewsTextGroup2[gSaveBlock1.pokeNews[i].kind]);
else
- ShowFieldMessage(gTVNewsTextGroup3[gSaveBlock1.unknown_2ABC[arg0].val0]);
+ ShowFieldMessage(gTVNewsTextGroup3[gSaveBlock1.pokeNews[i].kind]);
}
else
{
- u16 value = gSaveBlock1.unknown_2ABC[arg0].val2;
+ u16 value = gSaveBlock1.pokeNews[i].days;
ConvertIntToDecimalStringN(gStringVar1, value, 0, 1);
- gSaveBlock1.unknown_2ABC[arg0].val1 = 0;
- ShowFieldMessage(gTVNewsTextGroup1[gSaveBlock1.unknown_2ABC[arg0].val0]);
+ gSaveBlock1.pokeNews[i].state = 0;
+ ShowFieldMessage(gTVNewsTextGroup1[gSaveBlock1.pokeNews[i].kind]);
}
gSpecialVar_Result = 1;
}
@@ -1444,9 +1453,9 @@ bool8 GetPriceReduction(u8 arg0)
return FALSE;
for (i=0; i<16; i++)
{
- if (gSaveBlock1.unknown_2ABC[i].val0 == arg0)
+ if (gSaveBlock1.pokeNews[i].kind == arg0)
{
- if (gSaveBlock1.unknown_2ABC[i].val1 == 2 && IsPriceDiscounted(arg0) != 0)
+ if (gSaveBlock1.pokeNews[i].state == 2 && IsPriceDiscounted(arg0) != 0)
return TRUE;
else
return FALSE;
@@ -1487,7 +1496,7 @@ bool8 sub_80BEE48(u8 arg0)
return TRUE;
for (i=0; i<16; i++)
{
- if (gSaveBlock1.unknown_2ABC[i].val0 == arg0)
+ if (gSaveBlock1.pokeNews[i].kind == arg0)
return TRUE;
}
return FALSE;
@@ -1499,17 +1508,17 @@ void sub_80BEE84(u16 var0)
for (i=0; i<16; i++)
{
- if (gSaveBlock1.unknown_2ABC[i].val0)
+ if (gSaveBlock1.pokeNews[i].kind)
{
- if (gSaveBlock1.unknown_2ABC[i].val2 < var0)
+ if (gSaveBlock1.pokeNews[i].days < var0)
{
sub_80BEC10(i);
}
else
{
- if (!gSaveBlock1.unknown_2ABC[i].val1 && FlagGet(FLAG_SYS_GAME_CLEAR) == 1)
- gSaveBlock1.unknown_2ABC[i].val1 = 1;
- gSaveBlock1.unknown_2ABC[i].val2 -= var0;
+ if (!gSaveBlock1.pokeNews[i].state && FlagGet(FLAG_SYS_GAME_CLEAR) == 1)
+ gSaveBlock1.pokeNews[i].state = 1;
+ gSaveBlock1.pokeNews[i].days -= var0;
}
}
}
@@ -1619,7 +1628,7 @@ bool8 sub_80BF1B4(u8 showIdx)
for (i = 5; i < 24; i++)
{
- if (tvShows[i].common.var00 == showIdx)
+ if (tvShows[i].common.kind == showIdx)
{
if ((trainerId & 0xFF) == tvShows[i].common.trainerIdLo && ((trainerId >> 8) & 0xFF) == tvShows[i].common.trainerIdHi)
return TRUE;
@@ -1656,9 +1665,9 @@ void sub_80BF25C(u8 showType)
for (i = 0; i < 5; i++)
{
- if (gSaveBlock1.tvShows[i].common.var00 == showType)
+ if (gSaveBlock1.tvShows[i].common.kind == showType)
{
- if(gSaveBlock1.tvShows[i].common.var01 == 1)
+ if(gSaveBlock1.tvShows[i].common.active == 1)
{
gSpecialVar_Result = 1;
}
@@ -1674,36 +1683,36 @@ void sub_80BF25C(u8 showType)
sub_80BF6D8();
}
-void sub_80BF2C4(void)
+void InterviewBefore(void)
{
- gSpecialVar_Result = 0;
+ gSpecialVar_Result = FALSE;
switch (gSpecialVar_0x8005)
{
case TVSHOW_FAN_CLUB_LETTER:
- sub_80BF334();
+ InterviewBefore_FanClubLetter();
break;
case TVSHOW_RECENT_HAPPENINGS:
- sub_80BF3A4();
+ InterviewBefore_RecentHappenings();
break;
case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
- sub_80BF3DC();
+ InterviewBefore_PkmnFanClubOpinions();
break;
case TVSHOW_UNKN_SHOWTYPE_04:
- sub_80BF46C();
+ InterviewBefore_Dummy();
break;
case TVSHOW_NAME_RATER_SHOW:
- sub_80BF478();
+ InterviewBefore_NameRater();
break;
case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
- sub_80BF484();
+ InterviewBefore_BravoTrainerPkmnProfile();
break;
case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
- sub_80BF4BC();
+ InterviewBefore_BravoTrainerBTProfile();
break;
}
}
-void sub_80BF334(void)
+void InterviewBefore_FanClubLetter(void)
{
struct TVShowFanClubLetter *fanclubLetter;
@@ -1716,7 +1725,7 @@ void sub_80BF334(void)
}
}
-void sub_80BF3A4(void)
+void InterviewBefore_RecentHappenings(void)
{
struct TVShowRecentHappenings *recentHappenings;
@@ -1728,7 +1737,7 @@ void sub_80BF3A4(void)
}
}
-void sub_80BF3DC(void)
+void InterviewBefore_PkmnFanClubOpinions(void)
{
struct TVShowFanclubOpinions *fanclubOpinions;
@@ -1743,17 +1752,17 @@ void sub_80BF3DC(void)
}
}
-void sub_80BF46C(void)
+void InterviewBefore_Dummy(void)
{
gSpecialVar_Result = 1;
}
-void sub_80BF478(void)
+void InterviewBefore_NameRater(void)
{
sub_80BF25C(TVSHOW_NAME_RATER_SHOW);
}
-void sub_80BF484(void)
+void InterviewBefore_BravoTrainerPkmnProfile(void)
{
struct TVShowBravoTrainerPokemonProfiles *bravoTrainer;
@@ -1765,7 +1774,7 @@ void sub_80BF484(void)
}
}
-void sub_80BF4BC(void)
+void InterviewBefore_BravoTrainerBTProfile(void)
{
struct TVShowBravoTrainerBattleTowerSpotlight *bravoTrainerTower;
@@ -1778,32 +1787,32 @@ void sub_80BF4BC(void)
}
#if ENGLISH
-u8 sub_80BF4F4(u8 arg0)
+u8 NicknameDiffersFromSpeciesName(u8 monIndex)
{
u32 species;
- GetMonData(&gPlayerParty[arg0], MON_DATA_NICKNAME, &gStringVar1);
- species = GetMonData(&gPlayerParty[arg0], MON_DATA_SPECIES, NULL);
- if (StringCompareWithoutExtCtrlCodes(gSpeciesNames[species], gStringVar1) == FALSE)
+ GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, &gStringVar1);
+ species = GetMonData(&gPlayerParty[monIndex], MON_DATA_SPECIES, NULL);
+ if (StringCompareWithoutExtCtrlCodes(gSpeciesNames[species], gStringVar1) == 0)
return FALSE;
return TRUE;
}
#elif GERMAN
-u8 sub_80BF4F4(u8 arg0)
+u8 NicknameDiffersFromSpeciesName(u8 monIndex)
{
u8 langData[4];
u32 species;
u8 *tmp;
- GetMonData(&gPlayerParty[arg0], MON_DATA_NICKNAME, &gStringVar1);
+ GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, &gStringVar1);
tmp = langData;
- tmp[0] = GetMonData(&gPlayerParty[arg0], MON_DATA_LANGUAGE, &langData);
+ tmp[0] = GetMonData(&gPlayerParty[monIndex], MON_DATA_LANGUAGE, &langData);
if (tmp[0] != GAME_LANGUAGE)
return TRUE;
- species = GetMonData(&gPlayerParty[arg0], MON_DATA_SPECIES, NULL);
+ species = GetMonData(&gPlayerParty[monIndex], MON_DATA_SPECIES, NULL);
if (StringCompareWithoutExtCtrlCodes(gSpeciesNames[species], gStringVar1))
return TRUE;
@@ -1811,17 +1820,17 @@ u8 sub_80BF4F4(u8 arg0)
}
#endif
-u8 sub_80BF544(void)
+u8 LeadMonNicknamed(void)
{
- return sub_80BF4F4(GetLeadMonIndex());
+ return NicknameDiffersFromSpeciesName(GetLeadMonIndex());
}
void sub_80BF55C(TVShow tvShow[], u8 showidx)
{
u8 idx;
- tvShow[showidx].common.var00 = 0;
- tvShow[showidx].common.var01 = 0;
+ tvShow[showidx].common.kind = 0;
+ tvShow[showidx].common.active = 0;
for (idx = 0; idx < 34; idx++)
tvShow[showidx].common.pad02[idx] = 0;
}
@@ -1833,11 +1842,11 @@ void sub_80BF588(TVShow tvShow[])
for (showidx = 0; showidx < 4; showidx++)
{
- if (tvShow[showidx].common.var00 == 0)
+ if (tvShow[showidx].common.kind == 0)
{
for (showidx2 = showidx + 1; showidx2 < 5; showidx2++)
{
- if (tvShow[showidx2].common.var00 != 0)
+ if (tvShow[showidx2].common.kind != 0)
{
tvShow[showidx] = tvShow[showidx2];
sub_80BF55C(tvShow, showidx2);
@@ -1848,11 +1857,11 @@ void sub_80BF588(TVShow tvShow[])
}
for (showidx = 5; showidx < 24; showidx++)
{
- if (tvShow[showidx].common.var00 == 0)
+ if (tvShow[showidx].common.kind == 0)
{
for (showidx2 = showidx + 1; showidx2 < 24; showidx2++)
{
- if (tvShow[showidx2].common.var00 != 0)
+ if (tvShow[showidx2].common.kind != 0)
{
tvShow[showidx] = tvShow[showidx2];
sub_80BF55C(gSaveBlock1.tvShows, showidx2);
@@ -1909,7 +1918,7 @@ s8 sub_80BF720(TVShow tvShow[])
for (idx = 0; idx < 5; idx++)
{
- if (tvShow[idx].common.var00 == 0)
+ if (tvShow[idx].common.kind == 0)
return idx;
}
return -1;
@@ -1921,7 +1930,7 @@ s8 sub_80BF74C(TVShow tvShow[])
for (idx = 5; idx < 24; idx++)
{
- if (tvShow[idx].common.var00 == 0)
+ if (tvShow[idx].common.kind == 0)
return idx;
}
return -1;
@@ -2043,19 +2052,19 @@ void sub_80BF820(u8 arg0, u8 arg1, u8 arg2, u16 arg3, u16 arg4, struct TVShowNam
StringCopy(gUnknown_083D1464[arg0], flags);
}
-bool8 sub_80BF974(void)
+bool8 TV_IsScriptShowKindAlreadyInQueue(void)
{
u8 i;
for (i = 0; i < 5; i++)
{
- if (gSaveBlock1.tvShows[i].common.var00 == gSpecialVar_0x8004)
+ if (gSaveBlock1.tvShows[i].common.kind == gSpecialVar_0x8004)
return TRUE;
}
return FALSE;
}
-bool8 sub_80BF9B4(void)
+bool8 TV_PutNameRaterShowOnTheAirIfNicnkameChanged(void)
{
GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar1);
if (!StringCompareWithoutExtCtrlCodes(gStringVar3, gStringVar1))
@@ -2064,9 +2073,9 @@ bool8 sub_80BF9B4(void)
return TRUE;
}
-void c2_080CC144(void);
+void ChangePokemonNickname_CB(void);
-void sub_80BF9F8(void)
+void ChangePokemonNickname(void)
{
u16 spec;
u16 gender;
@@ -2077,22 +2086,22 @@ void sub_80BF9F8(void)
spec = GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_SPECIES, 0);
gender = GetMonGender(&(gPlayerParty[gSpecialVar_0x8004]));
pval = GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_PERSONALITY, 0);
- DoNamingScreen(3, gStringVar2, spec, gender, pval, c2_080CC144);
+ DoNamingScreen(3, gStringVar2, spec, gender, pval, ChangePokemonNickname_CB);
}
-void c2_080CC144(void)
+void ChangePokemonNickname_CB(void)
{
SetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, gStringVar2);
c2_exit_to_overworld_1_continue_scripts_restart_music();
}
-void sub_80BFAE0(void)
+void TV_CopyNicknameToStringVar1AndEnsureTerminated(void)
{
GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar1);
StringGetEnd10(gStringVar1);
}
-void sub_80BFB10(void)
+void TV_CheckMonOTIDEqualsPlayerID(void)
{
if (GetPlayerTrainerId() == GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_OT_ID, 0))
gSpecialVar_Result = 0;
@@ -2100,7 +2109,7 @@ void sub_80BFB10(void)
gSpecialVar_Result = 1;
}
-u8 sub_80BFB54(u8 arg0)
+u8 GetTVChannelByShowType(u8 arg0)
{
if (arg0 == 0)
return 0;
@@ -2149,7 +2158,7 @@ void GetMomOrDadStringForTVMessage(void)
if (gSaveBlock1.location.mapNum == MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F))
{
StringCopy(gStringVar1, gOtherText_Mom);
- VarSet(VAR_0x4003, 1);
+ VarSet(VAR_TEMP_3, 1);
}
}
else
@@ -2157,21 +2166,21 @@ void GetMomOrDadStringForTVMessage(void)
if (gSaveBlock1.location.mapNum == MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_1F))
{
StringCopy(gStringVar1, gOtherText_Mom);
- VarSet(VAR_0x4003, 1);
+ VarSet(VAR_TEMP_3, 1);
}
}
}
- if (VarGet(VAR_0x4003) == 1)
+ if (VarGet(VAR_TEMP_3) == 1)
{
StringCopy(gStringVar1, gOtherText_Mom);
}
- else if (VarGet(VAR_0x4003) == 2)
+ else if (VarGet(VAR_TEMP_3) == 2)
{
StringCopy(gStringVar1, gOtherText_Dad);
}
- else if (VarGet(VAR_0x4003) > 2)
+ else if (VarGet(VAR_TEMP_3) > 2)
{
- if (VarGet(VAR_0x4003) % 2 == 0)
+ if (VarGet(VAR_TEMP_3) % 2 == 0)
StringCopy(gStringVar1, gOtherText_Mom);
else
StringCopy(gStringVar1, gOtherText_Dad);
@@ -2181,26 +2190,26 @@ void GetMomOrDadStringForTVMessage(void)
if (Random() % 2 != 0)
{
StringCopy(gStringVar1, gOtherText_Mom);
- VarSet(VAR_0x4003, 1);
+ VarSet(VAR_TEMP_3, 1);
}
else
{
StringCopy(gStringVar1, gOtherText_Dad);
- VarSet(VAR_0x4003, 2);
+ VarSet(VAR_TEMP_3, 2);
}
}
}
void sub_80BFD20(void)
{
- VarSet(VAR_0x40BC, 0);
+ VarSet(VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 0);
RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
}
typedef union ewramStruct_02007000
{
TVShow tvshows[4][25];
- struct UnknownSaveStruct2ABC unknown_2abc[4][16];
+ struct PokeNews pokeNews[4][16];
} ewramStruct_02007000;
void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25]);
@@ -2294,7 +2303,7 @@ bool8 sub_80BFF68(TVShow * arg1[25], TVShow * arg2[25], u8 idx)
tv1 = *arg1;
tv2 = *arg2;
value = FALSE;
- switchval = sub_80BFB54(tv2[gUnknown_03000722].common.var00);
+ switchval = GetTVChannelByShowType(tv2[gUnknown_03000722].common.kind);
switch (switchval)
{
case 2:
@@ -2329,7 +2338,7 @@ u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx)
tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF;
tv2->common.srcTrainerIdHi = linkTrainerId >> 8;
*tv1 = *tv2;
- tv1->common.var01 = 1;
+ tv1->common.active = 1;
return TRUE;
}
@@ -2345,7 +2354,7 @@ u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx)
tv2->common.srcTrainerId2Lo = linkTrainerId & 0xFF;
tv2->common.srcTrainerId2Hi = linkTrainerId >> 8;
*tv1 = *tv2;
- tv1->common.var01 = 1;
+ tv1->common.active = 1;
return TRUE;
}
@@ -2359,7 +2368,7 @@ u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx)
tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF;
tv2->common.srcTrainerIdHi = linkTrainerId >> 8;
*tv1 = *tv2;
- tv1->common.var01 = 1;
+ tv1->common.active = 1;
tv1->common.var16[0] = 1;
return TRUE;
}
@@ -2369,7 +2378,7 @@ s8 sub_80C019C(TVShow tvShows[])
u8 i;
for (i = 0; i < 24; i++)
{
- if (tvShows[i].common.var01 == 0 && (u8)(tvShows[i].common.var00 - 1) < 60)
+ if (tvShows[i].common.active == 0 && (u8)(tvShows[i].common.kind - 1) < 60)
return i;
}
return -1;
@@ -2381,7 +2390,7 @@ void sub_80C01D4(void)
u16 i;
for (i=0; i<24; i++)
{
- switch (gSaveBlock1.tvShows[i].common.var00)
+ switch (gSaveBlock1.tvShows[i].common.kind)
{
case 0:
case TVSHOW_RECENT_HAPPENINGS:
@@ -2637,13 +2646,13 @@ _080C03A0:\n\
void sub_80C03A8(u8 showidx)
{
- gSaveBlock1.tvShows[showidx].common.var01 = 0;
+ gSaveBlock1.tvShows[showidx].common.active = 0;
}
void sub_80C03C8(u16 species, u8 showidx)
{
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0)
- gSaveBlock1.tvShows[showidx].common.var01 = 0;
+ gSaveBlock1.tvShows[showidx].common.active = 0;
}
void sub_80C0408(void)
@@ -2654,10 +2663,10 @@ void sub_80C0408(void)
return;
for (i = 0; i < 24; i++)
{
- if (gSaveBlock1.tvShows[i].common.var00 == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE)
- gSaveBlock1.tvShows[i].common.var01 = 0;
- else if (gSaveBlock1.tvShows[i].common.var00 == TVSHOW_MASS_OUTBREAK)
- gSaveBlock1.tvShows[i].common.var01 = 0;
+ if (gSaveBlock1.tvShows[i].common.kind == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE)
+ gSaveBlock1.tvShows[i].common.active = 0;
+ else if (gSaveBlock1.tvShows[i].common.kind == TVSHOW_MASS_OUTBREAK)
+ gSaveBlock1.tvShows[i].common.active = 0;
}
}
@@ -2667,8 +2676,8 @@ void sub_80C045C(void)
for (i = 0; i < 5; i++)
{
- if (sub_80BFB54(gSaveBlock1.tvShows[i].common.var00) == 2)
- gSaveBlock1.tvShows[i].common.var01 = 0;
+ if (GetTVChannelByShowType(gSaveBlock1.tvShows[i].common.kind) == 2)
+ gSaveBlock1.tvShows[i].common.active = 0;
}
}
@@ -2680,18 +2689,18 @@ void sub_80C04A0(void)
for (showIdx = 5; showIdx < 24; showIdx++)
{
- if (gSaveBlock1.tvShows[showIdx].common.var00 == 0)
+ if (gSaveBlock1.tvShows[showIdx].common.kind == 0)
count++;
}
for (showIdx = 0; showIdx < 5 - count; showIdx++)
sub_80BF55C(gSaveBlock1.tvShows, showIdx+5);
}
-void sub_80C05C4(struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16]);
+void sub_80C05C4(struct PokeNews[16], struct PokeNews[16], struct PokeNews[16], struct PokeNews[16]);
void sub_80C0750(void);
void sub_80C0788(void);
-s8 sub_80C0730(struct UnknownSaveStruct2ABC[16], u8);
-void sub_80C06BC(struct UnknownSaveStruct2ABC *[16], struct UnknownSaveStruct2ABC *[16]);
+s8 sub_80C0730(struct PokeNews[16], u8);
+void sub_80C06BC(struct PokeNews *[16], struct PokeNews *[16]);
void sub_80C0514(void *a0, u32 a1, u8 a2)
{
@@ -2699,33 +2708,33 @@ void sub_80C0514(void *a0, u32 a1, u8 a2)
u8 i;
for (i = 0; i < 4; i++)
- memcpy(gUnknown_02007000.unknown_2abc[i], a0 + i * a1, 64);
+ memcpy(gUnknown_02007000.pokeNews[i], a0 + i * a1, 64);
struct02007000 = &gUnknown_02007000;
switch (a2)
{
case 0:
- sub_80C05C4(gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]);
+ sub_80C05C4(gSaveBlock1.pokeNews, struct02007000->pokeNews[1], struct02007000->pokeNews[2], struct02007000->pokeNews[3]);
break;
case 1:
- sub_80C05C4(struct02007000->unknown_2abc[0], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]);
+ sub_80C05C4(struct02007000->pokeNews[0], gSaveBlock1.pokeNews, struct02007000->pokeNews[2], struct02007000->pokeNews[3]);
break;
case 2:
- sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[3]);
+ sub_80C05C4(struct02007000->pokeNews[0], struct02007000->pokeNews[1], gSaveBlock1.pokeNews, struct02007000->pokeNews[3]);
break;
case 3:
- sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], gSaveBlock1.unknown_2ABC);
+ sub_80C05C4(struct02007000->pokeNews[0], struct02007000->pokeNews[1], struct02007000->pokeNews[2], gSaveBlock1.pokeNews);
break;
}
sub_80C0750();
sub_80C0788();
}
-void sub_80C05C4(struct UnknownSaveStruct2ABC a0[16], struct UnknownSaveStruct2ABC a1[16], struct UnknownSaveStruct2ABC a2[16], struct UnknownSaveStruct2ABC a3[16])
+void sub_80C05C4(struct PokeNews a0[16], struct PokeNews a1[16], struct PokeNews a2[16], struct PokeNews a3[16])
{
u8 i;
u8 j;
u8 k;
- struct UnknownSaveStruct2ABC ** arglist[4];
+ struct PokeNews ** arglist[4];
arglist[0] = &a0;
arglist[1] = &a1;
@@ -2750,10 +2759,10 @@ void sub_80C05C4(struct UnknownSaveStruct2ABC a0[16], struct UnknownSaveStruct2A
}
}
-void sub_80C06BC(struct UnknownSaveStruct2ABC *arg0[16], struct UnknownSaveStruct2ABC *arg1[16])
+void sub_80C06BC(struct PokeNews *arg0[16], struct PokeNews *arg1[16])
{
- struct UnknownSaveStruct2ABC *str0;
- struct UnknownSaveStruct2ABC *str1;
+ struct PokeNews *str0;
+ struct PokeNews *str1;
str0 = arg0[0];
str1 = arg1[0];
@@ -2761,26 +2770,26 @@ void sub_80C06BC(struct UnknownSaveStruct2ABC *arg0[16], struct UnknownSaveStruc
sub_80C06E8(str0, str1, gUnknown_03005D38.var0);
}
-bool8 sub_80C06E8(struct UnknownSaveStruct2ABC *arg0, struct UnknownSaveStruct2ABC *arg1, s8 arg2)
+bool8 sub_80C06E8(struct PokeNews *arg0, struct PokeNews *arg1, s8 arg2)
{
u8 i;
- if (arg1->val0 == 0)
+ if (arg1->kind == 0)
return FALSE;
for (i = 0; i < 16; i++)
{
- if (arg0[i].val0 == arg1->val0)
+ if (arg0[i].kind == arg1->kind)
return FALSE;
}
- arg0[arg2].val0 = arg1->val0;
- arg0[arg2].val1 = 1;
- arg0[arg2].val2 = arg1->val2;
+ arg0[arg2].kind = arg1->kind;
+ arg0[arg2].state = 1;
+ arg0[arg2].days = arg1->days;
return TRUE;
}
-s8 sub_80C0730(struct UnknownSaveStruct2ABC *arg0, u8 arg1)
+s8 sub_80C0730(struct PokeNews *arg0, u8 arg1)
{
- if (arg0[arg1].val0 == 0)
+ if (arg0[arg1].kind == 0)
return -1;
return arg1;
}
@@ -2791,7 +2800,7 @@ void sub_80C0750(void)
for (i = 0; i < 16; i++)
{
- if (gSaveBlock1.unknown_2ABC[i].val0 > 3)
+ if (gSaveBlock1.pokeNews[i].kind > 3)
sub_80BEC10(i);
}
sub_80BEC40();
@@ -2804,15 +2813,15 @@ void sub_80C0788(void)
if (FlagGet(FLAG_SYS_GAME_CLEAR) != 1)
{
for (i = 0; i < 16; i++)
- gSaveBlock1.unknown_2ABC[i].val1 = 0;
+ gSaveBlock1.pokeNews[i].state = 0;
}
}
void DoTVShow(void)
{
- if (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 != 0)
+ if (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.active != 0)
{
- switch (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var00)
+ switch (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.kind)
{
case TVSHOW_FAN_CLUB_LETTER:
DoTVShowPokemonFanClubLetter();
@@ -2870,7 +2879,7 @@ void DoTVShowBravoTrainerPokemonProfile(void)
u8 state;
gSpecialVar_Result = 0;
- state = gUnknown_020387E8;
+ state = sTVShowState;
switch(state)
{
case 0:
@@ -2878,49 +2887,49 @@ void DoTVShowBravoTrainerPokemonProfile(void)
CopyContestCategoryToStringVar(1, bravoTrainer->contestCategory);
sub_80BEF10(2, bravoTrainer->contestRank);
if (!StringCompareWithoutExtCtrlCodes(gSpeciesNames[bravoTrainer->species], bravoTrainer->pokemonNickname))
- gUnknown_020387E8 = 8;
+ sTVShowState = 8;
else
- gUnknown_020387E8 = 1;
+ sTVShowState = 1;
break;
case 1:
StringCopy(gStringVar1, gSpeciesNames[bravoTrainer->species]);
TVShowConvertInternationalString(gStringVar2, bravoTrainer->pokemonNickname, bravoTrainer->var1f);
CopyContestCategoryToStringVar(2, bravoTrainer->contestCategory);
- gUnknown_020387E8 = 2;
+ sTVShowState = 2;
break;
case 2:
TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language);
if (bravoTrainer->contestResult == 0) // placed first
- gUnknown_020387E8 = 3;
+ sTVShowState = 3;
else
- gUnknown_020387E8 = 4;
+ sTVShowState = 4;
break;
case 3:
TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language);
EasyChat_GetWordText(gStringVar2, bravoTrainer->var04[0]);
sub_80BF088(2, bravoTrainer->contestResult + 1);
- gUnknown_020387E8 = 5;
+ sTVShowState = 5;
break;
case 4:
TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language);
EasyChat_GetWordText(gStringVar2, bravoTrainer->var04[0]);
sub_80BF088(2, bravoTrainer->contestResult + 1);
- gUnknown_020387E8 = 5;
+ sTVShowState = 5;
break;
case 5:
TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language);
CopyContestCategoryToStringVar(1, bravoTrainer->contestCategory);
EasyChat_GetWordText(gStringVar3, bravoTrainer->var04[1]);
if (bravoTrainer->var14)
- gUnknown_020387E8 = 6;
+ sTVShowState = 6;
else
- gUnknown_020387E8 = 7;
+ sTVShowState = 7;
break;
case 6:
StringCopy(gStringVar1, gSpeciesNames[bravoTrainer->species]);
StringCopy(gStringVar2, gMoveNames[bravoTrainer->var14]);
EasyChat_GetWordText(gStringVar3, bravoTrainer->var04[1]);
- gUnknown_020387E8 = 7;
+ sTVShowState = 7;
break;
case 7:
TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language);
@@ -2929,7 +2938,7 @@ void DoTVShowBravoTrainerPokemonProfile(void)
break;
case 8:
StringCopy(gStringVar1, gSpeciesNames[bravoTrainer->species]);
- gUnknown_020387E8 = 2;
+ sTVShowState = 2;
break;
}
ShowFieldMessage(gTVBravoTrainerTextGroup[state]);
@@ -2941,79 +2950,79 @@ void DoTVShowBravoTrainerBattleTowerProfile(void)
u8 state;
gSpecialVar_Result = 0;
- state = gUnknown_020387E8;
+ state = sTVShowState;
switch(state)
{
case 0:
TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->trainerName, bravoTrainerTower->language);
StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->species]);
if (bravoTrainerTower->var16 >= 7)
- gUnknown_020387E8 = 1;
+ sTVShowState = 1;
else
- gUnknown_020387E8 = 2;
+ sTVShowState = 2;
break;
case 1:
sub_80BF088(0, bravoTrainerTower->btLevel);
sub_80BF088(1, bravoTrainerTower->var16);
if (bravoTrainerTower->var1c == 1)
- gUnknown_020387E8 = 3;
+ sTVShowState = 3;
else
- gUnknown_020387E8 = 4;
+ sTVShowState = 4;
break;
case 2:
TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
sub_80BF088(1, bravoTrainerTower->var16 + 1);
if (bravoTrainerTower->var1b == 0)
- gUnknown_020387E8 = 5;
+ sTVShowState = 5;
else
- gUnknown_020387E8 = 6;
+ sTVShowState = 6;
break;
case 3:
TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->defeatedSpecies]);
if (bravoTrainerTower->var1b == 0)
- gUnknown_020387E8 = 5;
+ sTVShowState = 5;
else
- gUnknown_020387E8 = 6;
+ sTVShowState = 6;
break;
case 4:
TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->defeatedSpecies]);
if (bravoTrainerTower->var1b == 0)
- gUnknown_020387E8 = 5;
+ sTVShowState = 5;
else
- gUnknown_020387E8 = 6;
+ sTVShowState = 6;
break;
case 5:
TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
- gUnknown_020387E8 = 11;
+ sTVShowState = 11;
break;
case 6:
TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
- gUnknown_020387E8 = 11;
+ sTVShowState = 11;
break;
case 7:
- gUnknown_020387E8 = 11;
+ sTVShowState = 11;
break;
case 8:
case 9:
case 10:
TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->trainerName, bravoTrainerTower->language);
- gUnknown_020387E8 = 11;
+ sTVShowState = 11;
break;
case 11:
EasyChat_GetWordText(gStringVar1, bravoTrainerTower->var18[0]);
if (bravoTrainerTower->var1b == 0)
- gUnknown_020387E8 = 12;
+ sTVShowState = 12;
else
- gUnknown_020387E8 = 13;
+ sTVShowState = 13;
break;
case 12:
case 13:
EasyChat_GetWordText(gStringVar1, bravoTrainerTower->var18[0]);
TVShowConvertInternationalString(gStringVar2, bravoTrainerTower->trainerName, bravoTrainerTower->language);
TVShowConvertInternationalString(gStringVar3, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
- gUnknown_020387E8 = 14;
+ sTVShowState = 14;
break;
case 14:
TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->trainerName, bravoTrainerTower->language);
@@ -3030,61 +3039,61 @@ void DoTVShowTodaysSmartShopper(void)
u8 state;
gSpecialVar_Result = 0;
- state = gUnknown_020387E8;
+ state = sTVShowState;
switch(state)
{
case 0:
TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language);
GetMapSectionName(gStringVar2, smartShopper->shopLocation, 0);
if (smartShopper->itemAmounts[0] >= 0xff)
- gUnknown_020387E8 = 11;
+ sTVShowState = 11;
else
- gUnknown_020387E8 = 1;
+ sTVShowState = 1;
break;
case 1:
TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language);
StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[0])->name);
sub_80BF088(2, smartShopper->itemAmounts[0]);
- gUnknown_020387E8 += (Random() % 4) + 1;
+ sTVShowState += (Random() % 4) + 1;
break;
case 2:
case 4:
case 5:
if (smartShopper->itemIds[1] != 0)
- gUnknown_020387E8 = 6;
+ sTVShowState = 6;
else
- gUnknown_020387E8 = 10;
+ sTVShowState = 10;
break;
case 3:
sub_80BF088(2, smartShopper->itemAmounts[0] + 1);
if (smartShopper->itemIds[1] != 0)
- gUnknown_020387E8 = 6;
+ sTVShowState = 6;
else
- gUnknown_020387E8 = 10;
+ sTVShowState = 10;
break;
case 6:
StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[1])->name);
sub_80BF088(2, smartShopper->itemAmounts[1]);
if (smartShopper->itemIds[2] != 0)
- gUnknown_020387E8 = 7;
+ sTVShowState = 7;
else if (smartShopper->priceReduced == 1)
- gUnknown_020387E8 = 8;
+ sTVShowState = 8;
else
- gUnknown_020387E8 = 9;
+ sTVShowState = 9;
break;
case 7:
StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[2])->name);
sub_80BF088(2, smartShopper->itemAmounts[2]);
if (smartShopper->priceReduced == 1)
- gUnknown_020387E8 = 8;
+ sTVShowState = 8;
else
- gUnknown_020387E8 = 9;
+ sTVShowState = 9;
break;
case 8:
if (smartShopper->itemAmounts[0] < 0xff)
- gUnknown_020387E8 = 9;
+ sTVShowState = 9;
else
- gUnknown_020387E8 = 12;
+ sTVShowState = 12;
break;
case 9:
sub_80BF154(1, smartShopper);
@@ -3092,17 +3101,17 @@ void DoTVShowTodaysSmartShopper(void)
break;
case 10:
if (smartShopper->priceReduced == 1)
- gUnknown_020387E8 = 8;
+ sTVShowState = 8;
else
- gUnknown_020387E8 = 9;
+ sTVShowState = 9;
break;
case 11:
TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language);
StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[0])->name);
if (smartShopper->priceReduced == 1)
- gUnknown_020387E8 = 8;
+ sTVShowState = 8;
else
- gUnknown_020387E8 = 12;
+ sTVShowState = 12;
break;
case 12:
TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language);
@@ -3118,14 +3127,14 @@ void DoTVShowTheNameRaterShow(void)
u8 state;
gSpecialVar_Result = 0;
- state = gUnknown_020387E8;
+ state = sTVShowState;
switch (state)
{
case 0:
TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language);
StringCopy(gStringVar2, gSpeciesNames[nameRaterShow->species]);
TVShowConvertInternationalString(gStringVar3, nameRaterShow->pokemonName, nameRaterShow->pokemonNameLanguage);
- gUnknown_020387E8 = sub_80BF7E8(nameRaterShow) + 1;
+ sTVShowState = sub_80BF7E8(nameRaterShow) + 1;
break;
case 1:
case 3:
@@ -3135,20 +3144,20 @@ void DoTVShowTheNameRaterShow(void)
case 7:
case 8:
if (nameRaterShow->random == 0)
- gUnknown_020387E8 = 9;
+ sTVShowState = 9;
else if (nameRaterShow->random == 1)
- gUnknown_020387E8 = 10;
+ sTVShowState = 10;
else if (nameRaterShow->random == 2)
- gUnknown_020387E8 = 11;
+ sTVShowState = 11;
break;
case 2:
TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language);
if (nameRaterShow->random == 0)
- gUnknown_020387E8 = 9;
+ sTVShowState = 9;
else if (nameRaterShow->random == 1)
- gUnknown_020387E8 = 10;
+ sTVShowState = 10;
else if (nameRaterShow->random == 2)
- gUnknown_020387E8 = 11;
+ sTVShowState = 11;
break;
case 9:
case 10:
@@ -3158,7 +3167,7 @@ void DoTVShowTheNameRaterShow(void)
sub_80BF820(0, 0, 0, 1, 0, nameRaterShow);
TVShowConvertInternationalString(gStringVar2, gStringVar1, nameRaterShow->pokemonNameLanguage);
TVShowConvertInternationalString(gStringVar1, nameRaterShow->pokemonName, nameRaterShow->pokemonNameLanguage);
- gUnknown_020387E8 = 12;
+ sTVShowState = 12;
break;
case 13:
sub_80BF820(0, 0, 3, 1, 0, nameRaterShow);
@@ -3166,7 +3175,7 @@ void DoTVShowTheNameRaterShow(void)
sub_80BF820(0, 0, 2, 0, 0, nameRaterShow);
TVShowConvertInternationalString(gStringVar2, gStringVar1, nameRaterShow->language);
TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language);
- gUnknown_020387E8 = 14;
+ sTVShowState = 14;
break;
case 14:
sub_80BF820(0, 0, 3, 0, 0, nameRaterShow);
@@ -3174,31 +3183,31 @@ void DoTVShowTheNameRaterShow(void)
sub_80BF820(0, 0, 2, 1, 0, nameRaterShow);
TVShowConvertInternationalString(gStringVar2, gStringVar1, nameRaterShow->pokemonNameLanguage);
TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language);
- gUnknown_020387E8 = 18;
+ sTVShowState = 18;
break;
case 15:
sub_80BF820(1, 0, 2, 1, 0, nameRaterShow);
TVShowConvertInternationalString(gStringVar1, gStringVar2, nameRaterShow->pokemonNameLanguage);
StringCopy(gStringVar2, gSpeciesNames[nameRaterShow->species]);
sub_80BF820(2, 0, 3, 2, nameRaterShow->species, nameRaterShow);
- gUnknown_020387E8 = 16;
+ sTVShowState = 16;
break;
case 16:
sub_80BF820(0, 0, 3, 1, 0, nameRaterShow);
TVShowConvertInternationalString(gStringVar3, gStringVar1, nameRaterShow->pokemonNameLanguage);
sub_80BF820(0, 0, 2, 2, nameRaterShow->species, nameRaterShow);
- gUnknown_020387E8 = 17;
+ sTVShowState = 17;
break;
case 17:
sub_80BF820(1, 0, 2, 1, 0, nameRaterShow);
TVShowConvertInternationalString(gStringVar1, gStringVar2, nameRaterShow->pokemonNameLanguage);
sub_80BF820(2, 0, 3, 2, nameRaterShow->var1C, nameRaterShow);
StringCopy(gStringVar2, gSpeciesNames[nameRaterShow->var1C]);
- gUnknown_020387E8 = 18;
+ sTVShowState = 18;
break;
case 12:
state = 18;
- gUnknown_020387E8 = 18;
+ sTVShowState = 18;
case 18:
TVShowConvertInternationalString(gStringVar1, nameRaterShow->pokemonName, nameRaterShow->pokemonNameLanguage);
TVShowConvertInternationalString(gStringVar2, nameRaterShow->trainerName, nameRaterShow->language);
@@ -3214,7 +3223,7 @@ void DoTVShowPokemonTodaySuccessfulCapture(void)
u8 state;
gSpecialVar_Result = 0;
- state = gUnknown_020387E8;
+ state = sTVShowState;
switch (state)
{
case 0:
@@ -3222,53 +3231,53 @@ void DoTVShowPokemonTodaySuccessfulCapture(void)
StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]);
TVShowConvertInternationalString(gStringVar3, pokemonToday->nickname, pokemonToday->language2);
if (pokemonToday->ball == ITEM_MASTER_BALL)
- gUnknown_020387E8 = 5;
+ sTVShowState = 5;
else
- gUnknown_020387E8 = 1;
+ sTVShowState = 1;
break;
case 1:
- gUnknown_020387E8 = 2;
+ sTVShowState = 2;
break;
case 2:
StringCopy(gStringVar2, ItemId_GetItem(pokemonToday->ball)->name);
sub_80BF088(2, pokemonToday->var12);
if (pokemonToday->var12 < 4)
- gUnknown_020387E8 = 3;
+ sTVShowState = 3;
else
- gUnknown_020387E8 = 4;
+ sTVShowState = 4;
break;
case 3:
TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language);
StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]);
TVShowConvertInternationalString(gStringVar3, pokemonToday->nickname, pokemonToday->language2);
- gUnknown_020387E8 = 6;
+ sTVShowState = 6;
break;
case 4:
- gUnknown_020387E8 = 6;
+ sTVShowState = 6;
break;
case 5:
TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language);
StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]);
- gUnknown_020387E8 = 6;
+ sTVShowState = 6;
break;
case 6:
TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language);
StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]);
TVShowConvertInternationalString(gStringVar3, pokemonToday->nickname, pokemonToday->language2);
- gUnknown_020387E8 += (Random() % 4) + 1;
+ sTVShowState += (Random() % 4) + 1;
break;
case 7:
case 8:
StringCopy(gStringVar1, gSpeciesNames[pokemonToday->species]);
TVShowConvertInternationalString(gStringVar2, pokemonToday->nickname, pokemonToday->language2);
sub_80BF638(2, pokemonToday->species);
- gUnknown_020387E8 = 11;
+ sTVShowState = 11;
break;
case 9:
case 10:
StringCopy(gStringVar1, gSpeciesNames[pokemonToday->species]);
TVShowConvertInternationalString(gStringVar2, pokemonToday->nickname, pokemonToday->language2);
- gUnknown_020387E8 = 11;
+ sTVShowState = 11;
break;
case 11:
TVShowDone();
@@ -3283,36 +3292,36 @@ void DoTVShowPokemonTodayFailedCapture(void)
u8 state;
gSpecialVar_Result = 0;
- state = gUnknown_020387E8;
+ state = sTVShowState;
switch (state)
{
case 0:
TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language);
StringCopy(gStringVar2, gSpeciesNames[pokemonTodayFailed->species]);
- gUnknown_020387E8 = 1;
+ sTVShowState = 1;
break;
case 1:
TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language);
GetMapSectionName(gStringVar2, pokemonTodayFailed->var12, 0);
StringCopy(gStringVar3, gSpeciesNames[pokemonTodayFailed->species2]);
if (pokemonTodayFailed->var11 == 1)
- gUnknown_020387E8 = 3;
+ sTVShowState = 3;
else
- gUnknown_020387E8 = 2;
+ sTVShowState = 2;
break;
case 2:
case 3:
TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language);
sub_80BF088(1, pokemonTodayFailed->var10);
if ((Random() % 3) == 0)
- gUnknown_020387E8 = 5;
+ sTVShowState = 5;
else
- gUnknown_020387E8 = 4;
+ sTVShowState = 4;
break;
case 4:
case 5:
TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language);
- gUnknown_020387E8 = 6;
+ sTVShowState = 6;
break;
case 6:
TVShowDone();
@@ -3328,32 +3337,32 @@ void DoTVShowPokemonFanClubLetter(void)
u16 rval;
gSpecialVar_Result = 0;
- state = gUnknown_020387E8;
+ state = sTVShowState;
switch (state)
{
case 0:
TVShowConvertInternationalString(gStringVar1, fanclubLetter->playerName, fanclubLetter->language);
StringCopy(gStringVar2, gSpeciesNames[fanclubLetter->species]);
- gUnknown_020387E8 = 50;
+ sTVShowState = 50;
break;
case 1:
rval = (Random() % 4) + 1;
if (rval == 1)
- gUnknown_020387E8 = 2;
+ sTVShowState = 2;
else
- gUnknown_020387E8 = rval + 2;
+ sTVShowState = rval + 2;
break;
case 2:
- gUnknown_020387E8 = 51;
+ sTVShowState = 51;
break;
case 3:
- gUnknown_020387E8 += (Random() % 3) + 1;
+ sTVShowState += (Random() % 3) + 1;
break;
case 4:
case 5:
case 6:
sub_80BF79C((TVShow *)fanclubLetter);
- gUnknown_020387E8 = 7;
+ sTVShowState = 7;
break;
case 7:
rval = (Random() % 0x1f) + 0x46;
@@ -3363,12 +3372,12 @@ void DoTVShowPokemonFanClubLetter(void)
case 50:
ConvertEasyChatWordsToString(gStringVar4, fanclubLetter->pad04, 2, 2);
ShowFieldMessage(gStringVar4);
- gUnknown_020387E8 = 1;
+ sTVShowState = 1;
return;
case 51:
ConvertEasyChatWordsToString(gStringVar4, fanclubLetter->pad04, 2, 2);
ShowFieldMessage(gStringVar4);
- gUnknown_020387E8 = 3;
+ sTVShowState = 3;
return;
}
ShowFieldMessage(gTVFanClubTextGroup[state]);
@@ -3380,21 +3389,21 @@ void DoTVShowRecentHappenings(void)
u8 state;
gSpecialVar_Result = 0;
- state = gUnknown_020387E8;
+ state = sTVShowState;
switch (state)
{
case 0:
TVShowConvertInternationalString(gStringVar1, recentHappenings->playerName, recentHappenings->language);
sub_80BF79C((TVShow *)recentHappenings);
- gUnknown_020387E8 = 50;
+ sTVShowState = 50;
break;
case 1:
- gUnknown_020387E8 += 1 + (Random() % 3);
+ sTVShowState += 1 + (Random() % 3);
break;
case 2:
case 3:
case 4:
- gUnknown_020387E8 = 5;
+ sTVShowState = 5;
break;
case 5:
TVShowDone();
@@ -3402,7 +3411,7 @@ void DoTVShowRecentHappenings(void)
case 50:
ConvertEasyChatWordsToString(gStringVar4, recentHappenings->var04, 2, 2);
ShowFieldMessage(gStringVar4);
- gUnknown_020387E8 = 1;
+ sTVShowState = 1;
return;
}
ShowFieldMessage(gTVRecentHappeningsTextGroup[state]);
@@ -3414,14 +3423,14 @@ void DoTVShowPokemonFanClubOpinions(void)
u8 state;
gSpecialVar_Result = 0;
- state = gUnknown_020387E8;
+ state = sTVShowState;
switch (state)
{
case 0:
TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language);
StringCopy(gStringVar2, gSpeciesNames[fanclubOpinions->var02]);
TVShowConvertInternationalString(gStringVar3, fanclubOpinions->var10, fanclubOpinions->var0E);
- gUnknown_020387E8 = fanclubOpinions->var04B + 1;
+ sTVShowState = fanclubOpinions->var04B + 1;
break;
case 1:
case 2:
@@ -3429,7 +3438,7 @@ void DoTVShowPokemonFanClubOpinions(void)
TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language);
StringCopy(gStringVar2, gSpeciesNames[fanclubOpinions->var02]);
EasyChat_GetWordText(gStringVar3, fanclubOpinions->var1C[0]);
- gUnknown_020387E8 = 4;
+ sTVShowState = 4;
break;
case 4:
TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language);
@@ -3452,7 +3461,7 @@ void DoTVShowPokemonNewsMassOutbreak(void)
StringCopy(gStringVar2, gSpeciesNames[massOutbreak->species]);
TVShowDone();
StartMassOutbreak();
- ShowFieldMessage(gTVPokemonOutbreakTextGroup[gUnknown_020387E8]);
+ ShowFieldMessage(gTVPokemonOutbreakTextGroup[sTVShowState]);
}
void DoTVShowInSearchOfTrainers(void)
@@ -3460,49 +3469,49 @@ void DoTVShowInSearchOfTrainers(void)
u8 state;
gSpecialVar_Result = 0;
- state = gUnknown_020387E8;
+ state = sTVShowState;
switch (state)
{
case 0:
GetMapSectionName(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0);
if (gSaveBlock1.gabbyAndTyData.battleNum > 1)
- gUnknown_020387E8 = 1;
+ sTVShowState = 1;
else
- gUnknown_020387E8 = 2;
+ sTVShowState = 2;
break;
case 1:
- gUnknown_020387E8 = 2;
+ sTVShowState = 2;
break;
case 2:
if (gSaveBlock1.gabbyAndTyData.valA_0 == 0)
- gUnknown_020387E8 = 4;
+ sTVShowState = 4;
else if (gSaveBlock1.gabbyAndTyData.valA_3 != 0)
- gUnknown_020387E8 = 5;
+ sTVShowState = 5;
else if (gSaveBlock1.gabbyAndTyData.valA_2 != 0)
- gUnknown_020387E8 = 6;
+ sTVShowState = 6;
else if (gSaveBlock1.gabbyAndTyData.valA_1 != 0)
- gUnknown_020387E8 = 7;
+ sTVShowState = 7;
else
- gUnknown_020387E8 = 3;
+ sTVShowState = 3;
break;
case 3:
StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]);
StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.lastMove]);
StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]);
- gUnknown_020387E8 = 8;
+ sTVShowState = 8;
break;
case 4:
case 5:
case 6:
case 7:
- gUnknown_020387E8 = 8;
+ sTVShowState = 8;
break;
case 8:
EasyChat_GetWordText(gStringVar1, gSaveBlock1.gabbyAndTyData.quote);
StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]);
StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]);
gSpecialVar_Result = 1;
- gUnknown_020387E8 = 0;;
+ sTVShowState = 0;;
TakeTVShowInSearchOfTrainersOffTheAir();
break;
}
@@ -3516,10 +3525,10 @@ void DoTVShowPokemonAngler(void)
gSpecialVar_Result = 0;
if (pokemonAngler->var02 < pokemonAngler->var03)
- gUnknown_020387E8 = 0;
+ sTVShowState = 0;
else
- gUnknown_020387E8 = 1;
- state = gUnknown_020387E8;
+ sTVShowState = 1;
+ state = sTVShowState;
switch (state)
{
case 0:
@@ -3544,7 +3553,7 @@ void DoTVShowTheWorldOfMasters(void)
u8 state;
gSpecialVar_Result = 0;
- state = gUnknown_020387E8;
+ state = sTVShowState;
switch (state)
{
case 0:
@@ -3552,11 +3561,11 @@ void DoTVShowTheWorldOfMasters(void)
worldOfMasters->language);
sub_80BF088(1, worldOfMasters->var06);
sub_80BF088(2, worldOfMasters->var02);
- gUnknown_020387E8 = 1;
+ sTVShowState = 1;
break;
case 1:
StringCopy(gStringVar1, gSpeciesNames[worldOfMasters->var08]);
- gUnknown_020387E8 = 2;
+ sTVShowState = 2;
break;
case 2:
TVShowConvertInternationalString(gStringVar1, worldOfMasters->playerName,
@@ -3572,11 +3581,11 @@ void DoTVShowTheWorldOfMasters(void)
void TVShowDone(void)
{
gSpecialVar_Result = 1;
- gUnknown_020387E8 = 0;
- gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 = 0;
+ sTVShowState = 0;
+ gSaveBlock1.tvShows[gSpecialVar_0x8004].common.active = 0;
}
-void sub_80C2014(void)
+void ResetTVShowState(void)
{
- gUnknown_020387E8 = 0;
+ sTVShowState = 0;
}