summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2021-07-02 08:42:08 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2021-07-02 08:42:08 -0400
commitdc8ffd46558805211bfe2646f27caafd2250b5d6 (patch)
tree0ad7f5c73bf867d22fd8304c109091ce82a4a1a7
parent6c91368e83e8399a03b8ec97493e6a5d8286db37 (diff)
Match sub_80D3B60
-rw-r--r--include/battle_anim.h7
-rw-r--r--include/rom_8077ABC.h2
-rw-r--r--src/battle/anim/water.c276
-rw-r--r--src/battle_anim.c26
4 files changed, 22 insertions, 289 deletions
diff --git a/include/battle_anim.h b/include/battle_anim.h
index aee761a1f..1252886bf 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -31,13 +31,6 @@ enum
BATTLER_COORD_ATTR_RAW_BOTTOM,
};
-struct UnknownStruct2
-{
- void *unk0;
- u16 *unk4;
- u8 unk8;
-};
-
struct ContestMoveAnim
{
u16 species;
diff --git a/include/rom_8077ABC.h b/include/rom_8077ABC.h
index 851098bd6..c4cdfd7ad 100644
--- a/include/rom_8077ABC.h
+++ b/include/rom_8077ABC.h
@@ -38,7 +38,7 @@ bool8 IsBankSpritePresent(u8);
bool8 IsDoubleBattle();
u8 IsDoubleBattle(void);
bool8 IsDoubleBattle(void);
-void sub_8078914();
+void sub_8078914(struct Struct_sub_8078914 * unk);
u8 sub_80789BC();
void InitSpriteDataForLinearTranslation(struct Sprite *sprite);
void InitAnimLinearTranslation(struct Sprite *sprite);
diff --git a/src/battle/anim/water.c b/src/battle/anim/water.c
index df230b320..9b7fcf317 100644
--- a/src/battle/anim/water.c
+++ b/src/battle/anim/water.c
@@ -355,19 +355,15 @@ void AnimTask_CreateSurfWave(u8 taskId)
gTasks[taskId].func = sub_80D3B60;
}
-#ifdef NONMATCHING
void sub_80D3B60(u8 taskId)
{
- struct Struct_sub_8078914 unk;
vu8 cpuDelay; // yet again
+ struct Struct_sub_8078914 unk;
u8 i;
u16 rgbBuffer;
u16 *BGptrX = &gBattle_BG1_X;
u16 *BGptrY = &gBattle_BG1_Y;
- s16 unkUse;
- u32 palOffset;
- u16 palNum;
*BGptrX += gTasks[taskId].data[0];
*BGptrY += gTasks[taskId].data[1];
@@ -378,9 +374,7 @@ void sub_80D3B60(u8 taskId)
rgbBuffer = gPlttBufferFaded[unk.field_8 * 16 + 7];
for (i = 6; i != 0; i--)
{
- palNum = unk.field_8 * 16;
- palOffset = 1 + i;
- gPlttBufferFaded[palNum + palOffset] = gPlttBufferFaded[palNum + palOffset - 1];
+ gPlttBufferFaded[unk.field_8 * 16 + 1 + i] = gPlttBufferFaded[unk.field_8 * 16 + 1 + i - 1];
}
gPlttBufferFaded[unk.field_8 * 16 + 1] = rgbBuffer;
gTasks[taskId].data[5] = 0;
@@ -389,16 +383,15 @@ void sub_80D3B60(u8 taskId)
{
// there is some weird math going on here
gTasks[taskId].data[6] = 0;
- unkUse = ++gTasks[taskId].data[3];
- if (unkUse <= 13)
+ if (++gTasks[taskId].data[3] <= 13)
{
- gTasks[gTasks[taskId].data[15]].data[1] = unkUse | ((16 - unkUse) * 256);
+ gTasks[gTasks[taskId].data[15]].data[1] = gTasks[taskId].data[3] | ((16 - gTasks[taskId].data[3]) << 8);
gTasks[taskId].data[4]++;
}
if (gTasks[taskId].data[3] > 54)
{
- unkUse = --gTasks[taskId].data[4];
- gTasks[gTasks[taskId].data[15]].data[1] = unkUse | ((16 - unkUse) * 256);
+ gTasks[taskId].data[4]--;
+ gTasks[gTasks[taskId].data[15]].data[1] = gTasks[taskId].data[4] | ((16 - gTasks[taskId].data[4]) << 8);
}
}
if (!(gTasks[gTasks[taskId].data[15]].data[1] & 0x1F))
@@ -407,8 +400,8 @@ void sub_80D3B60(u8 taskId)
cpuDelay = 0; // stall the CPU
cpuDelay = 0; // stall the CPU
Dma3FillLarge32_(0, unk.field_4, 0x1000); // !
- if (!IsContest)
- REG_BG1CNT_BITFIELD.charBaseBlock = 1;
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 0;
*BGptrX = 0;
*BGptrY = 0;
@@ -419,259 +412,6 @@ void sub_80D3B60(u8 taskId)
DestroyAnimVisualTask(taskId);
}
}
-#else
-NAKED
-void sub_80D3B60(u8 taskId)
-{
- asm_unified("push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x18\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- ldr r0, =gTasks\n\
- lsls r4, r7, 2\n\
- adds r4, r7\n\
- lsls r4, 3\n\
- adds r4, r0\n\
- ldrh r0, [r4, 0x8]\n\
- ldr r1, =gBattle_BG1_X\n\
- ldrh r1, [r1]\n\
- adds r0, r1\n\
- ldr r2, =gBattle_BG1_X\n\
- strh r0, [r2]\n\
- ldrh r0, [r4, 0xA]\n\
- ldr r3, =gBattle_BG1_Y\n\
- ldrh r3, [r3]\n\
- adds r0, r3\n\
- ldr r1, =gBattle_BG1_Y\n\
- strh r0, [r1]\n\
- add r5, sp, 0x4\n\
- adds r0, r5, 0\n\
- bl sub_8078914\n\
- ldrh r0, [r4, 0xA]\n\
- ldrh r2, [r4, 0xC]\n\
- adds r0, r2\n\
- strh r0, [r4, 0xC]\n\
- ldrh r0, [r4, 0x12]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x12]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- mov r10, r5\n\
- cmp r0, 0x4\n\
- bne _080D3C02\n\
- ldr r1, =gPlttBufferFaded\n\
- ldrb r0, [r5, 0x8]\n\
- lsls r0, 4\n\
- adds r0, 0x7\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldrh r6, [r0]\n\
- movs r2, 0x6\n\
- adds r5, r1, 0\n\
- adds r3, r5, 0\n\
- mov r4, r10\n\
-_080D3BC8:\n\
- ldrb r0, [r4, 0x8]\n\
- lsls r0, 4\n\
- adds r1, r2, 0x1\n\
- adds r0, r1\n\
- lsls r1, r0, 1\n\
- adds r1, r3\n\
- subs r0, 0x1\n\
- lsls r0, 1\n\
- adds r0, r3\n\
- ldrh r0, [r0]\n\
- strh r0, [r1]\n\
- subs r0, r2, 0x1\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- cmp r2, 0\n\
- bne _080D3BC8\n\
- mov r3, r10\n\
- ldrb r0, [r3, 0x8]\n\
- lsls r0, 4\n\
- adds r0, 0x1\n\
- lsls r0, 1\n\
- adds r0, r5\n\
- strh r6, [r0]\n\
- ldr r1, =gTasks\n\
- lsls r0, r7, 2\n\
- adds r0, r7\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- strh r2, [r0, 0x12]\n\
-_080D3C02:\n\
- ldr r1, =gTasks\n\
- lsls r2, r7, 2\n\
- adds r0, r2, r7\n\
- lsls r0, 3\n\
- adds r3, r0, r1\n\
- ldrh r0, [r3, 0x14]\n\
- adds r0, 0x1\n\
- strh r0, [r3, 0x14]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- adds r4, r1, 0\n\
- str r2, [sp, 0x14]\n\
- cmp r0, 0x1\n\
- ble _080D3C70\n\
- movs r0, 0\n\
- strh r0, [r3, 0x14]\n\
- ldrh r0, [r3, 0xE]\n\
- adds r2, r0, 0x1\n\
- strh r2, [r3, 0xE]\n\
- lsls r0, r2, 16\n\
- asrs r0, 16\n\
- cmp r0, 0xD\n\
- bgt _080D3C4C\n\
- movs r1, 0x26\n\
- ldrsh r0, [r3, r1]\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 3\n\
- adds r1, r4\n\
- movs r0, 0x10\n\
- subs r0, r2\n\
- lsls r0, 8\n\
- orrs r2, r0\n\
- strh r2, [r1, 0xA]\n\
- ldrh r0, [r3, 0x10]\n\
- adds r0, 0x1\n\
- strh r0, [r3, 0x10]\n\
-_080D3C4C:\n\
- movs r2, 0xE\n\
- ldrsh r0, [r3, r2]\n\
- cmp r0, 0x36\n\
- ble _080D3C70\n\
- ldrh r2, [r3, 0x10]\n\
- subs r2, 0x1\n\
- strh r2, [r3, 0x10]\n\
- movs r1, 0x26\n\
- ldrsh r0, [r3, r1]\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 3\n\
- adds r1, r4\n\
- movs r0, 0x10\n\
- subs r0, r2\n\
- lsls r0, 8\n\
- orrs r2, r0\n\
- strh r2, [r1, 0xA]\n\
-_080D3C70:\n\
- ldr r2, [sp, 0x14]\n\
- adds r0, r2, r7\n\
- lsls r0, 3\n\
- adds r0, r4\n\
- movs r3, 0x26\n\
- ldrsh r1, [r0, r3]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- adds r0, r4\n\
- ldrh r1, [r0, 0xA]\n\
- movs r0, 0x1F\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080D3D32\n\
- ldr r2, [sp, 0x4]\n\
- movs r3, 0x80\n\
- lsls r3, 6\n\
- add r6, sp, 0x10\n\
- movs r5, 0\n\
- ldr r1, =0x040000d4\n\
- movs r4, 0x80\n\
- lsls r4, 5\n\
- mov r8, r6\n\
- ldr r0, =0x85000400\n\
- mov r12, r0\n\
- movs r0, 0x85\n\
- lsls r0, 24\n\
- mov r9, r0\n\
-_080D3CAA:\n\
- str r5, [sp, 0x10]\n\
- mov r0, r8\n\
- str r0, [r1]\n\
- str r2, [r1, 0x4]\n\
- mov r0, r12\n\
- str r0, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- adds r2, r4\n\
- subs r3, r4\n\
- cmp r3, r4\n\
- bhi _080D3CAA\n\
- str r5, [sp, 0x10]\n\
- str r6, [r1]\n\
- str r2, [r1, 0x4]\n\
- lsrs r0, r3, 2\n\
- mov r2, r9\n\
- orrs r0, r2\n\
- str r0, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- mov r0, sp\n\
- movs r1, 0\n\
- strb r1, [r0]\n\
- strb r1, [r0]\n\
- mov r3, r10\n\
- ldr r1, [r3, 0x4]\n\
- movs r4, 0\n\
- str r4, [sp, 0x10]\n\
- ldr r0, =0x040000d4\n\
- str r6, [r0]\n\
- str r1, [r0, 0x4]\n\
- ldr r1, =0x85000400\n\
- str r1, [r0, 0x8]\n\
- ldr r0, [r0, 0x8]\n\
- bl IsContest\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _080D3D02\n\
- ldr r2, =0x0400000a\n\
- ldrb r1, [r2]\n\
- movs r0, 0xD\n\
- negs r0, r0\n\
- ands r0, r1\n\
- strb r0, [r2]\n\
-_080D3D02:\n\
- ldr r0,=gBattle_BG1_X\n\
- strh r4, [r0]\n\
- ldr r1, =gBattle_BG1_Y\n\
- strh r4, [r1]\n\
- ldr r0, =0x04000050\n\
- strh r4, [r0]\n\
- adds r0, 0x2\n\
- strh r4, [r0]\n\
- ldr r2, =gTasks\n\
- ldr r3, [sp, 0x14]\n\
- adds r0, r3, r7\n\
- lsls r0, 3\n\
- adds r0, r2\n\
- movs r3, 0x26\n\
- ldrsh r1, [r0, r3]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- adds r0, r2\n\
- ldr r1, =0x0000ffff\n\
- strh r1, [r0, 0x26]\n\
- adds r0, r7, 0\n\
- bl DestroyAnimVisualTask\n\
-_080D3D32:\n\
- add sp, 0x18\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
- .pool");
-}
-#endif
void sub_80D3D68(u8 taskId)
{
diff --git a/src/battle_anim.c b/src/battle_anim.c
index 15883c502..3c9062165 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -1925,14 +1925,14 @@ void MoveBattlerSpriteToBG(u8 bank, u8 toBG_2)
if (toBG_2 == 0)
{
volatile u8 pointlessZero;
- struct UnknownStruct2 s;
+ struct Struct_sub_8078914 s;
u8 r2;
sub_8078914(&s);
- DmaFill32Large(3, 0, s.unk0, 0x2000, 0x1000);
+ DmaFill32Large(3, 0, s.field_0, 0x2000, 0x1000);
pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in?
pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in?
- DmaFill16Defvars(3, 0xFF, (void *)s.unk4, 0x1000);
+ DmaFill16Defvars(3, 0xFF, (void *)s.field_4, 0x1000);
REG_BG1CNT_BITFIELD.priority = 2;
REG_BG1CNT_BITFIELD.screenSize = 1;
@@ -1948,14 +1948,14 @@ void MoveBattlerSpriteToBG(u8 bank, u8 toBG_2)
REG_BG1HOFS = gBattle_BG1_X;
REG_BG1VOFS = gBattle_BG1_Y;
- LoadPalette(gPlttBufferUnfaded + 0x100 + bank * 16, s.unk8 * 16, 32);
- DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + bank * 16, (u16 *)PLTT + s.unk8 * 16, 32);
+ LoadPalette(gPlttBufferUnfaded + 0x100 + bank * 16, s.field_8 * 16, 32);
+ DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + bank * 16, (u16 *)PLTT + s.field_8 * 16, 32);
if (IsContest())
r2 = 0;
else
r2 = GetBattlerPosition(bank);
- sub_80E4EF8(0, 0, r2, s.unk8, (u32)s.unk0, (((s32)s.unk4 - VRAM) / 2048), REG_BG1CNT_BITFIELD.charBaseBlock);
+ sub_80E4EF8(0, 0, r2, s.field_8, (u32)s.field_0, (((s32)s.field_4 - VRAM) / 2048), REG_BG1CNT_BITFIELD.charBaseBlock);
if (IsContest())
sub_8076380();
}
@@ -1991,13 +1991,13 @@ static void sub_8076380(void)
{
int i;
int j;
- struct UnknownStruct2 s;
+ struct Struct_sub_8078914 s;
u16 *ptr;
if (IsSpeciesNotUnown(gContestResources__moveAnim.species))
{
sub_8078914(&s);
- ptr = s.unk4;
+ ptr = (u16 *)s.field_4;
for (i = 0; i < 8; i++)
{
for (j = 0; j < 4; j++)
@@ -2037,15 +2037,15 @@ void sub_80763FC(u16 a, u16 *b, u32 c, u8 d)
void sub_8076464(u8 a)
{
volatile u8 pointlessZero;
- struct UnknownStruct2 s;
+ struct Struct_sub_8078914 s;
sub_8078914(&s);
if (a == 0 || IsContest())
{
- DmaFill32Large(3, 0, s.unk0, 0x2000, 0x1000);
+ DmaFill32Large(3, 0, s.field_0, 0x2000, 0x1000);
pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in?
pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in?
- DmaFill32Defvars(3, 0, s.unk4, 0x800);
+ DmaFill32Defvars(3, 0, s.field_4, 0x800);
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
}
@@ -2064,7 +2064,7 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId)
{
u8 spriteId, palIndex;
s16 x, y;
- struct UnknownStruct2 s;
+ struct Struct_sub_8078914 s;
spriteId = gTasks[taskId].data[0];
palIndex = gTasks[taskId].data[6];
@@ -2076,7 +2076,7 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId)
{
gBattle_BG1_X = x + gTasks[taskId].data[3];
gBattle_BG1_Y = y + gTasks[taskId].data[4];
- DmaCopy32Defvars(3, gPlttBufferFaded + 0x100 + palIndex * 16, gPlttBufferFaded + 0x100 + s.unk8 * 16 - 256, 32);
+ DmaCopy32Defvars(3, gPlttBufferFaded + 0x100 + palIndex * 16, gPlttBufferFaded + 0x100 + s.field_8 * 16 - 256, 32);
}
else
{