diff options
Diffstat (limited to 'src/battle')
-rw-r--r--[-rwxr-xr-x] | src/battle/anim/current.c | 0 | ||||
-rw-r--r-- | src/battle/anim/dark.c | 2 | ||||
-rw-r--r--[-rwxr-xr-x] | src/battle/anim/egg.c | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | src/battle/anim/flying.c | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | src/battle/anim/ghost.c | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | src/battle/anim/ground.c | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | src/battle/anim/ice.c | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | src/battle/anim/normal.c | 0 | ||||
-rw-r--r-- | src/battle/battle_2.c | 8 | ||||
-rw-r--r--[-rwxr-xr-x] | src/battle/battle_ai_switch_items.c | 0 | ||||
-rw-r--r-- | src/battle/battle_anim.c | 6 | ||||
-rw-r--r--[-rwxr-xr-x] | src/battle/battle_anim_812C144.c | 238 | ||||
-rw-r--r-- | src/battle/battle_setup.c | 36 | ||||
-rw-r--r-- | src/battle/pokeball.c | 2 |
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) { |