summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvan <eroelke@gmail.com>2019-12-04 07:46:49 -0700
committerEvan <eroelke@gmail.com>2019-12-04 07:46:49 -0700
commit00577da2e14b64f2289dbac92ca8dd3943259dcb (patch)
tree95e8eaa56440f0ec2dac8af2b484069e0526a11a /src
parent11b4456aa549c148a822cadf13231cbd8112c896 (diff)
match battle_anim funcs
Diffstat (limited to 'src')
-rw-r--r--src/battle_anim.c104
1 files changed, 70 insertions, 34 deletions
diff --git a/src/battle_anim.c b/src/battle_anim.c
index de5f08f38..6510003e0 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -2165,52 +2165,83 @@ static void ScriptCmd_monbg(void)
u8 taskId;
u8 battlerId;
u8 animBattler;
+ u8 position;
+ u8 spriteId;
sBattleAnimScriptPtr++;
-
animBattler = sBattleAnimScriptPtr[0];
- if (animBattler & ANIM_TARGET)
- battlerId = gBattleAnimTarget;
- else
- battlerId = gBattleAnimAttacker;
+ if (animBattler == 0)
+ animBattler = 2;
+ else if (animBattler == 1)
+ animBattler = 3;
+ if (animBattler == 0 || animBattler == 2)
+ battlerId = gBattleAnimAttacker;
+ else
+ battlerId = gBattleAnimTarget;
+
if (IsBattlerSpriteVisible(battlerId))
{
- u8 position = GetBattlerPosition(battlerId);
- toBG_2 = TRUE;
- if (position < B_POSITION_OPPONENT_LEFT) // || position == B_POSITION_PLAYER_RIGHT)
+ position = ((GetBattlerPosition(battlerId) << 0x18) + 0xFF000000) >> 0x18; //make human code
+ if (position <= B_POSITION_OPPONENT_LEFT)
toBG_2 = FALSE;
+ else
+ toBG_2 = TRUE;
MoveBattlerSpriteToBG(battlerId, toBG_2);
+ spriteId = gBattlerSpriteIds[battlerId];
taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
- gAnimVisualTaskCount++;
- gTasks[taskId].data[t1_MONBG_BATTLER] = battlerId;
- gTasks[taskId].data[t1_MON_IN_BG2] = toBG_2;
- gTasks[taskId].data[t1_CREATE_ANOTHER_TASK] = TRUE;
- gTasks[taskId].data[t1_IS_SECONDMON_BG] = 0;
+ gTasks[taskId].data[t1_MONBG_BATTLER] = spriteId;
+ gTasks[taskId].data[1] = gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x;
+ gTasks[taskId].data[2] = gSprites[spriteId].pos2.y + gSprites[spriteId].pos1.y;
+ if (!toBG_2)
+ {
+ gTasks[taskId].data[3] = gBattle_BG1_X;
+ gTasks[taskId].data[4] = gBattle_BG1_Y;
+ }
+ else
+ {
+ gTasks[taskId].data[3] = gBattle_BG2_X;
+ gTasks[taskId].data[4] = gBattle_BG2_Y;
+ }
+ gTasks[taskId].data[5] = toBG_2;
+ gTasks[taskId].data[6] = battlerId;
+ sMonAnimTaskIdArray[0] = taskId;
}
battlerId ^= BIT_FLANK;
- if (IsBattlerSpriteVisible(battlerId))
+ if (animBattler > 1 && IsBattlerSpriteVisible(battlerId))
{
- u8 position = GetBattlerPosition(battlerId);
- toBG_2 = TRUE;
- if (position < B_POSITION_OPPONENT_LEFT) // || position == B_POSITION_PLAYER_RIGHT)
+ position = ((GetBattlerPosition(battlerId) << 0x18) + 0xFF000000) >> 0x18; //make human code
+ if (position <= B_POSITION_OPPONENT_LEFT)
toBG_2 = FALSE;
+ else
+ toBG_2 = TRUE;
MoveBattlerSpriteToBG(battlerId, toBG_2);
+ spriteId = gBattlerSpriteIds[battlerId];
taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
- gAnimVisualTaskCount++;
- gTasks[taskId].data[0] = battlerId;
- gTasks[taskId].data[1] = toBG_2;
- gTasks[taskId].data[t1_CREATE_ANOTHER_TASK] = TRUE;
- gTasks[taskId].data[t1_IS_SECONDMON_BG] = 1;
+ gTasks[taskId].data[t1_MONBG_BATTLER] = spriteId;
+ gTasks[taskId].data[1] = gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x;
+ gTasks[taskId].data[2] = gSprites[spriteId].pos2.y + gSprites[spriteId].pos1.y;
+ if (!toBG_2)
+ {
+ gTasks[taskId].data[3] = gBattle_BG1_X;
+ gTasks[taskId].data[4] = gBattle_BG1_Y;
+ }
+ else
+ {
+ gTasks[taskId].data[3] = gBattle_BG2_X;
+ gTasks[taskId].data[4] = gBattle_BG2_Y;
+ }
+
+ gTasks[taskId].data[5] = toBG_2;
+ gTasks[taskId].data[6] = battlerId;
+ sMonAnimTaskIdArray[1] = taskId;
}
sBattleAnimScriptPtr++;
- gAnimFramesToWait = 1;
- gAnimScriptCallback = WaitAnimFrameCount;
}
bool8 IsBattlerSpriteVisible(u8 battlerId)
@@ -2224,26 +2255,30 @@ bool8 IsBattlerSpriteVisible(u8 battlerId)
return FALSE;
}
+// re-check needed?
void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2)
{
struct BattleAnimBgData animBg;
u8 battlerSpriteId;
+ struct Sprite *sprite;
if (!toBG_2)
{
- u8 battlerPosition;
- RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(16)), 0x2000, 1);
- RequestDma3Fill(0xFF, (void*)(BG_SCREEN_ADDR(30)), 0x1000, 0);
+ RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(8)), 0x2000, 1);
+ RequestDma3Fill(0xFF, (void*)(BG_SCREEN_ADDR(28)), 0x1000, 0);
sub_80752A0(&animBg);
- CpuFill16(0, animBg.bgTiles, 0x1000);
- CpuFill16(0xFF, animBg.bgTilemap, 0x800);
+ CpuFill16(toBG_2, animBg.bgTiles, 0x1000);
+ CpuFill16(toBG_2, animBg.bgTilemap, 0x800);
SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 2);
SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 1);
SetAnimBgAttribute(1, BG_ANIM_AREA_OVERFLOW_MODE, 0);
battlerSpriteId = gBattlerSpriteIds[battlerId];
+ gBattle_BG1_X = -(gSprites[battlerSpriteId].pos1.x + gSprites[battlerSpriteId].pos2.x) + 0x20;
+ gBattle_BG1_Y = -(gSprites[battlerSpriteId].pos1.y + gSprites[battlerSpriteId].pos2.y) + 0x20;
+ gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
@@ -2251,9 +2286,7 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2)
LoadPalette(&gPlttBufferUnfaded[0x100 + battlerId * 16], animBg.paletteId * 16, 0x20);
CpuCopy32(&gPlttBufferUnfaded[0x100 + battlerId * 16], (void*)(BG_PLTT + animBg.paletteId * 32), 0x20);
- battlerPosition = GetBattlerPosition(battlerId);
-
- sub_80BCEF4(1, 0, 0, battlerPosition, animBg.paletteId, animBg.bgTiles, animBg.bgTilemap, animBg.tilesOffset);
+ sub_80BCEF4(1, 0, 0, GetBattlerPosition(battlerId), animBg.paletteId, animBg.bgTiles, animBg.bgTilemap, animBg.tilesOffset);
}
else
{
@@ -2261,15 +2294,15 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2)
RequestDma3Fill(0, (void*)(BG_SCREEN_ADDR(30)), 0x1000, 1);
sub_80752C8(&animBg, 2);
CpuFill16(0, animBg.bgTiles + 0x1000, 0x1000);
- CpuFill16(0, animBg.bgTilemap + 0x400, 0x800);
+ CpuFill16(0, animBg.bgTilemap + 0x400, 0x400);
SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2);
SetAnimBgAttribute(2, BG_ANIM_SCREEN_SIZE, 1);
SetAnimBgAttribute(2, BG_ANIM_AREA_OVERFLOW_MODE, 0);
battlerSpriteId = gBattlerSpriteIds[battlerId];
-
gBattle_BG2_X = -(gSprites[battlerSpriteId].pos1.x + gSprites[battlerSpriteId].pos2.x) + 0x20;
gBattle_BG2_Y = -(gSprites[battlerSpriteId].pos1.y + gSprites[battlerSpriteId].pos2.y) + 0x20;
+ gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X);
SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y);
@@ -2285,6 +2318,7 @@ void sub_80730C0(u16 a, u16 *b, s32 c, u8 d)
{
s32 i, j;
s32 var;
+ s32 x;
if (d == 0)
var = 32;
@@ -2295,7 +2329,9 @@ void sub_80730C0(u16 a, u16 *b, s32 c, u8 d)
for (i = 0; i < var; i++)
{
for (j = 0; j < 32; j++)
+ {
b[j + i * 32] = ((b[j + i * 32] & 0xFFF) | a) + c;
+ }
}
}