summaryrefslogtreecommitdiff
path: root/src/battle
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle')
-rw-r--r--[-rwxr-xr-x]src/battle/anim/current.c0
-rw-r--r--src/battle/anim/dark.c2
-rw-r--r--[-rwxr-xr-x]src/battle/anim/egg.c0
-rw-r--r--[-rwxr-xr-x]src/battle/anim/flying.c0
-rw-r--r--[-rwxr-xr-x]src/battle/anim/ghost.c0
-rw-r--r--[-rwxr-xr-x]src/battle/anim/ground.c0
-rw-r--r--[-rwxr-xr-x]src/battle/anim/ice.c0
-rw-r--r--[-rwxr-xr-x]src/battle/anim/normal.c0
-rw-r--r--src/battle/battle_2.c8
-rw-r--r--[-rwxr-xr-x]src/battle/battle_ai_switch_items.c0
-rw-r--r--src/battle/battle_anim.c6
-rw-r--r--[-rwxr-xr-x]src/battle/battle_anim_812C144.c238
-rw-r--r--src/battle/battle_setup.c36
-rw-r--r--src/battle/pokeball.c2
14 files changed, 265 insertions, 27 deletions
diff --git a/src/battle/anim/current.c b/src/battle/anim/current.c
index af72edef0..af72edef0 100755..100644
--- a/src/battle/anim/current.c
+++ b/src/battle/anim/current.c
diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c
index a7026edff..59db85342 100644
--- a/src/battle/anim/dark.c
+++ b/src/battle/anim/dark.c
@@ -1024,7 +1024,7 @@ void sub_80E0A4C(u8 taskId)
if (IsContest())
{
- species = EWRAM_19348;
+ species = EWRAM_19348[0];
}
else
{
diff --git a/src/battle/anim/egg.c b/src/battle/anim/egg.c
index 5b6d56dac..5b6d56dac 100755..100644
--- a/src/battle/anim/egg.c
+++ b/src/battle/anim/egg.c
diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c
index ec40e26c4..ec40e26c4 100755..100644
--- a/src/battle/anim/flying.c
+++ b/src/battle/anim/flying.c
diff --git a/src/battle/anim/ghost.c b/src/battle/anim/ghost.c
index 85879c86c..85879c86c 100755..100644
--- a/src/battle/anim/ghost.c
+++ b/src/battle/anim/ghost.c
diff --git a/src/battle/anim/ground.c b/src/battle/anim/ground.c
index a523df20e..a523df20e 100755..100644
--- a/src/battle/anim/ground.c
+++ b/src/battle/anim/ground.c
diff --git a/src/battle/anim/ice.c b/src/battle/anim/ice.c
index 50c8b9030..50c8b9030 100755..100644
--- a/src/battle/anim/ice.c
+++ b/src/battle/anim/ice.c
diff --git a/src/battle/anim/normal.c b/src/battle/anim/normal.c
index 8303e7c68..8303e7c68 100755..100644
--- a/src/battle/anim/normal.c
+++ b/src/battle/anim/normal.c
diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c
index 79d60125e..11ddd6b71 100644
--- a/src/battle/battle_2.c
+++ b/src/battle/battle_2.c
@@ -6339,7 +6339,7 @@ void HandleEndTurn_BattleWon(void)
{
case TRAINER_CLASS_ELITE_FOUR:
case TRAINER_CLASS_CHAMPION:
- PlayBGM(BGM_KACHI5);
+ PlayBGM(MUS_KACHI5);
break;
case TRAINER_CLASS_TEAM_AQUA:
case TRAINER_CLASS_TEAM_MAGMA:
@@ -6347,13 +6347,13 @@ void HandleEndTurn_BattleWon(void)
case TRAINER_CLASS_AQUA_LEADER:
case TRAINER_CLASS_MAGMA_ADMIN:
case TRAINER_CLASS_MAGMA_LEADER:
- PlayBGM(BGM_KACHI4);
+ PlayBGM(MUS_KACHI4);
break;
case TRAINER_CLASS_LEADER:
- PlayBGM(BGM_KACHI3);
+ PlayBGM(MUS_KACHI3);
break;
default:
- PlayBGM(BGM_KACHI1);
+ PlayBGM(MUS_KACHI1);
break;
}
}
diff --git a/src/battle/battle_ai_switch_items.c b/src/battle/battle_ai_switch_items.c
index 4dd7614bf..4dd7614bf 100755..100644
--- a/src/battle/battle_ai_switch_items.c
+++ b/src/battle/battle_ai_switch_items.c
diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c
index f3b0056ac..ebfe2401d 100644
--- a/src/battle/battle_anim.c
+++ b/src/battle/battle_anim.c
@@ -1499,7 +1499,7 @@ void LaunchBattleAnimation(const u8 *const moveAnims[], u16 move, u8 isMoveAnim)
else
{
for (i = 0; i < 4; i++)
- gAnimSpeciesByBanks[i] = EWRAM_19348;
+ gAnimSpeciesByBanks[i] = EWRAM_19348[0];
}
if (isMoveAnim == 0)
@@ -1933,7 +1933,7 @@ void MoveBattlerSpriteToBG(u8 bank, u8 toBG_2)
spriteId = gBankSpriteIds[bank];
gBattle_BG1_X = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32;
- if (IsContest() != 0 && IsSpeciesNotUnown(EWRAM_19348) != 0)
+ if (IsContest() != 0 && IsSpeciesNotUnown(EWRAM_19348[0]) != 0)
gBattle_BG1_X--;
gBattle_BG1_Y = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32;
gSprites[gBankSpriteIds[bank]].invisible = TRUE;
@@ -1987,7 +1987,7 @@ static void sub_8076380(void)
struct UnknownStruct2 s;
u16 *ptr;
- if (IsSpeciesNotUnown(EWRAM_19348))
+ if (IsSpeciesNotUnown(EWRAM_19348[0]))
{
sub_8078914(&s);
ptr = s.unk4;
diff --git a/src/battle/battle_anim_812C144.c b/src/battle/battle_anim_812C144.c
index 601e3c6df..cef1fb97c 100755..100644
--- a/src/battle/battle_anim_812C144.c
+++ b/src/battle/battle_anim_812C144.c
@@ -1,12 +1,17 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
+#include "contest.h"
+#include "data2.h"
+#include "decompress.h"
+#include "ewram.h"
#include "palette.h"
#include "random.h"
#include "rom_8077ABC.h"
#include "scanline_effect.h"
#include "sound.h"
#include "trig.h"
+#include "constants/songs.h"
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
@@ -18,15 +23,25 @@ extern u16 gBattle_WIN0V;
extern u16 gBattle_WIN1H;
extern u16 gBattle_WIN1V;
extern u16 gBattle_BG1_X;
+extern u16 gBattle_BG1_Y;
extern u16 gBattle_BG2_X;
+extern u16 gBattle_BG2_Y;
extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7220;
extern const struct SpriteTemplate gSpriteTemplate_8402500;
+extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18[];
+extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7BEC[];
extern const union AffineAnimCmd gUnknown_08402400[];
extern const union AffineAnimCmd gUnknown_084024B0[];
extern const union AffineAnimCmd gUnknown_08402518[];
extern const union AffineAnimCmd gUnknown_08402540[];
extern const union AffineAnimCmd gUnknown_08402590[];
+extern const u32 gUnknown_08D2AA98[];
+extern const u32 gUnknown_08D2A9E0[];
+extern const u16 gUnknown_08D2AA80[];
+extern const s8 gUnknown_084025C0[];
+extern u8 gBattleMonForms[];
+extern u8 gBankSpriteIds[];
extern u8 sub_8046234(s16 x, s16 y, u8 a3);
@@ -1124,3 +1139,226 @@ void sub_812D790(u8 taskId)
DestroyAnimVisualTask(taskId);
}
}
+
+void sub_812D7E8(u8 taskId)
+{
+ int i, j;
+ u8 position;
+ struct Struct_sub_8078914 subStruct;
+ u8 *dest;
+ u8 *src;
+ u16 *field_4;
+ u16 *ptr;
+ u16 stretch;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ REG_MOSAIC = 0;
+ if (GetBattlerPosition_permutated(gAnimBankAttacker) == 1)
+ REG_BG1CNT_BITFIELD.mosaic = 1;
+ else
+ REG_BG2CNT_BITFIELD.mosaic = 1;
+
+ gTasks[taskId].data[10] = gBattleAnimArgs[0];
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if (gTasks[taskId].data[2]++ > 1)
+ {
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[1]++;
+ stretch = gTasks[taskId].data[1];
+ REG_MOSAIC = (stretch << 4) | stretch;
+ if (stretch == 15)
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 2:
+ sub_8031FC4(gAnimBankAttacker, gAnimBankTarget, gTasks[taskId].data[10]);
+ sub_8078954(&subStruct, gAnimBankAttacker);
+
+ if (IsContest())
+ position = 0;
+ else
+ position = GetBattlerPosition(gAnimBankAttacker);
+
+ dest = gUnknown_081FAF4C[position] + (gBattleMonForms[gAnimBankAttacker] << 11);
+ src = subStruct.field_0;
+ DmaCopy32(3, dest, src, 0x800);
+
+ if (IsContest())
+ {
+ if (IsSpeciesNotUnown(EWRAM_19348[0]) != IsSpeciesNotUnown(EWRAM_19348[1]))
+ {
+ field_4 = (u16 *)subStruct.field_4;
+ for (i = 0; i < 8; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ u16 temp = field_4[j + i * 0x20];
+ field_4[j + i * 0x20] = field_4[(7 - j) + i * 0x20];
+ field_4[(7 - j) + i * 0x20] = temp;
+ }
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ for (j = 0; j < 8; j++)
+ {
+ field_4[j + i * 0x20] ^= 0x400;
+ }
+ }
+ }
+
+ ptr = EWRAM_19348;
+ if (IsSpeciesNotUnown(ptr[1]))
+ gSprites[gBankSpriteIds[gAnimBankAttacker]].affineAnims = gSpriteAffineAnimTable_81E7C18;
+ else
+ gSprites[gBankSpriteIds[gAnimBankAttacker]].affineAnims = gSpriteAffineAnimTable_81E7BEC;
+
+ StartSpriteAffineAnim(&gSprites[gBankSpriteIds[gAnimBankAttacker]], 0);
+ }
+
+ gTasks[taskId].data[0]++;
+ break;
+ case 3:
+ if (gTasks[taskId].data[2]++ > 1)
+ {
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[1]--;
+ stretch = gTasks[taskId].data[1];
+ REG_MOSAIC = (stretch << 4) | stretch;
+
+ if (stretch == 0)
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 4:
+ REG_MOSAIC = 0;
+ if (GetBattlerPosition_permutated(gAnimBankAttacker) == 1)
+ REG_BG1CNT_BITFIELD.mosaic = 0;
+ else
+ REG_BG2CNT_BITFIELD.mosaic = 0;
+
+ if (!IsContest())
+ {
+ if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_OPPONENT)
+ {
+ if (gTasks[taskId].data[10] == 0)
+ sub_8032984(gAnimBankAttacker, eTransformStatuses[gAnimBankAttacker].species);
+ }
+ }
+
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void c3_80DFBE4(u8 taskId)
+{
+ gBattleAnimArgs[7] = gSprites[gBankSpriteIds[gAnimBankAttacker]].invisible;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_812DB58(u8 taskId)
+{
+ sub_8031FC4(gAnimBankAttacker, gAnimBankTarget, 1);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_812DB84(u8 taskId)
+{
+ struct Struct_sub_8078914 subStruct;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ REG_BLDCNT = BLDCNT_TGT2_BD | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1
+ | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1;
+ REG_BLDALPHA = 0x1000;
+ REG_BG1CNT_BITFIELD.screenSize = 0;
+ REG_BG1CNT_BITFIELD.priority = 1;
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 1;
+
+ sub_8078914(&subStruct);
+ DmaClear32(3, subStruct.field_4, 0x1000);
+ LZDecompressVram(gUnknown_08D2AA98, subStruct.field_4);
+ LZDecompressVram(gUnknown_08D2A9E0, subStruct.field_0);
+ LoadCompressedPalette(gUnknown_08D2AA80, subStruct.field_8 * 16, 32);
+ if (IsContest())
+ {
+ sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0);
+ gBattle_BG1_X = -56;
+ gBattle_BG1_Y = 0;
+ }
+ else
+ {
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ gBattle_BG1_X = -135;
+ else
+ gBattle_BG1_X = -10;
+
+ gBattle_BG1_Y = 0;
+ }
+
+ gTasks[taskId].data[10] = gBattle_BG1_X;
+ gTasks[taskId].data[11] = gBattle_BG1_Y;
+
+ gTasks[taskId].data[0]++;
+ PlaySE12WithPanning(SE_W234, BattleAnimAdjustPanning(-64));
+ break;
+ case 1:
+ if (gTasks[taskId].data[4]++ > 0)
+ {
+ gTasks[taskId].data[4] = 0;
+ if (++gTasks[taskId].data[1] > 12)
+ gTasks[taskId].data[1] = 12;
+
+ REG_BLDALPHA = ((16 - gTasks[taskId].data[1]) << 8) | gTasks[taskId].data[1];
+
+ if (gTasks[taskId].data[1] == 12)
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 2:
+ if (--gTasks[taskId].data[1] < 0)
+ gTasks[taskId].data[1] = 0;
+
+ REG_BLDALPHA = ((16 - gTasks[taskId].data[1]) << 8) | gTasks[taskId].data[1];
+
+ if (gTasks[taskId].data[1] == 0)
+ {
+ gBattle_BG1_X = gUnknown_084025C0[gTasks[taskId].data[2]] + gTasks[taskId].data[10];
+ if (++gTasks[taskId].data[2] == 4)
+ gTasks[taskId].data[0] = 4;
+ else
+ gTasks[taskId].data[0] = 3;
+ }
+ break;
+ case 3:
+ if (++gTasks[taskId].data[3] == 4)
+ {
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[0] = 1;
+ PlaySE12WithPanning(SE_W234, BattleAnimAdjustPanning(-64));
+ }
+ break;
+ case 4:
+ sub_8078914(&subStruct);
+ DmaFill32Large(3, 0, subStruct.field_0, 0x2000, 0x1000);
+ DmaClear32(3, subStruct.field_4, 0x800);
+
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 0;
+
+ REG_BG1CNT_BITFIELD.priority = 1;
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
diff --git a/src/battle/battle_setup.c b/src/battle/battle_setup.c
index f53959cc2..8c5f68902 100644
--- a/src/battle/battle_setup.c
+++ b/src/battle/battle_setup.c
@@ -587,7 +587,7 @@ void ScrSpecial_StartRayquazaBattle(void)
ScriptContext2_Enable();
gMain.savedCallback = CB2_EndScriptedWildBattle;
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY;
- CreateBattleStartTask(B_TRANSITION_BLUR, BGM_BATTLE34);
+ CreateBattleStartTask(B_TRANSITION_BLUR, MUS_BATTLE34);
IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
IncrementGameStat(GAME_STAT_WILD_BATTLES);
}
@@ -598,9 +598,9 @@ void ScrSpecial_StartGroudonKyogreBattle(void)
gMain.savedCallback = CB2_EndScriptedWildBattle;
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON;
if (gGameVersion == VERSION_RUBY)
- CreateBattleStartTask(B_TRANSITION_SHARDS, BGM_BATTLE34); // GROUDON
+ CreateBattleStartTask(B_TRANSITION_SHARDS, MUS_BATTLE34); // GROUDON
else
- CreateBattleStartTask(B_TRANSITION_RIPPLE, BGM_BATTLE34); // KYOGRE
+ CreateBattleStartTask(B_TRANSITION_RIPPLE, MUS_BATTLE34); // KYOGRE
IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
IncrementGameStat(GAME_STAT_WILD_BATTLES);
}
@@ -610,7 +610,7 @@ void ScrSpecial_StartRegiBattle(void)
ScriptContext2_Enable();
gMain.savedCallback = CB2_EndScriptedWildBattle;
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI;
- CreateBattleStartTask(B_TRANSITION_GRID_SQUARES, BGM_BATTLE36);
+ CreateBattleStartTask(B_TRANSITION_GRID_SQUARES, MUS_BATTLE36);
IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
IncrementGameStat(GAME_STAT_WILD_BATTLES);
}
@@ -1172,46 +1172,46 @@ void PlayTrainerEncounterMusic(void)
switch (sub_803FC58(gTrainerBattleOpponent))
{
case TRAINER_ENCOUNTER_MUSIC_MALE:
- music = BGM_BOYEYE;
+ music = MUS_BOYEYE;
break;
case TRAINER_ENCOUNTER_MUSIC_FEMALE:
- music = BGM_GIRLEYE;
+ music = MUS_GIRLEYE;
break;
case TRAINER_ENCOUNTER_MUSIC_GIRL:
- music = BGM_SYOUJOEYE;
+ music = MUS_SYOUJOEYE;
break;
case TRAINER_ENCOUNTER_MUSIC_INTENSE:
- music = BGM_HAGESHII;
+ music = MUS_HAGESHII;
break;
case TRAINER_ENCOUNTER_MUSIC_COOL:
- music = BGM_KAKKOII;
+ music = MUS_KAKKOII;
break;
case TRAINER_ENCOUNTER_MUSIC_AQUA:
- music = BGM_AQA_0;
+ music = MUS_AQA_0;
break;
case TRAINER_ENCOUNTER_MUSIC_MAGMA:
- music = BGM_MGM0;
+ music = MUS_MGM0;
break;
case TRAINER_ENCOUNTER_MUSIC_SWIMMER:
- music = BGM_SWIMEYE;
+ music = MUS_SWIMEYE;
break;
case TRAINER_ENCOUNTER_MUSIC_TWINS:
- music = BGM_HUTAGO;
+ music = MUS_HUTAGO;
break;
case TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR:
- music = BGM_SITENNOU;
+ music = MUS_SITENNOU;
break;
case TRAINER_ENCOUNTER_MUSIC_HIKER:
- music = BGM_YAMA_EYE;
+ music = MUS_YAMA_EYE;
break;
case TRAINER_ENCOUNTER_MUSIC_INTERVIEWER:
- music = BGM_INTER_V;
+ music = MUS_INTER_V;
break;
case TRAINER_ENCOUNTER_MUSIC_RICH:
- music = BGM_TEST;
+ music = MUS_TEST;
break;
default:
- music = BGM_AYASII;
+ music = MUS_AYASII;
}
PlayNewMapMusic(music);
}
diff --git a/src/battle/pokeball.c b/src/battle/pokeball.c
index be2adbf1b..c619141a1 100644
--- a/src/battle/pokeball.c
+++ b/src/battle/pokeball.c
@@ -815,7 +815,7 @@ static void sub_8046FBC(struct Sprite *sprite)
{
gDoingBattleAnim = 0;
m4aMPlayAllStop();
- PlaySE(BGM_FANFA5);
+ PlaySE(MUS_FANFA5);
}
else if (sprite->data[4] == 315)
{