summaryrefslogtreecommitdiff
path: root/src/field
diff options
context:
space:
mode:
Diffstat (limited to 'src/field')
-rw-r--r--src/field/battle_tower.c239
-rw-r--r--src/field/berry.c601
-rw-r--r--src/field/choose_party.c121
-rw-r--r--src/field/event_object_movement.c794
-rw-r--r--src/field/field_player_avatar.c221
-rw-r--r--src/field/field_weather.c251
-rw-r--r--src/field/fldeff_cut.c141
-rw-r--r--src/field/fldeff_flash.c30
-rw-r--r--src/field/fldeff_secretpower.c128
-rw-r--r--src/field/item.c27
-rw-r--r--src/field/item_menu.c558
-rw-r--r--src/field/mauville_man.c103
-rw-r--r--src/field/overworld.c2
-rw-r--r--src/field/party_menu.c1531
-rw-r--r--src/field/pokeblock.c6
-rw-r--r--src/field/region_map.c202
-rw-r--r--src/field/secret_base.c511
-rw-r--r--src/field/shop.c52
-rw-r--r--src/field/slot_machine.c3741
-rw-r--r--src/field/start_menu.c370
-rw-r--r--src/field/tv.c10
21 files changed, 2377 insertions, 7262 deletions
diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c
index 41d5ae9d1..d4dbba120 100644
--- a/src/field/battle_tower.c
+++ b/src/field/battle_tower.c
@@ -33,7 +33,8 @@
#include "../data/battle_tower/trainers_de.h"
#endif
-static const u16 sBattleTowerHeldItems[] = {
+static const u16 sBattleTowerHeldItems[] =
+{
ITEM_NONE,
ITEM_KINGS_ROCK,
ITEM_SITRUS_BERRY,
@@ -102,7 +103,8 @@ static const u16 sBattleTowerHeldItems[] = {
#include "../data/battle_tower/level_50_mons.h"
#include "../data/battle_tower/level_100_mons.h"
-static const u8 sMaleTrainerClasses[] = {
+static const u8 sMaleTrainerClasses[] =
+{
FACILITY_CLASS_RUIN_MANIAC,
FACILITY_CLASS_TUBER_M,
FACILITY_CLASS_COOL_TRAINER_M,
@@ -135,7 +137,8 @@ static const u8 sMaleTrainerClasses[] = {
FACILITY_CLASS_HIKER,
};
-static const u8 sFemaleTrainerClasses[] = {
+static const u8 sFemaleTrainerClasses[] =
+{
FACILITY_CLASS_AROMA_LADY,
FACILITY_CLASS_TUBER_F,
FACILITY_CLASS_COOL_TRAINER_F,
@@ -158,7 +161,8 @@ static const u8 sFemaleTrainerClasses[] = {
FACILITY_CLASS_LASS,
};
-static const u8 sMaleTrainerGfxIds[] = {
+static const u8 sMaleTrainerGfxIds[] =
+{
MAP_OBJ_GFX_HIKER,
MAP_OBJ_GFX_TUBER_M,
MAP_OBJ_GFX_MAN_4,
@@ -191,7 +195,8 @@ static const u8 sMaleTrainerGfxIds[] = {
MAP_OBJ_GFX_HIKER,
};
-static const u8 sFemaleTrainerGfxIds[] = {
+static const u8 sFemaleTrainerGfxIds[] =
+{
MAP_OBJ_GFX_WOMAN_3,
MAP_OBJ_GFX_TUBER_F,
MAP_OBJ_GFX_WOMAN_7,
@@ -214,7 +219,8 @@ static const u8 sFemaleTrainerGfxIds[] = {
MAP_OBJ_GFX_LASS,
};
-const u16 gBattleTowerBannedSpecies[] = {
+const u16 gBattleTowerBannedSpecies[] =
+{
SPECIES_MEW,
SPECIES_MEWTWO,
SPECIES_HO_OH,
@@ -229,7 +235,8 @@ const u16 gBattleTowerBannedSpecies[] = {
};
// Item prizes for battle tower streaks of 5 or fewer sets.
-/*static*/ const u16 sShortStreakPrizes[] = {
+static const u16 sShortStreakPrizes[] =
+{
ITEM_HP_UP,
ITEM_PROTEIN,
ITEM_IRON,
@@ -239,7 +246,8 @@ const u16 gBattleTowerBannedSpecies[] = {
};
// Item prizes for battle tower streaks of greater than 5 sets.
-/*static*/ const u16 sLongStreakPrizes[] = {
+static const u16 sLongStreakPrizes[] =
+{
ITEM_BRIGHT_POWDER,
ITEM_WHITE_HERB,
ITEM_QUICK_CLAW,
@@ -259,7 +267,6 @@ static void SaveCurrentWinStreak(void);
static void sub_8135CFC(void);
static void CheckMonBattleTowerBanlist(u16, u16, u16, u8, u8, u16 *, u16 *, u8 *);
static void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *);
-void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer);
static void SetBattleTowerRecordChecksum(struct BattleTowerRecord *);
static void ClearBattleTowerRecord(struct BattleTowerRecord *);
@@ -293,9 +300,7 @@ void sub_8134548(void)
default:
ResetBattleTowerStreak(levelType);
if (!var1)
- {
VarSet(VAR_TEMP_0, 5);
- }
break;
case 1:
ResetBattleTowerStreak(levelType);
@@ -321,10 +326,8 @@ 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))
- {
+ && (gSaveBlock2.battleTower.var_4AE[1] == 3 || gSaveBlock2.battleTower.var_4AE[1] == 6))
VarSet(VAR_TEMP_0, 5);
- }
ValidateBattleTowerRecordChecksums();
}
@@ -351,23 +354,18 @@ bool8 ShouldBattleEReaderTrainer(u8 levelType, u16 winStreak)
ValidateEReaderTrainer();
if (gSpecialVar_Result != 0 || gSaveBlock2.battleTower.ereaderTrainer.winStreak != winStreak)
- {
return FALSE;
- }
- trainerTeamLevel = 50;
if (levelType != 0)
- {
trainerTeamLevel = 100;
- }
+ else
+ trainerTeamLevel = 50;
for (i = 0; i < 3; i++)
{
monLevel = gSaveBlock2.battleTower.ereaderTrainer.party[i].level;
if (gSaveBlock2.battleTower.ereaderTrainer.party[i].level != trainerTeamLevel)
- {
return FALSE;
- }
CheckMonBattleTowerBanlist(
gSaveBlock2.battleTower.ereaderTrainer.party[i].species,
@@ -380,7 +378,7 @@ bool8 ShouldBattleEReaderTrainer(u8 levelType, u16 winStreak)
&numValid);
}
- return numValid == 3;
+ return (numValid == 3);
}
bool8 sub_81346F4(void)
@@ -409,6 +407,7 @@ bool8 sub_81346F4(void)
struct BattleTowerRecord *record = &gSaveBlock2.battleTower.records[recordIndex];
u32 recordHasData = 0;
u32 checksum = 0;
+
for (i = 0; i < sizeof(struct BattleTowerRecord) / sizeof(u32) - 1; i++)
{
recordHasData |= ((u32 *)record)[i];
@@ -416,9 +415,9 @@ bool8 sub_81346F4(void)
}
if (gSaveBlock2.battleTower.records[recordIndex].winStreak == winStreak
- && gSaveBlock2.battleTower.records[recordIndex].battleTowerLevelType == battleTowerLevelType
- && recordHasData
- && gSaveBlock2.battleTower.records[recordIndex].checksum == checksum)
+ && gSaveBlock2.battleTower.records[recordIndex].battleTowerLevelType == battleTowerLevelType
+ && recordHasData
+ && gSaveBlock2.battleTower.records[recordIndex].checksum == checksum)
{
trainerIds[numCandidates] = recordIndex;
numCandidates++;
@@ -785,19 +784,17 @@ void SetBattleTowerTrainerGfxId(u8 trainerIndex)
u8 trainerClass;
if (trainerIndex < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
- {
trainerClass = gBattleTowerTrainers[trainerIndex].trainerClass;
- }
else if (trainerIndex < BATTLE_TOWER_EREADER_TRAINER_ID)
- {
trainerClass = gSaveBlock2.battleTower.records[trainerIndex - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass;
- }
else
- {
trainerClass = gSaveBlock2.battleTower.ereaderTrainer.trainerClass;
- }
- for (i = 0; i < 30 && sMaleTrainerClasses[i] != trainerClass; i++);
+ for (i = 0; i < 30; i++)
+ {
+ if (sMaleTrainerClasses[i] == trainerClass)
+ break;
+ }
if (i != 30)
{
u8 trainerObjectGfxId = sMaleTrainerGfxIds[i];
@@ -805,7 +802,11 @@ void SetBattleTowerTrainerGfxId(u8 trainerIndex)
return;
}
- for (i = 0; i < 20 && sFemaleTrainerClasses[i] != trainerClass; i++);
+ for (i = 0; i < 20; i++)
+ {
+ if (sFemaleTrainerClasses[i] == trainerClass)
+ break;
+ }
if (i != 20)
{
u8 trainerObjectGfxId = sFemaleTrainerGfxIds[i];
@@ -1144,33 +1145,21 @@ _08134C70: .4byte gSaveBlock2\n\
u8 get_trainer_class_pic_index(void)
{
if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
- {
return gTrainerClassToPicIndex[gSaveBlock2.battleTower.ereaderTrainer.trainerClass];
- }
else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
- {
return gTrainerClassToPicIndex[gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].trainerClass];
- }
else
- {
return gTrainerClassToPicIndex[gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass];
- }
}
u8 get_trainer_class_name_index(void)
{
if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
- {
return gTrainerClassToNameIndex[gSaveBlock2.battleTower.ereaderTrainer.trainerClass];
- }
else if (gSaveBlock2.battleTower.battleTowerTrainerId >= BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
- {
return gTrainerClassToNameIndex[gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass];
- }
else
- {
return gTrainerClassToNameIndex[gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].trainerClass];
- }
}
void get_trainer_name(u8* dest)
@@ -1180,26 +1169,20 @@ void get_trainer_name(u8* dest)
if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
{
for (i = 0; i < 7; i++)
- {
dest[i] = gSaveBlock2.battleTower.ereaderTrainer.name[i];
- }
}
else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
{
for (i = 0; i < 7; i++)
- {
dest[i] = gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].name[i];
- }
}
else
{
for (i = 0; i < 7; i++)
- {
dest[i] = gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].name[i];
- }
}
- dest[i] = 0xFF;
+ dest[i] = EOS;
}
void FillBattleTowerTrainerParty(void)
@@ -1267,10 +1250,7 @@ void FillBattleTowerTrainerParty(void)
{
// Load E-Reader trainer's party.
for (partyIndex = 0; partyIndex < 3; partyIndex++)
- {
sub_803ADE8(&gEnemyParty[partyIndex], &gSaveBlock2.battleTower.ereaderTrainer.party[partyIndex]);
- }
-
return;
}
else
@@ -1282,7 +1262,6 @@ void FillBattleTowerTrainerParty(void)
&gEnemyParty[partyIndex],
&gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].party[partyIndex]);
}
-
return;
}
@@ -1330,10 +1309,8 @@ void FillBattleTowerTrainerParty(void)
for (i = 0; i < partyIndex; i++)
{
if (GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) != 0
- && GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) == sBattleTowerHeldItems[battleTowerMons[battleMonIndex].heldItem])
- {
+ && GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) == sBattleTowerHeldItems[battleTowerMons[battleMonIndex].heldItem])
break;
- }
}
if (i != partyIndex)
@@ -1342,7 +1319,12 @@ void FillBattleTowerTrainerParty(void)
// Ensure this exact pokemon index isn't a duplicate. This check doesn't seem necessary
// because the species and held items were already checked directly above. Perhaps this
// is leftover code before the logic for duplicate species and held items was added.
- for (i = 0; i < partyIndex && chosenMonIndices[i] != battleMonIndex; i++);
+ //for (i = 0; i < partyIndex && chosenMonIndices[i] != battleMonIndex; i++);
+ for (i = 0; i < partyIndex; i++)
+ {
+ if (chosenMonIndices[i] == battleMonIndex)
+ break;
+ }
if (i != partyIndex)
continue;
@@ -1362,10 +1344,7 @@ void FillBattleTowerTrainerParty(void)
{
SetMonMoveSlot(&gEnemyParty[partyIndex], battleTowerMons[battleMonIndex].moves[i], i);
if (battleTowerMons[battleMonIndex].moves[i] == MOVE_FRUSTRATION)
- {
- // MOVE_FRUSTRATION is more powerful the lower the pokemon's friendship is.
- friendship = 0;
- }
+ friendship = 0; // MOVE_FRUSTRATION is more powerful the lower the pokemon's friendship is.
}
SetMonData(&gEnemyParty[partyIndex], MON_DATA_FRIENDSHIP, &friendship);
@@ -1386,9 +1365,7 @@ u32 CountBattleTowerBanlistCaught(void)
for (i = 0; gBattleTowerBannedSpecies[i] != 0xFFFF; i++)
{
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleTowerBannedSpecies[i]), FLAG_GET_CAUGHT))
- {
numCaught++;
- }
}
return numCaught;
@@ -1399,7 +1376,6 @@ u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 curIndexToAppend, s32 numT
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT))
{
curIndexToAppend++;
-
switch (curIndexToAppend - 1)
{
case 0:
@@ -1409,24 +1385,15 @@ u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 curIndexToAppend, s32 numT
case 8:
case 10:
if (numToAppend == curIndexToAppend)
- {
StringAppend(gStringVar1, BattleText_Format3);
- }
else if (numToAppend > curIndexToAppend)
- {
StringAppend(gStringVar1, BattleText_Format4);
- }
break;
case 1:
if (curIndexToAppend == numToAppend)
- {
StringAppend(gStringVar1, BattleText_Format3);
- }
else
- {
StringAppend(gStringVar1, BattleText_Format4);
- }
-
StringAppend(gStringVar1, BattleText_Format7);
break;
case 3:
@@ -1435,18 +1402,12 @@ u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 curIndexToAppend, s32 numT
case 9:
default:
if (curIndexToAppend == numToAppend)
- {
StringAppend(gStringVar1, BattleText_Format3);
- }
else
- {
StringAppend(gStringVar1, BattleText_Format4);
- }
-
StringAppend(gStringVar1, BattleText_Format6);
break;
}
-
StringAppend(gStringVar1, gSpeciesNames[species]);
}
@@ -1464,7 +1425,7 @@ void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 battleTowe
while (1)
{
if (gBattleTowerBannedSpecies[counter] == 0xFFFF)
- goto EXIT2; // Couldn't get the code to match without this GOTO
+ break;
if (gBattleTowerBannedSpecies[counter] == species)
break;
@@ -1475,7 +1436,6 @@ void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 battleTowe
if (gBattleTowerBannedSpecies[counter] != 0xFFFF)
return;
- EXIT2:
if (battleTowerLevelType == 0 && monLevel > 50)
return;
@@ -1528,9 +1488,7 @@ void CheckPartyBattleTowerBanlist(void)
numBanlistCaught = CountBattleTowerBanlistCaught();
for (i = 0; gBattleTowerBannedSpecies[i] != 0xFFFF; i++)
- {
counter = AppendBattleTowerBannedSpeciesName(gBattleTowerBannedSpecies[i], counter, numBanlistCaught);
- }
if (counter == 0)
{
@@ -1561,17 +1519,11 @@ void PrintBattleTowerTrainerMessage(u16 *easyChat)
void PrintBattleTowerTrainerGreeting(void)
{
if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
- {
- PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.greeting.easyChat);
- }
+ PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.greeting);
else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
- {
- PrintBattleTowerTrainerMessage((u16 *)gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].greeting.easyChat);
- }
+ PrintBattleTowerTrainerMessage((u16 *)gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].greeting);
else
- {
- PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].greeting.easyChat);
- }
+ PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].greeting);
}
void sub_81354CC(void)
@@ -1643,9 +1595,7 @@ void StartSpecialBattle(void)
ZeroEnemyPartyMons();
for (i = 0; i < 3; i++)
- {
sub_803ADE8(&gEnemyParty[i], &gSaveBlock2.battleTower.ereaderTrainer.party[i]);
- }
gBattleTypeFlags = (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER);
gTrainerBattleOpponent = 0;
@@ -1683,34 +1633,22 @@ void SetBattleTowerProperty(void)
break;
case 5:
for (i = 0; i < 3; i++)
- {
gSaveBlock2.battleTower.selectedPartyMons[i] = gSelectedOrderFromParty[i];
- }
break;
case 6:
if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
- {
ClearEReaderTrainer(&gSaveBlock2.battleTower.ereaderTrainer);
- }
-
if (gSaveBlock2.battleTower.totalBattleTowerWins < 9999)
- {
gSaveBlock2.battleTower.totalBattleTowerWins++;
- }
-
gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]++;
SaveCurrentWinStreak();
gSpecialVar_Result = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType];
-
gStringVar1[0] = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] + 0xA1;
gStringVar1[1] = 0xFF;
break;
case 7:
if (gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType] < 1430)
- {
gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]++;
- }
-
SaveCurrentWinStreak();
gSpecialVar_Result = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType];
break;
@@ -1724,9 +1662,7 @@ void SetBattleTowerProperty(void)
break;
case 11:
if (gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] != 3)
- {
ResetBattleTowerStreak(battleTowerLevelType);
- }
break;
case 12:
gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = ewram160FB;
@@ -1794,9 +1730,7 @@ void SetBattleTowerParty(void)
s32 i;
for (i = 0; i < 3; i++)
- {
gSelectedOrderFromParty[i] = gSaveBlock2.battleTower.selectedPartyMons[i];
- }
ReducePlayerPartyToThree();
}
@@ -1858,14 +1792,10 @@ void sub_8135AC4(void)
playerRecord->winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
for (i = 0; i < 6; i++)
- {
- playerRecord->greeting.easyChat[i] = gSaveBlock1.easyChats.unk2B28[i];
- }
+ playerRecord->greeting[i] = gSaveBlock1.easyChats.unk2B28[i];
for (i = 0; i < 3; i++)
- {
sub_803AF78(&gUnknown_030042FC[gSaveBlock2.battleTower.selectedPartyMons[i]], &playerRecord->party[i]);
- }
SetBattleTowerRecordChecksum(&gSaveBlock2.battleTower.playerRecord);
SaveCurrentWinStreak();
@@ -1878,10 +1808,8 @@ void SaveBattleTowerProgress(void)
if (gSpecialVar_0x8004 == 3 || gSpecialVar_0x8004 == 0)
{
if (gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType] > 1
- || gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] > 1)
- {
+ || gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] > 1)
sub_8135AC4();
- }
}
sub_8135CFC();
@@ -1889,9 +1817,7 @@ void SaveBattleTowerProgress(void)
gSaveBlock2.battleTower.battleOutcome = gBattleOutcome;
if (gSpecialVar_0x8004 != 3)
- {
gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8004;
- }
VarSet(VAR_TEMP_0, 0);
gSaveBlock2.battleTower.unk_554 = 1;
@@ -1912,28 +1838,20 @@ void ValidateBattleTowerRecordChecksums(void)
checksum = 0;
for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++)
- {
checksum += ((u32 *)&gSaveBlock2.battleTower.playerRecord)[i];
- }
if (gSaveBlock2.battleTower.playerRecord.checksum != checksum)
- {
ClearBattleTowerRecord(&gSaveBlock2.battleTower.playerRecord);
- }
for (recordIndex = 0; recordIndex < 5; recordIndex++)
{
record = &gSaveBlock2.battleTower.records[recordIndex];
checksum = 0;
for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++)
- {
checksum += ((u32 *)record)[i];
- }
if (gSaveBlock2.battleTower.records[recordIndex].checksum != checksum)
- {
ClearBattleTowerRecord(&gSaveBlock2.battleTower.records[recordIndex]);
- }
}
}
@@ -1943,9 +1861,7 @@ void SetBattleTowerRecordChecksum(struct BattleTowerRecord *record)
record->checksum = 0;
for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++)
- {
record->checksum += ((u32 *)record)[i];
- }
}
void ClearBattleTowerRecord(struct BattleTowerRecord *record)
@@ -1953,9 +1869,7 @@ void ClearBattleTowerRecord(struct BattleTowerRecord *record)
u32 i;
for (i = 0; i < sizeof(struct BattleTowerRecord) / sizeof(u32); i++)
- {
((u32 *)record)[i] = 0;
- }
}
void sub_8135CFC(void)
@@ -1967,9 +1881,7 @@ void sub_8135CFC(void)
gSaveBlock2.battleTower.firstMonSpecies = gBattleMons[0].species;
for (i = 0; i < POKEMON_NAME_LENGTH; i++)
- {
gSaveBlock2.battleTower.firstMonNickname[i] = gBattleMons[0].nickname[i];
- }
}
u16 GetCurrentBattleTowerWinStreak(u8 battleTowerLevelType)
@@ -1978,11 +1890,9 @@ u16 GetCurrentBattleTowerWinStreak(u8 battleTowerLevelType)
+ gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType];
if (winStreak > 9999)
- {
return 9999;
- }
-
- return winStreak;
+ else
+ return winStreak;
}
void DetermineBattleTowerPrize(void)
@@ -2019,11 +1929,10 @@ void AwardBattleTowerRibbons(void)
u8 ribbonType;
u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType;
- ribbonType = MON_DATA_WINNING_RIBBON;
if (battleTowerLevelType != 0)
- {
ribbonType = MON_DATA_VICTORY_RIBBON;
- }
+ else
+ ribbonType = MON_DATA_WINNING_RIBBON;
gSpecialVar_Result = 0;
@@ -2042,9 +1951,7 @@ void AwardBattleTowerRibbons(void)
}
if (gSpecialVar_Result != 0)
- {
IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS);
- }
}
// This is a leftover debugging function that is used to populate the E-Reader
@@ -2076,16 +1983,14 @@ void Debug_FillEReaderTrainerWithPlayerData(void)
j = 7;
for (i = 0; i < 6; i++)
{
- ereaderTrainer->greeting.easyChat[i] = gSaveBlock1.easyChats.unk2B28[i];
- ereaderTrainer->farewellPlayerLost.easyChat[i] = j;
- ereaderTrainer->farewellPlayerWon.easyChat[i] = j + 6;
+ ereaderTrainer->greeting[i] = gSaveBlock1.easyChats.unk2B28[i];
+ ereaderTrainer->farewellPlayerLost[i] = j;
+ ereaderTrainer->farewellPlayerWon[i] = j + 6;
j++;
}
for (i = 0; i < 3; i++)
- {
sub_803AF78(&gPlayerParty[i], &ereaderTrainer->party[i]);
- }
SetEReaderTrainerChecksum(ereaderTrainer);
}
@@ -2105,9 +2010,7 @@ void SetEReaderTrainerName(u8 *trainerName)
s32 i;
for (i = 0; i < 7; i++)
- {
trainerName[i] = gSaveBlock2.battleTower.ereaderTrainer.name[i];
- }
trainerName[i] = 0xFF;
}
@@ -2124,9 +2027,7 @@ void ValidateEReaderTrainer(void)
checksum = 0;
for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++)
- {
checksum |= ((u32 *)ereaderTrainer)[i];
- }
if (checksum == 0)
{
@@ -2136,9 +2037,7 @@ void ValidateEReaderTrainer(void)
checksum = 0;
for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++)
- {
checksum += ((u32 *)ereaderTrainer)[i];
- }
if (gSaveBlock2.battleTower.ereaderTrainer.checksum != checksum)
{
@@ -2153,9 +2052,7 @@ void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer)
ereaderTrainer->checksum = 0;
for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++)
- {
ereaderTrainer->checksum += ((u32 *)ereaderTrainer)[i];
- }
}
void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *ereaderTrainer)
@@ -2163,30 +2060,22 @@ void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *ereaderTrainer)
u32 i;
for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32); i++)
- {
((u32 *)ereaderTrainer)[i] = 0;
- }
}
void PrintEReaderTrainerGreeting(void)
{
- PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.greeting.easyChat);
+ PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.greeting);
}
void PrintEReaderTrainerFarewellMessage(void)
{
if (gBattleOutcome == BATTLE_DREW)
- {
- gStringVar4[0] = 0xFF;
- }
+ gStringVar4[0] = EOS;
else if (gBattleOutcome == BATTLE_WON)
- {
- PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerWon.easyChat);
- }
+ PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerWon);
else
- {
- PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerLost.easyChat);
- }
+ PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerLost);
}
void TryEnableBravoTrainerBattleTower(void)
@@ -2196,9 +2085,7 @@ void TryEnableBravoTrainerBattleTower(void)
for (i = 0; i < 2; i++)
{
if (gSaveBlock2.battleTower.var_4AE[i] == 1)
- {
sub_80BFD20();
- }
}
}
@@ -2206,17 +2093,11 @@ void TryEnableBravoTrainerBattleTower(void)
u8 de_sub_81364AC(void)
{
if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
- {
return gSaveBlock2.battleTower.ereaderTrainer.trainerClass;
- }
else if (gSaveBlock2.battleTower.battleTowerTrainerId >= BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
- {
return gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass;
- }
else
- {
return gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].trainerClass;
- }
}
u8 de_sub_81364F8(void)
diff --git a/src/field/berry.c b/src/field/berry.c
index 33effb4ce..9313c458b 100644
--- a/src/field/berry.c
+++ b/src/field/berry.c
@@ -8,7 +8,9 @@
#include "item_use.h"
#include "constants/items.h"
#include "main.h"
+#include "menu.h"
#include "random.h"
+#include "task.h"
#include "text.h"
#define BERRY_NAME_LENGTH 6
@@ -1000,63 +1002,27 @@ static u8 CalcBerryYield(struct BerryTree *tree);
static u16 GetStageDurationByBerryType(u8 berry);
#if DEBUG
-__attribute__((naked))
-void debug_sub_80C2B04()
+
+extern u8 sub_80B47D8(u16 var);
+
+u8 debug_sub_80C2B04(void)
{
- asm(
- " push {lr}\n"
- " mov r0, #0x0\n"
- " bl sub_80B47D8\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " ldr r2, ._1 @ gTasks\n"
- " lsl r1, r0, #0x2\n"
- " add r1, r1, r0\n"
- " lsl r1, r1, #0x3\n"
- " add r1, r1, r2\n"
- " ldrh r0, [r1, #0x10]\n"
- " sub r0, r0, #0x1\n"
- " strh r0, [r1, #0x10]\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._2:\n"
- " .align 2, 0\n"
- "._1:\n"
- " .word gTasks\n"
- "\n"
- );
+ u8 taskId = sub_80B47D8(0);
+
+ gTasks[taskId].data[4]--;
+ CloseMenu();
+ return 1;
}
-__attribute__((naked))
-void debug_sub_80C2B30()
+u8 debug_sub_80C2B30(void)
{
- asm(
- " push {lr}\n"
- " mov r0, #0x1\n"
- " bl sub_80B47D8\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " ldr r2, ._3 @ gTasks\n"
- " lsl r1, r0, #0x2\n"
- " add r1, r1, r0\n"
- " lsl r1, r1, #0x3\n"
- " add r1, r1, r2\n"
- " ldrh r0, [r1, #0x10]\n"
- " sub r0, r0, #0x1\n"
- " strh r0, [r1, #0x10]\n"
- " bl CloseMenu\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._4:\n"
- " .align 2, 0\n"
- "._3:\n"
- " .word gTasks\n"
- "\n"
- );
+ u8 taskId = sub_80B47D8(1);
+
+ gTasks[taskId].data[4]--;
+ CloseMenu();
+ return 1;
}
+
#endif
// unused
@@ -1082,180 +1048,6 @@ void SetEnigmaBerry(u8 *src)
gSaveBlock1.enigmaBerry.berry.description2 = gSaveBlock1.enigmaBerry.description2;
}
-#if DEBUG
-__attribute__((naked))
-void debug_sub_80C2BD0()
-{
- asm(
- " push {r4, r5, r6, r7, lr}\n"
- " ldr r3, ._11 @ gSaveBlock1\n"
- " ldr r1, ._11 + 4 @ 0x316c\n"
- " add r4, r3, r1\n"
- " ldr r6, [r4]\n"
- " add r1, r1, #0x4\n"
- " add r2, r3, r1\n"
- " ldr r7, [r2]\n"
- " mov r1, #0x0\n"
- " str r1, [r4]\n"
- " str r1, [r2]\n"
- " add r4, r0, #0\n"
- " mov r2, #0x0\n"
- " ldr r5, ._11 + 8 @ 0x52b\n"
- "._10:\n"
- " add r0, r4, r1\n"
- " ldrb r0, [r0]\n"
- " add r2, r2, r0\n"
- " add r1, r1, #0x1\n"
- " cmp r1, r5\n"
- " bls ._10 @cond_branch\n"
- " ldr r1, ._11 + 4 @ 0x316c\n"
- " add r0, r3, r1\n"
- " str r6, [r0]\n"
- " add r1, r1, #0x4\n"
- " add r0, r3, r1\n"
- " str r7, [r0]\n"
- " add r0, r2, #0\n"
- " pop {r4, r5, r6, r7}\n"
- " pop {r1}\n"
- " bx r1\n"
- "._12:\n"
- " .align 2, 0\n"
- "._11:\n"
- " .word gSaveBlock1\n"
- " .word 0x316c\n"
- " .word 0x52b\n"
- "\n"
- );
-}
-#endif
-
-#if DEBUG
-__attribute__((naked))
-u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
-{
- asm(
- " push {r4, r5, r6, r7, lr}\n"
- " mov r7, r9\n"
- " mov r6, r8\n"
- " push {r6, r7}\n"
- " add r3, r0, #0\n"
- " lsl r1, r1, #0x18\n"
- " lsr r1, r1, #0x18\n"
- " mov r9, r1\n"
- " lsl r2, r2, #0x18\n"
- " lsr r2, r2, #0x18\n"
- " mov r8, r2\n"
- " ldr r4, ._16 @ gSaveBlock1\n"
- " ldr r1, ._16 + 4 @ 0x3160\n"
- " add r0, r4, r1\n"
- " add r2, r0, #0\n"
- " ldr r1, ._16 + 8 @ gBerries\n"
- " ldmia r1!, {r5, r6, r7}\n"
- " stmia r2!, {r5, r6, r7}\n"
- " ldmia r1!, {r5, r6, r7}\n"
- " stmia r2!, {r5, r6, r7}\n"
- " ldr r1, [r1]\n"
- " str r1, [r2]\n"
- " add r1, r3, #0\n"
- " bl StringCopy\n"
- " ldr r0, ._16 + 12 @ 0x361c\n"
- " add r6, r4, r0\n"
- " ldr r1, ._16 + 16 @ gUnknown_Debug_083F7F84\n"
- " add r0, r6, #0\n"
- " bl StringCopy\n"
- " ldr r1, ._16 + 20 @ 0x3649\n"
- " add r5, r4, r1\n"
- " ldr r1, ._16 + 24 @ gUnknown_Debug_083F7F90\n"
- " add r0, r5, #0\n"
- " bl StringCopy\n"
- " ldr r2, ._16 + 28 @ 0x316c\n"
- " add r0, r4, r2\n"
- " str r6, [r0]\n"
- " ldr r6, ._16 + 32 @ 0x3170\n"
- " add r0, r4, r6\n"
- " str r5, [r0]\n"
- " mov r2, #0x0\n"
- " ldr r6, ._16 + 36 @ 0x47f\n"
- " ldr r7, ._16 + 40 @ 0x317c\n"
- " add r5, r4, r7\n"
- " ldr r3, ._16 + 44 @ gSpriteImage_UnusedCherry\n"
- "._13:\n"
- " add r0, r2, r5\n"
- " add r1, r2, r3\n"
- " ldrb r1, [r1]\n"
- " strb r1, [r0]\n"
- " add r2, r2, #0x1\n"
- " cmp r2, r6\n"
- " ble ._13 @cond_branch\n"
- " ldr r0, ._16 @ gSaveBlock1\n"
- " ldr r3, ._16 + 48 @ gSpritePalette_UnusedCherry\n"
- " ldr r2, ._16 + 52 @ 0x35fc\n"
- " add r1, r0, r2\n"
- " mov r2, #0xf\n"
- "._14:\n"
- " ldrh r0, [r3]\n"
- " strh r0, [r1]\n"
- " add r3, r3, #0x2\n"
- " add r1, r1, #0x2\n"
- " sub r2, r2, #0x1\n"
- " cmp r2, #0\n"
- " bge ._14 @cond_branch\n"
- " mov r2, #0x0\n"
- " ldr r5, ._16 + 56 @ gSaveBlock1\n"
- " ldr r3, ._16 + 60 @ gUnknown_Debug_839B6CE\n"
- "._15:\n"
- " add r0, r2, r5\n"
- " add r1, r2, r3\n"
- " ldrb r1, [r1]\n"
- " strb r1, [r0]\n"
- " add r2, r2, #0x1\n"
- " cmp r2, #0x11\n"
- " ble ._15 @cond_branch\n"
- " ldr r5, ._16 + 64 @ 0x3688\n"
- " add r0, r4, r5\n"
- " mov r6, r9\n"
- " strb r6, [r0]\n"
- " ldr r7, ._16 + 68 @ 0x3689\n"
- " add r0, r4, r7\n"
- " mov r1, r8\n"
- " strb r1, [r0]\n"
- " ldr r2, ._16 + 4 @ 0x3160\n"
- " add r0, r4, r2\n"
- " bl debug_sub_80C2BD0\n"
- " add r5, r5, #0x4\n"
- " add r1, r4, r5\n"
- " str r0, [r1]\n"
- " pop {r3, r4}\n"
- " mov r8, r3\n"
- " mov r9, r4\n"
- " pop {r4, r5, r6, r7}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._17:\n"
- " .align 2, 0\n"
- "._16:\n"
- " .word gSaveBlock1\n"
- " .word 0x3160\n"
- " .word gBerries\n"
- " .word 0x361c\n"
- " .word gUnknown_Debug_083F7F84\n"
- " .word 0x3649\n"
- " .word gUnknown_Debug_083F7F90\n"
- " .word 0x316c\n"
- " .word 0x3170\n"
- " .word 0x47f\n"
- " .word 0x317c\n"
- " .word gSpriteImage_UnusedCherry\n"
- " .word gSpritePalette_UnusedCherry\n"
- " .word 0x35fc\n"
- " .word gSaveBlock1+0x3676\n"
- " .word gUnknown_Debug_839B6CE\n"
- " .word 0x3688\n"
- " .word 0x3689\n"
- "\n"
- );
-}
-#else
static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
{
const u8 *description1;
@@ -1275,9 +1067,7 @@ static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
dest = (u8*)enigmaBerry;
checksum = 0;
for (i = 0; i < ((u32)&gSaveBlock1.enigmaBerry.checksum - (u32)&gSaveBlock1.enigmaBerry); i++)
- {
checksum += dest[i];
- }
// the checksum is calculated: the descriptions are safe to restore now.
gSaveBlock1.enigmaBerry.berry.description1 = description1;
@@ -1285,110 +1075,52 @@ static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
return checksum;
}
-#endif
#if DEBUG
-__attribute__((naked))
-void debug_sub_80C2D24()
+
+extern const u8 gSpriteImage_UnusedCherry[];
+extern const u16 gSpritePalette_UnusedCherry[];
+extern u8 gUnknown_Debug_839B6CE[];
+
+static const u8 gUnknown_Debug_083F7F84[] = _("そとから きた きのみ");
+static const u8 gUnknown_Debug_083F7F90[] = _("ただいま かいはつちゅう");
+
+void debug_sub_80C2C18(u8 *name, u8 holdEffect, u8 holdEffectParam)
{
- asm(
- " push {r4, r5, r6, r7, lr}\n"
- " mov r7, r8\n"
- " push {r7}\n"
- " ldr r6, [sp, #0x18]\n"
- " ldr r4, [sp, #0x1c]\n"
- " mov r8, r4\n"
- " ldr r5, ._18 @ gSaveBlock1\n"
- " ldr r7, ._18 + 4 @ 0x3175\n"
- " add r4, r5, r7\n"
- " strb r0, [r4]\n"
- " ldr r4, ._18 + 8 @ 0x3176\n"
- " add r0, r5, r4\n"
- " strb r1, [r0]\n"
- " add r7, r7, #0x2\n"
- " add r0, r5, r7\n"
- " strb r2, [r0]\n"
- " ldr r1, ._18 + 12 @ 0x3178\n"
- " add r0, r5, r1\n"
- " strb r3, [r0]\n"
- " add r4, r4, #0x3\n"
- " add r0, r5, r4\n"
- " strb r6, [r0]\n"
- " add r7, r7, #0x3\n"
- " add r0, r5, r7\n"
- " mov r1, r8\n"
- " strb r1, [r0]\n"
- " sub r4, r4, #0x19\n"
- " add r0, r5, r4\n"
- " bl debug_sub_80C2BD0\n"
- " ldr r7, ._18 + 16 @ 0x368c\n"
- " add r5, r5, r7\n"
- " str r0, [r5]\n"
- " pop {r3}\n"
- " mov r8, r3\n"
- " pop {r4, r5, r6, r7}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._19:\n"
- " .align 2, 0\n"
- "._18:\n"
- " .word gSaveBlock1\n"
- " .word 0x3175\n"
- " .word 0x3176\n"
- " .word 0x3178\n"
- " .word 0x368c\n"
- "\n"
- );
+ s32 i;
+
+ gSaveBlock1.enigmaBerry.berry = gBerries[0];
+ StringCopy(gSaveBlock1.enigmaBerry.berry.name, name);
+ StringCopy(gSaveBlock1.enigmaBerry.description1, gUnknown_Debug_083F7F84);
+ StringCopy(gSaveBlock1.enigmaBerry.description2, gUnknown_Debug_083F7F90);
+ gSaveBlock1.enigmaBerry.berry.description1 = gSaveBlock1.enigmaBerry.description1;
+ gSaveBlock1.enigmaBerry.berry.description2 = gSaveBlock1.enigmaBerry.description2;
+ for (i = 0; i < 0x480; i++)
+ gSaveBlock1.enigmaBerry.pic[i] = gSpriteImage_UnusedCherry[i];
+ for (i = 0; i < 16; i++)
+ gSaveBlock1.enigmaBerry.palette[i] = gSpritePalette_UnusedCherry[i];
+ for (i = 0; i < 18; i++)
+ gSaveBlock1.enigmaBerry.itemEffect[i] = gUnknown_Debug_839B6CE[i];
+ gSaveBlock1.enigmaBerry.holdEffect = holdEffect;
+ gSaveBlock1.enigmaBerry.holdEffectParam = holdEffectParam;
+ gSaveBlock1.enigmaBerry.checksum = GetEnigmaBerryChecksum(&gSaveBlock1.enigmaBerry);
}
+
+void debug_sub_80C2D24(u8 spicy, u8 dry, u8 sweet, u8 bitter, u8 sour, u8 smoothness)
+{
+ gSaveBlock1.enigmaBerry.berry.spicy = spicy;
+ gSaveBlock1.enigmaBerry.berry.dry = dry;
+ gSaveBlock1.enigmaBerry.berry.sweet = sweet;
+ gSaveBlock1.enigmaBerry.berry.bitter = bitter;
+ gSaveBlock1.enigmaBerry.berry.sour = sour;
+ gSaveBlock1.enigmaBerry.berry.smoothness = smoothness;
+ gSaveBlock1.enigmaBerry.checksum = GetEnigmaBerryChecksum(&gSaveBlock1.enigmaBerry);
+}
+
#endif
// due to e-reader scans being particularly volatile to failure, it is a requirement to check for
// their integrity here due to scans possibly failing to produce the correct result.
-#if DEBUG
-__attribute__((naked))
-bool32 IsEnigmaBerryValid()
-{
- asm(
- " push {r4, lr}\n"
- " ldr r4, ._24 @ gSaveBlock1\n"
- " ldr r1, ._24 + 4 @ 0x3174\n"
- " add r0, r4, r1\n"
- " ldrb r0, [r0]\n"
- " cmp r0, #0\n"
- " beq ._22 @cond_branch\n"
- " ldr r2, ._24 + 8 @ 0x316a\n"
- " add r0, r4, r2\n"
- " ldrb r0, [r0]\n"
- " cmp r0, #0\n"
- " beq ._22 @cond_branch\n"
- " ldr r1, ._24 + 12 @ 0x3160\n"
- " add r0, r4, r1\n"
- " bl debug_sub_80C2BD0\n"
- " ldr r2, ._24 + 16 @ 0x368c\n"
- " add r1, r4, r2\n"
- " ldr r1, [r1]\n"
- " cmp r0, r1\n"
- " bne ._22 @cond_branch\n"
- " mov r0, #0x1\n"
- " b ._23\n"
- "._25:\n"
- " .align 2, 0\n"
- "._24:\n"
- " .word gSaveBlock1\n"
- " .word 0x3174\n"
- " .word 0x316a\n"
- " .word 0x3160\n"
- " .word 0x368c\n"
- "._22:\n"
- " mov r0, #0x0\n"
- "._23:\n"
- " pop {r4}\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-#else
bool32 IsEnigmaBerryValid(void)
{
if (gSaveBlock1.enigmaBerry.berry.stageDuration == 0)
@@ -1399,7 +1131,6 @@ bool32 IsEnigmaBerryValid(void)
return FALSE;
return TRUE;
}
-#endif
const struct Berry *GetBerryInfo(u8 berry)
{
@@ -1410,9 +1141,9 @@ const struct Berry *GetBerryInfo(u8 berry)
return &gSaveBlock1.enigmaBerry.berry;
else
{
- // invalid berries will be flattened into a cheri berry. Interestingly, if your berry was
+ // invalid berries will be flattened into a cheri berry. Interestingly, if your berry was
// an enigma berry whos checksum failed, the game will use the Enigma Berry information
- // for this: meaning if you see the Enigma Berry information, its actually because the
+ // for this: meaning if you see the Enigma Berry information, its actually because the
// checksum failed.
if (berry == BERRY_NONE || berry > GETBERRYID(LAST_BERRY))
berry = GETBERRYID(FIRST_BERRY);
@@ -1526,8 +1257,8 @@ void BerryTreeTimeUpdate(s32 minutesPassed)
if (tree->berry != BERRY_NONE && tree->stage != BERRY_STAGE_NO_BERRY && tree->growthSparkle == FALSE)
{
// the player has waited too long to water the berry. Reset the tree. This is because
- // if the berry state is not in the unwatered state, the tree will grow anyway despite this
- // check, which means BerryTreeGrow will handle the regrow process for this, removing the
+ // if the berry state is not in the unwatered state, the tree will grow anyway despite this
+ // check, which means BerryTreeGrow will handle the regrow process for this, removing the
// need for this check. This only handles the unwatered soil state.
if (minutesPassed >= GetStageDurationByBerryType(tree->berry) * 71)
{
@@ -1546,7 +1277,7 @@ void BerryTreeTimeUpdate(s32 minutesPassed)
// its been X minutes since the last berry update, so update
// minutesUntilNextStage appropriately to match the time offset
// that has passed since the update.
- tree->minutesUntilNextStage -= time;
+ tree->minutesUntilNextStage -= time;
break;
}
// perform the subtraction the other way around to get the number of minutes since
@@ -1712,7 +1443,7 @@ void FieldObjectInteractionGetBerryTreeData(void)
// we cannot allow the player to grow/interact with the tree while the tree
// is undergoing the sparkling effect, so set the special var to the sparkling
// state and let the event script process the flag.
- gSpecialVar_0x8004 = BERRY_STAGE_SPARKLING;
+ gSpecialVar_0x8004 = BERRY_STAGE_SPARKLING;
}
else
gSpecialVar_0x8004 = GetStageByBerryTreeId(id);
@@ -1754,173 +1485,53 @@ bool8 PlayerHasBerries(void)
}
#if DEBUG
-void debug_sub_80C33FC(u8 *buffer, s32 value, u8 n)
+void debug_sub_80C33FC(const u8 *buffer, s32 value, u8 n)
{
StringAppend(gStringVar4, buffer);
ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEADING_ZEROS, n);
StringAppend(gStringVar4, gStringVar1);
}
-extern const u8 gUnknown_Debug_083F7F9D[];
-extern const u8 gUnknown_Debug_083F7FA2[];
-extern const u8 gUnknown_Debug_083F7FA9[];
-extern const u8 gUnknown_Debug_083F7FB0[];
-extern const u8 gUnknown_Debug_083F7FB7[];
-extern const u8 gUnknown_Debug_083F7FBE[];
-extern const u8 gUnknown_Debug_083F7FC5[];
-extern const u8 gUnknown_Debug_083F7FCC[];
-extern const u8 gUnknown_Debug_083F7FD3[];
-extern const u8 gUnknown_Debug_083F7FD3[];
-extern const u8 gUnknown_Debug_083F7FD3[];
-
-#ifdef NONMATCHING
+static const u8 gUnknown_Debug_083F7F9D[] = _("POS:");
+static const u8 gUnknown_Debug_083F7FA2[] = _("\nTYPE:");
+static const u8 gUnknown_Debug_083F7FA9[] = _("\nGROW:");
+static const u8 gUnknown_Debug_083F7FB0[] = _("\nTIME:");
+static const u8 gUnknown_Debug_083F7FB7[] = _("\nFCNT:");
+static const u8 gUnknown_Debug_083F7FBE[] = _("\nSCNT:");
+static const u8 gUnknown_Debug_083F7FC5[] = _("\nHOOK:");
+static const u8 gUnknown_Debug_083F7FCC[] = _("\nWBIT:");
+static const u8 gUnknown_Debug_083F7FD3[] = _("");
+
u8* DebugOpenBerryInfo(void)
{
- s32 i;
- u8 berryTreeId;
- struct BerryTree *berryTree;
-
- if (GetFieldObjectScriptPointerPlayerFacing() != &S_BerryTree)
+ if (GetFieldObjectScriptPointerPlayerFacing() != S_BerryTree)
+ {
return NULL;
-
- berryTreeId = FieldObjectGetBerryTreeId(gSelectedMapObject);
- berryTree = GetBerryTreeInfo(berryTreeId);
-
- for (i = 0; i < 500; i++)
- gStringVar4[i] |= 0xFF;
-
- debug_sub_80C33FC(gUnknown_Debug_083F7F9D, berryTreeId, 3);
- debug_sub_80C33FC(gUnknown_Debug_083F7FA2, berryTree->berry, 2);
- debug_sub_80C33FC(gUnknown_Debug_083F7FA9, berryTree->stage, 2);
- debug_sub_80C33FC(gUnknown_Debug_083F7FB0, berryTree->secondsUntilNextStage, 5);
- debug_sub_80C33FC(gUnknown_Debug_083F7FB7, berryTree->berryYield, 2);
- debug_sub_80C33FC(gUnknown_Debug_083F7FBE, berryTree->regrowthCount, 3);
- debug_sub_80C33FC(gUnknown_Debug_083F7FC5, berryTree->growthSparkle, 1);
- debug_sub_80C33FC(gUnknown_Debug_083F7FCC, berryTree->watered1, 1);
- debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered2, 1);
- debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered3, 1);
- debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered4, 1);
-
- return gStringVar4;
-}
-#else
-__attribute__((naked))
-void DebugOpenBerryInfo()
-{
- asm(
- " push {r4, r5, r6, r7, lr}\n"
- " bl GetFieldObjectScriptPointerPlayerFacing\n"
- " ldr r1, ._138 @ S_BerryTree\n"
- " cmp r0, r1\n"
- " beq ._136 @cond_branch\n"
- " mov r0, #0x0\n"
- " b ._137\n"
- "._139:\n"
- " .align 2, 0\n"
- "._138:\n"
- " .word S_BerryTree\n"
- "._136:\n"
- " ldr r0, ._141 @ gSelectedMapObject\n"
- " ldrb r0, [r0]\n"
- " bl FieldObjectGetBerryTreeId\n"
- " lsl r0, r0, #0x18\n"
- " lsr r6, r0, #0x18\n"
- " add r0, r6, #0\n"
- " bl GetBerryTreeInfo\n"
- " add r5, r0, #0\n"
- " mov r2, #0x0\n"
- " ldr r7, ._141 + 4 @ 0x1f3\n"
- " ldr r4, ._141 + 8 @ gStringVar4\n"
- " mov r3, #0xff\n"
- "._140:\n"
- " add r1, r2, r4\n"
- " ldrb r0, [r1]\n"
- " orr r0, r0, r3\n"
- " strb r0, [r1]\n"
- " add r2, r2, #0x1\n"
- " cmp r2, r7\n"
- " ble ._140 @cond_branch\n"
- " ldr r0, ._141 + 12 @ gUnknown_Debug_083F7F9D\n"
- " add r1, r6, #0\n"
- " mov r2, #0x3\n"
- " bl debug_sub_80C33FC\n"
- " ldr r0, ._141 + 16 @ gUnknown_Debug_083F7FA2\n"
- " ldrb r1, [r5]\n"
- " mov r2, #0x2\n"
- " bl debug_sub_80C33FC\n"
- " ldr r0, ._141 + 20 @ gUnknown_Debug_083F7FA9\n"
- " ldrb r1, [r5, #0x1]\n"
- " lsl r1, r1, #0x19\n"
- " lsr r1, r1, #0x19\n"
- " mov r2, #0x2\n"
- " bl debug_sub_80C33FC\n"
- " ldr r0, ._141 + 24 @ gUnknown_Debug_083F7FB0\n"
- " ldrh r1, [r5, #0x2]\n"
- " mov r2, #0x5\n"
- " bl debug_sub_80C33FC\n"
- " ldr r0, ._141 + 28 @ gUnknown_Debug_083F7FB7\n"
- " ldrb r1, [r5, #0x4]\n"
- " mov r2, #0x2\n"
- " bl debug_sub_80C33FC\n"
- " ldr r0, ._141 + 32 @ gUnknown_Debug_083F7FBE\n"
- " ldrb r1, [r5, #0x5]\n"
- " lsl r1, r1, #0x1c\n"
- " lsr r1, r1, #0x1c\n"
- " mov r2, #0x3\n"
- " bl debug_sub_80C33FC\n"
- " ldr r0, ._141 + 36 @ gUnknown_Debug_083F7FC5\n"
- " ldrb r1, [r5, #0x1]\n"
- " lsr r1, r1, #0x7\n"
- " mov r2, #0x1\n"
- " bl debug_sub_80C33FC\n"
- " ldr r0, ._141 + 40 @ gUnknown_Debug_083F7FCC\n"
- " ldrb r1, [r5, #0x5]\n"
- " lsl r1, r1, #0x1b\n"
- " lsr r1, r1, #0x1f\n"
- " mov r2, #0x1\n"
- " bl debug_sub_80C33FC\n"
- " ldr r4, ._141 + 44 @ gUnknown_Debug_083F7FD3\n"
- " ldrb r1, [r5, #0x5]\n"
- " lsl r1, r1, #0x1a\n"
- " lsr r1, r1, #0x1f\n"
- " add r0, r4, #0\n"
- " mov r2, #0x1\n"
- " bl debug_sub_80C33FC\n"
- " ldrb r1, [r5, #0x5]\n"
- " lsl r1, r1, #0x19\n"
- " lsr r1, r1, #0x1f\n"
- " add r0, r4, #0\n"
- " mov r2, #0x1\n"
- " bl debug_sub_80C33FC\n"
- " ldrb r1, [r5, #0x5]\n"
- " lsr r1, r1, #0x7\n"
- " add r0, r4, #0\n"
- " mov r2, #0x1\n"
- " bl debug_sub_80C33FC\n"
- " ldr r0, ._141 + 8 @ gStringVar4\n"
- "._137:\n"
- " pop {r4, r5, r6, r7}\n"
- " pop {r1}\n"
- " bx r1\n"
- "._142:\n"
- " .align 2, 0\n"
- "._141:\n"
- " .word gSelectedMapObject\n"
- " .word 0x1f3\n"
- " .word gStringVar4\n"
- " .word gUnknown_Debug_083F7F9D\n"
- " .word gUnknown_Debug_083F7FA2\n"
- " .word gUnknown_Debug_083F7FA9\n"
- " .word gUnknown_Debug_083F7FB0\n"
- " .word gUnknown_Debug_083F7FB7\n"
- " .word gUnknown_Debug_083F7FBE\n"
- " .word gUnknown_Debug_083F7FC5\n"
- " .word gUnknown_Debug_083F7FCC\n"
- " .word gUnknown_Debug_083F7FD3\n"
- "\n"
- );
+ }
+ else
+ {
+ u32 berryTreeId = FieldObjectGetBerryTreeId(gSelectedMapObject);
+ struct BerryTree *berryTree = GetBerryTreeInfo(berryTreeId);
+ s32 i;
+
+ for (i = 0; i < 500; i++)
+ gStringVar4[i] = EOS;
+
+ debug_sub_80C33FC(gUnknown_Debug_083F7F9D, berryTreeId, 3);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FA2, berryTree->berry, 2);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FA9, berryTree->stage, 2);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FB0, berryTree->minutesUntilNextStage, 5);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FB7, berryTree->berryYield, 2);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FBE, berryTree->regrowthCount, 3);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FC5, berryTree->growthSparkle, 1);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FCC, berryTree->watered1, 1);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered2, 1);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered3, 1);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered4, 1);
+
+ return gStringVar4;
+ }
}
-#endif
#endif
@@ -1952,17 +1563,3 @@ void ResetBerryTreeSparkleFlags(void)
}
}
}
-
-#if DEBUG
-static const u8 gUnknown_Debug_083F7F84[] = _("そとから きた きのみ");
-static const u8 gUnknown_Debug_083F7F90[] = _("ただいま かいはつちゅう");
-static const u8 gUnknown_Debug_083F7F9D[] = _("POS:");
-static const u8 gUnknown_Debug_083F7FA2[] = _("\nTYPE:");
-static const u8 gUnknown_Debug_083F7FA9[] = _("\nGROW:");
-static const u8 gUnknown_Debug_083F7FB0[] = _("\nTIME:");
-static const u8 gUnknown_Debug_083F7FB7[] = _("\nFCNT:");
-static const u8 gUnknown_Debug_083F7FBE[] = _("\nSCNT:");
-static const u8 gUnknown_Debug_083F7FC5[] = _("\nHOOK:");
-static const u8 gUnknown_Debug_083F7FCC[] = _("\nWBIT:");
-static const u8 gUnknown_Debug_083F7FD3[] = _("");
-#endif
diff --git a/src/field/choose_party.c b/src/field/choose_party.c
index 7529c4271..4766b2fbb 100644
--- a/src/field/choose_party.c
+++ b/src/field/choose_party.c
@@ -23,7 +23,7 @@
extern u8 gPlayerPartyCount;
extern u8 gLastFieldPokeMenuOpened;
extern u8 gUnknown_020384F0;
-extern struct UnknownPokemonStruct2 gUnknown_02023A00[];
+extern struct UnknownPokemonStruct2 gUnknown_02023A00[3];
extern u8 gUnknown_0202E8F6;
extern struct Pokemon gUnknown_030042FC[];
extern const u16 gBattleTowerBannedSpecies[];
@@ -529,104 +529,31 @@ static void BattleTowerEntryMenuCallback_Exit(u8 taskId)
}
#if DEBUG
-__attribute__((naked))
-void debug_sub_81381B4()
+
+void debug_sub_81381B4(void)
{
- asm(
- " push {r4, r5, r6, r7, lr}\n"
- " mov r7, r9\n"
- " mov r6, r8\n"
- " push {r6, r7}\n"
- " ldr r4, ._189 @ gUnknown_02023A00\n"
- " add r0, r4, #0\n"
- " mov r1, #0x0\n"
- " mov r2, #0x60\n"
- " bl memset\n"
- " mov r7, #0x0\n"
- " mov r8, r4\n"
- " mov r0, #0x4\n"
- " add r0, r0, r8\n"
- " mov r9, r0\n"
- "._188:\n"
- " mov r0, #0x64\n"
- " add r1, r7, #0\n"
- " mul r1, r1, r0\n"
- " ldr r0, ._189 + 4 @ gPlayerParty\n"
- " add r5, r1, r0\n"
- " add r0, r5, #0\n"
- " mov r1, #0x41\n"
- " bl GetMonData\n"
- " lsl r4, r7, #0x5\n"
- " mov r1, r8\n"
- " add r6, r4, r1\n"
- " strh r0, [r6]\n"
- " lsl r0, r0, #0x10\n"
- " cmp r0, #0\n"
- " beq ._187 @cond_branch\n"
- " add r0, r5, #0\n"
- " mov r1, #0x38\n"
- " bl GetMonData\n"
- " strb r0, [r6, #0xf]\n"
- " add r0, r5, #0\n"
- " mov r1, #0x39\n"
- " bl GetMonData\n"
- " strh r0, [r6, #0x10]\n"
- " add r0, r5, #0\n"
- " mov r1, #0x3a\n"
- " bl GetMonData\n"
- " strh r0, [r6, #0x12]\n"
- " add r0, r5, #0\n"
- " mov r1, #0x37\n"
- " bl GetMonData\n"
- " mov r1, r8\n"
- " add r1, r1, #0x14\n"
- " add r1, r4, r1\n"
- " str r0, [r1]\n"
- " add r0, r5, #0\n"
- " mov r1, #0xc\n"
- " bl GetMonData\n"
- " strh r0, [r6, #0x2]\n"
- " add r0, r5, #0\n"
- " mov r1, #0x0\n"
- " bl GetMonData\n"
- " mov r1, r8\n"
- " add r1, r1, #0x18\n"
- " add r1, r4, r1\n"
- " str r0, [r1]\n"
- " add r0, r5, #0\n"
- " bl GetMonGender\n"
- " strb r0, [r6, #0x1c]\n"
- " add r4, r4, r9\n"
- " add r0, r5, #0\n"
- " mov r1, #0x2\n"
- " add r2, r4, #0\n"
- " bl GetMonData\n"
- " add r0, r4, #0\n"
- " bl Text_StripExtCtrlCodes\n"
- " add r0, r5, #0\n"
- " mov r1, #0x3\n"
- " bl GetMonData\n"
- " strb r0, [r6, #0x1d]\n"
- "._187:\n"
- " add r0, r7, #1\n"
- " lsl r0, r0, #0x18\n"
- " lsr r7, r0, #0x18\n"
- " cmp r7, #0x2\n"
- " bls ._188 @cond_branch\n"
- " pop {r3, r4}\n"
- " mov r8, r3\n"
- " mov r9, r4\n"
- " pop {r4, r5, r6, r7}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._190:\n"
- " .align 2, 0\n"
- "._189:\n"
- " .word gUnknown_02023A00\n"
- " .word gPlayerParty+0x12c\n"
- "\n"
- );
+ u8 i;
+
+ memset(gUnknown_02023A00, 0, sizeof(gUnknown_02023A00));
+ for (i = 0; i < 3; i++)
+ {
+ gUnknown_02023A00[i].species = GetMonData(&gPlayerParty[3 + i], MON_DATA_SPECIES2);
+ if (gUnknown_02023A00[i].species != 0)
+ {
+ gUnknown_02023A00[i].level = GetMonData(&gPlayerParty[3 + i], MON_DATA_LEVEL);
+ gUnknown_02023A00[i].hp = GetMonData(&gPlayerParty[3 + i], MON_DATA_HP);
+ gUnknown_02023A00[i].maxhp = GetMonData(&gPlayerParty[3 + i], MON_DATA_MAX_HP);
+ gUnknown_02023A00[i].status = GetMonData(&gPlayerParty[3 + i], MON_DATA_STATUS);
+ gUnknown_02023A00[i].heldItem = GetMonData(&gPlayerParty[3 + i], MON_DATA_HELD_ITEM);
+ gUnknown_02023A00[i].personality = GetMonData(&gPlayerParty[3 + i], MON_DATA_PERSONALITY);
+ gUnknown_02023A00[i].gender = GetMonGender(&gPlayerParty[3 + i]);
+ GetMonData(&gPlayerParty[3 + i], MON_DATA_NICKNAME, gUnknown_02023A00[i].nickname);
+ Text_StripExtCtrlCodes(gUnknown_02023A00[i].nickname);
+ gUnknown_02023A00[i].language = GetMonData(&gPlayerParty[3 + i], MON_DATA_LANGUAGE);
+ }
+ }
}
+
#endif
bool8 SetupLinkMultiBattlePartyMenu(void)
diff --git a/src/field/event_object_movement.c b/src/field/event_object_movement.c
index 1236cd9b6..7a5f62456 100644
--- a/src/field/event_object_movement.c
+++ b/src/field/event_object_movement.c
@@ -1908,7 +1908,7 @@ static u16 gUnknown_030005A6;
struct MapObject gMapObjects[16];
#if DEBUG
-u8 gUnknown_Debug_03004BC0[4]; // unknown type
+u8 gUnknown_Debug_03004BC0;
#endif
void npc_clear_ids_and_state(struct MapObject *mapObj)
@@ -1920,48 +1920,16 @@ void npc_clear_ids_and_state(struct MapObject *mapObj)
mapObj->mapobj_unk_1C = 0xFF;
}
-#if DEBUG
-__attribute__((naked))
-void npcs_clear_ids_and_state()
-{
- asm(
- " push {r4, r5, lr}\n"
- " mov r4, #0x0\n"
- " ldr r5, ._2 @ gMapObjects\n"
- "._1:\n"
- " lsl r0, r4, #0x3\n"
- " add r0, r0, r4\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, r5\n"
- " bl npc_clear_ids_and_state\n"
- " add r0, r4, #1\n"
- " lsl r0, r0, #0x18\n"
- " lsr r4, r0, #0x18\n"
- " cmp r4, #0xf\n"
- " bls ._1 @cond_branch\n"
- " ldr r1, ._2 + 4 @ gUnknown_Debug_03004BC0\n"
- " mov r0, #0x0\n"
- " strb r0, [r1]\n"
- " pop {r4, r5}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._3:\n"
- " .align 2, 0\n"
- "._2:\n"
- " .word gMapObjects\n"
- " .word gUnknown_Debug_03004BC0\n"
- "\n"
- );
-}
-#else
void npcs_clear_ids_and_state(void)
{
u8 i;
for (i = 0; i < 16; i++)
npc_clear_ids_and_state(&gMapObjects[i]);
-}
+#if DEBUG
+ gUnknown_Debug_03004BC0 = 0;
#endif
+}
void sub_805AA98(void)
{
@@ -2004,7 +1972,7 @@ u8 sub_805AB54(void)
u8 GetFieldObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
{
- if (localId <= 0xFE)
+ if (localId < 255)
return GetFieldObjectIdByLocalIdAndMapInternal(localId, mapNum, mapGroup);
else
return GetFieldObjectIdByLocalId(localId);
@@ -2055,190 +2023,80 @@ u8 GetFieldObjectIdByLocalId(u8 localId)
return 16;
}
-#if DEBUG
-__attribute__((naked))
-u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c)
-{
- asm(
- " push {r4, r5, r6, r7, lr}\n"
- " mov r7, r9\n"
- " mov r6, r8\n"
- " push {r6, r7}\n"
- " add sp, sp, #0xfffffffc\n"
- " add r5, r0, #0\n"
- " lsl r1, r1, #0x18\n"
- " lsr r6, r1, #0x18\n"
- " lsl r2, r2, #0x18\n"
- " lsr r7, r2, #0x18\n"
- " ldrb r0, [r5]\n"
- " add r1, r6, #0\n"
- " add r2, r7, #0\n"
- " mov r3, sp\n"
- " bl GetAvailableFieldObjectSlot\n"
- " lsl r0, r0, #0x18\n"
- " cmp r0, #0\n"
- " beq ._35 @cond_branch\n"
- " mov r0, #0x10\n"
- " b ._36\n"
- "._35:\n"
- " mov r0, sp\n"
- " ldrb r1, [r0]\n"
- " lsl r0, r1, #0x3\n"
- " add r0, r0, r1\n"
- " lsl r0, r0, #0x2\n"
- " ldr r1, ._40 @ gMapObjects\n"
- " add r4, r0, r1\n"
- " add r0, r4, #0\n"
- " bl npc_clear_ids_and_state\n"
- " ldrh r3, [r5, #0x4]\n"
- " add r3, r3, #0x7\n"
- " lsl r3, r3, #0x10\n"
- " lsr r3, r3, #0x10\n"
- " ldrh r2, [r5, #0x6]\n"
- " add r2, r2, #0x7\n"
- " lsl r2, r2, #0x10\n"
- " lsr r2, r2, #0x10\n"
- " ldrb r0, [r4]\n"
- " mov r1, #0x1\n"
- " orr r0, r0, r1\n"
- " mov r1, #0x4\n"
- " orr r0, r0, r1\n"
- " strb r0, [r4]\n"
- " ldrb r0, [r5, #0x1]\n"
- " strb r0, [r4, #0x5]\n"
- " ldrb r0, [r5, #0x9]\n"
- " strb r0, [r4, #0x6]\n"
- " ldrb r0, [r5]\n"
- " strb r0, [r4, #0x8]\n"
- " strb r6, [r4, #0x9]\n"
- " strb r7, [r4, #0xa]\n"
- " strh r3, [r4, #0xc]\n"
- " strh r2, [r4, #0xe]\n"
- " strh r3, [r4, #0x10]\n"
- " strh r2, [r4, #0x12]\n"
- " strh r3, [r4, #0x14]\n"
- " strh r2, [r4, #0x16]\n"
- " ldrb r0, [r5, #0x8]\n"
- " mov r7, #0xf\n"
- " add r1, r7, #0\n"
- " and r1, r1, r0\n"
- " ldrb r2, [r4, #0xb]\n"
- " mov r0, #0x10\n"
- " neg r0, r0\n"
- " mov r8, r0\n"
- " and r0, r0, r2\n"
- " orr r0, r0, r1\n"
- " strb r0, [r4, #0xb]\n"
- " ldrb r1, [r5, #0x8]\n"
- " lsl r1, r1, #0x4\n"
- " and r0, r0, r7\n"
- " orr r0, r0, r1\n"
- " strb r0, [r4, #0xb]\n"
- " ldrb r1, [r5, #0xa]\n"
- " lsl r1, r1, #0x1c\n"
- " mov r0, #0xf\n"
- " mov r9, r0\n"
- " lsr r1, r1, #0x1c\n"
- " ldrb r2, [r4, #0x19]\n"
- " mov r0, r8\n"
- " and r0, r0, r2\n"
- " orr r0, r0, r1\n"
- " strb r0, [r4, #0x19]\n"
- " ldrb r1, [r5, #0xa]\n"
- " lsr r1, r1, #0x4\n"
- " lsl r1, r1, #0x4\n"
- " and r0, r0, r7\n"
- " orr r0, r0, r1\n"
- " strb r0, [r4, #0x19]\n"
- " ldrh r0, [r5, #0xc]\n"
- " strb r0, [r4, #0x7]\n"
- " ldrh r0, [r5, #0xe]\n"
- " strb r0, [r4, #0x1d]\n"
- " ldr r1, ._40 + 4 @ gUnknown_0836DC09\n"
- " ldrb r0, [r5, #0x9]\n"
- " add r0, r0, r1\n"
- " ldrb r1, [r0]\n"
- " add r0, r4, #0\n"
- " add r0, r0, #0x20\n"
- " strb r1, [r0]\n"
- " ldrb r1, [r0]\n"
- " add r0, r4, #0\n"
- " bl FieldObjectSetDirection\n"
- " add r0, r4, #0\n"
- " bl FieldObjectHandleDynamicGraphicsId\n"
- " ldr r1, ._40 + 8 @ gUnknown_0836DBBC\n"
- " ldrb r0, [r4, #0x6]\n"
- " add r0, r0, r1\n"
- " ldrb r0, [r0]\n"
- " cmp r0, #0\n"
- " beq ._39 @cond_branch\n"
- " ldrb r2, [r4, #0x19]\n"
- " add r0, r7, #0\n"
- " and r0, r0, r2\n"
- " cmp r0, #0\n"
- " bne ._38 @cond_branch\n"
- " lsl r0, r2, #0x1c\n"
- " lsr r0, r0, #0x1c\n"
- " add r0, r0, #0x1\n"
- " mov r1, r9\n"
- " and r0, r0, r1\n"
- " mov r1, r8\n"
- " and r1, r1, r2\n"
- " orr r1, r1, r0\n"
- " strb r1, [r4, #0x19]\n"
- "._38:\n"
- " ldrb r2, [r4, #0x19]\n"
- " mov r0, #0xf0\n"
- " and r0, r0, r2\n"
- " cmp r0, #0\n"
- " bne ._39 @cond_branch\n"
- " lsr r1, r2, #0x4\n"
- " add r1, r1, #0x1\n"
- " lsl r1, r1, #0x4\n"
- " add r0, r7, #0\n"
- " and r0, r0, r2\n"
- " orr r0, r0, r1\n"
- " strb r0, [r4, #0x19]\n"
- "._39:\n"
- " ldr r1, ._40 + 12 @ gUnknown_Debug_03004BC0\n"
- " ldrb r0, [r1]\n"
- " add r0, r0, #0x1\n"
- " strb r0, [r1]\n"
- " mov r0, sp\n"
- " ldrb r0, [r0]\n"
- "._36:\n"
- " add sp, sp, #0x4\n"
- " pop {r3, r4}\n"
- " mov r8, r3\n"
- " mov r9, r4\n"
- " pop {r4, r5, r6, r7}\n"
- " pop {r1}\n"
- " bx r1\n"
- "._41:\n"
- " .align 2, 0\n"
- "._40:\n"
- " .word gMapObjects\n"
- " .word gUnknown_0836DC09\n"
- " .word gUnknown_0836DBBC\n"
- " .word gUnknown_Debug_03004BC0\n"
- "\n"
- );
-}
-#else
-#ifdef NONMATCHING
+// The bitfield at 0x18 needs to be u16 for this function to match
+struct MapObjectAlt
+{
+ /*0x00*/ u32 active:1;
+ u32 mapobj_bit_1:1;
+ u32 mapobj_bit_2:1;
+ u32 mapobj_bit_3:1;
+ u32 mapobj_bit_4:1;
+ u32 mapobj_bit_5:1;
+ u32 mapobj_bit_6:1;
+ u32 mapobj_bit_7:1;
+ /*0x01*/ u32 mapobj_bit_8:1;
+ u32 mapobj_bit_9:1;
+ u32 mapobj_bit_10:1;
+ u32 mapobj_bit_11:1;
+ u32 mapobj_bit_12:1;
+ u32 mapobj_bit_13:1;
+ u32 mapobj_bit_14:1;
+ u32 mapobj_bit_15:1;
+ /*0x02*/ u32 mapobj_bit_16:1;
+ u32 mapobj_bit_17:1;
+ u32 mapobj_bit_18:1;
+ u32 mapobj_bit_19:1;
+ u32 mapobj_bit_20:1;
+ u32 mapobj_bit_21:1;
+ u32 mapobj_bit_22:1;
+ u32 mapobj_bit_23:1;
+ /*0x03*/ u32 mapobj_bit_24:1;
+ u32 mapobj_bit_25:1;
+ u32 mapobj_bit_26:1;
+ u32 mapobj_bit_27:1;
+ u32 mapobj_bit_28:1;
+ u32 mapobj_bit_29:1;
+ u32 mapobj_bit_30:1;
+ u32 mapobj_bit_31:1;
+ /*0x04*/ u8 spriteId;
+ /*0x05*/ u8 graphicsId;
+ /*0x06*/ u8 animPattern;
+ /*0x07*/ u8 trainerType;
+ /*0x08*/ u8 localId;
+ /*0x09*/ u8 mapNum;
+ /*0x0A*/ u8 mapGroup;
+ /*0x0B*/ u8 mapobj_unk_0B_0:4;
+ u8 elevation:4;
+ /*0x0C*/ struct Coords16 coords1;
+ /*0x10*/ struct Coords16 coords2;
+ /*0x14*/ struct Coords16 coords3;
+ /*0x18*/ u16 mapobj_unk_18:4; //current direction?
+ /*0x18*/ u16 placeholder18:4;
+ /*0x19*/ u16 rangeX:4;
+ /*0x19*/ u16 rangeY:4;
+ /*0x1A*/ u8 mapobj_unk_1A;
+ /*0x1B*/ u8 mapobj_unk_1B;
+ /*0x1C*/ u8 mapobj_unk_1C;
+ /*0x1D*/ u8 trainerRange_berryTreeId;
+ /*0x1E*/ u8 mapobj_unk_1E;
+ /*0x1F*/ u8 mapobj_unk_1F;
+ /*0x20*/ u8 mapobj_unk_20;
+ /*0x21*/ u8 mapobj_unk_21;
+ /*0x22*/ u8 animId;
+ /*size = 0x24*/
+};
+
u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c)
{
- struct MapObject *mapObj; //TODO: resolve the mapobj_unk_19b weirdness
+ struct MapObjectAlt *mapObj; //TODO: resolve the mapobj_unk_19b weirdness
u8 var;
- u16 r3;
- u16 r2;
+ s16 r3;
+ s16 r2;
- //asm("nop"::"r"(b));
if (GetAvailableFieldObjectSlot(template->localId, b, c, &var) != 0)
return 16;
- //_0805ACCE
- mapObj = &gMapObjects[var];
- npc_clear_ids_and_state(mapObj);
+ mapObj = (void *)&gMapObjects[var];
+ npc_clear_ids_and_state((struct MapObject *)mapObj);
r3 = template->x + 7;
r2 = template->y + 7;
mapObj->active = TRUE;
@@ -2247,6 +2105,7 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8
mapObj->animPattern = template->movementType;
mapObj->localId = template->localId;
mapObj->mapNum = b;
+ asm("":::"r6");
mapObj->mapGroup = c;
mapObj->coords1.x = r3;
mapObj->coords1.y = r2;
@@ -2256,186 +2115,26 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8
mapObj->coords3.y = r2;
mapObj->mapobj_unk_0B_0 = template->elevation;
mapObj->elevation = template->elevation;
- mapObj->range.as_nybbles.x = template->unkA_0;
- mapObj->range.as_nybbles.y = template->unkA_4;
+ mapObj->rangeX = template->unkA_0;
+ mapObj->rangeY = template->unkA_4;
mapObj->trainerType = template->unkC;
mapObj->trainerRange_berryTreeId = template->unkE;
mapObj->mapobj_unk_20 = gUnknown_0836DC09[template->movementType];
FieldObjectSetDirection((struct MapObject *)mapObj, mapObj->mapobj_unk_20);
- FieldObjectHandleDynamicGraphicsId(mapObj);
- //asm("":::"r5","r6");
+ asm("":::"r5","r6");
+ FieldObjectHandleDynamicGraphicsId((struct MapObject *)mapObj);
if (gUnknown_0836DBBC[mapObj->animPattern] != 0)
{
- if (mapObj->range.as_nybbles.x == 0)
- mapObj->range.as_nybbles.x++;
- if (mapObj->range.as_nybbles.y == 0)
- mapObj->range.as_nybbles.y++;
+ if (mapObj->rangeX == 0)
+ mapObj->rangeX++;
+ if (mapObj->rangeY == 0)
+ mapObj->rangeY++;
}
+#if DEBUG
+ gUnknown_Debug_03004BC0++;
+#endif
return var;
}
-#else
-__attribute__((naked))
-u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- sub sp, 0x4\n\
- adds r5, r0, 0\n\
- lsls r1, 24\n\
- lsrs r6, r1, 24\n\
- lsls r2, 24\n\
- lsrs r7, r2, 24\n\
- ldrb r0, [r5]\n\
- adds r1, r6, 0\n\
- adds r2, r7, 0\n\
- mov r3, sp\n\
- bl GetAvailableFieldObjectSlot\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0805ACCE\n\
- movs r0, 0x10\n\
- b _0805ADC2\n\
-_0805ACCE:\n\
- mov r0, sp\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 3\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- ldr r1, _0805ADD0 @ =gMapObjects\n\
- adds r4, r0, r1\n\
- adds r0, r4, 0\n\
- bl npc_clear_ids_and_state\n\
- ldrh r3, [r5, 0x4]\n\
- adds r3, 0x7\n\
- lsls r3, 16\n\
- lsrs r3, 16\n\
- ldrh r2, [r5, 0x6]\n\
- adds r2, 0x7\n\
- lsls r2, 16\n\
- lsrs r2, 16\n\
- ldrb r0, [r4]\n\
- movs r1, 0x1\n\
- orrs r0, r1\n\
- movs r1, 0x4\n\
- orrs r0, r1\n\
- strb r0, [r4]\n\
- ldrb r0, [r5, 0x1]\n\
- strb r0, [r4, 0x5]\n\
- ldrb r0, [r5, 0x9]\n\
- strb r0, [r4, 0x6]\n\
- ldrb r0, [r5]\n\
- strb r0, [r4, 0x8]\n\
- strb r6, [r4, 0x9]\n\
- strb r7, [r4, 0xA]\n\
- strh r3, [r4, 0xC]\n\
- strh r2, [r4, 0xE]\n\
- strh r3, [r4, 0x10]\n\
- strh r2, [r4, 0x12]\n\
- strh r3, [r4, 0x14]\n\
- strh r2, [r4, 0x16]\n\
- ldrb r0, [r5, 0x8]\n\
- movs r7, 0xF\n\
- adds r1, r7, 0\n\
- ands r1, r0\n\
- ldrb r2, [r4, 0xB]\n\
- movs r0, 0x10\n\
- negs r0, r0\n\
- mov r8, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r4, 0xB]\n\
- ldrb r1, [r5, 0x8]\n\
- lsls r1, 4\n\
- ands r0, r7\n\
- orrs r0, r1\n\
- strb r0, [r4, 0xB]\n\
- ldrb r1, [r5, 0xA]\n\
- lsls r1, 28\n\
- movs r0, 0xF\n\
- mov r9, r0\n\
- lsrs r1, 28\n\
- ldrb r2, [r4, 0x19]\n\
- mov r0, r8\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x19]\n\
- ldrb r1, [r5, 0xA]\n\
- lsrs r1, 4\n\
- lsls r1, 4\n\
- ands r0, r7\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x19]\n\
- ldrh r0, [r5, 0xC]\n\
- strb r0, [r4, 0x7]\n\
- ldrh r0, [r5, 0xE]\n\
- strb r0, [r4, 0x1D]\n\
- ldr r1, _0805ADD4 @ =gUnknown_0836DC09\n\
- ldrb r0, [r5, 0x9]\n\
- adds r0, r1\n\
- ldrb r1, [r0]\n\
- adds r0, r4, 0\n\
- adds r0, 0x20\n\
- strb r1, [r0]\n\
- ldrb r1, [r0]\n\
- adds r0, r4, 0\n\
- bl FieldObjectSetDirection\n\
- adds r0, r4, 0\n\
- bl FieldObjectHandleDynamicGraphicsId\n\
- ldr r1, _0805ADD8 @ =gUnknown_0836DBBC\n\
- ldrb r0, [r4, 0x6]\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _0805ADBE\n\
- ldrb r2, [r4, 0x19]\n\
- adds r0, r7, 0\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- bne _0805ADA6\n\
- lsls r0, r2, 28\n\
- lsrs r0, 28\n\
- adds r0, 0x1\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r8\n\
- ands r1, r2\n\
- orrs r1, r0\n\
- strb r1, [r4, 0x19]\n\
-_0805ADA6:\n\
- ldrb r2, [r4, 0x19]\n\
- movs r0, 0xF0\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- bne _0805ADBE\n\
- lsrs r1, r2, 4\n\
- adds r1, 0x1\n\
- lsls r1, 4\n\
- adds r0, r7, 0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x19]\n\
-_0805ADBE:\n\
- mov r0, sp\n\
- ldrb r0, [r0]\n\
-_0805ADC2:\n\
- add sp, 0x4\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_0805ADD0: .4byte gMapObjects\n\
-_0805ADD4: .4byte gUnknown_0836DC09\n\
-_0805ADD8: .4byte gUnknown_0836DBBC\n\
- .syntax divided\n");
-}
-#endif
-#endif
u8 sub_805ADDC(u8 localId)
{
@@ -2475,38 +2174,14 @@ u8 GetAvailableFieldObjectSlot(u16 a, u8 b, u8 c, u8 *d)
return 0;
}
-#if DEBUG
-__attribute__((naked))
-void RemoveFieldObject(struct MapObject *mapObject)
-{
- asm(
- " push {lr}\n"
- " ldrb r2, [r0]\n"
- " mov r1, #0x2\n"
- " neg r1, r1\n"
- " and r1, r1, r2\n"
- " strb r1, [r0]\n"
- " bl RemoveFieldObjectInternal\n"
- " ldr r1, ._72 @ gUnknown_Debug_03004BC0\n"
- " ldrb r0, [r1]\n"
- " sub r0, r0, #0x1\n"
- " strb r0, [r1]\n"
- " pop {r0}\n"
- " bx r0\n"
- "._73:\n"
- " .align 2, 0\n"
- "._72:\n"
- " .word gUnknown_Debug_03004BC0\n"
- "\n"
- );
-}
-#else
void RemoveFieldObject(struct MapObject *mapObject)
{
mapObject->active = FALSE;
RemoveFieldObjectInternal(mapObject);
-}
+#if DEBUG
+ gUnknown_Debug_03004BC0--;
#endif
+}
void RemoveFieldObjectByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
{
@@ -2539,226 +2214,6 @@ void npc_hide_all_but_player(void)
}
}
-#if DEBUG
-__attribute__((naked))
-u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, u8 c, u8 d, s16 e, s16 f)
-{
- asm(
- " push {r4, r5, r6, r7, lr}\n"
- " mov r7, sl\n"
- " mov r6, r9\n"
- " mov r5, r8\n"
- " push {r5, r6, r7}\n"
- " add r7, r1, #0\n"
- " add r1, r2, #0\n"
- " add r2, r3, #0\n"
- " ldr r3, [sp, #0x20]\n"
- " ldr r4, [sp, #0x24]\n"
- " lsl r1, r1, #0x18\n"
- " lsr r1, r1, #0x18\n"
- " lsl r2, r2, #0x18\n"
- " lsr r2, r2, #0x18\n"
- " lsl r3, r3, #0x10\n"
- " lsr r3, r3, #0x10\n"
- " mov r9, r3\n"
- " lsl r4, r4, #0x10\n"
- " lsr r4, r4, #0x10\n"
- " mov sl, r4\n"
- " bl InitFieldObjectStateFromTemplate\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " mov r8, r0\n"
- " cmp r0, #0x10\n"
- " bne ._83 @cond_branch\n"
- " mov r0, #0x10\n"
- " b ._92\n"
- "._83:\n"
- " mov r0, r8\n"
- " lsl r4, r0, #0x3\n"
- " add r0, r4, r0\n"
- " lsl r0, r0, #0x2\n"
- " ldr r1, ._87 @ gMapObjects\n"
- " add r5, r0, r1\n"
- " ldrb r0, [r5, #0x5]\n"
- " bl GetFieldObjectGraphicsInfo\n"
- " add r6, r0, #0\n"
- " ldrb r1, [r6, #0xc]\n"
- " mov r0, #0xf\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " bne ._85 @cond_branch\n"
- " ldrh r0, [r6, #0x2]\n"
- " lsl r1, r1, #0x1c\n"
- " lsr r1, r1, #0x1c\n"
- " bl npc_load_two_palettes__no_record\n"
- " b ._89\n"
- "._88:\n"
- " .align 2, 0\n"
- "._87:\n"
- " .word gMapObjects\n"
- "._85:\n"
- " cmp r0, #0xa\n"
- " bne ._89 @cond_branch\n"
- " ldrh r0, [r6, #0x2]\n"
- " lsl r1, r1, #0x1c\n"
- " lsr r1, r1, #0x1c\n"
- " bl npc_load_two_palettes__and_record\n"
- "._89:\n"
- " ldrb r0, [r5, #0x6]\n"
- " cmp r0, #0x4c\n"
- " bne ._90 @cond_branch\n"
- " ldrb r0, [r5, #0x1]\n"
- " mov r1, #0x20\n"
- " orr r0, r0, r1\n"
- " strb r0, [r5, #0x1]\n"
- "._90:\n"
- " ldr r1, ._93 @ 0xffff\n"
- " add r0, r1, #0\n"
- " strh r0, [r7, #0x2]\n"
- " add r0, r7, #0\n"
- " mov r1, #0x0\n"
- " mov r2, #0x0\n"
- " mov r3, #0x0\n"
- " bl CreateSprite\n"
- " lsl r0, r0, #0x18\n"
- " lsr r7, r0, #0x18\n"
- " cmp r7, #0x40\n"
- " bne ._91 @cond_branch\n"
- " ldr r1, ._93 + 4 @ gUnknown_Debug_03004BC0\n"
- " ldrb r0, [r1]\n"
- " sub r0, r0, #0x1\n"
- " strb r0, [r1]\n"
- " ldr r0, ._93 + 8 @ gMapObjects\n"
- " mov r2, r8\n"
- " add r1, r4, r2\n"
- " lsl r1, r1, #0x2\n"
- " add r1, r1, r0\n"
- " ldrb r2, [r1]\n"
- " mov r0, #0x2\n"
- " neg r0, r0\n"
- " and r0, r0, r2\n"
- " strb r0, [r1]\n"
- " mov r0, #0x10\n"
- " b ._92\n"
- "._94:\n"
- " .align 2, 0\n"
- "._93:\n"
- " .word 0xffff\n"
- " .word gUnknown_Debug_03004BC0\n"
- " .word gMapObjects\n"
- "._91:\n"
- " lsl r0, r7, #0x4\n"
- " add r0, r0, r7\n"
- " lsl r0, r0, #0x2\n"
- " ldr r1, ._96 @ gSprites\n"
- " add r4, r0, r1\n"
- " mov r1, r9\n"
- " lsl r0, r1, #0x10\n"
- " asr r0, r0, #0x10\n"
- " ldrh r2, [r5, #0x10]\n"
- " add r0, r0, r2\n"
- " lsl r0, r0, #0x10\n"
- " asr r0, r0, #0x10\n"
- " mov r2, sl\n"
- " lsl r1, r2, #0x10\n"
- " asr r1, r1, #0x10\n"
- " ldrh r2, [r5, #0x12]\n"
- " add r1, r1, r2\n"
- " lsl r1, r1, #0x10\n"
- " asr r1, r1, #0x10\n"
- " add r2, r4, #0\n"
- " add r2, r2, #0x20\n"
- " add r3, r4, #0\n"
- " add r3, r3, #0x22\n"
- " bl sub_8060388\n"
- " ldrh r0, [r6, #0x8]\n"
- " lsl r0, r0, #0x10\n"
- " asr r0, r0, #0x11\n"
- " neg r0, r0\n"
- " add r1, r4, #0\n"
- " add r1, r1, #0x28\n"
- " strb r0, [r1]\n"
- " ldrh r0, [r6, #0xa]\n"
- " lsl r0, r0, #0x10\n"
- " asr r0, r0, #0x11\n"
- " neg r0, r0\n"
- " add r2, r4, #0\n"
- " add r2, r2, #0x29\n"
- " strb r0, [r2]\n"
- " ldrh r0, [r4, #0x20]\n"
- " add r0, r0, #0x8\n"
- " strh r0, [r4, #0x20]\n"
- " ldrh r1, [r4, #0x22]\n"
- " add r1, r1, #0x10\n"
- " mov r0, #0x0\n"
- " ldsb r0, [r2, r0]\n"
- " add r0, r0, r1\n"
- " strh r0, [r4, #0x22]\n"
- " ldrb r1, [r6, #0xc]\n"
- " lsl r1, r1, #0x1c\n"
- " lsr r1, r1, #0x18\n"
- " ldrb r2, [r4, #0x5]\n"
- " mov r0, #0xf\n"
- " and r0, r0, r2\n"
- " orr r0, r0, r1\n"
- " strb r0, [r4, #0x5]\n"
- " add r2, r4, #0\n"
- " add r2, r2, #0x3e\n"
- " ldrb r0, [r2]\n"
- " mov r1, #0x2\n"
- " orr r0, r0, r1\n"
- " strb r0, [r2]\n"
- " mov r0, r8\n"
- " strh r0, [r4, #0x2e]\n"
- " strb r7, [r5, #0x4]\n"
- " ldrb r1, [r6, #0xc]\n"
- " lsl r1, r1, #0x19\n"
- " lsr r1, r1, #0x1f\n"
- " lsl r1, r1, #0x4\n"
- " ldrb r2, [r5, #0x1]\n"
- " mov r0, #0x11\n"
- " neg r0, r0\n"
- " and r0, r0, r2\n"
- " orr r0, r0, r1\n"
- " strb r0, [r5, #0x1]\n"
- " lsl r0, r0, #0x1b\n"
- " cmp r0, #0\n"
- " blt ._95 @cond_branch\n"
- " ldrb r0, [r5, #0x18]\n"
- " lsl r0, r0, #0x1c\n"
- " lsr r0, r0, #0x1c\n"
- " bl FieldObjectDirectionToImageAnimId\n"
- " add r1, r0, #0\n"
- " lsl r1, r1, #0x18\n"
- " lsr r1, r1, #0x18\n"
- " add r0, r4, #0\n"
- " bl StartSpriteAnim\n"
- "._95:\n"
- " ldrb r0, [r5, #0xb]\n"
- " lsr r0, r0, #0x4\n"
- " add r1, r4, #0\n"
- " mov r2, #0x1\n"
- " bl SetObjectSubpriorityByZCoord\n"
- " add r0, r5, #0\n"
- " add r1, r4, #0\n"
- " bl sub_80634D0\n"
- " mov r0, r8\n"
- "._92:\n"
- " pop {r3, r4, r5}\n"
- " mov r8, r3\n"
- " mov r9, r4\n"
- " mov sl, r5\n"
- " pop {r4, r5, r6, r7}\n"
- " pop {r1}\n"
- " bx r1\n"
- "._97:\n"
- " .align 2, 0\n"
- "._96:\n"
- " .word gSprites\n"
- "\n"
- );
-}
-#else
u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, u8 c, u8 d, s16 e, s16 f)
{
u8 mapObjectId;
@@ -2788,6 +2243,9 @@ u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *
spriteId = CreateSprite(sprTemplate, 0, 0, 0);
if (spriteId == 64)
{
+#if DEBUG
+ gUnknown_Debug_03004BC0--;
+#endif
gMapObjects[mapObjectId].active = FALSE;
return 16;
}
@@ -2808,7 +2266,6 @@ u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *
sub_80634D0(mapObject, sprite);
return mapObjectId;
}
-#endif
u8 SpawnFieldObject(struct MapObjectTemplate *mapObjTemplate, u8 b, u8 c, s16 d, s16 e)
{
@@ -3031,79 +2488,26 @@ void RemoveFieldObjectIfOutsideView(struct MapObject *mapObject)
void sub_805B75C(u8, s16, s16);
-#if DEBUG
-__attribute__((naked))
-void sub_805B710(u16 u161, u16 u162)
-{
- asm(
- " push {r4, r5, r6, r7, lr}\n"
- " mov r7, r8\n"
- " push {r7}\n"
- " add r4, r0, #0\n"
- " add r5, r1, #0\n"
- " lsl r4, r4, #0x10\n"
- " lsr r4, r4, #0x10\n"
- " lsl r5, r5, #0x10\n"
- " lsr r5, r5, #0x10\n"
- " ldr r6, ._153 @ gUnknown_Debug_03004BC0\n"
- " mov r0, #0x0\n"
- " strb r0, [r6]\n"
- " bl ClearPlayerAvatarInfo\n"
- " mov r7, #0x0\n"
- " ldr r0, ._153 + 4 @ gMapObjects\n"
- " mov r8, r0\n"
- " lsl r4, r4, #0x10\n"
- " lsl r5, r5, #0x10\n"
- "._152:\n"
- " lsl r0, r7, #0x3\n"
- " add r0, r0, r7\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, r8\n"
- " ldrb r0, [r0]\n"
- " lsl r0, r0, #0x1f\n"
- " cmp r0, #0\n"
- " beq ._151 @cond_branch\n"
- " add r0, r7, #0\n"
- " asr r1, r4, #0x10\n"
- " asr r2, r5, #0x10\n"
- " bl sub_805B75C\n"
- " ldrb r0, [r6]\n"
- " add r0, r0, #0x1\n"
- " strb r0, [r6]\n"
- "._151:\n"
- " add r0, r7, #1\n"
- " lsl r0, r0, #0x18\n"
- " lsr r7, r0, #0x18\n"
- " cmp r7, #0xf\n"
- " bls ._152 @cond_branch\n"
- " bl sub_805AAB0\n"
- " pop {r3}\n"
- " mov r8, r3\n"
- " pop {r4, r5, r6, r7}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._154:\n"
- " .align 2, 0\n"
- "._153:\n"
- " .word gUnknown_Debug_03004BC0\n"
- " .word gMapObjects\n"
- "\n"
- );
-}
-#else
void sub_805B710(u16 a, u16 b)
{
u8 i;
+#if DEBUG
+ gUnknown_Debug_03004BC0 = 0;
+#endif
ClearPlayerAvatarInfo();
for (i = 0; i < 16; i++)
{
if (gMapObjects[i].active)
+ {
sub_805B75C(i, a, b);
+#if DEBUG
+ gUnknown_Debug_03004BC0++;
+#endif
+ }
}
sub_805AAB0();
}
-#endif
extern void SetPlayerAvatarFieldObjectIdAndObjectId(u8, u8);
extern void sub_805B914(struct MapObject *);
diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c
index c4ba8902e..1552381b2 100644
--- a/src/field/field_player_avatar.c
+++ b/src/field/field_player_avatar.c
@@ -10,6 +10,7 @@
#include "constants/map_objects.h"
#include "menu.h"
#include "metatile_behavior.h"
+#include "new_game.h"
#include "party_menu.h"
#include "random.h"
#include "overworld.h"
@@ -30,9 +31,9 @@ static void npc_clear_strange_bits(struct MapObject *a);
static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c);
static void PlayerAllowForcedMovementIfMovingSameDirection(void);
static bool8 TryDoMetatileBehaviorForcedMovement(void);
-/*static*/ u8 GetForcedMovementByMetatileBehavior(void);
+static u8 GetForcedMovementByMetatileBehavior(void);
static void MovePlayerNotOnBike(u8 a, u16 b);
-/*static*/ u8 CheckMovementInputNotOnBike(u8 a);
+static u8 CheckMovementInputNotOnBike(u8 a);
static u8 CheckForPlayerAvatarCollision(u8 a);
static u8 sub_8058EF0(s16 a, s16 b, u8 c);
static bool8 ShouldJumpLedge(s16 a, s16 b, u8 c);
@@ -49,6 +50,8 @@ static void sub_8059D60(struct MapObject *a);
static void StartStrengthAnim(u8 a, u8 b);
static void DoPlayerMatJump(void);
static void sub_805A06C(void);
+u8 debug_sub_805F2B0(u8);
+u8 debug_sub_805F2DC(u8);
static bool8 (*const gUnknown_0830FB58[])(u8) =
{
@@ -258,59 +261,16 @@ static void PlayerAllowForcedMovementIfMovingSameDirection(void)
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_5;
}
-#if DEBUG
-__attribute__((naked))
-u8 TryDoMetatileBehaviorForcedMovement()
-{
- asm(
- " push {r4, lr}\n"
- " ldr r0, ._27 @ gUnknown_020297ED\n"
- " ldrb r0, [r0]\n"
- " cmp r0, #0\n"
- " beq ._25 @cond_branch\n"
- " ldr r0, ._27 + 4 @ gMain\n"
- " ldrh r1, [r0, #0x2c]\n"
- " mov r0, #0x80\n"
- " lsl r0, r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._25 @cond_branch\n"
- " mov r0, #0x0\n"
- " b ._26\n"
- "._28:\n"
- " .align 2, 0\n"
- "._27:\n"
- " .word gUnknown_020297ED\n"
- " .word gMain\n"
- "._25:\n"
- " ldr r4, ._29 @ gUnknown_0830FBA0\n"
- " bl GetForcedMovementByMetatileBehavior\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x16\n"
- " add r0, r0, r4\n"
- " ldr r0, [r0]\n"
- " bl _call_via_r0\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- "._26:\n"
- " pop {r4}\n"
- " pop {r1}\n"
- " bx r1\n"
- "._30:\n"
- " .align 2, 0\n"
- "._29:\n"
- " .word gUnknown_0830FBA0\n"
- "\n"
- );
-}
-#else
static bool8 TryDoMetatileBehaviorForcedMovement(void)
{
+#if DEBUG
+ if (gUnknown_020297ED != 0 && (gMain.heldKeys & 0x100))
+ return 0;
+#endif
return gUnknown_0830FBA0[GetForcedMovementByMetatileBehavior()]();
}
-#endif
-/*static*/ u8 GetForcedMovementByMetatileBehavior(void)
+static u8 GetForcedMovementByMetatileBehavior(void)
{
u8 i;
@@ -481,57 +441,16 @@ bool8 ForcedMovement_MuddySlope(void)
}
}
-#if DEBUG
-__attribute__((naked))
-void MovePlayerNotOnBike(u8 u81, u16 u161)
-{
- asm(
- " push {r4, r5, r6, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r2, r0, #0x18\n"
- " add r5, r2, #0\n"
- " lsl r1, r1, #0x10\n"
- " lsr r6, r1, #0x10\n"
- " ldr r0, ._84 @ gUnknown_020297ED\n"
- " ldrb r0, [r0]\n"
- " cmp r0, #0\n"
- " beq ._82 @cond_branch\n"
- " add r0, r2, #0\n"
- " bl debug_sub_805F2B0\n"
- " lsl r0, r0, #0x18\n"
- " cmp r0, #0\n"
- " bne ._83 @cond_branch\n"
- "._82:\n"
- " ldr r4, ._84 + 4 @ gUnknown_0830FBEC\n"
- " add r0, r5, #0\n"
- " bl CheckMovementInputNotOnBike\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x16\n"
- " add r0, r0, r4\n"
- " ldr r2, [r0]\n"
- " add r0, r5, #0\n"
- " add r1, r6, #0\n"
- " bl _call_via_r2\n"
- "._83:\n"
- " pop {r4, r5, r6}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._85:\n"
- " .align 2, 0\n"
- "._84:\n"
- " .word gUnknown_020297ED\n"
- " .word gUnknown_0830FBEC\n"
- "\n"
- );
-}
-#else
static void MovePlayerNotOnBike(u8 direction, u16 heldKeys)
{
+#if DEBUG
+ if (gUnknown_020297ED != 0 && debug_sub_805F2B0(direction) != 0)
+ return;
+#endif
gUnknown_0830FBEC[CheckMovementInputNotOnBike(direction)](direction, heldKeys);
}
-#endif
-/*static*/ u8 CheckMovementInputNotOnBike(u8 direction)
+static u8 CheckMovementInputNotOnBike(u8 direction)
{
if (direction == DIR_NONE)
{
@@ -1855,96 +1774,24 @@ static void sub_805A954(void)
}
#if DEBUG
-__attribute__((naked))
-void debug_sub_805F2B0()
-{
- asm(
- " push {lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r2, r0, #0x18\n"
- " ldr r0, ._422 @ gMain\n"
- " ldrh r1, [r0, #0x2c]\n"
- " mov r0, #0x80\n"
- " lsl r0, r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " bne ._420 @cond_branch\n"
- " mov r0, #0x0\n"
- " b ._421\n"
- "._423:\n"
- " .align 2, 0\n"
- "._422:\n"
- " .word gMain\n"
- "._420:\n"
- " add r0, r2, #0\n"
- " bl debug_sub_805F2DC\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- "._421:\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void debug_sub_805F2DC()
-{
- asm(
- " push {r4, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r4, r0, #0x18\n"
- " cmp r4, #0\n"
- " bne ._424 @cond_branch\n"
- " ldr r2, ._426 @ gMapObjects\n"
- " ldr r0, ._426 + 4 @ gPlayerAvatar\n"
- " ldrb r1, [r0, #0x5]\n"
- " lsl r0, r1, #0x3\n"
- " add r0, r0, r1\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, r2\n"
- " ldrb r0, [r0, #0x18]\n"
- " lsr r0, r0, #0x4\n"
- " bl PlayerFaceDirection\n"
- " b ._430\n"
- "._427:\n"
- " .align 2, 0\n"
- "._426:\n"
- " .word gMapObjects\n"
- " .word gPlayerAvatar\n"
- "._424:\n"
- " ldr r2, ._431 @ gMapObjects\n"
- " ldr r0, ._431 + 4 @ gPlayerAvatar\n"
- " ldrb r1, [r0, #0x5]\n"
- " lsl r0, r1, #0x3\n"
- " add r0, r0, r1\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, r2\n"
- " ldrb r0, [r0, #0x1]\n"
- " lsr r0, r0, #0x7\n"
- " cmp r0, #0\n"
- " beq ._429 @cond_branch\n"
- " add r0, r4, #0\n"
- " bl CanCameraMoveInDirection\n"
- " cmp r0, #0\n"
- " bne ._429 @cond_branch\n"
- " add r0, r4, #0\n"
- " bl PlayerOnBikeCollide\n"
- " b ._430\n"
- "._432:\n"
- " .align 2, 0\n"
- "._431:\n"
- " .word gMapObjects\n"
- " .word gPlayerAvatar\n"
- "._429:\n"
- " add r0, r4, #0\n"
- " bl PlayerGoSpeed4\n"
- "._430:\n"
- " mov r0, #0x1\n"
- " pop {r4}\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
+
+u8 debug_sub_805F2B0(u8 a)
+{
+ if (gMain.heldKeys & 0x100)
+ return debug_sub_805F2DC(a);
+ else
+ return 0;
}
+
+u8 debug_sub_805F2DC(u8 a)
+{
+ if (a == 0)
+ PlayerFaceDirection(gMapObjects[gPlayerAvatar.mapObjectId].placeholder18);
+ else if (gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_15 && !CanCameraMoveInDirection(a))
+ PlayerOnBikeCollide(a);
+ else
+ PlayerGoSpeed4(a);
+ return 1;
+}
+
#endif
diff --git a/src/field/field_weather.c b/src/field/field_weather.c
index 3f500ba50..5857145ef 100644
--- a/src/field/field_weather.c
+++ b/src/field/field_weather.c
@@ -1,12 +1,15 @@
#include "global.h"
+#include "constants/songs.h"
+#include "constants/weather.h"
#include "blend_palette.h"
#include "event_object_movement.h"
#include "field_weather.h"
+#include "main.h"
+#include "menu.h"
#include "palette.h"
#include "random.h"
#include "script.h"
-#include "constants/weather.h"
-#include "constants/songs.h"
+#include "start_menu.h"
#include "sound.h"
#include "sprite.h"
#include "task.h"
@@ -15,7 +18,8 @@
#define MACRO1(color) ((((color) >> 1) & 0xF) | (((color) >> 2) & 0xF0) | (((color) >> 3) & 0xF00))
-enum {
+enum
+{
GAMMA_NONE,
GAMMA_NORMAL,
GAMMA_ALT,
@@ -44,9 +48,6 @@ struct WeatherCallbacks
EWRAM_DATA struct Weather gWeather = {0};
EWRAM_DATA u8 gFieldEffectPaletteGammaTypes[32] = {0};
EWRAM_DATA u16 gUnknown_0202FF58 = 0;
-#if DEBUG
-EWRAM_DATA u16 gUnknown_Debug_20301FE = 0;
-#endif
static const u8 *sPaletteGammaTypes;
@@ -215,39 +216,39 @@ static const u8 sBasePaletteGammaTypes[32] =
#if DEBUG
-const u8 gDebugText_Weather_0[] = _("なし   ");
-const u8 gDebugText_Weather_1[] = _("はれ   ");
-const u8 gDebugText_Weather_2[] = _("はれ2  ");
-const u8 gDebugText_Weather_3[] = _("あめ   ");
-const u8 gDebugText_Weather_4[] = _("ゆき   ");
-const u8 gDebugText_Weather_5[] = _("かみなり ");
-const u8 gDebugText_Weather_6[] = _("きり   ");
-const u8 gDebugText_Weather_7[] = _("かざんばい");
-const u8 gDebugText_Weather_8[] = _("すなあらし");
-const u8 gDebugText_Weather_9[] = _("きり2  ");
-const u8 gDebugText_Weather_10[] = _("かいてい ");
-const u8 gDebugText_Weather_11[] = _("くもり  ");
-const u8 gDebugText_Weather_12[] = _("はれ3  ");
-const u8 gDebugText_Weather_13[] = _("おおあめ");
-const u8 gDebugText_Weather_14[] = _("かいてい2");
-
-const u8 *const gDebugText_Weather[] =
+static const u8 sDebugText_Weather_None[] = _("なし   "); // "none"
+static const u8 sDebugText_Weather_Clear[] = _("はれ   "); // "clear"
+static const u8 sDebugText_Weather_Clear2[] = _("はれ2  "); // "clear2"
+static const u8 sDebugText_Weather_Rain[] = _("あめ   "); // "rain"
+static const u8 sDebugText_Weather_Snow[] = _("ゆき   "); // "snow"
+static const u8 sDebugText_Weather_Lightning[] = _("かみなり "); // "lightning"
+static const u8 sDebugText_Weather_Fog[] = _("きり   "); // "fog"
+static const u8 sDebugText_Weather_VolcanicAsh[] = _("かざんばい"); // "volcanic ash"
+static const u8 sDebugText_Weather_Sandstorm[] = _("すなあらし"); // "sandstorm
+static const u8 sDebugText_Weather_Fog2[] = _("きり2  "); // "fog2"
+static const u8 sDebugText_Weather_Underwater[] = _("かいてい "); // "undersea"
+static const u8 sDebugText_Weather_Cloudy[] = _("くもり  "); // "cloudy"
+static const u8 sDebugText_Weather_Clear3[] = _("はれ3  "); // "clear3"
+static const u8 sDebugText_Weather_HeavyRain[] = _("おおあめ"); // "heavy rain"
+static const u8 sDebugText_Weather_Underwater2[] = _("かいてい2"); // "undersea2"
+
+static const u8 *const sDebugText_Weather[] =
{
- gDebugText_Weather_0,
- gDebugText_Weather_1,
- gDebugText_Weather_2,
- gDebugText_Weather_3,
- gDebugText_Weather_4,
- gDebugText_Weather_5,
- gDebugText_Weather_6,
- gDebugText_Weather_7,
- gDebugText_Weather_8,
- gDebugText_Weather_9,
- gDebugText_Weather_10,
- gDebugText_Weather_11,
- gDebugText_Weather_12,
- gDebugText_Weather_13,
- gDebugText_Weather_14,
+ [WEATHER_NONE] = sDebugText_Weather_None,
+ [WEATHER_CLOUDS] = sDebugText_Weather_Clear,
+ [WEATHER_SUNNY] = sDebugText_Weather_Clear2,
+ [WEATHER_RAIN_LIGHT] = sDebugText_Weather_Rain,
+ [WEATHER_SNOW] = sDebugText_Weather_Snow,
+ [WEATHER_RAIN_MED] = sDebugText_Weather_Lightning,
+ [WEATHER_FOG_1] = sDebugText_Weather_Fog,
+ [WEATHER_ASH] = sDebugText_Weather_VolcanicAsh,
+ [WEATHER_SANDSTORM] = sDebugText_Weather_Sandstorm,
+ [WEATHER_FOG_2] = sDebugText_Weather_Fog2,
+ [WEATHER_FOG_3] = sDebugText_Weather_Underwater,
+ [WEATHER_SHADE] = sDebugText_Weather_Cloudy,
+ [WEATHER_DROUGHT] = sDebugText_Weather_Clear3,
+ [WEATHER_RAIN_HEAVY] = sDebugText_Weather_HeavyRain,
+ [WEATHER_BUBBLES] = sDebugText_Weather_Underwater2,
};
#endif
@@ -1258,142 +1259,52 @@ void ResetPreservedPalettesInWeather(void)
#if DEBUG
-__attribute__((naked))
-u8 debug_sub_8085564(void)
+EWRAM_DATA static u8 sSelectedDebugWeather = 0;
+
+bool8 debug_sub_8085564(void)
{
- asm("\
- push {lr}\n\
- mov r2, #0x0\n\
- ldr r0, ._375 @ gMain\n\
- ldrh r1, [r0, #0x2e]\n\
- mov r0, #0x80\n\
- lsl r0, r0, #0x1\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._370 @cond_branch\n\
- ldr r1, ._375 + 4 @ gUnknown_Debug_20301FE\n\
- ldrb r0, [r1]\n\
- add r0, r0, #0x1\n\
- strb r0, [r1]\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- cmp r0, #0xf\n\
- bne ._371 @cond_branch\n\
- strb r2, [r1]\n\
-._371:\n\
- mov r2, #0x1\n\
-._370:\n\
- ldr r0, ._375 @ gMain\n\
- ldrh r1, [r0, #0x2e]\n\
- mov r0, #0x80\n\
- lsl r0, r0, #0x2\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._372 @cond_branch\n\
- ldr r1, ._375 + 4 @ gUnknown_Debug_20301FE\n\
- ldrb r0, [r1]\n\
- cmp r0, #0\n\
- beq ._373 @cond_branch\n\
- sub r0, r0, #0x1\n\
- b ._374\n\
-._376:\n\
- .align 2, 0\n\
-._375:\n\
- .word gMain\n\
- .word gUnknown_Debug_20301FE\n\
-._373:\n\
- mov r0, #0xe\n\
-._374:\n\
- strb r0, [r1]\n\
- mov r2, #0x1\n\
-._372:\n\
- cmp r2, #0\n\
- beq ._377 @cond_branch\n\
- mov r0, #0x16\n\
- mov r1, #0x1\n\
- mov r2, #0x1c\n\
- mov r3, #0x2\n\
- bl Menu_BlankWindowRect\n\
- ldr r1, ._380 @ gDebugText_Weather\n\
- ldr r0, ._380 + 4 @ gUnknown_Debug_20301FE\n\
- ldrb r0, [r0]\n\
- lsl r0, r0, #0x2\n\
- add r0, r0, r1\n\
- ldr r0, [r0]\n\
- mov r1, #0x17\n\
- mov r2, #0x1\n\
- bl Menu_PrintText\n\
-._377:\n\
- ldr r0, ._380 + 8 @ gMain\n\
- ldrh r1, [r0, #0x2e]\n\
- mov r0, #0x1\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- bne ._378 @cond_branch\n\
- mov r0, #0x0\n\
- b ._379\n\
-._381:\n\
- .align 2, 0\n\
-._380:\n\
- .word gDebugText_Weather\n\
- .word gUnknown_Debug_20301FE\n\
- .word gMain\n\
-._378:\n\
- ldr r0, ._382 @ gUnknown_Debug_20301FE\n\
- ldrb r0, [r0]\n\
- bl ChangeWeather\n\
- bl CloseMenu\n\
- mov r0, #0x1\n\
-._379:\n\
- pop {r1}\n\
- bx r1\n\
-._383:\n\
- .align 2, 0\n\
-._382:\n\
- .word gUnknown_Debug_20301FE");
+ bool8 changed = FALSE;
+
+ if (gMain.newKeys & R_BUTTON)
+ {
+ sSelectedDebugWeather++;
+ if (sSelectedDebugWeather == 15)
+ sSelectedDebugWeather = 0;
+ changed = TRUE;
+ }
+ if (gMain.newKeys & L_BUTTON)
+ {
+ if (sSelectedDebugWeather != 0)
+ sSelectedDebugWeather--;
+ else
+ sSelectedDebugWeather = 14;
+ changed = TRUE;
+ }
+
+ if (changed)
+ {
+ Menu_BlankWindowRect(22, 1, 28, 2);
+ Menu_PrintText(sDebugText_Weather[sSelectedDebugWeather], 23, 1);
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ ChangeWeather(sSelectedDebugWeather);
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
}
-__attribute__((naked))
-u8 debug_sub_808560C(void)
+bool8 debug_sub_808560C(void)
{
- asm("\
- push {r4, lr}\n\
- ldr r4, ._384 @ gUnknown_Debug_20301FE\n\
- ldr r0, ._384 + 4 @ gWeather\n\
- mov r1, #0xda\n\
- lsl r1, r1, #0x3\n\
- add r0, r0, r1\n\
- ldrb r0, [r0]\n\
- strb r0, [r4]\n\
- bl Menu_EraseScreen\n\
- mov r0, #0x16\n\
- mov r1, #0x1\n\
- mov r2, #0x1c\n\
- mov r3, #0x2\n\
- bl Menu_BlankWindowRect\n\
- ldr r1, ._384 + 8 @ gDebugText_Weather\n\
- ldrb r0, [r4]\n\
- lsl r0, r0, #0x2\n\
- add r0, r0, r1\n\
- ldr r0, [r0]\n\
- mov r1, #0x17\n\
- mov r2, #0x1\n\
- bl Menu_PrintText\n\
- ldr r1, ._384 + 12 @ gMenuCallback\n\
- ldr r0, ._384 + 16 @ debug_sub_8085564\n\
- str r0, [r1]\n\
- mov r0, #0x0\n\
- pop {r4}\n\
- pop {r1}\n\
- bx r1\n\
-._385:\n\
- .align 2, 0\n\
-._384:\n\
- .word gUnknown_Debug_20301FE\n\
- .word gWeather\n\
- .word gDebugText_Weather\n\
- .word gMenuCallback\n\
- .word debug_sub_8085564+1");
+ sSelectedDebugWeather = gWeather.currWeather;
+ Menu_EraseScreen();
+ Menu_BlankWindowRect(22, 1, 28, 2);
+ Menu_PrintText(sDebugText_Weather[sSelectedDebugWeather], 23, 1);
+ gMenuCallback = debug_sub_8085564;
+ return FALSE;
}
#endif
diff --git a/src/field/fldeff_cut.c b/src/field/fldeff_cut.c
index 5bf2c5c43..c8f942fe5 100644
--- a/src/field/fldeff_cut.c
+++ b/src/field/fldeff_cut.c
@@ -73,112 +73,43 @@ static const struct SpriteTemplate gSpriteTemplate_CutGrass =
};
#if DEBUG
-__attribute__((naked))
-void debug_sub_80AFEE4()
+
+void debug_sub_80AFEE4(void)
{
- asm(
- " push {r4, r5, r6, r7, lr}\n"
- " mov r7, r8\n"
- " push {r7}\n"
- " mov r0, #0x52\n"
- " bl npc_before_player_of_type\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " cmp r0, #0x1\n"
- " bne ._1 @cond_branch\n"
- " ldr r1, ._3 @ gLastFieldPokeMenuOpened\n"
- " mov r0, #0x0\n"
- " strb r0, [r1]\n"
- " bl sub_80A2634\n"
- " b ._8\n"
- "._4:\n"
- " .align 2, 0\n"
- "._3:\n"
- " .word gLastFieldPokeMenuOpened\n"
- "._1:\n"
- " ldr r4, ._9 @ gUnknown_0203923C\n"
- " add r1, r4, #2\n"
- " add r0, r4, #0\n"
- " bl PlayerGetDestCoords\n"
- " mov r7, #0x0\n"
- " mov r8, r4\n"
- "._12:\n"
- " ldr r1, ._9 + 4 @ 0xffff\n"
- " add r0, r7, r1\n"
- " mov r2, r8\n"
- " ldrh r2, [r2, #0x2]\n"
- " add r0, r0, r2\n"
- " mov r6, #0x0\n"
- " lsl r0, r0, #0x10\n"
- " asr r5, r0, #0x10\n"
- "._11:\n"
- " ldr r1, ._9 + 4 @ 0xffff\n"
- " add r0, r6, r1\n"
- " mov r2, r8\n"
- " ldrh r2, [r2]\n"
- " add r0, r0, r2\n"
- " lsl r0, r0, #0x10\n"
- " asr r4, r0, #0x10\n"
- " add r0, r4, #0\n"
- " add r1, r5, #0\n"
- " bl MapGridGetZCoordAt\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " mov r2, r8\n"
- " mov r1, #0x4\n"
- " ldsb r1, [r2, r1]\n"
- " cmp r0, r1\n"
- " bne ._7 @cond_branch\n"
- " add r0, r4, #0\n"
- " add r1, r5, #0\n"
- " bl MapGridGetMetatileBehaviorAt\n"
- " lsl r0, r0, #0x18\n"
- " lsr r4, r0, #0x18\n"
- " add r0, r4, #0\n"
- " bl MetatileBehavior_IsPokeGrass\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " cmp r0, #0x1\n"
- " beq ._6 @cond_branch\n"
- " add r0, r4, #0\n"
- " bl MetatileBehavior_IsAshGrass\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " cmp r0, #0x1\n"
- " bne ._7 @cond_branch\n"
- "._6:\n"
- " ldr r1, ._9 + 8 @ gLastFieldPokeMenuOpened\n"
- " mov r0, #0x0\n"
- " strb r0, [r1]\n"
- " bl sub_80A25E8\n"
- " b ._8\n"
- "._10:\n"
- " .align 2, 0\n"
- "._9:\n"
- " .word gUnknown_0203923C\n"
- " .word 0xffff\n"
- " .word gLastFieldPokeMenuOpened\n"
- "._7:\n"
- " add r0, r6, #1\n"
- " lsl r0, r0, #0x18\n"
- " lsr r6, r0, #0x18\n"
- " cmp r6, #0x2\n"
- " bls ._11 @cond_branch\n"
- " add r0, r7, #1\n"
- " lsl r0, r0, #0x18\n"
- " lsr r7, r0, #0x18\n"
- " cmp r7, #0x2\n"
- " bls ._12 @cond_branch\n"
- " bl ScriptContext2_Disable\n"
- "._8:\n"
- " pop {r3}\n"
- " mov r8, r3\n"
- " pop {r4, r5, r6, r7}\n"
- " pop {r0}\n"
- " bx r0\n"
- "\n"
- );
+ s16 x, y;
+ u8 i, j;
+ u8 metatile;
+
+ if (npc_before_player_of_type(0x52) == TRUE)
+ {
+ gLastFieldPokeMenuOpened = 0;
+ sub_80A2634();
+ return;
+ }
+
+ PlayerGetDestCoords(&gUnknown_0203923C.x, &gUnknown_0203923C.y);
+ for (i = 0; i < 3; i++)
+ {
+ y = i - 1 + gUnknown_0203923C.y;
+ for (j = 0; j < 3; j++)
+ {
+ x = j - 1 + gUnknown_0203923C.x;
+ if (MapGridGetZCoordAt(x, y) == gUnknown_0203923C.height)
+ {
+ metatile = MapGridGetMetatileBehaviorAt(x, y);
+ if (MetatileBehavior_IsPokeGrass(metatile) == TRUE
+ || MetatileBehavior_IsAshGrass(metatile) == TRUE)
+ {
+ gLastFieldPokeMenuOpened = 0;
+ sub_80A25E8();
+ return;
+ }
+ }
+ }
+ }
+ ScriptContext2_Disable();
}
+
#endif
bool8 SetUpFieldMove_Cut(void)
@@ -202,7 +133,7 @@ bool8 SetUpFieldMove_Cut(void)
for(j = 0; j < 3; j++)
{
x = j - 1 + gUnknown_0203923C.x;
- if(MapGridGetZCoordAt(x, y) == (s8)gUnknown_0203923C.height)
+ if(MapGridGetZCoordAt(x, y) == gUnknown_0203923C.height)
{
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
if(MetatileBehavior_IsPokeGrass(tileBehavior) == TRUE
diff --git a/src/field/fldeff_flash.c b/src/field/fldeff_flash.c
index 8c0f09bd9..30ddd0f6c 100644
--- a/src/field/fldeff_flash.c
+++ b/src/field/fldeff_flash.c
@@ -72,33 +72,15 @@ static const u16 gCaveTransitionTilemap[] = INCBIN_U16("graphics/misc/cave_trans
static const u8 gCaveTransitionTiles[] = INCBIN_U8("graphics/misc/cave_transition.4bpp.lz");
#if DEBUG
-__attribute__((naked))
+
void debug_sub_8122080(void)
{
- asm("\
- push {lr}\n\
- ldr r0, ._4 @ gMapHeader\n\
- ldrb r0, [r0, #0x15]\n\
- cmp r0, #0x1\n\
- bne ._2 @cond_branch\n\
- ldr r0, ._4 + 4 @ 0x828\n\
- bl FlagGet\n\
- lsl r0, r0, #0x18\n\
- cmp r0, #0\n\
- bne ._2 @cond_branch\n\
- bl sub_810CBFC\n\
- b ._3\n\
-._5:\n\
- .align 2, 0\n\
-._4:\n\
- .word gMapHeader\n\
- .word 0x828\n\
-._2:\n\
- bl ScriptContext2_Disable\n\
-._3:\n\
- pop {r0}\n\
- bx r0");
+ if (gMapHeader.cave == 1 && !FlagGet(FLAG_SYS_USE_FLASH))
+ sub_810CBFC();
+ else
+ ScriptContext2_Disable();
}
+
#endif
bool8 SetUpFieldMove_Flash(void)
diff --git a/src/field/fldeff_secretpower.c b/src/field/fldeff_secretpower.c
index 0e91bb55c..d1df03d84 100644
--- a/src/field/fldeff_secretpower.c
+++ b/src/field/fldeff_secretpower.c
@@ -245,98 +245,44 @@ void sub_80C6280(void)
#if DEBUG
-__attribute__((naked))
-void debug_sub_80D93F4()
-{
- asm("\
- push {r4, lr}\n\
- bl sub_80BB63C\n\
- ldr r0, ._98 @ gSpecialVar_Result\n\
- ldrh r0, [r0]\n\
- cmp r0, #0x1\n\
- beq ._95 @cond_branch\n\
- bl player_get_direction_lower_nybble\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- cmp r0, #0x2\n\
- beq ._96 @cond_branch\n\
-._95:\n\
- bl ScriptContext2_Disable\n\
- b ._109\n\
-._99:\n\
- .align 2, 0\n\
-._98:\n\
- .word gSpecialVar_Result\n\
-._96:\n\
- ldr r4, ._102 @ gUnknown_0203923C\n\
- add r1, r4, #2\n\
- add r0, r4, #0\n\
- bl GetXYCoordsOneStepInFrontOfPlayer\n\
- mov r1, #0x0\n\
- ldsh r0, [r4, r1]\n\
- mov r2, #0x2\n\
- ldsh r1, [r4, r2]\n\
- bl MapGridGetMetatileBehaviorAt\n\
- lsl r0, r0, #0x18\n\
- lsr r4, r0, #0x18\n\
- add r0, r4, #0\n\
- bl MetatileBehavior_IsSecretBaseCave\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- cmp r0, #0x1\n\
- bne ._100 @cond_branch\n\
- bl sub_80C6264\n\
- ldr r1, ._102 + 4 @ gLastFieldPokeMenuOpened\n\
- mov r0, #0x0\n\
- strb r0, [r1]\n\
- bl sub_80C639C\n\
- b ._109\n\
-._103:\n\
- .align 2, 0\n\
-._102:\n\
- .word gUnknown_0203923C\n\
- .word gLastFieldPokeMenuOpened\n\
-._100:\n\
- add r0, r4, #0\n\
- bl MetatileBehavior_IsSecretBaseTree\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- cmp r0, #0x1\n\
- bne ._104 @cond_branch\n\
- bl sub_80C6264\n\
- ldr r1, ._106 @ gLastFieldPokeMenuOpened\n\
- mov r0, #0x0\n\
- strb r0, [r1]\n\
- bl sub_80C64A8\n\
- b ._109\n\
-._107:\n\
- .align 2, 0\n\
-._106:\n\
- .word gLastFieldPokeMenuOpened\n\
-._104:\n\
- add r0, r4, #0\n\
- bl MetatileBehavior_IsSecretBaseShrub\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- cmp r0, #0x1\n\
- bne ._108 @cond_branch\n\
- bl sub_80C6264\n\
- ldr r1, ._110 @ gLastFieldPokeMenuOpened\n\
- mov r0, #0x0\n\
- strb r0, [r1]\n\
- bl sub_80C660C\n\
- b ._109\n\
-._111:\n\
- .align 2, 0\n\
-._110:\n\
- .word gLastFieldPokeMenuOpened\n\
-._108:\n\
- bl ScriptContext2_Disable\n\
-._109:\n\
- pop {r4}\n\
- pop {r0}\n\
- bx r0");
+void debug_sub_80D93F4(void)
+{
+ u8 metatile;
+
+ sub_80BB63C();
+
+ if (gSpecialVar_Result == 1 || player_get_direction_lower_nybble() != 2)
+ {
+ ScriptContext2_Disable();
+ return;
+ }
+
+ GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y);
+ metatile = MapGridGetMetatileBehaviorAt(gUnknown_0203923C.x, gUnknown_0203923C.y);
+ if (MetatileBehavior_IsSecretBaseCave(metatile) == TRUE)
+ {
+ sub_80C6264();
+ gLastFieldPokeMenuOpened = 0;
+ sub_80C639C();
+ }
+ else if (MetatileBehavior_IsSecretBaseTree(metatile) == TRUE)
+ {
+ sub_80C6264();
+ gLastFieldPokeMenuOpened = 0;
+ sub_80C64A8();
+ }
+ else if (MetatileBehavior_IsSecretBaseShrub(metatile) == TRUE)
+ {
+ sub_80C6264();
+ gLastFieldPokeMenuOpened = 0;
+ sub_80C660C();
+ }
+ else
+ {
+ ScriptContext2_Disable();
+ }
}
+
#endif
bool8 SetUpFieldMove_SecretPower(void)
diff --git a/src/field/item.c b/src/field/item.c
index 78f5ce12d..af05c0a21 100644
--- a/src/field/item.c
+++ b/src/field/item.c
@@ -8,6 +8,24 @@
#include "string_util.h"
#include "strings.h"
+struct Item
+{
+ u8 name[14];
+ u16 itemId;
+ u16 price;
+ u8 holdEffect;
+ u8 holdEffectParam;
+ const u8 *description;
+ u8 importance;
+ u8 unk19;
+ u8 pocket;
+ u8 type;
+ ItemUseFunc fieldUseFunc;
+ u8 battleUsage;
+ ItemUseFunc battleUseFunc;
+ u8 secondaryId;
+};
+
extern u8 gUnknown_02038560;
extern struct BagPocket gBagPockets[NUM_BAG_POCKETS];
@@ -49,7 +67,9 @@ void CopyItemName(u16 itemId, u8 *string)
StringAppend(string, gOtherText_Berry2);
}
else
- StringCopy(string, ItemId_GetItem(itemId)->name);
+ {
+ StringCopy(string, ItemId_GetName(itemId));
+ }
}
//Unreferenced
@@ -579,9 +599,9 @@ static u16 SanitizeItemId(u16 itemId)
return itemId;
}
-const struct Item *ItemId_GetItem(u16 itemId)
+const u8 *ItemId_GetName(u16 itemId)
{
- return &gItems[SanitizeItemId(itemId)];
+ return gItems[SanitizeItemId(itemId)].name;
}
u16 ItemId_GetId(u16 itemId)
@@ -640,6 +660,7 @@ u8 ItemId_GetImportance(u16 itemId)
return gItems[SanitizeItemId(itemId)].importance;
}
+// unused
u8 ItemId_GetUnknownValue(u16 itemId)
{
return gItems[SanitizeItemId(itemId)].unk19;
diff --git a/src/field/item_menu.c b/src/field/item_menu.c
index 774fdf4b2..32b14e021 100644
--- a/src/field/item_menu.c
+++ b/src/field/item_menu.c
@@ -289,24 +289,6 @@ static void sub_80A6618(u8);
const struct YesNoFuncTable gUnknown_083C16FC = {sub_80A65AC, sub_80A6618};
-#if DEBUG
-const struct {u16 item; u8 unk;} gUnknown_Debug_083EBC68[12+48] =
-{
- {ITEM_POKE_BALL, 10},
- {ITEM_ULTRA_BALL, 15},
- {ITEM_GREAT_BALL, 20},
- {ITEM_MASTER_BALL, 25},
- {ITEM_ACRO_BIKE, 1 },
- {ITEM_OLD_ROD, 1 },
- {ITEM_GOOD_ROD, 1 },
- {ITEM_SUPER_ROD, 1 },
- {ITEM_POKEBLOCK_CASE, 1 },
- {ITEM_WAILMER_PAIL, 1 },
- {ITEM_ITEMFINDER, 1 },
- {ITEM_NONE, 1 },
-};
-#endif
-
void sub_80A34E8(void);
static bool8 LoadBagGraphicsMultistep(void);
static void sub_80A362C(void);
@@ -393,390 +375,6 @@ static void sub_80A3134(void)
DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(VRAM + 0x6000), 0x800);
}
-#if DEBUG
-__attribute__((naked))
-static bool8 SetupBagMultistep(void)
-{
- asm("\
- push {r4, r5, lr}\n\
- add sp, sp, #0xfffffffc\n\
- ldr r0, ._5 @ gMain\n\
- ldr r1, ._5 + 4 @ 0x43c\n\
- add r0, r0, r1\n\
- ldrb r0, [r0]\n\
- cmp r0, #0x10\n\
- bls ._3 @cond_branch\n\
- b ._66\n\
-._3:\n\
- lsl r0, r0, #0x2\n\
- ldr r1, ._5 + 8 @ \n\
- add r0, r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
-._6:\n\
- .align 2, 0\n\
-._5:\n\
- .word gMain\n\
- .word 0x43c\n\
- .word ._7\n\
-._7:\n\
- .word ._8\n\
- .word ._9\n\
- .word ._10\n\
- .word ._11\n\
- .word ._12\n\
- .word ._13\n\
- .word ._14\n\
- .word ._15\n\
- .word ._16\n\
- .word ._17\n\
- .word ._18\n\
- .word ._19\n\
- .word ._20\n\
- .word ._21\n\
- .word ._22\n\
- .word ._23\n\
- .word ._24\n\
-._8:\n\
- bl ClearVideoCallbacks\n\
- bl sub_80A34E8\n\
- b ._61\n\
-._9:\n\
- bl ScanlineEffect_Stop\n\
- ldr r1, ._27 @ gMain\n\
- ldr r0, ._27 + 4 @ 0x43c\n\
- add r1, r1, r0\n\
- b ._62\n\
-._28:\n\
- .align 2, 0\n\
-._27:\n\
- .word gMain\n\
- .word 0x43c\n\
-._10:\n\
- bl gpu_pal_allocator_reset__manage_upper_four\n\
- b ._61\n\
-._11:\n\
- bl ClearBGTilemapBuffers\n\
- ldr r0, ._31 @ \n\
- ldr r1, ._31 + 4 @ \n\
- add r0, r0, r1\n\
- mov r1, #0x0\n\
- strb r1, [r0]\n\
- b ._61\n\
-._32:\n\
- .align 2, 0\n\
-._31:\n\
- .word +0x2000000\n\
- .word 0x1ffff\n\
-._12:\n\
- bl ResetPaletteFade\n\
- ldr r2, ._34 @ gPaletteFade\n\
- ldrb r0, [r2, #0x8]\n\
- mov r1, #0x80\n\
- orr r0, r0, r1\n\
- strb r0, [r2, #0x8]\n\
- ldr r1, ._34 + 4 @ gMain\n\
- ldr r0, ._34 + 8 @ 0x43c\n\
- add r1, r1, r0\n\
- b ._62\n\
-._35:\n\
- .align 2, 0\n\
-._34:\n\
- .word gPaletteFade\n\
- .word gMain\n\
- .word 0x43c\n\
-._13:\n\
- bl ResetSpriteData\n\
- b ._61\n\
-._14:\n\
- bl LoadBagGraphicsMultistep\n\
- lsl r0, r0, #0x18\n\
- cmp r0, #0\n\
- bne ._37 @cond_branch\n\
- b ._66\n\
-._37:\n\
- ldr r1, ._40 @ gMain\n\
- ldr r0, ._40 + 4 @ 0x43c\n\
- add r1, r1, r0\n\
- b ._62\n\
-._41:\n\
- .align 2, 0\n\
-._40:\n\
- .word gMain\n\
- .word 0x43c\n\
-._15:\n\
- ldr r0, ._43 @ gWindowTemplate_81E6DFC\n\
- bl Text_LoadWindowTemplate\n\
- b ._61\n\
-._44:\n\
- .align 2, 0\n\
-._43:\n\
- .word gWindowTemplate_81E6DFC\n\
-._16:\n\
- ldr r0, ._46 @ gWindowTemplate_81E6DFC\n\
- bl MultistepInitMenuWindowBegin\n\
- ldr r1, ._46 + 4 @ gMain\n\
- ldr r0, ._46 + 8 @ 0x43c\n\
- add r1, r1, r0\n\
- b ._62\n\
-._47:\n\
- .align 2, 0\n\
-._46:\n\
- .word gWindowTemplate_81E6DFC\n\
- .word gMain\n\
- .word 0x43c\n\
-._17:\n\
- bl MultistepInitMenuWindowContinue\n\
- cmp r0, #0\n\
- bne ._48 @cond_branch\n\
- b ._66\n\
-._48:\n\
- b ._61\n\
-._18:\n\
- bl ClearVerticalScrollIndicatorPalettes\n\
- bl LoadScrollIndicatorPalette\n\
- mov r0, #0x0\n\
- mov r1, #0xac\n\
- mov r2, #0xc\n\
- bl CreateVerticalScrollIndicators\n\
- mov r0, #0x1\n\
- mov r1, #0xac\n\
- mov r2, #0x94\n\
- bl CreateVerticalScrollIndicators\n\
- mov r0, #0x2\n\
- mov r1, #0x1c\n\
- mov r2, #0x58\n\
- bl CreateVerticalScrollIndicators\n\
- mov r0, #0x3\n\
- mov r1, #0x64\n\
- mov r2, #0x58\n\
- bl CreateVerticalScrollIndicators\n\
- mov r0, #0x0\n\
- mov r1, #0x2\n\
- bl SetVerticalScrollIndicatorPriority\n\
- mov r0, #0x1\n\
- mov r1, #0x2\n\
- bl SetVerticalScrollIndicatorPriority\n\
- mov r0, #0x2\n\
- mov r1, #0x2\n\
- bl SetVerticalScrollIndicatorPriority\n\
- mov r0, #0x3\n\
- mov r1, #0x2\n\
- bl SetVerticalScrollIndicatorPriority\n\
- ldr r0, ._53 @ sReturnLocation\n\
- ldrb r0, [r0]\n\
- sub r0, r0, #0x4\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- cmp r0, #0x1\n\
- bhi ._51 @cond_branch\n\
- mov r0, #0x2\n\
- mov r1, #0x1\n\
- bl SetVerticalScrollIndicators\n\
- mov r0, #0x3\n\
- mov r1, #0x1\n\
- bl SetVerticalScrollIndicators\n\
-._51:\n\
- ldr r1, ._53 + 4 @ gMain\n\
- ldr r0, ._53 + 8 @ 0x43c\n\
- add r1, r1, r0\n\
- b ._62\n\
-._54:\n\
- .align 2, 0\n\
-._53:\n\
- .word sReturnLocation\n\
- .word gMain\n\
- .word 0x43c\n\
-._19:\n\
- ldr r1, ._56 @ gUnknown_0203855A\n\
- mov r0, #0x10\n\
- strb r0, [r1]\n\
- ldr r4, ._56 + 4 @ gBGTilemapBuffers\n\
- ldr r5, ._56 + 8 @ sCurrentBagPocket\n\
- ldrb r1, [r5]\n\
- add r1, r1, #0x1\n\
- lsl r1, r1, #0x18\n\
- lsr r1, r1, #0x18\n\
- add r0, r4, #0\n\
- bl sub_80A39B8\n\
- ldrb r1, [r5]\n\
- add r0, r4, #0\n\
- bl DrawPocketIndicatorDots\n\
- bl UpdateAllBagPockets\n\
- ldr r4, ._56 + 12 @ gBagPockets\n\
- ldr r0, [r4, #0x10]\n\
- ldr r1, [r4, #0x14]\n\
- bl SortItemSlots\n\
- ldr r0, [r4, #0x18]\n\
- ldr r1, [r4, #0x1c]\n\
- bl SortItemSlots\n\
- bl sub_80A3D40\n\
- ldr r1, ._56 + 16 @ gCurrentBagPocketItemSlots\n\
- mov r0, #0x0\n\
- ldsb r0, [r5, r0]\n\
- lsl r0, r0, #0x3\n\
- add r0, r0, r4\n\
- ldr r0, [r0]\n\
- str r0, [r1]\n\
- bl sub_80A362C\n\
- b ._61\n\
-._57:\n\
- .align 2, 0\n\
-._56:\n\
- .word gUnknown_0203855A\n\
- .word gBGTilemapBuffers+0x1000\n\
- .word sCurrentBagPocket\n\
- .word gBagPockets\n\
- .word gCurrentBagPocketItemSlots\n\
-._20:\n\
- ldr r0, ._59 @ 0xffff\n\
- mov r1, #0x0\n\
- mov r2, #0x7\n\
- bl sub_80A48E8\n\
- ldr r1, ._59 + 4 @ gBagPocketScrollStates\n\
- ldr r4, ._59 + 8 @ sCurrentBagPocket\n\
- mov r0, #0x0\n\
- ldsb r0, [r4, r0]\n\
- lsl r0, r0, #0x2\n\
- add r0, r0, r1\n\
- ldrb r1, [r0, #0x1]\n\
- ldrb r0, [r0]\n\
- add r1, r1, r0\n\
- ldr r0, ._59 + 12 @ gCurrentBagPocketItemSlots\n\
- ldr r0, [r0]\n\
- lsl r1, r1, #0x2\n\
- add r1, r1, r0\n\
- mov r2, #0x0\n\
- ldsh r0, [r1, r2]\n\
- bl ItemListMenu_InitDescription\n\
- bl ItemListMenu_InitMenu\n\
- ldr r1, ._59 + 16 @ gUnknown_0203855B\n\
- ldrb r0, [r4]\n\
- add r0, r0, #0x1\n\
- strb r0, [r1]\n\
- ldr r1, ._59 + 20 @ gUnknown_0203855C\n\
- mov r0, #0x0\n\
- strb r0, [r1]\n\
- ldr r1, ._59 + 24 @ gMain\n\
- ldr r0, ._59 + 28 @ 0x43c\n\
- add r1, r1, r0\n\
- b ._62\n\
-._60:\n\
- .align 2, 0\n\
-._59:\n\
- .word 0xffff\n\
- .word gBagPocketScrollStates\n\
- .word sCurrentBagPocket\n\
- .word gCurrentBagPocketItemSlots\n\
- .word gUnknown_0203855B\n\
- .word gUnknown_0203855C\n\
- .word gMain\n\
- .word 0x43c\n\
-._21:\n\
- bl CreateBagSprite\n\
- mov r0, #0x0\n\
- bl CreateBagPokeballSprite\n\
- bl sub_80A3740\n\
- b ._61\n\
-._22:\n\
- ldr r3, ._63 @ 0x4000208\n\
- ldrh r2, [r3]\n\
- mov r0, #0x0\n\
- strh r0, [r3]\n\
- ldr r4, ._63 + 4 @ 0x4000200\n\
- ldrh r0, [r4]\n\
- mov r1, #0x1\n\
- orr r0, r0, r1\n\
- strh r0, [r4]\n\
- strh r2, [r3]\n\
- ldr r2, ._63 + 8 @ 0x4000004\n\
- ldrh r0, [r2]\n\
- mov r1, #0x8\n\
- orr r0, r0, r1\n\
- strh r0, [r2]\n\
- mov r0, #0x1\n\
- neg r0, r0\n\
- mov r1, #0x0\n\
- str r1, [sp]\n\
- mov r2, #0x10\n\
- mov r3, #0x0\n\
- bl BeginNormalPaletteFade\n\
- ldr r2, ._63 + 12 @ gPaletteFade\n\
- ldrb r1, [r2, #0x8]\n\
- mov r0, #0x7f\n\
- and r0, r0, r1\n\
- strb r0, [r2, #0x8]\n\
- ldr r1, ._63 + 16 @ gMain\n\
- ldr r0, ._63 + 20 @ 0x43c\n\
- add r1, r1, r0\n\
- b ._62\n\
-._64:\n\
- .align 2, 0\n\
-._63:\n\
- .word 0x4000208\n\
- .word 0x4000200\n\
- .word 0x4000004\n\
- .word gPaletteFade\n\
- .word gMain\n\
- .word 0x43c\n\
-._23:\n\
- bl sub_8055870\n\
- cmp r0, #0x1\n\
- beq ._66 @cond_branch\n\
-._61:\n\
- ldr r1, ._67 @ gMain\n\
- ldr r2, ._67 + 4 @ 0x43c\n\
- add r1, r1, r2\n\
-._62:\n\
- ldrb r0, [r1]\n\
- add r0, r0, #0x1\n\
- strb r0, [r1]\n\
- b ._66\n\
-._68:\n\
- .align 2, 0\n\
-._67:\n\
- .word gMain\n\
- .word 0x43c\n\
-._24:\n\
- ldr r0, ._71 @ sub_80A3134\n\
- bl SetVBlankCallback\n\
- ldr r0, ._71 + 4 @ sub_80A3118\n\
- bl SetMainCallback2\n\
- bl sub_80A751C\n\
- bl sub_80A7630\n\
- bl sub_80A770C\n\
- bl sub_80A7828\n\
- bl sub_80A78B8\n\
- ldr r0, ._71 + 8 @ gLinkOpen\n\
- ldrb r0, [r0]\n\
- cmp r0, #0x1\n\
- bne ._69 @cond_branch\n\
- ldr r0, ._71 + 12 @ 0x600f5e0\n\
- mov r1, #0x80\n\
- lsl r1, r1, #0x8\n\
- ldr r2, ._71 + 16 @ 0x600f800\n\
- mov r3, #0x0\n\
- bl debug_sub_8008218\n\
-._69:\n\
- mov r0, #0x1\n\
- b ._70\n\
-._72:\n\
- .align 2, 0\n\
-._71:\n\
- .word sub_80A3134+1\n\
- .word sub_80A3118+1\n\
- .word gLinkOpen\n\
- .word 0x600f5e0\n\
- .word 0x600f800\n\
-._66:\n\
- mov r0, #0x0\n\
-._70:\n\
- add sp, sp, #0x4\n\
- pop {r4, r5}\n\
- pop {r1}\n\
- bx r1");
-}
-#else
static bool8 SetupBagMultistep(void)
{
u32 index;
@@ -897,11 +495,14 @@ static bool8 SetupBagMultistep(void)
sub_80A770C();
sub_80A7828();
sub_80A78B8();
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0xF5E0), 0x8000, (void *)(VRAM + 0xF800), 0);
+#endif
return TRUE;
}
return FALSE;
}
-#endif
static bool8 sub_80A34B4(void)
{
@@ -1029,76 +630,42 @@ void ClearBag(void)
}
#if DEBUG
-__attribute__((naked))
-void debug_sub_80A3714()
-{
- asm("\
- push {r4, r5, r6, lr}\n\
- add sp, sp, #0xfffffff4\n\
- mov r5, #0x0\n\
- ldr r2, ._138 @ gUnknown_Debug_083EBC68\n\
- mov r1, #0x0\n\
-._134:\n\
- lsl r0, r5, #0x1\n\
- add r0, r0, sp\n\
- strh r1, [r0]\n\
- add r0, r5, #1\n\
- lsl r0, r0, #0x10\n\
- lsr r5, r0, #0x10\n\
- cmp r5, #0x4\n\
- bls ._134 @cond_branch\n\
- mov r5, #0x0\n\
- ldrh r0, [r2]\n\
- cmp r0, #0\n\
- beq ._136 @cond_branch\n\
- add r6, r2, #0\n\
-._137:\n\
- lsl r4, r5, #0x2\n\
- add r4, r4, r6\n\
- ldrh r0, [r4]\n\
- bl ItemId_GetPocket\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x8\n\
- ldr r1, ._138 + 4 @ 0xffff0000\n\
- add r0, r0, r1\n\
- lsr r0, r0, #0x10\n\
- ldr r1, ._138 + 8 @ gBagPockets\n\
- lsl r2, r0, #0x3\n\
- add r2, r2, r1\n\
- lsl r0, r0, #0x1\n\
- mov r1, sp\n\
- add r3, r1, r0\n\
- ldrh r1, [r3]\n\
- ldr r0, [r2]\n\
- lsl r1, r1, #0x2\n\
- add r1, r1, r0\n\
- ldr r0, [r4]\n\
- str r0, [r1]\n\
- ldrh r0, [r3]\n\
- add r0, r0, #0x1\n\
- strh r0, [r3]\n\
- add r0, r5, #1\n\
- lsl r0, r0, #0x10\n\
- lsr r5, r0, #0x10\n\
- cmp r5, #0x3b\n\
- bhi ._136 @cond_branch\n\
- lsl r0, r5, #0x2\n\
- add r0, r0, r6\n\
- ldrh r0, [r0]\n\
- cmp r0, #0\n\
- bne ._137 @cond_branch\n\
-._136:\n\
- add sp, sp, #0xc\n\
- pop {r4, r5, r6}\n\
- pop {r0}\n\
- bx r0\n\
-._139:\n\
- .align 2, 0\n\
-._138:\n\
- .word gUnknown_Debug_083EBC68\n\
- .word 0xffff0000\n\
- .word gBagPockets");
+
+const struct ItemSlot gUnknown_Debug_083EBC68[60] =
+{
+ {ITEM_POKE_BALL, 10},
+ {ITEM_ULTRA_BALL, 15},
+ {ITEM_GREAT_BALL, 20},
+ {ITEM_MASTER_BALL, 25},
+ {ITEM_ACRO_BIKE, 1 },
+ {ITEM_OLD_ROD, 1 },
+ {ITEM_GOOD_ROD, 1 },
+ {ITEM_SUPER_ROD, 1 },
+ {ITEM_POKEBLOCK_CASE, 1 },
+ {ITEM_WAILMER_PAIL, 1 },
+ {ITEM_ITEMFINDER, 1 },
+ {ITEM_NONE, 1 },
+};
+
+void debug_sub_80A3714(void)
+{
+ u16 arr[5];
+ u16 i;
+
+ for (i = 0; i < 5; i++)
+ arr[i] = 0;
+ for (i = 0; i < ARRAY_COUNT(gUnknown_Debug_083EBC68); i++)
+ {
+ u16 pocket;
+
+ if (gUnknown_Debug_083EBC68[i].itemId == ITEM_NONE)
+ break;
+ pocket = ItemId_GetPocket(gUnknown_Debug_083EBC68[i].itemId) - 1;
+ gBagPockets[pocket].itemSlots[arr[pocket]] = gUnknown_Debug_083EBC68[i];
+ arr[pocket]++;
+ }
}
+
#endif
static void sub_80A3740(void)
@@ -1612,7 +1179,7 @@ static void sub_80A4380(u16 a, int b, int c, int d)
r5 = i * 2 + 2;
text = gStringVar1;
text = sub_80A425C(a, text, i);
- text = sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x66, 0);
+ text = sub_8072C74(text, ItemId_GetName(gCurrentBagPocketItemSlots[r4].itemId), 0x66, 0);
*text++ = CHAR_MULT_SIGN;
sub_8072C14(text, gCurrentBagPocketItemSlots[r4].quantity, 0x78, 1);
Menu_PrintText(gStringVar1, 14, r5);
@@ -1636,9 +1203,9 @@ static void sub_80A444C(u16 a, int b, int c, int d)
text = gStringVar1;
text = sub_80A425C(a, text, i);
#if ENGLISH
- sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x60, 0);
+ sub_8072C74(text, ItemId_GetName(gCurrentBagPocketItemSlots[r4].itemId), 0x60, 0);
#else
- sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x63, 0);
+ sub_8072C74(text, ItemId_GetName(gCurrentBagPocketItemSlots[r4].itemId), 0x63, 0);
#endif
Menu_PrintText(gStringVar1, 14, r5);
if (gUnknown_02038558 != 0)
@@ -4040,49 +3607,16 @@ static void sub_80A73FC(void)
MenuCursor_Destroy814AD44();
}
-#if DEBUG
-__attribute__((naked))
-static void sub_80A740C(void)
-{
- asm("\
- push {lr}\n\
- add sp, sp, #0xfffffffc\n\
- bl sub_80A75E4\n\
- bl sub_80A7768\n\
- bl sub_80A7420\n\
- ldr r0, ._931 @ gLinkOpen\n\
- ldrb r0, [r0]\n\
- cmp r0, #0x1\n\
- bne ._930 @cond_branch\n\
- ldr r0, ._931 + 4 @ gLink\n\
- ldr r1, ._931 + 8 @ 0xfbd\n\
- add r0, r0, r1\n\
- ldrb r0, [r0]\n\
- mov r1, #0x0\n\
- str r1, [sp]\n\
- mov r1, #0x1\n\
- mov r2, #0x1\n\
- mov r3, #0x2\n\
- bl debug_sub_8008264\n\
-._930:\n\
- add sp, sp, #0x4\n\
- pop {r0}\n\
- bx r0\n\
-._932:\n\
- .align 2, 0\n\
-._931:\n\
- .word gLinkOpen\n\
- .word gLink\n\
- .word 0xfbd");
-}
-#else
static void sub_80A740C(void)
{
sub_80A75E4();
sub_80A7768();
sub_80A7420();
-}
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 1, 1, 2, 0);
#endif
+}
static void sub_80A7420(void)
{
diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c
index b42c50513..a68d5071d 100644
--- a/src/field/mauville_man.c
+++ b/src/field/mauville_man.c
@@ -251,83 +251,34 @@ void SetupMauvilleOldMan(void)
}
#if DEBUG
-__attribute__((naked))
-void debug_sub_810B32C()
+void debug_sub_810B32C(u8 a)
{
- asm(
- " push {r4, lr}\n"
- " add sp, sp, #0xfffffff8\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " cmp r0, #0x4\n"
- " bhi ._37 @cond_branch\n"
- " lsl r0, r0, #0x2\n"
- " ldr r1, ._23 @ \n"
- " add r0, r0, r1\n"
- " ldr r0, [r0]\n"
- " mov pc, r0\n"
- "._24:\n"
- " .align 2, 0\n"
- "._23:\n"
- " .word ._22\n"
- "._22:\n"
- " .word ._25\n"
- " .word ._26\n"
- " .word ._27\n"
- " .word ._28\n"
- " .word ._29\n"
- "._25:\n"
- " bl SetupBard\n"
- " b ._37\n"
- "._26:\n"
- " mov r2, #0x0\n"
- " ldr r3, ._34 @ gSaveBlock1\n"
- "._31:\n"
- " mov r0, sp\n"
- " add r1, r0, r2\n"
- " add r0, r2, r3\n"
- " ldrb r0, [r0]\n"
- " strb r0, [r1]\n"
- " add r0, r2, #1\n"
- " lsl r0, r0, #0x18\n"
- " lsr r2, r0, #0x18\n"
- " cmp r2, #0x7\n"
- " bls ._31 @cond_branch\n"
- " bl SetupHipster\n"
- " mov r2, #0x0\n"
- " ldr r3, ._34 @ gSaveBlock1\n"
- "._32:\n"
- " add r1, r2, r3\n"
- " mov r4, sp\n"
- " add r0, r4, r2\n"
- " ldrb r0, [r0]\n"
- " strb r0, [r1]\n"
- " add r0, r2, #1\n"
- " lsl r0, r0, #0x18\n"
- " lsr r2, r0, #0x18\n"
- " cmp r2, #0x7\n"
- " bls ._32 @cond_branch\n"
- " b ._37\n"
- "._35:\n"
- " .align 2, 0\n"
- "._34:\n"
- " .word gSaveBlock1+0x2d8c\n"
- "._27:\n"
- " bl SetupTrader\n"
- " b ._37\n"
- "._28:\n"
- " bl SetupStoryteller\n"
- " b ._37\n"
- "._29:\n"
- " bl SetupGiddy\n"
- "._37:\n"
- " bl sub_80F83D0\n"
- " add sp, sp, #0x8\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "\n"
- );
+ u8 i;
+ u8 savedArr[8];
+
+ switch (a)
+ {
+ case 0:
+ SetupBard();
+ break;
+ case 1:
+ for (i = 0; i < 8; i++)
+ savedArr[i] = gSaveBlock1.unk2D8C[i];
+ SetupHipster();
+ for (i = 0; i < 8; i++)
+ gSaveBlock1.unk2D8C[i] = savedArr[i];
+ break;
+ case 2:
+ SetupTrader();
+ break;
+ case 3:
+ SetupStoryteller();
+ break;
+ case 4:
+ SetupGiddy();
+ break;
+ }
+ sub_80F83D0();
}
#endif
diff --git a/src/field/overworld.c b/src/field/overworld.c
index 8ca8aeea9..6376aa1af 100644
--- a/src/field/overworld.c
+++ b/src/field/overworld.c
@@ -2233,7 +2233,7 @@ u16 sub_80554E4(u32 a1)
return 23;
}
-u32 sub_80554F8(void)
+s32 sub_80554F8(void)
{
if (sub_8054FC0(0x83) == TRUE)
return 2;
diff --git a/src/field/party_menu.c b/src/field/party_menu.c
index 66e7e2319..9caaa05b9 100644
--- a/src/field/party_menu.c
+++ b/src/field/party_menu.c
@@ -1,4 +1,8 @@
#include "global.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
+#include "constants/species.h"
#include "party_menu.h"
#include "battle.h"
#include "battle_interface.h"
@@ -11,12 +15,11 @@
#include "item.h"
#include "item_use.h"
#include "item_menu.h"
-#include "constants/items.h"
+#include "link.h"
#include "mail_data.h"
#include "main.h"
#include "menu.h"
#include "menu_helpers.h"
-#include "constants/moves.h"
#include "palette.h"
#include "pokemon.h"
#include "pokemon_icon.h"
@@ -25,9 +28,7 @@
#include "pokemon_summary_screen.h"
#include "rom_8077ABC.h"
#include "rom_8094928.h"
-#include "constants/songs.h"
#include "sound.h"
-#include "constants/species.h"
#include "sprite.h"
#include "string_util.h"
#include "strings.h"
@@ -397,7 +398,8 @@ static const u16 PartyMonOAMSettings_RightColumn[] = {
};
// Controls where and how the mons' text appears in the party menu screen (nickname, HP, and level).
-static struct PartyMonTextSettingsStruct const PartyMonTextSettings[4][6] = {
+static struct PartyMonTextSettingsStruct const PartyMonTextSettings[4][6] =
+{
{ // PARTY_MENU_LAYOUT_STANDARD
{ 1, 4, PartyMonOAMSettings_LeftColumn},
{12, 1, PartyMonOAMSettings_RightColumn},
@@ -432,7 +434,8 @@ static struct PartyMonTextSettingsStruct const PartyMonTextSettings[4][6] = {
},
};
-static const struct PartyMenuHandlersStruct PartyMenuHandlers[] = {
+static const struct PartyMenuHandlersStruct PartyMenuHandlers[] =
+{
{HandleDefaultPartyMenu, SetupDefaultPartyMenu, 0}, // PARTY_MENU_TYPE_STANDARD
{HandleBattlePartyMenu, SetUpBattlePartyMenu, 0}, // PARTY_MENU_TYPE_BATTLE
{HandleSelectPartyMenu, SetupContestPartyMenu, 0}, // PARTY_MENU_TYPE_CONTEST
@@ -493,71 +496,6 @@ extern const u8 gStatusPal_Icons[];
#define WINDOW_RIGHT (29)
#endif
-#if DEBUG
-__attribute__((naked))
-void CB2_PartyMenuMain(void)
-{
- asm("\
- push {r4, r5, r6, lr}\n\
- add sp, sp, #0xfffffffc\n\
- bl AnimateSprites\n\
- bl BuildOamBuffer\n\
- ldr r0, ._3 @ gPartyMenuType\n\
- ldrb r1, [r0]\n\
- lsl r0, r1, #0x1\n\
- add r0, r0, r1\n\
- lsl r0, r0, #0x4\n\
- ldr r1, ._3 + 4 @ PartyMonTextSettings\n\
- add r5, r0, r1\n\
- mov r6, #0x0\n\
-._1:\n\
- ldrb r0, [r5]\n\
- lsl r0, r0, #0x3\n\
- ldrb r1, [r5, #0x1]\n\
- lsl r1, r1, #0x3\n\
- ldr r2, [r5, #0x4]\n\
- lsl r3, r6, #0x5\n\
- mov r4, #0x80\n\
- lsl r4, r4, #0x2\n\
- orr r3, r3, r4\n\
- str r3, [sp]\n\
- mov r3, #0x0\n\
- bl DrawPartyMenuMonText\n\
- add r5, r5, #0x8\n\
- add r6, r6, #0x1\n\
- cmp r6, #0x5\n\
- ble ._1 @cond_branch\n\
- bl RunTasks\n\
- bl UpdatePaletteFade\n\
- ldr r0, ._3 + 8 @ gLinkOpen\n\
- ldrb r0, [r0]\n\
- cmp r0, #0x1\n\
- bne ._2 @cond_branch\n\
- ldr r0, ._3 + 12 @ gLink\n\
- ldr r1, ._3 + 16 @ 0xfbd\n\
- add r0, r0, r1\n\
- ldrb r0, [r0]\n\
- mov r1, #0x2\n\
- str r1, [sp]\n\
- mov r1, #0x1\n\
- mov r2, #0x1\n\
- mov r3, #0x2\n\
- bl debug_sub_8008264\n\
-._2:\n\
- add sp, sp, #0x4\n\
- pop {r4, r5, r6}\n\
- pop {r0}\n\
- bx r0\n\
-._4:\n\
- .align 2, 0\n\
-._3:\n\
- .word gPartyMenuType\n\
- .word PartyMonTextSettings\n\
- .word gLinkOpen\n\
- .word gLink\n\
- .word 0xfbd");
-}
-#else
void CB2_PartyMenuMain(void)
{
const struct PartyMonTextSettingsStruct *textSettings;
@@ -581,8 +519,12 @@ void CB2_PartyMenuMain(void)
RunTasks();
UpdatePaletteFade();
-}
+
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 1, 1, 2, 2);
#endif
+}
void VBlankCB_PartyMenu(void)
{
@@ -621,14 +563,16 @@ bool8 SetupDefaultPartyMenu(void)
switch (ewram1B000_alt.setupState)
{
case 0:
- if (ewram1B000_alt.monIndex < gPlayerPartyCount) {
+ if (ewram1B000_alt.monIndex < gPlayerPartyCount)
+ {
TryCreatePartyMenuMonIcon(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex, &gPlayerParty[ewram1B000_alt.monIndex]);
ewram1B000_alt.monIndex++;
- } else {
+ }
+ else
+ {
ewram1B000_alt.monIndex = 0;
ewram1B000_alt.setupState++;
}
-
break;
case 1:
LoadHeldItemIconGraphics();
@@ -648,7 +592,6 @@ bool8 SetupDefaultPartyMenu(void)
ewram1B000_alt.monIndex = 0;
ewram1B000_alt.setupState++;
}
-
break;
case 4:
PartyMenuPrintMonsLevelOrStatus();
@@ -687,425 +630,6 @@ bool8 SetupDefaultPartyMenu(void)
return FALSE;
}
-#if DEBUG
-__attribute__((naked))
-bool8 InitPartyMenu(void)
-{
- asm("\
- push {r4, r5, r6, r7, lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- add sp, sp, #0xfffffff4\n\
- ldr r0, ._55 @ gMain\n\
- ldr r1, ._55 + 4 @ 0x43c\n\
- add r0, r0, r1\n\
- ldrb r0, [r0]\n\
- cmp r0, #0x11\n\
- bls ._53 @cond_branch\n\
- b ._125\n\
-._53:\n\
- lsl r0, r0, #0x2\n\
- ldr r1, ._55 + 8 @ \n\
- add r0, r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
-._56:\n\
- .align 2, 0\n\
-._55:\n\
- .word gMain\n\
- .word 0x43c\n\
- .word ._57\n\
-._57:\n\
- .word ._58\n\
- .word ._59\n\
- .word ._60\n\
- .word ._61\n\
- .word ._62\n\
- .word ._63\n\
- .word ._64\n\
- .word ._65\n\
- .word ._66\n\
- .word ._67\n\
- .word ._68\n\
- .word ._69\n\
- .word ._70\n\
- .word ._71\n\
- .word ._72\n\
- .word ._73\n\
- .word ._74\n\
- .word ._75\n\
-._58:\n\
- mov r0, #0x0\n\
- bl SetVBlankCallback\n\
- mov r3, #0xc0\n\
- lsl r3, r3, #0x13\n\
- mov r4, #0xc0\n\
- lsl r4, r4, #0x9\n\
- add r2, sp, #0x8\n\
- mov r8, r2\n\
- add r2, sp, #0x4\n\
- mov r6, #0x0\n\
- ldr r1, ._78 @ 0x40000d4\n\
- mov r5, #0x80\n\
- lsl r5, r5, #0x5\n\
- ldr r7, ._78 + 4 @ 0x81000800\n\
- mov r0, #0x81\n\
- lsl r0, r0, #0x18\n\
- mov ip, r0\n\
-._76:\n\
- strh r6, [r2]\n\
- add r0, sp, #0x4\n\
- str r0, [r1]\n\
- str r3, [r1, #0x4]\n\
- str r7, [r1, #0x8]\n\
- ldr r0, [r1, #0x8]\n\
- add r3, r3, r5\n\
- sub r4, r4, r5\n\
- cmp r4, r5\n\
- bhi ._76 @cond_branch\n\
- strh r6, [r2]\n\
- add r2, sp, #0x4\n\
- str r2, [r1]\n\
- str r3, [r1, #0x4]\n\
- lsr r0, r4, #0x1\n\
- mov r3, ip\n\
- orr r0, r0, r3\n\
- str r0, [r1, #0x8]\n\
- ldr r0, [r1, #0x8]\n\
- mov r0, #0xe0\n\
- lsl r0, r0, #0x13\n\
- mov r3, #0x80\n\
- lsl r3, r3, #0x3\n\
- mov r4, #0x0\n\
- str r4, [sp, #0x8]\n\
- ldr r2, ._78 @ 0x40000d4\n\
- mov r1, r8\n\
- str r1, [r2]\n\
- str r0, [r2, #0x4]\n\
- lsr r0, r3, #0x2\n\
- mov r1, #0x85\n\
- lsl r1, r1, #0x18\n\
- orr r0, r0, r1\n\
- str r0, [r2, #0x8]\n\
- ldr r0, [r2, #0x8]\n\
- mov r1, #0xa0\n\
- lsl r1, r1, #0x13\n\
- add r0, sp, #0x4\n\
- strh r4, [r0]\n\
- str r0, [r2]\n\
- str r1, [r2, #0x4]\n\
- lsr r3, r3, #0x1\n\
- mov r0, #0x81\n\
- lsl r0, r0, #0x18\n\
- orr r3, r3, r0\n\
- str r3, [r2, #0x8]\n\
- ldr r0, [r2, #0x8]\n\
- ldr r2, ._78 + 8 @ gPaletteFade\n\
- ldrb r0, [r2, #0x8]\n\
- mov r1, #0x80\n\
- orr r0, r0, r1\n\
- strb r0, [r2, #0x8]\n\
- ldr r1, ._78 + 12 @ gMain\n\
- ldr r2, ._78 + 16 @ 0x43c\n\
- add r1, r1, r2\n\
- b ._122\n\
-._79:\n\
- .align 2, 0\n\
-._78:\n\
- .word 0x40000d4\n\
- .word 0x81000800\n\
- .word gPaletteFade\n\
- .word gMain\n\
- .word 0x43c\n\
-._59:\n\
- bl ScanlineEffect_Stop\n\
- b ._115\n\
-._60:\n\
- bl sub_806B4A8\n\
- ldr r1, ._82 @ \n\
- mov r2, #0x99\n\
- lsl r2, r2, #0x2\n\
- add r0, r1, r2\n\
- mov r2, #0x0\n\
- strh r2, [r0]\n\
- ldr r3, ._82 + 4 @ \n\
- add r0, r1, r3\n\
- strh r2, [r0]\n\
- mov r0, #0x9a\n\
- lsl r0, r0, #0x2\n\
- add r1, r1, r0\n\
- strh r2, [r1]\n\
- ldr r1, ._82 + 8 @ \n\
- ldr r2, ._82 + 12 @ \n\
- add r1, r1, r2\n\
- b ._122\n\
-._83:\n\
- .align 2, 0\n\
-._82:\n\
- .word +0x201b000\n\
- .word 0x266\n\
- .word gMain\n\
- .word 0x43c\n\
-._61:\n\
- bl ResetSpriteData\n\
- b ._115\n\
-._62:\n\
- ldr r0, ._88 @ \n\
- mov r1, #0x96\n\
- lsl r1, r1, #0x2\n\
- add r0, r0, r1\n\
- ldrb r0, [r0]\n\
- cmp r0, #0x1\n\
- beq ._86 @cond_branch\n\
- cmp r0, #0x5\n\
- beq ._86 @cond_branch\n\
- bl ResetTasks\n\
-._86:\n\
- ldr r1, ._88 + 4 @ \n\
- ldr r2, ._88 + 8 @ \n\
- add r1, r1, r2\n\
- b ._122\n\
-._89:\n\
- .align 2, 0\n\
-._88:\n\
- .word +0x201b000\n\
- .word gMain\n\
- .word 0x43c\n\
-._63:\n\
- bl FreeAllSpritePalettes\n\
- b ._115\n\
-._64:\n\
- ldr r4, ._92 @ \n\
- mov r1, #0x97\n\
- lsl r1, r1, #0x2\n\
- add r0, r4, r1\n\
- ldr r0, [r0]\n\
- mov r1, #0x0\n\
- bl CreateTask\n\
- mov r2, #0x98\n\
- lsl r2, r2, #0x2\n\
- add r1, r4, r2\n\
- strb r0, [r1]\n\
- b ._115\n\
-._93:\n\
- .align 2, 0\n\
-._92:\n\
- .word +0x201b000\n\
-._65:\n\
- ldr r0, ._95 @ gWindowTemplate_81E6C90\n\
- bl Text_LoadWindowTemplate\n\
- ldr r1, ._95 + 4 @ gMain\n\
- ldr r0, ._95 + 8 @ 0x43c\n\
- add r1, r1, r0\n\
- b ._122\n\
-._96:\n\
- .align 2, 0\n\
-._95:\n\
- .word gWindowTemplate_81E6C90\n\
- .word gMain\n\
- .word 0x43c\n\
-._66:\n\
- ldr r4, ._98 @ gUnknown_03004210\n\
- ldr r1, ._98 + 4 @ gWindowTemplate_81E6C90\n\
- add r0, r4, #0\n\
- bl Text_InitWindowWithTemplate\n\
- add r0, r4, #0\n\
- mov r1, #0x1\n\
- bl MultistepInitWindowTileData\n\
- ldr r1, ._98 + 8 @ gMain\n\
- ldr r2, ._98 + 12 @ 0x43c\n\
- add r1, r1, r2\n\
- b ._122\n\
-._99:\n\
- .align 2, 0\n\
-._98:\n\
- .word gUnknown_03004210\n\
- .word gWindowTemplate_81E6C90\n\
- .word gMain\n\
- .word 0x43c\n\
-._67:\n\
- bl MultistepLoadFont\n\
- cmp r0, #0\n\
- bne ._100 @cond_branch\n\
- b ._125\n\
-._100:\n\
- ldr r0, ._103 @ \n\
- mov r3, #0x99\n\
- lsl r3, r3, #0x2\n\
- add r0, r0, r3\n\
- mov r1, #0x1\n\
- strh r1, [r0]\n\
- ldr r1, ._103 + 4 @ \n\
- ldr r0, ._103 + 8 @ \n\
- add r1, r1, r0\n\
- b ._122\n\
-._104:\n\
- .align 2, 0\n\
-._103:\n\
- .word +0x201b000\n\
- .word gMain\n\
- .word 0x43c\n\
-._68:\n\
- ldr r0, ._107 @ \n\
- mov r1, #0x99\n\
- lsl r1, r1, #0x2\n\
- add r4, r0, r1\n\
- ldrb r0, [r4]\n\
- bl LoadPartyMenuGraphics\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- cmp r0, #0x1\n\
- bne ._105 @cond_branch\n\
- mov r0, #0x0\n\
- strh r0, [r4]\n\
- ldr r1, ._107 + 4 @ \n\
- ldr r2, ._107 + 8 @ \n\
- add r1, r1, r2\n\
- b ._122\n\
-._108:\n\
- .align 2, 0\n\
-._107:\n\
- .word +0x201b000\n\
- .word gMain\n\
- .word 0x43c\n\
-._105:\n\
- ldrh r0, [r4]\n\
- add r0, r0, #0x1\n\
- strh r0, [r4]\n\
- b ._125\n\
-._69:\n\
- bl sub_809D51C\n\
- b ._115\n\
-._70:\n\
- ldr r2, ._113 @ PartyMenuHandlers\n\
- ldr r0, ._113 + 4 @ \n\
- mov r1, #0x96\n\
- lsl r1, r1, #0x2\n\
- add r0, r0, r1\n\
- ldrb r1, [r0]\n\
- lsl r0, r1, #0x1\n\
- add r0, r0, r1\n\
- lsl r0, r0, #0x2\n\
- add r2, r2, #0x4\n\
- add r0, r0, r2\n\
- ldr r0, [r0]\n\
- bl _call_via_r0\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- cmp r0, #0x1\n\
- bne ._125 @cond_branch\n\
- ldr r1, ._113 + 8 @ \n\
- ldr r2, ._113 + 12 @ \n\
- add r1, r1, r2\n\
- b ._122\n\
-._114:\n\
- .align 2, 0\n\
-._113:\n\
- .word PartyMenuHandlers\n\
- .word +0x201b000\n\
- .word gMain\n\
- .word 0x43c\n\
-._71:\n\
- ldr r0, ._116 @ gWindowTemplate_81E6CC8\n\
- bl MultistepInitMenuWindowBegin\n\
- b ._115\n\
-._117:\n\
- .align 2, 0\n\
-._116:\n\
- .word gWindowTemplate_81E6CC8\n\
-._72:\n\
- bl MultistepInitMenuWindowContinue\n\
- cmp r0, #0\n\
- beq ._125 @cond_branch\n\
- ldr r1, ._120 @ gMain\n\
- ldr r0, ._120 + 4 @ 0x43c\n\
- add r1, r1, r0\n\
- b ._122\n\
-._121:\n\
- .align 2, 0\n\
-._120:\n\
- .word gMain\n\
- .word 0x43c\n\
-._73:\n\
- ldr r0, ._123 @ \n\
- ldr r1, ._123 + 4 @ \n\
- add r0, r0, r1\n\
- ldrb r0, [r0]\n\
- mov r1, #0x0\n\
- bl PrintPartyMenuPromptText\n\
- ldr r1, ._123 + 8 @ \n\
- ldr r2, ._123 + 12 @ \n\
- add r1, r1, r2\n\
- b ._122\n\
-._124:\n\
- .align 2, 0\n\
-._123:\n\
- .word +0x201b000\n\
- .word 0x259\n\
- .word gMain\n\
- .word 0x43c\n\
-._74:\n\
- mov r0, #0x1\n\
- neg r0, r0\n\
- mov r1, #0x0\n\
- str r1, [sp]\n\
- mov r2, #0x10\n\
- mov r3, #0x0\n\
- bl BeginNormalPaletteFade\n\
- ldr r2, ._126 @ gPaletteFade\n\
- ldrb r1, [r2, #0x8]\n\
- mov r0, #0x7f\n\
- and r0, r0, r1\n\
- strb r0, [r2, #0x8]\n\
-._115:\n\
- ldr r1, ._126 + 4 @ gMain\n\
- ldr r3, ._126 + 8 @ 0x43c\n\
- add r1, r1, r3\n\
-._122:\n\
- ldrb r0, [r1]\n\
- add r0, r0, #0x1\n\
- strb r0, [r1]\n\
- b ._125\n\
-._127:\n\
- .align 2, 0\n\
-._126:\n\
- .word gPaletteFade\n\
- .word gMain\n\
- .word 0x43c\n\
-._75:\n\
- ldr r0, ._130 @ VBlankCB_PartyMenu\n\
- bl SetVBlankCallback\n\
- ldr r0, ._130 + 4 @ gLinkOpen\n\
- ldrb r0, [r0]\n\
- cmp r0, #0x1\n\
- bne ._128 @cond_branch\n\
- ldr r0, ._130 + 8 @ 0x600e5e0\n\
- mov r1, #0x80\n\
- lsl r1, r1, #0x8\n\
- ldr r2, ._130 + 12 @ 0x6007800\n\
- mov r3, #0x2\n\
- bl debug_sub_8008218\n\
-._128:\n\
- mov r0, #0x1\n\
- b ._129\n\
-._131:\n\
- .align 2, 0\n\
-._130:\n\
- .word VBlankCB_PartyMenu+1\n\
- .word gLinkOpen\n\
- .word 0x600e5e0\n\
- .word 0x6007800\n\
-._125:\n\
- mov r0, #0x0\n\
-._129:\n\
- add sp, sp, #0xc\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4, r5, r6, r7}\n\
- pop {r1}\n\
- bx r1");
-}
-#else
bool8 InitPartyMenu(void)
{
switch (gMain.state)
@@ -1115,7 +639,6 @@ bool8 InitPartyMenu(void)
DmaFill16Large(3, 0, (void *)(VRAM + 0x0), VRAM_SIZE, 0x1000);
DmaClear32(3, OAM, OAM_SIZE);
DmaClear16(3, PLTT, PLTT_SIZE);
-
gPaletteFade.bufferTransferDisabled = 1;
gMain.state++;
break;
@@ -1136,10 +659,7 @@ bool8 InitPartyMenu(void)
break;
case 4:
if (ewram1B000.menuType != PARTY_MENU_TYPE_BATTLE && ewram1B000.menuType != PARTY_MENU_TYPE_LINK_MULTI_BATTLE)
- {
ResetTasks();
- }
-
gMain.state++;
break;
case 5:
@@ -1183,9 +703,7 @@ bool8 InitPartyMenu(void)
break;
case 12:
if (PartyMenuHandlers[ewram1B000.menuType].menuSetup() == TRUE)
- {
gMain.state++;
- }
break;
case 13:
MultistepInitMenuWindowBegin(&gWindowTemplate_81E6CC8);
@@ -1193,9 +711,7 @@ bool8 InitPartyMenu(void)
break;
case 14:
if (MultistepInitMenuWindowContinue())
- {
gMain.state++;
- }
break;
case 15:
PrintPartyMenuPromptText(ewram1B000.promptTextId, 0);
@@ -1208,27 +724,26 @@ bool8 InitPartyMenu(void)
break;
case 17:
SetVBlankCallback(VBlankCB_PartyMenu);
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0xE5E0), 0x8000, (void *)(VRAM + 0x7800), 2);
+#endif
return TRUE;
}
return FALSE;
}
-#endif
void CB2_InitPartyMenu(void)
{
while (InitPartyMenu() != TRUE)
{
if (sub_80F9344() == TRUE)
- {
return;
- }
}
if (ewram1B000.menuType != PARTY_MENU_TYPE_LINK_MULTI_BATTLE)
- {
ChangePartyMenuSelection(ewram1B000.menuHandlerTaskId, 0);
- }
SetMainCallback2(CB2_PartyMenuMain);
}
@@ -1269,9 +784,7 @@ void ReDrawPartyMonBackgrounds(void)
DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(BG_VRAM + 0x3000), 0x800);
if (ewram1B000.unk261 == 2)
- {
ewram1B000.unk261 = 0;
- }
}
}
@@ -1298,119 +811,172 @@ bool8 DrawPartyMonBackground(u8 monIndex)
sub_806BF24(&arr[0], 0, 3, 0);
break;
case 2:
- if (!IsDoubleBattle()) {
- if (gPlayerPartyCount > 1) {
+ if (!IsDoubleBattle())
+ {
+ if (gPlayerPartyCount > 1)
+ {
sub_806BA94(arr[2], arr[3], 0, 3);
sub_806BF24(&arr[2], 1, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[2], arr[3], 1, 3);
}
- } else if (IsLinkDoubleBattle() == TRUE) {
+ }
+ else if (IsLinkDoubleBattle() == TRUE)
+ {
sub_806B9A4(arr[2], arr[3], 4);
sub_806BF24(&arr[2], 1, 4, 0);
- } else {
+ }
+ else
+ {
sub_806B9A4(arr[2], arr[3], 3);
sub_806BF24(&arr[2], 1, 3, 0);
}
-
break;
case 3:
- if (!IsDoubleBattle()) {
- if (gPlayerPartyCount > 2) {
+ if (!IsDoubleBattle())
+ {
+ if (gPlayerPartyCount > 2)
+ {
sub_806BA94(arr[4], arr[5], 0, 3);
sub_806BF24(&arr[4], 2, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[4], arr[5], 1, 3);
}
- } else if (IsLinkDoubleBattle() == TRUE) {
- if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES)) {
+ }
+ else if (IsLinkDoubleBattle() == TRUE)
+ {
+ if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES))
+ {
sub_806BA94(arr[4], arr[5], 0, 3);
sub_806BF24(&arr[4], 2, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[4], arr[5], 1, 3);
}
- } else if (gPlayerPartyCount > 2) {
+ }
+ else if (gPlayerPartyCount > 2)
+ {
sub_806BA94(arr[4], arr[5], 0, 3);
sub_806BF24(&arr[4], 2, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[4], arr[5], 1, 3);
}
-
break;
case 4:
- if (!IsDoubleBattle()) {
- if (gPlayerPartyCount > 3) {
+ if (!IsDoubleBattle())
+ {
+ if (gPlayerPartyCount > 3)
+ {
sub_806BA94(arr[6], arr[7], 0, 3);
sub_806BF24(&arr[6], 3, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[6], arr[7], 1, 3);
}
- } else if (IsLinkDoubleBattle() == TRUE) {
- if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES)) {
+ }
+ else if (IsLinkDoubleBattle() == TRUE)
+ {
+ if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES))
+ {
sub_806BA94(arr[6], arr[7], 0, 3);
sub_806BF24(&arr[6], 3, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[6], arr[7], 1, 3);
}
- } else if (gPlayerPartyCount > 3) {
+ }
+ else if (gPlayerPartyCount > 3)
+ {
sub_806BA94(arr[6], arr[7], 0, 3);
sub_806BF24(&arr[6], 3, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[6], arr[7], 1, 3);
}
-
break;
case 5:
- if (!IsDoubleBattle()) {
- if (gPlayerPartyCount > 4) {
+ if (!IsDoubleBattle())
+ {
+ if (gPlayerPartyCount > 4)
+ {
sub_806BA94(arr[8], arr[9], 0, 3);
sub_806BF24(&arr[8], 4, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[8], arr[9], 1, 3);
}
- } else if (IsLinkDoubleBattle() == TRUE) {
- if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES)) {
+ }
+ else if (IsLinkDoubleBattle() == TRUE)
+ {
+ if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES))
+ {
sub_806BA94(arr[8], arr[9], 0, 4);
sub_806BF24(&arr[8], 4, 4, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[8], arr[9], 1, 4);
}
- } else if (gPlayerPartyCount > 4) {
+ }
+ else if (gPlayerPartyCount > 4)
+ {
sub_806BA94(arr[8], arr[9], 0, 3);
sub_806BF24(&arr[8], 4, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[8], arr[9], 1, 3);
}
-
break;
case 6:
- if (!IsDoubleBattle()) {
- if (gPlayerPartyCount > 5) {
+ if (!IsDoubleBattle())
+ {
+ if (gPlayerPartyCount > 5)
+ {
sub_806BA94(arr[10], arr[11], 0, 3);
sub_806BF24(&arr[10], 5, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[10], arr[11], 1, 3);
}
- } else if (IsLinkDoubleBattle() == TRUE) {
- if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES)) {
+ }
+ else if (IsLinkDoubleBattle() == TRUE)
+ {
+ if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES))
+ {
sub_806BA94(arr[10], arr[11], 0, 4);
sub_806BF24(&arr[10], 5, 4, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[10], arr[11], 1, 4);
}
- } else if (gPlayerPartyCount > 5) {
+ }
+ else if (gPlayerPartyCount > 5)
+ {
sub_806BA94(arr[10], arr[11], 0, 3);
sub_806BF24(&arr[10], 5, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[10], arr[11], 1, 3);
}
-
break;
case 7:
- if (ewram1B000.menuType == PARTY_MENU_TYPE_BATTLE_TOWER) {
+ if (ewram1B000.menuType == PARTY_MENU_TYPE_BATTLE_TOWER)
sub_806BB9C(1);
- }
-
sub_806BBEC(1);
break;
case 8:
@@ -1533,9 +1099,7 @@ void sub_806B9A4(s16 a, u16 b, u8 c)
for (; j <= 10 && a + j <= 0x1F; j++)
{
if (a + j >= 0)
- {
gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = (c << 12) | gUnknown_083769D8[i * 11 + j];
- }
}
}
}
@@ -1555,9 +1119,7 @@ void sub_806BA34(s16 a, u16 b)
for (; j <= 10 && a + j <= 0x1F; j++)
{
if (a + j >= 0)
- {
gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = 0;
- }
}
}
}
@@ -1569,15 +1131,13 @@ void sub_806BA94(s16 a, u16 b, u8 c, u8 d)
const u8 *arr;
u16 var1;
- arr = gUnknown_08376A5E;
if (c == 0)
- {
arr = gUnknown_08376A25;
- }
+ else
+ arr = gUnknown_08376A5E;
var1 = b * 32;
-
for (i = 0; i < 3; i++)
{
u8 j = 0;
@@ -1622,11 +1182,13 @@ void sub_806BB3C(s16 a, u16 b)
void sub_806BB9C(u8 a)
{
u8 i;
- u16 arr[12] = {
+ 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);
@@ -1637,11 +1199,13 @@ void sub_806BB9C(u8 a)
void sub_806BBEC(u8 a)
{
u8 i;
- u16 arr[12] = {
+ 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);
@@ -1671,9 +1235,7 @@ void unref_sub_806BCB8(u8 a)
u8 i;
for (i = 0; i < gPlayerPartyCount; i++)
- {
sub_806BC3C(i, a);
- }
}
// This is ultimately unreferenced, since it's caller is unreferenced.
@@ -1685,8 +1247,7 @@ void sub_806BCE8()
{
if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
{
- u8 gender = GetMonGender(&gPlayerParty[i]);
- switch (gender)
+ switch (GetMonGender(&gPlayerParty[i]))
{
case MON_MALE:
sub_806BC3C(i, 0x54);
@@ -1893,8 +1454,7 @@ u16 HandleBattleTowerPartyMenuInput(u8 taskId)
if (menuDirectionPressed == 0)
{
- u8 var1 = sub_80F92BC();
- switch (var1)
+ switch (sub_80F92BC())
{
case 1:
menuDirectionPressed = 0xFF;
@@ -1923,9 +1483,7 @@ u16 HandleBattleTowerPartyMenuInput(u8 taskId)
if (gMain.newKeys & A_BUTTON)
{
if (gSprites[sub_806CA00(taskId)].data[0] == 7)
- {
return B_BUTTON;
- }
}
}
}
@@ -1989,31 +1547,19 @@ void ChangePartyMenuSelection(u8 taskId, s8 directionPressed)
u8 isDoubleBattle = IsDoubleBattle();
if (menuIndex < PARTY_SIZE)
- {
sub_806BF24(&gUnknown_083769A8[isDoubleBattle * 12 + menuIndex * 2], menuIndex, 3, 0);
- }
else
- {
sub_806BBEC(1);
- }
if (!isDoubleBattle)
- {
ChangeDefaultPartyMenuSelection(spriteId, menuIndex, directionPressed);
- }
else
- {
ChangeDoubleBattlePartyMenuSelection(spriteId, menuIndex, directionPressed);
- }
if (gSprites[spriteId].data[0] < PARTY_SIZE)
- {
sub_806BF24(&gUnknown_083769A8[isDoubleBattle * 12 + gSprites[spriteId].data[0] * 2], gSprites[spriteId].data[0], 3, 1);
- }
else
- {
sub_806BBEC(2);
- }
ewram1B000.unk261 = 2;
@@ -2024,9 +1570,7 @@ void ChangePartyMenuSelection(u8 taskId, s8 directionPressed)
UpdateMonIconFrame_806DA44(taskId, gSprites[spriteId].data[0], 1);
if (menuIndex != gSprites[spriteId].data[0])
- {
- PlaySE(5);
- }
+ PlaySE(SE_SELECT);
}
void ChangeDefaultPartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPressed)
@@ -2040,27 +1584,35 @@ void ChangeDefaultPartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPres
gSprites[spriteId].data[1] = 0;
break;
case 1: // moving up
- if (menuIndex == 0) {
+ if (menuIndex == 0)
+ {
gSprites[spriteId].data[0] = 7;
- } else if (menuIndex == 7) {
+ }
+ else if (menuIndex == 7)
+ {
gSprites[spriteId].data[0] = gPlayerPartyCount - 1;
- } else {
+ }
+ else
+ {
s8 diff = directionPressed;
gSprites[spriteId].data[0] += diff;
}
-
gSprites[spriteId].data[1] = 0;
break;
case 3: // moving down
- if (menuIndex == gPlayerPartyCount - 1) {
+ if (menuIndex == gPlayerPartyCount - 1)
+ {
gSprites[spriteId].data[0] = 7;
- } else if (menuIndex == 7) {
+ }
+ else if (menuIndex == 7)
+ {
gSprites[spriteId].data[0] = 0;
- } else {
+ }
+ else
+ {
s8 diff = directionPressed;
gSprites[spriteId].data[0] += diff;
}
-
gSprites[spriteId].data[1] = 0;
break;
case 4: // moving right
@@ -2068,14 +1620,14 @@ void ChangeDefaultPartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPres
{
if (gSprites[spriteId].data[1] == 0)
gSprites[spriteId].data[1] = 1;
-
gSprites[spriteId].data[0] = gSprites[spriteId].data[1];
}
break;
case 0: // moving left
// Only move the selection to the left side if one of the mons in the right-hand column are currently selected
nextIndex = menuIndex - 1;
- if (nextIndex <= 4) {
+ if (nextIndex <= 4)
+ {
gSprites[spriteId].data[0] = 0;
gSprites[spriteId].data[1] = menuIndex;
}
@@ -2094,32 +1646,42 @@ void ChangeDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directio
gSprites[spriteId].data[1] = 0;
break;
case 3: // moving down
- if (menuIndex == 7) {
+ if (menuIndex == 7)
+ {
gSprites[spriteId].data[0] = 0;
- } else if (menuIndex == gPlayerPartyCount - 1) {
+ }
+ else if (menuIndex == gPlayerPartyCount - 1)
+ {
gSprites[spriteId].data[0] = 7;
- } else {
+ }
+ else
+ {
s8 diff = directionPressed;
gSprites[spriteId].data[0] += diff;
}
-
gSprites[spriteId].data[1] = 0;
break;
case 1: // moving up
- if (menuIndex == 0) {
+ if (menuIndex == 0)
+ {
gSprites[spriteId].data[0] = 7;
- } else if (menuIndex == 7) {
+ }
+ else if (menuIndex == 7)
+ {
gSprites[spriteId].data[0] = gPlayerPartyCount - 1;
- } else {
+ }
+ else
+ {
s8 diff = directionPressed;
gSprites[spriteId].data[0] += diff;
}
-
gSprites[spriteId].data[1] = 0;
break;
case 4: // moving right
- if (menuIndex == 0) {
- if (gPlayerPartyCount > 2) {
+ if (menuIndex == 0)
+ {
+ if (gPlayerPartyCount > 2)
+ {
u16 var1 = gSprites[spriteId].data[1] - 2;
if (var1 > 1)
gSprites[spriteId].data[0] = 2;
@@ -2127,8 +1689,10 @@ void ChangeDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directio
gSprites[spriteId].data[0] = gSprites[spriteId].data[1];
}
}
- else if (menuIndex == 1) {
- if (gPlayerPartyCount > 4) {
+ else if (menuIndex == 1)
+ {
+ if (gPlayerPartyCount > 4)
+ {
u16 var1 = gSprites[spriteId].data[1] - 4;
if (var1 <= 1)
gSprites[spriteId].data[0] = gSprites[spriteId].data[1];
@@ -2139,12 +1703,16 @@ void ChangeDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directio
break;
case 0: // moving left
var1 = menuIndex - 2;
- if (var1 <= 1) {
+ if (var1 <= 1)
+ {
gSprites[spriteId].data[0] = 0;
gSprites[spriteId].data[1] = menuIndex;
- } else {
+ }
+ else
+ {
u8 var2 = menuIndex - 4;
- if (var2 <= 1) {
+ if (var2 <= 1)
+ {
gSprites[spriteId].data[0] = 1;
gSprites[spriteId].data[1] = menuIndex;
}
@@ -2497,54 +2065,41 @@ void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed)
UpdateMonIconFrame_806DA44(taskId, menuIndex, 0);
if (menuIndex < PARTY_SIZE)
- {
sub_806BF24(&gUnknown_083769A8[menuIndex * 2], menuIndex, 3, 0);
- }
else if (menuIndex == PARTY_SIZE)
- {
sub_806BB9C(1);
- }
else
- {
sub_806BBEC(1);
- }
menuMovement = directionPressed + 2;
-
switch (menuMovement)
{
case 2: // no movement
gSprites[spriteId].data[1] = 0;
break;
case 1: // moving up
- if (menuIndex == 0) {
+ if (menuIndex == 0)
gSprites[spriteId].data[0] = 7;
- } else if (menuIndex == PARTY_SIZE) {
+ else if (menuIndex == PARTY_SIZE)
gSprites[spriteId].data[0] = gPlayerPartyCount - 1;
- } else {
+ else
gSprites[spriteId].data[0] += directionPressed;
- }
-
gSprites[spriteId].data[1] = 0;
break;
case 3: // moving down
- if (menuIndex == gPlayerPartyCount - 1) {
+ if (menuIndex == gPlayerPartyCount - 1)
gSprites[spriteId].data[0] = 6;
- } else if (menuIndex == 7) {
+ else if (menuIndex == 7)
gSprites[spriteId].data[0] = 0;
- } else {
+ else
gSprites[spriteId].data[0] += directionPressed;
- }
-
gSprites[spriteId].data[1] = 0;
break;
case 4: // moving right
if (gPlayerPartyCount > 1 && menuIndex == 0)
{
- if (gSprites[spriteId].data[1] == 0) {
+ if (gSprites[spriteId].data[1] == 0)
gSprites[spriteId].data[1] = 1;
- }
-
gSprites[spriteId].data[0] = gSprites[spriteId].data[1];
}
break;
@@ -2564,17 +2119,11 @@ void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed)
newMenuIndex = gSprites[spriteId].data[0];
if (gSprites[spriteId].data[0] < PARTY_SIZE)
- {
sub_806BF24(&gUnknown_083769A8[gSprites[spriteId].data[0] * 2], newMenuIndex, 3, 1);
- }
else if (gSprites[spriteId].data[0] == PARTY_SIZE)
- {
sub_806BB9C(2);
- }
else
- {
sub_806BBEC(2);
- }
ewram1B000.unk261 = 2;
@@ -2582,9 +2131,7 @@ void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed)
UpdateMonIconFrame_806DA44(taskId, newMenuIndex2, 1);
if (menuIndex != gSprites[spriteId].data[0])
- {
- PlaySE(5);
- }
+ PlaySE(SE_SELECT);
}
// Selects the "OK" button in the Battle Tower party menu.
@@ -2598,13 +2145,9 @@ void SelectBattleTowerOKButton(u8 taskId)
UpdateMonIconFrame_806DA44(taskId, menuIndex, 0);
if (menuIndex < PARTY_SIZE)
- {
sub_806BF24(&gUnknown_083769A8[menuIndex * 2], menuIndex, 3, 0);
- }
else
- {
sub_806BBEC(1);
- }
gSprites[spriteId].data[1] = 0;
gSprites[spriteId].data[0] = 6;
@@ -2614,7 +2157,7 @@ void SelectBattleTowerOKButton(u8 taskId)
sub_806BB9C(2);
ewram1B000.unk261 = 2;
- PlaySE(5);
+ PlaySE(SE_SELECT);
}
}
@@ -2625,24 +2168,28 @@ void sub_806C92C(u8 spriteId)
if (!IsDoubleBattle())
{
- if (menuIndex1 < 1) {
- if (menuIndex2 < 1) {
+ if (menuIndex1 < 1)
+ {
+ if (menuIndex2 < 1)
menuIndex2 = 1;
- }
- } else {
- if (menuIndex2 >= 1) {
+ }
+ else
+ {
+ if (menuIndex2 >= 1)
menuIndex2 = 0;
- }
}
- } else {
- if (menuIndex1 < 2) {
- if (menuIndex2 < 2) {
+ }
+ else
+ {
+ if (menuIndex1 < 2)
+ {
+ if (menuIndex2 < 2)
menuIndex2 = 2;
- }
- } else {
- if (menuIndex2 >= 2) {
+ }
+ else
+ {
+ if (menuIndex2 >= 2)
menuIndex2 = 0;
- }
}
}
@@ -2709,13 +2256,9 @@ void ChangePartyMenuSwitchPokemonSelection(u8 taskId, s16 menuDirectionPressed)
ChangePartyMenuSelection(taskId, menuDirectionPressed);
if (sprite1->data[0] != sprite2->data[0])
- {
sub_806BF24(&gUnknown_083769A8[sprite1->data[0] * 2], sprite1->data[0], 6, 1);
- }
else
- {
sub_806BF24(&gUnknown_083769A8[sprite1->data[0] * 2], sprite1->data[0], 6, 0);
- }
}
void HandlePartyMenuSwitchPokemonInput(u8 taskId)
@@ -2772,14 +2315,9 @@ void sub_806CCE4()
u8 monIndex2 = gSprites[ewram01000.unk2].data[0];
if (monIndex1 <= 5)
- {
sub_806BF24(&gUnknown_083769A8[monIndex1 * 2], monIndex1, 3, 0);
- }
-
if (monIndex2 <= 5)
- {
sub_806BF24(&gUnknown_083769A8[monIndex2 * 2], monIndex2, 3, 1);
- }
}
void sub_806CD44(u8 taskId)
@@ -2988,9 +2526,7 @@ void sub_806D05C(u8 taskId)
sub_806CFA0(taskId, 1);
if (ewram01000.unk8 == 0 && ewram01000.unkA == 11)
- {
gTasks[taskId].func = sub_806D198;
- }
}
void sub_806D098(u8 a, u8 b)
@@ -3032,9 +2568,7 @@ void sub_806D15C(u8 taskId)
sub_806D098(taskId, 1);
if (ewram01000.unk8 == 11 && ewram01000.unkA == 11)
- {
gTasks[taskId].func = sub_806D198;
- }
}
void sub_806D198(u8 taskId)
@@ -3104,22 +2638,14 @@ void sub_806D3B4(u8 taskId, u16 species1, u16 species2)
sub_806B9A4(var1[2] + gTasks[taskId].data[0], var1[3], 4);
if (species1)
- {
sub_806BA94(var1[8] + gTasks[taskId].data[0], var1[9], 0, 4);
- }
else
- {
sub_806BA94(var1[8] + gTasks[taskId].data[0], var1[9], 1, 4);
- }
if (species2)
- {
sub_806BA94(var1[10] + gTasks[taskId].data[0], var1[11], 0, 4);
- }
else
- {
sub_806BA94(var1[10] + gTasks[taskId].data[0], var1[11], 1, 4);
- }
}
void sub_806D4AC(u8 taskId, u16 species, u8 c)
@@ -3203,19 +2729,13 @@ bool8 LoadPartyMenuGraphics(u8 a)
bool8 retVal = FALSE;
if (a < 2)
- {
LZDecompressVram(gPartyMenuMisc_Gfx, (void *)BG_VRAM);
- }
if (a == 2 || a == 0)
- {
LZDecompressVram(gPartyMenuMisc_Tilemap, (void *)(BG_VRAM + 0x3800));
- }
if (a == 3 || a == 0)
- {
LoadCompressedPalette(gPartyMenuMisc_Pal, 0, 0x160);
- }
if (a == 4 || a == 0)
{
@@ -3224,19 +2744,13 @@ bool8 LoadPartyMenuGraphics(u8 a)
}
if (a == 5 || a == 0)
- {
LZDecompressVram(gPartyMenuHpBar_Gfx, (void *)(BG_VRAM + 0x6000));
- }
if (a == 6 || a == 0)
- {
LZDecompressVram(gPartyMenuOrderText_Gfx, (void *)(BG_VRAM + 0x6180));
- }
if (a == 7 || a == 0)
- {
LZDecompressVram(gStatusGfx_Icons, (void *)(BG_VRAM + 0x7180));
- }
if (a == 8 || a == 0)
{
@@ -3255,21 +2769,13 @@ void SetMonIconAnimByHP(u8 spriteId, u16 currentHP, u16 maxHP)
if (currentHP != maxHP)
{
if (hpBarLevel == 3)
- {
animNum = 1;
- }
else if (hpBarLevel == 2)
- {
animNum = 2;
- }
else if (hpBarLevel == 1)
- {
animNum = 3;
- }
else
- {
animNum = 4;
- }
}
sub_809D824(&gSprites[spriteId], animNum);
@@ -3300,25 +2806,19 @@ void TryCreatePartyMenuMonIcon(u8 taskId, u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES))
{
- bool8 isLinkDoubleBattle = IsLinkDoubleBattle();
- if (isLinkDoubleBattle == TRUE)
- {
+ if (IsLinkDoubleBattle() == TRUE)
CreatePartyMenuMonIcon(taskId, monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon);
- }
else
- {
CreatePartyMenuMonIcon(taskId, monIndex, IsDoubleBattle(), pokemon);
- }
}
}
void unref_sub_806D964(u8 taskId)
{
u8 i;
+
for (i = 0; i < gPlayerPartyCount; i++)
- {
TryCreatePartyMenuMonIcon(taskId, i, &gPlayerParty[i]);
- }
}
void CreateMonIcon_LinkMultiBattle(u8 taskId, u8 monIndex, u8 menuType, struct UnknownPokemonStruct2 *pokemon)
@@ -3333,19 +2833,14 @@ void CreateMonIcon_LinkMultiBattle(u8 taskId, u8 monIndex, u8 menuType, struct U
void UpdateMonIconFrame_806DA0C(struct Sprite *sprite)
{
- u8 var1;
+ u8 var1 = UpdateMonIconFrame(sprite);
- var1 = UpdateMonIconFrame(sprite);
if (var1)
{
if (var1 & 1)
- {
sprite->pos2.y = -3;
- }
else
- {
sprite->pos2.y = 1;
- }
}
}
@@ -3365,13 +2860,9 @@ void UpdateMonIconFrame_806DA44(u8 taskId, u8 monIndex, u8 c)
gSprites[spriteId].data[0] = 0;
if (!c)
- {
gSprites[spriteId].callback = UpdateMonIconFrame_806DA38;
- }
else
- {
gSprites[spriteId].callback = UpdateMonIconFrame_806DA0C;
- }
}
}
@@ -3383,8 +2874,8 @@ void LoadHeldItemIconGraphics(void)
void SpriteCB_HeldItemIcon(struct Sprite *sprite)
{
-
u8 data7 = sprite->data[7];
+
if (gSprites[data7].invisible)
{
sprite->invisible = 1;
@@ -3422,29 +2913,19 @@ void CreateHeldItemIcons(u8 *a, u8 *b, u8 c)
switch (c)
{
case 0:
- i = 0;
- while (i < a[0])
+ for (i = 0; i < a[0]; i++)
{
heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
if (heldItem)
- {
CreateHeldItemIcon(b[i], ItemIsMail(heldItem));
- }
-
- i++;
}
break;
case 1:
- i = 0;
- while (i < a[1])
+ for (i = 0; i < a[1]; i++)
{
heldItem = GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM);
if (heldItem)
- {
CreateHeldItemIcon(b[i + 6], ItemIsMail(heldItem));
- }
-
- i++;
}
break;
}
@@ -3495,13 +2976,9 @@ void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item)
else
{
if (ItemIsMail(item))
- {
StartSpriteAnim(&gSprites[heldItemSpriteId], 1);
- }
else
- {
StartSpriteAnim(&gSprites[heldItemSpriteId], 0);
- }
gSprites[heldItemSpriteId].invisible = 0;
}
@@ -3611,25 +3088,25 @@ u8 GetMonIconSpriteId(u8 taskId, u8 monIndex)
{
switch (monIndex)
{
- case 1:
- return gTasks[taskId].data[0];
- break;
- case 2:
- return gTasks[taskId].data[1] >> 8;
- break;
- case 3:
- return gTasks[taskId].data[1];
- break;
- case 4:
- return gTasks[taskId].data[2] >> 8;
- break;
- case 5:
- return gTasks[taskId].data[2];
- break;
- case 0:
- default:
- return gTasks[taskId].data[0] >> 8;
- break;
+ case 1:
+ return gTasks[taskId].data[0];
+ break;
+ case 2:
+ return gTasks[taskId].data[1] >> 8;
+ break;
+ case 3:
+ return gTasks[taskId].data[1];
+ break;
+ case 4:
+ return gTasks[taskId].data[2] >> 8;
+ break;
+ case 5:
+ return gTasks[taskId].data[2];
+ break;
+ case 0:
+ default:
+ return gTasks[taskId].data[0] >> 8;
+ break;
}
}
@@ -3637,24 +3114,24 @@ void SetMonIconSpriteId(u8 taskId, u8 monIndex, u8 spriteId)
{
switch (monIndex)
{
- case 0:
- gTasks[taskId].data[0] = (u8)gTasks[taskId].data[0] | (spriteId << 8);
- break;
- case 1:
- gTasks[taskId].data[0] = (gTasks[taskId].data[0] & -0x100) | spriteId;
- break;
- case 2:
- gTasks[taskId].data[1] = (u8)gTasks[taskId].data[1] | (spriteId << 8);
- break;
- case 3:
- gTasks[taskId].data[1] = (gTasks[taskId].data[1] & -0x100) | spriteId;
- break;
- case 4:
- gTasks[taskId].data[2] = (u8)gTasks[taskId].data[2] | (spriteId << 8);
- break;
- case 5:
- gTasks[taskId].data[2] = (gTasks[taskId].data[2] & -0x100) | spriteId;
- break;
+ case 0:
+ gTasks[taskId].data[0] = (u8)gTasks[taskId].data[0] | (spriteId << 8);
+ break;
+ case 1:
+ gTasks[taskId].data[0] = (gTasks[taskId].data[0] & -0x100) | spriteId;
+ break;
+ case 2:
+ gTasks[taskId].data[1] = (u8)gTasks[taskId].data[1] | (spriteId << 8);
+ break;
+ case 3:
+ gTasks[taskId].data[1] = (gTasks[taskId].data[1] & -0x100) | spriteId;
+ break;
+ case 4:
+ gTasks[taskId].data[2] = (u8)gTasks[taskId].data[2] | (spriteId << 8);
+ break;
+ case 5:
+ gTasks[taskId].data[2] = (gTasks[taskId].data[2] & -0x100) | spriteId;
+ break;
}
}
@@ -3799,15 +3276,10 @@ void TryPrintPartyMenuMonNickname(u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES))
{
- bool8 isLinkDoubleBattle = IsLinkDoubleBattle();
- if (isLinkDoubleBattle == TRUE)
- {
+ if (IsLinkDoubleBattle() == TRUE)
PrintPartyMenuMonNickname(monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon);
- }
else
- {
PrintPartyMenuMonNickname(monIndex, IsDoubleBattle(), pokemon);
- }
}
}
@@ -3816,9 +3288,7 @@ void PrintPartyMenuMonNicknames(void)
u8 i;
for (i = 0; i < PARTY_SIZE; i++)
- {
TryPrintPartyMenuMonNickname(i, &gPlayerParty[i]);
- }
}
u8 *GetMonNickname(struct Pokemon *pokemon, u8 *stringBuffer)
@@ -3836,38 +3306,28 @@ void PartyMenuPutStatusTilemap(u8 monIndex, u8 menuLayout, u8 status)
u8 var1 = status * 4;
for (i = 0; i < 4; i++)
- {
vramPtr[i] = (0x18C + var1 + i) | -0x5000;
- }
}
static void PartyMenuClearLevelStatusTilemap(u8 monIndex)
{
- bool8 isLinkDoubleBattle;
u8 menuLayout;
u8 x;
u8 y;
u16 *vramPtr;
u8 i;
- isLinkDoubleBattle = IsLinkDoubleBattle();
- if (isLinkDoubleBattle == TRUE)
- {
+ if (IsLinkDoubleBattle() == TRUE)
menuLayout = PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE;
- }
else
- {
menuLayout = IsDoubleBattle();
- }
x = gUnknown_08376738[menuLayout][monIndex].x - 1;
y = gUnknown_08376738[menuLayout][monIndex].y + 1;
vramPtr = (u16*)(VRAM + 0xF000) + (x + y * 32);
for (i = 0; i < 4; i++)
- {
vramPtr[i] = 0;
- }
}
static void PartyMenuWriteTilemap(u8 a, u8 x, u8 y)
@@ -3908,30 +3368,18 @@ void PartyMenuPrintMonLevelOrStatus(u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG))
{
- u8 statusAndPkrs;
- bool8 isLinkDoubleBattle;
+ u8 statusAndPkrs = GetMonStatusAndPokerus(pokemon);
u8 menuLayout;
- statusAndPkrs = GetMonStatusAndPokerus(pokemon);
-
- isLinkDoubleBattle = IsLinkDoubleBattle();
- if (isLinkDoubleBattle == TRUE)
- {
+ if (IsLinkDoubleBattle() == TRUE)
menuLayout = PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE;
- }
else
- {
menuLayout = IsDoubleBattle();
- }
if (statusAndPkrs != 0 && statusAndPkrs != 6)
- {
PartyMenuPutStatusTilemap(monIndex, menuLayout, statusAndPkrs - 1);
- }
else
- {
PartyMenuPrintLevel(monIndex, menuLayout, pokemon);
- }
PartyMenuPrintGenderIcon(monIndex, menuLayout, pokemon);
}
@@ -3942,9 +3390,7 @@ void PartyMenuPrintMonsLevelOrStatus(void)
u8 i;
for (i = 0; i < PARTY_SIZE; i++)
- {
PartyMenuPrintMonLevelOrStatus(i, &gPlayerParty[i]);
- }
}
void PartyMenuDoPrintGenderIcon(u16 species, u8 gender, u8 menuLayout, u8 monIndex, u8 *nickname)
@@ -3956,12 +3402,12 @@ void PartyMenuDoPrintGenderIcon(u16 species, u8 gender, u8 menuLayout, u8 monInd
switch (gender)
{
- case MON_MALE:
- PartyMenuWriteTilemap(0x42, x, y);
- break;
- case MON_FEMALE:
- PartyMenuWriteTilemap(0x44, x, y);
- break;
+ case MON_MALE:
+ PartyMenuWriteTilemap(0x42, x, y);
+ break;
+ case MON_FEMALE:
+ PartyMenuWriteTilemap(0x44, x, y);
+ break;
}
}
}
@@ -3994,11 +3440,8 @@ void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP)
void PartyMenuPrintHP(u8 monIndex, u8 b, struct Pokemon *pokemon)
{
- u16 currentHP;
- u16 maxHP;
-
- currentHP = GetMonData(pokemon, MON_DATA_HP);
- maxHP = GetMonData(pokemon, MON_DATA_MAX_HP);
+ u16 currentHP = GetMonData(pokemon, MON_DATA_HP);
+ u16 maxHP = GetMonData(pokemon, MON_DATA_MAX_HP);
PartyMenuDoPrintHP(monIndex, b, currentHP, maxHP);
}
@@ -4007,15 +3450,10 @@ void PartyMenuTryPrintHP(u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG))
{
- bool8 isLinkDoubleBattle = IsLinkDoubleBattle();
- if (isLinkDoubleBattle == TRUE)
- {
+ if (IsLinkDoubleBattle() == TRUE)
PartyMenuPrintHP(monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon);
- }
else
- {
PartyMenuPrintHP(monIndex, IsDoubleBattle(), pokemon);
- }
}
}
@@ -4024,9 +3462,7 @@ void PartyMenuTryPrintMonsHP(void)
u8 i;
for (i = 0; i < PARTY_SIZE; i++)
- {
PartyMenuTryPrintHP(i, &gPlayerParty[i]);
- }
}
void unref_sub_806E564(void) { }
@@ -4046,17 +3482,11 @@ void PartyMenuDoDrawHPBar(u8 monIndex, u8 menuLayout, u16 currentHP, u16 maxHP)
hpBarLevel = GetHPBarLevel(currentHP, maxHP);
if (hpBarLevel > 2)
- {
battleInterface.unkC_0 = 4;
- }
if (hpBarLevel == 2)
- {
battleInterface.unkC_0 = 5;
- }
if (hpBarLevel < 2)
- {
battleInterface.unkC_0 = 6;
- }
battleInterface.unk10 = 0x100;
@@ -4082,15 +3512,10 @@ void PartyMenuTryDrawHPBar(u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG))
{
- bool8 isDoubleBattle = IsLinkDoubleBattle();
- if (isDoubleBattle == TRUE)
- {
+ if (IsLinkDoubleBattle() == TRUE)
PartyMenuDrawHPBar(monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon);
- }
else
- {
PartyMenuDrawHPBar(monIndex, IsDoubleBattle(), pokemon);
- }
}
}
@@ -4099,9 +3524,7 @@ void PartyMenuDrawHPBars(void)
u8 i;
for (i = 0; i < PARTY_SIZE; i++)
- {
PartyMenuTryDrawHPBar(i, &gPlayerParty[i]);
- }
}
void SwapPokemon(struct Pokemon *a, struct Pokemon *b)
@@ -4871,64 +4294,64 @@ void GetMedicineItemEffectMessage(u16 item)
{
switch (GetItemEffectType(item))
{
- case 3:
- StringExpandPlaceholders(gStringVar4, gOtherText_CuredPoisoning);
- break;
- case 4:
- StringExpandPlaceholders(gStringVar4, gOtherText_WokeUp);
- break;
- case 5:
- StringExpandPlaceholders(gStringVar4, gOtherText_BurnHealed);
- break;
- case 6:
- StringExpandPlaceholders(gStringVar4, gOtherText_ThawedOut);
- break;
- case 7:
- StringExpandPlaceholders(gStringVar4, gOtherText_CuredParalysis);
- break;
- case 8:
- StringExpandPlaceholders(gStringVar4, gOtherText_SnapConfusion);
- break;
- case 9:
- StringExpandPlaceholders(gStringVar4, gOtherText_GotOverLove);
- break;
- case 11:
- StringExpandPlaceholders(gStringVar4, gOtherText_BecameHealthy);
- break;
- case 13:
- StringCopy(gStringVar2, gOtherText_Hp2);
- StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
- break;
- case 12:
- StringCopy(gStringVar2, gOtherText_Attack);
- StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
- break;
- case 17:
- StringCopy(gStringVar2, gOtherText_Defense);
- StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
- break;
- case 16:
- StringCopy(gStringVar2, gOtherText_Speed);
- StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
- break;
- case 14:
- StringCopy(gStringVar2, gOtherText_SpAtk2);
- StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
- break;
- case 15:
- StringCopy(gStringVar2, gOtherText_SpDef2);
- StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
- break;
- case 19:
- case 20:
- StringExpandPlaceholders(gStringVar4, gOtherText_PPIncreased);
- break;
- case 21:
- StringExpandPlaceholders(gStringVar4, gOtherText_PPRestored);
- break;
- default:
- StringExpandPlaceholders(gStringVar4, gOtherText_WontHaveAnyEffect);
- break;
+ case 3:
+ StringExpandPlaceholders(gStringVar4, gOtherText_CuredPoisoning);
+ break;
+ case 4:
+ StringExpandPlaceholders(gStringVar4, gOtherText_WokeUp);
+ break;
+ case 5:
+ StringExpandPlaceholders(gStringVar4, gOtherText_BurnHealed);
+ break;
+ case 6:
+ StringExpandPlaceholders(gStringVar4, gOtherText_ThawedOut);
+ break;
+ case 7:
+ StringExpandPlaceholders(gStringVar4, gOtherText_CuredParalysis);
+ break;
+ case 8:
+ StringExpandPlaceholders(gStringVar4, gOtherText_SnapConfusion);
+ break;
+ case 9:
+ StringExpandPlaceholders(gStringVar4, gOtherText_GotOverLove);
+ break;
+ case 11:
+ StringExpandPlaceholders(gStringVar4, gOtherText_BecameHealthy);
+ break;
+ case 13:
+ StringCopy(gStringVar2, gOtherText_Hp2);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
+ break;
+ case 12:
+ StringCopy(gStringVar2, gOtherText_Attack);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
+ break;
+ case 17:
+ StringCopy(gStringVar2, gOtherText_Defense);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
+ break;
+ case 16:
+ StringCopy(gStringVar2, gOtherText_Speed);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
+ break;
+ case 14:
+ StringCopy(gStringVar2, gOtherText_SpAtk2);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
+ break;
+ case 15:
+ StringCopy(gStringVar2, gOtherText_SpDef2);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
+ break;
+ case 19:
+ case 20:
+ StringExpandPlaceholders(gStringVar4, gOtherText_PPIncreased);
+ break;
+ case 21:
+ StringExpandPlaceholders(gStringVar4, gOtherText_PPRestored);
+ break;
+ default:
+ StringExpandPlaceholders(gStringVar4, gOtherText_WontHaveAnyEffect);
+ break;
}
}
@@ -5025,9 +4448,9 @@ void UseMedicine(u8 taskId, u16 item, TaskFunc func)
bool8 IsBlueYellowRedFlute(u16 item)
{
- if (item == 0x27
- || item == 0x29
- || item == 0x28)
+ if (item == ITEM_BLUE_FLUTE
+ || item == ITEM_RED_FLUTE
+ || item == ITEM_YELLOW_FLUTE)
return TRUE;
else
return FALSE;
@@ -5339,7 +4762,6 @@ void Task_RareCandy2(u8 taskId)
}
}
-#if ENGLISH
void PrintStatGrowthsInLevelUpWindow(u8 taskId)
{
u8 i;
@@ -5351,6 +4773,9 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId)
u8 x;
u8 y;
u32 stat;
+#if GERMAN
+ u8 *ptr;
+#endif
stat = GetMonData(ewram1C000.pokemon, StatDataTypes[i]);
@@ -5360,142 +4785,31 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId)
x = (i / 3) * 9 + 11;
y = ((i % 3) << 1) + 1;
+#if GERMAN
+ ptr = StringCopy(gStringVar1, StatNames[i]);
+ *ptr++ = EXT_CTRL_CODE_BEGIN;
+ *ptr++ = 0x13;
+ *ptr++ = 0x2E;
+ ptr = StringCopy(ptr, gOtherText_TallPlusAndRightArrow);
+ *ptr++ = EXT_CTRL_CODE_BEGIN;
+ *ptr++ = 0x13;
+ *ptr++ = 0x34;
+ ConvertIntToDecimalStringN(ptr, ewram1B000.statGrowths[i], 1, 2);
+ Menu_PrintText(gStringVar1, x + 1, y);
+#else
Menu_PrintTextPixelCoords(StatNames[i], (x + 1) * 8, y * 8, 1);
-
if (i == 2)
Menu_PrintTextPixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 0);
else
Menu_PrintTextPixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 1);
-
gStringVar1[0] = EXT_CTRL_CODE_BEGIN;
gStringVar1[1] = 0x14;
gStringVar1[2] = 0x06;
-
ConvertIntToDecimalStringN(gStringVar1 + 3, ewram1B000.statGrowths[i], 1, 2);
-
Menu_PrintTextPixelCoords(gStringVar1, (x + 6) * 8 + 12, y * 8, 0);
+#endif
}
}
-#elif GERMAN
-__attribute__((naked))
-void PrintStatGrowthsInLevelUpWindow(u8 taskId) {
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- movs r0, 0xB\n\
- movs r1, 0\n\
- movs r2, 0x1D\n\
- movs r3, 0x7\n\
- bl Menu_DrawStdWindowFrame\n\
- movs r7, 0\n\
- ldr r0, _0807092C @ =gStringVar1\n\
- mov r10, r0\n\
- movs r1, 0xFC\n\
- mov r9, r1\n\
- movs r2, 0x13\n\
- mov r8, r2\n\
-_0807086C:\n\
- ldr r1, _08070930 @ =gSharedMem + 0x1C000\n\
- ldr r0, [r1]\n\
- ldr r1, _08070934 @ =StatDataTypes\n\
- adds r1, r7, r1\n\
- ldrb r1, [r1]\n\
- bl GetMonData\n\
- adds r1, r7, 0x6\n\
- lsls r1, 1\n\
- ldr r2, _08070938 @ =gSharedMem + 0x1B264\n\
- adds r1, r2, r1\n\
- strh r0, [r1]\n\
- lsls r6, r7, 1\n\
- adds r6, r2, r6\n\
- ldrh r1, [r6]\n\
- subs r0, r1\n\
- strh r0, [r6]\n\
- adds r0, r7, 0\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r4, r0, 3\n\
- adds r4, r0\n\
- adds r4, 0xB\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- adds r0, r7, 0\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- adds r5, r0, 0\n\
- lsls r5, 1\n\
- adds r5, 0x1\n\
- lsls r5, 24\n\
- lsrs r5, 24\n\
- ldr r1, _0807093C @ =StatNames\n\
- lsls r0, r7, 2\n\
- adds r0, r1\n\
- ldr r1, [r0]\n\
- mov r0, r10\n\
- bl StringCopy\n\
- adds r2, r0, 0\n\
- mov r0, r9\n\
- strb r0, [r2]\n\
- adds r2, 0x1\n\
- mov r1, r8\n\
- strb r1, [r2]\n\
- adds r2, 0x1\n\
- movs r0, 0x2E\n\
- strb r0, [r2]\n\
- adds r2, 0x1\n\
- adds r0, r2, 0\n\
- ldr r1, _08070940 @ =gOtherText_TallPlusAndRightArrow\n\
- bl StringCopy\n\
- adds r2, r0, 0\n\
- mov r0, r9\n\
- strb r0, [r2]\n\
- adds r2, 0x1\n\
- mov r1, r8\n\
- strb r1, [r2]\n\
- adds r2, 0x1\n\
- movs r0, 0x34\n\
- strb r0, [r2]\n\
- adds r2, 0x1\n\
- movs r0, 0\n\
- ldrsh r1, [r6, r0]\n\
- adds r0, r2, 0\n\
- movs r2, 0x1\n\
- movs r3, 0x2\n\
- bl ConvertIntToDecimalStringN\n\
- adds r4, 0x1\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- mov r0, r10\n\
- adds r1, r4, 0\n\
- adds r2, r5, 0\n\
- bl Menu_PrintText\n\
- adds r0, r7, 0x1\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- cmp r7, 0x5\n\
- bls _0807086C\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0807092C: .4byte gStringVar1\n\
-_08070930: .4byte gSharedMem + 0x1C000\n\
-_08070934: .4byte StatDataTypes\n\
-_08070938: .4byte gSharedMem + 0x1B264\n\
-_0807093C: .4byte StatNames\n\
-_08070940: .4byte gOtherText_TallPlusAndRightArrow\n\
- .syntax divided\n");
-}
-#endif
void PrintNewStatsInLevelUpWindow(u8 taskId)
{
@@ -5526,24 +4840,13 @@ void PrintNewStatsInLevelUpWindow(u8 taskId)
void RedrawPokemonInfoInMenu(u8 monIndex, struct Pokemon *pokemon)
{
- u8 statusAndPkrs;
- bool8 isDoubleBattle;
- u16 currentHP;
- u16 maxHP;
+ u8 statusAndPkrs = GetMonStatusAndPokerus(pokemon);
u8 icon;
- statusAndPkrs = GetMonStatusAndPokerus(pokemon);
if (statusAndPkrs == 0 || statusAndPkrs == 6)
- {
PartyMenuUpdateLevelOrStatus(pokemon, monIndex);
- }
-
- isDoubleBattle = IsDoubleBattle();
- currentHP = GetMonData(pokemon, MON_DATA_HP);
- maxHP = GetMonData(pokemon, MON_DATA_MAX_HP);
-
- PartyMenuDoPrintHP(monIndex, isDoubleBattle, currentHP, maxHP);
+ PartyMenuDoPrintHP(monIndex, IsDoubleBattle(), GetMonData(pokemon, MON_DATA_HP), GetMonData(pokemon, MON_DATA_MAX_HP));
PartyMenuTryDrawHPBar(monIndex, pokemon);
icon = GetMonIconSpriteId(ewram1C000.unk4, monIndex);
@@ -5569,45 +4872,45 @@ void Task_RareCandy3(u8 taskId)
switch (learnedMove)
{
- case 0:
- // No move is learned.
- evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0);
- if (evolutionSpecies != 0)
- {
- gCB2_AfterEvolution = sub_80A53F8;
- BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5);
- DestroyTask(taskId);
- }
- else
- {
- sub_8070D90(taskId);
- }
- break;
- case 0xFFFF:
- // Mon already knows 4 moves.
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
- StringCopy(gStringVar2, gMoveNames[gMoveToLearn]);
-
- StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn);
- sub_806E834(gStringVar4, 1);
-
- ewram1C000.unk8 = gMoveToLearn;
- gTasks[taskId].func = sub_806F358;
- break;
- case 0xFFFE:
- // Move was already known by the mon.
- gTasks[taskId].func = TeachMonMoveInPartyMenu;
- break;
- default:
- // Mon automatically learned a move because it knew less than four moves.
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
- StringCopy(gStringVar2, gMoveNames[learnedMove]);
-
- StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove);
- sub_806E834(gStringVar4, 1);
-
- gTasks[taskId].func = Task_TeamMonTMMove3;
- break;
+ case 0:
+ // No move is learned.
+ evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0);
+ if (evolutionSpecies != 0)
+ {
+ gCB2_AfterEvolution = sub_80A53F8;
+ BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5);
+ DestroyTask(taskId);
+ }
+ else
+ {
+ sub_8070D90(taskId);
+ }
+ break;
+ case 0xFFFF:
+ // Mon already knows 4 moves.
+ GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[gMoveToLearn]);
+
+ StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn);
+ sub_806E834(gStringVar4, 1);
+
+ ewram1C000.unk8 = gMoveToLearn;
+ gTasks[taskId].func = sub_806F358;
+ break;
+ case 0xFFFE:
+ // Move was already known by the mon.
+ gTasks[taskId].func = TeachMonMoveInPartyMenu;
+ break;
+ default:
+ // Mon automatically learned a move because it knew less than four moves.
+ GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[learnedMove]);
+
+ StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove);
+ sub_806E834(gStringVar4, 1);
+
+ gTasks[taskId].func = Task_TeamMonTMMove3;
+ break;
}
}
}
@@ -5621,45 +4924,45 @@ void TeachMonMoveInPartyMenu(u8 taskId)
learnedMove = MonTryLearningNewMove(ewram1C000.pokemon, FALSE);
switch (learnedMove)
{
- case 0:
- // No move is learned.
- evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0);
- if (evolutionSpecies != 0)
- {
- gCB2_AfterEvolution = sub_80A53F8;
- BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5);
- DestroyTask(taskId);
- }
- else
- {
- sub_8070D90(taskId);
- }
- break;
- case 0xFFFF:
- // Mon already knows 4 moves.
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
- StringCopy(gStringVar2, gMoveNames[gMoveToLearn]);
+ case 0:
+ // No move is learned.
+ evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0);
+ if (evolutionSpecies != 0)
+ {
+ gCB2_AfterEvolution = sub_80A53F8;
+ BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5);
+ DestroyTask(taskId);
+ }
+ else
+ {
+ sub_8070D90(taskId);
+ }
+ break;
+ case 0xFFFF:
+ // Mon already knows 4 moves.
+ GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[gMoveToLearn]);
- StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn);
- sub_806E834(gStringVar4, 1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn);
+ sub_806E834(gStringVar4, 1);
- ewram1C000.unk8 = gMoveToLearn;
- gTasks[taskId].func = sub_806F358;
- break;
- case 0xFFFE:
- // Move was already known by the mon. Go on the the next move to be learned.
- TeachMonMoveInPartyMenu(taskId);
- break;
- default:
- // Mon automatically learned a move because it knew less than four moves.
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
- StringCopy(gStringVar2, gMoveNames[learnedMove]);
+ ewram1C000.unk8 = gMoveToLearn;
+ gTasks[taskId].func = sub_806F358;
+ break;
+ case 0xFFFE:
+ // Move was already known by the mon. Go on the the next move to be learned.
+ TeachMonMoveInPartyMenu(taskId);
+ break;
+ default:
+ // Mon automatically learned a move because it knew less than four moves.
+ GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[learnedMove]);
- StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove);
- sub_806E834(gStringVar4, 1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove);
+ sub_806E834(gStringVar4, 1);
- gTasks[taskId].func = Task_TeamMonTMMove3;
- break;
+ gTasks[taskId].func = Task_TeamMonTMMove3;
+ break;
}
}
diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c
index b4be44aa2..6804f55d6 100644
--- a/src/field/pokeblock.c
+++ b/src/field/pokeblock.c
@@ -462,7 +462,7 @@ void debug_sub_8120F98(void)
static void sub_810BB0C(void)
{
BasicInitMenuWindow(&gWindowTemplate_81E6E34);
- sub_8072BD8(ItemId_GetItem(ITEM_POKEBLOCK_CASE)->name, 2, 1, 0x48);
+ sub_8072BD8(ItemId_GetName(ITEM_POKEBLOCK_CASE), 2, 1, 0x48);
}
static void sub_810BB30(void)
@@ -481,7 +481,7 @@ static void sub_810BB88(u8 a0)
u8 y;
u8 *buf;
BasicInitMenuWindow(&gWindowTemplate_81E6E34);
- for (i=a0; i<=a0+8; i++)
+ for (i = a0; i <= a0 + 8; i++)
{
y = (i - a0) << 1;
if (i == gUnknown_02039248.unk2)
@@ -1070,7 +1070,7 @@ s8 GetFirstFreePokeblockSlot(void)
return -1;
}
-bool8 sub_810CA34(struct Pokeblock *pokeblock)
+bool8 sub_810CA34(const struct Pokeblock *pokeblock)
{
s8 idx = GetFirstFreePokeblockSlot();
if (idx == -1)
diff --git a/src/field/region_map.c b/src/field/region_map.c
index 7bfda1a81..6d50701d6 100644
--- a/src/field/region_map.c
+++ b/src/field/region_map.c
@@ -1411,22 +1411,26 @@ static const u8 sUnknown_083E7920[][3] =
{0, 49, 0},
};
-struct UnknownStruct4
+static const u8 *const sEverGrandeCityAreaNames[] =
{
- const u8 *const *unk0;
- u16 mapSectionId;
- u16 flag;
+ OtherText_PokeLeague,
+ OtherText_PokeCenter,
};
-static const u8 *const sEverGrandeCityAreaNames[] = {OtherText_PokeLeague, OtherText_PokeCenter};
+struct MultiPartMapSection
+{
+ const u8 *const *partNames;
+ u16 mapSectionId;
+ u16 requiredFlag;
+};
-const struct UnknownStruct4 gUnknown_083E79C0[1] =
+// Map sections that are divided into multiple parts. Ever Grande City is the only one.
+static const struct MultiPartMapSection sMultiPartMapSections[1] =
{
{sEverGrandeCityAreaNames, MAPSEC_EVER_GRANDE_CITY, FLAG_SYS_POKEMON_LEAGUE_FLY},
};
-// XXX: what is this?
-static u8 *const ewram_ = gSharedMem;
+static struct UnknownStruct3 *const sFlyDataPtr = (struct UnknownStruct3 *)gSharedMem;
static const struct SpritePalette sFlyTargetIconSpritePalette = {sFlyTargetIcons_Pal, 2};
@@ -1547,10 +1551,10 @@ void CB2_InitFlyRegionMap(void)
Menu_EraseScreen();
break;
case 3:
- InitRegionMap(&ewram0_3.regionMap, 0);
+ InitRegionMap(&sFlyDataPtr->regionMap, 0);
CreateRegionMapCursor(0, 0);
CreateRegionMapPlayerIcon(1, 1);
- ewram0_3.unk6 = ewram0_3.regionMap.mapSectionId;
+ sFlyDataPtr->unk6 = sFlyDataPtr->regionMap.mapSectionId;
StringFill(ewramBlankMapName, CHAR_SPACE, 12);
PrintFlyTargetName();
break;
@@ -1593,36 +1597,34 @@ static void VBlankCB_FlyRegionMap(void)
void CB2_FlyRegionMap(void)
{
- ewram0_3.unk0();
+ sFlyDataPtr->unk0();
AnimateSprites();
BuildOamBuffer();
}
void sub_80FC244(void (*func)(void))
{
- ewram0_3.unk0 = func;
- ewram0_3.unk4 = 0;
+ sFlyDataPtr->unk0 = func;
+ sFlyDataPtr->unk4 = 0;
}
static void PrintFlyTargetName(void)
{
- if (ewram0_3.regionMap.unk16 == 2 || ewram0_3.regionMap.unk16 == 4)
+ if (sFlyDataPtr->regionMap.unk16 == 2 || sFlyDataPtr->regionMap.unk16 == 4)
{
+ bool8 drawFrameDisabled = FALSE;
u16 i;
- bool32 drawFrameDisabled = FALSE;
- for (i = 0; i < ARRAY_COUNT(gUnknown_083E79C0); i++)
+ for (i = 0; i < ARRAY_COUNT(sMultiPartMapSections); i++)
{
- const struct UnknownStruct4 *r4 = &gUnknown_083E79C0[i];
-
- if (ewram0_3.regionMap.mapSectionId == r4->mapSectionId)
+ if (sFlyDataPtr->regionMap.mapSectionId == sMultiPartMapSections[i].mapSectionId)
{
- if (FlagGet(r4->flag))
+ if (FlagGet(sMultiPartMapSections[i].requiredFlag))
{
Menu_DrawStdWindowFrame(16, 14, 29, 19);
- Menu_PrintText(ewram0_3.regionMap.mapSectionName, 17, 15);
- MenuPrint_RightAligned(r4->unk0[ewram0_3.regionMap.everGrandeCityArea], 29, 17);
- return;
+ Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 15);
+ MenuPrint_RightAligned(sMultiPartMapSections[i].partNames[sFlyDataPtr->regionMap.everGrandeCityArea], 29, 17);
+ drawFrameDisabled = TRUE;
}
break;
}
@@ -1631,7 +1633,7 @@ static void PrintFlyTargetName(void)
if (!drawFrameDisabled)
{
Menu_DrawStdWindowFrame(16, 16, 29, 19);
- Menu_PrintText(ewram0_3.regionMap.mapSectionName, 17, 17);
+ Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 17);
Menu_EraseWindowRect(16, 14, 29, 15);
}
}
@@ -1732,7 +1734,7 @@ static void CreateSpecialAreaFlyTargetIcons(void)
static void SpriteCB_FlyTargetIcons(struct Sprite *sprite)
{
// Blink if our mapSectionId is the one selected on the map
- if (ewram0_3.regionMap.mapSectionId == sprite->data[0])
+ if (sFlyDataPtr->regionMap.mapSectionId == sprite->data[0])
{
// Toggle visibility every 16 frames
sprite->data[1]++;
@@ -1751,11 +1753,11 @@ static void SpriteCB_FlyTargetIcons(struct Sprite *sprite)
static void sub_80FC5B4(void)
{
- switch (ewram0_3.unk4)
+ switch (sFlyDataPtr->unk4)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- ewram0_3.unk4++;
+ sFlyDataPtr->unk4++;
break;
case 1:
if (UpdatePaletteFade() != 0)
@@ -1767,7 +1769,7 @@ static void sub_80FC5B4(void)
static void sub_80FC600(void)
{
- if (ewram0_3.unk4 == 0)
+ if (sFlyDataPtr->unk4 == 0)
{
switch (sub_80FAB60())
{
@@ -1779,7 +1781,7 @@ static void sub_80FC600(void)
PrintFlyTargetName();
break;
case INPUT_EVENT_A_BUTTON:
- if (ewram0_3.regionMap.unk16 == 2 || ewram0_3.regionMap.unk16 == 4)
+ if (sFlyDataPtr->regionMap.unk16 == 2 || sFlyDataPtr->regionMap.unk16 == 4)
{
m4aSongNumStart(SE_SELECT);
ewramA6E = 1;
@@ -1797,11 +1799,11 @@ static void sub_80FC600(void)
void sub_80FC69C(void)
{
- switch (ewram0_3.unk4)
+ switch (sFlyDataPtr->unk4)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- ewram0_3.unk4++;
+ sFlyDataPtr->unk4++;
break;
case 1:
if (UpdatePaletteFade() != 0)
@@ -1809,7 +1811,7 @@ void sub_80FC69C(void)
FreeRegionMapIconResources();
if (ewramA6E != 0)
{
- switch (ewram0_3.regionMap.mapSectionId)
+ switch (sFlyDataPtr->regionMap.mapSectionId)
{
case MAPSEC_SOUTHERN_ISLAND:
sub_8053538(22);
@@ -1821,13 +1823,13 @@ void sub_80FC69C(void)
sub_8053538((gSaveBlock2.playerGender == MALE) ? 12 : 13);
break;
case MAPSEC_EVER_GRANDE_CITY:
- sub_8053538((FlagGet(FLAG_SYS_POKEMON_LEAGUE_FLY) && ewram0_3.regionMap.everGrandeCityArea == 0) ? 20 : 11);
+ sub_8053538((FlagGet(FLAG_SYS_POKEMON_LEAGUE_FLY) && sFlyDataPtr->regionMap.everGrandeCityArea == 0) ? 20 : 11);
break;
default:
- if (sUnknown_083E7920[ewram0_3.regionMap.mapSectionId][2] != 0)
- sub_8053538(sUnknown_083E7920[ewram0_3.regionMap.mapSectionId][2]);
+ if (sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][2] != 0)
+ sub_8053538(sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][2]);
else
- warp1_set_2(sUnknown_083E7920[ewram0_3.regionMap.mapSectionId][0], sUnknown_083E7920[ewram0_3.regionMap.mapSectionId][1], -1);
+ warp1_set_2(sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][0], sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][1], -1);
break;
}
sub_80865BC();
@@ -1839,3 +1841,131 @@ void sub_80FC69C(void)
break;
}
}
+
+#if DEBUG
+
+void debug_sub_8110CCC(void)
+{
+ bool8 r7 = FALSE;
+ u16 i;
+ s16 indent;
+
+ for (i = 0; i < ARRAY_COUNT(sMultiPartMapSections); i++)
+ {
+ if (sFlyDataPtr->regionMap.mapSectionId == sMultiPartMapSections[i].mapSectionId)
+ {
+ if (FlagGet(sMultiPartMapSections[i].requiredFlag))
+ {
+ indent = 12 - StringLength(sMultiPartMapSections[i].partNames[sFlyDataPtr->regionMap.everGrandeCityArea]);
+ if (indent < 0)
+ indent = 0;
+ r7 = TRUE;
+ Menu_DrawStdWindowFrame(16, 14, 29, 19);
+ Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 15);
+ Menu_PrintText(sMultiPartMapSections[i].partNames[sFlyDataPtr->regionMap.everGrandeCityArea], 17 + indent, 17);
+ }
+ break;
+ }
+ }
+ if (!r7)
+ {
+ Menu_DrawStdWindowFrame(16, 16, 29, 19);
+ Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 17);
+ Menu_EraseWindowRect(16, 14, 29, 15);
+ }
+}
+
+void debug_sub_8110D84(void)
+{
+ switch (sFlyDataPtr->unk4)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ sFlyDataPtr->unk4++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ sFlyDataPtr->unk4++;
+ break;
+ case 2:
+ switch (sub_80FAB60())
+ {
+ case 0:
+ break;
+ case 3:
+ debug_sub_8110CCC();
+ break;
+ case 4:
+ if (sFlyDataPtr->regionMap.unk16 != 0)
+ {
+ m4aSongNumStart(SE_SELECT);
+ gSharedMem[0xA6E] = 1; // TODO: what is this?
+ sub_80FC244(sub_80FC69C);
+ }
+ break;
+ case 5:
+ m4aSongNumStart(SE_SELECT);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ sFlyDataPtr->unk4++;
+ break;
+ }
+ break;
+ case 3:
+ if (!UpdatePaletteFade())
+ SetMainCallback2(sub_805469C);
+ break;
+ case 4:
+ if (sub_80FAB60() != 0)
+ {
+ debug_sub_8110CCC();
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ sub_80FBCA0();
+ sub_80FAEC4();
+ sFlyDataPtr->unk4++;
+ }
+ break;
+ case 5:
+ if (sub_80FAFC0() == 0)
+ {
+ CreateRegionMapCursor(0, 0);
+ sFlyDataPtr->unk4++;
+ }
+ break;
+ case 6:
+ if (sub_80FAB60() != 0)
+ {
+ debug_sub_8110CCC();
+ }
+ if (gMain.newKeys & A_BUTTON) // no "else if" like above?
+ {
+ sub_80FBCA0();
+ sub_80FAEC4();
+ sFlyDataPtr->unk4++;
+ }
+ break;
+ case 7:
+ if (sub_80FAFC0() == 0)
+ {
+ CreateRegionMapCursor(0, 0);
+ sFlyDataPtr->unk4 = 3;
+ }
+ break;
+ }
+}
+
+void debug_sub_8110F28(void)
+{
+ CB2_InitFlyRegionMap();
+
+ if (gMain.callback2 == CB2_FlyRegionMap)
+ {
+ sub_80FBF94();
+ sub_80FC244(debug_sub_8110D84);
+ debug_sub_8110CCC();
+ }
+}
+
+#endif
+
diff --git a/src/field/secret_base.c b/src/field/secret_base.c
index 8b67a2cd9..210d49835 100644
--- a/src/field/secret_base.c
+++ b/src/field/secret_base.c
@@ -23,6 +23,7 @@
#include "menu.h"
#include "menu_helpers.h"
#include "metatile_behavior.h"
+#include "new_game.h"
#include "palette.h"
#include "pokemon.h"
#include "overworld.h"
@@ -127,10 +128,11 @@ void ClearSecretBase(struct SecretBaseRecord *record)
{
u16 i;
u16 j;
+
record->secretBaseId = 0;
- for (i=0; i<OT_NAME_LENGTH; i++)
+ for (i = 0; i < OT_NAME_LENGTH; i++)
record->playerName[i] = 0xff;
- for (i=0; i<4; i++)
+ for (i = 0; i < 4; i++)
record->trainerId[i] = 0x00;
record->sbr_field_e = 0;
record->sbr_field_10 = 0;
@@ -139,14 +141,15 @@ void ClearSecretBase(struct SecretBaseRecord *record)
record->gender = 0;
record->sbr_field_1_5 = 0;
record->sbr_field_1_6 = 0;
- for (i=0; i<16; i++) {
+ for (i = 0; i < 16; i++)
+ {
record->decorations[i] = 0;
record->decorationPos[i] = 0;
}
- for (i=0; i<6; i++) {
- for (j=0; j<4; j++) {
+ for (i = 0; i < 6; i++)
+ {
+ for (j = 0; j < 4; j++)
record->partyMoves[i * 4 + j] = 0;
- }
record->partyPersonality[i] = 0;
record->partyEVs[i] = 0;
record->partySpecies[i] = 0;
@@ -175,17 +178,20 @@ void sub_80BB5D0(void)
void sub_80BB5E4(void)
{
u16 i;
+
gSpecialVar_Result = 0;
- for (i = 0; i < MAX_SECRET_BASES; i++) {
- if (gUnknown_020387DC != gSaveBlock1.secretBases[i].secretBaseId)
- continue;
- gSpecialVar_Result = 1;
- VarSet(VAR_CURRENT_SECRET_BASE, i);
- break;
+ for (i = 0; i < MAX_SECRET_BASES; i++)
+ {
+ if (gUnknown_020387DC == gSaveBlock1.secretBases[i].secretBaseId)
+ {
+ gSpecialVar_Result = 1;
+ VarSet(VAR_CURRENT_SECRET_BASE, i);
+ break;
+ }
}
}
-void sub_80BB63C(void) // 80bb63c
+void sub_80BB63C(void)
{
if (gSaveBlock1.secretBases[0].secretBaseId)
gSpecialVar_Result = 1;
@@ -193,7 +199,7 @@ void sub_80BB63C(void) // 80bb63c
gSpecialVar_Result = 0;
}
-u8 sub_80BB66C(void) // 80bb66c
+u8 sub_80BB66C(void)
{
s16 x, y;
s16 v0;
@@ -214,7 +220,7 @@ u8 sub_80BB66C(void) // 80bb66c
return 0;
}
-void sub_80BB70C(void) // 80bb70c
+void sub_80BB70C(void)
{
gSpecialVar_0x8007 = sub_80BB66C();
}
@@ -222,9 +228,11 @@ void sub_80BB70C(void) // 80bb70c
s16 unref_sub_80BB724(u16 *a0, u8 a1)
{
u16 v2;
- for (v2=0; v2<0x200; v2++) {
+
+ for (v2 = 0; v2 < 0x200; v2++)
+ {
if ((a0[v2] & 0xFFF) == a1)
- return (s16)v2;
+ return v2;
}
return -1;
}
@@ -232,9 +240,13 @@ s16 unref_sub_80BB724(u16 *a0, u8 a1)
void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3)
{
s16 x, y;
- for (y=0; y<gMapHeader.mapData->height; y++) {
- for (x=0; x<gMapHeader.mapData->width; x++) {
- if ((gMapHeader.mapData->map[y * gMapHeader.mapData->width + x] & 0x3ff) == arg3) {
+
+ for (y=0; y<gMapHeader.mapData->height; y++)
+ {
+ for (x=0; x<gMapHeader.mapData->width; x++)
+ {
+ if ((gMapHeader.mapData->map[y * gMapHeader.mapData->width + x] & 0x3ff) == arg3)
+ {
*arg1 = x;
*arg2 = y;
return;
@@ -248,17 +260,22 @@ void sub_80BB800(void)
s16 x, y;
s16 tile_id;
u16 idx;
+
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
tile_id = MapGridGetMetatileIdAt(x, y);
- for (idx=0; idx<7; idx++) {
- if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) {
+ for (idx = 0; idx < 7; idx++)
+ {
+ if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id)
+ {
MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00);
CurrentMapDrawMetatileAt(x, y);
return;
}
}
- for (idx=0; idx<7; idx++) {
- if (gUnknown_083D1358[idx].unk_083D1358_1 == tile_id) {
+ for (idx = 0; idx < 7; idx++)
+ {
+ if (gUnknown_083D1358[idx].unk_083D1358_1 == tile_id)
+ {
MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[idx].unk_083D1358_0 | 0xc00);
CurrentMapDrawMetatileAt(x, y);
return;
@@ -269,7 +286,9 @@ void sub_80BB800(void)
u8 sub_80BB8A8(u8 *arg1)
{
u8 idx;
- for (idx=0; idx<7; idx++) {
+
+ for (idx=0; idx<7; idx++)
+ {
if (arg1[idx] == EOS)
return idx;
}
@@ -280,10 +299,10 @@ void sub_80BB8CC(void)
{
u8 nameLength;
u16 idx;
+
gSaveBlock1.secretBases[0].secretBaseId = gUnknown_020387DC;
- for (idx=0; idx<4; idx++) {
+ for (idx=0; idx<4; idx++)
gSaveBlock1.secretBases[0].trainerId[idx] = gSaveBlock2.playerTrainerId[idx];
- }
VarSet(VAR_CURRENT_SECRET_BASE, 0);
nameLength = sub_80BB8A8(gSaveBlock2.playerName);
memset(gSaveBlock1.secretBases[0].playerName, 0xFF, OT_NAME_LENGTH);
@@ -296,13 +315,20 @@ void sub_80BB970(struct MapEvents *events)
{
u16 bgevidx, idx, jdx;
s16 tile_id;
- for (bgevidx=0; bgevidx<events->bgEventCount; bgevidx++) {
- if (events->bgEvents[bgevidx].kind == 8) {
- for (jdx=0; jdx<MAX_SECRET_BASES; jdx++) {
- if (gSaveBlock1.secretBases[jdx].secretBaseId == events->bgEvents[bgevidx].bgUnion.secretBaseId) {
+
+ for (bgevidx = 0; bgevidx < events->bgEventCount; bgevidx++)
+ {
+ if (events->bgEvents[bgevidx].kind == 8)
+ {
+ for (jdx = 0; jdx < MAX_SECRET_BASES; jdx++)
+ {
+ if (gSaveBlock1.secretBases[jdx].secretBaseId == events->bgEvents[bgevidx].bgUnion.secretBaseId)
+ {
tile_id = MapGridGetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7);
- for (idx=0; idx<7; idx++) {
- if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) {
+ for (idx = 0; idx < 7; idx++)
+ {
+ if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id)
+ {
MapGridSetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7, gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00);
break;
}
@@ -323,14 +349,14 @@ void sub_80BBA14(void)
void sub_80BBA48(u8 taskid)
{
u16 curbaseid;
- switch (gTasks[taskid].data[0]) {
+ switch (gTasks[taskid].data[0])
+ {
case 0:
gTasks[taskid].data[0] = 1;
break;
case 1:
- if (!gPaletteFade.active) {
+ if (!gPaletteFade.active)
gTasks[taskid].data[0] = 2;
- }
break;
case 2:
curbaseid = VarGet(VAR_CURRENT_SECRET_BASE);
@@ -362,7 +388,8 @@ bool8 sub_80BBB24(void)
void sub_80BBB50(u8 taskid)
{
FieldObjectTurn(&(gMapObjects[gPlayerAvatar.mapObjectId]), 2);
- if (IsWeatherNotFadingIn() == 1) {
+ if (IsWeatherNotFadingIn() == 1)
+ {
EnableBothScriptContexts();
DestroyTask(taskid);
}
@@ -371,6 +398,7 @@ void sub_80BBB50(u8 taskid)
void sub_80BBB90(void)
{
s16 x, y;
+
ScriptContext2_Enable();
HideMapNamePopup();
sub_80BB764(&x, &y, 0x220);
@@ -383,7 +411,9 @@ void sub_80BBB90(void)
void sub_80BBBEC(u8 taskid)
{
s8 idx;
- if (!gPaletteFade.active) {
+
+ if (!gPaletteFade.active)
+ {
idx = 4 * (gUnknown_020387DC / 10);
Overworld_SetWarpDestination(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gUnknown_083D1374[idx + 2], gUnknown_083D1374[idx + 3]);
warp_in();
@@ -411,17 +441,29 @@ void sub_80BBCCC(u8 flagIn)
{
u16 curBaseId;
u16 x, y;
- if (CurrentMapIsSecretBase()) {
+
+ if (CurrentMapIsSecretBase())
+ {
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]);
+ 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]);
}
}
- if (curBaseId != 0) {
+ if (curBaseId != 0)
+ {
sub_80BB764(&x, &y, 0x220);
MapGridSetMetatileIdAt(x + 7, y + 7, 0xe21);
- } else if (flagIn == 1 && VarGet(VAR_0x4089) == 1) {
+ }
+ else if (flagIn == 1 && VarGet(VAR_0x4089) == 1)
+ {
sub_80BB764(&x, &y, 0x220);
MapGridSetMetatileIdAt(x + 7, y + 7, 0xe0a);
}
@@ -438,38 +480,47 @@ void sub_80BBDD0(void)
u8 permission;
u8 ndecor;
u16 curBase = VarGet(VAR_CURRENT_SECRET_BASE);
- if (!CurrentMapIsSecretBase()) {
+
+ if (!CurrentMapIsSecretBase())
+ {
roomdecor = gSaveBlock1.playerRoomDecor;
roomdecorpos = gSaveBlock1.playerRoomDecorPos;
ndecor = 12;
- } else {
+ }
+ else
+ {
roomdecor = gSaveBlock1.secretBases[curBase].decorations;
roomdecorpos = gSaveBlock1.secretBases[curBase].decorationPos;
ndecor = 16;
}
- for (decidx=0; decidx<ndecor; decidx++) {
- if (roomdecor[decidx] != DECOR_NONE) {
+ for (decidx = 0; decidx < ndecor; decidx++)
+ {
+ if (roomdecor[decidx] != DECOR_NONE)
+ {
permission = gDecorations[roomdecor[decidx]].permission;
if (permission == DECORPERM_SOLID_MAT)
{
- for (objid=0; objid<gMapHeader.events->mapObjectCount; objid++) {
+ for (objid = 0; objid < gMapHeader.events->mapObjectCount; objid++)
+ {
if (gMapHeader.events->mapObjects[objid].flagId == gSpecialVar_0x8004 + 0xAE)
break;
}
- if (objid == gMapHeader.events->mapObjectCount)
- continue;
- gSpecialVar_0x8006 = roomdecorpos[decidx] >> 4;
- gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF;
- metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7);
- if (sub_80572D8(metatile) == TRUE || sub_80572EC(metatile) == TRUE) {
- gSpecialVar_Result = gMapHeader.events->mapObjects[objid].graphicsId + VAR_0x3F20;
- VarSet(gSpecialVar_Result, gDecorations[roomdecor[decidx]].tiles[0]);
- gSpecialVar_Result = gMapHeader.events->mapObjects[objid].localId;
- FlagClear(gSpecialVar_0x8004 + 0xAE);
- show_sprite(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
- sub_805C0F8(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
- sub_805C78C(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
- gSpecialVar_0x8004 ++;
+ if (objid != gMapHeader.events->mapObjectCount)
+ {
+ gSpecialVar_0x8006 = roomdecorpos[decidx] >> 4;
+ gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF;
+ metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7);
+ if (sub_80572D8(metatile) == TRUE || sub_80572EC(metatile) == TRUE)
+ {
+ gSpecialVar_Result = gMapHeader.events->mapObjects[objid].graphicsId + VAR_0x3F20;
+ VarSet(gSpecialVar_Result, gDecorations[roomdecor[decidx]].tiles[0]);
+ gSpecialVar_Result = gMapHeader.events->mapObjects[objid].localId;
+ FlagClear(gSpecialVar_0x8004 + 0xAE);
+ show_sprite(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ sub_805C0F8(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
+ sub_805C78C(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ gSpecialVar_0x8004 ++;
+ }
}
}
}
@@ -485,8 +536,12 @@ void sub_80BBFA4(void)
void sub_80BBFD8(struct MapPosition *position, struct MapEvents *events)
{
s16 bgevtidx;
- for (bgevtidx=0; bgevtidx<events->bgEventCount; bgevtidx++) {
- if (events->bgEvents[bgevtidx].kind == 8 && position->x == events->bgEvents[bgevtidx].x + 7 && position->y == events->bgEvents[bgevtidx].y + 7) {
+
+ for (bgevtidx = 0; bgevtidx < events->bgEventCount; bgevtidx++)
+ {
+ if (events->bgEvents[bgevtidx].kind == 8 && position->x == events->bgEvents[bgevtidx].x + 7
+ && position->y == events->bgEvents[bgevtidx].y + 7)
+ {
gUnknown_020387DC = events->bgEvents[bgevtidx].bgUnion.secretBaseId;
break;
}
@@ -511,15 +566,15 @@ bool8 sub_80BC050(void)
void sub_80BC074(u8 taskid)
{
- switch (gTasks[taskid].data[0]) {
+ switch (gTasks[taskid].data[0])
+ {
case 0:
ScriptContext2_Enable();
gTasks[taskid].data[0] = 1;
break;
case 1:
- if (!gPaletteFade.active) {
+ if (!gPaletteFade.active)
gTasks[taskid].data[0] = 2;
- }
break;
case 2:
copy_saved_warp2_bank_and_enter_x_to_warp1(0x7E);
@@ -532,12 +587,14 @@ void sub_80BC074(u8 taskid)
}
}
-void sub_80BC0F8(void) {
+void sub_80BC0F8(void)
+{
CreateTask(sub_80BC074, 0);
FadeScreen(1, 0);
}
-void sub_80BC114(void) {
+void sub_80BC114(void)
+{
if (gSaveBlock1.secretBases[0].secretBaseId != gUnknown_020387DC)
gSpecialVar_Result = 1;
else
@@ -547,14 +604,17 @@ void sub_80BC114(void) {
u8 sub_80BC14C(u8 sbid)
{
s16 idx;
- for (idx=0; idx<MAX_SECRET_BASES; idx++) {
+
+ for (idx = 0; idx < MAX_SECRET_BASES; idx++)
+ {
if (gSaveBlock1.secretBases[idx].secretBaseId == sbid)
return idx;
}
return 0;
}
-u8 *sub_80BC190(u8 *dest, u8 arg1) { // 80bc190
+u8 *sub_80BC190(u8 *dest, u8 arg1)
+{
u8 local1;
u8 *str;
@@ -570,12 +630,14 @@ u8 *sub_80BC190(u8 *dest, u8 arg1) { // 80bc190
#endif
}
-u8 *GetSecretBaseMapName(u8 *dest) {
+u8 *GetSecretBaseMapName(u8 *dest)
+{
gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].secretBaseId;
return sub_80BC190(dest, VarGet(VAR_CURRENT_SECRET_BASE));
}
-void BufferSecretBaseOwnerName(void) {
+void BufferSecretBaseOwnerName(void)
+{
u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(VAR_CURRENT_SECRET_BASE)].playerName;
u8 *var1 = gStringVar1;
u8 var2 = sub_80BB8A8(var0);
@@ -583,13 +645,16 @@ void BufferSecretBaseOwnerName(void) {
*var3 = EOS;
}
-bool8 sub_80BC268(u8 i) { // 80bc268
+bool8 sub_80BC268(u8 i)
+{
if (gSaveBlock1.secretBases[i].sbr_field_1_6)
return TRUE;
- return FALSE;
+ else
+ return FALSE;
}
-u8 sub_80BC298(struct Pokemon *mon) { // 80bc298
+u8 sub_80BC298(struct Pokemon *mon)
+{
u16 evsum = GetMonData(mon, MON_DATA_HP_EV);
evsum += GetMonData(mon, MON_DATA_ATK_EV);
evsum += GetMonData(mon, MON_DATA_DEF_EV);
@@ -804,10 +869,11 @@ void sub_80BC474(void)
{
u16 eventId;
struct MapEvents *mapEvents = gMapHeader.events;
+
for (eventId = 0; eventId < mapEvents->bgEventCount; eventId++)
{
if (mapEvents->bgEvents[eventId].kind == 8
- && gSaveBlock1.secretBases[0].secretBaseId == mapEvents->bgEvents[eventId].bgUnion.secretBaseId)
+ && gSaveBlock1.secretBases[0].secretBaseId == mapEvents->bgEvents[eventId].bgUnion.secretBaseId)
{
u16 i;
s16 tileId = MapGridGetMetatileIdAt(mapEvents->bgEvents[eventId].x + 7, mapEvents->bgEvents[eventId].y + 7);
@@ -845,33 +911,23 @@ u8 sub_80BC538(void)
{
s16 secretBaseIndex;
u8 retVal = 0;
-
+
for (secretBaseIndex = 1; secretBaseIndex < MAX_SECRET_BASES; secretBaseIndex++)
{
if (sub_80BC268(secretBaseIndex) == TRUE)
- {
retVal++;
- }
}
-
return retVal;
}
void sub_80BC56C(void)
{
- u8 secretBaseIndex = sub_80BC14C(gUnknown_020387DC);
- if (sub_80BC268(secretBaseIndex) == TRUE)
- {
+ if (sub_80BC268(sub_80BC14C(gUnknown_020387DC)) == TRUE)
gSpecialVar_Result = 1;
- }
else if (sub_80BC538() > 9)
- {
gSpecialVar_Result = 2;
- }
else
- {
gSpecialVar_Result = 0;
- }
}
void sub_80BC5BC(void)
@@ -897,18 +953,15 @@ void Task_SecretBasePC_Registry(u8 taskId)
ScriptContext2_Enable();
ClearVerticalScrollIndicatorPalettes();
LoadScrollIndicatorPalette();
-
+
taskData = gTasks[taskId].data;
taskData[0] = sub_80BC538();
if (taskData[0] != 0)
{
- if (taskData[0] > 7) {
+ if (taskData[0] > 7)
taskData[3] = 7;
- }
else
- {
taskData[3] = taskData[0];
- }
taskData[1] = 0;
taskData[2] = 0;
@@ -964,7 +1017,9 @@ void sub_80BC6B0(u8 taskId)
Menu_BlankWindowRect(18, ((n << 25) + (1 << 26)) >> 24, 28, 18); // the shifts are needed to match
}
else
+ {
CreateVerticalScrollIndicators(BOTTOM_ARROW, 0xbc, 0x98);
+ }
if (taskData[2] == 0)
DestroyVerticalScrollIndicator(TOP_ARROW);
@@ -989,12 +1044,12 @@ void sub_80BC824(u8 taskId)
{
if (taskData[1])
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
taskData[1] = Menu_MoveCursor(-1);
}
else if (taskData[2])
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
taskData[2]--;
sub_80BC6B0(taskId);
}
@@ -1005,20 +1060,20 @@ void sub_80BC824(u8 taskId)
{
if (taskData[2] + taskData[1] != taskData[0])
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
taskData[2]++;
sub_80BC6B0(taskId);
}
}
else
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
taskData[1] = Menu_MoveCursor(1);
}
}
else if (gMain.newKeys & A_BUTTON)
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
if (taskData[1] + taskData[2] == taskData[0])
{
Menu_DestroyCursor();
@@ -1034,7 +1089,7 @@ void sub_80BC824(u8 taskId)
}
else if (gMain.newKeys & B_BUTTON)
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
Menu_DestroyCursor();
Menu_EraseWindowRect(0, 0, 29, 19);
sub_80BCC54(taskId);
@@ -1078,7 +1133,7 @@ void sub_80BC9E4(u8 taskId)
{
if (Menu_GetCursorPos())
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
Menu_MoveCursor(-1);
}
}
@@ -1086,18 +1141,18 @@ void sub_80BC9E4(u8 taskId)
{
if (Menu_GetCursorPos() != 1)
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
Menu_MoveCursor(1);
}
}
else if (gMain.newKeys & A_BUTTON)
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
gUnknown_083D13D4[Menu_GetCursorPos()].func(taskId);
}
else if (gMain.newKeys & B_BUTTON)
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
sub_80BCBF8(taskId);
}
}
@@ -1132,14 +1187,10 @@ void sub_80BCB10(u8 taskId)
taskData[0]--;
if (taskData[2] > 0)
- {
taskData[2]--;
- }
if (taskData[0] < 8)
- {
taskData[3]--;
- }
sub_80BC7D8(taskId);
gTasks[taskId].func = sub_80BC824;
@@ -1180,13 +1231,9 @@ void sub_80BCC54(u8 taskId)
DestroyVerticalScrollIndicator(BOTTOM_ARROW);
if (curBaseIndex == 0)
- {
ScriptContext1_SetupScript(gUnknown_0815F399);
- }
else
- {
ScriptContext1_SetupScript(gUnknown_0815F49A);
- }
DestroyTask(taskId);
}
@@ -1216,7 +1263,8 @@ const u8 *GetSecretBaseTrainerLoseText(void)
void unref_sub_80BCD7C(u8 secretBaseIndex)
{
u16 i;
- for (i = 0; i == 0; i++)
+
+ for (i = 0; i < 1; i++)
{
gSaveBlock1.secretBases[secretBaseIndex].partyPersonality[i] = i + 1;
gSaveBlock1.secretBases[secretBaseIndex].partyMoves[i * 4] = i + 1;
@@ -1230,8 +1278,8 @@ void unref_sub_80BCD7C(u8 secretBaseIndex)
void sub_80BCE1C(void)
{
u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE);
- sub_810FB10(1);
+ sub_810FB10(1);
CreateSecretBaseEnemyParty(&gSaveBlock1.secretBases[curBaseIndex]);
}
@@ -1249,9 +1297,7 @@ void sub_80BCE90()
u8 i;
for (i = 0; i < MAX_SECRET_BASES; i++)
- {
gSaveBlock1.secretBases[i].sbr_field_1_5 = 0;
- }
FlagSet(FLAG_DAILY_UNKNOWN_8C2);
}
@@ -1281,28 +1327,18 @@ void sub_80BCF1C(u8 taskId)
behavior = MapGridGetMetatileBehaviorAt(x, y);
if (sub_8057350(behavior) == TRUE)
- {
DoYellowCave4Sparkle();
- }
else if (sub_8057314(behavior) == TRUE)
- {
sub_80C68A4(MapGridGetMetatileIdAt(x, y), x, y);
- }
else if (sub_8057328(behavior) == TRUE)
- {
sub_80C6A54(x, y);
- }
else if (sub_805733C(behavior) == TRUE)
- {
DoDecorationSoundEffect(MapGridGetMetatileIdAt(x, y));
- }
}
break;
case 2:
if (!FieldEffectActiveListContains(taskData[4]))
- {
taskData[1] = 1;
- }
break;
}
}
@@ -1320,9 +1356,7 @@ bool8 sub_80BD070(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB
for (i = 0; i < 4; i++)
{
if (baseA->trainerId[i] != baseB->trainerId[i])
- {
return FALSE;
- }
}
return TRUE;
@@ -1335,9 +1369,7 @@ bool8 sub_80BD0A0(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB
for (i = 0; i < OT_NAME_LENGTH && (baseA->playerName[i] != 0xFF || baseB->playerName[i] != 0xFF); i++)
{
if (baseA->playerName[i] != baseB->playerName[i])
- {
return FALSE;
- }
}
return TRUE;
@@ -1346,12 +1378,9 @@ bool8 sub_80BD0A0(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB
bool8 sub_80BD0EC(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB)
{
if (baseA->gender == baseB->gender && sub_80BD070(baseA, baseB) && sub_80BD0A0(baseA, baseB))
- {
return TRUE;
- }
-
-
- return FALSE;
+ else
+ return FALSE;
}
s16 sub_80BD12C(u8 secretBaseId)
@@ -1361,9 +1390,7 @@ s16 sub_80BD12C(u8 secretBaseId)
for (i = 0; i < MAX_SECRET_BASES; i++)
{
if (gSaveBlock1.secretBases[i].secretBaseId == secretBaseId)
- {
return i;
- }
}
return -1;
@@ -1376,9 +1403,7 @@ u8 sub_80BD170(void)
for (i = 1; i < MAX_SECRET_BASES; i++)
{
if (gSaveBlock1.secretBases[i].secretBaseId == 0)
- {
return i;
- }
}
return 0;
@@ -1391,9 +1416,7 @@ u8 sub_80BD1B0(void)
for (i = 1; i < MAX_SECRET_BASES; i++)
{
if (gSaveBlock1.secretBases[i].sbr_field_1_6 == 0 && gSaveBlock1.secretBases[i].sbr_field_1_0 == 0)
- {
return i;
- }
}
return 0;
@@ -1404,9 +1427,7 @@ u8 sub_80BD1FC(struct SecretBaseRecord *secretBase)
s16 secretBaseIndex;
if (secretBase->secretBaseId == 0)
- {
return 0;
- }
secretBaseIndex = sub_80BD12C(secretBase->secretBaseId);
if (secretBaseIndex != 0)
@@ -1414,11 +1435,9 @@ u8 sub_80BD1FC(struct SecretBaseRecord *secretBase)
if (secretBaseIndex != -1)
{
if (gSaveBlock1.secretBases[secretBaseIndex].sbr_field_1_0 == 1)
- {
return 0;
- }
if (gSaveBlock1.secretBases[secretBaseIndex].sbr_field_1_6 != 2
- || secretBase->sbr_field_1_0 == 1)
+ || secretBase->sbr_field_1_0 == 1)
{
sub_80BD034(secretBaseIndex, secretBase);
return secretBaseIndex;
@@ -1456,7 +1475,7 @@ void sub_80BD280(void)
for (j = i + 1; j < MAX_SECRET_BASES; j++)
{
if ((!secretBases[i].sbr_field_1_6 && secretBases[j].sbr_field_1_6 == 1)
- || (secretBases[i].sbr_field_1_6 == 2 && secretBases[j].sbr_field_1_6 != 2))
+ || (secretBases[i].sbr_field_1_6 == 2 && secretBases[j].sbr_field_1_6 != 2))
{
temp = secretBases[i];
secretBases[i] = secretBases[j];
@@ -1473,9 +1492,7 @@ void sub_80BD328(struct SecretBaseRecord *secretBases, u8 b)
for (i = 1; i < MAX_SECRET_BASES; i++)
{
if (secretBases[i].sbr_field_1_6 == b)
- {
sub_80BD1FC(&secretBases[i]);
- }
}
}
@@ -1540,9 +1557,7 @@ void sub_80BD3DC(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
}
if (var1 == 7)
- {
break;
- }
}
}
@@ -1588,16 +1603,12 @@ void sub_80BD514(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
if (basesA[i].secretBaseId)
{
if (basesA[i].sbr_field_1_6 == 1)
- {
basesA[i].sbr_field_1_0 = 1;
- }
if (!sub_80BD494(&basesA[i], basesB, i))
{
if (!sub_80BD494(&basesA[i], basesC, i))
- {
sub_80BD494(&basesA[i], basesD, i);
- }
}
}
}
@@ -1609,9 +1620,7 @@ void sub_80BD514(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
basesB[i].sbr_field_1_5 = 0;
if (!sub_80BD494(&basesB[i], basesC, i))
- {
sub_80BD494(&basesB[i], basesD, i);
- }
}
}
@@ -1624,9 +1633,7 @@ void sub_80BD514(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
}
if (basesD[i].secretBaseId)
- {
basesD[i].sbr_field_1_5 = 0;
- }
}
}
@@ -1648,183 +1655,16 @@ void sub_80BD610(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
sub_80BD328(basesC, 0);
}
-#if DEBUG
-__attribute__((naked))
-void sub_80BD674(void *playerRecords, u32 size, u8 c)
-{
- asm("\
- push {r4, r5, r6, r7, lr}\n\
- add r6, r0, #0\n\
- add r5, r1, #0\n\
- lsl r2, r2, #0x18\n\
- lsr r7, r2, #0x18\n\
- ldr r0, ._503 @ gUnknown_020297ED\n\
- ldrb r0, [r0]\n\
- cmp r0, #0\n\
- bne ._498 @cond_branch\n\
- mov r0, #0x60\n\
- bl FlagGet\n\
- lsl r0, r0, #0x18\n\
- cmp r0, #0\n\
- bne ._498 @cond_branch\n\
- b ._520\n\
-._498:\n\
- bl GetLinkPlayerCount\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- cmp r0, #0x2\n\
- beq ._500 @cond_branch\n\
- cmp r0, #0x3\n\
- beq ._501 @cond_branch\n\
- b ._505\n\
-._504:\n\
- .align 2, 0\n\
-._503:\n\
- .word gUnknown_020297ED\n\
-._500:\n\
- lsl r4, r5, #0x1\n\
- add r0, r6, r4\n\
- mov r1, #0x0\n\
- add r2, r5, #0\n\
- bl memset\n\
- add r4, r4, r5\n\
- add r4, r6, r4\n\
- add r0, r4, #0\n\
- mov r1, #0x0\n\
- add r2, r5, #0\n\
- bl memset\n\
- b ._505\n\
-._501:\n\
- lsl r0, r5, #0x1\n\
- add r0, r0, r5\n\
- add r0, r6, r0\n\
- mov r1, #0x0\n\
- add r2, r5, #0\n\
- bl memset\n\
-._505:\n\
- cmp r7, #0x1\n\
- beq ._506 @cond_branch\n\
- cmp r7, #0x1\n\
- bgt ._507 @cond_branch\n\
- cmp r7, #0\n\
- beq ._508 @cond_branch\n\
- b ._515\n\
-._507:\n\
- cmp r7, #0x2\n\
- beq ._510 @cond_branch\n\
- cmp r7, #0x3\n\
- beq ._511 @cond_branch\n\
- b ._515\n\
-._508:\n\
- add r0, r6, r5\n\
- lsl r2, r5, #0x1\n\
- add r1, r6, r2\n\
- add r2, r2, r5\n\
- add r2, r6, r2\n\
- bl sub_80BD610\n\
- b ._515\n\
-._506:\n\
- lsl r1, r5, #0x1\n\
- add r0, r6, r1\n\
- add r1, r1, r5\n\
- add r1, r6, r1\n\
- add r2, r6, #0\n\
- bl sub_80BD610\n\
- b ._515\n\
-._510:\n\
- lsl r0, r5, #0x1\n\
- add r0, r0, r5\n\
- add r0, r6, r0\n\
- add r2, r6, r5\n\
- add r1, r6, #0\n\
- bl sub_80BD610\n\
- b ._515\n\
-._511:\n\
- add r1, r6, r5\n\
- lsl r2, r5, #0x1\n\
- add r2, r6, r2\n\
- add r0, r6, #0\n\
- bl sub_80BD610\n\
-._515:\n\
- mov r3, #0x1\n\
- ldr r6, ._521 @ gSaveBlock1\n\
- mov r5, #0x10\n\
- neg r5, r5\n\
- ldr r4, ._521 + 4 @ 0x1a09\n\
-._517:\n\
- lsl r0, r3, #0x2\n\
- add r0, r0, r3\n\
- lsl r0, r0, #0x5\n\
- add r0, r0, r6\n\
- add r2, r0, r4\n\
- ldrb r1, [r2]\n\
- lsl r0, r1, #0x1c\n\
- lsr r0, r0, #0x1c\n\
- cmp r0, #0x1\n\
- bne ._516 @cond_branch\n\
- mov r0, #0x3f\n\
- and r0, r0, r1\n\
- mov r1, #0x40\n\
- orr r0, r0, r1\n\
- and r0, r0, r5\n\
- strb r0, [r2]\n\
-._516:\n\
- add r0, r3, #1\n\
- lsl r0, r0, #0x10\n\
- lsr r3, r0, #0x10\n\
- cmp r3, #0x13\n\
- bls ._517 @cond_branch\n\
- bl sub_80BD280\n\
- mov r3, #0x1\n\
- ldr r4, ._521 @ gSaveBlock1\n\
- ldr r6, ._521 + 4 @ 0x1a09\n\
- add r7, r4, #0\n\
- mov r5, #0x3f\n\
-._519:\n\
- lsl r0, r3, #0x2\n\
- add r0, r0, r3\n\
- lsl r0, r0, #0x5\n\
- add r0, r0, r4\n\
- add r2, r0, r6\n\
- ldrb r1, [r2]\n\
- lsr r0, r1, #0x6\n\
- cmp r0, #0x2\n\
- bne ._518 @cond_branch\n\
- add r0, r5, #0\n\
- and r0, r0, r1\n\
- strb r0, [r2]\n\
-._518:\n\
- add r0, r3, #1\n\
- lsl r0, r0, #0x10\n\
- lsr r3, r0, #0x10\n\
- cmp r3, #0x13\n\
- bls ._519 @cond_branch\n\
- ldr r0, ._521 + 8 @ 0x1a16\n\
- add r2, r7, r0\n\
- ldrh r1, [r2]\n\
- ldr r0, ._521 + 12 @ 0xffff\n\
- cmp r1, r0\n\
- beq ._520 @cond_branch\n\
- add r0, r1, #1\n\
- strh r0, [r2]\n\
-._520:\n\
- pop {r4, r5, r6, r7}\n\
- pop {r0}\n\
- bx r0\n\
-._522:\n\
- .align 2, 0\n\
-._521:\n\
- .word gSaveBlock1\n\
- .word 0x1a09\n\
- .word 0x1a16\n\
- .word 0xffff");
-}
-#else
void sub_80BD674(void *playerRecords, u32 size, u8 c)
{
- if (FlagGet(FLAG_RECEIVED_SECRET_POWER))
+ if (
+#if DEBUG
+ gUnknown_020297ED != 0 ||
+#endif
+ FlagGet(FLAG_RECEIVED_SECRET_POWER))
{
u16 i;
+
u8 numLinkedPlayers = GetLinkPlayerCount();
switch (numLinkedPlayers)
{
@@ -1867,15 +1707,10 @@ void sub_80BD674(void *playerRecords, u32 size, u8 c)
for (i = 1; i < MAX_SECRET_BASES; i++)
{
if (gSaveBlock1.secretBases[i].sbr_field_1_6 == 2)
- {
gSaveBlock1.secretBases[i].sbr_field_1_6 = 0;
- }
}
if (gSaveBlock1.secretBases[0].sbr_field_e != 0xFFFF)
- {
gSaveBlock1.secretBases[0].sbr_field_e++;
- }
}
}
-#endif
diff --git a/src/field/shop.c b/src/field/shop.c
index 0f53eef17..87dbbeb97 100644
--- a/src/field/shop.c
+++ b/src/field/shop.c
@@ -115,7 +115,7 @@ static void SetShopMenuCallback(void *callbackPtr)
gMartInfo.callback = callbackPtr;
}
-static void SetShopItemsForSale(u16 *items)
+static void SetShopItemsForSale(const u16 *items)
{
u16 i = 0;
@@ -153,13 +153,9 @@ static void Task_DoBuySellMenu(u8 taskId)
{
PlaySE(SE_SELECT);
if (gMartInfo.martType == MART_TYPE_0)
- {
sBuySellQuitMenuActions[gMartBuySellOptionList[gMartInfo.cursor]].func(taskIdConst);
- }
else
- {
sBuySellQuitMenuActions[gMartBuyNoSellOptionList[gMartInfo.cursor]].func(taskIdConst);
- }
}
else if (gMain.newKeys & B_BUTTON)
{
@@ -366,15 +362,15 @@ static void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s32 var4)
switch (tempVar4)
{
- case 0: // _080B335C
+ case 0:
BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3);
BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4);
break;
- case 1: // _080B3364
+ case 1:
BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3);
BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4);
break;
- case 2: // _080B3398
+ case 2:
BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3);
BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4);
break;
@@ -550,7 +546,7 @@ static void Shop_DisplayNormalPriceInList(u16 itemId, u8 var2, bool32 hasControl
{
u8 *stringPtr = gStringVar1;
- if (hasControlCode != FALSE)
+ if (hasControlCode)
{
stringPtr[0] = EXT_CTRL_CODE_BEGIN;
stringPtr[1] = 0x1;
@@ -563,7 +559,7 @@ static void Shop_DisplayNormalPriceInList(u16 itemId, u8 var2, bool32 hasControl
sub_8072A18(&gStringVar1[0], 0x70, var2 << 3, 0x58, 0x1);
stringPtr = gStringVar1;
- if (hasControlCode != FALSE)
+ if (hasControlCode)
stringPtr = &gStringVar1[3];
GetMoneyAmountText(stringPtr, (ItemId_GetPrice(itemId) >> GetPriceReduction(1)), 0x4);
@@ -574,7 +570,7 @@ static void Shop_DisplayDecorationPriceInList(u16 itemId, u8 var2, bool32 hasCon
{
u8 *stringPtr = gStringVar1;
- if (hasControlCode != FALSE)
+ if (hasControlCode)
{
stringPtr[0] = EXT_CTRL_CODE_BEGIN;
stringPtr[1] = 0x1;
@@ -586,7 +582,7 @@ static void Shop_DisplayDecorationPriceInList(u16 itemId, u8 var2, bool32 hasCon
sub_8072A18(&gStringVar1[0], 0x70, var2 << 3, 0x58, 0x1);
stringPtr = gStringVar1;
- if (hasControlCode != FALSE)
+ if (hasControlCode)
stringPtr = &gStringVar1[3];
// some names are the maximum string length for a shop item. Because there is no room for
@@ -632,8 +628,10 @@ static void Shop_PrintItemDescText(void)
0x4, 0x68, 0x68, 0x30, 0);
}
else
+ {
sub_8072AB0(gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].description,
0x4, 0x68, 0x68, 0x30, 0);
+ }
}
else
{
@@ -687,7 +685,9 @@ static void Task_DoItemPurchase(u8 taskId)
Task_UpdatePurchaseHistory(taskId);
}
else
+ {
DisplayItemMessageOnField(taskId, gOtherText_NoRoomFor, Shop_DoPricePrintAndReturnToBuyMenu, 0xC3E1);
+ }
}
else // a normal mart is only type 0, so types 1 and 2 are decoration marts.
{
@@ -706,7 +706,9 @@ static void Task_DoItemPurchase(u8 taskId)
}
}
else
+ {
DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, Shop_DoPricePrintAndReturnToBuyMenu, 0xC3E1);
+ }
}
static void Shop_DoYesNoPurchase(u8 taskId)
@@ -1129,19 +1131,17 @@ static void Shop_DoCursorAction(u8 taskId)
ConvertIntToDecimalStringN(gStringVar2, gMartTotalCost, 0, 0x8);
if (gMartInfo.martType == MART_TYPE_1)
- {
StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe2);
- }
else
- {
StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe3);
- }
DisplayItemMessageOnField(taskId, gStringVar4, Shop_DoYesNoPurchase, 0xC3E1);
}
}
}
else
+ {
Task_ExitBuyMenu(taskId);
+ }
}
else if (gMain.newKeys & B_BUTTON) // go back to buy/sell/exit menu
{
@@ -1240,22 +1240,12 @@ void Shop_CreateDecorationShop2Menu(u16 *itemList)
}
#if DEBUG
-__attribute__((naked))
+
void debug_sub_80C2818(void)
{
- asm("\
- push {lr}\n\
- mov r0, #0x0\n\
- bl CreateShopMenu\n\
- ldr r0, ._290 @ gMartBuyNoSellOptionList\n\
- bl SetShopItemsForSale\n\
- mov r0, #0x0\n\
- bl SetShopMenuCallback\n\
- pop {r0}\n\
- bx r0\n\
-._291:\n\
- .align 2, 0\n\
-._290:\n\
- .word gMartBuyNoSellOptionList+0x3");
+ CreateShopMenu(MART_TYPE_0);
+ SetShopItemsForSale(gUnusedMartArray);
+ SetShopMenuCallback(NULL);
}
+
#endif
diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c
index 2c97c146d..8075f24e4 100644
--- a/src/field/slot_machine.c
+++ b/src/field/slot_machine.c
@@ -8,6 +8,7 @@
#include "sound.h"
#include "main.h"
#include "slot_machine.h"
+#include "string_util.h"
#include "decompress.h"
#include "trig.h"
#include "graphics.h"
@@ -17,6 +18,93 @@
#include "menu.h"
#include "ewram.h"
+enum
+{
+ SLOT_MACHINE_TAG_7_RED,
+ SLOT_MACHINE_TAG_7_BLUE,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_REPLAY
+};
+
+enum
+{
+ SLOT_MACHINE_MATCHED_1CHERRY,
+ SLOT_MACHINE_MATCHED_2CHERRY,
+ SLOT_MACHINE_MATCHED_REPLAY,
+ SLOT_MACHINE_MATCHED_LOTAD,
+ SLOT_MACHINE_MATCHED_AZURILL,
+ SLOT_MACHINE_MATCHED_POWER,
+ SLOT_MACHINE_MATCHED_777_MIXED,
+ SLOT_MACHINE_MATCHED_777_RED,
+ SLOT_MACHINE_MATCHED_777_BLUE,
+ SLOT_MACHINE_MATCHED_NONE
+};
+
+struct SlotMachineEwramStruct
+{
+ /*0x00*/ u8 state;
+ /*0x01*/ u8 unk01;
+ /*0x02*/ u8 pikaPower;
+ /*0x03*/ u8 unk03;
+ /*0x04*/ u8 unk04;
+ /*0x05*/ u8 unk05;
+ /*0x06*/ u8 unk06;
+ /*0x07*/ u8 unk07;
+ /*0x08*/ u16 matchedSymbols;
+ /*0x0A*/ u8 unk0A;
+ /*0x0B*/ u8 unk0B;
+ /*0x0C*/ s16 coins;
+ /*0x0E*/ s16 payout;
+ /*0x10*/ s16 unk10;
+ /*0x12*/ s16 bet;
+ /*0x14*/ s16 unk14;
+ /*0x16*/ s16 unk16;
+ /*0x18*/ s16 unk18;
+ /*0x1A*/ s16 unk1A;
+ /*0x1C*/ s16 unk1C[3];
+ /*0x22*/ u16 unk22[3];
+ /*0x28*/ s16 reelPositions[3];
+ /*0x2E*/ s16 unk2E[3];
+ /*0x34*/ s16 unk34[3];
+ /*0x3A*/ u8 reelTasks[3];
+ /*0x3D*/ u8 unk3D;
+ /*0x3E*/ u8 unk3E;
+ /*0x3F*/ u8 unk3F;
+ /*0x40*/ u8 unk40;
+ /*0x41*/ u8 unk41;
+ /*0x42*/ u8 unk42;
+ /*0x43*/ u8 unk43;
+ /*0x44*/ u8 unk44[5];
+ /*0x49*/ u8 unk49[2];
+ /*0x49*/ u8 unk4B[3];
+ /*0x4E*/ u8 unk4E[2];
+ /*0x50*/ u8 unk50[2];
+ /*0x52*/ u8 unk52[2];
+ /*0x54*/ u8 unk54[4];
+ /*0x58*/ u16 win0h;
+ /*0x5a*/ u16 win0v;
+ /*0x5c*/ u16 winIn;
+ /*0x5e*/ u16 winOut;
+ /*0x60*/ u16 backupMapMusic;
+ /*0x64*/ MainCallback prevMainCb;
+#if DEBUG
+ u32 unk68;
+ u32 unk6C;
+ u32 unk70;
+ u32 unk74;
+ u32 unk78;
+ u32 unk7C;
+ u32 unk80;
+ u32 unk84;
+ u32 unk88;
+ u32 unk8C;
+ s32 unk90;
+#endif
+};
+
struct UnkStruct1
{
/*0x00*/ u8 unk00;
@@ -30,9 +118,6 @@ struct UnkStruct1
#define SLOTMACHINE_GFX_TILES 236
#endif
-// TODO: figure out which functions are static and which are not.
-#define static
-
static void CB2_SlotMachineSetup(void);
static void CB2_SlotMachineLoop(void);
static void PlaySlotMachine_Internal(u8 arg0, MainCallback cb);
@@ -79,7 +164,9 @@ 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);
+#if DEBUG
static bool8 debug_sub_8116E74(struct Task *);
+#endif
static void sub_8102484(void);
static void sub_81024F0(void);
static bool8 sub_8102540(void);
@@ -227,12 +314,21 @@ static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4);
static void sub_81065DC(void);
#if DEBUG
-__attribute__((section(".bss"))) u8 unk_debug_bss_1_0 = 0;
-__attribute__((section(".bss"))) u8 unk_debug_bss_1_1 = 0;
-__attribute__((section(".bss"))) u8 unk_debug_bss_1_2 = 0;
-__attribute__((section(".bss"))) u8 unk_debug_bss_1_3 = 0;
-__attribute__((section(".bss"))) u8 unk_debug_bss_1_4 = 0;
-__attribute__((section(".bss"))) u32 unk_debug_bss_1_8 = 0;
+static void debug_sub_811B5D0(void);
+static void debug_sub_811B620(void);
+static void debug_sub_811B5B4(s32 *, s32);
+static void debug_sub_811B894(void);
+static u8 debug_sub_811B634(void);
+static void debug_sub_811B654(u8 taskId);
+#endif
+
+#if DEBUG
+static u8 unk_debug_bss_1_0;
+static u8 unk_debug_bss_1_1;
+static u8 unk_debug_bss_1_2;
+static u8 unk_debug_bss_1_3;
+static u8 unk_debug_bss_1_4;
+static u32 unk_debug_bss_1_8;
#endif
static const struct UnkStruct1 *const gUnknown_083ED048[];
@@ -391,135 +487,6 @@ static void SlotMachineSetup_2_1(void)
static const s16 gUnknown_083ECCF8[][2];
-#if DEBUG
-__attribute__((naked))
-static void SlotMachineSetup_0_1(void)
-{
- asm("\
- push {r4, r5, r6, r7, lr}\n\
- mov r7, sl\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5, r6, r7}\n\
- bl sub_81019EC\n\
- ldr r5, ._43 @ \n\
- mov r4, #0x0\n\
- strb r4, [r5]\n\
- strb r4, [r5, #0x2]\n\
- bl Random\n\
- mov r1, #0x1\n\
- and r1, r1, r0\n\
- strb r1, [r5, #0x3]\n\
- strb r4, [r5, #0x4]\n\
- mov r0, #0x0\n\
- strh r4, [r5, #0x8]\n\
- strb r0, [r5, #0xa]\n\
- strb r0, [r5, #0xb]\n\
- ldr r0, ._43 + 4 @ \n\
- ldr r1, ._43 + 8 @ \n\
- add r0, r0, r1\n\
- ldrh r0, [r0]\n\
- strh r0, [r5, #0xc]\n\
- strh r4, [r5, #0xe]\n\
- strh r4, [r5, #0x10]\n\
- strh r4, [r5, #0x12]\n\
- strh r4, [r5, #0x18]\n\
- mov r0, #0x8\n\
- strh r0, [r5, #0x1a]\n\
- add r1, r5, #0\n\
- add r1, r1, #0x58\n\
- mov r0, #0xf0\n\
- strh r0, [r1]\n\
- add r1, r1, #0x2\n\
- mov r0, #0xa0\n\
- strh r0, [r1]\n\
- add r0, r5, #0\n\
- add r0, r0, #0x5c\n\
- mov r1, #0x3f\n\
- strh r1, [r0]\n\
- add r0, r0, #0x2\n\
- strh r1, [r0]\n\
- bl GetCurrentMapMusic\n\
- add r1, r5, #0\n\
- add r1, r1, #0x60\n\
- strh r0, [r1]\n\
- mov r7, #0x0\n\
- add r6, r5, #0\n\
- ldr r2, ._43 + 12 @ \n\
- mov sl, r2\n\
- mov r0, #0x1c\n\
- add r0, r0, r6\n\
- mov r9, r0\n\
-._41:\n\
- lsl r5, r7, #0x1\n\
- mov r1, #0x22\n\
- add r1, r1, r6\n\
- mov r8, r1\n\
- add r1, r5, r1\n\
- mov r0, #0x0\n\
- strh r0, [r1]\n\
- add r4, r6, #0\n\
- add r4, r4, #0x28\n\
- add r4, r5, r4\n\
- ldrb r0, [r6, #0x3]\n\
- lsl r0, r0, #0x1\n\
- lsl r1, r7, #0x2\n\
- add r0, r0, r1\n\
- add r0, r0, sl\n\
- mov r2, #0x0\n\
- ldsh r0, [r0, r2]\n\
- mov r1, #0x15\n\
- bl __modsi3\n\
- strh r0, [r4]\n\
- add r5, r5, r9\n\
- mov r1, #0x0\n\
- ldsh r0, [r4, r1]\n\
- lsl r1, r0, #0x1\n\
- add r1, r1, r0\n\
- lsl r1, r1, #0x3\n\
- mov r2, #0xfc\n\
- lsl r2, r2, #0x1\n\
- add r0, r2, #0\n\
- sub r0, r0, r1\n\
- strh r0, [r5]\n\
- mov r1, #0x0\n\
- ldsh r0, [r5, r1]\n\
- add r1, r2, #0\n\
- bl __modsi3\n\
- strh r0, [r5]\n\
- add r0, r7, #1\n\
- lsl r0, r0, #0x18\n\
- lsr r7, r0, #0x18\n\
- cmp r7, #0x2\n\
- bls ._41 @cond_branch\n\
- bl debug_sub_811B5D0\n\
- ldr r0, ._43 + 16 @ \n\
- ldrb r0, [r0]\n\
- cmp r0, #0\n\
- beq ._42 @cond_branch\n\
- mov r1, r8\n\
- sub r1, r1, #0x22\n\
- mov r0, #0xfa\n\
- lsl r0, r0, #0x2\n\
- strh r0, [r1, #0xc]\n\
-._42:\n\
- pop {r3, r4, r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov sl, r5\n\
- pop {r4, r5, r6, r7}\n\
- pop {r0}\n\
- bx r0\n\
-._44:\n\
- .align 2, 0\n\
-._43:\n\
- .word +0x2000000\n\
- .word gSaveBlock1\n\
- .word 0x494\n\
- .word gUnknown_083ECCF8\n\
- .word unk_debug_bss_1_1");
-}
-#else
static void SlotMachineSetup_0_1(void)
{
u8 i;
@@ -550,8 +517,12 @@ static void SlotMachineSetup_0_1(void)
eSlotMachine->unk1C[i] = 0x1f8 - eSlotMachine->reelPositions[i] * 24;
eSlotMachine->unk1C[i] %= 0x1f8;
}
-}
+#if DEBUG
+ debug_sub_811B5D0();
+ if (unk_debug_bss_1_1 != 0)
+ eSlotMachine->coins = 1000;
#endif
+}
static void SlotMachineSetup_3_0(void)
{
@@ -634,7 +605,8 @@ static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) =
static void sub_8101D24(u8 taskId)
{
- while (gUnknown_083ECAAC[eSlotMachine->state](gTasks + taskId));
+ while (gUnknown_083ECAAC[eSlotMachine->state](gTasks + taskId))
+ ;
}
static bool8 sub_8101D5C(struct Task *task)
@@ -648,9 +620,7 @@ static bool8 sub_8101D5C(struct Task *task)
static bool8 sub_8101D8C(struct Task *task)
{
if (!gPaletteFade.active)
- {
eSlotMachine->state++;
- }
return FALSE;
}
@@ -676,265 +646,53 @@ static bool8 sub_8101DB0(struct Task *task)
static bool8 sub_8101DF4(struct Task *task)
{
if (sub_8104E18())
- {
eSlotMachine->state = 4;
- }
return FALSE;
}
-#if DEBUG
-__attribute__((naked))
-static bool8 sub_8101E10(struct Task *task)
-{
- asm("\
- push {lr}\n\
- mov r0, #0x0\n\
- bl sub_8104CAC\n\
- ldr r2, ._70 @ \n\
- mov r0, #0x5\n\
- strb r0, [r2]\n\
- ldr r0, ._70 + 4 @ \n\
- ldrb r0, [r0]\n\
- cmp r0, #0\n\
- beq ._67 @cond_branch\n\
- ldr r0, ._70 + 8 @ \n\
- ldrb r0, [r0]\n\
- cmp r0, #0\n\
- bne ._69 @cond_branch\n\
-._67:\n\
- mov r0, #0xc\n\
- ldsh r1, [r2, r0]\n\
- ldr r0, ._70 + 12 @ \n\
- cmp r1, r0\n\
- ble ._69 @cond_branch\n\
- mov r0, #0x17\n\
- strb r0, [r2]\n\
-._69:\n\
- mov r0, #0x1\n\
- pop {r1}\n\
- bx r1\n\
-._71:\n\
- .align 2, 0\n\
-._70:\n\
- .word +0x2000000\n\
- .word unk_debug_bss_1_1\n\
- .word unk_debug_bss_1_4\n\
- .word 0x270e");
-}
-#else
static bool8 sub_8101E10(struct Task *task)
{
sub_8104CAC(0);
eSlotMachine->state = 5;
- if (eSlotMachine->coins >= 9999)
- {
+ if (
+#if DEBUG
+ (unk_debug_bss_1_1 == 0 || unk_debug_bss_1_4 == 0) &&
+#endif
+ eSlotMachine->coins >= 9999)
eSlotMachine->state = 23;
- }
return TRUE;
}
-#endif
-#if DEBUG
-__attribute__((naked))
-static bool8 sub_8101E3C(struct Task *task)
-{
- asm("\
- push {r4, r5, lr}\n\
- ldr r0, ._77 @ unk_debug_bss_1_1\n\
- ldrb r1, [r0]\n\
- add r3, r0, #0\n\
- ldr r5, ._77 + 4 @ gMain\n\
- cmp r1, #0\n\
- beq ._76 @cond_branch\n\
- ldr r2, ._77 + 8 @ unk_debug_bss_1_4\n\
- ldrb r0, [r2]\n\
- cmp r0, #0\n\
- beq ._76 @cond_branch\n\
- ldr r4, ._77 + 12 @ \n\
- mov r1, #0xc\n\
- ldsh r0, [r4, r1]\n\
- cmp r0, #0x3\n\
- ble ._74 @cond_branch\n\
- ldrh r1, [r5, #0x2c]\n\
- mov r0, #0x2\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._75 @cond_branch\n\
-._74:\n\
- mov r0, #0x0\n\
- strb r0, [r2]\n\
- b ._76\n\
-._78:\n\
- .align 2, 0\n\
-._77:\n\
- .word unk_debug_bss_1_1\n\
- .word gMain\n\
- .word unk_debug_bss_1_4\n\
- .word +0x2000000\n\
-._75:\n\
- mov r0, #0x0\n\
- bl sub_8103D50\n\
- mov r0, #0x1\n\
- bl sub_8103D50\n\
- mov r0, #0x2\n\
- bl sub_8103D50\n\
- ldrh r0, [r4, #0xc]\n\
- sub r0, r0, #0x3\n\
- strh r0, [r4, #0xc]\n\
- mov r0, #0x3\n\
- strh r0, [r4, #0x12]\n\
- mov r0, #0x9\n\
- strb r0, [r4]\n\
- b ._102\n\
-._76:\n\
- ldrb r0, [r3]\n\
- cmp r0, #0\n\
- beq ._81 @cond_branch\n\
- ldrh r1, [r5, #0x2e]\n\
- mov r0, #0x8\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._81 @cond_branch\n\
- bl debug_sub_811B620\n\
- ldr r1, ._83 @ \n\
- mov r0, #0x1d\n\
- strb r0, [r1]\n\
- b ._102\n\
-._84:\n\
- .align 2, 0\n\
-._83:\n\
- .word +0x2000000\n\
-._81:\n\
- ldrh r1, [r5, #0x2e]\n\
- mov r0, #0x4\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._85 @cond_branch\n\
- mov r0, #0x0\n\
- bl sub_8104AB8\n\
- ldr r1, ._87 @ \n\
- mov r0, #0x8\n\
- strb r0, [r1]\n\
- b ._102\n\
-._88:\n\
- .align 2, 0\n\
-._87:\n\
- .word +0x2000000\n\
-._85:\n\
- mov r0, #0x80\n\
- lsl r0, r0, #0x1\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._89 @cond_branch\n\
- ldr r2, ._94 @ \n\
- mov r3, #0xc\n\
- ldsh r0, [r2, r3]\n\
- sub r0, r0, #0x3\n\
- mov r3, #0x12\n\
- ldsh r1, [r2, r3]\n\
- add r0, r0, r1\n\
- cmp r0, #0\n\
- blt ._90 @cond_branch\n\
- ldrh r4, [r2, #0x12]\n\
- add r0, r1, #0\n\
- cmp r0, #0x2\n\
- bgt ._91 @cond_branch\n\
-._92:\n\
- lsl r0, r4, #0x18\n\
- lsr r0, r0, #0x18\n\
- bl sub_8103D50\n\
- lsl r0, r4, #0x10\n\
- mov r2, #0x80\n\
- lsl r2, r2, #0x9\n\
- add r0, r0, r2\n\
- lsr r4, r0, #0x10\n\
- asr r0, r0, #0x10\n\
- cmp r0, #0x2\n\
- ble ._92 @cond_branch\n\
-._91:\n\
- ldr r1, ._94 @ \n\
- ldrh r0, [r1, #0xc]\n\
- sub r0, r0, #0x3\n\
- ldrh r3, [r1, #0x12]\n\
- add r0, r0, r3\n\
- strh r0, [r1, #0xc]\n\
- mov r0, #0x3\n\
- strh r0, [r1, #0x12]\n\
- mov r0, #0x9\n\
- strb r0, [r1]\n\
- mov r0, #0x5f\n\
- bl PlaySE\n\
- b ._102\n\
-._95:\n\
- .align 2, 0\n\
-._94:\n\
- .word +0x2000000\n\
-._90:\n\
- mov r0, #0x6\n\
- b ._96\n\
-._89:\n\
- mov r0, #0x80\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._98 @cond_branch\n\
- ldr r4, ._103 @ \n\
- mov r1, #0xc\n\
- ldsh r0, [r4, r1]\n\
- cmp r0, #0\n\
- beq ._98 @cond_branch\n\
- mov r0, #0x5f\n\
- bl PlaySE\n\
- ldrb r0, [r4, #0x12]\n\
- bl sub_8103D50\n\
- ldrh r0, [r4, #0xc]\n\
- sub r0, r0, #0x1\n\
- strh r0, [r4, #0xc]\n\
- ldrh r0, [r4, #0x12]\n\
- add r0, r0, #0x1\n\
- strh r0, [r4, #0x12]\n\
-._98:\n\
- ldr r0, ._103 @ \n\
- mov r2, #0x12\n\
- ldsh r1, [r0, r2]\n\
- add r2, r0, #0\n\
- ldr r5, ._103 + 4 @ \n\
- cmp r1, #0x2\n\
- bgt ._99 @cond_branch\n\
- cmp r1, #0\n\
- beq ._101 @cond_branch\n\
- ldrh r1, [r5, #0x2e]\n\
- mov r0, #0x1\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._101 @cond_branch\n\
-._99:\n\
- mov r0, #0x9\n\
- strb r0, [r2]\n\
-._101:\n\
- ldrh r1, [r5, #0x2e]\n\
- mov r0, #0x2\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._102 @cond_branch\n\
- mov r0, #0x15\n\
-._96:\n\
- strb r0, [r2]\n\
-._102:\n\
- mov r0, #0x0\n\
- pop {r4, r5}\n\
- pop {r1}\n\
- bx r1\n\
-._104:\n\
- .align 2, 0\n\
-._103:\n\
- .word +0x2000000\n\
- .word gMain");
-}
-#else
static bool8 sub_8101E3C(struct Task *task)
{
s16 i;
+#if DEBUG
+ if (unk_debug_bss_1_1 != 0 && unk_debug_bss_1_4 != 0)
+ {
+ if (eSlotMachine->coins <= 3 || (gMain.heldKeys & B_BUTTON))
+ {
+ unk_debug_bss_1_4 = 0;
+ }
+ else
+ {
+ sub_8103D50(0);
+ sub_8103D50(1);
+ sub_8103D50(2);
+ eSlotMachine->coins -= 3;
+ eSlotMachine->bet = 3;
+ eSlotMachine->state = 9;
+ return 0;
+ }
+ }
+ if (unk_debug_bss_1_1 != 0 && (gMain.newKeys & 8))
+ {
+ debug_sub_811B620();
+ eSlotMachine->state = 29;
+ return 0;
+ }
+#endif
+
if (gMain.newKeys & SELECT_BUTTON)
{
sub_8104AB8(0);
@@ -945,9 +703,7 @@ static bool8 sub_8101E3C(struct Task *task)
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;
@@ -968,17 +724,12 @@ static bool8 sub_8101E3C(struct Task *task)
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;
}
-#endif
static void sub_8101F2C(const u8 *str)
{
@@ -1006,77 +757,10 @@ static bool8 sub_8101F60(struct Task *task)
static bool8 sub_8101F88(struct Task *task)
{
if (sub_8104AEC())
- {
eSlotMachine->state = 5;
- }
return FALSE;
}
-#if DEBUG
-__attribute__((naked))
-static bool8 sub_8101FA4(struct Task *task)
-{
- asm("\
- push {r4, lr}\n\
- add r4, r0, #0\n\
- bl sub_8102484\n\
- bl sub_8104DA4\n\
- mov r0, #0x0\n\
- bl sub_8102DEC\n\
- mov r0, #0x1\n\
- bl sub_8102DEC\n\
- mov r0, #0x2\n\
- bl sub_8102DEC\n\
- mov r0, #0x0\n\
- strh r0, [r4, #0x8]\n\
- ldr r4, ._115 @ \n\
- ldrb r1, [r4, #0x4]\n\
- mov r0, #0x20\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._113 @cond_branch\n\
- bl sub_810430C\n\
- mov r0, #0xa\n\
- b ._114\n\
-._116:\n\
- .align 2, 0\n\
-._115:\n\
- .word +0x2000000\n\
-._113:\n\
- mov r0, #0x1\n\
- bl sub_8104CAC\n\
- mov r0, #0xb\n\
-._114:\n\
- strb r0, [r4]\n\
- ldr r4, ._119 @ \n\
- mov r0, #0x8\n\
- strh r0, [r4, #0x1a]\n\
- ldrb r0, [r4, #0xa]\n\
- cmp r0, #0\n\
- beq ._117 @cond_branch\n\
- bl dp15_jump_random_unknown\n\
- strh r0, [r4, #0x1a]\n\
-._117:\n\
- ldr r0, ._119 + 4 @ \n\
- ldrb r0, [r0]\n\
- cmp r0, #0\n\
- beq ._118 @cond_branch\n\
- add r0, r4, #0\n\
- add r0, r0, #0x68\n\
- mov r1, #0x1\n\
- bl debug_sub_811B5B4\n\
-._118:\n\
- mov r0, #0x0\n\
- pop {r4}\n\
- pop {r1}\n\
- bx r1\n\
-._120:\n\
- .align 2, 0\n\
-._119:\n\
- .word +0x2000000\n\
- .word unk_debug_bss_1_1");
-}
-#else
static bool8 sub_8101FA4(struct Task *task)
{
sub_8102484();
@@ -1097,12 +781,13 @@ static bool8 sub_8101FA4(struct Task *task)
}
eSlotMachine->unk1A = 8;
if (eSlotMachine->unk0A)
- {
eSlotMachine->unk1A = dp15_jump_random_unknown();
- }
+#if DEBUG
+ if (unk_debug_bss_1_1 != 0)
+ debug_sub_811B5B4(&eSlotMachine->unk68, 1);
+#endif
return FALSE;
}
-#endif
static bool8 sub_8102008(struct Task *task)
{
@@ -1115,134 +800,38 @@ static bool8 sub_8102008(struct Task *task)
return FALSE;
}
-#if DEBUG
-__attribute__((naked))
-static bool8 sub_8102034(struct Task *task)
-{
- asm("\
- push {r4, lr}\n\
- ldrh r1, [r0, #0x8]\n\
- add r1, r1, #0x1\n\
- strh r1, [r0, #0x8]\n\
- lsl r1, r1, #0x10\n\
- asr r1, r1, #0x10\n\
- cmp r1, #0x1d\n\
- ble ._124 @cond_branch\n\
- ldr r0, ._127 @ unk_debug_bss_1_1\n\
- ldrb r0, [r0]\n\
- cmp r0, #0\n\
- beq ._126 @cond_branch\n\
- ldr r0, ._127 + 4 @ unk_debug_bss_1_4\n\
- ldrb r0, [r0]\n\
- cmp r0, #0\n\
- beq ._126 @cond_branch\n\
- ldr r4, ._127 + 8 @ unk_debug_bss_1_8\n\
- bl Random\n\
- mov r1, #0x1f\n\
- and r1, r1, r0\n\
- add r1, r1, #0x1\n\
- str r1, [r4]\n\
-._126:\n\
- bl sub_81024F0\n\
- ldr r1, ._127 + 12 @ \n\
- mov r0, #0xc\n\
- strb r0, [r1]\n\
-._124:\n\
- mov r0, #0x0\n\
- pop {r4}\n\
- pop {r1}\n\
- bx r1\n\
-._128:\n\
- .align 2, 0\n\
-._127:\n\
- .word unk_debug_bss_1_1\n\
- .word unk_debug_bss_1_4\n\
- .word unk_debug_bss_1_8\n\
- .word +0x2000000");
-}
-#else
static bool8 sub_8102034(struct Task *task)
{
if (++task->data[0] >= 30)
{
+#if DEBUG
+ if (unk_debug_bss_1_1 != 0 && unk_debug_bss_1_4 != 0)
+ unk_debug_bss_1_8 = (Random() & 0x1F) + 1;
+#endif
sub_81024F0();
eSlotMachine->state = 12;
}
return FALSE;
}
-#endif
-#if DEBUG
-__attribute__((naked))
-static bool8 sub_8102058(struct Task *task)
-{
- asm("\
- push {r4, r5, lr}\n\
- ldr r0, ._133 @ unk_debug_bss_1_1\n\
- ldrb r0, [r0]\n\
- cmp r0, #0\n\
- beq ._130 @cond_branch\n\
- ldr r0, ._133 + 4 @ unk_debug_bss_1_4\n\
- ldrb r0, [r0]\n\
- cmp r0, #0\n\
- beq ._130 @cond_branch\n\
- ldr r5, ._133 + 8 @ unk_debug_bss_1_8\n\
- ldr r0, [r5]\n\
- sub r0, r0, #0x1\n\
- str r0, [r5]\n\
- cmp r0, #0\n\
- bne ._135 @cond_branch\n\
- mov r0, #0x18\n\
- bl PlaySE\n\
- ldr r4, ._133 + 12 @ \n\
- ldrb r0, [r4, #0x18]\n\
- bl sub_8102E1C\n\
- ldrb r0, [r4, #0x18]\n\
- bl sub_8103C14\n\
- bl Random\n\
- mov r1, #0x1f\n\
- and r1, r1, r0\n\
- add r1, r1, #0x1\n\
- str r1, [r5]\n\
- b ._132\n\
-._134:\n\
- .align 2, 0\n\
-._133:\n\
- .word unk_debug_bss_1_1\n\
- .word unk_debug_bss_1_4\n\
- .word unk_debug_bss_1_8\n\
- .word +0x2000000\n\
-._130:\n\
- ldr r0, ._136 @ gMain\n\
- ldrh r1, [r0, #0x2e]\n\
- mov r0, #0x1\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._135 @cond_branch\n\
- mov r0, #0x18\n\
- bl PlaySE\n\
- ldr r4, ._136 + 4 @ \n\
- ldrb r0, [r4, #0x18]\n\
- bl sub_8102E1C\n\
- ldrb r0, [r4, #0x18]\n\
- bl sub_8103C14\n\
-._132:\n\
- mov r0, #0xd\n\
- strb r0, [r4]\n\
-._135:\n\
- mov r0, #0x0\n\
- pop {r4, r5}\n\
- pop {r1}\n\
- bx r1\n\
-._137:\n\
- .align 2, 0\n\
-._136:\n\
- .word gMain\n\
- .word +0x2000000");
-}
-#else
static bool8 sub_8102058(struct Task *task)
{
+#if DEBUG
+ if (unk_debug_bss_1_1 != 0 && unk_debug_bss_1_4 != 0)
+ {
+ unk_debug_bss_1_8--;
+ if (unk_debug_bss_1_8 == 0)
+ {
+ PlaySE(0x18);
+ sub_8102E1C(eSlotMachine->unk18);
+ sub_8103C14(eSlotMachine->unk18);
+ unk_debug_bss_1_8 = (Random() & 0x1F) + 1;
+ eSlotMachine->state = 13;
+ }
+ return FALSE;
+ }
+#endif
+
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_JYUNI);
@@ -1252,121 +841,7 @@ static bool8 sub_8102058(struct Task *task)
}
return FALSE;
}
-#endif
-#if DEBUG
-__attribute__((naked))
-static bool8 sub_8102090(struct Task *task)
-{
- asm("\
- push {r4, lr}\n\
- ldr r4, ._146 @ \n\
- ldrb r0, [r4, #0x18]\n\
- bl sub_8102E40\n\
- lsl r0, r0, #0x18\n\
- lsr r2, r0, #0x18\n\
- cmp r2, #0\n\
- bne ._138 @cond_branch\n\
- ldrh r0, [r4, #0x18]\n\
- add r0, r0, #0x1\n\
- strh r0, [r4, #0x18]\n\
- mov r1, #0xc\n\
- strb r1, [r4]\n\
- lsl r0, r0, #0x10\n\
- asr r0, r0, #0x10\n\
- cmp r0, #0x2\n\
- ble ._161 @cond_branch\n\
- mov r0, #0xe\n\
- strb r0, [r4]\n\
- ldr r0, ._146 + 4 @ \n\
- ldrb r0, [r0]\n\
- cmp r0, #0x8\n\
- beq ._140 @cond_branch\n\
- cmp r0, #0x8\n\
- bgt ._141 @cond_branch\n\
- cmp r0, #0x2\n\
- beq ._142 @cond_branch\n\
- cmp r0, #0x2\n\
- bgt ._143 @cond_branch\n\
- cmp r0, #0x1\n\
- beq ._144 @cond_branch\n\
- b ._161\n\
-._147:\n\
- .align 2, 0\n\
-._146:\n\
- .word +0x2000000\n\
- .word unk_debug_bss_1_0\n\
-._143:\n\
- cmp r0, #0x4\n\
- beq ._148 @cond_branch\n\
- b ._161\n\
-._141:\n\
- cmp r0, #0x40\n\
- beq ._150 @cond_branch\n\
- cmp r0, #0x40\n\
- bgt ._151 @cond_branch\n\
- cmp r0, #0x10\n\
- beq ._152 @cond_branch\n\
- b ._161\n\
-._151:\n\
- cmp r0, #0x80\n\
- beq ._154 @cond_branch\n\
- b ._161\n\
-._142:\n\
- mov r0, #0x14\n\
- strh r0, [r4, #0x28]\n\
- strh r0, [r4, #0x2a]\n\
- mov r0, #0x12\n\
- b ._160\n\
-._144:\n\
- mov r0, #0x14\n\
- strh r0, [r4, #0x28]\n\
- strh r0, [r4, #0x2a]\n\
- mov r0, #0x12\n\
- b ._160\n\
-._148:\n\
- mov r0, #0x3\n\
- strh r0, [r4, #0x28]\n\
- mov r0, #0x1\n\
- strh r0, [r4, #0x2a]\n\
- mov r0, #0x2\n\
- b ._160\n\
-._140:\n\
- strh r2, [r4, #0x28]\n\
- mov r0, #0x2\n\
- strh r0, [r4, #0x2a]\n\
- mov r0, #0x3\n\
- b ._160\n\
-._152:\n\
- mov r0, #0x2\n\
- strh r0, [r4, #0x28]\n\
- mov r0, #0x5\n\
- strh r0, [r4, #0x2a]\n\
- mov r0, #0x14\n\
- b ._160\n\
-._150:\n\
- mov r0, #0x13\n\
- strh r0, [r4, #0x28]\n\
- strh r0, [r4, #0x2a]\n\
- strh r2, [r4, #0x2c]\n\
- b ._161\n\
-._154:\n\
- mov r0, #0x13\n\
- strh r0, [r4, #0x28]\n\
- strh r0, [r4, #0x2a]\n\
-._160:\n\
- strh r0, [r4, #0x2c]\n\
-._161:\n\
- mov r0, #0x1\n\
- b ._162\n\
-._138:\n\
- mov r0, #0x0\n\
-._162:\n\
- pop {r4}\n\
- pop {r1}\n\
- bx r1");
-}
-#else
static bool8 sub_8102090(struct Task *task)
{
if (!sub_8102E40(eSlotMachine->unk18))
@@ -1376,173 +851,52 @@ static bool8 sub_8102090(struct Task *task)
if (eSlotMachine->unk18 > 2)
{
eSlotMachine->state = 14;
+#if DEBUG
+ switch (unk_debug_bss_1_0)
+ {
+ case 2:
+ eSlotMachine->reelPositions[0] = 20;
+ eSlotMachine->reelPositions[1] = 20;
+ eSlotMachine->reelPositions[2] = 18;
+ break;
+ case 1:
+ eSlotMachine->reelPositions[0] = 20;
+ eSlotMachine->reelPositions[1] = 20;
+ eSlotMachine->reelPositions[2] = 18;
+ break;
+ case 4:
+ eSlotMachine->reelPositions[0] = 3;
+ eSlotMachine->reelPositions[1] = 1;
+ eSlotMachine->reelPositions[2] = 2;
+ break;
+ case 8:
+ eSlotMachine->reelPositions[0] = 0;
+ eSlotMachine->reelPositions[1] = 2;
+ eSlotMachine->reelPositions[2] = 3;
+ break;
+ case 0x10:
+ eSlotMachine->reelPositions[0] = 2;
+ eSlotMachine->reelPositions[1] = 5;
+ eSlotMachine->reelPositions[2] = 20;
+ break;
+ case 0x40:
+ eSlotMachine->reelPositions[0] = 19;
+ eSlotMachine->reelPositions[1] = 19;
+ eSlotMachine->reelPositions[2] = 0;
+ break;
+ case 0x80:
+ eSlotMachine->reelPositions[0] = 19;
+ eSlotMachine->reelPositions[1] = 19;
+ eSlotMachine->reelPositions[2] = 19;
+ break;
+ }
+#endif
}
return TRUE;
}
return FALSE;
}
-#endif
-#if DEBUG
-__attribute__((naked))
-bool8 sub_81020C8(struct Task *task)
-{
- asm("\
- push {r4, lr}\n\
- ldr r4, ._165 @ \n\
- ldrb r1, [r4, #0x4]\n\
- mov r0, #0xc0\n\
- and r0, r0, r1\n\
- strb r0, [r4, #0x4]\n\
- bl CheckMatch\n\
- ldrb r0, [r4, #0xa]\n\
- cmp r0, #0\n\
- beq ._163 @cond_branch\n\
- sub r0, r0, #0x1\n\
- strb r0, [r4, #0xa]\n\
- ldrb r0, [r4, #0xb]\n\
- add r0, r0, #0x1\n\
- strb r0, [r4, #0xb]\n\
- b ._164\n\
-._166:\n\
- .align 2, 0\n\
-._165:\n\
- .word +0x2000000\n\
-._163:\n\
- bl debug_sub_811B894\n\
-._164:\n\
- ldr r4, ._171 @ \n\
- ldrh r0, [r4, #0x8]\n\
- cmp r0, #0\n\
- beq ._167 @cond_branch\n\
- add r0, r4, #0\n\
- add r0, r0, #0x6c\n\
- mov r2, #0xe\n\
- ldsh r1, [r4, r2]\n\
- bl debug_sub_811B5B4\n\
- mov r0, #0xf\n\
- strb r0, [r4]\n\
- bl sub_8102A24\n\
- bl sub_8103F70\n\
- ldrh r0, [r4, #0x10]\n\
- ldrh r1, [r4, #0xe]\n\
- sub r0, r0, r1\n\
- strh r0, [r4, #0x10]\n\
- lsl r0, r0, #0x10\n\
- cmp r0, #0\n\
- bge ._168 @cond_branch\n\
- mov r0, #0x0\n\
- strh r0, [r4, #0x10]\n\
-._168:\n\
- ldrh r1, [r4, #0x8]\n\
- mov r0, #0xc0\n\
- lsl r0, r0, #0x1\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._169 @cond_branch\n\
- ldr r0, ._171 + 4 @ \n\
- bl PlayFanfare\n\
- mov r0, #0x6\n\
- bl sub_8104CAC\n\
- b ._174\n\
-._172:\n\
- .align 2, 0\n\
-._171:\n\
- .word +0x2000000\n\
- .word 0x185\n\
-._169:\n\
- mov r0, #0x40\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._173 @cond_branch\n\
- ldr r0, ._175 @ 0x185\n\
- bl PlayFanfare\n\
- mov r0, #0x5\n\
- bl sub_8104CAC\n\
- b ._174\n\
-._176:\n\
- .align 2, 0\n\
-._175:\n\
- .word 0x185\n\
-._173:\n\
- mov r0, #0xc3\n\
- lsl r0, r0, #0x1\n\
- bl PlayFanfare\n\
- mov r0, #0x2\n\
- bl sub_8104CAC\n\
-._174:\n\
- ldr r1, ._183 @ \n\
- ldrh r3, [r1, #0x8]\n\
- mov r0, #0xe0\n\
- lsl r0, r0, #0x1\n\
- and r0, r0, r3\n\
- add r2, r1, #0\n\
- cmp r0, #0\n\
- beq ._179 @cond_branch\n\
- ldrb r1, [r2, #0x4]\n\
- mov r0, #0x3f\n\
- and r0, r0, r1\n\
- mov r1, #0x0\n\
- strb r0, [r2, #0x4]\n\
- mov r0, #0xc0\n\
- lsl r0, r0, #0x1\n\
- and r0, r0, r3\n\
- cmp r0, #0\n\
- beq ._179 @cond_branch\n\
- strb r1, [r2, #0xa]\n\
- strb r1, [r2, #0xb]\n\
- strb r1, [r2, #0x3]\n\
- mov r0, #0x80\n\
- lsl r0, r0, #0x1\n\
- and r0, r0, r3\n\
- cmp r0, #0\n\
- beq ._179 @cond_branch\n\
- mov r0, #0x1\n\
- strb r0, [r2, #0x3]\n\
-._179:\n\
- ldrh r1, [r2, #0x8]\n\
- mov r0, #0x20\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._185 @cond_branch\n\
- ldrb r0, [r2, #0x2]\n\
- cmp r0, #0xf\n\
- bhi ._185 @cond_branch\n\
- add r0, r0, #0x1\n\
- strb r0, [r2, #0x2]\n\
- ldrb r0, [r2, #0x2]\n\
- bl sub_8104064\n\
- b ._185\n\
-._184:\n\
- .align 2, 0\n\
-._183:\n\
- .word +0x2000000\n\
-._167:\n\
- mov r0, #0x3\n\
- bl sub_8104CAC\n\
- mov r0, #0x14\n\
- strb r0, [r4]\n\
- ldrh r0, [r4, #0x12]\n\
- ldrh r1, [r4, #0x10]\n\
- add r0, r0, r1\n\
- strh r0, [r4, #0x10]\n\
- lsl r0, r0, #0x10\n\
- asr r0, r0, #0x10\n\
- ldr r1, ._186 @ 0x270f\n\
- cmp r0, r1\n\
- ble ._185 @cond_branch\n\
- strh r1, [r4, #0x10]\n\
-._185:\n\
- mov r0, #0x0\n\
- pop {r4}\n\
- pop {r1}\n\
- bx r1\n\
-._187:\n\
- .align 2, 0\n\
-._186:\n\
- .word 0x270f");
-}
-#else
bool8 sub_81020C8(struct Task *task)
{
eSlotMachine->unk04 &= 0xc0;
@@ -1552,8 +906,18 @@ bool8 sub_81020C8(struct Task *task)
eSlotMachine->unk0A--;
eSlotMachine->unk0B++;
}
+#if DEBUG
+ else
+ {
+ debug_sub_811B894();
+ }
+#endif
+
if (eSlotMachine->matchedSymbols)
{
+#if DEBUG
+ debug_sub_811B5B4(&eSlotMachine->unk6C, eSlotMachine->payout);
+#endif
eSlotMachine->state = 15;
sub_8102A24();
sub_8103F70();
@@ -1585,9 +949,7 @@ bool8 sub_81020C8(struct Task *task)
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)
@@ -1601,20 +963,15 @@ bool8 sub_81020C8(struct Task *task)
sub_8104CAC(3);
eSlotMachine->state = 20;
if ((eSlotMachine->unk10 += eSlotMachine->bet) > 9999)
- {
eSlotMachine->unk10 = 9999;
- }
}
return FALSE;
}
-#endif
static bool8 sub_81021E0(struct Task *task)
{
if (sub_8102A44())
- {
eSlotMachine->state = 16;
- }
return FALSE;
}
@@ -1624,18 +981,14 @@ static bool8 sub_81021FC(struct Task *task)
{
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);
@@ -1758,56 +1111,18 @@ static bool8 sub_81023FC(struct Task *task)
return FALSE;
}
-#if DEBUG
-__attribute__((naked))
static bool8 sub_8102424(struct Task *task)
{
- asm("\
- push {lr}\n\
- add sp, sp, #0xfffffffc\n\
- ldr r0, ._234 @ unk_debug_bss_1_1\n\
- ldrb r0, [r0]\n\
- cmp r0, #0\n\
- bne ._233 @cond_branch\n\
- ldr r0, ._234 + 4 @ gSaveBlock1\n\
- ldr r1, ._234 + 8 @ \n\
- ldrh r1, [r1, #0xc]\n\
- ldr r2, ._234 + 12 @ \n\
- add r0, r0, r2\n\
- strh r1, [r0]\n\
-._233:\n\
- mov r0, #0x1\n\
- neg r0, r0\n\
- mov r1, #0x0\n\
- str r1, [sp]\n\
- mov r2, #0x0\n\
- mov r3, #0x10\n\
- bl BeginNormalPaletteFade\n\
- ldr r1, ._234 + 8 @ \n\
- ldrb r0, [r1]\n\
- add r0, r0, #0x1\n\
- strb r0, [r1]\n\
- mov r0, #0x0\n\
- add sp, sp, #0x4\n\
- pop {r1}\n\
- bx r1\n\
-._235:\n\
- .align 2, 0\n\
-._234:\n\
- .word unk_debug_bss_1_1\n\
- .word gSaveBlock1\n\
- .word +0x2000000\n\
- .word 0x494");
-}
+#if DEBUG
+ if (unk_debug_bss_1_1 == 0)
+ gSaveBlock1.coins = eSlotMachine->coins;
#else
-static bool8 sub_8102424(struct Task *task)
-{
gSaveBlock1.coins = eSlotMachine->coins;
+#endif
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
eSlotMachine->state++;
return FALSE;
}
-#endif
static bool8 sub_8102460(struct Task *task)
{
@@ -1819,271 +1134,91 @@ static bool8 sub_8102460(struct Task *task)
}
#if DEBUG
-__attribute__((naked))
+
static bool8 debug_sub_8116E74(struct Task *task)
{
- asm("\
- push {lr}\n\
- bl debug_sub_811B634\n\
- lsl r0, r0, #0x18\n\
- cmp r0, #0\n\
- beq ._239 @cond_branch\n\
- ldr r1, ._240 @ \n\
- mov r0, #0x5\n\
- strb r0, [r1]\n\
-._239:\n\
- mov r0, #0x0\n\
- pop {r1}\n\
- bx r1\n\
-._241:\n\
- .align 2, 0\n\
-._240:\n\
- .word +0x2000000");
+ if (debug_sub_811B634() != 0)
+ eSlotMachine->state = 5;
+ return FALSE;
}
+
#endif
-#if DEBUG
-__attribute__((naked))
static void sub_8102484(void)
{
- asm("\
- push {r4, r5, r6, lr}\n\
- ldr r0, ._256 @ \n\
- ldrb r2, [r0, #0xa]\n\
- add r4, r0, #0\n\
- cmp r2, #0\n\
- beq ._242 @cond_branch\n\
- b ._270\n\
-._242:\n\
- ldr r0, ._256 + 4 @ \n\
- ldrb r0, [r0]\n\
- cmp r0, #0\n\
- beq ._245 @cond_branch\n\
- ldr r3, ._256 + 8 @ \n\
- ldrb r0, [r3]\n\
- cmp r0, #0\n\
- beq ._245 @cond_branch\n\
- ldr r0, ._256 + 12 @ \n\
- ldrb r1, [r0]\n\
- strb r1, [r4, #0x4]\n\
- strb r2, [r3]\n\
- strb r2, [r0]\n\
- mov r0, #0x80\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._246 @cond_branch\n\
- add r0, r4, #0\n\
- add r0, r0, #0x88\n\
- mov r1, #0x1\n\
- bl debug_sub_811B5B4\n\
-._246:\n\
- ldrb r1, [r4, #0x4]\n\
- mov r0, #0x40\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._247 @cond_branch\n\
- add r0, r4, #0\n\
- add r0, r0, #0x84\n\
- mov r1, #0x1\n\
- bl debug_sub_811B5B4\n\
-._247:\n\
- ldrb r1, [r4, #0x4]\n\
- mov r0, #0x20\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._248 @cond_branch\n\
- add r0, r4, #0\n\
- add r0, r0, #0x8c\n\
- mov r1, #0x1\n\
- bl debug_sub_811B5B4\n\
-._248:\n\
- ldrb r1, [r4, #0x4]\n\
- mov r0, #0x10\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._249 @cond_branch\n\
- add r0, r4, #0\n\
- add r0, r0, #0x80\n\
- mov r1, #0x1\n\
- bl debug_sub_811B5B4\n\
-._249:\n\
- ldrb r1, [r4, #0x4]\n\
- mov r0, #0x8\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._250 @cond_branch\n\
- add r0, r4, #0\n\
- add r0, r0, #0x7c\n\
- mov r1, #0x1\n\
- bl debug_sub_811B5B4\n\
-._250:\n\
- ldrb r1, [r4, #0x4]\n\
- mov r0, #0x4\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._251 @cond_branch\n\
- add r0, r4, #0\n\
- add r0, r0, #0x78\n\
- mov r1, #0x1\n\
- bl debug_sub_811B5B4\n\
-._251:\n\
- ldrb r1, [r4, #0x4]\n\
- mov r0, #0x1\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._252 @cond_branch\n\
- add r0, r4, #0\n\
- add r0, r0, #0x74\n\
- mov r1, #0x1\n\
- bl debug_sub_811B5B4\n\
-._252:\n\
- ldrb r1, [r4, #0x4]\n\
- mov r0, #0x2\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- bne ._253 @cond_branch\n\
- b ._270\n\
-._253:\n\
- add r0, r4, #0\n\
- add r0, r0, #0x70\n\
- mov r1, #0x1\n\
- bl debug_sub_811B5B4\n\
- b ._270\n\
-._257:\n\
- .align 2, 0\n\
-._256:\n\
- .word +0x2000000\n\
- .word unk_debug_bss_1_1\n\
- .word unk_debug_bss_1_2\n\
- .word unk_debug_bss_1_3\n\
-._245:\n\
- add r5, r4, #0\n\
- ldrb r1, [r5, #0x4]\n\
- mov r0, #0xc0\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- bne ._270 @cond_branch\n\
- bl sub_8102540\n\
- lsl r0, r0, #0x18\n\
- cmp r0, #0\n\
- beq ._260 @cond_branch\n\
- bl sub_8102578\n\
- lsl r0, r0, #0x18\n\
- lsr r6, r0, #0x18\n\
- cmp r6, #0x3\n\
- beq ._260 @cond_branch\n\
- ldr r1, ._271 @ gUnknown_083ECE42\n\
- lsl r0, r6, #0x1\n\
- add r0, r0, r1\n\
- ldrb r1, [r0]\n\
- ldrb r0, [r5, #0x4]\n\
- orr r0, r0, r1\n\
- strb r0, [r5, #0x4]\n\
- mov r1, #0x80\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._261 @cond_branch\n\
- add r0, r5, #0\n\
- add r0, r0, #0x88\n\
- mov r1, #0x1\n\
- bl debug_sub_811B5B4\n\
-._261:\n\
- ldrb r1, [r5, #0x4]\n\
- mov r0, #0x40\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._262 @cond_branch\n\
- add r0, r5, #0\n\
- add r0, r0, #0x84\n\
- mov r1, #0x1\n\
- bl debug_sub_811B5B4\n\
-._262:\n\
- ldrb r1, [r4, #0x4]\n\
- mov r0, #0x20\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._263 @cond_branch\n\
- add r0, r4, #0\n\
- add r0, r0, #0x8c\n\
- mov r1, #0x1\n\
- bl debug_sub_811B5B4\n\
-._263:\n\
- cmp r6, #0x1\n\
- bne ._270 @cond_branch\n\
-._260:\n\
- bl sub_81025BC\n\
- lsl r0, r0, #0x18\n\
- lsr r6, r0, #0x18\n\
- cmp r6, #0x5\n\
- beq ._270 @cond_branch\n\
- ldr r4, ._271 + 4 @ \n\
- ldr r1, ._271 + 8 @ \n\
- lsl r0, r6, #0x1\n\
- add r0, r0, r1\n\
- ldrb r1, [r0]\n\
- ldrb r0, [r4, #0x4]\n\
- orr r0, r0, r1\n\
- strb r0, [r4, #0x4]\n\
- mov r1, #0x10\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._266 @cond_branch\n\
- add r0, r4, #0\n\
- add r0, r0, #0x80\n\
- mov r1, #0x1\n\
- bl debug_sub_811B5B4\n\
-._266:\n\
- ldrb r1, [r4, #0x4]\n\
- mov r0, #0x8\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._267 @cond_branch\n\
- add r0, r4, #0\n\
- add r0, r0, #0x7c\n\
- mov r1, #0x1\n\
- bl debug_sub_811B5B4\n\
-._267:\n\
- ldrb r1, [r4, #0x4]\n\
- mov r0, #0x4\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._268 @cond_branch\n\
- add r0, r4, #0\n\
- add r0, r0, #0x78\n\
- mov r1, #0x1\n\
- bl debug_sub_811B5B4\n\
-._268:\n\
- ldrb r1, [r4, #0x4]\n\
- mov r0, #0x1\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._269 @cond_branch\n\
- add r0, r4, #0\n\
- add r0, r0, #0x74\n\
- mov r1, #0x1\n\
- bl debug_sub_811B5B4\n\
-._269:\n\
- ldrb r1, [r4, #0x4]\n\
- mov r0, #0x2\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._270 @cond_branch\n\
- add r0, r4, #0\n\
- add r0, r0, #0x70\n\
- mov r1, #0x1\n\
- bl debug_sub_811B5B4\n\
-._270:\n\
- pop {r4, r5, r6}\n\
- pop {r0}\n\
- bx r0\n\
-._272:\n\
- .align 2, 0\n\
-._271:\n\
- .word gUnknown_083ECE42\n\
- .word +0x2000000\n\
- .word gUnknown_083ECE48");
+ u8 r3;
+
+ if (eSlotMachine->unk0A == 0)
+ {
+#if DEBUG
+ if (unk_debug_bss_1_1 != 0 && unk_debug_bss_1_2 != 0)
+ {
+ eSlotMachine->unk04 = unk_debug_bss_1_3;
+ unk_debug_bss_1_2 = 0;
+ unk_debug_bss_1_3 = 0;
+ if (eSlotMachine->unk04 & 0x80)
+ debug_sub_811B5B4(&eSlotMachine->unk88, 1);
+ if (eSlotMachine->unk04 & 0x40)
+ debug_sub_811B5B4(&eSlotMachine->unk84, 1);
+ if (eSlotMachine->unk04 & 0x20)
+ debug_sub_811B5B4(&eSlotMachine->unk8C, 1);
+ if (eSlotMachine->unk04 & 0x10)
+ debug_sub_811B5B4(&eSlotMachine->unk80, 1);
+ if (eSlotMachine->unk04 & 8)
+ debug_sub_811B5B4(&eSlotMachine->unk7C, 1);
+ if (eSlotMachine->unk04 & 4)
+ debug_sub_811B5B4(&eSlotMachine->unk78, 1);
+ if (eSlotMachine->unk04 & 1)
+ debug_sub_811B5B4(&eSlotMachine->unk74, 1);
+ if (eSlotMachine->unk04 & 2)
+ debug_sub_811B5B4(&eSlotMachine->unk70, 1);
+ return;
+ }
+#endif
+ if (!(eSlotMachine->unk04 & 0xc0))
+ {
+ if (sub_8102540())
+ {
+ r3 = sub_8102578();
+ if (r3 != 3)
+ {
+ eSlotMachine->unk04 |= gUnknown_083ECE42[r3];
+#if DEBUG
+ if (eSlotMachine->unk04 & 0x80)
+ debug_sub_811B5B4(&eSlotMachine->unk88, 1);
+ if (eSlotMachine->unk04 & 0x40)
+ debug_sub_811B5B4(&eSlotMachine->unk84, 1);
+ if (eSlotMachine->unk04 & 0x20)
+ debug_sub_811B5B4(&eSlotMachine->unk8C, 1);
+#endif
+ if (r3 != 1)
+ {
+ return;
+ }
+ }
+ }
+ r3 = sub_81025BC();
+ if (r3 != 5)
+ {
+ eSlotMachine->unk04 |= gUnknown_083ECE48[r3];
+#if DEBUG
+ if (eSlotMachine->unk04 & 0x10)
+ debug_sub_811B5B4(&eSlotMachine->unk80, 1);
+ if (eSlotMachine->unk04 & 8)
+ debug_sub_811B5B4(&eSlotMachine->unk7C, 1);
+ if (eSlotMachine->unk04 & 4)
+ debug_sub_811B5B4(&eSlotMachine->unk78, 1);
+ if (eSlotMachine->unk04 & 1)
+ debug_sub_811B5B4(&eSlotMachine->unk74, 1);
+ if (eSlotMachine->unk04 & 2)
+ debug_sub_811B5B4(&eSlotMachine->unk70, 1);
+#endif
+ }
+ }
+ }
}
-#else
+
+/*
static void sub_8102484(void)
{
u8 r3;
@@ -2109,15 +1244,13 @@ static void sub_8102484(void)
}
}
}
-#endif
+*/
static void sub_81024F0(void)
{
eSlotMachine->unk06 = 0;
if (eSlotMachine->unk04)
- {
eSlotMachine->unk06 = 1;
- }
}
static u8 sub_810250C(u8 a0)
@@ -2127,9 +1260,7 @@ static u8 sub_810250C(u8 a0)
for (i = 0; i < 8; i++)
{
if (a0 & 1)
- {
return gUnknown_083ECE3A[i];
- }
a0 >>= 1;
}
return 0;
@@ -2139,9 +1270,7 @@ static bool8 sub_8102540(void)
{
u8 rval = Random();
if (gUnknown_083ECD04[eSlotMachine->unk01][eSlotMachine->bet - 1] > rval)
- {
return TRUE;
- }
return FALSE;
}
@@ -2156,9 +1285,7 @@ static u8 sub_8102578(void)
s16 rval = Random() & 0xff;
s16 value = gUnknown_083ECD16[i][eSlotMachine->unk01];
if (value > rval)
- {
break;
- }
}
return i;
}
@@ -2177,22 +1304,16 @@ static u8 sub_81025BC(void)
{
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;
}
@@ -2203,10 +1324,9 @@ 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];
+ else
+ return gUnknown_083ECDAC[a0][eSlotMachine->pikaPower];
}
static void sub_8102680(void)
@@ -2217,16 +1337,12 @@ static void sub_8102680(void)
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;
}
@@ -2237,10 +1353,9 @@ static bool8 sub_81026DC(u16 a0)
{
u16 rval = Random() & 0xff;
if (rval < gUnknown_083ECE12[a0])
- {
return TRUE;
- }
- return FALSE;
+ else
+ return FALSE;
}
static const u16 gUnknown_083ECE1C[][2];
@@ -2252,33 +1367,21 @@ static u16 dp15_jump_random_unknown(void)
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;
}
@@ -2287,13 +1390,9 @@ 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[];
@@ -2326,9 +1425,7 @@ static void CheckMatch_TopAndBottom(void)
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);
@@ -2340,9 +1437,7 @@ static void CheckMatch_TopAndBottom(void)
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);
@@ -2386,21 +1481,13 @@ 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;
}
@@ -2412,13 +1499,13 @@ static void sub_8102A24(void)
static bool8 sub_8102A44(void)
{
if (FindTaskIdByFunc(sub_8102A64) == 0xff)
- {
return TRUE;
- }
- return FALSE;
+ else
+ return FALSE;
}
-static bool8 (*const gUnknown_083ECB20[])(struct Task *task) = {
+static bool8 (*const gUnknown_083ECB20[])(struct Task *task) =
+{
sub_8102A9C,
sub_8102AD0,
sub_8102B80
@@ -2426,7 +1513,8 @@ static bool8 (*const gUnknown_083ECB20[])(struct Task *task) = {
static void sub_8102A64(u8 taskId)
{
- while (gUnknown_083ECB20[gTasks[taskId].data[0]](gTasks + taskId));
+ while (gUnknown_083ECB20[gTasks[taskId].data[0]](gTasks + taskId))
+ ;
}
static bool8 sub_8102A9C(struct Task *task)
@@ -2448,43 +1536,31 @@ 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;
}
@@ -2494,9 +1570,7 @@ static u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y)
{
s16 offset = (eSlotMachine->reelPositions[x] + y) % 21;
if (offset < 0)
- {
offset += 21;
- }
return sReelSymbols[x][offset];
}
@@ -2586,7 +1660,8 @@ static bool8 sub_8102E40(u8 a0)
return gTasks[eSlotMachine->reelTasks[a0]].data[14];
}
-static bool8 (*const gUnknown_083ECB2C[])(struct Task *task) = {
+static bool8 (*const gUnknown_083ECB2C[])(struct Task *task) =
+{
sub_8102EA0,
sub_8102EA4,
sub_8102EC0,
@@ -2596,7 +1671,8 @@ static bool8 (*const gUnknown_083ECB2C[])(struct Task *task) = {
static void sub_8102E68(u8 taskId)
{
- while (gUnknown_083ECB2C[gTasks[taskId].data[0]](gTasks + taskId));
+ while (gUnknown_083ECB2C[gTasks[taskId].data[0]](gTasks + taskId))
+ ;
}
static bool8 sub_8102EA0(struct Task *task)
@@ -2610,12 +1686,15 @@ static bool8 sub_8102EA4(struct Task *task)
return FALSE;
}
-static bool8 (*const gUnknown_083ECB40[])(void) = {
+static bool8 (*const gUnknown_083ECB40[])(void) =
+{
sub_810305C,
sub_81032C0,
sub_81033DC
};
-static void (*const gUnknown_083ECB4C[])(void) = {
+
+static void (*const gUnknown_083ECB4C[])(void) =
+{
sub_81034F4,
sub_8103540,
sub_810380C
@@ -2640,9 +1719,7 @@ 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]]--;
@@ -2664,9 +1741,7 @@ static bool8 sub_8103008(struct Task *task)
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;
@@ -2676,7 +1751,8 @@ static bool8 sub_8103008(struct Task *task)
return FALSE;
}
-static bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1) = {
+static bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1) =
+{
sub_8103154,
sub_81031B4,
sub_81031B4
@@ -2708,19 +1784,17 @@ static bool8 sub_81030A4(s16 y, u8 tag1, u8 tag2)
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;
+ else
+ return FALSE;
}
static bool8 sub_8103134(void)
{
if (eSlotMachine->unk04 & 0xc2)
- {
return TRUE;
- }
- return FALSE;
+ else
+ return FALSE;
}
static bool8 sub_8103154(u8 a0, u8 a1)
@@ -2783,7 +1857,8 @@ static bool8 sub_81031B4(u8 tag1, u8 tag2)
return FALSE;
}
-static bool8 (*const gUnknown_083ECB70[])(void) = {
+static bool8 (*const gUnknown_083ECB70[])(void) =
+{
sub_81032E8,
sub_81032E8,
sub_810333C
@@ -2845,7 +1920,8 @@ static bool8 sub_810333C(void)
return FALSE;
}
-static bool8 (*const gUnknown_083ECB7C[])(u8 a0) = {
+static bool8 (*const gUnknown_083ECB7C[])(u8 a0) =
+{
sub_810341C,
sub_810341C,
sub_810347C
@@ -2887,14 +1963,11 @@ 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;
- }
+ else
+ r8 = 1;
for (i = 0; i < 5; i++)
{
if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - i) == a0)
@@ -2909,8 +1982,10 @@ static bool8 sub_810347C(u8 a0)
static void sub_81034F4(void)
{
- s16 i;
- for (i = 0; sub_81030E0(i); i++);
+ s16 i = 0;
+
+ while (sub_81030E0(i) != 0)
+ i++;
eSlotMachine->unk2E[0] = i;
}
@@ -2929,7 +2004,8 @@ static bool8 sub_8103520(u8 *a0)
return FALSE;
}
-static void (*const gUnknown_083ECB88[])(void) = {
+static void (*const gUnknown_083ECB88[])(void) =
+{
sub_8103564,
j5_08111E84,
sub_8103668
@@ -3050,19 +2126,17 @@ static void sub_8103668(void)
static bool8 sub_8103764(u8 a0, u8 a1)
{
if ((a0 == 0 && a1 == 1) || (a0 == 1 && a1 == 0))
- {
return TRUE;
- }
- return FALSE;
+ else
+ 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;
+ else
+ return FALSE;
}
static bool8 sub_81037BC(u8 a0, u8 a1, u8 a2)
@@ -3078,7 +2152,8 @@ static bool8 sub_81037BC(u8 a0, u8 a1, u8 a2)
return TRUE;
}
-static void (*const gUnknown_083ECB94[])(void) = {
+static void (*const gUnknown_083ECB94[])(void) =
+{
sub_8103830,
sub_8103910,
sub_8103A78
@@ -3100,9 +2175,7 @@ static void sub_8103830(void)
{
u8 r0;
if (!(r5 == (r0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i)) || (r5 == 0 && r0 == 1) || (r5 == 1 && r0 == 0)))
- {
break;
- }
i++;
}
}
@@ -3123,9 +2196,7 @@ static void sub_8103830(void)
while (1)
{
if (r5 != GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i))
- {
break;
- }
i++;
}
}
@@ -3172,9 +2243,7 @@ static void sub_8103910(void)
}
}
if (r8 == 0)
- {
break;
- }
sp0++;
}
eSlotMachine->unk2E[2] = sp0;
@@ -3236,7 +2305,8 @@ static void sub_8103C14(u8 a0)
sub_8103C48(taskId);
}
-static void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId) = {
+static void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId) =
+{
sub_8103C78,
sub_8103CAC,
sub_8103CC8
@@ -3288,18 +2358,14 @@ 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)
@@ -3329,7 +2395,7 @@ static bool8 sub_8103E38(void)
u8 i;
for (i = 0; i < 5; i++)
{
- struct Sprite *sprite = gSprites + eSlotMachine->unk44[i];
+ struct Sprite *sprite = &gSprites[eSlotMachine->unk44[i]];
if (sprite->data[1] && sprite->data[2])
return FALSE;
}
@@ -3416,9 +2482,7 @@ static void sub_8103FE8(u8 taskId)
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);
}
@@ -3450,7 +2514,8 @@ static bool8 sub_81040C8(void)
return gTasks[eSlotMachine->unk3E].data[15];
}
-static void (*const gUnknown_083ECBB4[])(struct Task *task) = {
+static void (*const gUnknown_083ECBB4[])(struct Task *task) =
+{
nullsub_68,
sub_810411C,
sub_8104144,
@@ -3464,7 +2529,6 @@ static void sub_81040E8(u8 taskId)
static void nullsub_68(struct Task *task)
{
-
}
static void sub_810411C(struct Task *task)
@@ -3473,10 +2537,11 @@ static void sub_810411C(struct Task *task)
task->data[0]++;
}
-static const u16 gUnknown_083ECBC4[][2] = {
+static const u16 gUnknown_083ECBC4[][2] =
+{
{0x9e, 0x6e},
{0x9f, 0x6f},
- {0xaf, 0x7f}
+ {0xaf, 0x7f},
};
static void sub_8104144(struct Task *task)
@@ -3568,7 +2633,8 @@ static bool8 sub_810432C(void)
return FALSE;
}
-static void (*const gUnknown_083ECBD0[])(struct Task *task) = {
+static void (*const gUnknown_083ECBD0[])(struct Task *task) =
+{
sub_810437C,
sub_81043EC,
sub_8104468,
@@ -3705,9 +2771,7 @@ static void sub_81045CC(struct Task *task)
if (eSlotMachine->unk05)
{
if (eSlotMachine->unk0A <= task->data[6])
- {
task->data[0]++;
- }
}
else if (task->data[6] > 3)
{
@@ -3774,9 +2838,7 @@ static void sub_81046C0(struct Task *task)
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)
@@ -3788,13 +2850,9 @@ static void sub_8104794(struct Task *task)
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)
@@ -3825,21 +2883,15 @@ static void sub_81047EC(struct Task *task)
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)
@@ -3935,10 +2987,12 @@ static bool8 sub_8104AEC(void)
{
if (FindTaskIdByFunc(sub_8104B0C) == 0xFF)
return TRUE;
- return FALSE;
+ else
+ return FALSE;
}
-static void (*const gUnknown_083ECC30[])(struct Task *task) = {
+static void (*const gUnknown_083ECC30[])(struct Task *task) =
+{
sub_8104B3C,
sub_8104B60,
sub_8104B80,
@@ -3964,9 +3018,7 @@ static void sub_8104B3C(struct Task *task)
static void sub_8104B60(struct Task *task)
{
if (!gPaletteFade.active)
- {
task->data[0]++;
- }
}
static void sub_8104B80(struct Task *task)
@@ -4013,9 +3065,7 @@ static void sub_8104C5C(void)
task = gTasks + i;
task->data[1] = -1;
for (i = 4; i < 16; i++)
- {
task->data[i] = MAX_SPRITES;
- }
}
static void LoadSlotMachineWheelOverlay(void);
@@ -4094,8 +3144,9 @@ static bool8 sub_8104E18(void)
return TRUE;
}
-static void (*const gUnknown_083ECC54[])(struct Task *task) = {
- nullsub_69
+static void (*const gUnknown_083ECC54[])(struct Task *task) =
+{
+ nullsub_69,
};
static void sub_8104E74(u8 taskId)
@@ -4105,7 +3156,6 @@ static void sub_8104E74(u8 taskId)
static void nullsub_69(struct Task *task)
{
-
}
static const struct SpriteTemplate gSpriteTemplate_83ED414;
@@ -4141,14 +3191,11 @@ 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;
@@ -4211,9 +3258,7 @@ static void sub_8105170(struct Sprite *sprite)
{
sprite->pos2.y = sprite->pos2.x = 8;
if ((sprite->animCmdIndex != 0 && sprite->animDelayCounter != 0) || (sprite->animCmdIndex == 0 && sprite->animDelayCounter == 0))
- {
sprite->pos2.y = -8;
- }
}
}
@@ -4225,14 +3270,14 @@ static const struct SubspriteTable gSubspriteTables_83ED75C[];
static void sub_81051C0(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED474, 0x170, 0x34, 7);
- struct Sprite *sprite = gSprites + spriteId;
+ 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 = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
SetSubspriteTables(sprite, gSubspriteTables_83ED75C);
@@ -4245,7 +3290,7 @@ 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;
+ struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
SetSubspriteTables(sprite, gSubspriteTables_83ED78C);
@@ -4261,7 +3306,7 @@ static void sub_81052EC(void)
for (i = 0, r5 = 0; i < 3; i++, r5 += 20)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4BC, 0x170, 0x00, 10);
- struct Sprite *sprite = gSprites + spriteId;
+ struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
sprite->data[7] = r5;
@@ -4283,14 +3328,14 @@ static const struct SubspriteTable gSubspriteTables_83ED7B4[];
static void sub_81053A0(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x170, 0x64, 9);
- struct Sprite *sprite = gSprites + spriteId;
+ 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 = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = 1;
SetSubspriteTables(sprite, gSubspriteTables_83ED7B4);
@@ -4303,7 +3348,7 @@ static const struct SubspriteTable gSubspriteTables_83ED7D4[];
static void sub_810545C(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4EC, 0x170, 0x4c, 11);
- struct Sprite *sprite = gSprites + spriteId;
+ struct Sprite *sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = 1;
SetSubspriteTables(sprite, gSubspriteTables_83ED7D4);
@@ -4314,29 +3359,24 @@ static void sub_81054B8(void)
{
u8 i;
- DestroySprite(gSprites + eSlotMachine->unk40);
+ DestroySprite(&gSprites[eSlotMachine->unk40]);
for (i = 0; i < 2; i++)
- {
- DestroySprite(gSprites + eSlotMachine->unk49[i]);
- }
+ DestroySprite(&gSprites[eSlotMachine->unk49[i]]);
for (i = 0; i < 3; i++)
- {
- DestroySprite(gSprites + eSlotMachine->unk4B[i]);
- }
+ DestroySprite(&gSprites[eSlotMachine->unk4B[i]]);
}
static void sub_8105524(void)
{
u8 i;
+
for (i = 0; i < 2; i++)
- {
- DestroySprite(gSprites + eSlotMachine->unk4E[i]);
- }
+ DestroySprite(&gSprites[eSlotMachine->unk4E[i]]);
}
static void sub_8105554(void)
{
- DestroySprite(gSprites + eSlotMachine->unk42);
+ DestroySprite(&gSprites[eSlotMachine->unk42]);
}
static const struct SpriteTemplate gSpriteTemplate_83ED504;
@@ -4344,7 +3384,7 @@ static const struct SpriteTemplate gSpriteTemplate_83ED504;
static void sub_8105578(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0x98, 0x20, 5);
- struct Sprite *sprite = gSprites + spriteId;
+ struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->hFlip = TRUE;
eSlotMachine->unk50[0] = spriteId;
@@ -4354,7 +3394,7 @@ static void sub_8105578(void)
sprite->data[7] = 0x20;
spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0xb8, 0x20, 5);
- sprite = gSprites + spriteId;
+ sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
eSlotMachine->unk50[1] = spriteId;
sprite->data[1] = 1;
@@ -4395,9 +3435,7 @@ static void sub_81056C0(void)
u8 i;
for (i = 0; i < 2; i++)
- {
- DestroySprite(gSprites + eSlotMachine->unk50[i]);
- }
+ DestroySprite(&gSprites[eSlotMachine->unk50[i]]);
}
static const struct SpriteTemplate gSpriteTemplate_83ED51C;
@@ -4442,9 +3480,7 @@ 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]);
- }
+ DestroySprite(&gSprites[eSlotMachine->unk52[i]]);
}
static const struct SpriteTemplate gSpriteTemplate_83ED534;
@@ -4463,7 +3499,7 @@ static void sub_8105894(struct Sprite *sprite)
static void sub_81058A0(void)
{
- DestroySprite(gSprites + eSlotMachine->unk41);
+ DestroySprite(&gSprites[eSlotMachine->unk41]);
}
static const struct SpriteTemplate gSpriteTemplate_83ED54C;
@@ -4475,7 +3511,7 @@ static void sub_81058C4(void)
for (i = 0; i < 4; i++)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED54C, 0x50 - gSpriteCoordOffsetX, 0x44, 0);
- struct Sprite *sprite = gSprites + spriteId;
+ struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
sprite->data[0] = sp[i];
@@ -4506,7 +3542,7 @@ static void sub_81059B8(void)
u8 i;
for (i = 0; i < 4; i++)
{
- DestroySprite(gSprites + eSlotMachine->unk54[i]);
+ DestroySprite(&gSprites[eSlotMachine->unk54[i]]);
}
}
@@ -4515,7 +3551,7 @@ static const struct SpriteTemplate gSpriteTemplate_83ED564;
static void sub_81059E8(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED564, 0xa8, 0x3c, 8);
- struct Sprite *sprite = gSprites + spriteId;
+ struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
InitSpriteAffineAnim(sprite);
@@ -4556,7 +3592,7 @@ u8 sub_8105ACC(void)
static void sub_8105AEC(void)
{
- struct Sprite *sprite = gSprites + eSlotMachine->unk43;
+ struct Sprite *sprite = &gSprites[eSlotMachine->unk43];
FreeOamMatrix(sprite->oam.matrixNum);
DestroySprite(sprite);
}
@@ -4566,7 +3602,7 @@ 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;
+ struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 2;
sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
InitSpriteAffineAnim(sprite);
@@ -4581,7 +3617,7 @@ static void sub_8105B70(struct Sprite *sprite)
static void sub_8105B88(u8 spriteId)
{
- struct Sprite *sprite = gSprites + spriteId;
+ struct Sprite *sprite = &gSprites[spriteId];
FreeOamMatrix(sprite->oam.matrixNum);
DestroySprite(sprite);
}
@@ -4600,7 +3636,7 @@ 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;
+ struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 3;
sprite->callback = callback;
sprite->data[6] = a4;
@@ -4657,30 +3693,26 @@ 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;
+ 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;
}
}
@@ -4688,30 +3720,26 @@ 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;
+ 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;
}
}
@@ -4719,41 +3747,37 @@ static void sub_8105E08(struct Sprite *sprite)
{
switch (sprite->data[0])
{
- case 0:
- StartSpriteAnim(sprite, eSlotMachine->unk0A - 1);
+ case 0:
+ StartSpriteAnim(sprite, eSlotMachine->unk0A - 1);
+ sprite->data[0]++;
+ // fallthrough
+ case 1:
+ if (++sprite->data[1] >= 4)
+ {
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;
+ 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;
}
}
@@ -4761,39 +3785,39 @@ static void sub_8105EB4(struct Sprite *sprite)
{
switch (sprite->data[0])
{
- case 0:
- sprite->animPaused = TRUE;
+ 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]++;
- // 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)
+ }
+ 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->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[1] >>= 2;
- sprite->data[3] = 0;
- if (sprite->data[1] == 0)
- {
- sprite->data[0]++;
- sprite->data[7] = 0;
- sprite->animPaused = FALSE;
- }
+ sprite->data[0]++;
+ sprite->data[7] = 0;
+ sprite->animPaused = FALSE;
}
}
- sprite->data[2]++;
- sprite->data[2] &= 0x07;
- break;
+ }
+ sprite->data[2]++;
+ sprite->data[2] &= 0x07;
+ break;
}
}
@@ -4801,21 +3825,19 @@ 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;
+ 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;
}
}
@@ -4823,35 +3845,33 @@ 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;
- }
+ 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;
- 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;
+ }
+ 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;
}
}
@@ -4889,40 +3909,30 @@ static void sub_81060FC(struct Sprite *sprite)
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]];
+ 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]++;
- // 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;
+ 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;
}
}
@@ -4937,10 +3947,8 @@ static void sub_81061C8(struct Sprite *sprite)
}
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])
- {
+ if (sprite->data[1] != 0)
sprite->data[1]--;
- }
}
static void sub_8106230(struct Sprite *sprite)
@@ -4959,13 +3967,9 @@ static void sub_8106230(struct Sprite *sprite)
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)
{
@@ -4975,9 +3979,7 @@ static void sub_8106230(struct Sprite *sprite)
break;
case 2:
if (eSlotMachine->bet == 0)
- {
break;
- }
sub_8104D30(5, SpriteCallbackDummy, 0xd0, 0x74, 0);
eSlotMachine->win0h = 0xc0e0;
eSlotMachine->win0v = 0x6880;
@@ -4990,13 +3992,9 @@ static void sub_8106230(struct Sprite *sprite)
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)
{
@@ -5009,7 +4007,6 @@ static void sub_8106230(struct Sprite *sprite)
static void nullsub_70(void)
{
-
}
static void sub_8106364(void)
@@ -5058,14 +4055,13 @@ static void sub_8106404(void)
{
u8 j;
for (j = 0; j < 0x20; j++, dest++)
- {
*dest = src[j];
- }
}
LoadSpriteSheet(sheet);
}
-static void sub_8106448(void) {
+static void sub_8106448(void)
+{
LZDecompressWram(gSlotMachine_Gfx, eSlotMachineGfxBuffer);
DmaCopyLarge16(3, eSlotMachineGfxBuffer, BG_VRAM, SLOTMACHINE_GFX_TILES * 32, 0x1000);
@@ -5074,12 +4070,14 @@ static void sub_8106448(void) {
LoadPalette(gPalette_83EDE24, 208, 32);
}
-static void sub_81064B8(void) {
+static void sub_81064B8(void)
+{
CpuCopy16(gUnknown_08E95AB8, BG_SCREEN_ADDR(29), 20 * 32 * 2);
LoadSlotMachineWheelOverlay();
}
-static void LoadSlotMachineWheelOverlay(void) {
+static void LoadSlotMachineWheelOverlay(void)
+{
s16 x, y, dx;
u16 *screen;
@@ -5099,13 +4097,12 @@ static void LoadSlotMachineWheelOverlay(void) {
screen[12 * 32 + x] = 0x28BE;
for (y = 7; y <= 11; y++)
- {
screen[y * 32 + x] = 0x20BF;
- }
}
}
-static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) {
+static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4)
+{
u16 *vram = BG_SCREEN_ADDR(29);
vram[15 * 32 + arg0] = arg1;
@@ -5125,1230 +4122,10 @@ static void sub_81065DC(void)
for (y = 0; y < 20; y++)
{
for (x = 0; x < 30; x++)
- {
screen[x + y * 32] = 0;
- }
}
}
-#if DEBUG
-__attribute__((naked))
-void debug_sub_811B1C4()
-{
- asm(
- " ldr r1, .__1_\n"
- " ldrb r0, [r1]\n"
- " mov r3, #0x2\n"
- " orr r0, r0, r3\n"
- " strb r0, [r1]\n"
- " ldr r2, .__1_ + 4\n"
- " ldrb r1, [r2]\n"
- " mov r0, #0x2\n"
- " eor r1, r1, r0\n"
- " neg r0, r1\n"
- " orr r0, r0, r1\n"
- " asr r0, r0, #0x1f\n"
- " and r0, r0, r3\n"
- " strb r0, [r2]\n"
- " bx lr\n"
- ".__2_:\n"
- " .align 2, 0\n"
- ".__1_:\n"
- " .word unk_debug_bss_1_3\n"
- " .word unk_debug_bss_1_0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void debug_sub_811B1EC()
-{
- asm(
- " ldr r2, .__3\n"
- " ldrb r0, [r2]\n"
- " mov r1, #0x1\n"
- " orr r0, r0, r1\n"
- " strb r0, [r2]\n"
- " ldr r2, .__3 + 4\n"
- " ldrb r0, [r2]\n"
- " mov r1, #0x1\n"
- " eor r0, r0, r1\n"
- " neg r0, r0\n"
- " lsr r0, r0, #0x1f\n"
- " strb r0, [r2]\n"
- " bx lr\n"
- ".__4:\n"
- " .align 2, 0\n"
- ".__3:\n"
- " .word unk_debug_bss_1_3\n"
- " .word unk_debug_bss_1_0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void debug_sub_811B210()
-{
- asm(
- " ldr r1, .__5\n"
- " ldrb r0, [r1]\n"
- " mov r3, #0x4\n"
- " orr r0, r0, r3\n"
- " strb r0, [r1]\n"
- " ldr r2, .__5 + 4\n"
- " ldrb r1, [r2]\n"
- " mov r0, #0x4\n"
- " eor r1, r1, r0\n"
- " neg r0, r1\n"
- " orr r0, r0, r1\n"
- " asr r0, r0, #0x1f\n"
- " and r0, r0, r3\n"
- " strb r0, [r2]\n"
- " bx lr\n"
- ".__6:\n"
- " .align 2, 0\n"
- ".__5:\n"
- " .word unk_debug_bss_1_3\n"
- " .word unk_debug_bss_1_0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void debug_sub_811B238()
-{
- asm(
- " ldr r1, .__7\n"
- " ldrb r0, [r1]\n"
- " mov r3, #0x8\n"
- " orr r0, r0, r3\n"
- " strb r0, [r1]\n"
- " ldr r2, .__7 + 4\n"
- " ldrb r1, [r2]\n"
- " mov r0, #0x8\n"
- " eor r1, r1, r0\n"
- " neg r0, r1\n"
- " orr r0, r0, r1\n"
- " asr r0, r0, #0x1f\n"
- " and r0, r0, r3\n"
- " strb r0, [r2]\n"
- " bx lr\n"
- ".__8:\n"
- " .align 2, 0\n"
- ".__7:\n"
- " .word unk_debug_bss_1_3\n"
- " .word unk_debug_bss_1_0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void debug_sub_811B260()
-{
- asm(
- " ldr r1, .__9\n"
- " ldrb r0, [r1]\n"
- " mov r3, #0x10\n"
- " orr r0, r0, r3\n"
- " strb r0, [r1]\n"
- " ldr r2, .__9 + 4\n"
- " ldrb r1, [r2]\n"
- " mov r0, #0x10\n"
- " eor r1, r1, r0\n"
- " neg r0, r1\n"
- " orr r0, r0, r1\n"
- " asr r0, r0, #0x1f\n"
- " and r0, r0, r3\n"
- " strb r0, [r2]\n"
- " bx lr\n"
- ".__10:\n"
- " .align 2, 0\n"
- ".__9:\n"
- " .word unk_debug_bss_1_3\n"
- " .word unk_debug_bss_1_0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void debug_sub_811B288()
-{
- asm(
- " ldr r1, .__11\n"
- " ldrb r0, [r1]\n"
- " mov r3, #0x40\n"
- " orr r0, r0, r3\n"
- " strb r0, [r1]\n"
- " ldr r2, .__11 + 4\n"
- " ldrb r1, [r2]\n"
- " mov r0, #0x40\n"
- " eor r1, r1, r0\n"
- " neg r0, r1\n"
- " orr r0, r0, r1\n"
- " asr r0, r0, #0x1f\n"
- " and r0, r0, r3\n"
- " strb r0, [r2]\n"
- " bx lr\n"
- ".__12:\n"
- " .align 2, 0\n"
- ".__11:\n"
- " .word unk_debug_bss_1_3\n"
- " .word unk_debug_bss_1_0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void debug_sub_811B2B0()
-{
- asm(
- " ldr r1, .__13\n"
- " ldrb r0, [r1]\n"
- " mov r3, #0x80\n"
- " orr r0, r0, r3\n"
- " strb r0, [r1]\n"
- " ldr r2, .__13 + 4\n"
- " ldrb r1, [r2]\n"
- " mov r0, #0x80\n"
- " eor r1, r1, r0\n"
- " neg r0, r1\n"
- " orr r0, r0, r1\n"
- " asr r0, r0, #0x1f\n"
- " and r0, r0, r3\n"
- " strb r0, [r2]\n"
- " bx lr\n"
- ".__14:\n"
- " .align 2, 0\n"
- ".__13:\n"
- " .word unk_debug_bss_1_3\n"
- " .word unk_debug_bss_1_0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void debug_sub_811B2D8()
-{
- asm(
- " ldr r0, .__15\n"
- " ldrb r1, [r0]\n"
- " mov r2, #0x20\n"
- " orr r1, r1, r2\n"
- " strb r1, [r0]\n"
- " bx lr\n"
- ".__16:\n"
- " .align 2, 0\n"
- ".__15:\n"
- " .word unk_debug_bss_1_3\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void debug_sub_811B2E8()
-{
- asm(
- " push {lr}\n"
- " add sp, sp, #0xfffffffc\n"
- " ldr r0, .__17\n"
- " ldrb r1, [r0, #0x1]\n"
- " add r1, r1, #0x1\n"
- " mov r0, sp\n"
- " mov r2, #0x2\n"
- " mov r3, #0x1\n"
- " bl ConvertIntToDecimalStringN\n"
- " mov r0, sp\n"
- " mov r1, #0x6\n"
- " mov r2, #0x1\n"
- " bl Menu_PrintText\n"
- " add sp, sp, #0x4\n"
- " pop {r0}\n"
- " bx r0\n"
- ".__18:\n"
- " .align 2, 0\n"
- ".__17:\n"
- " .word +0x2000000\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void debug_sub_811B310()
-{
- asm(
- " push {r4, lr}\n"
- " add sp, sp, #0xfffffff8\n"
- " ldr r0, .__21\n"
- " mov r1, #0x1\n"
- " mov r2, #0x1\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__21 + 4\n"
- " mov r1, #0x1\n"
- " mov r2, #0x3\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__21 + 8\n"
- " mov r1, #0x1\n"
- " mov r2, #0x5\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__21 + 12\n"
- " mov r1, #0x1\n"
- " mov r2, #0x7\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__21 + 16\n"
- " mov r1, #0x1\n"
- " mov r2, #0x9\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__21 + 20\n"
- " mov r1, #0x1\n"
- " mov r2, #0xb\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__21 + 24\n"
- " mov r1, #0x1\n"
- " mov r2, #0xd\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__21 + 28\n"
- " mov r1, #0x1\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__21 + 32\n"
- " mov r1, #0x1\n"
- " mov r2, #0x11\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__21 + 36\n"
- " mov r1, #0xf\n"
- " mov r2, #0x1\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__21 + 40\n"
- " mov r1, #0xf\n"
- " mov r2, #0x3\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__21 + 44\n"
- " mov r1, #0xf\n"
- " mov r2, #0x5\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__21 + 48\n"
- " mov r1, #0xf\n"
- " mov r2, #0x7\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__21 + 52\n"
- " mov r1, #0xf\n"
- " mov r2, #0x9\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__21 + 56\n"
- " mov r1, #0xf\n"
- " mov r2, #0xb\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__21 + 60\n"
- " mov r1, #0xf\n"
- " mov r2, #0xd\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__21 + 64\n"
- " mov r1, #0xf\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__21 + 68\n"
- " mov r1, #0xf\n"
- " mov r2, #0x11\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__21 + 72\n"
- " ldrb r0, [r0, #0x3]\n"
- " cmp r0, #0\n"
- " bne .__19 @cond_branch\n"
- " ldr r0, .__21 + 76\n"
- " mov r1, #0xa\n"
- " mov r2, #0x9\n"
- " bl Menu_PrintText\n"
- " b .__20\n"
- ".__22:\n"
- " .align 2, 0\n"
- ".__21:\n"
- " .word Str_841B1C4\n"
- " .word Str_841B1CB\n"
- " .word Str_841B1D4\n"
- " .word Str_841B1DB\n"
- " .word Str_841B1E2\n"
- " .word Str_841B1E8\n"
- " .word Str_841B1F3\n"
- " .word Str_841B202\n"
- " .word Str_841B24C\n"
- " .word Str_841B211\n"
- " .word Str_841B219\n"
- " .word Str_841B220\n"
- " .word Str_841B227\n"
- " .word Str_841B22E\n"
- " .word Str_841B235\n"
- " .word Str_841B23B\n"
- " .word Str_841B23F\n"
- " .word Str_841B243\n"
- " .word +0x2000000\n"
- " .word Str_841B246\n"
- ".__19:\n"
- " ldr r0, .__30\n"
- " mov r1, #0xa\n"
- " mov r2, #0x9\n"
- " bl Menu_PrintText\n"
- ".__20:\n"
- " ldr r4, .__30 + 4\n"
- " ldr r1, [r4, #0x68]\n"
- " mov r0, sp\n"
- " mov r2, #0x2\n"
- " mov r3, #0x4\n"
- " bl ConvertIntToDecimalStringN\n"
- " mov r0, sp\n"
- " mov r1, #0xa\n"
- " mov r2, #0x3\n"
- " bl Menu_PrintText\n"
- " ldr r1, [r4, #0x6c]\n"
- " mov r0, sp\n"
- " mov r2, #0x2\n"
- " mov r3, #0x4\n"
- " bl ConvertIntToDecimalStringN\n"
- " mov r0, sp\n"
- " mov r1, #0xa\n"
- " mov r2, #0x5\n"
- " bl Menu_PrintText\n"
- " mov r0, #0x10\n"
- " ldsh r1, [r4, r0]\n"
- " mov r0, sp\n"
- " mov r2, #0x2\n"
- " mov r3, #0x4\n"
- " bl ConvertIntToDecimalStringN\n"
- " mov r0, sp\n"
- " mov r1, #0xa\n"
- " mov r2, #0x7\n"
- " bl Menu_PrintText\n"
- " ldr r1, [r4, #0x70]\n"
- " mov r0, sp\n"
- " mov r2, #0x2\n"
- " mov r3, #0x4\n"
- " bl ConvertIntToDecimalStringN\n"
- " mov r0, sp\n"
- " mov r1, #0x14\n"
- " mov r2, #0x3\n"
- " bl Menu_PrintText\n"
- " ldr r1, [r4, #0x74]\n"
- " mov r0, sp\n"
- " mov r2, #0x2\n"
- " mov r3, #0x4\n"
- " bl ConvertIntToDecimalStringN\n"
- " mov r0, sp\n"
- " mov r1, #0x14\n"
- " mov r2, #0x5\n"
- " bl Menu_PrintText\n"
- " ldr r1, [r4, #0x78]\n"
- " mov r0, sp\n"
- " mov r2, #0x2\n"
- " mov r3, #0x4\n"
- " bl ConvertIntToDecimalStringN\n"
- " mov r0, sp\n"
- " mov r1, #0x14\n"
- " mov r2, #0x7\n"
- " bl Menu_PrintText\n"
- " ldr r1, [r4, #0x7c]\n"
- " mov r0, sp\n"
- " mov r2, #0x2\n"
- " mov r3, #0x4\n"
- " bl ConvertIntToDecimalStringN\n"
- " mov r0, sp\n"
- " mov r1, #0x14\n"
- " mov r2, #0x9\n"
- " bl Menu_PrintText\n"
- " add r0, r4, #0\n"
- " add r0, r0, #0x80\n"
- " ldr r1, [r0]\n"
- " mov r0, sp\n"
- " mov r2, #0x2\n"
- " mov r3, #0x4\n"
- " bl ConvertIntToDecimalStringN\n"
- " mov r0, sp\n"
- " mov r1, #0x14\n"
- " mov r2, #0xb\n"
- " bl Menu_PrintText\n"
- " add r0, r4, #0\n"
- " add r0, r0, #0x84\n"
- " ldr r1, [r0]\n"
- " mov r0, sp\n"
- " mov r2, #0x2\n"
- " mov r3, #0x4\n"
- " bl ConvertIntToDecimalStringN\n"
- " mov r0, sp\n"
- " mov r1, #0x14\n"
- " mov r2, #0xd\n"
- " bl Menu_PrintText\n"
- " add r0, r4, #0\n"
- " add r0, r0, #0x88\n"
- " ldr r1, [r0]\n"
- " mov r0, sp\n"
- " mov r2, #0x2\n"
- " mov r3, #0x4\n"
- " bl ConvertIntToDecimalStringN\n"
- " mov r0, sp\n"
- " mov r1, #0x14\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " add r0, r4, #0\n"
- " add r0, r0, #0x8c\n"
- " ldr r1, [r0]\n"
- " mov r0, sp\n"
- " mov r2, #0x2\n"
- " mov r3, #0x4\n"
- " bl ConvertIntToDecimalStringN\n"
- " mov r0, sp\n"
- " mov r1, #0x14\n"
- " mov r2, #0x11\n"
- " bl Menu_PrintText\n"
- " ldr r1, .__30 + 8\n"
- " ldrb r0, [r1]\n"
- " cmp r0, #0\n"
- " beq .__23 @cond_branch\n"
- " mov r2, #0x0\n"
- " cmp r0, #0x8\n"
- " beq .__24 @cond_branch\n"
- " cmp r0, #0x8\n"
- " bgt .__25 @cond_branch\n"
- " cmp r0, #0x2\n"
- " beq .__26 @cond_branch\n"
- " cmp r0, #0x2\n"
- " bgt .__27 @cond_branch\n"
- " cmp r0, #0x1\n"
- " beq .__28 @cond_branch\n"
- " b .__45\n"
- ".__31:\n"
- " .align 2, 0\n"
- ".__30:\n"
- " .word Str_841B249\n"
- " .word +0x2000000\n"
- " .word unk_debug_bss_1_0\n"
- ".__27:\n"
- " cmp r0, #0x4\n"
- " beq .__32 @cond_branch\n"
- " b .__45\n"
- ".__25:\n"
- " cmp r0, #0x40\n"
- " beq .__34 @cond_branch\n"
- " cmp r0, #0x40\n"
- " bgt .__35 @cond_branch\n"
- " cmp r0, #0x10\n"
- " beq .__36 @cond_branch\n"
- " b .__45\n"
- ".__35:\n"
- " cmp r0, #0x80\n"
- " beq .__38 @cond_branch\n"
- " b .__45\n"
- ".__26:\n"
- " mov r2, #0x3\n"
- " b .__45\n"
- ".__28:\n"
- " mov r2, #0x5\n"
- " b .__45\n"
- ".__32:\n"
- " mov r2, #0x7\n"
- " b .__45\n"
- ".__24:\n"
- " mov r2, #0x9\n"
- " b .__45\n"
- ".__36:\n"
- " mov r2, #0xb\n"
- " b .__45\n"
- ".__34:\n"
- " mov r2, #0xd\n"
- " b .__45\n"
- ".__38:\n"
- " mov r2, #0xf\n"
- ".__45:\n"
- " ldr r0, .__46\n"
- " mov r1, #0x17\n"
- " bl Menu_PrintText\n"
- ".__23:\n"
- " bl debug_sub_811B2E8\n"
- " add sp, sp, #0x8\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- ".__47:\n"
- " .align 2, 0\n"
- ".__46:\n"
- " .word Str_841B26D\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void debug_sub_811B5B4()
-{
- asm(
- " push {lr}\n"
- " add r2, r0, #0\n"
- " ldr r0, [r2]\n"
- " add r0, r0, r1\n"
- " str r0, [r2]\n"
- " ldr r1, .__49\n"
- " cmp r0, r1\n"
- " ble .__48 @cond_branch\n"
- " str r1, [r2]\n"
- ".__48:\n"
- " pop {r0}\n"
- " bx r0\n"
- ".__50:\n"
- " .align 2, 0\n"
- ".__49:\n"
- " .word 0x270f\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void debug_sub_811B5D0()
-{
- asm(
- " ldr r0, .__51\n"
- " mov r1, #0x0\n"
- " strb r1, [r0]\n"
- " ldr r0, .__51 + 4\n"
- " strb r1, [r0]\n"
- " ldr r0, .__51 + 8\n"
- " strb r1, [r0]\n"
- " ldr r0, .__51 + 12\n"
- " strb r1, [r0]\n"
- " ldr r2, .__51 + 16\n"
- " mov r0, #0x0\n"
- " str r0, [r2, #0x68]\n"
- " str r0, [r2, #0x6c]\n"
- " str r0, [r2, #0x70]\n"
- " str r0, [r2, #0x74]\n"
- " str r0, [r2, #0x78]\n"
- " str r0, [r2, #0x7c]\n"
- " add r1, r2, #0\n"
- " add r1, r1, #0x80\n"
- " str r0, [r1]\n"
- " add r1, r1, #0x4\n"
- " str r0, [r1]\n"
- " add r1, r1, #0x4\n"
- " str r0, [r1]\n"
- " add r1, r1, #0x4\n"
- " str r0, [r1]\n"
- " add r1, r1, #0x4\n"
- " str r0, [r1]\n"
- " bx lr\n"
- ".__52:\n"
- " .align 2, 0\n"
- ".__51:\n"
- " .word unk_debug_bss_1_0\n"
- " .word unk_debug_bss_1_2\n"
- " .word unk_debug_bss_1_3\n"
- " .word unk_debug_bss_1_4\n"
- " .word +0x2000000\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void debug_sub_811B620()
-{
- asm(
- " push {lr}\n"
- " ldr r0, .__53\n"
- " mov r1, #0x0\n"
- " bl CreateTask\n"
- " pop {r0}\n"
- " bx r0\n"
- ".__54:\n"
- " .align 2, 0\n"
- ".__53:\n"
- " .word debug_sub_811B654+1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void debug_sub_811B634()
-{
- asm(
- " push {lr}\n"
- " ldr r0, .__57\n"
- " bl FindTaskIdByFunc\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " cmp r0, #0xff\n"
- " beq .__55 @cond_branch\n"
- " mov r0, #0x0\n"
- " b .__56\n"
- ".__58:\n"
- " .align 2, 0\n"
- ".__57:\n"
- " .word debug_sub_811B654+1\n"
- ".__55:\n"
- " mov r0, #0x1\n"
- ".__56:\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void debug_sub_811B654()
-{
- asm(
- " push {r4, r5, r6, r7, lr}\n"
- " add sp, sp, #0xfffffff8\n"
- " lsl r0, r0, #0x18\n"
- " lsr r6, r0, #0x18\n"
- " lsl r0, r6, #0x2\n"
- " add r0, r0, r6\n"
- " lsl r0, r0, #0x3\n"
- " ldr r1, .__63\n"
- " add r5, r0, r1\n"
- " mov r0, #0x8\n"
- " ldsh r1, [r5, r0]\n"
- " cmp r1, #0x1\n"
- " beq .__59 @cond_branch\n"
- " cmp r1, #0x1\n"
- " bgt .__60 @cond_branch\n"
- " cmp r1, #0\n"
- " beq .__61 @cond_branch\n"
- " b .__116\n"
- ".__64:\n"
- " .align 2, 0\n"
- ".__63:\n"
- " .word gTasks\n"
- ".__60:\n"
- " cmp r1, #0x2\n"
- " bne .__65 @cond_branch\n"
- " b .__66\n"
- ".__65:\n"
- " cmp r1, #0x3\n"
- " bne .__67 @cond_branch\n"
- " b .__68\n"
- ".__67:\n"
- " b .__116\n"
- ".__61:\n"
- " mov r0, #0x0\n"
- " mov r1, #0x0\n"
- " mov r2, #0x18\n"
- " mov r3, #0x13\n"
- " bl Menu_DrawStdWindowFrame\n"
- " bl debug_sub_811B310\n"
- " ldrh r0, [r5, #0x8]\n"
- " add r0, r0, #0x1\n"
- " strh r0, [r5, #0x8]\n"
- " b .__116\n"
- ".__59:\n"
- " ldr r7, .__76\n"
- " ldrh r2, [r7, #0x2e]\n"
- " mov r0, #0x2\n"
- " and r0, r0, r2\n"
- " cmp r0, #0\n"
- " beq .__71 @cond_branch\n"
- " b .__94\n"
- ".__71:\n"
- " mov r0, #0x20\n"
- " and r0, r0, r2\n"
- " lsl r0, r0, #0x10\n"
- " lsr r3, r0, #0x10\n"
- " cmp r3, #0\n"
- " beq .__73 @cond_branch\n"
- " ldr r1, .__76 + 4\n"
- " ldrb r0, [r1, #0x1]\n"
- " sub r0, r0, #0x1\n"
- " strb r0, [r1, #0x1]\n"
- " lsl r0, r0, #0x18\n"
- " cmp r0, #0\n"
- " bge .__79 @cond_branch\n"
- " mov r0, #0x5\n"
- " strb r0, [r1, #0x1]\n"
- " b .__79\n"
- ".__77:\n"
- " .align 2, 0\n"
- ".__76:\n"
- " .word gMain\n"
- " .word +0x2000000\n"
- ".__73:\n"
- " mov r0, #0x10\n"
- " and r0, r0, r2\n"
- " cmp r0, #0\n"
- " beq .__78 @cond_branch\n"
- " ldr r1, .__81\n"
- " ldrb r0, [r1, #0x1]\n"
- " add r0, r0, #0x1\n"
- " strb r0, [r1, #0x1]\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " cmp r0, #0x5\n"
- " bls .__79 @cond_branch\n"
- " strb r3, [r1, #0x1]\n"
- ".__79:\n"
- " bl debug_sub_811B2E8\n"
- " b .__116\n"
- ".__82:\n"
- " .align 2, 0\n"
- ".__81:\n"
- " .word +0x2000000\n"
- ".__78:\n"
- " and r1, r1, r2\n"
- " lsl r0, r1, #0x10\n"
- " lsr r4, r0, #0x10\n"
- " cmp r4, #0\n"
- " beq .__83 @cond_branch\n"
- " mov r0, #0x3\n"
- " strh r0, [r5, #0x8]\n"
- " bl Menu_EraseScreen\n"
- " mov r0, #0x0\n"
- " mov r1, #0x0\n"
- " mov r2, #0x9\n"
- " mov r3, #0x5\n"
- " bl Menu_DrawStdWindowFrame\n"
- " ldr r0, .__85\n"
- " mov r1, #0x1\n"
- " mov r2, #0x1\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__85 + 4\n"
- " mov r1, #0x1\n"
- " mov r2, #0x3\n"
- " bl Menu_PrintText\n"
- " b .__116\n"
- ".__86:\n"
- " .align 2, 0\n"
- ".__85:\n"
- " .word Str_841B25C\n"
- " .word Str_841B264\n"
- ".__83:\n"
- " mov r0, #0x4\n"
- " and r0, r0, r2\n"
- " cmp r0, #0\n"
- " beq .__87 @cond_branch\n"
- " ldr r0, .__91\n"
- " strb r4, [r0]\n"
- " ldr r0, .__91 + 4\n"
- " strb r4, [r0]\n"
- " bl Menu_EraseScreen\n"
- " mov r0, #0x0\n"
- " mov r1, #0x0\n"
- " mov r2, #0xa\n"
- " mov r3, #0x13\n"
- " bl Menu_DrawStdWindowFrame\n"
- " ldr r0, .__91 + 8\n"
- " mov r1, #0x1\n"
- " mov r2, #0x1\n"
- " bl Menu_PrintText\n"
- " ldr r3, .__91 + 12\n"
- " mov r0, #0x2\n"
- " mov r1, #0x3\n"
- " mov r2, #0x8\n"
- " bl Menu_PrintItems\n"
- " str r4, [sp]\n"
- " mov r0, #0x9\n"
- " str r0, [sp, #0x4]\n"
- " mov r0, #0x0\n"
- " mov r1, #0x1\n"
- " mov r2, #0x3\n"
- " mov r3, #0x8\n"
- " bl InitMenu\n"
- " ldrh r0, [r5, #0x8]\n"
- " add r0, r0, #0x1\n"
- " strh r0, [r5, #0x8]\n"
- ".__87:\n"
- " ldrh r1, [r7, #0x2e]\n"
- " mov r0, #0x8\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " bne .__88 @cond_branch\n"
- " b .__116\n"
- ".__88:\n"
- " ldr r1, .__91 + 16\n"
- " mov r0, #0x1\n"
- " strb r0, [r1]\n"
- " b .__94\n"
- ".__92:\n"
- " .align 2, 0\n"
- ".__91:\n"
- " .word unk_debug_bss_1_2\n"
- " .word unk_debug_bss_1_3\n"
- " .word Str_841B254\n"
- " .word _841B270\n"
- " .word unk_debug_bss_1_4\n"
- ".__66:\n"
- " bl Menu_ProcessInput\n"
- " lsl r0, r0, #0x18\n"
- " asr r2, r0, #0x18\n"
- " mov r0, #0x2\n"
- " neg r0, r0\n"
- " cmp r2, r0\n"
- " beq .__116 @cond_branch\n"
- " add r0, r0, #0x1\n"
- " cmp r2, r0\n"
- " beq .__94 @cond_branch\n"
- " ldr r1, .__96\n"
- " mov r0, #0x1\n"
- " strb r0, [r1]\n"
- " ldr r0, .__96 + 4\n"
- " lsl r1, r2, #0x3\n"
- " add r0, r0, #0x4\n"
- " add r1, r1, r0\n"
- " ldr r0, [r1]\n"
- " bl _call_via_r0\n"
- ".__94:\n"
- " bl Menu_EraseScreen\n"
- " add r0, r6, #0\n"
- " bl DestroyTask\n"
- " b .__116\n"
- ".__97:\n"
- " .align 2, 0\n"
- ".__96:\n"
- " .word unk_debug_bss_1_2\n"
- " .word _841B270\n"
- ".__68:\n"
- " ldr r2, .__100\n"
- " ldrh r1, [r2, #0x30]\n"
- " mov r0, #0x80\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq .__98 @cond_branch\n"
- " ldr r2, .__100 + 4\n"
- " ldrh r0, [r2, #0xc]\n"
- " add r0, r0, #0x64\n"
- " b .__99\n"
- ".__101:\n"
- " .align 2, 0\n"
- ".__100:\n"
- " .word gMain\n"
- " .word +0x2000000\n"
- ".__98:\n"
- " mov r0, #0x40\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq .__102 @cond_branch\n"
- " ldr r1, .__104\n"
- " ldrh r0, [r1, #0xc]\n"
- " sub r0, r0, #0x64\n"
- " b .__103\n"
- ".__105:\n"
- " .align 2, 0\n"
- ".__104:\n"
- " .word +0x2000000\n"
- ".__102:\n"
- " mov r0, #0x20\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq .__106 @cond_branch\n"
- " ldr r1, .__109\n"
- " ldr r2, .__109 + 4\n"
- " add r0, r2, #0\n"
- " ldrh r2, [r1, #0xc]\n"
- " add r0, r0, r2\n"
- ".__103:\n"
- " strh r0, [r1, #0xc]\n"
- " lsl r0, r0, #0x10\n"
- " cmp r0, #0\n"
- " bgt .__116 @cond_branch\n"
- " ldr r0, .__109 + 8\n"
- " strh r0, [r1, #0xc]\n"
- " b .__116\n"
- ".__110:\n"
- " .align 2, 0\n"
- ".__109:\n"
- " .word +0x2000000\n"
- " .word 0xfffffc18\n"
- " .word 0x270f\n"
- ".__106:\n"
- " mov r0, #0x10\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq .__111 @cond_branch\n"
- " ldr r2, .__114\n"
- " mov r1, #0xfa\n"
- " lsl r1, r1, #0x2\n"
- " add r0, r1, #0\n"
- " ldrh r1, [r2, #0xc]\n"
- " add r0, r0, r1\n"
- ".__99:\n"
- " strh r0, [r2, #0xc]\n"
- " lsl r0, r0, #0x10\n"
- " asr r0, r0, #0x10\n"
- " ldr r1, .__114 + 4\n"
- " cmp r0, r1\n"
- " ble .__116 @cond_branch\n"
- " strh r1, [r2, #0xc]\n"
- " b .__116\n"
- ".__115:\n"
- " .align 2, 0\n"
- ".__114:\n"
- " .word +0x2000000\n"
- " .word 0x270f\n"
- ".__111:\n"
- " ldrh r1, [r2, #0x2e]\n"
- " mov r0, #0x2\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq .__116 @cond_branch\n"
- " bl Menu_EraseScreen\n"
- " add r0, r6, #0\n"
- " bl DestroyTask\n"
- ".__116:\n"
- " add sp, sp, #0x8\n"
- " pop {r4, r5, r6, r7}\n"
- " pop {r0}\n"
- " bx r0\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void debug_sub_811B894()
-{
- asm(
- " push {r4, r5, r6, r7, lr}\n"
- " mov r7, sl\n"
- " mov r6, r9\n"
- " mov r5, r8\n"
- " push {r5, r6, r7}\n"
- " add sp, sp, #0xfffffffc\n"
- " ldr r1, .__122\n"
- " ldrh r2, [r1, #0x8]\n"
- " mov r0, #0xc0\n"
- " lsl r0, r0, #0x1\n"
- " and r0, r0, r2\n"
- " add r4, r1, #0\n"
- " cmp r0, #0\n"
- " beq .__117 @cond_branch\n"
- " add r1, r1, #0x90\n"
- " ldr r0, [r1]\n"
- " add r0, r0, #0x1\n"
- " str r0, [r1]\n"
- " ldr r2, .__122 + 4\n"
- " cmp r0, r2\n"
- " ble .__118 @cond_branch\n"
- " str r2, [r1]\n"
- ".__118:\n"
- " add r0, r4, #0\n"
- " add r0, r0, #0x88\n"
- " ldr r1, [r1]\n"
- " ldr r0, [r0]\n"
- " cmp r1, r0\n"
- " beq .__119 @cond_branch\n"
- " ldr r0, .__122 + 8\n"
- " mov r1, #0x4\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " ldr r1, .__122 + 12\n"
- " mov r0, #0x0\n"
- " strb r0, [r1]\n"
- ".__119:\n"
- " ldrb r1, [r4, #0x4]\n"
- " mov r0, #0x80\n"
- " and r0, r0, r1\n"
- " lsl r0, r0, #0x18\n"
- " lsr r4, r0, #0x18\n"
- " cmp r4, #0\n"
- " bne .__126 @cond_branch\n"
- " ldr r0, .__122 + 16\n"
- " mov r1, #0x4\n"
- " mov r2, #0x11\n"
- " b .__121\n"
- ".__123:\n"
- " .align 2, 0\n"
- ".__122:\n"
- " .word +0x2000000\n"
- " .word 0x270f\n"
- " .word Str_841B2B0\n"
- " .word unk_debug_bss_1_4\n"
- " .word Str_841B2D3\n"
- ".__117:\n"
- " lsl r0, r2, #0x10\n"
- " cmp r0, #0\n"
- " beq .__127 @cond_branch\n"
- " ldrb r1, [r4, #0x4]\n"
- " mov r0, #0x80\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq .__126 @cond_branch\n"
- " mov r4, #0x3\n"
- " and r4, r4, r2\n"
- " cmp r4, #0\n"
- " bne .__126 @cond_branch\n"
- " ldr r0, .__163\n"
- " mov r1, #0x4\n"
- " mov r2, #0x2\n"
- ".__121:\n"
- " bl Menu_PrintText\n"
- " ldr r0, .__163 + 4\n"
- " strb r4, [r0]\n"
- ".__126:\n"
- " ldr r0, .__163 + 8\n"
- " ldrh r1, [r0, #0x8]\n"
- " add r4, r0, #0\n"
- " cmp r1, #0\n"
- " beq .__127 @cond_branch\n"
- " b .__162\n"
- ".__127:\n"
- " mov r1, #0x12\n"
- " ldsh r0, [r4, r1]\n"
- " cmp r0, #0x3\n"
- " beq .__129 @cond_branch\n"
- " b .__162\n"
- ".__129:\n"
- " ldrb r1, [r4, #0x4]\n"
- " mov r0, #0x80\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq .__131 @cond_branch\n"
- " b .__162\n"
- ".__131:\n"
- " mov r0, #0x0\n"
- " mov r1, #0x1\n"
- " bl GetTagOfReelSymbolOnScreenAtPos\n"
- " lsl r0, r0, #0x18\n"
- " lsr r7, r0, #0x18\n"
- " mov r0, #0x0\n"
- " mov r1, #0x2\n"
- " bl GetTagOfReelSymbolOnScreenAtPos\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " str r0, [sp]\n"
- " mov r0, #0x0\n"
- " mov r1, #0x3\n"
- " bl GetTagOfReelSymbolOnScreenAtPos\n"
- " lsl r0, r0, #0x18\n"
- " lsr r6, r0, #0x18\n"
- " mov r0, #0x1\n"
- " mov r1, #0x1\n"
- " bl GetTagOfReelSymbolOnScreenAtPos\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " mov r9, r0\n"
- " mov r0, #0x1\n"
- " mov r1, #0x2\n"
- " bl GetTagOfReelSymbolOnScreenAtPos\n"
- " lsl r0, r0, #0x18\n"
- " lsr r4, r0, #0x18\n"
- " mov r0, #0x1\n"
- " mov r1, #0x3\n"
- " bl GetTagOfReelSymbolOnScreenAtPos\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " mov sl, r0\n"
- " mov r0, #0x2\n"
- " mov r1, #0x1\n"
- " bl GetTagOfReelSymbolOnScreenAtPos\n"
- " lsl r0, r0, #0x18\n"
- " lsr r5, r0, #0x18\n"
- " mov r0, #0x2\n"
- " mov r1, #0x2\n"
- " bl GetTagOfReelSymbolOnScreenAtPos\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " mov r8, r0\n"
- " mov r0, #0x2\n"
- " mov r1, #0x3\n"
- " bl GetTagOfReelSymbolOnScreenAtPos\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " cmp r7, #0\n"
- " bne .__134 @cond_branch\n"
- " mov r1, r9\n"
- " cmp r1, #0x1\n"
- " bne .__134 @cond_branch\n"
- " cmp r5, #0\n"
- " beq .__159 @cond_branch\n"
- ".__134:\n"
- " ldr r1, [sp]\n"
- " cmp r1, #0\n"
- " bne .__137 @cond_branch\n"
- " cmp r4, #0x1\n"
- " bne .__137 @cond_branch\n"
- " mov r1, r8\n"
- " cmp r1, #0\n"
- " beq .__159 @cond_branch\n"
- ".__137:\n"
- " cmp r6, #0\n"
- " bne .__140 @cond_branch\n"
- " mov r1, sl\n"
- " cmp r1, #0x1\n"
- " bne .__140 @cond_branch\n"
- " cmp r0, #0\n"
- " beq .__159 @cond_branch\n"
- ".__140:\n"
- " cmp r7, #0\n"
- " bne .__143 @cond_branch\n"
- " cmp r4, #0x1\n"
- " bne .__143 @cond_branch\n"
- " cmp r0, #0\n"
- " beq .__159 @cond_branch\n"
- ".__143:\n"
- " cmp r6, #0\n"
- " bne .__146 @cond_branch\n"
- " cmp r4, #0x1\n"
- " bne .__146 @cond_branch\n"
- " cmp r5, #0\n"
- " beq .__159 @cond_branch\n"
- ".__146:\n"
- " cmp r7, #0x1\n"
- " bne .__149 @cond_branch\n"
- " mov r1, r9\n"
- " cmp r1, #0\n"
- " bne .__149 @cond_branch\n"
- " cmp r5, #0x1\n"
- " beq .__159 @cond_branch\n"
- ".__149:\n"
- " ldr r1, [sp]\n"
- " cmp r1, #0x1\n"
- " bne .__152 @cond_branch\n"
- " cmp r4, #0\n"
- " bne .__152 @cond_branch\n"
- " mov r1, r8\n"
- " cmp r1, #0x1\n"
- " beq .__159 @cond_branch\n"
- ".__152:\n"
- " cmp r6, #0x1\n"
- " bne .__155 @cond_branch\n"
- " mov r1, sl\n"
- " cmp r1, #0\n"
- " bne .__155 @cond_branch\n"
- " cmp r0, #0x1\n"
- " beq .__159 @cond_branch\n"
- ".__155:\n"
- " cmp r7, #0x1\n"
- " bne .__158 @cond_branch\n"
- " cmp r4, #0\n"
- " bne .__158 @cond_branch\n"
- " cmp r0, #0x1\n"
- " beq .__159 @cond_branch\n"
- ".__158:\n"
- " cmp r6, #0x1\n"
- " bne .__162 @cond_branch\n"
- " cmp r4, #0\n"
- " bne .__162 @cond_branch\n"
- " cmp r5, #0x1\n"
- " bne .__162 @cond_branch\n"
- ".__159:\n"
- " ldr r0, .__163 + 12\n"
- " mov r1, #0x4\n"
- " mov r2, #0x0\n"
- " bl Menu_PrintText\n"
- " ldr r1, .__163 + 4\n"
- " mov r0, #0x0\n"
- " strb r0, [r1]\n"
- ".__162:\n"
- " add sp, sp, #0x4\n"
- " pop {r3, r4, r5}\n"
- " mov r8, r3\n"
- " mov r9, r4\n"
- " mov sl, r5\n"
- " pop {r4, r5, r6, r7}\n"
- " pop {r0}\n"
- " bx r0\n"
- ".__164:\n"
- " .align 2, 0\n"
- ".__163:\n"
- " .word Str_841B2E4\n"
- " .word unk_debug_bss_1_4\n"
- " .word +0x2000000\n"
- " .word Str_841B2BF\n"
- "\n"
- );
-}
-#endif
-
static const u8 sReelSymbols[][21] =
{
{
@@ -6373,7 +4150,8 @@ static const u8 sReelSymbols[][21] =
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,
@@ -6395,7 +4173,8 @@ static const u8 sReelSymbols[][21] =
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,
@@ -6417,7 +4196,7 @@ static const u8 sReelSymbols[][21] =
SLOT_MACHINE_TAG_REPLAY,
SLOT_MACHINE_TAG_LOTAD,
SLOT_MACHINE_TAG_CHERRY
- }
+ },
};
static const u8 gUnknown_083ECCF1[] = {
@@ -7782,33 +5561,204 @@ static const u16 sReelTimeWindowTilemap[] = INCBIN_U16("graphics/slot_machine/re
#if DEBUG
-const u8 Str_841B1C4[] = _("SETTEI");
-const u8 Str_841B1CB[] = _("MAWASITA");
-const u8 Str_841B1D4[] = _("MODOSI");
-const u8 Str_841B1DB[] = _("NOMARE");
-const u8 Str_841B1E2[] = _("MAE 7");
-const u8 Str_841B1E8[] = _("LR  HENKOU");
-const u8 Str_841B1F3[] = _("START  JIDOUSU");
-const u8 Str_841B202[] = _("SELECT  SETTEI");
-const u8 Str_841B211[] = _("TYUHSEN");
-const u8 Str_841B219[] = _("CHERRY");
-const u8 Str_841B220[] = _("REPLAY");
-const u8 Str_841B227[] = _("HASUBO");
-const u8 Str_841B22E[] = _("RURIRI");
-const u8 Str_841B235[] = _("INAZU");
-const u8 Str_841B23B[] = _("REG");
-const u8 Str_841B23F[] = _("BIG");
-const u8 Str_841B243[] = _("BD");
-const u8 Str_841B246[] = _("R7");
-const u8 Str_841B249[] = _("B7");
-const u8 Str_841B24C[] = _("A  COIN");
-const u8 Str_841B254[] = _("TYUHSEN");
-const u8 Str_841B25C[] = _("UD  100");
-const u8 Str_841B264[] = _("LR  1000");
-const u8 Str_841B26D[] = _("×");
-
-// Is this MenuAction2? I'm not sure.
-const struct {const u8 *text; void (*func)();} _841B270[] =
+static void debug_sub_811B1C4(void)
+{
+ unk_debug_bss_1_3 |= 2;
+ unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 2) ? 0 : 2;
+}
+
+static void debug_sub_811B1EC(void)
+{
+ unk_debug_bss_1_3 |= 1;
+ unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 1) ? 0 : 1;
+}
+
+static void debug_sub_811B210(void)
+{
+ unk_debug_bss_1_3 |= 4;
+ unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 4) ? 0 : 4;
+}
+
+static void debug_sub_811B238(void)
+{
+ unk_debug_bss_1_3 |= 8;
+ unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 8) ? 0 : 8;
+}
+
+static void debug_sub_811B260(void)
+{
+ unk_debug_bss_1_3 |= 0x10;
+ unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 0x10) ? 0 : 0x10;
+}
+
+static void debug_sub_811B288(void)
+{
+ unk_debug_bss_1_3 |= 0x40;
+ unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 0x40) ? 0 : 0x40;
+}
+
+static void debug_sub_811B2B0(void)
+{
+ unk_debug_bss_1_3 |= 0x80;
+ unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 0x80) ? 0 : 0x80;
+}
+
+static void debug_sub_811B2D8(void)
+{
+ unk_debug_bss_1_3 |= 0x20;
+}
+
+static void debug_sub_811B2E8(void)
+{
+ u8 text[2];
+
+ ConvertIntToDecimalStringN(text, eSlotMachine->unk01 + 1, 2, 1);
+ Menu_PrintText(text, 6, 1);
+}
+
+static const u8 Str_841B1C4[] = _("SETTEI");
+static const u8 Str_841B1CB[] = _("MAWASITA");
+static const u8 Str_841B1D4[] = _("MODOSI");
+static const u8 Str_841B1DB[] = _("NOMARE");
+static const u8 Str_841B1E2[] = _("MAE 7");
+static const u8 Str_841B1E8[] = _("LR  HENKOU");
+static const u8 Str_841B1F3[] = _("START  JIDOUSU");
+static const u8 Str_841B202[] = _("SELECT  SETTEI");
+static const u8 Str_841B211[] = _("TYUHSEN");
+static const u8 Str_841B219[] = _("CHERRY");
+static const u8 Str_841B220[] = _("REPLAY");
+static const u8 Str_841B227[] = _("HASUBO");
+static const u8 Str_841B22E[] = _("RURIRI");
+static const u8 Str_841B235[] = _("INAZU");
+static const u8 Str_841B23B[] = _("REG");
+static const u8 Str_841B23F[] = _("BIG");
+static const u8 Str_841B243[] = _("BD");
+static const u8 Str_841B246[] = _("R7");
+static const u8 Str_841B249[] = _("B7");
+static const u8 Str_841B24C[] = _("A  COIN");
+static const u8 Str_841B254[] = _("TYUHSEN");
+static const u8 Str_841B25C[] = _("UD  100");
+static const u8 Str_841B264[] = _("LR  1000");
+static const u8 Str_841B26D[] = _("×");
+
+void debug_sub_811B310(void)
+{
+ u8 text[5];
+
+ Menu_PrintText(Str_841B1C4, 1, 1);
+ Menu_PrintText(Str_841B1CB, 1, 3);
+ Menu_PrintText(Str_841B1D4, 1, 5);
+ Menu_PrintText(Str_841B1DB, 1, 7);
+ Menu_PrintText(Str_841B1E2, 1, 9);
+ Menu_PrintText(Str_841B1E8, 1, 11);
+ Menu_PrintText(Str_841B1F3, 1, 13);
+ Menu_PrintText(Str_841B202, 1, 15);
+ Menu_PrintText(Str_841B24C, 1, 17);
+ Menu_PrintText(Str_841B211, 15, 1);
+ Menu_PrintText(Str_841B219, 15, 3);
+ Menu_PrintText(Str_841B220, 15, 5);
+ Menu_PrintText(Str_841B227, 15, 7);
+ Menu_PrintText(Str_841B22E, 15, 9);
+ Menu_PrintText(Str_841B235, 15, 11);
+ Menu_PrintText(Str_841B23B, 15, 13);
+ Menu_PrintText(Str_841B23F, 15, 15);
+ Menu_PrintText(Str_841B243, 15, 17);
+ if (eSlotMachine->unk03 == 0)
+ Menu_PrintText(Str_841B246, 10, 9);
+ else
+ Menu_PrintText(Str_841B249, 10, 9);
+
+#define PRINT_NUMBER(n, x, y) \
+ ConvertIntToDecimalStringN(text, n, 2, 4); \
+ Menu_PrintText(text, x, y);
+
+ PRINT_NUMBER(eSlotMachine->unk68, 10, 3);
+ PRINT_NUMBER(eSlotMachine->unk6C, 10, 5);
+ PRINT_NUMBER(eSlotMachine->unk10, 10, 7);
+ PRINT_NUMBER(eSlotMachine->unk70, 20, 3);
+ PRINT_NUMBER(eSlotMachine->unk74, 20, 5);
+ PRINT_NUMBER(eSlotMachine->unk78, 20, 7);
+ PRINT_NUMBER(eSlotMachine->unk7C, 20, 9);
+ PRINT_NUMBER(eSlotMachine->unk80, 20, 11);
+ PRINT_NUMBER(eSlotMachine->unk84, 20, 13);
+ PRINT_NUMBER(eSlotMachine->unk88, 20, 15);
+ PRINT_NUMBER(eSlotMachine->unk8C, 20, 17);
+
+#undef PRINT_NUMBER
+
+ if (unk_debug_bss_1_0 != 0)
+ {
+ u8 y = 0;
+
+ switch (unk_debug_bss_1_0)
+ {
+ case 2:
+ y = 3;
+ break;
+ case 1:
+ y = 5;
+ break;
+ case 4:
+ y = 7;
+ break;
+ case 8:
+ y = 9;
+ break;
+ case 16:
+ y = 11;
+ break;
+ case 64:
+ y = 13;
+ break;
+ case 128:
+ y = 15;
+ break;
+ }
+ Menu_PrintText(Str_841B26D, 23, y);
+ }
+ debug_sub_811B2E8();
+}
+
+static void debug_sub_811B5B4(s32 *a, s32 b)
+{
+ *a += b;
+ if (*a > 9999)
+ *a = 9999;
+}
+
+static void debug_sub_811B5D0(void)
+{
+ unk_debug_bss_1_0 = 0;
+ unk_debug_bss_1_2 = 0;
+ unk_debug_bss_1_3 = 0;
+ unk_debug_bss_1_4 = 0;
+ eSlotMachine->unk68 = 0;
+ eSlotMachine->unk6C = 0;
+ eSlotMachine->unk70 = 0;
+ eSlotMachine->unk74 = 0;
+ eSlotMachine->unk78 = 0;
+ eSlotMachine->unk7C = 0;
+ eSlotMachine->unk80 = 0;
+ eSlotMachine->unk84 = 0;
+ eSlotMachine->unk88 = 0;
+ eSlotMachine->unk8C = 0;
+ eSlotMachine->unk90 = 0;
+}
+
+static void debug_sub_811B620(void)
+{
+ CreateTask(debug_sub_811B654, 0);
+}
+
+static u8 debug_sub_811B634(void)
+{
+ if (FindTaskIdByFunc(debug_sub_811B654) == 0xFF)
+ return 1;
+ else
+ return 0;
+}
+
+static const struct {const u8 *text; void (*func)();} _841B270[] =
{
{Str_841B219, debug_sub_811B1C4},
{Str_841B220, debug_sub_811B1EC},
@@ -7820,9 +5770,178 @@ const struct {const u8 *text; void (*func)();} _841B270[] =
{Str_841B243, debug_sub_811B2D8},
};
-const u8 Str_841B2B0[] = _("·カウントエラーがおきました");
-const u8 Str_841B2BF[] = _("·リールそうさで エラーが おきました");
-const u8 Str_841B2D3[] = _("·フラグオフエラーが おきました");
-const u8 Str_841B2E4[] = _("·ボーナスこやくの エラーが おきました");
+static void debug_sub_811B654(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ s8 selection;
+
+ switch (task->data[0])
+ {
+ case 0:
+ Menu_DrawStdWindowFrame(0, 0, 24, 19);
+ debug_sub_811B310();
+ task->data[0]++;
+ break;
+ case 1:
+ if (gMain.newKeys & B_BUTTON)
+ {
+ Menu_EraseScreen();
+ DestroyTask(taskId);
+ break;
+ }
+ if (gMain.newKeys & 0x20)
+ {
+ eSlotMachine->unk01--;
+ if ((s8)eSlotMachine->unk01 < 0) // Why? It's unsigned
+ eSlotMachine->unk01 = 5;
+ debug_sub_811B2E8();
+ break;
+ }
+ if (gMain.newKeys & 0x10)
+ {
+ eSlotMachine->unk01++;
+ if (eSlotMachine->unk01 > 5)
+ eSlotMachine->unk01 = 0;
+ debug_sub_811B2E8();
+ break;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ task->data[0] = 3;
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 9, 5);
+ Menu_PrintText(Str_841B25C, 1, 1);
+ Menu_PrintText(Str_841B264, 1, 3);
+ break;
+ }
+ if (gMain.newKeys & 4)
+ {
+ unk_debug_bss_1_2 = 0;
+ unk_debug_bss_1_3 = 0;
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 10, 19);
+ Menu_PrintText(Str_841B254, 1, 1);
+ Menu_PrintItems(2, 3, 8, (void *)_841B270);
+ InitMenu(0, 1, 3, 8, 0, 9);
+ task->data[0]++;
+ }
+ if (gMain.newKeys & 8)
+ {
+ unk_debug_bss_1_4 = 1;
+ Menu_EraseScreen();
+ DestroyTask(taskId);
+ }
+ break;
+ case 2:
+ selection = Menu_ProcessInput();
+ if (selection == -2)
+ break;
+ if (selection != -1)
+ {
+ unk_debug_bss_1_2 = 1;
+ _841B270[selection].func();
+ }
+ Menu_EraseScreen();
+ DestroyTask(taskId);
+ break;
+ case 3:
+ if (gMain.newAndRepeatedKeys & 0x80)
+ {
+ eSlotMachine->coins += 100;
+ if (eSlotMachine->coins > 9999)
+ eSlotMachine->coins = 9999;
+ break;
+ }
+ if (gMain.newAndRepeatedKeys & 0x40)
+ {
+ eSlotMachine->coins -= 100;
+ if (eSlotMachine->coins <= 0)
+ eSlotMachine->coins = 9999;
+ break;
+ }
+ if (gMain.newAndRepeatedKeys & 0x20)
+ {
+ eSlotMachine->coins -= 1000;
+ if (eSlotMachine->coins <= 0)
+ eSlotMachine->coins = 9999;
+ break;
+ }
+ if (gMain.newAndRepeatedKeys & 0x10)
+ {
+ eSlotMachine->coins += 1000;
+ if (eSlotMachine->coins > 9999)
+ eSlotMachine->coins = 9999;
+ break;
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ Menu_EraseScreen();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static const u8 Str_841B2B0[] = _("·カウントエラーがおきました");
+static const u8 Str_841B2BF[] = _("·リールそうさで エラーが おきました");
+static const u8 Str_841B2D3[] = _("·フラグオフエラーが おきました");
+static const u8 Str_841B2E4[] = _("·ボーナスこやくの エラーが おきました");
+
+static void debug_sub_811B894(void)
+{
+ if (eSlotMachine->matchedSymbols & 0x180)
+ {
+ eSlotMachine->unk90++;
+ if (eSlotMachine->unk90 > 9999)
+ eSlotMachine->unk90 = 9999;
+ if (eSlotMachine->unk90 != eSlotMachine->unk88)
+ {
+ Menu_PrintText(Str_841B2B0, 4, 15);
+ unk_debug_bss_1_4 = 0;
+ }
+ if (!(eSlotMachine->unk04 & 0x80))
+ {
+ Menu_PrintText(Str_841B2D3, 4, 17);
+ unk_debug_bss_1_4 = 0;
+ }
+ }
+ else if (eSlotMachine->matchedSymbols != 0)
+ {
+ if ((eSlotMachine->unk04 & 0x80) && !(eSlotMachine->matchedSymbols & 3))
+ {
+ Menu_PrintText(Str_841B2E4, 4, 2);
+ unk_debug_bss_1_4 = 0;
+ }
+ }
+ if (eSlotMachine->matchedSymbols == 0 && eSlotMachine->bet == 3 && !(eSlotMachine->unk04 & 0x80))
+ {
+ u8 sym_0_1 = GetTagOfReelSymbolOnScreenAtPos(0, 1);
+ u8 sym_0_2 = GetTagOfReelSymbolOnScreenAtPos(0, 2);
+ u8 sym_0_3 = GetTagOfReelSymbolOnScreenAtPos(0, 3);
+
+ u8 sym_1_1 = GetTagOfReelSymbolOnScreenAtPos(1, 1);
+ u8 sym_1_2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
+ u8 sym_1_3 = GetTagOfReelSymbolOnScreenAtPos(1, 3);
+
+ u8 sym_2_1 = GetTagOfReelSymbolOnScreenAtPos(2, 1);
+ u8 sym_2_2 = GetTagOfReelSymbolOnScreenAtPos(2, 2);
+ u8 sym_2_3 = GetTagOfReelSymbolOnScreenAtPos(2, 3);
+
+ if ((sym_0_1 == 0 && sym_1_1 == 1 && sym_2_1 == 0)
+ || (sym_0_2 == 0 && sym_1_2 == 1 && sym_2_2 == 0)
+ || (sym_0_3 == 0 && sym_1_3 == 1 && sym_2_3 == 0)
+ || (sym_0_1 == 0 && sym_1_2 == 1 && sym_2_3 == 0)
+ || (sym_0_3 == 0 && sym_1_2 == 1 && sym_2_1 == 0)
+ || (sym_0_1 == 1 && sym_1_1 == 0 && sym_2_1 == 1)
+ || (sym_0_2 == 1 && sym_1_2 == 0 && sym_2_2 == 1)
+ || (sym_0_3 == 1 && sym_1_3 == 0 && sym_2_3 == 1)
+ || (sym_0_1 == 1 && sym_1_2 == 0 && sym_2_3 == 1)
+ || (sym_0_3 == 1 && sym_1_2 == 0 && sym_2_1 == 1))
+ {
+ Menu_PrintText(Str_841B2BF, 4, 0);
+ unk_debug_bss_1_4 = 0;
+ }
+ }
+}
#endif
diff --git a/src/field/start_menu.c b/src/field/start_menu.c
index 75b600da0..f2d53eb7f 100644
--- a/src/field/start_menu.c
+++ b/src/field/start_menu.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "battle_tower.h"
#include "start_menu.h"
#include "event_data.h"
#include "field_player_avatar.h"
@@ -6,9 +7,11 @@
#include "fieldmap.h"
#include "item_menu.h"
#include "load_save.h"
+#include "m4a.h"
#include "main.h"
#include "map_obj_lock.h"
#include "menu.h"
+#include "new_game.h"
#include "option_menu.h"
#include "palette.h"
#include "pokedex.h"
@@ -137,302 +140,105 @@ static void sub_8071B54(void);
static void Task_8071B64(u8 taskId);
#if DEBUG
-__attribute__((naked))
-void debug_sub_8075C30()
+
+void debug_sub_8075D9C(void);
+
+u8 debug_sub_8075C30(void)
{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " bl debug_sub_8075D9C\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
+ CloseMenu();
+ debug_sub_8075D9C();
+ return 1;
}
-__attribute__((naked))
-void debug_sub_8075C40()
+extern const u8 gUnknown_Debug_839B6D8[];
+
+void debug_sub_8075C40(u8 taskId)
{
- asm(
- " push {r4, r5, r6, r7, lr}\n"
- " mov r7, sl\n"
- " mov r6, r9\n"
- " mov r5, r8\n"
- " push {r5, r6, r7}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r4, r0, #0x18\n"
- " lsl r0, r4, #0x2\n"
- " add r0, r0, r4\n"
- " lsl r0, r0, #0x3\n"
- " ldr r1, ._5 @ gTasks\n"
- " add r5, r0, r1\n"
- " mov r1, #0x0\n"
- " ldsh r0, [r5, r1]\n"
- " cmp r0, #0x1\n"
- " beq ._1 @cond_branch\n"
- " cmp r0, #0x1\n"
- " bgt ._2 @cond_branch\n"
- " cmp r0, #0\n"
- " beq ._3 @cond_branch\n"
- " b ._18\n"
- "._6:\n"
- " .align 2, 0\n"
- "._5:\n"
- " .word gTasks+0x8\n"
- "._2:\n"
- " cmp r0, #0x2\n"
- " beq ._7 @cond_branch\n"
- " cmp r0, #0x3\n"
- " beq ._8 @cond_branch\n"
- " b ._18\n"
- "._3:\n"
- " bl m4aSoundVSyncOff\n"
- " b ._12\n"
- "._1:\n"
- " ldr r1, ._13 @ 0x4000208\n"
- " ldrh r0, [r1]\n"
- " mov sl, r0\n"
- " mov r0, #0x0\n"
- " strh r0, [r1]\n"
- " ldr r1, ._13 + 4 @ 0x4000108\n"
- " strh r0, [r1]\n"
- " mov r0, #0x83\n"
- " lsl r0, r0, #0x10\n"
- " str r0, [r1]\n"
- " ldr r4, ._13 + 8 @ 0xc34f\n"
- " mov r9, r4\n"
- " ldr r2, ._13 + 12 @ 0x40000b0\n"
- " ldr r0, ._13 + 16 @ gScanlineEffectRegBuffers\n"
- " mov ip, r0\n"
- " ldr r1, ._13 + 20 @ 0xc5ff\n"
- " mov r8, r1\n"
- " ldr r7, ._13 + 24 @ 0x7fff\n"
- " mov r3, r9\n"
- " add r3, r3, #0x1\n"
- " ldr r6, ._13 + 28 @ 0x4000040\n"
- " ldr r4, ._13 + 32 @ 0xa2600001\n"
- "._11:\n"
- " mov r0, ip\n"
- " str r0, [r2]\n"
- " str r6, [r2, #0x4]\n"
- " str r4, [r2, #0x8]\n"
- " ldr r0, [r2, #0x8]\n"
- " ldrh r1, [r2, #0xa]\n"
- " mov r0, r8\n"
- " and r0, r0, r1\n"
- " strh r0, [r2, #0xa]\n"
- " ldrh r1, [r2, #0xa]\n"
- " add r0, r7, #0\n"
- " and r0, r0, r1\n"
- " strh r0, [r2, #0xa]\n"
- " ldrh r0, [r2, #0xa]\n"
- " sub r3, r3, #0x1\n"
- " cmp r3, #0\n"
- " bne ._11 @cond_branch\n"
- " mov r3, r9\n"
- " add r3, r3, #0x1\n"
- " ldr r0, ._13 + 36 @ 0x400010a\n"
- " mov r2, #0x0\n"
- " strh r2, [r0]\n"
- " ldr r1, ._13 + 4 @ 0x4000108\n"
- " ldrh r0, [r1]\n"
- " ldr r4, ._13 + 40 @ _debugStartMenu_0\n"
- " str r0, [r4]\n"
- " strh r2, [r1]\n"
- " ldr r0, ._13 @ 0x4000208\n"
- " mov r1, sl\n"
- " strh r1, [r0]\n"
- " ldr r4, ._13 + 44 @ _debugStartMenu_1\n"
- " str r3, [r4]\n"
- " bl m4aSoundVSyncOn\n"
- " b ._12\n"
- "._14:\n"
- " .align 2, 0\n"
- "._13:\n"
- " .word 0x4000208\n"
- " .word 0x4000108\n"
- " .word 0xc34f\n"
- " .word 0x40000b0\n"
- " .word gScanlineEffectRegBuffers\n"
- " .word 0xc5ff\n"
- " .word 0x7fff\n"
- " .word 0x4000040\n"
- " .word 0xa2600001\n"
- " .word 0x400010a\n"
- " .word _debugStartMenu_0\n"
- " .word _debugStartMenu_1\n"
- "._7:\n"
- " mov r0, #0x15\n"
- " bl PlaySE\n"
- " ldr r0, ._16 @ gStringVar1\n"
- " ldr r1, ._16 + 4 @ _debugStartMenu_1\n"
- " ldr r1, [r1]\n"
- " mov r2, #0x1\n"
- " mov r3, #0x8\n"
- " bl ConvertIntToDecimalStringN\n"
- " ldr r0, ._16 + 8 @ gStringVar2\n"
- " ldr r1, ._16 + 12 @ _debugStartMenu_0\n"
- " ldr r1, [r1]\n"
- " mov r2, #0x1\n"
- " mov r3, #0x8\n"
- " bl ConvertIntToDecimalStringN\n"
- " bl Menu_DisplayDialogueFrame\n"
- " ldr r0, ._16 + 16 @ gUnknown_Debug_839B6D8\n"
- " mov r1, #0x2\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- "._12:\n"
- " ldrh r0, [r5]\n"
- " add r0, r0, #0x1\n"
- " strh r0, [r5]\n"
- " b ._18\n"
- "._17:\n"
- " .align 2, 0\n"
- "._16:\n"
- " .word gStringVar1\n"
- " .word _debugStartMenu_1\n"
- " .word gStringVar2\n"
- " .word _debugStartMenu_0\n"
- " .word gUnknown_Debug_839B6D8\n"
- "._8:\n"
- " ldr r0, ._19 @ gMain\n"
- " ldrh r1, [r0, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._18 @cond_branch\n"
- " bl Menu_EraseScreen\n"
- " bl ScriptContext2_Disable\n"
- " add r0, r4, #0\n"
- " bl DestroyTask\n"
- "._18:\n"
- " pop {r3, r4, r5}\n"
- " mov r8, r3\n"
- " mov r9, r4\n"
- " mov sl, r5\n"
- " pop {r4, r5, r6, r7}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._20:\n"
- " .align 2, 0\n"
- "._19:\n"
- " .word gMain\n"
- "\n"
- );
+ s16 *data = gTasks[taskId].data;
+ u16 savedIme;
+ s32 i;
+
+ switch (data[0])
+ {
+ case 0:
+ m4aSoundVSyncOff();
+ data[0]++;
+ break;
+ case 1:
+ savedIme = REG_IME;
+ REG_IME = 0;
+ REG_TM2CNT_L = 0;
+ REG_TM2CNT = 0x830000;
+ for (i = 0; i < 0xC350; i++)
+ {
+ DmaSet(
+ 0,
+ gScanlineEffectRegBuffers,
+ &REG_WIN0H,
+ ((DMA_ENABLE | DMA_START_HBLANK | DMA_16BIT | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_RELOAD) << 16) | 1);
+ DmaStop(0);
+ }
+ REG_TM2CNT_H = 0;
+ _debugStartMenu_0 = REG_TM2CNT_L;
+ REG_TM2CNT_L = 0;
+ REG_IME = savedIme;
+ _debugStartMenu_1 = i;
+ m4aSoundVSyncOn();
+ data[0]++;
+ break;
+ case 2:
+ PlaySE(0x15);
+ ConvertIntToDecimalStringN(gStringVar1, _debugStartMenu_1, 1, 8);
+ ConvertIntToDecimalStringN(gStringVar2, _debugStartMenu_0, 1, 8);
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(gUnknown_Debug_839B6D8, 2, 15);
+ data[0]++;
+ break;
+ case 3:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ Menu_EraseScreen();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+ break;
+ }
}
-__attribute__((naked))
-void debug_sub_8075D9C()
+void debug_sub_8075D9C(void)
{
- asm(
- " push {lr}\n"
- " ldr r0, ._21 @ debug_sub_8075C40\n"
- " mov r1, #0xa\n"
- " bl CreateTask\n"
- " bl ScriptContext2_Enable\n"
- " pop {r0}\n"
- " bx r0\n"
- "._22:\n"
- " .align 2, 0\n"
- "._21:\n"
- " .word debug_sub_8075C40+1\n"
- "\n"
- );
+ CreateTask(debug_sub_8075C40, 10);
+ ScriptContext2_Enable();
}
-__attribute__((naked))
-void debug_sub_8075DB4()
+void debug_sub_8075DB4(struct BattleTowerEReaderTrainer *ereaderTrainer, const u8 *b, u32 trainerId)
{
- asm(
- " push {r4, r5, r6, lr}\n"
- " add r6, r0, #0\n"
- " add r5, r1, #0\n"
- " add r4, r2, #0\n"
- " add r0, r4, #0\n"
- " mov r1, #0x4d\n"
- " bl __umodsi3\n"
- " strb r0, [r6, #0x1]\n"
- " add r1, r6, #0\n"
- " add r1, r1, #0xc\n"
- " add r0, r4, #0\n"
- " bl write_word_to_mem\n"
- " add r0, r6, #4\n"
- " add r1, r5, #0\n"
- " bl StringCopy8\n"
- " mov r3, #0x7\n"
- " mov r4, #0x0\n"
- " ldr r0, ._25 @ gSaveBlock1\n"
- " ldr r1, ._25 + 4 @ 0x2b28\n"
- " add r5, r0, r1\n"
- " add r2, r6, #0\n"
- " add r2, r2, #0x10\n"
- " add r1, r6, #0\n"
- " add r1, r1, #0x1c\n"
- "._23:\n"
- " ldrh r0, [r5]\n"
- " strh r0, [r2]\n"
- " strh r3, [r1]\n"
- " add r0, r3, #6\n"
- " strh r0, [r1, #0xc]\n"
- " add r3, r3, #0x1\n"
- " add r5, r5, #0x2\n"
- " add r2, r2, #0x2\n"
- " add r1, r1, #0x2\n"
- " add r4, r4, #0x1\n"
- " cmp r4, #0x5\n"
- " ble ._23 @cond_branch\n"
- " mov r4, #0x0\n"
- "._24:\n"
- " mov r0, #0x64\n"
- " mul r0, r0, r4\n"
- " ldr r1, ._25 + 8 @ gPlayerParty\n"
- " add r0, r0, r1\n"
- " mov r1, #0x2c\n"
- " mul r1, r1, r4\n"
- " add r1, r1, #0x34\n"
- " add r1, r6, r1\n"
- " bl sub_803AF78\n"
- " add r4, r4, #0x1\n"
- " cmp r4, #0x2\n"
- " ble ._24 @cond_branch\n"
- " add r0, r6, #0\n"
- " bl SetEReaderTrainerChecksum\n"
- " pop {r4, r5, r6}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._26:\n"
- " .align 2, 0\n"
- "._25:\n"
- " .word gSaveBlock1\n"
- " .word 0x2b28\n"
- " .word gPlayerParty\n"
- "\n"
- );
+ s32 i;
+ s32 r3;
+
+ ereaderTrainer->trainerClass = trainerId % 77;
+ write_word_to_mem(trainerId, ereaderTrainer->trainerId);
+ StringCopy8(ereaderTrainer->name, b);
+ r3 = 7;
+ for (i = 0; i < 6; i++)
+ {
+ ereaderTrainer->greeting[i] = gSaveBlock1.easyChats.unk2B28[i];
+ ereaderTrainer->farewellPlayerLost[i] = r3;
+ ereaderTrainer->farewellPlayerWon[i] = r3 + 6;
+ r3++;
+ }
+ for (i = 0; i < 3; i++)
+ sub_803AF78(&gPlayerParty[i], &ereaderTrainer->party[i]);
+ SetEReaderTrainerChecksum(ereaderTrainer);
}
-__attribute__((naked))
-void unref_sub_8070F90()
+void unref_sub_8070F90(void)
{
- asm(
- " push {lr}\n"
- " ldr r0, ._27 @ 0x801\n"
- " bl FlagSet\n"
- " mov r0, #0x80\n"
- " lsl r0, r0, #0x4\n"
- " bl FlagSet\n"
- " ldr r0, ._27 + 4 @ 0x802\n"
- " bl FlagSet\n"
- " pop {r0}\n"
- " bx r0\n"
- "._28:\n"
- " .align 2, 0\n"
- "._27:\n"
- " .word 0x801\n"
- " .word 0x802\n"
- "\n"
- );
+ FlagSet(FLAG_SYS_POKEDEX_GET);
+ FlagSet(FLAG_SYS_POKEMON_GET);
+ FlagSet(FLAG_SYS_POKENAV_GET);
}
+
#endif
static void BuildStartMenuActions(void)
diff --git a/src/field/tv.c b/src/field/tv.c
index ebf304a6e..6c24170ae 100644
--- a/src/field/tv.c
+++ b/src/field/tv.c
@@ -3050,7 +3050,7 @@ void DoTVShowTodaysSmartShopper(void)
break;
case 1:
TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language);
- StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[0])->name);
+ StringCopy(gStringVar2, ItemId_GetName(smartShopper->itemIds[0]));
sub_80BF088(2, smartShopper->itemAmounts[0]);
sTVShowState += (Random() % 4) + 1;
break;
@@ -3070,7 +3070,7 @@ void DoTVShowTodaysSmartShopper(void)
sTVShowState = 10;
break;
case 6:
- StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[1])->name);
+ StringCopy(gStringVar2, ItemId_GetName(smartShopper->itemIds[1]));
sub_80BF088(2, smartShopper->itemAmounts[1]);
if (smartShopper->itemIds[2] != 0)
sTVShowState = 7;
@@ -3080,7 +3080,7 @@ void DoTVShowTodaysSmartShopper(void)
sTVShowState = 9;
break;
case 7:
- StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[2])->name);
+ StringCopy(gStringVar2, ItemId_GetName(smartShopper->itemIds[2]));
sub_80BF088(2, smartShopper->itemAmounts[2]);
if (smartShopper->priceReduced == 1)
sTVShowState = 8;
@@ -3105,7 +3105,7 @@ void DoTVShowTodaysSmartShopper(void)
break;
case 11:
TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language);
- StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[0])->name);
+ StringCopy(gStringVar2, ItemId_GetName(smartShopper->itemIds[0]));
if (smartShopper->priceReduced == 1)
sTVShowState = 8;
else
@@ -3237,7 +3237,7 @@ void DoTVShowPokemonTodaySuccessfulCapture(void)
sTVShowState = 2;
break;
case 2:
- StringCopy(gStringVar2, ItemId_GetItem(pokemonToday->ball)->name);
+ StringCopy(gStringVar2, ItemId_GetName(pokemonToday->ball));
sub_80BF088(2, pokemonToday->var12);
if (pokemonToday->var12 < 4)
sTVShowState = 3;