summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle_frontier_1.c118
-rw-r--r--src/battle_palace.c187
-rw-r--r--src/battle_pike.c4
3 files changed, 189 insertions, 120 deletions
diff --git a/src/battle_frontier_1.c b/src/battle_frontier_1.c
deleted file mode 100644
index c53f10dca..000000000
--- a/src/battle_frontier_1.c
+++ /dev/null
@@ -1,118 +0,0 @@
-#include "global.h"
-#include "event_data.h"
-#include "battle_setup.h"
-#include "overworld.h"
-#include "random.h"
-#include "battle_tower.h"
-
-extern void SetBattleFacilityTrainerGfxId(u16, u8);
-
-extern void (* const gUnknown_0860DE50[])(void);
-extern const u32 gUnknown_0860DE98[][2];
-extern const u32 gUnknown_0860DEA8[][2];
-
-// code
-void sub_8195960(void)
-{
- gUnknown_0860DE50[gSpecialVar_0x8004]();
-}
-
-void sub_8195980(void)
-{
- u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
- u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
-
- gSaveBlock2Ptr->frontier.field_CA8 = 0;
- gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
- gSaveBlock2Ptr->frontier.field_CA9_a = 0;
- gSaveBlock2Ptr->frontier.field_CA9_b = 0;
- if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860DE98[battleMode][lvlMode]))
- gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] = 0;
-
- saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
- gTrainerBattleOpponent_A = 0;
-}
-
-void sub_8195A38(void)
-{
- u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
- u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
-
- switch (gSpecialVar_0x8005)
- {
- case 0:
- gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_DC4[1];
- break;
- case 1:
- gSpecialVar_Result = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode];
- break;
- case 2:
- gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860DE98[battleMode][lvlMode]) != 0);
- break;
- }
-}
-
-void sub_8195AE4(void)
-{
- u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
- u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
-
- switch (gSpecialVar_0x8005)
- {
- case 0:
- gSaveBlock2Ptr->frontier.field_DC4[1] = gSpecialVar_0x8006;
- break;
- case 1:
- gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] = gSpecialVar_0x8006;
- break;
- case 2:
- if (gSpecialVar_0x8006)
- gSaveBlock2Ptr->frontier.field_CDC |= gUnknown_0860DE98[battleMode][lvlMode];
- else
- gSaveBlock2Ptr->frontier.field_CDC &= gUnknown_0860DEA8[battleMode][lvlMode];
- break;
- }
-}
-
-void sub_8195BB0(void)
-{
- u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
- u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
-
- if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] < 50)
- gSpecialVar_Result = Random() % 3;
- else if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] < 99)
- gSpecialVar_Result = 3;
- else
- gSpecialVar_Result = 4;
-}
-
-void sub_8195C20(void)
-{
- gTrainerBattleOpponent_A = 5 *(Random() % 255) / 64u;
- SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
-}
-
-void sub_8195C50(void)
-{
- if (gTrainerBattleOpponent_A < 300)
- FrontierSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore);
-}
-
-/*
-void sub_8195C7C(void)
-{
- u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
- u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
-
- if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] < 9999)
- {
- u16 wat = 0;
- gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode]++;
- if (lvlMode < gSaveBlock2Ptr->frontier.field_DD0[battleMode][lvlMode])
- wat = 1;
- if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][wat] != 0)
- gSaveBlock2Ptr->frontier.field_DD0[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode];
- }
-}
-*/
diff --git a/src/battle_palace.c b/src/battle_palace.c
new file mode 100644
index 000000000..d435f7e15
--- /dev/null
+++ b/src/battle_palace.c
@@ -0,0 +1,187 @@
+#include "global.h"
+#include "event_data.h"
+#include "battle_setup.h"
+#include "overworld.h"
+#include "random.h"
+#include "battle_tower.h"
+#include "frontier_util.h"
+#include "item.h"
+#include "constants/items.h"
+
+// This file's functions.
+static void sub_8195980(void);
+static void sub_8195A38(void);
+static void sub_8195AE4(void);
+static void sub_8195BB0(void);
+static void sub_8195C20(void);
+static void sub_8195C50(void);
+static void sub_8195C7C(void);
+static void sub_8195CE4(void);
+static void sub_8195D28(void);
+static void sub_8195DB8(void);
+
+// Const rom data.
+static void (* const sBattlePalaceFunctions[])(void) =
+{
+ sub_8195980,
+ sub_8195A38,
+ sub_8195AE4,
+ sub_8195BB0,
+ sub_8195C20,
+ sub_8195C50,
+ sub_8195C7C,
+ sub_8195CE4,
+ sub_8195D28,
+ sub_8195DB8,
+};
+
+static const u16 gUnknown_0860DE78[] = {ITEM_HP_UP, ITEM_PROTEIN, ITEM_IRON, ITEM_CALCIUM, ITEM_CARBOS, ITEM_ZINC};
+static const u16 gUnknown_0860DE84[] = {ITEM_BRIGHT_POWDER, ITEM_WHITE_HERB, ITEM_QUICK_CLAW, ITEM_LEFTOVERS, ITEM_MENTAL_HERB, ITEM_KINGS_ROCK, ITEM_FOCUS_BAND, ITEM_SCOPE_LENS, ITEM_CHOICE_BAND};
+
+static const u32 gUnknown_0860DE98[][2] =
+{
+ {0x10, 0x20},
+ {0x400000, 0x800000},
+};
+
+static const u32 gUnknown_0860DEA8[][2] =
+{
+ {~0x10, ~0x20},
+ {~0x400000, ~0x800000},
+};
+
+// code
+void CallBattlePalaceFunction(void)
+{
+ sBattlePalaceFunctions[gSpecialVar_0x8004]();
+}
+
+static void sub_8195980(void)
+{
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+
+ gSaveBlock2Ptr->frontier.field_CA8 = 0;
+ gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
+ gSaveBlock2Ptr->frontier.field_CA9_a = 0;
+ gSaveBlock2Ptr->frontier.field_CA9_b = 0;
+ if (!(gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860DE98[battleMode][lvlMode]))
+ gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] = 0;
+
+ saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
+ gTrainerBattleOpponent_A = 0;
+}
+
+static void sub_8195A38(void)
+{
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+
+ switch (gSpecialVar_0x8005)
+ {
+ case 0:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_DC6;
+ break;
+ case 1:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode];
+ break;
+ case 2:
+ gSpecialVar_Result = ((gSaveBlock2Ptr->frontier.field_CDC & gUnknown_0860DE98[battleMode][lvlMode]) != 0);
+ break;
+ }
+}
+
+static void sub_8195AE4(void)
+{
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+
+ switch (gSpecialVar_0x8005)
+ {
+ case 0:
+ gSaveBlock2Ptr->frontier.field_DC6 = gSpecialVar_0x8006;
+ break;
+ case 1:
+ gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] = gSpecialVar_0x8006;
+ break;
+ case 2:
+ if (gSpecialVar_0x8006)
+ gSaveBlock2Ptr->frontier.field_CDC |= gUnknown_0860DE98[battleMode][lvlMode];
+ else
+ gSaveBlock2Ptr->frontier.field_CDC &= gUnknown_0860DEA8[battleMode][lvlMode];
+ break;
+ }
+}
+
+static void sub_8195BB0(void)
+{
+ u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+
+ if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] < 50)
+ gSpecialVar_Result = Random() % 3;
+ else if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] < 99)
+ gSpecialVar_Result = 3;
+ else
+ gSpecialVar_Result = 4;
+}
+
+static void sub_8195C20(void)
+{
+ gTrainerBattleOpponent_A = 5 *(Random() % 255) / 64u;
+ SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0);
+}
+
+static void sub_8195C50(void)
+{
+ if (gTrainerBattleOpponent_A < 300)
+ FrontierSpeechToString(gFacilityTrainers[gTrainerBattleOpponent_A].speechBefore);
+}
+
+static void sub_8195C7C(void)
+{
+ u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+ u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+
+ if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] < 9999)
+ {
+ gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode]++;
+
+ // Whatever GF planned to do here, they messed up big time.
+ if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][(lvlMode > gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[battleMode][lvlMode]) ? 1 : 0])
+ gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[battleMode][lvlMode] = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode];
+ }
+}
+
+static void sub_8195CE4(void)
+{
+ gSaveBlock2Ptr->frontier.field_CA8 = gSpecialVar_0x8005;
+ VarSet(VAR_TEMP_0, 0);
+ gSaveBlock2Ptr->frontier.field_CA9_a = 1;
+ sub_81A4C30();
+}
+
+static void sub_8195D28(void)
+{
+ u32 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
+ u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
+
+ if (gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode] > 41)
+ gSaveBlock2Ptr->frontier.field_DC6 = gUnknown_0860DE84[Random() % ARRAY_COUNT(gUnknown_0860DE84)];
+ else
+ gSaveBlock2Ptr->frontier.field_DC6 = gUnknown_0860DE78[Random() % ARRAY_COUNT(gUnknown_0860DE78)];
+}
+
+static void sub_8195DB8(void)
+{
+ if (AddBagItem(gSaveBlock2Ptr->frontier.field_DC6, 1) == TRUE)
+ {
+ CopyItemName(gSaveBlock2Ptr->frontier.field_DC6, gStringVar1);
+ gSaveBlock2Ptr->frontier.field_DC6 = 0;
+ gSpecialVar_Result = TRUE;
+ }
+ else
+ {
+ gSpecialVar_Result = FALSE;
+ }
+}
diff --git a/src/battle_pike.c b/src/battle_pike.c
index e9f8b3034..a0a50d86e 100644
--- a/src/battle_pike.c
+++ b/src/battle_pike.c
@@ -117,7 +117,7 @@ static const u8 gUnknown_086125DC[][4] =
{0x15, 0x46, 0x23, 0x00},
};
-static void (* const gUnknown_086125F8[])(void) =
+static void (* const sBattlePikeFunctions[])(void) =
{
sub_81A705C,
sub_81A7140,
@@ -172,7 +172,7 @@ static const u32 gUnknown_08612690[] = {0x400, 0x800};
// code
void CallBattlePikeFunction(void)
{
- gUnknown_086125F8[gSpecialVar_0x8004]();
+ sBattlePikeFunctions[gSpecialVar_0x8004]();
}
static void sub_81A705C(void)