summaryrefslogtreecommitdiff
path: root/src/battle/battle_anim.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle/battle_anim.c')
-rw-r--r--src/battle/battle_anim.c1799
1 files changed, 770 insertions, 1029 deletions
diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c
index 1a78b2863..8242a1ddd 100644
--- a/src/battle/battle_anim.c
+++ b/src/battle/battle_anim.c
@@ -17,42 +17,45 @@
// sprites start at 10000 and thus must be subtracted of 10000 to account for the true index.
#define GET_TRUE_SPRITE_INDEX(i) (i - 10000)
+#define ANIM_SPRITE_INDEX_COUNT 8
+#define ANIM_ARGS_COUNT 8
+
extern u16 gBattlePartyID[4];
extern u8 gObjectBankIDs[];
extern u8 gBankAttacker;
extern u8 gBankTarget;
-EWRAM_DATA const u8 *gBattleAnimScriptPtr = NULL;
+EWRAM_DATA const u8 *sBattleAnimScriptPtr = NULL;
EWRAM_DATA const u8 *gBattleAnimScriptRetAddr = NULL;
EWRAM_DATA void (*gAnimScriptCallback)(void) = NULL;
EWRAM_DATA s8 gAnimFramesToWait = 0;
EWRAM_DATA u8 gAnimScriptActive = FALSE;
EWRAM_DATA u8 gAnimVisualTaskCount = 0;
EWRAM_DATA u8 gAnimSoundTaskCount = 0;
-EWRAM_DATA u32 gDisableStructMoveAnim = 0;
-EWRAM_DATA u32 gMoveDmgMoveAnim = 0;
-EWRAM_DATA u16 gMovePowerMoveAnim = 0;
-EWRAM_DATA u8 gHappinessMoveAnim = 0;
+EWRAM_DATA struct DisableStruct *gAnimDisableStructPtr = NULL;
+EWRAM_DATA u32 gAnimMoveDmg = 0;
+EWRAM_DATA u16 gAnimMovePower = 0;
+EWRAM_DATA u8 gAnimFriendship = 0;
EWRAM_DATA u16 gWeatherMoveAnim = 0;
EWRAM_DATA u8 gMonAnimTaskIdArray[2] = {0};
-EWRAM_DATA u8 gUnknown_0202F7C4 = 0;
-EWRAM_DATA u8 gUnknown_0202F7C5 = 0;
-EWRAM_DATA u16 gAnimMoveIndex = 0; // set but unused.
-EWRAM_DATA u8 gBattleAnimBankAttacker = 0;
-EWRAM_DATA u8 gBattleAnimBankTarget = 0;
-EWRAM_DATA u16 gUnknown_0202F7CA[4] = {0};
+EWRAM_DATA u8 gAnimMoveTurn = 0;
+EWRAM_DATA u8 sAnimBackgroundFadeState = 0;
+EWRAM_DATA u16 sAnimMoveIndex = 0; // set but unused.
+EWRAM_DATA u8 gAnimBankAttacker = 0;
+EWRAM_DATA u8 gAnimBankTarget = 0;
+EWRAM_DATA u16 gAnimSpeciesByBanks[4] = {0};
EWRAM_DATA u8 gUnknown_0202F7D2 = 0;
-extern u16 gUnknown_030041B4;
-extern u16 gUnknown_03004200;
-extern u16 gUnknown_03004240;
-extern u16 gUnknown_03004244;
-extern u16 gUnknown_03004280;
-extern u16 gUnknown_03004288;
-extern u16 gUnknown_030042C0;
-extern u16 gUnknown_030042C4;
+extern u16 gBattle_BG1_Y;
+extern u16 gBattle_WIN1H;
+extern u16 gBattle_WIN0V;
+extern u16 gBattle_WIN1V;
+extern u16 gBattle_BG2_Y;
+extern u16 gBattle_BG2_X;
+extern u16 gBattle_BG1_X;
+extern u16 gBattle_WIN0H;
u16 gSoundAnimFramesToWait;
-s16 gBattleAnimArgs[8];
-u16 gAnimSpriteIndexArray[8];
+s16 gBattleAnimArgs[ANIM_ARGS_COUNT];
+u16 gAnimSpriteIndexArray[ANIM_SPRITE_INDEX_COUNT];
extern struct MusicPlayerInfo gMPlay_BGM;
extern struct MusicPlayerInfo gMPlay_SE1;
@@ -65,10 +68,10 @@ extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
extern const struct BattleAnimBackground gBattleAnimBackgroundTable[];
static void RunAnimScriptCommand(void);
-static void ScriptCmd_loadsprite(void);
-static void ScriptCmd_unloadsprite(void);
-static void ScriptCmd_sprite(void);
-static void ScriptCmd_createtask(void);
+static void ScriptCmd_loadspritegfx(void);
+static void ScriptCmd_unloadspritegfx(void);
+static void ScriptCmd_createsprite(void);
+static void ScriptCmd_createvisualtask(void);
static void ScriptCmd_delay(void);
static void ScriptCmd_waitforvisualfinish(void);
static void ScriptCmd_hang1(void);
@@ -88,33 +91,33 @@ static void ScriptCmd_setbldcnt(void);
static void ScriptCmd_blendoff(void);
static void ScriptCmd_call(void);
static void ScriptCmd_return(void);
-static void ScriptCmd_setvar(void);
-static void ScriptCmd_ifelse(void);
-static void ScriptCmd_jumpif(void);
+static void ScriptCmd_setarg(void);
+static void ScriptCmd_choosetwoturnanim(void);
+static void ScriptCmd_jumpifmoveturn(void);
static void ScriptCmd_jump(void);
static void ScriptCmd_fadetobg(void);
-static void ScriptCmd_fadetobg_25(void);
-static void task_p5_load_battle_screen_elements(u8);
-static void sub_8076DB8(u16);
-static void dp01t_11_3_message_for_player_only(void);
+static void ScriptCmd_fadetobgfromset(void);
+static void Task_FadeToBg(u8);
+static void LoadMoveBg(u16);
+static void LoadDefaultBg(void);
static void ScriptCmd_restorebg(void);
static void ScriptCmd_waitbgfadeout(void);
static void ScriptCmd_waitbgfadein(void);
static void ScriptCmd_changebg(void);
-static void ScriptCmd_panse_19(void);
+static void ScriptCmd_playsewithpan(void);
static void ScriptCmd_setpan(void);
static void ScriptCmd_panse_1B(void);
-static void c3_08073CEC(u8);
+static void Task_PanFromInitialToTarget(u8);
static void ScriptCmd_panse_26(void);
static void ScriptCmd_panse_27(void);
-static void ScriptCmd_panse_1C(void);
-static void sub_80774FC(u8);
-static void ScriptCmd_panse_1D(void);
-static void sub_80775CC(u8);
-static void ScriptCmd_createtask_1F(void);
+static void ScriptCmd_loopsewithpan(void);
+static void Task_LoopAndPlaySE(u8);
+static void ScriptCmd_waitplaysewithpan(void);
+static void Task_WaitAndPlaySE(u8);
+static void ScriptCmd_createsoundtask(void);
static void ScriptCmd_waitsound(void);
-static void ScriptCmd_jumpvareq(void);
-static void ScriptCmd_jumpunkcond(void);
+static void ScriptCmd_jumpargeq(void);
+static void ScriptCmd_jumpifcontest(void);
static void ScriptCmd_monbgprio_28(void);
static void ScriptCmd_monbgprio_29(void);
static void ScriptCmd_monbgprio_2A(void);
@@ -125,10 +128,10 @@ static void ScriptCmd_doublebattle_2E(void);
static void ScriptCmd_stopsound(void);
static void (*const sScriptCmdTable[])(void) = {
- ScriptCmd_loadsprite,
- ScriptCmd_unloadsprite,
- ScriptCmd_sprite,
- ScriptCmd_createtask,
+ ScriptCmd_loadspritegfx,
+ ScriptCmd_unloadspritegfx,
+ ScriptCmd_createsprite,
+ ScriptCmd_createvisualtask,
ScriptCmd_delay,
ScriptCmd_waitforvisualfinish,
ScriptCmd_hang1,
@@ -141,28 +144,28 @@ static void (*const sScriptCmdTable[])(void) = {
ScriptCmd_blendoff,
ScriptCmd_call,
ScriptCmd_return,
- ScriptCmd_setvar,
- ScriptCmd_ifelse,
- ScriptCmd_jumpif,
+ ScriptCmd_setarg,
+ ScriptCmd_choosetwoturnanim,
+ ScriptCmd_jumpifmoveturn,
ScriptCmd_jump,
ScriptCmd_fadetobg,
ScriptCmd_restorebg,
ScriptCmd_waitbgfadeout,
ScriptCmd_waitbgfadein,
ScriptCmd_changebg,
- ScriptCmd_panse_19,
+ ScriptCmd_playsewithpan,
ScriptCmd_setpan,
ScriptCmd_panse_1B,
- ScriptCmd_panse_1C,
- ScriptCmd_panse_1D,
+ ScriptCmd_loopsewithpan,
+ ScriptCmd_waitplaysewithpan,
ScriptCmd_setbldcnt,
- ScriptCmd_createtask_1F,
+ ScriptCmd_createsoundtask,
ScriptCmd_waitsound,
- ScriptCmd_jumpvareq,
+ ScriptCmd_jumpargeq,
ScriptCmd_monbg_22,
ScriptCmd_clearmonbg_23,
- ScriptCmd_jumpunkcond,
- ScriptCmd_fadetobg_25,
+ ScriptCmd_jumpifcontest,
+ ScriptCmd_fadetobgfromset,
ScriptCmd_panse_26,
ScriptCmd_panse_27,
ScriptCmd_monbgprio_28,
@@ -175,7 +178,7 @@ static void (*const sScriptCmdTable[])(void) = {
ScriptCmd_stopsound,
};
-void battle_anim_clear_some_data(void)
+void ClearBattleAnimationVars(void)
{
s32 i;
@@ -183,77 +186,77 @@ void battle_anim_clear_some_data(void)
gAnimScriptActive = FALSE;
gAnimVisualTaskCount = 0;
gAnimSoundTaskCount = 0;
- gDisableStructMoveAnim = 0;
- gMoveDmgMoveAnim = 0;
- gMovePowerMoveAnim = 0;
- gHappinessMoveAnim = 0;
+ gAnimDisableStructPtr = NULL;
+ gAnimMoveDmg = 0;
+ gAnimMovePower = 0;
+ gAnimFriendship = 0;
// clear index array.
- for (i = 0; i < 8; i++)
+ for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++)
gAnimSpriteIndexArray[i] |= 0xFFFF;
// clear anim args.
- for (i = 0; i < 8; i++)
+ for (i = 0; i < ANIM_ARGS_COUNT; i++)
gBattleAnimArgs[i] = 0;
gMonAnimTaskIdArray[0] = 0xFF;
gMonAnimTaskIdArray[1] = 0xFF;
- gUnknown_0202F7C4 = 0;
- gUnknown_0202F7C5 = 0;
- gAnimMoveIndex = 0;
- gBattleAnimBankAttacker = 0;
- gBattleAnimBankTarget = 0;
+ gAnimMoveTurn = 0;
+ sAnimBackgroundFadeState = 0;
+ sAnimMoveIndex = 0;
+ gAnimBankAttacker = 0;
+ gAnimBankTarget = 0;
gUnknown_0202F7D2 = 0;
}
-void ExecuteMoveAnim(u16 move)
+void DoMoveAnim(u16 move)
{
- gBattleAnimBankAttacker = gBankAttacker;
- gBattleAnimBankTarget = gBankTarget;
- DoMoveAnim(gBattleAnims_Moves, move, 1);
+ gAnimBankAttacker = gBankAttacker;
+ gAnimBankTarget = gBankTarget;
+ LaunchBattleAnimation(gBattleAnims_Moves, move, TRUE);
}
-void DoMoveAnim(const u8 *const moveAnims[], u16 move, u8 c)
+void LaunchBattleAnimation(const u8 *const moveAnims[], u16 move, u8 isMoveAnim)
{
s32 i;
- if (NotInBattle() == 0)
+ if (!IsContest())
{
sub_8079E24();
- sub_8043EB4(0);
+ UpdateOamPriorityInAllHealthboxes(0);
for (i = 0; i < 4; i++)
{
if (GetBankSide(i) != 0)
- gUnknown_0202F7CA[i] = GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_SPECIES);
+ gAnimSpeciesByBanks[i] = GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_SPECIES);
else
- gUnknown_0202F7CA[i] = GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_SPECIES);
+ gAnimSpeciesByBanks[i] = GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_SPECIES);
}
}
else
{
for (i = 0; i < 4; i++)
- gUnknown_0202F7CA[i] = EWRAM_19348;
+ gAnimSpeciesByBanks[i] = EWRAM_19348;
}
- if (c == 0)
- gAnimMoveIndex = 0;
+ if (isMoveAnim == 0)
+ sAnimMoveIndex = 0;
else
- gAnimMoveIndex = move;
+ sAnimMoveIndex = move;
- for (i = 0; i < 8; i++)
+ for (i = 0; i < ANIM_ARGS_COUNT; i++)
gBattleAnimArgs[i] = 0;
gMonAnimTaskIdArray[0] = 0xFF;
gMonAnimTaskIdArray[1] = 0xFF;
- gBattleAnimScriptPtr = moveAnims[move];
+ sBattleAnimScriptPtr = moveAnims[move];
gAnimScriptActive = TRUE;
gAnimFramesToWait = 0;
gAnimScriptCallback = RunAnimScriptCommand;
- for (i = 0; i < 8; i++)
+ for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++)
gAnimSpriteIndexArray[i] |= 0xFFFF;
- if (c != 0)
+ if (isMoveAnim)
{
for (i = 0; gUnknown_081C7160[i] != 0xFFFF; i++)
{
@@ -265,13 +268,13 @@ void DoMoveAnim(const u8 *const moveAnims[], u16 move, u8 c)
}
}
- gUnknown_030042C4 = 0;
- gUnknown_03004240 = 0;
- gUnknown_03004200 = 0;
- gUnknown_03004244 = 0;
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ gBattle_WIN1H = 0;
+ gBattle_WIN1V = 0;
}
-void move_anim_8072740(struct Sprite *sprite)
+void DestroyAnimSprite(struct Sprite *sprite)
{
FreeSpriteOamMatrix(sprite);
DestroySprite(sprite);
@@ -294,7 +297,7 @@ static void AddSpriteIndex(u16 index)
{
s32 i;
- for (i = 0; i < 8; i++)
+ for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++)
{
if (gAnimSpriteIndexArray[i] == 0xFFFF)
{
@@ -308,7 +311,7 @@ static void ClearSpriteIndex(u16 index)
{
s32 i;
- for (i = 0; i < 8; i++)
+ for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++)
{
if (gAnimSpriteIndexArray[i] == index)
{
@@ -335,222 +338,87 @@ static void RunAnimScriptCommand(void)
{
do
{
- sScriptCmdTable[T1_READ_8(gBattleAnimScriptPtr)]();
- } while (gAnimFramesToWait == 0 && gAnimScriptActive != FALSE);
+ sScriptCmdTable[T1_READ_8(sBattleAnimScriptPtr)]();
+ } while (gAnimFramesToWait == 0 && gAnimScriptActive);
}
-static void ScriptCmd_loadsprite(void)
+static void ScriptCmd_loadspritegfx(void)
{
u16 index;
- gBattleAnimScriptPtr++;
- index = T1_READ_16(gBattleAnimScriptPtr);
+ sBattleAnimScriptPtr++;
+ index = T1_READ_16(sBattleAnimScriptPtr);
LoadCompressedObjectPic(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)]);
LoadCompressedObjectPalette(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(index)]);
- gBattleAnimScriptPtr += 2;
+ sBattleAnimScriptPtr += 2;
AddSpriteIndex(GET_TRUE_SPRITE_INDEX(index));
gAnimFramesToWait = 1;
gAnimScriptCallback = WaitAnimFrameCount;
}
-static void ScriptCmd_unloadsprite(void)
+static void ScriptCmd_unloadspritegfx(void)
{
u16 index;
- gBattleAnimScriptPtr++;
- index = T1_READ_16(gBattleAnimScriptPtr);
+ sBattleAnimScriptPtr++;
+ index = T1_READ_16(sBattleAnimScriptPtr);
FreeSpriteTilesByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)].tag);
FreeSpritePaletteByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)].tag);
- gBattleAnimScriptPtr += 2;
+ sBattleAnimScriptPtr += 2;
ClearSpriteIndex(GET_TRUE_SPRITE_INDEX(index));
}
-#ifdef NONMATCHING
-static void ScriptCmd_sprite(void)
+static void ScriptCmd_createsprite(void)
{
s32 i;
- struct SpriteTemplate *r7;
- u8 r4;
- u8 r0;
- u8 _r0;
- u16 r6;
- u8 r2;
- s8 r1;
-
- gBattleAnimScriptPtr++;
- r7 = (struct SpriteTemplate *)(T2_READ_32(gBattleAnimScriptPtr));
- gBattleAnimScriptPtr += 4;
- r4 = T1_READ_8(gBattleAnimScriptPtr);
- gBattleAnimScriptPtr++;
- r0 = T1_READ_8(gBattleAnimScriptPtr);
- gBattleAnimScriptPtr++;
- for (i = 0; i < r0; i++)
+ const struct SpriteTemplate *template;
+ u8 argVar;
+ u8 argsCount;
+ s16 subpriority;
+
+ sBattleAnimScriptPtr++;
+ template = (const struct SpriteTemplate *)(T2_READ_32(sBattleAnimScriptPtr));
+ sBattleAnimScriptPtr += 4;
+
+ argVar = T1_READ_8(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr++;
+
+ argsCount = T1_READ_8(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr++;
+ for (i = 0; i < argsCount; i++)
{
- gBattleAnimArgs[i] = T1_READ_16(gBattleAnimScriptPtr);
- gBattleAnimScriptPtr += 2;
+ gBattleAnimArgs[i] = T1_READ_16(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr += 2;
}
- if (r4 & 0x80)
+
+ if (argVar & 0x80)
{
- r4 ^= 0x80;
- if (r4 > 0x3F)
- r4 -= 0x40;
+ argVar ^= 0x80;
+ if (argVar >= 0x40)
+ argVar -= 0x40;
else
- r4 = -r4;
- _r0 = sub_8079E90(gBattleAnimBankTarget);
- r1 = r4;
+ argVar *= -1;
+ subpriority = sub_8079E90(gAnimBankTarget) + (s8)(argVar);
}
else
{
- //_08075B44
- if (r4 > 0x3F)
- r4 -= 0x40;
+ if (argVar >= 0x40)
+ argVar -= 0x40;
else
- r4 = -r4;
- _r0 = sub_8079E90(gBattleAnimBankAttacker);
- r1 = r4;
+ argVar *= -1;
+
+ subpriority = sub_8079E90(gAnimBankAttacker) + (s8)(argVar);
}
- r6 = _r0 + r1;
- if ((s16)r6 < 3)
- r6 = 3;
- r4 = sub_8077ABC(gBattleAnimBankTarget, 2);
- r2 = sub_8077ABC(gBattleAnimBankTarget, 3);
- CreateSpriteAndAnimate(r7, r4, r2, r6);
+ if (subpriority < 3)
+ subpriority = 3;
+
+ CreateSpriteAndAnimate(template, GetBankPosition(gAnimBankTarget, 2), GetBankPosition(gAnimBankTarget, 3), subpriority);
gAnimVisualTaskCount++;
}
-#else
-__attribute__((naked))
-static void ScriptCmd_sprite(void)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- ldr r5, _08075B2C @ =gBattleAnimScriptPtr\n\
- ldr r1, [r5]\n\
- adds r3, r1, 0x1\n\
- str r3, [r5]\n\
- ldrb r2, [r1, 0x1]\n\
- ldrb r0, [r3, 0x1]\n\
- lsls r0, 8\n\
- adds r2, r0\n\
- ldrb r0, [r3, 0x2]\n\
- lsls r0, 16\n\
- adds r2, r0\n\
- ldrb r0, [r3, 0x3]\n\
- lsls r0, 24\n\
- adds r7, r2, r0\n\
- adds r0, r1, 0x5\n\
- str r0, [r5]\n\
- ldrb r4, [r1, 0x5]\n\
- adds r0, r1, 0x6\n\
- str r0, [r5]\n\
- ldrb r0, [r1, 0x6]\n\
- adds r1, 0x7\n\
- str r1, [r5]\n\
- cmp r0, 0\n\
- beq _08075B14\n\
- adds r6, r5, 0\n\
- ldr r5, _08075B30 @ =gBattleAnimArgs\n\
- adds r3, r0, 0\n\
-_08075AFC:\n\
- ldr r2, [r6]\n\
- ldrb r1, [r2]\n\
- ldrb r0, [r2, 0x1]\n\
- lsls r0, 8\n\
- orrs r1, r0\n\
- strh r1, [r5]\n\
- adds r2, 0x2\n\
- str r2, [r6]\n\
- adds r5, 0x2\n\
- subs r3, 0x1\n\
- cmp r3, 0\n\
- bne _08075AFC\n\
-_08075B14:\n\
- movs r0, 0x80\n\
- ands r0, r4\n\
- cmp r0, 0\n\
- beq _08075B44\n\
- movs r0, 0x80\n\
- eors r4, r0\n\
- cmp r4, 0x3F\n\
- bls _08075B34\n\
- adds r0, r4, 0\n\
- subs r0, 0x40\n\
- b _08075B36\n\
- .align 2, 0\n\
-_08075B2C: .4byte gBattleAnimScriptPtr\n\
-_08075B30: .4byte gBattleAnimArgs\n\
-_08075B34:\n\
- negs r0, r4\n\
-_08075B36:\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- ldr r0, _08075B40 @ =gBattleAnimBankTarget\n\
- b _08075B56\n\
- .align 2, 0\n\
-_08075B40: .4byte gBattleAnimBankTarget\n\
-_08075B44:\n\
- cmp r4, 0x3F\n\
- bls _08075B4E\n\
- adds r0, r4, 0\n\
- subs r0, 0x40\n\
- b _08075B50\n\
-_08075B4E:\n\
- negs r0, r4\n\
-_08075B50:\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- ldr r0, _08075BAC @ =gBattleAnimBankAttacker\n\
-_08075B56:\n\
- ldrb r0, [r0]\n\
- bl sub_8079E90\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r1, r4, 24\n\
- asrs r1, 24\n\
- adds r0, r1\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- lsls r0, r6, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x2\n\
- bgt _08075B74\n\
- movs r6, 0x3\n\
-_08075B74:\n\
- ldr r5, _08075BB0 @ =gBattleAnimBankTarget\n\
- ldrb r0, [r5]\n\
- movs r1, 0x2\n\
- bl sub_8077ABC\n\
- adds r4, r0, 0\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- ldrb r0, [r5]\n\
- movs r1, 0x3\n\
- bl sub_8077ABC\n\
- adds r2, r0, 0\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- lsls r3, r6, 24\n\
- lsrs r3, 24\n\
- adds r0, r7, 0\n\
- adds r1, r4, 0\n\
- bl CreateSpriteAndAnimate\n\
- ldr r1, _08075BB4 @ =gAnimVisualTaskCount\n\
- ldrb r0, [r1]\n\
- adds r0, 0x1\n\
- strb r0, [r1]\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08075BAC: .4byte gBattleAnimBankAttacker\n\
-_08075BB0: .4byte gBattleAnimBankTarget\n\
-_08075BB4: .4byte gAnimVisualTaskCount\n\
- .syntax divided\n");
-}
-#endif
-static void ScriptCmd_createtask(void)
+static void ScriptCmd_createvisualtask(void)
{
TaskFunc taskFunc;
u8 taskPriority;
@@ -558,18 +426,21 @@ static void ScriptCmd_createtask(void)
u8 numArgs;
s32 i;
- gBattleAnimScriptPtr++;
- taskFunc = (TaskFunc)T2_READ_32(gBattleAnimScriptPtr);
- gBattleAnimScriptPtr += 4;
- taskPriority = T1_READ_8(gBattleAnimScriptPtr);
- gBattleAnimScriptPtr++;
- numArgs = T1_READ_8(gBattleAnimScriptPtr);
- gBattleAnimScriptPtr++;
+ sBattleAnimScriptPtr++;
+
+ taskFunc = (TaskFunc)T2_READ_32(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr += 4;
+
+ taskPriority = T1_READ_8(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr++;
+
+ numArgs = T1_READ_8(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr++;
for (i = 0; i < numArgs; i++)
{
- gBattleAnimArgs[i] = T1_READ_16(gBattleAnimScriptPtr);
- gBattleAnimScriptPtr += 2;
+ gBattleAnimArgs[i] = T1_READ_16(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr += 2;
}
taskId = CreateTask(taskFunc, taskPriority);
@@ -579,11 +450,11 @@ static void ScriptCmd_createtask(void)
static void ScriptCmd_delay(void)
{
- gBattleAnimScriptPtr++;
- gAnimFramesToWait = T1_READ_8(gBattleAnimScriptPtr);
+ sBattleAnimScriptPtr++;
+ gAnimFramesToWait = T1_READ_8(sBattleAnimScriptPtr);
if (gAnimFramesToWait == 0)
gAnimFramesToWait = -1;
- gBattleAnimScriptPtr++;
+ sBattleAnimScriptPtr++;
gAnimScriptCallback = WaitAnimFrameCount;
}
@@ -592,7 +463,7 @@ static void ScriptCmd_waitforvisualfinish(void)
{
if (gAnimVisualTaskCount == 0)
{
- gBattleAnimScriptPtr++;
+ sBattleAnimScriptPtr++;
gAnimFramesToWait = 0;
}
else
@@ -641,7 +512,7 @@ static void ScriptCmd_end(void)
// the SE has halted, so set the SE Frame Counter to 0 and continue.
gSoundAnimFramesToWait = 0;
- for (i = 0; i < 8; i++)
+ for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++)
{
if (gAnimSpriteIndexArray[i] != 0xFFFF)
{
@@ -651,13 +522,13 @@ static void ScriptCmd_end(void)
}
}
- if (continuousAnim == FALSE) // may have been used for debug?
+ if (!continuousAnim) // may have been used for debug?
{
m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256);
- if (NotInBattle() == 0)
+ if (IsContest() == 0)
{
sub_8079E24();
- sub_8043EB4(1);
+ UpdateOamPriorityInAllHealthboxes(1);
}
gAnimScriptActive = FALSE;
}
@@ -665,178 +536,114 @@ static void ScriptCmd_end(void)
static void ScriptCmd_playse(void)
{
- gBattleAnimScriptPtr++;
- PlaySE(T1_READ_16(gBattleAnimScriptPtr));
- gBattleAnimScriptPtr += 2;
+ sBattleAnimScriptPtr++;
+ PlaySE(T1_READ_16(sBattleAnimScriptPtr));
+ sBattleAnimScriptPtr += 2;
}
static void ScriptCmd_monbg(void)
{
- u8 r6;
- u8 r5;
- u8 r0;
- u8 r7;
+ u8 animBank;
+ u8 bank;
+ u8 identity;
+ bool8 toBG_2;
u16 r4;
u8 taskId;
- gBattleAnimScriptPtr++;
- r6 = T1_READ_8(gBattleAnimScriptPtr);
- if (r6 == 0)
- r6 = 2;
- else if (r6 == 1)
- r6 = 3;
- if (r6 == 0 || r6 == 2)
- r5 = gBattleAnimBankAttacker;
+ sBattleAnimScriptPtr++;
+ animBank = T1_READ_8(sBattleAnimScriptPtr);
+ if (animBank == ANIM_BANK_ATTACKER)
+ animBank = ANIM_BANK_ATK_PARTNER;
+ else if (animBank == ANIM_BANK_TARGET)
+ animBank = ANIM_BANK_DEF_PARTNER;
+
+ if (animBank == ANIM_BANK_ATTACKER || animBank == ANIM_BANK_ATK_PARTNER)
+ bank = gAnimBankAttacker;
else
- r5 = gBattleAnimBankTarget;
- if (IsAnimBankSpriteVisible(r5))
+ bank = gAnimBankTarget;
+
+ if (IsAnimBankSpriteVisible(bank))
{
- r0 = GetBankIdentity(r5);
- r0 += 0xFF;
- if (r0 <= 1 || NotInBattle() != 0)
- r7 = 0;
+ identity = GetBankIdentity(bank);
+ identity += 0xFF;
+ if (identity <= 1 || IsContest() != 0)
+ toBG_2 = 0;
else
- r7 = 1;
- sub_8076034(r5, r7);
- r4 = gObjectBankIDs[r5];
+ toBG_2 = 1;
+
+ sub_8076034(bank, toBG_2);
+ r4 = gObjectBankIDs[bank];
taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
gTasks[taskId].data[0] = r4;
gTasks[taskId].data[1] = gSprites[r4].pos1.x + gSprites[r4].pos2.x;
gTasks[taskId].data[2] = gSprites[r4].pos1.y + gSprites[r4].pos2.y;
- if (r7 == 0)
+ if (toBG_2 == 0)
{
- gTasks[taskId].data[3] = gUnknown_030042C0;
- gTasks[taskId].data[4] = gUnknown_030041B4;
+ gTasks[taskId].data[3] = gBattle_BG1_X;
+ gTasks[taskId].data[4] = gBattle_BG1_Y;
}
else
{
- gTasks[taskId].data[3] = gUnknown_03004288;
- gTasks[taskId].data[4] = gUnknown_03004280;
+ gTasks[taskId].data[3] = gBattle_BG2_X;
+ gTasks[taskId].data[4] = gBattle_BG2_Y;
}
- gTasks[taskId].data[5] = r7;
- gTasks[taskId].data[6] = r5;
+ gTasks[taskId].data[5] = toBG_2;
+ gTasks[taskId].data[6] = bank;
gMonAnimTaskIdArray[0] = taskId;
}
- r5 ^= 2;
- if (r6 > 1 && IsAnimBankSpriteVisible(r5))
+ bank ^= 2;
+ if (animBank > 1 && IsAnimBankSpriteVisible(bank))
{
- r0 = GetBankIdentity(r5);
- r0 += 0xFF;
- if (r0 <= 1 || NotInBattle() != 0)
- r7 = 0;
+ identity = GetBankIdentity(bank);
+ identity += 0xFF;
+ if (identity <= 1 || IsContest() != 0)
+ toBG_2 = 0;
else
- r7 = 1;
- sub_8076034(r5, r7);
- r4 = gObjectBankIDs[r5];
+ toBG_2 = 1;
+ sub_8076034(bank, toBG_2);
+ r4 = gObjectBankIDs[bank];
taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
gTasks[taskId].data[0] = r4;
gTasks[taskId].data[1] = gSprites[r4].pos1.x + gSprites[r4].pos2.x;
gTasks[taskId].data[2] = gSprites[r4].pos1.y + gSprites[r4].pos2.y;
- if (r7 == 0)
+ if (toBG_2 == 0)
{
- gTasks[taskId].data[3] = gUnknown_030042C0;
- gTasks[taskId].data[4] = gUnknown_030041B4;
+ gTasks[taskId].data[3] = gBattle_BG1_X;
+ gTasks[taskId].data[4] = gBattle_BG1_Y;
}
else
{
- gTasks[taskId].data[3] = gUnknown_03004288;
- gTasks[taskId].data[4] = gUnknown_03004280;
+ gTasks[taskId].data[3] = gBattle_BG2_X;
+ gTasks[taskId].data[4] = gBattle_BG2_Y;
}
- gTasks[taskId].data[5] = r7;
- gTasks[taskId].data[6] = r5;
+
+ gTasks[taskId].data[5] = toBG_2;
+ gTasks[taskId].data[6] = bank;
gMonAnimTaskIdArray[1] = taskId;
}
- gBattleAnimScriptPtr++;
+
+ sBattleAnimScriptPtr++;
}
-#ifdef NONMATCHING
-bool8 IsAnimBankSpriteVisible(u8 a)
+bool8 IsAnimBankSpriteVisible(u8 bank)
{
- if (NotInBattle())
+ if (IsContest())
{
- if (a == gBattleAnimBankAttacker)
+ if (bank == gAnimBankAttacker)
return TRUE;
else
return FALSE;
}
- if (!AnimBankSpriteExists(a))
+ if (!IsBankSpritePresent(bank))
return FALSE;
- if (NotInBattle())
+ if (IsContest())
return TRUE; // this line wont ever be reached.
- if (!(EWRAM_17800[a].unk0 & 1))
+ if (!(EWRAM_17800[bank].unk0 & 1) || !gSprites[gObjectBankIDs[bank]].invisible)
return TRUE;
- if (gSprites[gObjectBankIDs[a]].invisible)
- return FALSE;
- return TRUE;
-}
-#else
-__attribute__((naked))
-bool8 IsAnimBankSpriteVisible(u8 a)
-{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- adds r5, r4, 0\n\
- bl NotInBattle\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08075FDC\n\
- ldr r0, _08075FD8 @ =gBattleAnimBankAttacker\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- beq _0807601C\n\
- b _0807602C\n\
- .align 2, 0\n\
-_08075FD8: .4byte gBattleAnimBankAttacker\n\
-_08075FDC:\n\
- adds r0, r4, 0\n\
- bl AnimBankSpriteExists\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0807602C\n\
- bl NotInBattle\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0807601C\n\
- lsls r0, r5, 2\n\
- ldr r1, _08076020 @ =gSharedMem + 0x17800\n\
- adds r0, r1\n\
- ldrb r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0807601C\n\
- ldr r2, _08076024 @ =gSprites\n\
- ldr r0, _08076028 @ =gObjectBankIDs\n\
- adds r0, r5, r0\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- adds r0, 0x3E\n\
- ldrb r0, [r0]\n\
- lsls r0, 29\n\
- cmp r0, 0\n\
- blt _0807602C\n\
-_0807601C:\n\
- movs r0, 0x1\n\
- b _0807602E\n\
- .align 2, 0\n\
-_08076020: .4byte gSharedMem + 0x17800\n\
-_08076024: .4byte gSprites\n\
-_08076028: .4byte gObjectBankIDs\n\
-_0807602C:\n\
- movs r0, 0\n\
-_0807602E:\n\
- pop {r4,r5}\n\
- pop {r1}\n\
- bx r1\n\
- .syntax divided\n");
+
+ return FALSE;
}
-#endif
void sub_8076034(u8 a, u8 b)
{
@@ -876,25 +683,25 @@ void sub_8076034(u8 a, u8 b)
REG_BG1CNT_BITFIELD.areaOverflowMode = 0;
spriteId = gObjectBankIDs[a];
- gUnknown_030042C0 = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32;
- if (NotInBattle() != 0 && sub_80AEB1C(EWRAM_19348) != 0)
- gUnknown_030042C0--;
- gUnknown_030041B4 = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32;
+ gBattle_BG1_X = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32;
+ if (IsContest() != 0 && IsSpeciesNotUnown(EWRAM_19348) != 0)
+ gBattle_BG1_X--;
+ gBattle_BG1_Y = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32;
gSprites[gObjectBankIDs[a]].invisible = TRUE;
- REG_BG1HOFS = gUnknown_030042C0;
- REG_BG1VOFS = gUnknown_030041B4;
+ REG_BG1HOFS = gBattle_BG1_X;
+ REG_BG1VOFS = gBattle_BG1_Y;
LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, s.unk8 * 16, 32);
addr3 = (u16 *)PLTT + s.unk8 * 16;
DmaCopy32(3, gPlttBufferUnfaded + 0x100 + a * 16, addr3, 32);
- if (NotInBattle() != 0)
+ if (IsContest() != 0)
r2 = 0;
else
r2 = GetBankIdentity(a);
sub_80E4EF8(0, 0, r2, s.unk8, (u32)s.unk0, (((s32)s.unk4 - VRAM) / 2048), REG_BG1CNT_BITFIELD.charBaseBlock);
- if (NotInBattle() != 0)
+ if (IsContest() != 0)
sub_8076380();
}
else
@@ -926,12 +733,12 @@ void sub_8076034(u8 a, u8 b)
REG_BG2CNT_BITFIELD.areaOverflowMode = 0;
spriteId = gObjectBankIDs[a];
- gUnknown_03004288 = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32;
- gUnknown_03004280 = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32;
+ gBattle_BG2_X = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32;
+ gBattle_BG2_Y = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32;
gSprites[gObjectBankIDs[a]].invisible = TRUE;
- REG_BG2HOFS = gUnknown_03004288;
- REG_BG2VOFS = gUnknown_03004280;
+ REG_BG2HOFS = gBattle_BG2_X;
+ REG_BG2VOFS = gBattle_BG2_Y;
LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, 0x90, 32);
addr3 = (void *)(PLTT + 0x120);
@@ -948,7 +755,7 @@ static void sub_8076380(void)
struct UnknownStruct2 s;
u16 *ptr;
- if (sub_80AEB1C(EWRAM_19348) != 0)
+ if (IsSpeciesNotUnown(EWRAM_19348))
{
sub_8078914(&s);
ptr = s.unk4;
@@ -996,7 +803,7 @@ void sub_8076464(u8 a)
struct UnknownStruct2 s;
sub_8078914(&s);
- if (a == 0 || NotInBattle() != 0)
+ if (a == 0 || IsContest() != 0)
{
u16 *addr2;
@@ -1017,8 +824,8 @@ void sub_8076464(u8 a)
pointlessZero = 0;
addr2 = s.unk4;
DmaFill32(3, 0, addr2, 0x800);
- gUnknown_030042C0 = 0;
- gUnknown_030041B4 = 0;
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
}
else
{
@@ -1041,32 +848,31 @@ void sub_8076464(u8 a)
pointlessZero = 0;
addr2 = (void *)(VRAM + 0xF000);
DmaFill32(3, 0, addr2, 0x800);
- gUnknown_03004288 = 0;
- gUnknown_03004280 = 0;
+ gBattle_BG2_X = 0;
+ gBattle_BG2_Y = 0;
}
}
static void task_pA_ma0A_obj_to_bg_pal(u8 taskId)
{
- u8 r4;
- u8 r6;
- s16 r3;
- s16 r2;
+ u8 spriteId, palIndex;
+ s16 x, y;
struct UnknownStruct2 s;
- r4 = gTasks[taskId].data[0];
- r6 = gTasks[taskId].data[6];
+ spriteId = gTasks[taskId].data[0];
+ palIndex = gTasks[taskId].data[6];
sub_8078914(&s);
- r3 = gTasks[taskId].data[1] - (gSprites[r4].pos1.x + gSprites[r4].pos2.x);
- r2 = gTasks[taskId].data[2] - (gSprites[r4].pos1.y + gSprites[r4].pos2.y);
+ x = gTasks[taskId].data[1] - (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x);
+ y = gTasks[taskId].data[2] - (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y);
+
if (gTasks[taskId].data[5] == 0)
{
u16 *src;
u16 *dst;
- gUnknown_030042C0 = r3 + gTasks[taskId].data[3];
- gUnknown_030041B4 = r2 + gTasks[taskId].data[4];
- src = gPlttBufferFaded + 0x100 + r6 * 16;
+ gBattle_BG1_X = x + gTasks[taskId].data[3];
+ gBattle_BG1_Y = y + gTasks[taskId].data[4];
+ src = gPlttBufferFaded + 0x100 + palIndex * 16;
dst = gPlttBufferFaded + 0x100 + s.unk8 * 16 - 256;
DmaCopy32(3, src, dst, 32);
}
@@ -1075,9 +881,9 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId)
u16 *src;
u16 *dst;
- gUnknown_03004288 = r3 + gTasks[taskId].data[3];
- gUnknown_03004280 = r2 + gTasks[taskId].data[4];
- src = gPlttBufferFaded + 0x100 + r6 * 16;
+ gBattle_BG2_X = x + gTasks[taskId].data[3];
+ gBattle_BG2_Y = y + gTasks[taskId].data[4];
+ src = gPlttBufferFaded + 0x100 + palIndex * 16;
dst = gPlttBufferFaded + 0x100 - 112;
DmaCopy32(3, src, dst, 32);
}
@@ -1085,55 +891,59 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId)
static void ScriptCmd_clearmonbg(void)
{
- u8 r4;
- u8 r5;
+ u8 animBankId;
+ u8 bank;
u8 taskId;
- gBattleAnimScriptPtr++;
- r4 = T1_READ_8(gBattleAnimScriptPtr);
- if (r4 == 0)
- r4 = 2;
- else if (r4 == 1)
- r4 = 3;
- if (r4 == 0 || r4 == 2)
- r5 = gBattleAnimBankAttacker;
+ sBattleAnimScriptPtr++;
+ animBankId = T1_READ_8(sBattleAnimScriptPtr);
+
+ if (animBankId == ANIM_BANK_ATTACKER)
+ animBankId = ANIM_BANK_ATK_PARTNER;
+ else if (animBankId == ANIM_BANK_TARGET)
+ animBankId = ANIM_BANK_DEF_PARTNER;
+
+ if (animBankId == ANIM_BANK_ATTACKER || animBankId == ANIM_BANK_ATK_PARTNER)
+ bank = gAnimBankAttacker;
else
- r5 = gBattleAnimBankTarget;
+ bank = gAnimBankTarget;
+
if (gMonAnimTaskIdArray[0] != 0xFF)
- gSprites[gObjectBankIDs[r5]].invisible = FALSE;
- if (r4 > 1 && gMonAnimTaskIdArray[1] != 0xFF)
- gSprites[gObjectBankIDs[r5 ^ 2]].invisible = FALSE;
+ gSprites[gObjectBankIDs[bank]].invisible = FALSE;
+ if (animBankId > 1 && gMonAnimTaskIdArray[1] != 0xFF)
+ gSprites[gObjectBankIDs[bank ^ 2]].invisible = FALSE;
else
- r4 = 0;
+ animBankId = 0;
+
taskId = CreateTask(sub_807672C, 5);
- gTasks[taskId].data[0] = r4;
- gTasks[taskId].data[2] = r5;
- gBattleAnimScriptPtr++;
+ gTasks[taskId].data[0] = animBankId;
+ gTasks[taskId].data[2] = bank;
+ sBattleAnimScriptPtr++;
}
static void sub_807672C(u8 taskId)
{
- u8 var;
- u8 r4;
+ u8 identity;
+ u8 to_BG2;
gTasks[taskId].data[1]++;
if (gTasks[taskId].data[1] != 1)
{
- var = GetBankIdentity(gTasks[taskId].data[2]);
- var += 0xFF;
- if (var <= 1 || NotInBattle() != 0)
- r4 = 0;
+ identity = GetBankIdentity(gTasks[taskId].data[2]);
+ identity += 0xFF;
+ if (identity <= 1 || IsContest() != 0)
+ to_BG2 = 0;
else
- r4 = 1;
+ to_BG2 = 1;
if (gMonAnimTaskIdArray[0] != 0xFF)
{
- sub_8076464(r4);
+ sub_8076464(to_BG2);
DestroyTask(gMonAnimTaskIdArray[0]);
gMonAnimTaskIdArray[0] = 0xFF;
}
if (gTasks[taskId].data[0] > 1)
{
- sub_8076464(r4 ^ 1);
+ sub_8076464(to_BG2 ^ 1);
DestroyTask(gMonAnimTaskIdArray[1]);
gMonAnimTaskIdArray[1] = 0xFF;
}
@@ -1143,187 +953,195 @@ static void sub_807672C(u8 taskId)
static void ScriptCmd_monbg_22(void)
{
- u8 r5;
- u8 r4;
- u8 r0;
+ u8 animBankId;
+ u8 bank;
+ u8 identity;
u8 r1;
- gBattleAnimScriptPtr++;
- r5 = T1_READ_8(gBattleAnimScriptPtr);
- if (r5 == 0)
- r5 = 2;
- else if (r5 == 1)
- r5 = 3;
- if (r5 == 0 || r5 == 2)
- r4 = gBattleAnimBankAttacker;
+ sBattleAnimScriptPtr++;
+ animBankId = T1_READ_8(sBattleAnimScriptPtr);
+
+ if (animBankId == ANIM_BANK_ATTACKER)
+ animBankId = ANIM_BANK_ATK_PARTNER;
+ else if (animBankId == ANIM_BANK_TARGET)
+ animBankId = ANIM_BANK_DEF_PARTNER;
+
+ if (animBankId == ANIM_BANK_ATTACKER || animBankId == ANIM_BANK_ATK_PARTNER)
+ bank = gAnimBankAttacker;
else
- r4 = gBattleAnimBankTarget;
- if (IsAnimBankSpriteVisible(r4))
+ bank = gAnimBankTarget;
+
+ if (IsAnimBankSpriteVisible(bank))
{
- r0 = GetBankIdentity(r4);
- r0 += 0xFF;
- if (r0 <= 1 || NotInBattle() != 0)
+ identity = GetBankIdentity(bank);
+ identity += 0xFF;
+ if (identity <= 1 || IsContest() != 0)
r1 = 0;
else
r1 = 1;
- sub_8076034(r4, r1);
- gSprites[gObjectBankIDs[r4]].invisible = FALSE;
+ sub_8076034(bank, r1);
+ gSprites[gObjectBankIDs[bank]].invisible = FALSE;
}
- r4 ^= 2;
- if (r5 > 1 && IsAnimBankSpriteVisible(r4))
+
+ bank ^= 2;
+ if (animBankId > ANIM_BANK_TARGET && IsAnimBankSpriteVisible(bank))
{
- r0 = GetBankIdentity(r4);
- r0 += 0xFF;
- if (r0 <= 1 || NotInBattle() != 0)
+ identity = GetBankIdentity(bank);
+ identity += 0xFF;
+ if (identity <= 1 || IsContest() != 0)
r1 = 0;
else
r1 = 1;
- sub_8076034(r4, r1);
- gSprites[gObjectBankIDs[r4]].invisible = FALSE;
+ sub_8076034(bank, r1);
+ gSprites[gObjectBankIDs[bank]].invisible = FALSE;
}
- gBattleAnimScriptPtr++;
+ sBattleAnimScriptPtr++;
}
static void ScriptCmd_clearmonbg_23(void)
{
- u8 r5;
- u8 r6;
+ u8 animBankId;
+ u8 bank;
u8 taskId;
- gBattleAnimScriptPtr++;
- r5 = T1_READ_8(gBattleAnimScriptPtr);
- if (r5 == 0)
- r5 = 2;
- else if (r5 == 1)
- r5 = 3;
- if (r5 == 0 || r5 == 2)
- r6 = gBattleAnimBankAttacker;
+ sBattleAnimScriptPtr++;
+ animBankId = T1_READ_8(sBattleAnimScriptPtr);
+
+ if (animBankId == ANIM_BANK_ATTACKER)
+ animBankId = ANIM_BANK_ATK_PARTNER;
+ else if (animBankId == ANIM_BANK_TARGET)
+ animBankId = ANIM_BANK_DEF_PARTNER;
+
+ if (animBankId == ANIM_BANK_ATTACKER || animBankId == ANIM_BANK_ATK_PARTNER)
+ bank = gAnimBankAttacker;
else
- r6 = gBattleAnimBankTarget;
- if (IsAnimBankSpriteVisible(r6))
- gSprites[gObjectBankIDs[r6]].invisible = FALSE;
- if (r5 > 1 && IsAnimBankSpriteVisible(r6 ^ 2))
- gSprites[gObjectBankIDs[r6 ^ 2]].invisible = FALSE;
+ bank = gAnimBankTarget;
+
+ if (IsAnimBankSpriteVisible(bank))
+ gSprites[gObjectBankIDs[bank]].invisible = FALSE;
+ if (animBankId > 1 && IsAnimBankSpriteVisible(bank ^ 2))
+ gSprites[gObjectBankIDs[bank ^ 2]].invisible = FALSE;
else
- r5 = 0;
+ animBankId = 0;
+
taskId = CreateTask(sub_80769A4, 5);
- gTasks[taskId].data[0] = r5;
- gTasks[taskId].data[2] = r6;
- gBattleAnimScriptPtr++;
+ gTasks[taskId].data[0] = animBankId;
+ gTasks[taskId].data[2] = bank;
+
+ sBattleAnimScriptPtr++;
}
static void sub_80769A4(u8 taskId)
{
- u8 r0;
- u8 r4;
- u8 r5;
+ u8 identity;
+ u8 bank;
+ u8 toBG_2;
gTasks[taskId].data[1]++;
if (gTasks[taskId].data[1] != 1)
{
- r4 = gTasks[taskId].data[2];
- r0 = GetBankIdentity(r4);
- r0 += 0xFF;
- if (r0 <= 1 || NotInBattle() != 0)
- r5 = 0;
+ bank = gTasks[taskId].data[2];
+ identity = GetBankIdentity(bank);
+ identity += 0xFF;
+ if (identity <= 1 || IsContest() != 0)
+ toBG_2 = 0;
else
- r5 = 1;
- if (IsAnimBankSpriteVisible(r4))
- sub_8076464(r5);
- if (gTasks[taskId].data[0] > 1 && IsAnimBankSpriteVisible(r4 ^ 2))
- sub_8076464(r5 ^ 1);
+ toBG_2 = 1;
+ if (IsAnimBankSpriteVisible(bank))
+ sub_8076464(toBG_2);
+ if (gTasks[taskId].data[0] > 1 && IsAnimBankSpriteVisible(bank ^ 2))
+ sub_8076464(toBG_2 ^ 1);
DestroyTask(taskId);
}
}
static void ScriptCmd_setalpha(void)
{
- u16 r3;
- u16 r1;
+ u16 half1, half2;
- gBattleAnimScriptPtr++;
- r3 = *(gBattleAnimScriptPtr++);
- r1 = *(gBattleAnimScriptPtr++) << 8;
+ sBattleAnimScriptPtr++;
+ half1 = *(sBattleAnimScriptPtr++);
+ half2 = *(sBattleAnimScriptPtr++) << 8;
REG_BLDCNT = 0x3F40;
- REG_BLDALPHA = r3 | r1;
+ REG_BLDALPHA = half1 | half2;
}
static void ScriptCmd_setbldcnt(void)
{
- u16 r3;
- u16 r1;
+ u16 half1, half2;
- gBattleAnimScriptPtr++;
- r3 = *(gBattleAnimScriptPtr++);
- r1 = *(gBattleAnimScriptPtr++) << 8;
- REG_BLDCNT = r3 | r1;
+ sBattleAnimScriptPtr++;
+ half1 = *(sBattleAnimScriptPtr++);
+ half2 = *(sBattleAnimScriptPtr++) << 8;
+ REG_BLDCNT = half1 | half2;
}
static void ScriptCmd_blendoff(void)
{
- gBattleAnimScriptPtr++;
+ sBattleAnimScriptPtr++;
REG_BLDCNT = 0;
REG_BLDALPHA = 0;
}
static void ScriptCmd_call(void)
{
- gBattleAnimScriptPtr++;
- gBattleAnimScriptRetAddr = gBattleAnimScriptPtr + 4;
- gBattleAnimScriptPtr = T2_READ_PTR(gBattleAnimScriptPtr);
+ sBattleAnimScriptPtr++;
+ gBattleAnimScriptRetAddr = sBattleAnimScriptPtr + 4;
+ sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr);
}
static void ScriptCmd_return(void)
{
- gBattleAnimScriptPtr = gBattleAnimScriptRetAddr;
+ sBattleAnimScriptPtr = gBattleAnimScriptRetAddr;
}
-static void ScriptCmd_setvar(void)
+static void ScriptCmd_setarg(void)
{
- const u8 *addr = gBattleAnimScriptPtr;
- u16 r4;
- u8 r2;
+ const u8 *addr = sBattleAnimScriptPtr;
+ u16 value;
+ u8 argId;
- gBattleAnimScriptPtr++;
- r2 = T1_READ_8(gBattleAnimScriptPtr);
- gBattleAnimScriptPtr++;
- r4 = T1_READ_16(gBattleAnimScriptPtr);
- gBattleAnimScriptPtr = addr + 4;
- gBattleAnimArgs[r2] = r4;
+ sBattleAnimScriptPtr++;
+ argId = T1_READ_8(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr++;
+ value = T1_READ_16(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr = addr + 4;
+ gBattleAnimArgs[argId] = value;
}
-static void ScriptCmd_ifelse(void)
+static void ScriptCmd_choosetwoturnanim(void)
{
- gBattleAnimScriptPtr++;
- if (gUnknown_0202F7C4 & 1)
- gBattleAnimScriptPtr += 4;
- gBattleAnimScriptPtr = T2_READ_PTR(gBattleAnimScriptPtr);
+ sBattleAnimScriptPtr++;
+ if (gAnimMoveTurn & 1)
+ sBattleAnimScriptPtr += 4;
+ sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr);
}
-static void ScriptCmd_jumpif(void)
+static void ScriptCmd_jumpifmoveturn(void)
{
- u8 r1;
+ u8 toCheck;
- gBattleAnimScriptPtr++;
- r1 = T1_READ_8(gBattleAnimScriptPtr);
- gBattleAnimScriptPtr++;
- if (r1 == gUnknown_0202F7C4)
+ sBattleAnimScriptPtr++;
+ toCheck = T1_READ_8(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr++;
+
+ if (toCheck == gAnimMoveTurn)
{
- gBattleAnimScriptPtr = T2_READ_PTR(gBattleAnimScriptPtr);
+ sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr);
}
else
{
- gBattleAnimScriptPtr += 4;
+ sBattleAnimScriptPtr += 4;
}
}
static void ScriptCmd_jump(void)
{
- gBattleAnimScriptPtr++;
- gBattleAnimScriptPtr = T2_READ_PTR(gBattleAnimScriptPtr);
+ sBattleAnimScriptPtr++;
+ sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr);
}
-bool8 NotInBattle(void)
+bool8 IsContest(void)
{
if (!gMain.inBattle)
return TRUE;
@@ -1331,124 +1149,131 @@ bool8 NotInBattle(void)
return FALSE;
}
+#define tBackgroundId data[0]
+#define tState data[10]
+
static void ScriptCmd_fadetobg(void)
{
- u8 r4;
+ u8 backgroundId;
u8 taskId;
- gBattleAnimScriptPtr++;
- r4 = T1_READ_8(gBattleAnimScriptPtr);
- gBattleAnimScriptPtr++;
- taskId = CreateTask(task_p5_load_battle_screen_elements, 5);
- gTasks[taskId].data[0] = r4;
- gUnknown_0202F7C5 = 1;
+ sBattleAnimScriptPtr++;
+ backgroundId = T1_READ_8(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr++;
+ taskId = CreateTask(Task_FadeToBg, 5);
+ gTasks[taskId].tBackgroundId = backgroundId;
+ sAnimBackgroundFadeState = 1;
}
-static void ScriptCmd_fadetobg_25(void)
+static void ScriptCmd_fadetobgfromset(void)
{
- u8 r8;
- u8 r7;
- u8 r6;
+ u8 bg1, bg2, bg3;
u8 taskId;
- gBattleAnimScriptPtr++;
- r8 = gBattleAnimScriptPtr[0];
- r7 = gBattleAnimScriptPtr[1];
- r6 = gBattleAnimScriptPtr[2];
- gBattleAnimScriptPtr += 3;
- taskId = CreateTask(task_p5_load_battle_screen_elements, 5);
- if (NotInBattle() != 0)
- gTasks[taskId].data[0] = r6;
- else if (GetBankSide(gBattleAnimBankTarget) == 0)
- gTasks[taskId].data[0] = r7;
+ sBattleAnimScriptPtr++;
+ bg1 = sBattleAnimScriptPtr[0];
+ bg2 = sBattleAnimScriptPtr[1];
+ bg3 = sBattleAnimScriptPtr[2];
+ sBattleAnimScriptPtr += 3;
+ taskId = CreateTask(Task_FadeToBg, 5);
+
+ if (IsContest())
+ gTasks[taskId].tBackgroundId = bg3;
+ else if (GetBankSide(gAnimBankTarget) == 0)
+ gTasks[taskId].tBackgroundId = bg2;
else
- gTasks[taskId].data[0] = r8;
- gUnknown_0202F7C5 = 1;
+ gTasks[taskId].tBackgroundId = bg1;
+
+ sAnimBackgroundFadeState = 1;
}
-static void task_p5_load_battle_screen_elements(u8 taskId)
+static void Task_FadeToBg(u8 taskId)
{
- if (gTasks[taskId].data[10] == 0)
+ if (gTasks[taskId].tState == 0)
{
BeginHardwarePaletteFade(0xE8, 0, 0, 16, 0);
- gTasks[taskId].data[10]++;
+ gTasks[taskId].tState++;
return;
}
if (gPaletteFade.active)
return;
- if (gTasks[taskId].data[10] == 1)
+ if (gTasks[taskId].tState == 1)
{
- gTasks[taskId].data[10]++;
- gUnknown_0202F7C5 = 2;
+ gTasks[taskId].tState++;
+ sAnimBackgroundFadeState = 2;
}
- else if (gTasks[taskId].data[10] == 2)
+ else if (gTasks[taskId].tState == 2)
{
- s16 data0 = (u16)gTasks[taskId].data[0];
+ s16 bgId = (u16)gTasks[taskId].tBackgroundId;
- if (data0 == -1)
- dp01t_11_3_message_for_player_only();
+ if (bgId == -1)
+ LoadDefaultBg();
else
- sub_8076DB8(data0);
+ LoadMoveBg(bgId);
+
BeginHardwarePaletteFade(0xE8, 0, 16, 0, 1);
- gTasks[taskId].data[10]++;
+ gTasks[taskId].tState++;
return;
}
if (gPaletteFade.active)
return;
- if (gTasks[taskId].data[10] == 3)
+ if (gTasks[taskId].tState == 3)
{
DestroyTask(taskId);
- gUnknown_0202F7C5 = 0;
+ sAnimBackgroundFadeState = 0;
}
}
-static void sub_8076DB8(u16 a)
+static void LoadMoveBg(u16 bgId)
{
- if (NotInBattle())
+ if (IsContest())
{
- void *tilemap = gBattleAnimBackgroundTable[a].tilemap;
+ void *tilemap = gBattleAnimBackgroundTable[bgId].tilemap;
void *dmaSrc;
void *dmaDest;
- LZDecompressWram(tilemap, NotInBattle() ? EWRAM_14800 : EWRAM_18000);
- sub_80763FC(sub_80789BC(), NotInBattle() ? EWRAM_14800 : EWRAM_18000, 0x100, 0);
- dmaSrc = NotInBattle() ? EWRAM_14800 : EWRAM_18000;
+ LZDecompressWram(tilemap, IsContest() ? EWRAM_14800 : EWRAM_18000);
+ sub_80763FC(sub_80789BC(), IsContest() ? EWRAM_14800 : EWRAM_18000, 0x100, 0);
+ dmaSrc = IsContest() ? EWRAM_14800 : EWRAM_18000;
dmaDest = (void *)(VRAM + 0xD000);
DmaCopy32(3, dmaSrc, dmaDest, 0x800);
- LZDecompressVram(gBattleAnimBackgroundTable[a].image, (void *)(VRAM + 0x2000));
- LoadCompressedPalette(gBattleAnimBackgroundTable[a].palette, sub_80789BC() * 16, 32);
+ LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x2000));
+ LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, sub_80789BC() * 16, 32);
}
else
{
- LZDecompressVram(gBattleAnimBackgroundTable[a].tilemap, (void *)(VRAM + 0xD000));
- LZDecompressVram(gBattleAnimBackgroundTable[a].image, (void *)(VRAM + 0x8000));
- LoadCompressedPalette(gBattleAnimBackgroundTable[a].palette, 32, 32);
+ LZDecompressVram(gBattleAnimBackgroundTable[bgId].tilemap, (void *)(VRAM + 0xD000));
+ LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x8000));
+ LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, 32, 32);
}
}
-static void dp01t_11_3_message_for_player_only(void)
+static void LoadDefaultBg(void)
{
- if (NotInBattle())
- sub_80AB2AC();
+ if (IsContest())
+ LoadContestBgAfterMoveAnim();
else
- sub_800D7B8();
+ DrawMainBattleBackground();
}
static void ScriptCmd_restorebg(void)
{
u8 taskId;
- gBattleAnimScriptPtr++;
- taskId = CreateTask(task_p5_load_battle_screen_elements, 5);
- gTasks[taskId].data[0] = 0xFFFF;
- gUnknown_0202F7C5 = 1;
+ sBattleAnimScriptPtr++;
+ taskId = CreateTask(Task_FadeToBg, 5);
+ gTasks[taskId].tBackgroundId = 0xFFFF;
+ sAnimBackgroundFadeState = 1;
}
+#undef tBackgroundId
+#undef tState
+
static void ScriptCmd_waitbgfadeout(void)
{
- if (gUnknown_0202F7C5 == 2)
+ if (sAnimBackgroundFadeState == 2)
{
- gBattleAnimScriptPtr++;
+ sBattleAnimScriptPtr++;
gAnimFramesToWait = 0;
}
else
@@ -1459,9 +1284,9 @@ static void ScriptCmd_waitbgfadeout(void)
static void ScriptCmd_waitbgfadein(void)
{
- if (gUnknown_0202F7C5 == 0)
+ if (sAnimBackgroundFadeState == 0)
{
- gBattleAnimScriptPtr++;
+ sBattleAnimScriptPtr++;
gAnimFramesToWait = 0;
}
else
@@ -1472,25 +1297,25 @@ static void ScriptCmd_waitbgfadein(void)
static void ScriptCmd_changebg(void)
{
- gBattleAnimScriptPtr++;
- sub_8076DB8(T1_READ_8(gBattleAnimScriptPtr));
- gBattleAnimScriptPtr++;
+ sBattleAnimScriptPtr++;
+ LoadMoveBg(T1_READ_8(sBattleAnimScriptPtr));
+ sBattleAnimScriptPtr++;
}
//Weird control flow
/*
-s8 sub_8076F98(s8 a)
+s8 BattleAnimAdjustPanning(s8 a)
{
- if (!NotInBattle() && (EWRAM_17810[gBattleAnimBankAttacker].unk0 & 0x10))
+ if (!IsContest() && (EWRAM_17810[gAnimBankAttacker].unk0 & 0x10))
{
- a = GetBankSide(gBattleAnimBankAttacker) ? 0xC0 : 0x3F;
+ a = GetBankSide(gAnimBankAttacker) ? 0xC0 : 0x3F;
}
//_08076FDC
else
{
- if (NotInBattle())
+ if (IsContest())
{
- if (gBattleAnimBankAttacker == gBattleAnimBankTarget && gBattleAnimBankAttacker == 2
+ if (gAnimBankAttacker == gAnimBankTarget && gAnimBankAttacker == 2
&& a == 0x3F)
{
//jump to _0807707A
@@ -1502,9 +1327,9 @@ s8 sub_8076F98(s8 a)
//_08077004
else
{
- if (GetBankSide(gBattleAnimBankAttacker) == 0)
+ if (GetBankSide(gAnimBankAttacker) == 0)
{
- if (GetBankSide(gBattleAnimBankTarget) == 0)
+ if (GetBankSide(gAnimBankTarget) == 0)
}
//_08077042
else
@@ -1518,17 +1343,17 @@ s8 sub_8076F98(s8 a)
}
*/
__attribute__((naked))
-s8 sub_8076F98(s8 a)
+s8 BattleAnimAdjustPanning(s8 a)
{
asm(".syntax unified\n\
push {r4,lr}\n\
lsls r0, 24\n\
lsrs r4, r0, 24\n\
- bl NotInBattle\n\
+ bl IsContest\n\
lsls r0, 24\n\
cmp r0, 0\n\
bne _08076FDC\n\
- ldr r0, _08076FD4 @ =gBattleAnimBankAttacker\n\
+ ldr r0, _08076FD4 @ =gAnimBankAttacker\n\
ldrb r2, [r0]\n\
lsls r0, r2, 1\n\
adds r0, r2\n\
@@ -1549,15 +1374,15 @@ s8 sub_8076F98(s8 a)
movs r4, 0x3F\n\
b _0807706E\n\
.align 2, 0\n\
-_08076FD4: .4byte gBattleAnimBankAttacker\n\
+_08076FD4: .4byte gAnimBankAttacker\n\
_08076FD8: .4byte gSharedMem + 0x17810\n\
_08076FDC:\n\
- bl NotInBattle\n\
+ bl IsContest\n\
lsls r0, 24\n\
cmp r0, 0\n\
beq _08077004\n\
- ldr r0, _08076FFC @ =gBattleAnimBankAttacker\n\
- ldr r1, _08077000 @ =gBattleAnimBankTarget\n\
+ ldr r0, _08076FFC @ =gAnimBankAttacker\n\
+ ldr r1, _08077000 @ =gAnimBankTarget\n\
ldrb r0, [r0]\n\
ldrb r1, [r1]\n\
cmp r0, r1\n\
@@ -1568,16 +1393,16 @@ _08076FDC:\n\
beq _0807707A\n\
b _08077068\n\
.align 2, 0\n\
-_08076FFC: .4byte gBattleAnimBankAttacker\n\
-_08077000: .4byte gBattleAnimBankTarget\n\
+_08076FFC: .4byte gAnimBankAttacker\n\
+_08077000: .4byte gAnimBankTarget\n\
_08077004:\n\
- ldr r0, _0807702C @ =gBattleAnimBankAttacker\n\
+ ldr r0, _0807702C @ =gAnimBankAttacker\n\
ldrb r0, [r0]\n\
bl GetBankSide\n\
lsls r0, 24\n\
cmp r0, 0\n\
bne _08077042\n\
- ldr r0, _08077030 @ =gBattleAnimBankTarget\n\
+ ldr r0, _08077030 @ =gAnimBankTarget\n\
ldrb r0, [r0]\n\
bl GetBankSide\n\
lsls r0, 24\n\
@@ -1590,8 +1415,8 @@ _08077004:\n\
movs r4, 0xC0\n\
b _0807706E\n\
.align 2, 0\n\
-_0807702C: .4byte gBattleAnimBankAttacker\n\
-_08077030: .4byte gBattleAnimBankTarget\n\
+_0807702C: .4byte gAnimBankAttacker\n\
+_08077030: .4byte gAnimBankTarget\n\
_08077034:\n\
movs r0, 0x40\n\
negs r0, r0\n\
@@ -1601,7 +1426,7 @@ _08077034:\n\
lsls r0, 24\n\
b _0807706C\n\
_08077042:\n\
- ldr r0, _08077064 @ =gBattleAnimBankTarget\n\
+ ldr r0, _08077064 @ =gAnimBankTarget\n\
ldrb r0, [r0]\n\
bl GetBankSide\n\
lsls r0, 24\n\
@@ -1617,7 +1442,7 @@ _08077042:\n\
movs r4, 0x3F\n\
b _0807706E\n\
.align 2, 0\n\
-_08077064: .4byte gBattleAnimBankTarget\n\
+_08077064: .4byte gAnimBankTarget\n\
_08077068:\n\
lsls r0, r4, 24\n\
negs r0, r0\n\
@@ -1647,21 +1472,21 @@ _08077088:\n\
.syntax divided\n");
}
-s8 sub_8077094(s8 a)
+s8 BattleAnimAdjustPanning2(s8 pan)
{
- if (!NotInBattle() && (EWRAM_17810[gBattleAnimBankAttacker].unk0 & 0x10))
+ if (!IsContest() && (EWRAM_17810[gAnimBankAttacker].unk0 & 0x10))
{
- if (GetBankSide(gBattleAnimBankAttacker) != 0)
- a = 0x3F;
+ if (GetBankSide(gAnimBankAttacker) != 0)
+ pan = 0x3F;
else
- a = 0xC0;
+ pan = 0xC0;
}
else
{
- if (GetBankSide(gBattleAnimBankAttacker) != 0 || NotInBattle() != 0)
- a = -a;
+ if (GetBankSide(gAnimBankAttacker) != 0 || IsContest() != 0)
+ pan = -pan;
}
- return a;
+ return pan;
}
s16 sub_8077104(s16 a)
@@ -1675,310 +1500,232 @@ s16 sub_8077104(s16 a)
return var;
}
-s16 sub_807712C(s16 a, s16 b, s16 c)
+s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan)
{
- u16 var;
+ u16 ret;
- if (a < b)
- var = ((c < 0) ? -c : c);
- else if (a > b)
- var = -((c < 0) ? -c : c);
+ if (sourcePan < targetPan)
+ ret = ((incrementPan < 0) ? -incrementPan : incrementPan);
+ else if (sourcePan > targetPan)
+ ret = -((incrementPan < 0) ? -incrementPan : incrementPan);
else
- var = 0;
- return var;
+ ret = 0;
+
+ return ret;
}
-static void ScriptCmd_panse_19(void)
+static void ScriptCmd_playsewithpan(void)
{
- u16 r4;
- s8 r0;
+ u16 songId;
+ s8 pan;
- gBattleAnimScriptPtr++;
- r4 = T1_READ_16(gBattleAnimScriptPtr);
- r0 = T1_READ_8(gBattleAnimScriptPtr + 2);
- PlaySE12WithPanning(r4, sub_8076F98(r0));
- gBattleAnimScriptPtr += 3;
+ sBattleAnimScriptPtr++;
+ songId = T1_READ_16(sBattleAnimScriptPtr);
+ pan = T1_READ_8(sBattleAnimScriptPtr + 2);
+ PlaySE12WithPanning(songId, BattleAnimAdjustPanning(pan));
+ sBattleAnimScriptPtr += 3;
}
static void ScriptCmd_setpan(void)
{
- s8 r0;
+ s8 pan;
- gBattleAnimScriptPtr++;
- r0 = T1_READ_8(gBattleAnimScriptPtr);
- SE12PanpotControl(sub_8076F98(r0));
- gBattleAnimScriptPtr++;
+ sBattleAnimScriptPtr++;
+ pan = T1_READ_8(sBattleAnimScriptPtr);
+ SE12PanpotControl(BattleAnimAdjustPanning(pan));
+ sBattleAnimScriptPtr++;
}
+#define tInitialPan data[0]
+#define tTargetPan data[1]
+#define tIncrementPan data[2]
+#define tFramesToWait data[3]
+#define tCurrentPan data[4]
+#define tFrameCounter data[8]
+
static void ScriptCmd_panse_1B(void)
{
u16 songNum;
- s8 r0;
- s8 r4;
- s8 r6;
- u8 r7;
- s8 panning;
- s8 r8;
+ s8 currentPanArg, incrementPan, incrementPanArg, currentPan, targetPan;
+ u8 framesToWait;
u8 taskId;
- gBattleAnimScriptPtr++;
- songNum = T1_READ_16(gBattleAnimScriptPtr);
- r0 = T1_READ_8(gBattleAnimScriptPtr + 2);
- r4 = T1_READ_8(gBattleAnimScriptPtr + 3);
- r6 = T1_READ_8(gBattleAnimScriptPtr + 4);
- r7 = T1_READ_8(gBattleAnimScriptPtr + 5);
- panning = sub_8076F98(r0);
- r8 = sub_8076F98(r4);
- r4 = sub_807712C(panning, r8, r6);
- taskId = CreateTask(c3_08073CEC, 1);
- gTasks[taskId].data[0] = panning;
- gTasks[taskId].data[1] = r8;
- gTasks[taskId].data[2] = r4;
- gTasks[taskId].data[3] = r7;
- gTasks[taskId].data[4] = panning;
- PlaySE12WithPanning(songNum, panning);
+ sBattleAnimScriptPtr++;
+ songNum = T1_READ_16(sBattleAnimScriptPtr);
+ currentPanArg = T1_READ_8(sBattleAnimScriptPtr + 2);
+ incrementPan = T1_READ_8(sBattleAnimScriptPtr + 3);
+ incrementPanArg = T1_READ_8(sBattleAnimScriptPtr + 4);
+ framesToWait = T1_READ_8(sBattleAnimScriptPtr + 5);
+
+ currentPan = BattleAnimAdjustPanning(currentPanArg);
+ targetPan = BattleAnimAdjustPanning(incrementPan);
+ incrementPan = CalculatePanIncrement(currentPan, targetPan, incrementPanArg);
+ taskId = CreateTask(Task_PanFromInitialToTarget, 1);
+ gTasks[taskId].tInitialPan = currentPan;
+ gTasks[taskId].tTargetPan = targetPan;
+ gTasks[taskId].tIncrementPan = incrementPan;
+ gTasks[taskId].tFramesToWait = framesToWait;
+ gTasks[taskId].tCurrentPan = currentPan;
+
+ PlaySE12WithPanning(songNum, currentPan);
+
gAnimSoundTaskCount++;
- gBattleAnimScriptPtr += 6;
+ sBattleAnimScriptPtr += 6;
}
-#ifdef NONMATCHING
-static void c3_08073CEC(u8 taskId)
+void Task_PanFromInitialToTarget(u8 taskId)
{
- u16 r7 = 0;
- s16 r0;
- s16 r6;
- s16 r3;
- s16 r4;
- int foo;
-
- r0 = gTasks[taskId].data[8];
- gTasks[taskId].data[8]++;
- if (r0 >= gTasks[taskId].data[3])
+ bool32 destroyTask = FALSE;
+ if (gTasks[taskId].tFrameCounter++ >= gTasks[taskId].tFramesToWait)
{
- gTasks[taskId].data[8] = r7;
- r6 = gTasks[taskId].data[0];
- r3 = gTasks[taskId].data[1];
- foo = gTasks[taskId].data[4] + gTasks[taskId].data[2];
- r4 = foo;
- gTasks[taskId].data[4] = r4;
- if (gTasks[taskId].data[2] == 0)
+ s16 pan;
+ s16 initialPanning, targetPanning, currentPan, incrementPan;
+
+ gTasks[taskId].tFrameCounter = 0;
+ initialPanning = gTasks[taskId].tInitialPan;
+ targetPanning = gTasks[taskId].tTargetPan;
+ currentPan = gTasks[taskId].tCurrentPan;
+ incrementPan = gTasks[taskId].tIncrementPan;
+ pan = currentPan + incrementPan;
+ gTasks[taskId].tCurrentPan = pan;
+
+ if (incrementPan == 0) // If we're not incrementing, just cancel the task immediately
{
- r4 = r3;
- DestroyTask(taskId);
- gAnimSoundTaskCount--;
+ destroyTask = TRUE;
}
- //_080772D8
- else
+ else if (initialPanning < targetPanning) // Panning increasing
{
- if (r6 < r3)
- {
- if (r4 < r3)
- goto check;
- DestroyTask(taskId);
- gAnimSoundTaskCount--;
- }
- else
- {
- if (r4 <= r3)
- r7 = 1;
- check:
- if (r7 != 0)
- {
- DestroyTask(taskId);
- gAnimSoundTaskCount--;
- }
- }
+ if (pan >= targetPanning) // Target reached
+ destroyTask = TRUE;
}
- //_080772F8
- SE12PanpotControl(r4);
+ else // Panning decreasing
+ {
+ if (pan <= targetPanning) // Target reached
+ destroyTask = TRUE;
+ }
+
+ if (destroyTask)
+ {
+ pan = targetPanning;
+ DestroyTask(taskId);
+ gAnimSoundTaskCount--;
+ }
+
+ SE12PanpotControl(pan);
}
- //_08077314
-}
-#else
-__attribute__((naked))
-static void c3_08073CEC(u8 taskId)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- movs r7, 0\n\
- ldr r1, _080772D4 @ =gTasks\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r2, r0, r1\n\
- ldrh r0, [r2, 0x18]\n\
- adds r1, r0, 0x1\n\
- strh r1, [r2, 0x18]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- movs r3, 0xE\n\
- ldrsh r1, [r2, r3]\n\
- cmp r0, r1\n\
- blt _08077314\n\
- strh r7, [r2, 0x18]\n\
- ldrh r6, [r2, 0x8]\n\
- ldrh r3, [r2, 0xA]\n\
- movs r4, 0x10\n\
- ldrsh r0, [r2, r4]\n\
- movs r4, 0xC\n\
- ldrsh r1, [r2, r4]\n\
- adds r0, r1\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- strh r4, [r2, 0x10]\n\
- cmp r1, 0\n\
- bne _080772D8\n\
- lsls r2, r3, 16\n\
- b _080772FC\n\
- .align 2, 0\n\
-_080772D4: .4byte gTasks\n\
-_080772D8:\n\
- lsls r1, r6, 16\n\
- lsls r0, r3, 16\n\
- asrs r3, r0, 16\n\
- adds r2, r0, 0\n\
- cmp r1, r2\n\
- bge _080772EE\n\
- lsls r0, r4, 16\n\
- asrs r0, 16\n\
- cmp r0, r3\n\
- blt _080772F8\n\
- b _080772FC\n\
-_080772EE:\n\
- lsls r0, r4, 16\n\
- asrs r0, 16\n\
- cmp r0, r3\n\
- bgt _080772F8\n\
- movs r7, 0x1\n\
-_080772F8:\n\
- cmp r7, 0\n\
- beq _0807730C\n\
-_080772FC:\n\
- lsrs r4, r2, 16\n\
- adds r0, r5, 0\n\
- bl DestroyTask\n\
- ldr r1, _0807731C @ =gAnimSoundTaskCount\n\
- ldrb r0, [r1]\n\
- subs r0, 0x1\n\
- strb r0, [r1]\n\
-_0807730C:\n\
- lsls r0, r4, 24\n\
- asrs r0, 24\n\
- bl SE12PanpotControl\n\
-_08077314:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0807731C: .4byte gAnimSoundTaskCount\n\
- .syntax divided\n");
}
-#endif
static void ScriptCmd_panse_26(void)
{
- u16 r8;
- s8 r4;
- s8 r5;
- s8 r6;
- u8 r10;
+ u16 songId;
+ s8 currentPan, targetPan, incrementPan;
+ u8 framesToWait;
u8 taskId;
- gBattleAnimScriptPtr++;
- r8 = T1_READ_16(gBattleAnimScriptPtr);
- r4 = T1_READ_8(gBattleAnimScriptPtr + 2);
- r5 = T1_READ_8(gBattleAnimScriptPtr + 3);
- r6 = T1_READ_8(gBattleAnimScriptPtr + 4);
- r10 = T1_READ_8(gBattleAnimScriptPtr + 5);
- taskId = CreateTask(c3_08073CEC, 1);
- gTasks[taskId].data[0] = r4;
- gTasks[taskId].data[1] = r5;
- gTasks[taskId].data[2] = r6;
- gTasks[taskId].data[3] = r10;
- gTasks[taskId].data[4] = r4;
- PlaySE12WithPanning(r8, r4);
+ sBattleAnimScriptPtr++;
+ songId = T1_READ_16(sBattleAnimScriptPtr);
+ currentPan = T1_READ_8(sBattleAnimScriptPtr + 2);
+ targetPan = T1_READ_8(sBattleAnimScriptPtr + 3);
+ incrementPan = T1_READ_8(sBattleAnimScriptPtr + 4);
+ framesToWait = T1_READ_8(sBattleAnimScriptPtr + 5);
+
+ taskId = CreateTask(Task_PanFromInitialToTarget, 1);
+ gTasks[taskId].tInitialPan = currentPan;
+ gTasks[taskId].tTargetPan = targetPan;
+ gTasks[taskId].tIncrementPan = incrementPan;
+ gTasks[taskId].tFramesToWait = framesToWait;
+ gTasks[taskId].tCurrentPan = currentPan;
+
+ PlaySE12WithPanning(songId, currentPan);
+
gAnimSoundTaskCount++;
- gBattleAnimScriptPtr += 6;
+ sBattleAnimScriptPtr += 6;
}
static void ScriptCmd_panse_27(void)
{
- u16 r9;
- u8 r4;
- u8 r8;
- u8 r7;
- u8 r0;
- s8 r6;
- s8 r5;
- s8 r4_2;
+ u16 songId;
+ u8 targetPanArg, incrementPanArg, currentPan, currentPanArg;
+ s8 targetPan, incrementPan, framesToWait;
u8 taskId;
- gBattleAnimScriptPtr++;
- r9 = T1_READ_16(gBattleAnimScriptPtr);
- r0 = T1_READ_8(gBattleAnimScriptPtr + 2);
- r4 = T1_READ_8(gBattleAnimScriptPtr + 3);
- r8 = T1_READ_8(gBattleAnimScriptPtr + 4);
- r7 = T1_READ_8(gBattleAnimScriptPtr + 5);
- r6 = sub_8077094(r0);
- r5 = sub_8077094(r4);
- r4_2 = sub_8077094(r8);
- taskId = CreateTask(c3_08073CEC, 1);
- gTasks[taskId].data[0] = r6;
- gTasks[taskId].data[1] = r5;
- gTasks[taskId].data[2] = r4_2;
- gTasks[taskId].data[3] = r7;
- gTasks[taskId].data[4] = r6;
- PlaySE12WithPanning(r9, r6);
+ sBattleAnimScriptPtr++;
+ songId = T1_READ_16(sBattleAnimScriptPtr);
+ currentPanArg = T1_READ_8(sBattleAnimScriptPtr + 2);
+ targetPanArg = T1_READ_8(sBattleAnimScriptPtr + 3);
+ incrementPanArg = T1_READ_8(sBattleAnimScriptPtr + 4);
+ currentPan = T1_READ_8(sBattleAnimScriptPtr + 5);
+
+ targetPan = BattleAnimAdjustPanning2(currentPanArg);
+ incrementPan = BattleAnimAdjustPanning2(targetPanArg);
+ framesToWait = BattleAnimAdjustPanning2(incrementPanArg);
+
+ taskId = CreateTask(Task_PanFromInitialToTarget, 1);
+ gTasks[taskId].data[0] = targetPan;
+ gTasks[taskId].data[1] = incrementPan;
+ gTasks[taskId].data[2] = framesToWait;
+ gTasks[taskId].data[3] = currentPan;
+ gTasks[taskId].data[4] = targetPan;
+
+ PlaySE12WithPanning(songId, targetPan);
+
gAnimSoundTaskCount++;
- gBattleAnimScriptPtr += 6;
+ sBattleAnimScriptPtr += 6;
}
-static void ScriptCmd_panse_1C(void)
+#undef tInitialPan
+#undef tTargetPan
+#undef tIncrementPan
+#undef tFramesToWait
+#undef tCurrentPan
+#undef tFrameCounter
+
+#define tSongId data[0]
+#define tPanning data[1]
+#define tFramesToWait data[2]
+#define tNumberOfPlays data[3]
+#define tFrameCounter data[8]
+
+static void ScriptCmd_loopsewithpan(void)
{
- u16 r5;
- u8 r0;
- u8 r8;
- u8 r9;
- s8 r4;
+ u16 songId;
+ s8 panningArg, panning;
+ u8 framesToWait, numberOfPlays;
u8 taskId;
- gBattleAnimScriptPtr++;
- r5 = T1_READ_16(gBattleAnimScriptPtr);
- r0 = T1_READ_8(gBattleAnimScriptPtr + 2);
- r8 = T1_READ_8(gBattleAnimScriptPtr + 3);
- r9 = T1_READ_8(gBattleAnimScriptPtr + 4);
- r4 = sub_8076F98(r0);
- taskId = CreateTask(sub_80774FC, 1);
- gTasks[taskId].data[0] = r5;
- gTasks[taskId].data[1] = r4;
- gTasks[taskId].data[2] = r8;
- gTasks[taskId].data[3] = r9;
- gTasks[taskId].data[8] = r8;
+ sBattleAnimScriptPtr++;
+ songId = T1_READ_16(sBattleAnimScriptPtr);
+ panningArg = T1_READ_8(sBattleAnimScriptPtr + 2);
+ framesToWait = T1_READ_8(sBattleAnimScriptPtr + 3);
+ numberOfPlays = T1_READ_8(sBattleAnimScriptPtr + 4);
+ panning = BattleAnimAdjustPanning(panningArg);
+
+ taskId = CreateTask(Task_LoopAndPlaySE, 1);
+ gTasks[taskId].tSongId = songId;
+ gTasks[taskId].tPanning = panning;
+ gTasks[taskId].tFramesToWait = framesToWait;
+ gTasks[taskId].tNumberOfPlays = numberOfPlays;
+ gTasks[taskId].tFrameCounter = framesToWait;
gTasks[taskId].func(taskId);
+
gAnimSoundTaskCount++;
- gBattleAnimScriptPtr += 5;
+ sBattleAnimScriptPtr += 5;
}
-static void sub_80774FC(u8 taskId)
+static void Task_LoopAndPlaySE(u8 taskId)
{
- s16 data8;
- u16 r0;
- s8 r1;
- u8 r4;
-
- data8 = gTasks[taskId].data[8];
- gTasks[taskId].data[8]++;
- if (data8 >= gTasks[taskId].data[2])
+ if (gTasks[taskId].tFrameCounter++ >= gTasks[taskId].tFramesToWait)
{
- gTasks[taskId].data[8] = 0;
- r0 = gTasks[taskId].data[0];
- r1 = gTasks[taskId].data[1];
- gTasks[taskId].data[3]--;
- r4 = gTasks[taskId].data[3];
- PlaySE12WithPanning(r0, r1);
- if (r4 == 0)
+ u16 songId;
+ s8 panning;
+ u8 numberOfPlays;
+
+ gTasks[taskId].tFrameCounter = 0;
+ songId = gTasks[taskId].tSongId;
+ panning = gTasks[taskId].tPanning;
+ numberOfPlays = --gTasks[taskId].tNumberOfPlays;
+ PlaySE12WithPanning(songId, panning);
+ if (numberOfPlays == 0)
{
DestroyTask(taskId);
gAnimSoundTaskCount--;
@@ -1986,57 +1733,67 @@ static void sub_80774FC(u8 taskId)
}
}
-static void ScriptCmd_panse_1D(void)
+#undef tSongId
+#undef tPanning
+#undef tFramesToWait
+#undef tNumberOfPlays
+#undef tFrameCounter
+
+#define tSongId data[0]
+#define tPanning data[1]
+#define tFramesToWait data[2]
+
+static void ScriptCmd_waitplaysewithpan(void)
{
- u16 r5;
- u8 r0;
- u8 r8;
- s8 r4;
+ u16 songId;
+ s8 panningArg, panning;
+ u8 framesToWait;
u8 taskId;
- gBattleAnimScriptPtr++;
- r5 = T1_READ_16(gBattleAnimScriptPtr);
- r0 = T1_READ_8(gBattleAnimScriptPtr + 2);
- r8 = T1_READ_8(gBattleAnimScriptPtr + 3);
- r4 = sub_8076F98(r0);
- taskId = CreateTask(sub_80775CC, 1);
- gTasks[taskId].data[0] = r5;
- gTasks[taskId].data[1] = r4;
- gTasks[taskId].data[2] = r8;
+ sBattleAnimScriptPtr++;
+ songId = T1_READ_16(sBattleAnimScriptPtr);
+ panningArg = T1_READ_8(sBattleAnimScriptPtr + 2);
+ framesToWait = T1_READ_8(sBattleAnimScriptPtr + 3);
+ panning = BattleAnimAdjustPanning(panningArg);
+
+ taskId = CreateTask(Task_WaitAndPlaySE, 1);
+ gTasks[taskId].tSongId = songId;
+ gTasks[taskId].tPanning = panning;
+ gTasks[taskId].tFramesToWait = framesToWait;
+
gAnimSoundTaskCount++;
- gBattleAnimScriptPtr += 4;
+ sBattleAnimScriptPtr += 4;
}
-static void sub_80775CC(u8 taskId)
+static void Task_WaitAndPlaySE(u8 taskId)
{
- s16 r0;
-
- r0 = gTasks[taskId].data[2];
- gTasks[taskId].data[2]--;
- if (r0 <= 0)
+ if (gTasks[taskId].tFramesToWait-- <= 0)
{
- PlaySE12WithPanning(gTasks[taskId].data[0], gTasks[taskId].data[1]);
+ PlaySE12WithPanning(gTasks[taskId].tSongId, gTasks[taskId].tPanning);
DestroyTask(taskId);
gAnimSoundTaskCount--;
}
}
-static void ScriptCmd_createtask_1F(void)
+#undef tSongId
+#undef tPanning
+#undef tFramesToWait
+
+static void ScriptCmd_createsoundtask(void)
{
TaskFunc func;
- u8 numArgs;
- int i;
- u8 taskId;
+ u8 numArgs, taskId;
+ s32 i;
- gBattleAnimScriptPtr++;
- func = (TaskFunc)T2_READ_32(gBattleAnimScriptPtr);
- gBattleAnimScriptPtr += 4;
- numArgs = T1_READ_8(gBattleAnimScriptPtr);
- gBattleAnimScriptPtr++;
+ sBattleAnimScriptPtr++;
+ func = (TaskFunc)T2_READ_32(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr += 4;
+ numArgs = T1_READ_8(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr++;
for (i = 0; i < numArgs; i++)
{
- gBattleAnimArgs[i] = T1_READ_16(gBattleAnimScriptPtr);
- gBattleAnimScriptPtr += 2;
+ gBattleAnimArgs[i] = T1_READ_16(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr += 2;
}
taskId = CreateTask(func, 1);
func(taskId);
@@ -2066,61 +1823,51 @@ static void ScriptCmd_waitsound(void)
else
{
gSoundAnimFramesToWait = 0;
- gBattleAnimScriptPtr++;
+ sBattleAnimScriptPtr++;
gAnimFramesToWait = 0;
}
}
-static void ScriptCmd_jumpvareq(void)
+static void ScriptCmd_jumpargeq(void)
{
- u8 r2;
- s16 r1;
- u8 *addr;
+ u8 argId;
+ s16 valueToCheck;
- gBattleAnimScriptPtr++;
- r2 = T1_READ_8(gBattleAnimScriptPtr);
- r1 = T1_READ_16(gBattleAnimScriptPtr + 1);
- if (r1 == gBattleAnimArgs[r2])
- {
- addr = T2_READ_PTR(gBattleAnimScriptPtr + 3);
- gBattleAnimScriptPtr = addr;
- }
+ sBattleAnimScriptPtr++;
+ argId = T1_READ_8(sBattleAnimScriptPtr);
+ valueToCheck = T1_READ_16(sBattleAnimScriptPtr + 1);
+
+ if (valueToCheck == gBattleAnimArgs[argId])
+ sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr + 3);
else
- {
- gBattleAnimScriptPtr += 7;
- }
+ sBattleAnimScriptPtr += 7;
}
-static void ScriptCmd_jumpunkcond(void)
+static void ScriptCmd_jumpifcontest(void)
{
- u8 *addr;
-
- gBattleAnimScriptPtr++;
- if (NotInBattle())
- {
- addr = T2_READ_PTR(gBattleAnimScriptPtr);
- gBattleAnimScriptPtr = addr;
- }
+ sBattleAnimScriptPtr++;
+ if (IsContest())
+ sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr);
else
- {
- gBattleAnimScriptPtr += 4;
- }
+ sBattleAnimScriptPtr += 4;
}
static void ScriptCmd_monbgprio_28(void)
{
- u8 r2;
- u8 r0;
- u8 r4;
+ u8 wantedBank;
+ u8 bank;
+ u8 bankIdentity;
+
+ wantedBank = T1_READ_8(sBattleAnimScriptPtr + 1);
+ sBattleAnimScriptPtr += 2;
- r2 = T1_READ_8(gBattleAnimScriptPtr + 1);
- gBattleAnimScriptPtr += 2;
- if (r2 != 0)
- r0 = gBattleAnimBankTarget;
+ if (wantedBank != 0)
+ bank = gAnimBankTarget;
else
- r0 = gBattleAnimBankAttacker;
- r4 = GetBankIdentity(r0);
- if (!NotInBattle() && (r4 == 0 || r4 == 3))
+ bank = gAnimBankAttacker;
+
+ bankIdentity = GetBankIdentity(bank);
+ if (!IsContest() && (bankIdentity == 0 || bankIdentity == 3))
{
REG_BG1CNT_BITFIELD.priority = 1;
REG_BG2CNT_BITFIELD.priority = 2;
@@ -2129,8 +1876,8 @@ static void ScriptCmd_monbgprio_28(void)
static void ScriptCmd_monbgprio_29(void)
{
- gBattleAnimScriptPtr++;
- if (!NotInBattle())
+ sBattleAnimScriptPtr++;
+ if (!IsContest())
{
REG_BG1CNT_BITFIELD.priority = 1;
REG_BG2CNT_BITFIELD.priority = 2;
@@ -2139,20 +1886,20 @@ static void ScriptCmd_monbgprio_29(void)
static void ScriptCmd_monbgprio_2A(void)
{
- u8 r6;
- u8 r4;
- u8 r0;
+ u8 wantedBank;
+ u8 bankIdentity;
+ u8 bank;
- r6 = T1_READ_8(gBattleAnimScriptPtr + 1);
- gBattleAnimScriptPtr += 2;
- if (GetBankSide(gBattleAnimBankAttacker) != GetBankSide(gBattleAnimBankTarget))
+ wantedBank = T1_READ_8(sBattleAnimScriptPtr + 1);
+ sBattleAnimScriptPtr += 2;
+ if (GetBankSide(gAnimBankAttacker) != GetBankSide(gAnimBankTarget))
{
- if (r6 != 0)
- r0 = gBattleAnimBankTarget;
+ if (wantedBank != 0)
+ bank = gAnimBankTarget;
else
- r0 = gBattleAnimBankAttacker;
- r4 = GetBankIdentity(r0);
- if (!NotInBattle() && (r4 == 0 || r4 == 3))
+ bank = gAnimBankAttacker;
+ bankIdentity = GetBankIdentity(bank);
+ if (!IsContest() && (bankIdentity == 0 || bankIdentity == 3))
{
REG_BG1CNT_BITFIELD.priority = 1;
REG_BG2CNT_BITFIELD.priority = 2;
@@ -2162,51 +1909,45 @@ static void ScriptCmd_monbgprio_2A(void)
static void ScriptCmd_invisible(void)
{
- u8 r0;
u8 spriteId;
- r0 = T1_READ_8(gBattleAnimScriptPtr + 1);
- spriteId = GetAnimBankSpriteId(r0);
+ spriteId = GetAnimBankSpriteId(T1_READ_8(sBattleAnimScriptPtr + 1));
if (spriteId != 0xFF)
- {
gSprites[spriteId].invisible = TRUE;
- }
- gBattleAnimScriptPtr += 2;
+
+ sBattleAnimScriptPtr += 2;
}
static void ScriptCmd_visible(void)
{
- u8 r0;
u8 spriteId;
- r0 = T1_READ_8(gBattleAnimScriptPtr + 1);
- spriteId = GetAnimBankSpriteId(r0);
+ spriteId = GetAnimBankSpriteId(T1_READ_8(sBattleAnimScriptPtr + 1));
if (spriteId != 0xFF)
- {
gSprites[spriteId].invisible = FALSE;
- }
- gBattleAnimScriptPtr += 2;
+
+ sBattleAnimScriptPtr += 2;
}
static void ScriptCmd_doublebattle_2D(void)
{
- u8 r7;
+ u8 wantedBank;
u8 r4;
u8 spriteId;
- r7 = T1_READ_8(gBattleAnimScriptPtr + 1);
- gBattleAnimScriptPtr += 2;
- if (!NotInBattle() && IsDoubleBattle()
- && GetBankSide(gBattleAnimBankAttacker) == GetBankSide(gBattleAnimBankTarget))
+ wantedBank = T1_READ_8(sBattleAnimScriptPtr + 1);
+ sBattleAnimScriptPtr += 2;
+ if (!IsContest() && IsDoubleBattle()
+ && GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget))
{
- if (r7 == 0)
+ if (wantedBank == 0)
{
- r4 = GetBankIdentity_permutated(gBattleAnimBankAttacker);
+ r4 = GetBankIdentity_permutated(gAnimBankAttacker);
spriteId = GetAnimBankSpriteId(0);
}
else
{
- r4 = GetBankIdentity_permutated(gBattleAnimBankTarget);
+ r4 = GetBankIdentity_permutated(gAnimBankTarget);
spriteId = GetAnimBankSpriteId(1);
}
if (spriteId != 0xFF)
@@ -2224,23 +1965,23 @@ static void ScriptCmd_doublebattle_2D(void)
static void ScriptCmd_doublebattle_2E(void)
{
- u8 r7;
+ u8 wantedBank;
u8 r4;
u8 spriteId;
- r7 = T1_READ_8(gBattleAnimScriptPtr + 1);
- gBattleAnimScriptPtr += 2;
- if (!NotInBattle() && IsDoubleBattle()
- && GetBankSide(gBattleAnimBankAttacker) == GetBankSide(gBattleAnimBankTarget))
+ wantedBank = T1_READ_8(sBattleAnimScriptPtr + 1);
+ sBattleAnimScriptPtr += 2;
+ if (!IsContest() && IsDoubleBattle()
+ && GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget))
{
- if (r7 == 0)
+ if (wantedBank == 0)
{
- r4 = GetBankIdentity_permutated(gBattleAnimBankAttacker);
+ r4 = GetBankIdentity_permutated(gAnimBankAttacker);
spriteId = GetAnimBankSpriteId(0);
}
else
{
- r4 = GetBankIdentity_permutated(gBattleAnimBankTarget);
+ r4 = GetBankIdentity_permutated(gAnimBankTarget);
spriteId = GetAnimBankSpriteId(1);
}
if (spriteId != 0xFF && r4 == 2)
@@ -2254,5 +1995,5 @@ static void ScriptCmd_stopsound(void)
{
m4aMPlayStop(&gMPlay_SE1);
m4aMPlayStop(&gMPlay_SE2);
- gBattleAnimScriptPtr++;
+ sBattleAnimScriptPtr++;
}