summaryrefslogtreecommitdiff
path: root/src/battle_arena.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle_arena.c')
-rw-r--r--src/battle_arena.c110
1 files changed, 56 insertions, 54 deletions
diff --git a/src/battle_arena.c b/src/battle_arena.c
index f785fa7c3..42a967fc6 100644
--- a/src/battle_arena.c
+++ b/src/battle_arena.c
@@ -20,8 +20,10 @@
#include "text.h"
#include "util.h"
#include "constants/songs.h"
+#include "constants/battle_arena.h"
#include "constants/battle_string_ids.h"
#include "constants/battle_frontier.h"
+#include "constants/frontier_util.h"
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/rgb.h"
@@ -30,9 +32,9 @@
static void InitArenaChallenge(void);
static void GetArenaData(void);
static void SetArenaData(void);
-static void sub_81A5AC4(void);
-static void SetArenaRewardItem(void);
-static void GiveArenaRewardItem(void);
+static void SaveArenaChallenge(void);
+static void SetArenaPrize(void);
+static void GiveArenaPrize(void);
static void BufferArenaOpponentName(void);
static void SpriteCb_JudgmentIcon(struct Sprite *sprite);
static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler);
@@ -402,10 +404,10 @@ static const s8 sMindRatings[] =
static const struct OamData sJudgementIconOamData =
{
.y = 0,
- .affineMode = 0,
- .objMode = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
- .bpp = 0,
+ .bpp = ST_OAM_4BPP,
.shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
@@ -467,16 +469,16 @@ static const struct CompressedSpriteSheet sBattleArenaJudgementSymbolsSpriteShee
static void (* const sArenaFunctions[])(void) =
{
- InitArenaChallenge,
- GetArenaData,
- SetArenaData,
- sub_81A5AC4,
- SetArenaRewardItem,
- GiveArenaRewardItem,
- BufferArenaOpponentName,
+ [BATTLE_ARENA_FUNC_INIT] = InitArenaChallenge,
+ [BATTLE_ARENA_FUNC_GET_DATA] = GetArenaData,
+ [BATTLE_ARENA_FUNC_SET_DATA] = SetArenaData,
+ [BATTLE_ARENA_FUNC_SAVE] = SaveArenaChallenge,
+ [BATTLE_ARENA_FUNC_SET_PRIZE] = SetArenaPrize,
+ [BATTLE_ARENA_FUNC_GIVE_PRIZE] = GiveArenaPrize,
+ [BATTLE_ARENA_FUNC_GET_TRAINER_NAME] = BufferArenaOpponentName,
};
-static const u16 sShortStreakRewardItems[] =
+static const u16 sShortStreakPrizeItems[] =
{
ITEM_HP_UP,
ITEM_PROTEIN,
@@ -486,7 +488,7 @@ static const u16 sShortStreakRewardItems[] =
ITEM_ZINC,
};
-static const u16 sLongStreakRewardItems[] =
+static const u16 sLongStreakPrizeItems[] =
{
ITEM_BRIGHT_POWDER,
ITEM_WHITE_HERB,
@@ -562,8 +564,8 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
break;
case 4:
PlaySE(SE_HANTEI1);
- ShowJudgmentSprite(80, 40, 0, 0);
- ShowJudgmentSprite(160, 40, 0, 1);
+ ShowJudgmentSprite(80, 40, ARENA_CATEGORY_MIND, B_POSITION_PLAYER_LEFT);
+ ShowJudgmentSprite(160, 40, ARENA_CATEGORY_MIND, B_POSITION_OPPONENT_LEFT);
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
BattlePutTextOnWindow(gDisplayedStringBattle, 21);
(*state)++;
@@ -571,8 +573,8 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
break;
case 5:
PlaySE(SE_HANTEI1);
- ShowJudgmentSprite(80, 56, 1, 0);
- ShowJudgmentSprite(160, 56, 1, 1);
+ ShowJudgmentSprite(80, 56, ARENA_CATEGORY_SKILL, B_POSITION_PLAYER_LEFT);
+ ShowJudgmentSprite(160, 56, ARENA_CATEGORY_SKILL, B_POSITION_OPPONENT_LEFT);
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
BattlePutTextOnWindow(gDisplayedStringBattle, 21);
(*state)++;
@@ -580,8 +582,8 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
break;
case 6:
PlaySE(SE_HANTEI1);
- ShowJudgmentSprite(80, 72, 2, 0);
- ShowJudgmentSprite(160, 72, 2, 1);
+ ShowJudgmentSprite(80, 72, ARENA_CATEGORY_BODY, B_POSITION_PLAYER_LEFT);
+ ShowJudgmentSprite(160, 72, ARENA_CATEGORY_BODY, B_POSITION_OPPONENT_LEFT);
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
BattlePutTextOnWindow(gDisplayedStringBattle, 21);
(*state)++;
@@ -641,15 +643,15 @@ static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler)
switch (category)
{
- case 0:
+ case ARENA_CATEGORY_MIND:
pointsPlayer = mindPoints[battler];
pointsOpponent = mindPoints[BATTLE_OPPOSITE(battler)];
break;
- case 1:
+ case ARENA_CATEGORY_SKILL:
pointsPlayer = skillPoints[battler];
pointsOpponent = skillPoints[BATTLE_OPPOSITE(battler)];
break;
- case 2:
+ case ARENA_CATEGORY_BODY:
pointsPlayer = (gBattleMons[battler].hp * 100) / hpAtStart[battler];
pointsOpponent = (gBattleMons[BATTLE_OPPOSITE(battler)].hp * 100) / hpAtStart[BATTLE_OPPOSITE(battler)];
break;
@@ -786,14 +788,14 @@ static void InitArenaChallenge(void)
bool32 isCurrent;
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
- gSaveBlock2Ptr->frontier.field_CA8 = 0;
+ gSaveBlock2Ptr->frontier.challengeStatus = 0;
gSaveBlock2Ptr->frontier.curChallengeBattleNum = 0;
- gSaveBlock2Ptr->frontier.field_CA9_a = 0;
- gSaveBlock2Ptr->frontier.field_CA9_b = 0;
+ gSaveBlock2Ptr->frontier.challengePaused = FALSE;
+ gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE;
if (lvlMode != FRONTIER_LVL_50)
- isCurrent = gSaveBlock2Ptr->frontier.field_CDC & 0x80;
+ isCurrent = gSaveBlock2Ptr->frontier.winStreakActiveFlags & STREAK_ARENA_OPEN;
else
- isCurrent = gSaveBlock2Ptr->frontier.field_CDC & 0x40;
+ isCurrent = gSaveBlock2Ptr->frontier.winStreakActiveFlags & STREAK_ARENA_50;
if (!isCurrent)
gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] = 0;
@@ -808,17 +810,17 @@ static void GetArenaData(void)
switch (gSpecialVar_0x8005)
{
- case 0:
- gSpecialVar_Result = gSaveBlock2Ptr->frontier.arenaRewardItem;
+ case ARENA_DATA_PRIZE:
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.arenaPrize;
break;
- case 1:
+ case ARENA_DATA_WIN_STREAK:
gSpecialVar_Result = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode];
break;
- case 2:
+ case ARENA_DATA_WIN_STREAK_ACTIVE:
if (lvlMode != FRONTIER_LVL_50)
- gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CDC & 0x80;
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.winStreakActiveFlags & STREAK_ARENA_OPEN;
else
- gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_CDC & 0x40;
+ gSpecialVar_Result = gSaveBlock2Ptr->frontier.winStreakActiveFlags & STREAK_ARENA_50;
break;
}
}
@@ -829,55 +831,55 @@ static void SetArenaData(void)
switch (gSpecialVar_0x8005)
{
- case 0:
- gSaveBlock2Ptr->frontier.arenaRewardItem = gSpecialVar_0x8006;
+ case ARENA_DATA_PRIZE:
+ gSaveBlock2Ptr->frontier.arenaPrize = gSpecialVar_0x8006;
break;
- case 1:
+ case ARENA_DATA_WIN_STREAK:
gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] = gSpecialVar_0x8006;
break;
- case 2:
+ case ARENA_DATA_WIN_STREAK_ACTIVE:
if (lvlMode != FRONTIER_LVL_50)
{
if (gSpecialVar_0x8006)
- gSaveBlock2Ptr->frontier.field_CDC |= 0x80;
+ gSaveBlock2Ptr->frontier.winStreakActiveFlags |= STREAK_ARENA_OPEN;
else
- gSaveBlock2Ptr->frontier.field_CDC &= ~(0x80);
+ gSaveBlock2Ptr->frontier.winStreakActiveFlags &= ~(STREAK_ARENA_OPEN);
}
else
{
if (gSpecialVar_0x8006)
- gSaveBlock2Ptr->frontier.field_CDC |= 0x40;
+ gSaveBlock2Ptr->frontier.winStreakActiveFlags |= STREAK_ARENA_50;
else
- gSaveBlock2Ptr->frontier.field_CDC &= ~(0x40);
+ gSaveBlock2Ptr->frontier.winStreakActiveFlags &= ~(STREAK_ARENA_50);
}
break;
}
}
-static void sub_81A5AC4(void)
+static void SaveArenaChallenge(void)
{
- gSaveBlock2Ptr->frontier.field_CA8 = gSpecialVar_0x8005;
+ gSaveBlock2Ptr->frontier.challengeStatus = gSpecialVar_0x8005;
VarSet(VAR_TEMP_0, 0);
- gSaveBlock2Ptr->frontier.field_CA9_a = 1;
- sub_81A4C30();
+ gSaveBlock2Ptr->frontier.challengePaused = TRUE;
+ SaveGameFrontier();
}
-static void SetArenaRewardItem(void)
+static void SetArenaPrize(void)
{
u32 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
if (gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] > 41)
- gSaveBlock2Ptr->frontier.arenaRewardItem = sLongStreakRewardItems[Random() % ARRAY_COUNT(sLongStreakRewardItems)];
+ gSaveBlock2Ptr->frontier.arenaPrize = sLongStreakPrizeItems[Random() % ARRAY_COUNT(sLongStreakPrizeItems)];
else
- gSaveBlock2Ptr->frontier.arenaRewardItem = sShortStreakRewardItems[Random() % ARRAY_COUNT(sShortStreakRewardItems)];
+ gSaveBlock2Ptr->frontier.arenaPrize = sShortStreakPrizeItems[Random() % ARRAY_COUNT(sShortStreakPrizeItems)];
}
-static void GiveArenaRewardItem(void)
+static void GiveArenaPrize(void)
{
- if (AddBagItem(gSaveBlock2Ptr->frontier.arenaRewardItem, 1) == TRUE)
+ if (AddBagItem(gSaveBlock2Ptr->frontier.arenaPrize, 1) == TRUE)
{
- CopyItemName(gSaveBlock2Ptr->frontier.arenaRewardItem, gStringVar1);
- gSaveBlock2Ptr->frontier.arenaRewardItem = 0;
+ CopyItemName(gSaveBlock2Ptr->frontier.arenaPrize, gStringVar1);
+ gSaveBlock2Ptr->frontier.arenaPrize = ITEM_NONE;
gSpecialVar_Result = TRUE;
}
else