almost all matching
This commit is contained in:
+6
-6
@@ -520,12 +520,12 @@ enum
|
|||||||
|
|
||||||
struct BattleSpriteInfo
|
struct BattleSpriteInfo
|
||||||
{
|
{
|
||||||
u16 invisible : 1; // 0x1
|
/*0x0*/ u16 invisible : 1; // 0x1
|
||||||
u16 lowHpSong : 1; // 0x2
|
u16 lowHpSong : 1; // 0x2
|
||||||
u16 behindSubstitute : 1; // 0x4
|
u16 behindSubstitute : 1; // 0x4
|
||||||
u16 flag_x8 : 1; // 0x8
|
u16 flag_x8 : 1; // 0x8
|
||||||
u16 hpNumbersNoBars : 1; // 0x10
|
u16 hpNumbersNoBars : 1; // 0x10
|
||||||
u16 transformSpecies;
|
/*0x2*/ u16 transformSpecies;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct BattleAnimationInfo
|
struct BattleAnimationInfo
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ enum
|
|||||||
POKEBALL_COUNT
|
POKEBALL_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern const struct SpriteTemplate gBallSpriteTemplates[];
|
||||||
|
|
||||||
#define POKEBALL_PLAYER_SENDOUT 0xFF
|
#define POKEBALL_PLAYER_SENDOUT 0xFF
|
||||||
#define POKEBALL_OPPONENT_SENDOUT 0xFE
|
#define POKEBALL_OPPONENT_SENDOUT 0xFE
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -210,7 +210,7 @@ struct Sprite
|
|||||||
/*0x2D*/ u8 animLoopCounter;
|
/*0x2D*/ u8 animLoopCounter;
|
||||||
|
|
||||||
// general purpose data fields
|
// general purpose data fields
|
||||||
/*0x2E*/ s16 data[8]; //2e, 30, 32, 34, 36,
|
/*0x2E*/ s16 data[8]; //2e, 30, 32, 34, 36, 38, 3a, 3c
|
||||||
|
|
||||||
/*0x3E*/ u16 inUse:1; //1
|
/*0x3E*/ u16 inUse:1; //1
|
||||||
u16 coordOffsetEnabled:1; //2
|
u16 coordOffsetEnabled:1; //2
|
||||||
|
|||||||
+20
-13
@@ -23,8 +23,8 @@
|
|||||||
|
|
||||||
extern const u16 gMovesWithQuietBGM[];
|
extern const u16 gMovesWithQuietBGM[];
|
||||||
extern const u8 *const gBattleAnims_Moves[];
|
extern const u8 *const gBattleAnims_Moves[];
|
||||||
extern const struct CompressedSpriteSheet gUnknown_8399388[];
|
//extern const struct CompressedSpriteSheet gUnknown_8399388[];
|
||||||
extern const struct CompressedSpritePalette gUnknown_8399C90[];
|
//extern const struct CompressedSpritePalette gUnknown_8399C90[];
|
||||||
|
|
||||||
// RAM
|
// RAM
|
||||||
EWRAM_DATA static const u8 *sBattleAnimScriptPtr = NULL;
|
EWRAM_DATA static const u8 *sBattleAnimScriptPtr = NULL;
|
||||||
@@ -1958,9 +1958,14 @@ static void ScriptCmd_loadspritegfx(void)
|
|||||||
|
|
||||||
sBattleAnimScriptPtr++;
|
sBattleAnimScriptPtr++;
|
||||||
index = T1_READ_16(sBattleAnimScriptPtr);
|
index = T1_READ_16(sBattleAnimScriptPtr);
|
||||||
LoadCompressedSpriteSheetUsingHeap(&gUnknown_8399388[GET_TRUE_SPRITE_INDEX(index)]);
|
|
||||||
LoadCompressedSpritePaletteUsingHeap(&gUnknown_8399C90[GET_TRUE_SPRITE_INDEX(index)]);
|
LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[index]);
|
||||||
sBattleAnimScriptPtr += 2;
|
LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[index]);
|
||||||
|
|
||||||
|
//LoadCompressedSpriteSheetUsingHeap(&gUnknown_8399388[GET_TRUE_SPRITE_INDEX(index)]);
|
||||||
|
//LoadCompressedSpritePaletteUsingHeap(&gUnknown_8399C90[GET_TRUE_SPRITE_INDEX(index)]);
|
||||||
|
|
||||||
|
sBattleAnimScriptPtr += 2;
|
||||||
AddSpriteIndex(GET_TRUE_SPRITE_INDEX(index));
|
AddSpriteIndex(GET_TRUE_SPRITE_INDEX(index));
|
||||||
gAnimFramesToWait = 1;
|
gAnimFramesToWait = 1;
|
||||||
gAnimScriptCallback = WaitAnimFrameCount;
|
gAnimScriptCallback = WaitAnimFrameCount;
|
||||||
@@ -2193,8 +2198,8 @@ static void ScriptCmd_monbg(void)
|
|||||||
spriteId = gBattlerSpriteIds[battlerId];
|
spriteId = gBattlerSpriteIds[battlerId];
|
||||||
taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
|
taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
|
||||||
gTasks[taskId].data[t1_MONBG_BATTLER] = spriteId;
|
gTasks[taskId].data[t1_MONBG_BATTLER] = spriteId;
|
||||||
gTasks[taskId].data[1] = gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x;
|
gTasks[taskId].data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
|
||||||
gTasks[taskId].data[2] = gSprites[spriteId].pos2.y + gSprites[spriteId].pos1.y;
|
gTasks[taskId].data[2] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
|
||||||
if (!toBG_2)
|
if (!toBG_2)
|
||||||
{
|
{
|
||||||
gTasks[taskId].data[3] = gBattle_BG1_X;
|
gTasks[taskId].data[3] = gBattle_BG1_X;
|
||||||
@@ -2224,8 +2229,8 @@ static void ScriptCmd_monbg(void)
|
|||||||
spriteId = gBattlerSpriteIds[battlerId];
|
spriteId = gBattlerSpriteIds[battlerId];
|
||||||
taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
|
taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
|
||||||
gTasks[taskId].data[t1_MONBG_BATTLER] = spriteId;
|
gTasks[taskId].data[t1_MONBG_BATTLER] = spriteId;
|
||||||
gTasks[taskId].data[1] = gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x;
|
gTasks[taskId].data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
|
||||||
gTasks[taskId].data[2] = gSprites[spriteId].pos2.y + gSprites[spriteId].pos1.y;
|
gTasks[taskId].data[2] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
|
||||||
if (!toBG_2)
|
if (!toBG_2)
|
||||||
{
|
{
|
||||||
gTasks[taskId].data[3] = gBattle_BG1_X;
|
gTasks[taskId].data[3] = gBattle_BG1_X;
|
||||||
@@ -2247,10 +2252,12 @@ static void ScriptCmd_monbg(void)
|
|||||||
|
|
||||||
bool8 IsBattlerSpriteVisible(u8 battlerId)
|
bool8 IsBattlerSpriteVisible(u8 battlerId)
|
||||||
{
|
{
|
||||||
if (!IsBattlerSpritePresent(battlerId))
|
u8 battler = battlerId;
|
||||||
|
|
||||||
|
if (!IsBattlerSpritePresent(battler))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (!gBattleSpritesDataPtr->battlerData[battlerId].invisible || !gSprites[gBattlerSpriteIds[battlerId]].invisible)
|
if (!gBattleSpritesDataPtr->battlerData[battler].invisible || !gSprites[gBattlerSpriteIds[battler]].invisible)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -2267,7 +2274,7 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2)
|
|||||||
{
|
{
|
||||||
|
|
||||||
RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(8)), 0x2000, 1);
|
RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(8)), 0x2000, 1);
|
||||||
RequestDma3Fill(0xFF, (void*)(BG_SCREEN_ADDR(28)), 0x1000, 0);
|
RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(28)), 0x1000, 1);
|
||||||
sub_80752A0(&animBg);
|
sub_80752A0(&animBg);
|
||||||
CpuFill16(toBG_2, animBg.bgTiles, 0x1000);
|
CpuFill16(toBG_2, animBg.bgTiles, 0x1000);
|
||||||
CpuFill16(toBG_2, animBg.bgTilemap, 0x800);
|
CpuFill16(toBG_2, animBg.bgTilemap, 0x800);
|
||||||
@@ -2295,7 +2302,7 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2)
|
|||||||
RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(30)), 0x1000, 1);
|
RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(30)), 0x1000, 1);
|
||||||
sub_80752C8(&animBg, 2);
|
sub_80752C8(&animBg, 2);
|
||||||
CpuFill16(0, animBg.bgTiles + 0x1000, 0x1000);
|
CpuFill16(0, animBg.bgTiles + 0x1000, 0x1000);
|
||||||
CpuFill16(0, animBg.bgTilemap + 0x400, 0x400);
|
CpuFill16(0, animBg.bgTilemap + 0x400, 0x800);
|
||||||
SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2);
|
SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2);
|
||||||
SetAnimBgAttribute(2, BG_ANIM_SCREEN_SIZE, 1);
|
SetAnimBgAttribute(2, BG_ANIM_SCREEN_SIZE, 1);
|
||||||
SetAnimBgAttribute(2, BG_ANIM_AREA_OVERFLOW_MODE, 0);
|
SetAnimBgAttribute(2, BG_ANIM_AREA_OVERFLOW_MODE, 0);
|
||||||
|
|||||||
+805
-5
@@ -4931,14 +4931,160 @@ void AnimTask_GetReturnPowerLevel(u8 taskId)
|
|||||||
|
|
||||||
// Makes the mon run out of screen, run past the opposing mon, and return to its original position.
|
// Makes the mon run out of screen, run past the opposing mon, and return to its original position.
|
||||||
// No args.
|
// No args.
|
||||||
|
/*
|
||||||
|
attempt..
|
||||||
void AnimTask_SnatchOpposingMonMove(u8 taskId)
|
void AnimTask_SnatchOpposingMonMove(u8 taskId)
|
||||||
{
|
{
|
||||||
u8 spriteId, spriteId2;
|
u8 spriteId, spriteId2;
|
||||||
int personality;
|
u32 personality;
|
||||||
int otId;
|
u32 otId;
|
||||||
u16 species;
|
u16 species;
|
||||||
u8 subpriority;
|
u8 subpriority;
|
||||||
u8 isBackPic;
|
//bool8 isBackPic;
|
||||||
|
s16 x;
|
||||||
|
|
||||||
|
u16 tSpecies;
|
||||||
|
|
||||||
|
switch (gTasks[taskId].data[0])
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||||
|
gTasks[taskId].data[1] += 0x800;
|
||||||
|
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||||
|
gSprites[spriteId].pos2.x += (gTasks[taskId].data[1] >> 8);
|
||||||
|
else
|
||||||
|
gSprites[spriteId].pos2.x -= (gTasks[taskId].data[1] >> 8);
|
||||||
|
|
||||||
|
gTasks[taskId].data[1] &= 0xFF;
|
||||||
|
x = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
|
||||||
|
if ((u16)(x + 32) > 304)
|
||||||
|
{
|
||||||
|
gTasks[taskId].data[1] = 0;
|
||||||
|
gTasks[taskId].data[0]++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||||
|
{
|
||||||
|
personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY);
|
||||||
|
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID);
|
||||||
|
|
||||||
|
tSpecies = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
|
||||||
|
if (tSpecies == SPECIES_NONE)
|
||||||
|
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
|
||||||
|
else
|
||||||
|
species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
|
||||||
|
|
||||||
|
subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1;
|
||||||
|
//isBackPic = FALSE;
|
||||||
|
//x = 272;
|
||||||
|
spriteId = sub_80768D0(species, FALSE, 0, 272, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y), subpriority, personality, otId, gBattleAnimAttacker, 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY);
|
||||||
|
otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID);
|
||||||
|
|
||||||
|
tSpecies = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
|
||||||
|
if (tSpecies == SPECIES_NONE)
|
||||||
|
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
|
||||||
|
else
|
||||||
|
species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
|
||||||
|
|
||||||
|
subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority - 1;
|
||||||
|
//isBackPic = TRUE;
|
||||||
|
//x = -32;
|
||||||
|
spriteId = sub_80768D0(species, TRUE, 0, -32, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y), subpriority, personality, otId, gBattleAnimAttacker, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies != SPECIES_NONE)
|
||||||
|
BlendPalette((gSprites[spriteId].oam.paletteNum * 16) | 0x100, 16, 6, RGB_WHITE);
|
||||||
|
|
||||||
|
gTasks[taskId].data[15] = spriteId;
|
||||||
|
gTasks[taskId].data[0]++;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
spriteId2 = gTasks[taskId].data[15];
|
||||||
|
gTasks[taskId].data[1] += 0x800;
|
||||||
|
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||||
|
gSprites[spriteId2].pos2.x -= (gTasks[taskId].data[1] >> 8);
|
||||||
|
else
|
||||||
|
gSprites[spriteId2].pos2.x += (gTasks[taskId].data[1] >> 8);
|
||||||
|
|
||||||
|
gTasks[taskId].data[1] &= 0xFF;
|
||||||
|
x = gSprites[spriteId2].pos1.x + gSprites[spriteId2].pos2.x;
|
||||||
|
if (gTasks[taskId].data[14] == 0)
|
||||||
|
{
|
||||||
|
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||||
|
{
|
||||||
|
if (x < GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X))
|
||||||
|
{
|
||||||
|
gTasks[taskId].data[14]++;
|
||||||
|
gBattleAnimArgs[7] = 0xFFFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (x > GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X))
|
||||||
|
{
|
||||||
|
gTasks[taskId].data[14]++;
|
||||||
|
gBattleAnimArgs[7] = 0xFFFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((u16)(x + 32) > 304)
|
||||||
|
{
|
||||||
|
gTasks[taskId].data[1] = 0;
|
||||||
|
gTasks[taskId].data[0]++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||||
|
spriteId2 = gTasks[taskId].data[15];
|
||||||
|
DestroySpriteAndFreeResources_(&gSprites[spriteId2]);
|
||||||
|
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||||
|
gSprites[spriteId].pos2.x = -gSprites[spriteId].pos1.x - 32;
|
||||||
|
else
|
||||||
|
gSprites[spriteId].pos2.x = 272 - gSprites[spriteId].pos1.x;
|
||||||
|
|
||||||
|
gTasks[taskId].data[0]++;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||||
|
gTasks[taskId].data[1] += 0x800;
|
||||||
|
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
|
||||||
|
{
|
||||||
|
gSprites[spriteId].pos2.x += (gTasks[taskId].data[1] >> 8);
|
||||||
|
if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x >= GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X))
|
||||||
|
gSprites[spriteId].pos2.x = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gSprites[spriteId].pos2.x -= (gTasks[taskId].data[1] >> 8);
|
||||||
|
if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x <= GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X))
|
||||||
|
gSprites[spriteId].pos2.x = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
gTasks[taskId].data[1] = (u8)gTasks[taskId].data[1];
|
||||||
|
if (gSprites[spriteId].pos2.x == 0)
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef NONMATCHING
|
||||||
|
// `species` variable getting loaded into r6 instead of r5
|
||||||
|
//https://cexplore.karathan.at/z/0gMuxf
|
||||||
|
void AnimTask_SnatchOpposingMonMove(u8 taskId)
|
||||||
|
{
|
||||||
|
u8 spriteId, spriteId2;
|
||||||
|
u32 personality;
|
||||||
|
u32 otId;
|
||||||
|
u16 species;
|
||||||
|
u8 subpriority;
|
||||||
|
bool8 isBackPic;
|
||||||
s16 x;
|
s16 x;
|
||||||
|
|
||||||
switch (gTasks[taskId].data[0])
|
switch (gTasks[taskId].data[0])
|
||||||
@@ -4964,13 +5110,14 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
|
|||||||
{
|
{
|
||||||
personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY);
|
personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY);
|
||||||
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID);
|
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID);
|
||||||
|
|
||||||
if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies == SPECIES_NONE)
|
if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies == SPECIES_NONE)
|
||||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
|
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
|
||||||
else
|
else
|
||||||
species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
|
species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
|
||||||
|
|
||||||
subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1;
|
subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1;
|
||||||
isBackPic = 0;
|
isBackPic = FALSE;
|
||||||
x = 272;
|
x = 272;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -4983,7 +5130,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
|
|||||||
species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
|
species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
|
||||||
|
|
||||||
subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority - 1;
|
subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority - 1;
|
||||||
isBackPic = 1;
|
isBackPic = TRUE;
|
||||||
x = -32;
|
x = -32;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5063,6 +5210,659 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
NAKED
|
||||||
|
void AnimTask_SnatchOpposingMonMove(u8 taskId)
|
||||||
|
{
|
||||||
|
asm_unified("\tpush {r4-r7,lr}\n"
|
||||||
|
"\tmov r7, r10\n"
|
||||||
|
"\tmov r6, r9\n"
|
||||||
|
"\tmov r5, r8\n"
|
||||||
|
"\tpush {r5-r7}\n"
|
||||||
|
"\tsub sp, 0x1C\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r0, 24\n"
|
||||||
|
"\tmov r8, r0\n"
|
||||||
|
"\tldr r1, _080E395C @ =gTasks\n"
|
||||||
|
"\tlsls r0, 2\n"
|
||||||
|
"\tadd r0, r8\n"
|
||||||
|
"\tlsls r0, 3\n"
|
||||||
|
"\tadds r0, r1\n"
|
||||||
|
"\tmovs r1, 0x8\n"
|
||||||
|
"\tldrsh r0, [r0, r1]\n"
|
||||||
|
"\tcmp r0, 0x4\n"
|
||||||
|
"\tbls _080E3952\n"
|
||||||
|
"\tb _080E3E6C\n"
|
||||||
|
"_080E3952:\n"
|
||||||
|
"\tlsls r0, 2\n"
|
||||||
|
"\tldr r1, _080E3960 @ =_080E3964\n"
|
||||||
|
"\tadds r0, r1\n"
|
||||||
|
"\tldr r0, [r0]\n"
|
||||||
|
"\tmov pc, r0\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080E395C: .4byte gTasks\n"
|
||||||
|
"_080E3960: .4byte _080E3964\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080E3964:\n"
|
||||||
|
"\t.4byte _080E3978\n"
|
||||||
|
"\t.4byte _080E3A2C\n"
|
||||||
|
"\t.4byte _080E3BEC\n"
|
||||||
|
"\t.4byte _080E3D0C\n"
|
||||||
|
"\t.4byte _080E3D90\n"
|
||||||
|
"_080E3978:\n"
|
||||||
|
"\tmovs r0, 0\n"
|
||||||
|
"\tbl GetAnimBattlerSpriteId\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r7, r0, 24\n"
|
||||||
|
"\tldr r1, _080E39C4 @ =gTasks\n"
|
||||||
|
"\tmov r2, r8\n"
|
||||||
|
"\tlsls r4, r2, 2\n"
|
||||||
|
"\tadds r0, r4, r2\n"
|
||||||
|
"\tlsls r0, 3\n"
|
||||||
|
"\tadds r6, r0, r1\n"
|
||||||
|
"\tmovs r3, 0x80\n"
|
||||||
|
"\tlsls r3, 4\n"
|
||||||
|
"\tadds r0, r3, 0\n"
|
||||||
|
"\tldrh r1, [r6, 0xA]\n"
|
||||||
|
"\tadds r0, r1\n"
|
||||||
|
"\tstrh r0, [r6, 0xA]\n"
|
||||||
|
"\tldr r0, _080E39C8 @ =gBattleAnimAttacker\n"
|
||||||
|
"\tldrb r0, [r0]\n"
|
||||||
|
"\tbl GetBattlerSide\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tmov r9, r4\n"
|
||||||
|
"\tcmp r0, 0\n"
|
||||||
|
"\tbne _080E39D0\n"
|
||||||
|
"\tldr r2, _080E39CC @ =gSprites\n"
|
||||||
|
"\tlsls r3, r7, 4\n"
|
||||||
|
"\tadds r1, r3, r7\n"
|
||||||
|
"\tlsls r1, 2\n"
|
||||||
|
"\tadds r1, r2\n"
|
||||||
|
"\tldrh r0, [r6, 0xA]\n"
|
||||||
|
"\tlsls r0, 16\n"
|
||||||
|
"\tasrs r0, 24\n"
|
||||||
|
"\tldrh r4, [r1, 0x24]\n"
|
||||||
|
"\tadds r0, r4\n"
|
||||||
|
"\tstrh r0, [r1, 0x24]\n"
|
||||||
|
"\tb _080E39EA\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080E39C4: .4byte gTasks\n"
|
||||||
|
"_080E39C8: .4byte gBattleAnimAttacker\n"
|
||||||
|
"_080E39CC: .4byte gSprites\n"
|
||||||
|
"_080E39D0:\n"
|
||||||
|
"\tldr r3, _080E3A24 @ =gSprites\n"
|
||||||
|
"\tlsls r4, r7, 4\n"
|
||||||
|
"\tadds r2, r4, r7\n"
|
||||||
|
"\tlsls r2, 2\n"
|
||||||
|
"\tadds r2, r3\n"
|
||||||
|
"\tldrh r1, [r6, 0xA]\n"
|
||||||
|
"\tlsls r1, 16\n"
|
||||||
|
"\tasrs r1, 24\n"
|
||||||
|
"\tldrh r0, [r2, 0x24]\n"
|
||||||
|
"\tsubs r0, r1\n"
|
||||||
|
"\tstrh r0, [r2, 0x24]\n"
|
||||||
|
"\tadds r2, r3, 0\n"
|
||||||
|
"\tadds r3, r4, 0\n"
|
||||||
|
"_080E39EA:\n"
|
||||||
|
"\tldr r1, _080E3A28 @ =gTasks\n"
|
||||||
|
"\tmov r0, r9\n"
|
||||||
|
"\tadd r0, r8\n"
|
||||||
|
"\tlsls r0, 3\n"
|
||||||
|
"\tadds r4, r0, r1\n"
|
||||||
|
"\tldrb r0, [r4, 0xA]\n"
|
||||||
|
"\tstrh r0, [r4, 0xA]\n"
|
||||||
|
"\tadds r1, r3, r7\n"
|
||||||
|
"\tlsls r1, 2\n"
|
||||||
|
"\tadds r1, r2\n"
|
||||||
|
"\tldrh r0, [r1, 0x24]\n"
|
||||||
|
"\tldrh r1, [r1, 0x20]\n"
|
||||||
|
"\tadds r0, r1\n"
|
||||||
|
"\tlsls r0, 16\n"
|
||||||
|
"\tmovs r1, 0x80\n"
|
||||||
|
"\tlsls r1, 14\n"
|
||||||
|
"\tadds r0, r1\n"
|
||||||
|
"\tmovs r1, 0x98\n"
|
||||||
|
"\tlsls r1, 17\n"
|
||||||
|
"\tcmp r0, r1\n"
|
||||||
|
"\tbhi _080E3A16\n"
|
||||||
|
"\tb _080E3E6C\n"
|
||||||
|
"_080E3A16:\n"
|
||||||
|
"\tmovs r0, 0\n"
|
||||||
|
"\tstrh r0, [r4, 0xA]\n"
|
||||||
|
"\tldrh r0, [r4, 0x8]\n"
|
||||||
|
"\tadds r0, 0x1\n"
|
||||||
|
"\tstrh r0, [r4, 0x8]\n"
|
||||||
|
"\tb _080E3E6C\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080E3A24: .4byte gSprites\n"
|
||||||
|
"_080E3A28: .4byte gTasks\n"
|
||||||
|
"_080E3A2C:\n"
|
||||||
|
"\tldr r4, _080E3A90 @ =gBattleAnimAttacker\n"
|
||||||
|
"\tldrb r0, [r4]\n"
|
||||||
|
"\tbl GetBattlerSide\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tcmp r0, 0\n"
|
||||||
|
"\tbne _080E3ACC\n"
|
||||||
|
"\tldr r7, _080E3A94 @ =gBattlerPartyIndexes\n"
|
||||||
|
"\tldrb r0, [r4]\n"
|
||||||
|
"\tlsls r0, 1\n"
|
||||||
|
"\tadds r0, r7\n"
|
||||||
|
"\tldrh r0, [r0]\n"
|
||||||
|
"\tmovs r6, 0x64\n"
|
||||||
|
"\tmuls r0, r6\n"
|
||||||
|
"\tldr r5, _080E3A98 @ =gPlayerParty\n"
|
||||||
|
"\tadds r0, r5\n"
|
||||||
|
"\tmovs r1, 0\n"
|
||||||
|
"\tbl GetMonData\n"
|
||||||
|
"\tmov r10, r0\n"
|
||||||
|
"\tldrb r0, [r4]\n"
|
||||||
|
"\tlsls r0, 1\n"
|
||||||
|
"\tadds r0, r7\n"
|
||||||
|
"\tldrh r0, [r0]\n"
|
||||||
|
"\tmuls r0, r6\n"
|
||||||
|
"\tadds r0, r5\n"
|
||||||
|
"\tmovs r1, 0x1\n"
|
||||||
|
"\tbl GetMonData\n"
|
||||||
|
"\tmov r9, r0\n"
|
||||||
|
"\tldr r0, _080E3A9C @ =gBattleSpritesDataPtr\n"
|
||||||
|
"\tldr r0, [r0]\n"
|
||||||
|
"\tldrb r2, [r4]\n"
|
||||||
|
"\tldr r1, [r0]\n"
|
||||||
|
"\tlsls r0, r2, 2\n"
|
||||||
|
"\tadds r1, r0, r1\n"
|
||||||
|
"\tldrh r0, [r1, 0x2]\n"
|
||||||
|
"\tcmp r0, 0\n"
|
||||||
|
"\tbne _080E3AA0\n"
|
||||||
|
"\tlsls r0, r2, 1\n"
|
||||||
|
"\tadds r0, r7\n"
|
||||||
|
"\tldrh r0, [r0]\n"
|
||||||
|
"\tmuls r0, r6\n"
|
||||||
|
"\tadds r0, r5\n"
|
||||||
|
"\tmovs r1, 0xB\n"
|
||||||
|
"\tbl GetMonData\n"
|
||||||
|
"\tlsls r0, 16\n"
|
||||||
|
"\tlsrs r5, r0, 16\n"
|
||||||
|
"\tb _080E3AA2\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080E3A90: .4byte gBattleAnimAttacker\n"
|
||||||
|
"_080E3A94: .4byte gBattlerPartyIndexes\n"
|
||||||
|
"_080E3A98: .4byte gPlayerParty\n"
|
||||||
|
"_080E3A9C: .4byte gBattleSpritesDataPtr\n"
|
||||||
|
"_080E3AA0:\n"
|
||||||
|
"\tldrh r5, [r1, 0x2]\n"
|
||||||
|
"_080E3AA2:\n"
|
||||||
|
"\tmovs r0, 0x1\n"
|
||||||
|
"\tbl GetAnimBattlerSpriteId\n"
|
||||||
|
"\tldr r2, _080E3AC8 @ =gSprites\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r0, 24\n"
|
||||||
|
"\tlsls r1, r0, 4\n"
|
||||||
|
"\tadds r1, r0\n"
|
||||||
|
"\tlsls r1, 2\n"
|
||||||
|
"\tadds r1, r2\n"
|
||||||
|
"\tadds r1, 0x43\n"
|
||||||
|
"\tldrb r0, [r1]\n"
|
||||||
|
"\tadds r0, 0x1\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r4, r0, 24\n"
|
||||||
|
"\tmovs r7, 0\n"
|
||||||
|
"\tmovs r6, 0x88\n"
|
||||||
|
"\tlsls r6, 1\n"
|
||||||
|
"\tb _080E3B54\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080E3AC8: .4byte gSprites\n"
|
||||||
|
"_080E3ACC:\n"
|
||||||
|
"\tldr r7, _080E3B24 @ =gBattlerPartyIndexes\n"
|
||||||
|
"\tldrb r0, [r4]\n"
|
||||||
|
"\tlsls r0, 1\n"
|
||||||
|
"\tadds r0, r7\n"
|
||||||
|
"\tldrh r0, [r0]\n"
|
||||||
|
"\tmovs r6, 0x64\n"
|
||||||
|
"\tmuls r0, r6\n"
|
||||||
|
"\tldr r5, _080E3B28 @ =gEnemyParty\n"
|
||||||
|
"\tadds r0, r5\n"
|
||||||
|
"\tmovs r1, 0\n"
|
||||||
|
"\tbl GetMonData\n"
|
||||||
|
"\tmov r10, r0\n"
|
||||||
|
"\tldrb r0, [r4]\n"
|
||||||
|
"\tlsls r0, 1\n"
|
||||||
|
"\tadds r0, r7\n"
|
||||||
|
"\tldrh r0, [r0]\n"
|
||||||
|
"\tmuls r0, r6\n"
|
||||||
|
"\tadds r0, r5\n"
|
||||||
|
"\tmovs r1, 0x1\n"
|
||||||
|
"\tbl GetMonData\n"
|
||||||
|
"\tmov r9, r0\n"
|
||||||
|
"\tldr r0, _080E3B2C @ =gBattleSpritesDataPtr\n"
|
||||||
|
"\tldr r0, [r0]\n"
|
||||||
|
"\tldrb r2, [r4]\n"
|
||||||
|
"\tldr r1, [r0]\n"
|
||||||
|
"\tlsls r0, r2, 2\n"
|
||||||
|
"\tadds r1, r0, r1\n"
|
||||||
|
"\tldrh r0, [r1, 0x2]\n"
|
||||||
|
"\tcmp r0, 0\n"
|
||||||
|
"\tbne _080E3B30\n"
|
||||||
|
"\tlsls r0, r2, 1\n"
|
||||||
|
"\tadds r0, r7\n"
|
||||||
|
"\tldrh r0, [r0]\n"
|
||||||
|
"\tmuls r0, r6\n"
|
||||||
|
"\tadds r0, r5\n"
|
||||||
|
"\tmovs r1, 0xB\n"
|
||||||
|
"\tbl GetMonData\n"
|
||||||
|
"\tlsls r0, 16\n"
|
||||||
|
"\tlsrs r5, r0, 16\n"
|
||||||
|
"\tb _080E3B32\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080E3B24: .4byte gBattlerPartyIndexes\n"
|
||||||
|
"_080E3B28: .4byte gEnemyParty\n"
|
||||||
|
"_080E3B2C: .4byte gBattleSpritesDataPtr\n"
|
||||||
|
"_080E3B30:\n"
|
||||||
|
"\tldrh r5, [r1, 0x2]\n"
|
||||||
|
"_080E3B32:\n"
|
||||||
|
"\tmovs r0, 0x1\n"
|
||||||
|
"\tbl GetAnimBattlerSpriteId\n"
|
||||||
|
"\tldr r2, _080E3BD0 @ =gSprites\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r0, 24\n"
|
||||||
|
"\tlsls r1, r0, 4\n"
|
||||||
|
"\tadds r1, r0\n"
|
||||||
|
"\tlsls r1, 2\n"
|
||||||
|
"\tadds r1, r2\n"
|
||||||
|
"\tadds r1, 0x43\n"
|
||||||
|
"\tldrb r0, [r1]\n"
|
||||||
|
"\tsubs r0, 0x1\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r4, r0, 24\n"
|
||||||
|
"\tmovs r7, 0x1\n"
|
||||||
|
"\tldr r6, _080E3BD4 @ =0x0000ffe0\n"
|
||||||
|
"_080E3B54:\n"
|
||||||
|
"\tldr r0, _080E3BD8 @ =gBattleAnimTarget\n"
|
||||||
|
"\tldrb r0, [r0]\n"
|
||||||
|
"\tmovs r1, 0x1\n"
|
||||||
|
"\tbl GetBattlerSpriteCoord\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r0, 24\n"
|
||||||
|
"\tlsls r3, r6, 16\n"
|
||||||
|
"\tasrs r3, 16\n"
|
||||||
|
"\tstr r0, [sp]\n"
|
||||||
|
"\tstr r4, [sp, 0x4]\n"
|
||||||
|
"\tmov r2, r10\n"
|
||||||
|
"\tstr r2, [sp, 0x8]\n"
|
||||||
|
"\tmov r4, r9\n"
|
||||||
|
"\tstr r4, [sp, 0xC]\n"
|
||||||
|
"\tldr r4, _080E3BDC @ =gBattleAnimAttacker\n"
|
||||||
|
"\tldrb r0, [r4]\n"
|
||||||
|
"\tstr r0, [sp, 0x10]\n"
|
||||||
|
"\tmovs r0, 0\n"
|
||||||
|
"\tstr r0, [sp, 0x14]\n"
|
||||||
|
"\tadds r0, r5, 0\n"
|
||||||
|
"\tadds r1, r7, 0\n"
|
||||||
|
"\tmovs r2, 0\n"
|
||||||
|
"\tbl sub_80768D0\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r5, r0, 24\n"
|
||||||
|
"\tldr r0, _080E3BE0 @ =gBattleSpritesDataPtr\n"
|
||||||
|
"\tldr r1, [r0]\n"
|
||||||
|
"\tldrb r0, [r4]\n"
|
||||||
|
"\tldr r1, [r1]\n"
|
||||||
|
"\tlsls r0, 2\n"
|
||||||
|
"\tadds r0, r1\n"
|
||||||
|
"\tldrh r0, [r0, 0x2]\n"
|
||||||
|
"\tcmp r0, 0\n"
|
||||||
|
"\tbeq _080E3BBE\n"
|
||||||
|
"\tldr r1, _080E3BD0 @ =gSprites\n"
|
||||||
|
"\tlsls r0, r5, 4\n"
|
||||||
|
"\tadds r0, r5\n"
|
||||||
|
"\tlsls r0, 2\n"
|
||||||
|
"\tadds r0, r1\n"
|
||||||
|
"\tldrb r0, [r0, 0x5]\n"
|
||||||
|
"\tlsrs r0, 4\n"
|
||||||
|
"\tlsls r0, 4\n"
|
||||||
|
"\tmovs r2, 0x80\n"
|
||||||
|
"\tlsls r2, 1\n"
|
||||||
|
"\tadds r1, r2, 0\n"
|
||||||
|
"\torrs r0, r1\n"
|
||||||
|
"\tldr r3, _080E3BE4 @ =0x00007fff\n"
|
||||||
|
"\tmovs r1, 0x10\n"
|
||||||
|
"\tmovs r2, 0x6\n"
|
||||||
|
"\tbl BlendPalette\n"
|
||||||
|
"_080E3BBE:\n"
|
||||||
|
"\tldr r0, _080E3BE8 @ =gTasks\n"
|
||||||
|
"\tmov r3, r8\n"
|
||||||
|
"\tlsls r1, r3, 2\n"
|
||||||
|
"\tadd r1, r8\n"
|
||||||
|
"\tlsls r1, 3\n"
|
||||||
|
"\tadds r1, r0\n"
|
||||||
|
"\tstrh r5, [r1, 0x26]\n"
|
||||||
|
"\tb _080E3D82\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080E3BD0: .4byte gSprites\n"
|
||||||
|
"_080E3BD4: .4byte 0x0000ffe0\n"
|
||||||
|
"_080E3BD8: .4byte gBattleAnimTarget\n"
|
||||||
|
"_080E3BDC: .4byte gBattleAnimAttacker\n"
|
||||||
|
"_080E3BE0: .4byte gBattleSpritesDataPtr\n"
|
||||||
|
"_080E3BE4: .4byte 0x00007fff\n"
|
||||||
|
"_080E3BE8: .4byte gTasks\n"
|
||||||
|
"_080E3BEC:\n"
|
||||||
|
"\tldr r1, _080E3C38 @ =gTasks\n"
|
||||||
|
"\tmov r0, r8\n"
|
||||||
|
"\tlsls r4, r0, 2\n"
|
||||||
|
"\tadds r0, r4, r0\n"
|
||||||
|
"\tlsls r0, 3\n"
|
||||||
|
"\tadds r6, r0, r1\n"
|
||||||
|
"\tldrh r0, [r6, 0x26]\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r5, r0, 24\n"
|
||||||
|
"\tmovs r1, 0x80\n"
|
||||||
|
"\tlsls r1, 4\n"
|
||||||
|
"\tadds r0, r1, 0\n"
|
||||||
|
"\tldrh r2, [r6, 0xA]\n"
|
||||||
|
"\tadds r0, r2\n"
|
||||||
|
"\tstrh r0, [r6, 0xA]\n"
|
||||||
|
"\tldr r0, _080E3C3C @ =gBattleAnimAttacker\n"
|
||||||
|
"\tldrb r0, [r0]\n"
|
||||||
|
"\tbl GetBattlerSide\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tmov r9, r4\n"
|
||||||
|
"\tcmp r0, 0\n"
|
||||||
|
"\tbne _080E3C44\n"
|
||||||
|
"\tldr r3, _080E3C40 @ =gSprites\n"
|
||||||
|
"\tlsls r4, r5, 4\n"
|
||||||
|
"\tadds r2, r4, r5\n"
|
||||||
|
"\tlsls r2, 2\n"
|
||||||
|
"\tadds r2, r3\n"
|
||||||
|
"\tldrh r1, [r6, 0xA]\n"
|
||||||
|
"\tlsls r1, 16\n"
|
||||||
|
"\tasrs r1, 24\n"
|
||||||
|
"\tldrh r0, [r2, 0x24]\n"
|
||||||
|
"\tsubs r0, r1\n"
|
||||||
|
"\tstrh r0, [r2, 0x24]\n"
|
||||||
|
"\tadds r2, r3, 0\n"
|
||||||
|
"\tadds r3, r4, 0\n"
|
||||||
|
"\tb _080E3C5A\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080E3C38: .4byte gTasks\n"
|
||||||
|
"_080E3C3C: .4byte gBattleAnimAttacker\n"
|
||||||
|
"_080E3C40: .4byte gSprites\n"
|
||||||
|
"_080E3C44:\n"
|
||||||
|
"\tldr r2, _080E3CA8 @ =gSprites\n"
|
||||||
|
"\tlsls r3, r5, 4\n"
|
||||||
|
"\tadds r1, r3, r5\n"
|
||||||
|
"\tlsls r1, 2\n"
|
||||||
|
"\tadds r1, r2\n"
|
||||||
|
"\tldrh r0, [r6, 0xA]\n"
|
||||||
|
"\tlsls r0, 16\n"
|
||||||
|
"\tasrs r0, 24\n"
|
||||||
|
"\tldrh r4, [r1, 0x24]\n"
|
||||||
|
"\tadds r0, r4\n"
|
||||||
|
"\tstrh r0, [r1, 0x24]\n"
|
||||||
|
"_080E3C5A:\n"
|
||||||
|
"\tldr r1, _080E3CAC @ =gTasks\n"
|
||||||
|
"\tmov r0, r9\n"
|
||||||
|
"\tadd r0, r8\n"
|
||||||
|
"\tlsls r0, 3\n"
|
||||||
|
"\tadds r6, r0, r1\n"
|
||||||
|
"\tldrb r0, [r6, 0xA]\n"
|
||||||
|
"\tstrh r0, [r6, 0xA]\n"
|
||||||
|
"\tadds r1, r3, r5\n"
|
||||||
|
"\tlsls r1, 2\n"
|
||||||
|
"\tadds r1, r2\n"
|
||||||
|
"\tldrh r0, [r1, 0x24]\n"
|
||||||
|
"\tldrh r1, [r1, 0x20]\n"
|
||||||
|
"\tadds r0, r1\n"
|
||||||
|
"\tlsls r0, 16\n"
|
||||||
|
"\tlsrs r5, r0, 16\n"
|
||||||
|
"\tmovs r1, 0x24\n"
|
||||||
|
"\tldrsh r0, [r6, r1]\n"
|
||||||
|
"\tcmp r0, 0\n"
|
||||||
|
"\tbne _080E3CDA\n"
|
||||||
|
"\tldr r0, _080E3CB0 @ =gBattleAnimAttacker\n"
|
||||||
|
"\tldrb r0, [r0]\n"
|
||||||
|
"\tbl GetBattlerSide\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tcmp r0, 0\n"
|
||||||
|
"\tbne _080E3CB8\n"
|
||||||
|
"\tlsls r4, r5, 16\n"
|
||||||
|
"\tasrs r4, 16\n"
|
||||||
|
"\tldr r0, _080E3CB4 @ =gBattleAnimTarget\n"
|
||||||
|
"\tldrb r0, [r0]\n"
|
||||||
|
"\tmovs r1, 0\n"
|
||||||
|
"\tbl GetBattlerSpriteCoord\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r0, 24\n"
|
||||||
|
"\tcmp r4, r0\n"
|
||||||
|
"\tbge _080E3CDA\n"
|
||||||
|
"\tb _080E3CCE\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080E3CA8: .4byte gSprites\n"
|
||||||
|
"_080E3CAC: .4byte gTasks\n"
|
||||||
|
"_080E3CB0: .4byte gBattleAnimAttacker\n"
|
||||||
|
"_080E3CB4: .4byte gBattleAnimTarget\n"
|
||||||
|
"_080E3CB8:\n"
|
||||||
|
"\tlsls r4, r5, 16\n"
|
||||||
|
"\tasrs r4, 16\n"
|
||||||
|
"\tldr r0, _080E3CFC @ =gBattleAnimTarget\n"
|
||||||
|
"\tldrb r0, [r0]\n"
|
||||||
|
"\tmovs r1, 0\n"
|
||||||
|
"\tbl GetBattlerSpriteCoord\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r0, 24\n"
|
||||||
|
"\tcmp r4, r0\n"
|
||||||
|
"\tble _080E3CDA\n"
|
||||||
|
"_080E3CCE:\n"
|
||||||
|
"\tldrh r0, [r6, 0x24]\n"
|
||||||
|
"\tadds r0, 0x1\n"
|
||||||
|
"\tstrh r0, [r6, 0x24]\n"
|
||||||
|
"\tldr r1, _080E3D00 @ =gBattleAnimArgs\n"
|
||||||
|
"\tldr r0, _080E3D04 @ =0x0000ffff\n"
|
||||||
|
"\tstrh r0, [r1, 0xE]\n"
|
||||||
|
"_080E3CDA:\n"
|
||||||
|
"\tlsls r0, r5, 16\n"
|
||||||
|
"\tmovs r2, 0x80\n"
|
||||||
|
"\tlsls r2, 14\n"
|
||||||
|
"\tadds r0, r2\n"
|
||||||
|
"\tmovs r1, 0x98\n"
|
||||||
|
"\tlsls r1, 17\n"
|
||||||
|
"\tcmp r0, r1\n"
|
||||||
|
"\tbhi _080E3CEC\n"
|
||||||
|
"\tb _080E3E6C\n"
|
||||||
|
"_080E3CEC:\n"
|
||||||
|
"\tldr r0, _080E3D08 @ =gTasks\n"
|
||||||
|
"\tmov r1, r9\n"
|
||||||
|
"\tadd r1, r8\n"
|
||||||
|
"\tlsls r1, 3\n"
|
||||||
|
"\tadds r1, r0\n"
|
||||||
|
"\tmovs r0, 0\n"
|
||||||
|
"\tstrh r0, [r1, 0xA]\n"
|
||||||
|
"\tb _080E3D82\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080E3CFC: .4byte gBattleAnimTarget\n"
|
||||||
|
"_080E3D00: .4byte gBattleAnimArgs\n"
|
||||||
|
"_080E3D04: .4byte 0x0000ffff\n"
|
||||||
|
"_080E3D08: .4byte gTasks\n"
|
||||||
|
"_080E3D0C:\n"
|
||||||
|
"\tmovs r0, 0\n"
|
||||||
|
"\tbl GetAnimBattlerSpriteId\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r7, r0, 24\n"
|
||||||
|
"\tldr r1, _080E3D58 @ =gTasks\n"
|
||||||
|
"\tmov r3, r8\n"
|
||||||
|
"\tlsls r4, r3, 2\n"
|
||||||
|
"\tadds r0, r4, r3\n"
|
||||||
|
"\tlsls r0, 3\n"
|
||||||
|
"\tadds r0, r1\n"
|
||||||
|
"\tldrh r0, [r0, 0x26]\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r5, r0, 24\n"
|
||||||
|
"\tlsls r0, r5, 4\n"
|
||||||
|
"\tadds r0, r5\n"
|
||||||
|
"\tlsls r0, 2\n"
|
||||||
|
"\tldr r5, _080E3D5C @ =gSprites\n"
|
||||||
|
"\tadds r0, r5\n"
|
||||||
|
"\tbl DestroySpriteAndFreeResources_\n"
|
||||||
|
"\tldr r0, _080E3D60 @ =gBattleAnimAttacker\n"
|
||||||
|
"\tldrb r0, [r0]\n"
|
||||||
|
"\tbl GetBattlerSide\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tmov r9, r4\n"
|
||||||
|
"\tcmp r0, 0\n"
|
||||||
|
"\tbne _080E3D64\n"
|
||||||
|
"\tlsls r1, r7, 4\n"
|
||||||
|
"\tadds r1, r7\n"
|
||||||
|
"\tlsls r1, 2\n"
|
||||||
|
"\tadds r1, r5\n"
|
||||||
|
"\tldrh r0, [r1, 0x20]\n"
|
||||||
|
"\tnegs r0, r0\n"
|
||||||
|
"\tsubs r0, 0x20\n"
|
||||||
|
"\tstrh r0, [r1, 0x24]\n"
|
||||||
|
"\tb _080E3D78\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080E3D58: .4byte gTasks\n"
|
||||||
|
"_080E3D5C: .4byte gSprites\n"
|
||||||
|
"_080E3D60: .4byte gBattleAnimAttacker\n"
|
||||||
|
"_080E3D64:\n"
|
||||||
|
"\tlsls r0, r7, 4\n"
|
||||||
|
"\tadds r0, r7\n"
|
||||||
|
"\tlsls r0, 2\n"
|
||||||
|
"\tadds r0, r5\n"
|
||||||
|
"\tldrh r2, [r0, 0x20]\n"
|
||||||
|
"\tmovs r4, 0x88\n"
|
||||||
|
"\tlsls r4, 1\n"
|
||||||
|
"\tadds r1, r4, 0\n"
|
||||||
|
"\tsubs r1, r2\n"
|
||||||
|
"\tstrh r1, [r0, 0x24]\n"
|
||||||
|
"_080E3D78:\n"
|
||||||
|
"\tldr r0, _080E3D8C @ =gTasks\n"
|
||||||
|
"\tmov r1, r9\n"
|
||||||
|
"\tadd r1, r8\n"
|
||||||
|
"\tlsls r1, 3\n"
|
||||||
|
"\tadds r1, r0\n"
|
||||||
|
"_080E3D82:\n"
|
||||||
|
"\tldrh r0, [r1, 0x8]\n"
|
||||||
|
"\tadds r0, 0x1\n"
|
||||||
|
"\tstrh r0, [r1, 0x8]\n"
|
||||||
|
"\tb _080E3E6C\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080E3D8C: .4byte gTasks\n"
|
||||||
|
"_080E3D90:\n"
|
||||||
|
"\tmovs r0, 0\n"
|
||||||
|
"\tbl GetAnimBattlerSpriteId\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r7, r0, 24\n"
|
||||||
|
"\tldr r1, _080E3E04 @ =gTasks\n"
|
||||||
|
"\tmov r0, r8\n"
|
||||||
|
"\tlsls r4, r0, 2\n"
|
||||||
|
"\tadds r0, r4, r0\n"
|
||||||
|
"\tlsls r0, 3\n"
|
||||||
|
"\tadds r2, r0, r1\n"
|
||||||
|
"\tmovs r1, 0x80\n"
|
||||||
|
"\tlsls r1, 4\n"
|
||||||
|
"\tadds r0, r1, 0\n"
|
||||||
|
"\tldrh r3, [r2, 0xA]\n"
|
||||||
|
"\tadds r0, r3\n"
|
||||||
|
"\tstrh r0, [r2, 0xA]\n"
|
||||||
|
"\tldr r0, _080E3E08 @ =gBattleAnimAttacker\n"
|
||||||
|
"\tmov r10, r0\n"
|
||||||
|
"\tldrb r0, [r0]\n"
|
||||||
|
"\tstr r2, [sp, 0x18]\n"
|
||||||
|
"\tbl GetBattlerSide\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tmov r9, r4\n"
|
||||||
|
"\tldr r2, [sp, 0x18]\n"
|
||||||
|
"\tcmp r0, 0\n"
|
||||||
|
"\tbne _080E3E10\n"
|
||||||
|
"\tldr r1, _080E3E0C @ =gSprites\n"
|
||||||
|
"\tlsls r5, r7, 4\n"
|
||||||
|
"\tadds r0, r5, r7\n"
|
||||||
|
"\tlsls r0, 2\n"
|
||||||
|
"\tadds r6, r0, r1\n"
|
||||||
|
"\tldrh r0, [r2, 0xA]\n"
|
||||||
|
"\tlsls r0, 16\n"
|
||||||
|
"\tasrs r0, 24\n"
|
||||||
|
"\tldrh r1, [r6, 0x24]\n"
|
||||||
|
"\tadds r0, r1\n"
|
||||||
|
"\tstrh r0, [r6, 0x24]\n"
|
||||||
|
"\tmovs r2, 0x24\n"
|
||||||
|
"\tldrsh r4, [r6, r2]\n"
|
||||||
|
"\tmovs r3, 0x20\n"
|
||||||
|
"\tldrsh r0, [r6, r3]\n"
|
||||||
|
"\tadds r4, r0\n"
|
||||||
|
"\tmov r1, r10\n"
|
||||||
|
"\tldrb r0, [r1]\n"
|
||||||
|
"\tmovs r1, 0\n"
|
||||||
|
"\tbl GetBattlerSpriteCoord\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r0, 24\n"
|
||||||
|
"\tadds r3, r5, 0\n"
|
||||||
|
"\tcmp r4, r0\n"
|
||||||
|
"\tblt _080E3E48\n"
|
||||||
|
"\tmovs r2, 0\n"
|
||||||
|
"\tstrh r2, [r6, 0x24]\n"
|
||||||
|
"\tb _080E3E48\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080E3E04: .4byte gTasks\n"
|
||||||
|
"_080E3E08: .4byte gBattleAnimAttacker\n"
|
||||||
|
"_080E3E0C: .4byte gSprites\n"
|
||||||
|
"_080E3E10:\n"
|
||||||
|
"\tldr r1, _080E3E7C @ =gSprites\n"
|
||||||
|
"\tlsls r5, r7, 4\n"
|
||||||
|
"\tadds r0, r5, r7\n"
|
||||||
|
"\tlsls r0, 2\n"
|
||||||
|
"\tadds r6, r0, r1\n"
|
||||||
|
"\tldrh r1, [r2, 0xA]\n"
|
||||||
|
"\tlsls r1, 16\n"
|
||||||
|
"\tasrs r1, 24\n"
|
||||||
|
"\tldrh r0, [r6, 0x24]\n"
|
||||||
|
"\tsubs r0, r1\n"
|
||||||
|
"\tstrh r0, [r6, 0x24]\n"
|
||||||
|
"\tmovs r3, 0x24\n"
|
||||||
|
"\tldrsh r4, [r6, r3]\n"
|
||||||
|
"\tmovs r1, 0x20\n"
|
||||||
|
"\tldrsh r0, [r6, r1]\n"
|
||||||
|
"\tadds r4, r0\n"
|
||||||
|
"\tmov r2, r10\n"
|
||||||
|
"\tldrb r0, [r2]\n"
|
||||||
|
"\tmovs r1, 0\n"
|
||||||
|
"\tbl GetBattlerSpriteCoord\n"
|
||||||
|
"\tlsls r0, 24\n"
|
||||||
|
"\tlsrs r0, 24\n"
|
||||||
|
"\tadds r3, r5, 0\n"
|
||||||
|
"\tcmp r4, r0\n"
|
||||||
|
"\tbgt _080E3E48\n"
|
||||||
|
"\tmovs r4, 0\n"
|
||||||
|
"\tstrh r4, [r6, 0x24]\n"
|
||||||
|
"_080E3E48:\n"
|
||||||
|
"\tldr r1, _080E3E80 @ =gTasks\n"
|
||||||
|
"\tmov r0, r9\n"
|
||||||
|
"\tadd r0, r8\n"
|
||||||
|
"\tlsls r0, 3\n"
|
||||||
|
"\tadds r0, r1\n"
|
||||||
|
"\tldrb r1, [r0, 0xA]\n"
|
||||||
|
"\tstrh r1, [r0, 0xA]\n"
|
||||||
|
"\tldr r1, _080E3E7C @ =gSprites\n"
|
||||||
|
"\tadds r0, r3, r7\n"
|
||||||
|
"\tlsls r0, 2\n"
|
||||||
|
"\tadds r0, r1\n"
|
||||||
|
"\tmovs r1, 0x24\n"
|
||||||
|
"\tldrsh r0, [r0, r1]\n"
|
||||||
|
"\tcmp r0, 0\n"
|
||||||
|
"\tbne _080E3E6C\n"
|
||||||
|
"\tmov r0, r8\n"
|
||||||
|
"\tbl DestroyAnimVisualTask\n"
|
||||||
|
"_080E3E6C:\n"
|
||||||
|
"\tadd sp, 0x1C\n"
|
||||||
|
"\tpop {r3-r5}\n"
|
||||||
|
"\tmov r8, r3\n"
|
||||||
|
"\tmov r9, r4\n"
|
||||||
|
"\tmov r10, r5\n"
|
||||||
|
"\tpop {r4-r7}\n"
|
||||||
|
"\tpop {r0}\n"
|
||||||
|
"\tbx r0\n"
|
||||||
|
"\t.align 2, 0\n"
|
||||||
|
"_080E3E7C: .4byte gSprites\n"
|
||||||
|
"_080E3E80: .4byte gTasks\n");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void sub_80E3E84(struct Sprite *sprite)
|
void sub_80E3E84(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
#define LOHALF(n) ((n) & 0xFFFF)
|
#define LOHALF(n) ((n) & 0xFFFF)
|
||||||
|
|
||||||
// IWRAM
|
// IWRAM
|
||||||
EWRAM_DATA u16 gUnknown_3005424 = 0;
|
EWRAM_DATA int gUnknown_3005424 = 0;
|
||||||
EWRAM_DATA u16 gUnknown_3005428 = 0;
|
EWRAM_DATA u16 gUnknown_3005428 = 0;
|
||||||
EWRAM_DATA u16 gUnknown_300542C = 0;
|
EWRAM_DATA u16 gUnknown_300542C = 0;
|
||||||
|
|
||||||
@@ -104,8 +104,6 @@ static void PremierBallOpenParticleAnimation(u8);
|
|||||||
static void sub_80F1B3C(struct Sprite *);
|
static void sub_80F1B3C(struct Sprite *);
|
||||||
|
|
||||||
// Data
|
// Data
|
||||||
extern const struct SpriteTemplate gBallSpriteTemplates[]; //for now
|
|
||||||
|
|
||||||
struct BallCaptureSuccessStarData
|
struct BallCaptureSuccessStarData
|
||||||
{
|
{
|
||||||
s8 xOffset;
|
s8 xOffset;
|
||||||
@@ -910,8 +908,8 @@ static void sub_80EFA0C(struct Sprite *sprite)
|
|||||||
PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
|
PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
|
||||||
gTasks[taskId].data[10] = 256;
|
gTasks[taskId].data[10] = 256;
|
||||||
gUnknown_3005424 = 28;
|
gUnknown_3005424 = 28;
|
||||||
gUnknown_300542C = (gSprites[spriteId].pos2.y + gSprites[spriteId].pos1.y) - (sprite->pos2.y + sprite->pos1.y);
|
gUnknown_300542C = (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) - (sprite->pos1.y + sprite->pos2.y);
|
||||||
gUnknown_3005428 = (gUnknown_300542C * 256) / 28;
|
gUnknown_3005428 = (u32)(gUnknown_300542C * 256) / 28;
|
||||||
gTasks[taskId].data[2] = gUnknown_3005428;
|
gTasks[taskId].data[2] = gUnknown_3005428;
|
||||||
gTasks[taskId].data[0]++;
|
gTasks[taskId].data[0]++;
|
||||||
break;
|
break;
|
||||||
@@ -1876,20 +1874,11 @@ static void DestroyBallOpenAnimationParticle(struct Sprite *sprite)
|
|||||||
gBattleSpritesDataPtr->animationData->field_A--;
|
gBattleSpritesDataPtr->animationData->field_A--;
|
||||||
if (gBattleSpritesDataPtr->animationData->field_A == 0)
|
if (gBattleSpritesDataPtr->animationData->field_A == 0)
|
||||||
{
|
{
|
||||||
for (i = 0; i < POKEBALL_COUNT; i++)
|
for (j = 0; j < POKEBALL_COUNT; j++)
|
||||||
{
|
{
|
||||||
if (FuncIsActiveTask(gBallParticleAnimationFuncs[i]) == TRUE)
|
FreeSpriteTilesByTag(gBallParticleSpritesheets[j].tag);
|
||||||
break;
|
FreeSpritePaletteByTag(gBallParticlePalettes[j].tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i == POKEBALL_COUNT)
|
|
||||||
{
|
|
||||||
for (j = 0; j < POKEBALL_COUNT; j++)
|
|
||||||
{
|
|
||||||
FreeSpriteTilesByTag(gBallParticleSpritesheets[j].tag);
|
|
||||||
FreeSpritePaletteByTag(gBallParticlePalettes[j].tag);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DestroySprite(sprite);
|
DestroySprite(sprite);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -205,8 +205,8 @@ const struct SpriteTemplate gSpriteTemplate_83BF514 =
|
|||||||
.callback = sub_8076ED8,
|
.callback = sub_8076ED8,
|
||||||
};
|
};
|
||||||
|
|
||||||
const u8 gUnknown_83BF52C[] = _("TASK OVER\n");
|
//const u8 gUnknown_83BF52C[] = _("TASK OVER\nタスクがオーバーしました"); //wont compile...?
|
||||||
const u8 gUnknown_83BF536[] = {0x60, 0x5D, 0x58, 0x37, 0x55, 0xAE, 0x96, 0xAE, 0x0C, 0x1F, 0x0C, 0x10, 0xFF}; //
|
const u8 gUnknown_83BF52C[] = {0xCE, 0xBB, 0xCD, 0xC5, 0x00, 0xC9, 0xD0, 0xBF, 0xCC, 0xFE, 0x60, 0x5D, 0x58, 0x37, 0x55, 0xAE, 0x96, 0xAE, 0x0C, 0x1F, 0x0C, 0x10, 0xFF};
|
||||||
|
|
||||||
static const struct Subsprite gSubsprites_83BF544[] =
|
static const struct Subsprite gSubsprites_83BF544[] =
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user