Heal Block anim with volume change task

This commit is contained in:
DizzyEggg 2019-04-09 12:49:50 +02:00
parent 1c73e61a2b
commit 91aafa2ebc
3 changed files with 86 additions and 3 deletions

View File

@ -144,7 +144,7 @@
.byte \pan
.endm
.macro panse_1B se:req, param1:req, param2:req, param3:req, param4
.macro panse_1B se:req, param1:req, param2:req, param3:req, param4:req
.byte 0x1b
.2byte \se
.byte \param1
@ -215,7 +215,7 @@
.byte \param2
.endm
.macro panse_26 se:req, param1:req, param2:req, param3:req, param4
.macro panse_26 se:req, param1:req, param2:req, param3:req, param4:req
.byte 0x26
.2byte \se
.byte \param1
@ -224,7 +224,7 @@
.byte \param4
.endm
.macro panse_27 se:req, param1:req, param2:req, param3:req, param4
.macro panse_27 se:req, param1:req, param2:req, param3:req, param4:req
.byte 0x27
.2byte \se
.byte \param1

View File

@ -1132,6 +1132,27 @@ Move_TRUMP_CARD:
end
Move_HEAL_BLOCK:
loadspritegfx ANIM_TAG_BLUE_STAR
monbg ANIM_TARGET
createsoundtask AnimTask_PlaySeChangingVolume, SE_W071B, SOUND_PAN_TARGET, 256, -16, 0, 2
createsprite gUnknown_08592F2C, ANIM_TARGET, 2, 0, -5, 1, 0
delay 7
createsprite gUnknown_08592F2C, ANIM_TARGET, 2, -15, 10, 1, 0
delay 7
createvisualtask sub_8116620, 10, 1 | 4, 4, 2, 12, 0, RGB_BLACK
createsprite gUnknown_08592F2C, ANIM_TARGET, 2, 0, -5, 1, 0
delay 7
createsprite gUnknown_08592F2C, ANIM_TARGET, 2, -15, 10, 1, 0
delay 7
createsprite gUnknown_08592F2C, ANIM_TARGET, 2, -15, -15, 1, 0
delay 7
createsprite gUnknown_08592F2C, ANIM_TARGET, 2, 10, -5, 1, 0
delay 7
waitforvisualfinish
delay 11
createvisualtask sub_8116620, 10, 1 | 4, 4, 2, 0, 12, RGB_BLACK
waitforvisualfinish
clearmonbg ANIM_TARGET
end
Move_WRING_OUT:

View File

@ -2,11 +2,14 @@
#include "battle.h"
#include "battle_anim.h"
#include "contest.h"
#include "m4a.h"
#include "sound.h"
#include "task.h"
#include "constants/battle_anim.h"
#include "constants/species.h"
extern struct MusicPlayerInfo gMPlayInfo_SE1;
// this file's functions
static void sub_8158B98(u8 taskId);
static void sub_8158C04(u8 taskId);
@ -14,6 +17,7 @@ static void sub_8158D08(u8 taskId);
static void sub_8158FF4(u8 taskId);
static void sub_815913C(u8 taskId);
static void sub_8159308(u8 taskId);
static void AnimTask_SeVolumeChange(u8 taskId);
// task start
void sub_8158B30(u8 taskId)
@ -436,3 +440,61 @@ _0815935A:\n\
.pool");
}
#endif
#define tSongNum data[0]
#define tPan data[1]
#define tCurrentVolume data[2]
#define tIncrementVal data[3]
#define tTargetVolume data[4]
#define tDelay data[5]
#define tFrameCounter data[6]
#define tInitialVolume data[7]
void AnimTask_PlaySeChangingVolume(u8 taskId)
{
gTasks[taskId].tSongNum = gBattleAnimArgs[0];
gTasks[taskId].tPan = BattleAnimAdjustPanning(gBattleAnimArgs[1]);
gTasks[taskId].tCurrentVolume = gTasks[taskId].tInitialVolume = gBattleAnimArgs[2];
gTasks[taskId].tIncrementVal = gBattleAnimArgs[3];
gTasks[taskId].tTargetVolume = gBattleAnimArgs[4];
gTasks[taskId].tDelay = gBattleAnimArgs[5];
PlaySE1WithPanning(gTasks[taskId].tSongNum, gTasks[taskId].tPan);
m4aMPlayVolumeControl(&gMPlayInfo_SE1, 0xFFFF, gTasks[taskId].tCurrentVolume);
if (gTasks[taskId].tIncrementVal == 0) // Either increase or decrease volume.
DestroyAnimSoundTask(taskId);
else
gTasks[taskId].func = AnimTask_SeVolumeChange;
}
static void AnimTask_SeVolumeChange(u8 taskId)
{
bool32 destroyTask = FALSE;
if (gTasks[taskId].tFrameCounter++ >= gTasks[taskId].tDelay)
{
gTasks[taskId].tFrameCounter = 0;
gTasks[taskId].tCurrentVolume += gTasks[taskId].tIncrementVal;
if (gTasks[taskId].tCurrentVolume < 0)
gTasks[taskId].tCurrentVolume = 0;
if (gTasks[taskId].tCurrentVolume > 256)
gTasks[taskId].tCurrentVolume = 256;
if (gTasks[taskId].tInitialVolume < gTasks[taskId].tTargetVolume) // Volume increasing.
{
if (gTasks[taskId].tCurrentVolume >= gTasks[taskId].tTargetVolume) // Target reached.
destroyTask = TRUE;
}
else // Volume decreasing.
{
if (gTasks[taskId].tCurrentVolume <= gTasks[taskId].tTargetVolume) // Target reached.
destroyTask = TRUE;
}
if (destroyTask)
DestroyAnimSoundTask(taskId);
m4aMPlayVolumeControl(&gMPlayInfo_SE1, 0xFFFF, gTasks[taskId].tCurrentVolume);
}
}