summaryrefslogtreecommitdiff
path: root/src/field
diff options
context:
space:
mode:
Diffstat (limited to 'src/field')
-rw-r--r--src/field/battle_tower.c283
-rw-r--r--src/field/field_weather.c1
-rw-r--r--src/field/party_menu.c128
-rw-r--r--src/field/tv.c2
4 files changed, 77 insertions, 337 deletions
diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c
index caebc6a7b..11c05e478 100644
--- a/src/field/battle_tower.c
+++ b/src/field/battle_tower.c
@@ -103,59 +103,59 @@ static const u16 sBattleTowerHeldItems[] = {
#include "../data/battle_tower/level_100_mons.h"
static const u8 sMaleTrainerClasses[] = {
- TRAINER_CLASS_RUIN_MANIAC,
- TRAINER_CLASS_TUBER_M,
- TRAINER_CLASS_COOL_TRAINER_M,
- TRAINER_CLASS_RICH_BOY,
- TRAINER_CLASS_POKEMANIAC,
- TRAINER_CLASS_SWIMMER_M,
- TRAINER_CLASS_BLACK_BELT,
- TRAINER_CLASS_GUITARIST,
- TRAINER_CLASS_KINDLER,
- TRAINER_CLASS_CAMPER,
- TRAINER_CLASS_BUG_MANIAC,
- TRAINER_CLASS_PSYCHIC_M,
- TRAINER_CLASS_GENTLEMAN,
- TRAINER_CLASS_SCHOOL_KID_M,
- TRAINER_CLASS_POKEFAN_M,
- TRAINER_CLASS_EXPERT_M,
- TRAINER_CLASS_YOUNGSTER,
- TRAINER_CLASS_FISHERMAN,
- TRAINER_CLASS_CYCLING_TRIATHLETE_M,
- TRAINER_CLASS_RUNNING_TRIATHLETE_M,
- TRAINER_CLASS_SWIMMING_TRIATHLETE_M,
- TRAINER_CLASS_DRAGON_TAMER,
- TRAINER_CLASS_BIRD_KEEPER,
- TRAINER_CLASS_NINJA_BOY,
- TRAINER_CLASS_SAILOR,
- TRAINER_CLASS_COLLECTOR,
- TRAINER_CLASS_POKEMON_BREEDER_M,
- TRAINER_CLASS_POKEMON_RANGER_M,
- TRAINER_CLASS_BUG_CATCHER,
- TRAINER_CLASS_HIKER,
+ FACILITY_CLASS_RUIN_MANIAC,
+ FACILITY_CLASS_TUBER_M,
+ FACILITY_CLASS_COOL_TRAINER_M,
+ FACILITY_CLASS_RICH_BOY,
+ FACILITY_CLASS_POKEMANIAC,
+ FACILITY_CLASS_SWIMMER_M,
+ FACILITY_CLASS_BLACK_BELT,
+ FACILITY_CLASS_GUITARIST,
+ FACILITY_CLASS_KINDLER,
+ FACILITY_CLASS_CAMPER,
+ FACILITY_CLASS_BUG_MANIAC,
+ FACILITY_CLASS_PSYCHIC_M,
+ FACILITY_CLASS_GENTLEMAN,
+ FACILITY_CLASS_SCHOOL_KID_M,
+ FACILITY_CLASS_POKEFAN_M,
+ FACILITY_CLASS_EXPERT_M,
+ FACILITY_CLASS_YOUNGSTER,
+ FACILITY_CLASS_FISHERMAN,
+ FACILITY_CLASS_CYCLING_TRIATHLETE_M,
+ FACILITY_CLASS_RUNNING_TRIATHLETE_M,
+ FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
+ FACILITY_CLASS_DRAGON_TAMER,
+ FACILITY_CLASS_BIRD_KEEPER,
+ FACILITY_CLASS_NINJA_BOY,
+ FACILITY_CLASS_SAILOR,
+ FACILITY_CLASS_COLLECTOR,
+ FACILITY_CLASS_POKEMON_BREEDER_M,
+ FACILITY_CLASS_POKEMON_RANGER_M,
+ FACILITY_CLASS_BUG_CATCHER,
+ FACILITY_CLASS_HIKER,
};
static const u8 sFemaleTrainerClasses[] = {
- TRAINER_CLASS_AROMA_LADY,
- TRAINER_CLASS_TUBER_F,
- TRAINER_CLASS_COOL_TRAINER_F,
- TRAINER_CLASS_HEX_MANIAC,
- TRAINER_CLASS_LADY,
- TRAINER_CLASS_BEAUTY,
- TRAINER_CLASS_PSYCHIC_F,
- TRAINER_CLASS_SCHOOL_KID_F,
- TRAINER_CLASS_POKEFAN_F,
- TRAINER_CLASS_EXPERT_F,
- TRAINER_CLASS_CYCLING_TRIATHLETE_F,
- TRAINER_CLASS_RUNNING_TRIATHLETE_F,
- TRAINER_CLASS_SWIMMING_TRIATHLETE_F,
- TRAINER_CLASS_BATTLE_GIRL,
- TRAINER_CLASS_PARASOL_LADY,
- TRAINER_CLASS_SWIMMER_F,
- TRAINER_CLASS_PICNICKER,
- TRAINER_CLASS_POKEMON_BREEDER_F,
- TRAINER_CLASS_POKEMON_RANGER_F,
- TRAINER_CLASS_LASS,
+ FACILITY_CLASS_AROMA_LADY,
+ FACILITY_CLASS_TUBER_F,
+ FACILITY_CLASS_COOL_TRAINER_F,
+ FACILITY_CLASS_HEX_MANIAC,
+ FACILITY_CLASS_LADY,
+ FACILITY_CLASS_BEAUTY,
+ FACILITY_CLASS_PSYCHIC_F,
+ FACILITY_CLASS_SCHOOL_KID_F,
+ FACILITY_CLASS_POKEFAN_F,
+ FACILITY_CLASS_EXPERT_F,
+ FACILITY_CLASS_CYCLING_TRIATHLETE_F,
+ FACILITY_CLASS_RUNNING_TRIATHLETE_F,
+ FACILITY_CLASS_SWIMMING_TRIATHLETE_F,
+ FACILITY_CLASS_BATTLE_GIRL,
+ FACILITY_CLASS_PARASOL_LADY,
+ FACILITY_CLASS_SWIMMER_F,
+ FACILITY_CLASS_PICNICKER,
+ FACILITY_CLASS_POKEMON_BREEDER_F,
+ FACILITY_CLASS_POKEMON_RANGER_F,
+ FACILITY_CLASS_LASS,
};
static const u8 sMaleTrainerGfxIds[] = {
@@ -255,7 +255,7 @@ static void ResetBattleTowerStreak(u8 levelType);
static void ValidateBattleTowerRecordChecksums(void);
static void PrintEReaderTrainerFarewellMessage(void);
extern void SetBattleTowerTrainerGfxId(u8);
-extern void sub_8135A3C(void);
+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 *);
@@ -1538,7 +1538,7 @@ void CheckPartyBattleTowerBanlist(void)
StringAppend(gStringVar1, BattleText_Format8);
return;
}
-
+
if (1 & counter)
StringAppend(gStringVar1, BattleText_Format6);
else
@@ -1699,7 +1699,7 @@ void SetBattleTowerProperty(void)
}
gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]++;
- sub_8135A3C();
+ SaveCurrentWinStreak();
gSpecialVar_Result = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType];
gStringVar1[0] = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] + 0xA1;
@@ -1711,7 +1711,7 @@ void SetBattleTowerProperty(void)
gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]++;
}
- sub_8135A3C();
+ SaveCurrentWinStreak();
gSpecialVar_Result = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType];
break;
case 8:
@@ -1801,118 +1801,35 @@ void SetBattleTowerParty(void)
ReducePlayerPartyToThree();
}
-#ifdef NONMATCHING
-void sub_8135A3C(void)
+static void SaveCurrentWinStreak(void)
{
- u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType;
- u16 winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
+ u8 levelType = gSaveBlock2.battleTower.battleTowerLevelType;
+ u16 streak = GetCurrentBattleTowerWinStreak(levelType);
- if (gSaveBlock2.battleTower.recordWinStreaks[battleTowerLevelType] < winStreak)
- {
- gSaveBlock2.battleTower.recordWinStreaks[battleTowerLevelType] = winStreak;
- }
+ if (gSaveBlock2.battleTower.recordWinStreaks[levelType] < streak)
+ gSaveBlock2.battleTower.recordWinStreaks[levelType] = streak;
if (gSaveBlock2.battleTower.recordWinStreaks[0] > gSaveBlock2.battleTower.recordWinStreaks[1])
{
- u16 streak = gSaveBlock2.battleTower.recordWinStreaks[0];
+ streak = gSaveBlock2.battleTower.recordWinStreaks[0];
SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, streak);
+
if (streak > 9999)
- {
gSaveBlock2.battleTower.bestBattleTowerWinStreak = 9999;
- }
else
- {
gSaveBlock2.battleTower.bestBattleTowerWinStreak = streak;
- }
}
else
{
- u16 streak = gSaveBlock2.battleTower.recordWinStreaks[1];
+ streak = gSaveBlock2.battleTower.recordWinStreaks[1];
SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, streak);
+
if (streak > 9999)
- {
gSaveBlock2.battleTower.bestBattleTowerWinStreak = 9999;
- }
else
- {
gSaveBlock2.battleTower.bestBattleTowerWinStreak = streak;
- }
}
}
-#else
-__attribute__((naked))
-void sub_8135A3C(void)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- ldr r6, _08135A84 @ =gSaveBlock2\n\
- ldr r1, _08135A88 @ =0x00000554\n\
- adds r0, r6, r1\n\
- ldrb r4, [r0]\n\
- lsls r4, 31\n\
- lsrs r4, 31\n\
- adds r0, r4, 0\n\
- bl GetCurrentBattleTowerWinStreak\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- lsls r4, 1\n\
- movs r3, 0xAC\n\
- lsls r3, 3\n\
- adds r2, r6, r3\n\
- adds r4, r2\n\
- ldrh r0, [r4]\n\
- cmp r0, r5\n\
- bcs _08135A66\n\
- strh r5, [r4]\n\
-_08135A66:\n\
- ldr r0, _08135A8C @ =0x00000562\n\
- adds r1, r6, r0\n\
- ldrh r0, [r2]\n\
- ldrh r3, [r1]\n\
- cmp r0, r3\n\
- bls _08135A94\n\
- adds r5, r0, 0\n\
- movs r0, 0x20\n\
- adds r1, r5, 0\n\
- bl SetGameStat\n\
- ldr r1, _08135A90 @ =0x0000270f\n\
- cmp r5, r1\n\
- bhi _08135AA4\n\
- b _08135AB4\n\
- .align 2, 0\n\
-_08135A84: .4byte gSaveBlock2\n\
-_08135A88: .4byte 0x00000554\n\
-_08135A8C: .4byte 0x00000562\n\
-_08135A90: .4byte 0x0000270f\n\
-_08135A94:\n\
- ldrh r5, [r1]\n\
- movs r0, 0x20\n\
- adds r1, r5, 0\n\
- bl SetGameStat\n\
- ldr r1, _08135AAC @ =0x0000270f\n\
- cmp r5, r1\n\
- bls _08135AB4\n\
-_08135AA4:\n\
- ldr r2, _08135AB0 @ =0x00000572\n\
- adds r0, r6, r2\n\
- strh r1, [r0]\n\
- b _08135ABA\n\
- .align 2, 0\n\
-_08135AAC: .4byte 0x0000270f\n\
-_08135AB0: .4byte 0x00000572\n\
-_08135AB4:\n\
- ldr r3, _08135AC0 @ =0x00000572\n\
- adds r0, r6, r3\n\
- strh r5, [r0]\n\
-_08135ABA:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08135AC0: .4byte 0x00000572\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
void sub_8135AC4(void)
{
@@ -1951,7 +1868,7 @@ void sub_8135AC4(void)
}
SetBattleTowerRecordChecksum(&gSaveBlock2.battleTower.playerRecord);
- sub_8135A3C();
+ SaveCurrentWinStreak();
}
void SaveBattleTowerProgress(void)
@@ -2068,79 +1985,15 @@ u16 GetCurrentBattleTowerWinStreak(u8 battleTowerLevelType)
return winStreak;
}
-#ifdef NONMATCHING
void DetermineBattleTowerPrize(void)
{
- u16 prizeItem;
- struct SaveBlock2 *saveBlock = &gSaveBlock2;
- u8 battleTowerLevelType = saveBlock->battleTower.battleTowerLevelType;
+ u8 levelType = gSaveBlock2.battleTower.battleTowerLevelType;
- if (saveBlock->battleTower.curStreakChallengesNum[battleTowerLevelType] - 1 > 5)
- {
- prizeItem = sLongStreakPrizes[Random() % ARRAY_COUNT(sLongStreakPrizes)];
- }
+ if (gSaveBlock2.battleTower.curStreakChallengesNum[levelType] - 1 > 5)
+ gSaveBlock2.battleTower.prizeItem = sLongStreakPrizes[Random() % ARRAY_COUNT(sLongStreakPrizes)];
else
- {
- prizeItem = sShortStreakPrizes[Random() % ARRAY_COUNT(sShortStreakPrizes)];
- }
-
- saveBlock->battleTower.prizeItem = prizeItem;
-}
-#else
-__attribute__((naked))
-void DetermineBattleTowerPrize(void)
-{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- ldr r5, _08135DB0 @ =gSaveBlock2\n\
- ldr r1, _08135DB4 @ =0x00000554\n\
- adds r0, r5, r1\n\
- ldrb r0, [r0]\n\
- lsls r0, 31\n\
- lsrs r0, 31\n\
- lsls r0, 1\n\
- ldr r2, _08135DB8 @ =0x0000055c\n\
- adds r1, r5, r2\n\
- adds r0, r1\n\
- ldrh r0, [r0]\n\
- subs r0, 0x1\n\
- cmp r0, 0x5\n\
- ble _08135DC0\n\
- bl Random\n\
- ldr r4, _08135DBC @ =sLongStreakPrizes\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x9\n\
- b _08135DCC\n\
- .align 2, 0\n\
-_08135DB0: .4byte gSaveBlock2\n\
-_08135DB4: .4byte 0x00000554\n\
-_08135DB8: .4byte 0x0000055c\n\
-_08135DBC: .4byte sLongStreakPrizes\n\
-_08135DC0:\n\
- bl Random\n\
- ldr r4, _08135DE8 @ =sShortStreakPrizes\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x6\n\
-_08135DCC:\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- lsrs r0, 15\n\
- adds r0, r4\n\
- ldrh r1, [r0]\n\
- movs r2, 0xAD\n\
- lsls r2, 3\n\
- adds r0, r5, r2\n\
- strh r1, [r0]\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08135DE8: .4byte sShortStreakPrizes\n\
- .syntax divided\n");
+ gSaveBlock2.battleTower.prizeItem = sShortStreakPrizes[Random() % ARRAY_COUNT(sShortStreakPrizes)];
}
-#endif // NONMATCHING
void GiveBattleTowerPrize(void)
{
diff --git a/src/field/field_weather.c b/src/field/field_weather.c
index 4a819bddf..c954242a1 100644
--- a/src/field/field_weather.c
+++ b/src/field/field_weather.c
@@ -46,6 +46,7 @@ const u8 DroughtPaletteData_2[] = INCBIN_U8("graphics/weather/drought2.bin.lz");
const u8 DroughtPaletteData_3[] = INCBIN_U8("graphics/weather/drought3.bin.lz");
const u8 DroughtPaletteData_4[] = INCBIN_U8("graphics/weather/drought4.bin.lz");
const u8 DroughtPaletteData_5[] = INCBIN_U8("graphics/weather/drought5.bin.lz");
+
extern u8 (*gUnknown_0202FC48)[32];
extern u8 gUnknown_0202F9E8[32];
diff --git a/src/field/party_menu.c b/src/field/party_menu.c
index 9c1150515..790aede60 100644
--- a/src/field/party_menu.c
+++ b/src/field/party_menu.c
@@ -490,9 +490,6 @@ extern const u8 gStatusPal_Icons[];
#define WINDOW_RIGHT (29)
#endif
-
-#ifdef NONMATCHING
-// Main handler for the party menu.
void CB2_PartyMenuMain(void)
{
const struct PartyMonTextSettingsStruct *textSettings;
@@ -506,62 +503,17 @@ void CB2_PartyMenuMain(void)
{
// Draw mon name, level, and hp sprites
DrawPartyMenuMonText(
- textSettings[i].xOffset * 8,
- textSettings[i].yOffset * 8,
- textSettings[i].oamSettings,
+ textSettings->xOffset * 8,
+ textSettings->yOffset * 8,
+ textSettings->oamSettings,
0,
(i << 5) | 0x200);
+ textSettings++;
}
RunTasks();
UpdatePaletteFade();
}
-#else
-__attribute__((naked))
-void CB2_PartyMenuMain(void)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0x4\n\
- bl AnimateSprites\n\
- bl BuildOamBuffer\n\
- ldr r0, _0806AF2C @ =gPartyMenuType\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 4\n\
- ldr r1, _0806AF30 @ =PartyMonTextSettings\n\
- adds r5, r0, r1\n\
- movs r6, 0\n\
-_0806AEF8:\n\
- ldrb r0, [r5]\n\
- lsls r0, 3\n\
- ldrb r1, [r5, 0x1]\n\
- lsls r1, 3\n\
- ldr r2, [r5, 0x4]\n\
- lsls r3, r6, 5\n\
- movs r4, 0x80\n\
- lsls r4, 2\n\
- orrs r3, r4\n\
- str r3, [sp]\n\
- movs r3, 0\n\
- bl DrawPartyMenuMonText\n\
- adds r5, 0x8\n\
- adds r6, 0x1\n\
- cmp r6, 0x5\n\
- ble _0806AEF8\n\
- bl RunTasks\n\
- bl UpdatePaletteFade\n\
- add sp, 0x4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0806AF2C: .4byte gPartyMenuType\n\
-_0806AF30: .4byte PartyMonTextSettings\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
void VBlankCB_PartyMenu(void)
{
@@ -1226,8 +1178,6 @@ void sub_806BBEC(u8 a)
}
}
-#ifdef NONMATCHING
-// The original THUMB is preserving r8 for seemingly no reason. Unsure how to match.
void sub_806BC3C(u8 monIndex, u8 b)
{
u16 *vramPtr = gUnknown_08376918[IsDoubleBattle()][monIndex];
@@ -1240,74 +1190,10 @@ void sub_806BC3C(u8 monIndex, u8 b)
vramPtr[i] = gUnknown_08E9A300[offset] + 0x10C;
vramPtr[i + 0x20] = gUnknown_08E9A300[offset + 0x20] + 0x10C;
}
+
+ // Some dead code was likely optimized out, but the compiler still think r8 was used.
+ asm("":::"r8");
}
-#else
-__attribute__((naked))
-void sub_806BC3C(u8 monIndex, u8 b)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- adds r4, r0, 0\n\
- adds r5, r1, 0\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- lsls r5, 24\n\
- lsrs r5, 24\n\
- ldr r6, _0806BCB0 @ =gUnknown_08376918\n\
- bl IsDoubleBattle\n\
- lsls r4, 2\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r1, r0, 1\n\
- adds r1, r0\n\
- lsls r1, 3\n\
- adds r4, r1\n\
- adds r4, r6\n\
- ldr r7, [r4]\n\
- movs r6, 0\n\
- adds r0, r5, 0\n\
- movs r1, 0x7\n\
- bl __udivsi3\n\
- lsls r0, 24\n\
- lsrs r4, r0, 19\n\
- ldr r5, _0806BCB4 @ =gUnknown_08E9A300\n\
- movs r0, 0x86\n\
- lsls r0, 1\n\
- adds r3, r0, 0\n\
-_0806BC7C:\n\
- adds r1, r6, r4\n\
- lsls r2, r6, 1\n\
- adds r2, r7\n\
- lsls r0, r1, 1\n\
- adds r0, r5\n\
- ldrh r0, [r0]\n\
- adds r0, r3, r0\n\
- strh r0, [r2]\n\
- adds r2, 0x40\n\
- adds r1, 0x20\n\
- lsls r1, 1\n\
- adds r1, r5\n\
- ldrh r1, [r1]\n\
- adds r0, r3, r1\n\
- strh r0, [r2]\n\
- adds r0, r6, 0x1\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- cmp r6, 0x6\n\
- bls _0806BC7C\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0806BCB0: .4byte gUnknown_08376918\n\
-_0806BCB4: .4byte gUnknown_08E9A300\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
void unref_sub_806BCB8(u8 a)
{
diff --git a/src/field/tv.c b/src/field/tv.c
index d7a75a709..e88e3c72b 100644
--- a/src/field/tv.c
+++ b/src/field/tv.c
@@ -811,7 +811,7 @@ u8 sub_80BDEAC(u8 *a0)
return lang;
}
-void sub_80BDEC8(void)
+void PutPokemonTodayCaughtOnAir(void)
{
u8 i;
u16 total;