summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgarakmon <thomastaps194@comcast.net>2018-07-31 18:47:47 -0400
committergarakmon <thomastaps194@comcast.net>2018-07-31 18:47:47 -0400
commit48c955e399ba841daf38cf85870429d5bcc7a6f5 (patch)
treec47f68d85186d16918596190530ddc386f7cfe16 /src
parent94e54887d42bdfd563923d6f3bc72005c1411e51 (diff)
a few more functions in ice
so far: 26 matching 5 nonmatching (1 NAKED)
Diffstat (limited to 'src')
-rw-r--r--src/battle/anim/ice.c667
1 files changed, 64 insertions, 603 deletions
diff --git a/src/battle/anim/ice.c b/src/battle/anim/ice.c
index 2e005e606..5a0acd10c 100644
--- a/src/battle/anim/ice.c
+++ b/src/battle/anim/ice.c
@@ -10,6 +10,8 @@
#include "palette.h"
#include "random.h"
+//#include "gba/defines.h"
+
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
@@ -53,7 +55,7 @@ void sub_80D8F74(struct Sprite *sprite);
void sub_80D81E0(u8 taskId); // static?
void sub_80D851C(u8 taskId);
void sub_80D8AF8(u8 taskId);
-void sub_80D8BA8(u8 taskId);
+void sub_80D8BA8(u8 spriteId, u8 taskId, u8 a3, u8 a4);//(u8 taskId);
const union AnimCmd gSpriteAnim_83D9B58[] =
{
@@ -534,6 +536,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9F0C =
* mist, powder snow, sheer cold,
*/
+
#ifdef NONMATCHING
// NOT EQUIVALENT
void sub_80D7704(struct Sprite *sprite)
@@ -987,7 +990,7 @@ void sub_80D7C8C(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
-// MATCHED
+// MATCHING
void sub_80D7CD4(struct Sprite *sprite)
{
int i;
@@ -1183,27 +1186,22 @@ void sub_80D8048(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
-#ifdef NONMATCHING
-// haze?
-//
-void sub_80D80E0(u8 taskId)//??
+// used in haze?
+// MATCHING
+void sub_80D80E0(u8 taskId)
{
struct Struct_sub_8078914 subStruct;
- //
- REG_BLDCNT = 0x3F42; // +
- REG_BLDALPHA = 0x1000; // +
+ REG_BLDCNT = 0x3F42;
+ REG_BLDALPHA = 0x1000;
- //
- REG_BG1CNT_BITFIELD.priority = 1;//charBaseBlock = 1; // normal.c <1131>
+ REG_BG1CNT_BITFIELD.priority = 1;
- REG_BG1CNT_BITFIELD.screenSize = 0; // + // dark.c <844>
+ REG_BG1CNT_BITFIELD.screenSize = 0;
- // this bit is different
if (!IsContest())
REG_BG1CNT_BITFIELD.charBaseBlock = 1;
- //
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
@@ -1212,140 +1210,19 @@ void sub_80D80E0(u8 taskId)//??
sub_8078914(&subStruct);
- // <-- ?
DmaFill32Defvars(3, 0, subStruct.field_4, 0x1000);
- DmaCopy32Defvars(3, &gWeatherFog1Tiles, subStruct.field_0, 0x1000);
+ DmaCopy16Defvars(3, &gWeatherFog1Tiles, subStruct.field_0, 0x800);
LZDecompressVram(&gBattleAnimFogTilemap, subStruct.field_4);
- // ? -->
LoadPalette(&gUnknown_083970E8, subStruct.field_8 * 16, 32);
- if (IsContest()) // +
- sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0); // +
-
- //
- gTasks[taskId].func = sub_80D81E0; // +
+ if (IsContest())
+ sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0);
+
+ gTasks[taskId].func = sub_80D81E0;
}
-#else
-NAKED void sub_80D80E0(u8 taskId)
-{
- asm_unified(".equ REG_BLDCNT, 0x4000050\n"
- ".equ REG_BG1CNT, 0x400000A\n"
- ".equ REG_BG1HOFS, 0x4000014\n"
- "\tpush {r4,r5,lr}\n"
- "\tsub sp, 0x10\n"
- "\tlsls r0, 24\n"
- "\tlsrs r5, r0, 24\n"
- "\tldr r1, _080D81A8 @ =REG_BLDCNT\n"
- "\tldr r2, _080D81AC @ =0x00003f42\n"
- "\tadds r0, r2, 0\n"
- "\tstrh r0, [r1]\n"
- "\tadds r1, 0x2\n"
- "\tmovs r2, 0x80\n"
- "\tlsls r2, 5\n"
- "\tadds r0, r2, 0\n"
- "\tstrh r0, [r1]\n"
- "\tldr r4, _080D81B0 @ =REG_BG1CNT\n"
- "\tldrb r1, [r4]\n"
- "\tmovs r0, 0x4\n"
- "\tnegs r0, r0\n"
- "\tands r0, r1\n"
- "\tmovs r1, 0x1\n"
- "\torrs r0, r1\n"
- "\tstrb r0, [r4]\n"
- "\tldrb r1, [r4, 0x1]\n"
- "\tmovs r0, 0x3F\n"
- "\tands r0, r1\n"
- "\tstrb r0, [r4, 0x1]\n"
- "\tbl IsContest\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbne _080D812A\n"
- "\tldrb r0, [r4]\n"
- "\tmovs r1, 0xD\n"
- "\tnegs r1, r1\n"
- "\tands r1, r0\n"
- "\tmovs r0, 0x4\n"
- "\torrs r1, r0\n"
- "\tstrb r1, [r4]\n"
- "_080D812A:\n"
- "\tldr r0, _080D81B4 @ =gBattle_BG1_X\n"
- "\tmovs r1, 0\n"
- "\tstrh r1, [r0]\n"
- "\tldr r0, _080D81B8 @ =gBattle_BG1_Y\n"
- "\tstrh r1, [r0]\n"
- "\tldr r0, _080D81BC @ =REG_BG1HOFS\n"
- "\tstrh r1, [r0]\n"
- "\tadds r0, 0x2\n"
- "\tstrh r1, [r0]\n"
- "\tmov r0, sp\n"
- "\tbl sub_8078914\n"
- "\tldr r1, [sp, 0x4]\n"
- "\tmovs r0, 0\n"
- "\tstr r0, [sp, 0xC]\n"
- "\tldr r0, _080D81C0 @ =0x040000d4\n"
- "\tadd r2, sp, 0xC\n"
- "\tstr r2, [r0]\n"
- "\tstr r1, [r0, 0x4]\n"
- "\tldr r2, _080D81C4 @ =0x85000400\n"
- "\tstr r2, [r0, 0x8]\n"
- "\tldr r2, [r0, 0x8]\n"
- "\tldr r2, _080D81C8 @ =gWeatherFog1Tiles\n"
- "\tldr r3, [sp]\n"
- "\tstr r2, [r0]\n"
- "\tstr r3, [r0, 0x4]\n"
- "\tldr r2, _080D81CC @ =0x80000400\n"
- "\tstr r2, [r0, 0x8]\n"
- "\tldr r0, [r0, 0x8]\n"
- "\tldr r0, _080D81D0 @ =gBattleAnimFogTilemap\n"
- "\tbl LZDecompressVram\n"
- "\tldr r0, _080D81D4 @ =gUnknown_083970E8\n"
- "\tmov r1, sp\n"
- "\tldrb r1, [r1, 0x8]\n"
- "\tlsls r1, 4\n"
- "\tmovs r2, 0x20\n"
- "\tbl LoadPalette\n"
- "\tbl IsContest\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbeq _080D8190\n"
- "\tmov r0, sp\n"
- "\tldrb r0, [r0, 0x8]\n"
- "\tldr r1, [sp, 0x4]\n"
- "\tmovs r2, 0\n"
- "\tmovs r3, 0\n"
- "\tbl sub_80763FC\n"
- "_080D8190:\n"
- "\tldr r0, _080D81D8 @ =gTasks\n"
- "\tlsls r1, r5, 2\n"
- "\tadds r1, r5\n"
- "\tlsls r1, 3\n"
- "\tadds r1, r0\n"
- "\tldr r0, _080D81DC @ =sub_80D81E0\n"
- "\tstr r0, [r1]\n"
- "\tadd sp, 0x10\n"
- "\tpop {r4,r5}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.align 2, 0\n"
- "_080D81A8: .4byte REG_BLDCNT\n"
- "_080D81AC: .4byte 0x00003f42\n"
- "_080D81B0: .4byte REG_BG1CNT\n"
- "_080D81B4: .4byte gBattle_BG1_X\n"
- "_080D81B8: .4byte gBattle_BG1_Y\n"
- "_080D81BC: .4byte REG_BG1HOFS\n"
- "_080D81C0: .4byte 0x040000d4\n"
- "_080D81C4: .4byte 0x85000400\n"
- "_080D81C8: .4byte gWeatherFog1Tiles\n"
- "_080D81CC: .4byte 0x80000400\n"
- "_080D81D0: .4byte gBattleAnimFogTilemap\n"
- "_080D81D4: .4byte gUnknown_083970E8\n"
- "_080D81D8: .4byte gTasks\n"
- "_080D81DC: .4byte sub_80D81E0");
-}
-#endif // NONMATCHING
//
// static void sub_80D81E0(u8 taskId);
@@ -1623,18 +1500,14 @@ void sub_80D83E0(struct Sprite *sprite)
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
}
-#ifdef NONMATCHING
-// write down the 0x85000400, 0x040000d4 offset keys
+// MATCHING
void sub_80D8414(u8 taskId)
{
- //
struct Struct_sub_8078914 subStruct;
- //
- REG_BLDCNT = 0x3F42; // +
- REG_BLDALPHA = 0x1000; // +
+ REG_BLDCNT = 0x3F42;
+ REG_BLDALPHA = 0x1000;
- //
REG_BG1CNT_BITFIELD.priority = 1;
REG_BG1CNT_BITFIELD.screenSize = 0;
@@ -1642,7 +1515,6 @@ void sub_80D8414(u8 taskId)
if (!IsContest())
REG_BG1CNT_BITFIELD.charBaseBlock = 1;
- //
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
@@ -1651,143 +1523,19 @@ void sub_80D8414(u8 taskId)
sub_8078914(&subStruct);
- // <-- ?
DmaFill32Defvars(3, 0, subStruct.field_4, 0x1000);
- DmaCopy32Defvars(3, &gWeatherFog1Tiles, subStruct.field_0, 0x1000);
+ DmaCopy16Defvars(3, &gWeatherFog1Tiles, subStruct.field_0, 0x800);
LZDecompressVram(&gBattleAnimFogTilemap, subStruct.field_4);
- // ? -->
LoadPalette(&gUnknown_083970E8, subStruct.field_8 * 16, 32);
- if (IsContest()) // +
- sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0); // +
+ if (IsContest())
+ sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0);
gTasks[taskId].data[15] = 0xFFFF;
gTasks[taskId].func = sub_80D851C;
}
-#else
-NAKED
-void sub_80D8414(u8 taskId)
-{
- asm_unified(".equ REG_BLDCNT, 0x4000050\n"
- ".equ REG_BG1CNT, 0x400000A\n"
- ".equ REG_BG1HOFS, 0x4000014\n"
- "\tpush {r4,r5,lr}\n"
- "\tsub sp, 0x10\n"
- "\tlsls r0, 24\n"
- "\tlsrs r5, r0, 24\n"
- "\tldr r1, _080D84E0 @ =REG_BLDCNT\n"
- "\tldr r2, _080D84E4 @ =0x00003f42\n"
- "\tadds r0, r2, 0\n"
- "\tstrh r0, [r1]\n"
- "\tadds r1, 0x2\n"
- "\tmovs r2, 0x80\n"
- "\tlsls r2, 5\n"
- "\tadds r0, r2, 0\n"
- "\tstrh r0, [r1]\n"
- "\tldr r4, _080D84E8 @ =REG_BG1CNT\n"
- "\tldrb r1, [r4]\n"
- "\tmovs r0, 0x4\n"
- "\tnegs r0, r0\n"
- "\tands r0, r1\n"
- "\tmovs r1, 0x1\n"
- "\torrs r0, r1\n"
- "\tstrb r0, [r4]\n"
- "\tldrb r1, [r4, 0x1]\n"
- "\tmovs r0, 0x3F\n"
- "\tands r0, r1\n"
- "\tstrb r0, [r4, 0x1]\n"
- "\tbl IsContest\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbne _080D845E\n"
- "\tldrb r0, [r4]\n"
- "\tmovs r1, 0xD\n"
- "\tnegs r1, r1\n"
- "\tands r1, r0\n"
- "\tmovs r0, 0x4\n"
- "\torrs r1, r0\n"
- "\tstrb r1, [r4]\n"
- "_080D845E:\n"
- "\tldr r0, _080D84EC @ =gBattle_BG1_X\n"
- "\tmovs r1, 0\n"
- "\tstrh r1, [r0]\n"
- "\tldr r0, _080D84F0 @ =gBattle_BG1_Y\n"
- "\tstrh r1, [r0]\n"
- "\tldr r0, _080D84F4 @ =REG_BG1HOFS\n"
- "\tstrh r1, [r0]\n"
- "\tadds r0, 0x2\n"
- "\tstrh r1, [r0]\n"
- "\tmov r0, sp\n"
- "\tbl sub_8078914\n"
- "\tldr r1, [sp, 0x4]\n"
- "\tmovs r0, 0\n"
- "\tstr r0, [sp, 0xC]\n"
- "\tldr r0, _080D84F8 @ =0x040000d4\n"
- "\tadd r2, sp, 0xC\n"
- "\tstr r2, [r0]\n"
- "\tstr r1, [r0, 0x4]\n"
- "\tldr r2, _080D84FC @ =0x85000400\n"
- "\tstr r2, [r0, 0x8]\n"
- "\tldr r2, [r0, 0x8]\n"
- "\tldr r2, _080D8500 @ =gWeatherFog1Tiles\n"
- "\tldr r3, [sp]\n"
- "\tstr r2, [r0]\n"
- "\tstr r3, [r0, 0x4]\n"
- "\tldr r2, _080D8504 @ =0x80000400\n"
- "\tstr r2, [r0, 0x8]\n"
- "\tldr r0, [r0, 0x8]\n"
- "\tldr r0, _080D8508 @ =gBattleAnimFogTilemap\n"
- "\tbl LZDecompressVram\n"
- "\tldr r0, _080D850C @ =gUnknown_083970E8\n"
- "\tmov r1, sp\n"
- "\tldrb r1, [r1, 0x8]\n"
- "\tlsls r1, 4\n"
- "\tmovs r2, 0x20\n"
- "\tbl LoadPalette\n"
- "\tbl IsContest\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbeq _080D84C4\n"
- "\tmov r0, sp\n"
- "\tldrb r0, [r0, 0x8]\n"
- "\tldr r1, [sp, 0x4]\n"
- "\tmovs r2, 0\n"
- "\tmovs r3, 0\n"
- "\tbl sub_80763FC\n"
- "_080D84C4:\n"
- "\tldr r1, _080D8510 @ =gTasks\n"
- "\tlsls r0, r5, 2\n"
- "\tadds r0, r5\n"
- "\tlsls r0, 3\n"
- "\tadds r0, r1\n"
- "\tldr r1, _080D8514 @ =0x0000ffff\n"
- "\tstrh r1, [r0, 0x26]\n"
- "\tldr r1, _080D8518 @ =sub_80D851C\n"
- "\tstr r1, [r0]\n"
- "\tadd sp, 0x10\n"
- "\tpop {r4,r5}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.align 2, 0\n"
- "_080D84E0: .4byte REG_BLDCNT\n"
- "_080D84E4: .4byte 0x00003f42\n"
- "_080D84E8: .4byte REG_BG1CNT\n"
- "_080D84EC: .4byte gBattle_BG1_X\n"
- "_080D84F0: .4byte gBattle_BG1_Y\n"
- "_080D84F4: .4byte REG_BG1HOFS\n"
- "_080D84F8: .4byte 0x040000d4\n"
- "_080D84FC: .4byte 0x85000400\n"
- "_080D8500: .4byte gWeatherFog1Tiles\n"
- "_080D8504: .4byte 0x80000400\n"
- "_080D8508: .4byte gBattleAnimFogTilemap\n"
- "_080D850C: .4byte gUnknown_083970E8\n"
- "_080D8510: .4byte gTasks\n"
- "_080D8514: .4byte 0x0000ffff\n"
- "_080D8518: .4byte sub_80D851C");
-}
-#endif // NONMATCHING
//
// NAKED
@@ -2029,262 +1777,58 @@ NAKED void sub_80D851C(u8 taskId)
"_080D86FC: .4byte REG_BLDCNT");
}
-#ifdef NONMATCHING
-//
+// MATCHING
void sub_80D8700(struct Sprite *sprite)
{
- //
- u8 tempVar;
- u8 attackerCoord;
- u8 targetCoord;
- //u32
- u8 battler; // battler
-
sprite->data[0] = gBattleAnimArgs[0];
- attackerCoord = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
- targetCoord = GetBattlerSpriteCoord(gAnimBankTarget, 2);
+ if ((u8)(GetBattlerSpriteCoord(gAnimBankAttacker, 2)) <
+ (u8)(GetBattlerSpriteCoord(gAnimBankTarget, 2)))
- // maybe these need to be temp vars
- //if ((u8)(GetBattlerSpriteCoord(gAnimBankAttacker, 2) << 24) >
- // (u8)(GetBattlerSpriteCoord(gAnimBankTarget, 2) << 24))
- if ((u32)attackerCoord > (u32)targetCoord) // there were << 24 here
- {
- // is this a temp var? or...
sprite->data[7] = 0x8000;
- }
- // B_SIDE_PLAYER?
if ((gBanksBySide[gAnimBankTarget] & 1) == 0)
{
- //
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
if ((sprite->data[7] & 0x8000) != 0
&& (gBanksBySide[gAnimBankAttacker] & 1) == 0)
- {
- // u8 spriteId = GetAnimBattlerSpriteId(1)
- sprite->subpriority = gSprites[gBankSpriteIds[GetAnimBattlerSpriteId(1)]].subpriority + 1;
- }
+
+ sprite->subpriority = gSprites[GetAnimBattlerSpriteId(1)].subpriority + 1;
+
sprite->data[6] = 1;
}
- //
sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
- if (gBattleAnimArgs[7] != 0)
+ if (gBattleAnimArgs[7])
{
- //
sprite->data[1] = sprite->pos1.x + gBattleAnimArgs[1];
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[3];
sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2];
- battler = gAnimBankAttacker;
- tempVar = 3;
- } // r1 = 3 ; r0 = gAnimBankAttacker
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[4];
+ sprite->data[7] |= sub_8079ED4(gAnimBankTarget) << 8;
+ }
else
{
- //
sprite->data[1] = sprite->pos1.x + gBattleAnimArgs[1];
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 0) + gBattleAnimArgs[3];
sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2];
- battler = gAnimBankTarget;
- tempVar = 1;
- } // r1 = 1 ; r0 = gAnimBankTarget
- sprite->data[4] = GetBattlerSpriteCoord(battler, tempVar) + gBattleAnimArgs[4];
- sprite->data[7] |= (u16)sub_8079ED4(battler);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 1) + gBattleAnimArgs[4];
+ sprite->data[7] |= sub_8079ED4(gAnimBankTarget) << 8;
+ }
- // +
if (IsContest() != 0)
{
sprite->data[6] = 1;
sprite->subpriority = 0x80;
}
- InitAnimLinearTranslation(sprite); // +
- sprite->callback = sub_80D8874; // +
+ InitAnimLinearTranslation(sprite);
+ sprite->callback = sub_80D8874;
}
-#else
-NAKED void sub_80D8700(struct Sprite *sprite)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r8\n"
- "\tpush {r7}\n"
- "\tadds r5, r0, 0\n"
- "\tldr r6, _080D87E8 @ =gBattleAnimArgs\n"
- "\tldrh r0, [r6]\n"
- "\tstrh r0, [r5, 0x2E]\n"
- "\tldr r0, _080D87EC @ =gAnimBankAttacker\n"
- "\tmov r8, r0\n"
- "\tldrb r0, [r0]\n"
- "\tmovs r1, 0x2\n"
- "\tbl GetBattlerSpriteCoord\n"
- "\tadds r4, r0, 0\n"
- "\tldr r7, _080D87F0 @ =gAnimBankTarget\n"
- "\tldrb r0, [r7]\n"
- "\tmovs r1, 0x2\n"
- "\tbl GetBattlerSpriteCoord\n"
- "\tlsls r4, 24\n"
- "\tlsls r0, 24\n"
- "\tcmp r4, r0\n"
- "\tbcs _080D8734\n"
- "\tmovs r0, 0x80\n"
- "\tlsls r0, 8\n"
- "\tstrh r0, [r5, 0x3C]\n"
- "_080D8734:\n"
- "\tldr r3, _080D87F4 @ =gBanksBySide\n"
- "\tldrb r0, [r7]\n"
- "\tadds r0, r3\n"
- "\tldrb r1, [r0]\n"
- "\tmovs r2, 0x1\n"
- "\tadds r0, r2, 0\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbne _080D8794\n"
- "\tldrh r0, [r6, 0x2]\n"
- "\tnegs r0, r0\n"
- "\tstrh r0, [r6, 0x2]\n"
- "\tldrh r0, [r6, 0x6]\n"
- "\tnegs r0, r0\n"
- "\tstrh r0, [r6, 0x6]\n"
- "\tmovs r1, 0x3C\n"
- "\tldrsh r0, [r5, r1]\n"
- "\tmovs r1, 0x80\n"
- "\tlsls r1, 8\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbeq _080D8790\n"
- "\tmov r1, r8\n"
- "\tldrb r0, [r1]\n"
- "\tadds r0, r3\n"
- "\tldrb r1, [r0]\n"
- "\tadds r0, r2, 0\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbne _080D8790\n"
- "\tmovs r0, 0x1\n"
- "\tbl GetAnimBattlerSpriteId\n"
- "\tldr r2, _080D87F8 @ =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"
- "\tadds r1, r5, 0\n"
- "\tadds r1, 0x43\n"
- "\tstrb r0, [r1]\n"
- "_080D8790:\n"
- "\tmovs r0, 0x1\n"
- "\tstrh r0, [r5, 0x3A]\n"
- "_080D8794:\n"
- "\tldr r4, _080D87EC @ =gAnimBankAttacker\n"
- "\tldrb r0, [r4]\n"
- "\tmovs r1, 0x2\n"
- "\tbl GetBattlerSpriteCoord\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tstrh r0, [r5, 0x20]\n"
- "\tldrb r0, [r4]\n"
- "\tmovs r1, 0x3\n"
- "\tbl GetBattlerSpriteCoord\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tstrh r0, [r5, 0x22]\n"
- "\tldr r6, _080D87E8 @ =gBattleAnimArgs\n"
- "\tmovs r1, 0xE\n"
- "\tldrsh r0, [r6, r1]\n"
- "\tcmp r0, 0\n"
- "\tbeq _080D87FC\n"
- "\tldrh r0, [r6, 0x2]\n"
- "\tldrh r1, [r5, 0x20]\n"
- "\tadds r0, r1\n"
- "\tstrh r0, [r5, 0x30]\n"
- "\tldr r4, _080D87F0 @ =gAnimBankTarget\n"
- "\tldrb r0, [r4]\n"
- "\tmovs r1, 0x2\n"
- "\tbl GetBattlerSpriteCoord\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tldrh r1, [r6, 0x6]\n"
- "\tadds r0, r1\n"
- "\tstrh r0, [r5, 0x32]\n"
- "\tldrh r0, [r6, 0x4]\n"
- "\tldrh r1, [r5, 0x22]\n"
- "\tadds r0, r1\n"
- "\tstrh r0, [r5, 0x34]\n"
- "\tldrb r0, [r4]\n"
- "\tmovs r1, 0x3\n"
- "\tb _080D8824\n"
- "\t.align 2, 0\n"
- "_080D87E8: .4byte gBattleAnimArgs\n"
- "_080D87EC: .4byte gAnimBankAttacker\n"
- "_080D87F0: .4byte gAnimBankTarget\n"
- "_080D87F4: .4byte gBanksBySide\n"
- "_080D87F8: .4byte gSprites\n"
- "_080D87FC:\n"
- "\tldrh r0, [r6, 0x2]\n"
- "\tldrh r1, [r5, 0x20]\n"
- "\tadds r0, r1\n"
- "\tstrh r0, [r5, 0x30]\n"
- "\tldr r4, _080D886C @ =gAnimBankTarget\n"
- "\tldrb r0, [r4]\n"
- "\tmovs r1, 0\n"
- "\tbl GetBattlerSpriteCoord\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tldrh r1, [r6, 0x6]\n"
- "\tadds r0, r1\n"
- "\tstrh r0, [r5, 0x32]\n"
- "\tldrh r0, [r6, 0x4]\n"
- "\tldrh r1, [r5, 0x22]\n"
- "\tadds r0, r1\n"
- "\tstrh r0, [r5, 0x34]\n"
- "\tldrb r0, [r4]\n"
- "\tmovs r1, 0x1\n"
- "_080D8824:\n"
- "\tbl GetBattlerSpriteCoord\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tldrh r6, [r6, 0x8]\n"
- "\tadds r0, r6\n"
- "\tstrh r0, [r5, 0x36]\n"
- "\tldrb r0, [r4]\n"
- "\tbl sub_8079ED4\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 16\n"
- "\tldrh r1, [r5, 0x3C]\n"
- "\torrs r0, r1\n"
- "\tstrh r0, [r5, 0x3C]\n"
- "\tbl IsContest\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbeq _080D8858\n"
- "\tmovs r0, 0x1\n"
- "\tstrh r0, [r5, 0x3A]\n"
- "\tadds r1, r5, 0\n"
- "\tadds r1, 0x43\n"
- "\tmovs r0, 0x80\n"
- "\tstrb r0, [r1]\n"
- "_080D8858:\n"
- "\tadds r0, r5, 0\n"
- "\tbl InitAnimLinearTranslation\n"
- "\tldr r0, _080D8870 @ =sub_80D8874\n"
- "\tstr r0, [r5, 0x1C]\n"
- "\tpop {r3}\n"
- "\tmov r8, r3\n"
- "\tpop {r4-r7}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.align 2, 0\n"
- "_080D886C: .4byte gAnimBankTarget\n"
- "_080D8870: .4byte sub_80D8874");
-}
-#endif // NONMATCHING
#ifdef NONMATCHING
// https://pastebin.com/8wvBFV2F
@@ -2912,7 +2456,7 @@ void sub_80D8AF8(u8 taskId)
// _78
task->data[0] += 1;
- return;
+ //return;
}
#else
NAKED void sub_80D8AF8(u8 taskId)
@@ -3014,8 +2558,16 @@ NAKED void sub_80D8AF8(u8 taskId)
}
#endif // NONMATCHING
-// NOT MATCHING / NONMATCHING
-NAKED void sub_80D8BA8(u8 taskId)
+/*
+// NOT NONMATCHING
+void sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4)//(u8 spriteId, u8 taskId, u8 a3)//(u8 taskId)
+{
+ //
+ //struct Task *task = &gTasks[taskId];
+ //u16 i, j;
+} */
+
+NAKED void sub_80D8BA8(u8 a1, u8 a2, u8 a3, u8 a4)//spriteId, u8 taskId, u8 a3)//(u8 taskId)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r10\n"
@@ -3193,7 +2745,7 @@ NAKED void sub_80D8BA8(u8 taskId)
"\tpop {r4-r7}\n"
"\tpop {r1}\n"
"\tbx r1");
-}
+}//*/
// MATCHING
void sub_80D8D1C(struct Sprite *sprite)
@@ -3307,125 +2859,34 @@ void sub_80D8F10(struct Sprite *sprite)
sprite->callback = sub_80D8F74;
}
-#ifdef NONMATCHING
-// NONMATCHING
+// MATCHING
void sub_80D8F74(struct Sprite *sprite)
{
- //
- s16 r0;
-
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- if ((sprite->data[1] & 1) != 0)
- {
- //
- r0 = -(sprite->data[1] + sprite->data[3]); // problem 1
- }
- else
- {
- r0 = (sprite->data[1] + sprite->data[3]); // problem 2
- }
+ if (sprite->data[1] & 1)
+ sprite->pos2.x = -(sprite->data[3] >> 8);
- sprite->pos2.x = r0;
- sprite->pos2.y = sprite->data[4];
+ else
+ sprite->pos2.x = sprite->data[3] >> 8;
- sprite->data[0]++;
+ sprite->pos2.y = sprite->data[4] >> 8;
- if (sprite->data[0] == 0x15)
- {
+ if (++sprite->data[0] == 21)
DestroyAnimSprite(sprite);
- }
-}
-#else
-NAKED void sub_80D8F74(struct Sprite *sprite)
-{
- asm_unified("\tpush {r4,lr}\n"
- "\tadds r2, r0, 0\n"
- "\tldrh r0, [r2, 0x30]\n"
- "\tldrh r1, [r2, 0x34]\n"
- "\tadds r3, r0, r1\n"
- "\tstrh r3, [r2, 0x34]\n"
- "\tldrh r1, [r2, 0x32]\n"
- "\tldrh r4, [r2, 0x36]\n"
- "\tadds r1, r4\n"
- "\tstrh r1, [r2, 0x36]\n"
- "\tmovs r1, 0x1\n"
- "\tands r1, r0\n"
- "\tcmp r1, 0\n"
- "\tbeq _080D8F98\n"
- "\tlsls r0, r3, 16\n"
- "\tasrs r0, 24\n"
- "\tnegs r0, r0\n"
- "\tb _080D8F9C\n"
- "_080D8F98:\n"
- "\tlsls r0, r3, 16\n"
- "\tasrs r0, 24\n"
- "_080D8F9C:\n"
- "\tstrh r0, [r2, 0x24]\n"
- "\tldrh r0, [r2, 0x36]\n"
- "\tlsls r0, 16\n"
- "\tasrs r0, 24\n"
- "\tstrh r0, [r2, 0x26]\n"
- "\tldrh r0, [r2, 0x2E]\n"
- "\tadds r0, 0x1\n"
- "\tstrh r0, [r2, 0x2E]\n"
- "\tlsls r0, 16\n"
- "\tasrs r0, 16\n"
- "\tcmp r0, 0x15\n"
- "\tbne _080D8FBA\n"
- "\tadds r0, r2, 0\n"
- "\tbl DestroyAnimSprite\n"
- "_080D8FBA:\n"
- "\tpop {r4}\n"
- "\tpop {r0}\n"
- "\tbx r0");
}
-#endif // NONMATCHING
-#ifdef NONMATCHING
// should be counter for icicle spear?
-//
-void sub_80D8FC0(u8 taskId)//struct Sprite *sprte)
+// MATCHING
+void sub_80D8FC0(u8 taskId)
{
- //
- ///u8 r3 = gAnimDisableStructPtr->rolloutTimer2 - gAnimDisableStructPtr->rolloutTimer1 - 1;
- gBattleAnimArgs[3] = gAnimDisableStructPtr->rolloutTimer2 - gAnimDisableStructPtr->rolloutTimer1 - 1;//r3;
- ///gBattleAnimArgs[3] = gAnimDisableStructPtr->rolloutTimer2 - gAnimDisableStructPtr->rolloutTimer1 - 1;
- //s16 r0[] = *gBattleAnimArgs;
- //r0 = r0 << 1;
- //r0 = r0 + *gBattleAnimArgs;
- //&r0 = gAnimDisableStructPtr->rolloutTimer2 - gAnimDisableStructPtr->rolloutTimer1 - 1;
+ u8 arg = gBattleAnimArgs[0];
+ gBattleAnimArgs[arg] = gAnimDisableStructPtr->rolloutTimer2 - gAnimDisableStructPtr->rolloutTimer1 - 1;
+
DestroyAnimVisualTask(taskId);
}
-#else
-NAKED void sub_80D8FC0(u8 taskId)
-{
- asm_unified("\tpush {lr}\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tldr r1, _080D8FE8 @ =gBattleAnimArgs\n"
- "\tldrb r3, [r1]\n"
- "\tlsls r3, 1\n"
- "\tadds r3, r1\n"
- "\tldr r1, _080D8FEC @ =gAnimDisableStructPtr\n"
- "\tldr r1, [r1]\n"
- "\tldrb r1, [r1, 0x11]\n"
- "\tlsrs r2, r1, 4\n"
- "\tlsls r1, 28\n"
- "\tlsrs r1, 28\n"
- "\tsubs r2, r1\n"
- "\tsubs r2, 0x1\n"
- "\tstrh r2, [r3]\n"
- "\tbl DestroyAnimVisualTask\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.align 2, 0\n"
- "_080D8FE8: .4byte gBattleAnimArgs\n"
- "_080D8FEC: .4byte gAnimDisableStructPtr");
-}
-#endif // NONMATCHING
-// 20 MATCHING
-// 11 NONMATCHING / NAKED smh \ No newline at end of file
+// 26 MATCHING
+// 05 NONMATCHING (1 NAKED) \ No newline at end of file