summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2020-09-01 13:54:16 -0400
committerGitHub <noreply@github.com>2020-09-01 13:54:16 -0400
commit4412f9f6979fd9fbdcab58b1a96799f2f557b02c (patch)
tree32883aaf23c727f3d27a8960b8a1498d5fb7d1a6 /src
parent69ce45f71f49c859ca7adc07902842503c07d405 (diff)
parent403b8546684d4a8074220d27aa32471ec546abf0 (diff)
Merge pull request #800 from PokeCodec/matchRubyTime
Match more functions
Diffstat (limited to 'src')
-rw-r--r--src/battle/anim/bottle.c2
-rw-r--r--src/battle/anim/copy_orb.c4
-rw-r--r--src/battle/anim/current.c2
-rw-r--r--src/battle/anim/dark.c6
-rw-r--r--src/battle/anim/dragon.c2
-rw-r--r--src/battle/anim/draw.c4
-rw-r--r--src/battle/anim/espeed.c8
-rw-r--r--src/battle/anim/flying.c1837
-rw-r--r--src/battle/anim/ghost.c10
-rw-r--r--src/battle/anim/ground.c8
-rw-r--r--src/battle/anim/lunge.c2
-rw-r--r--src/battle/anim/normal.c8
-rw-r--r--src/battle/anim/note_spin.c2
-rw-r--r--src/battle/anim/psychic.c10
-rw-r--r--src/battle/anim/ring.c2
-rw-r--r--src/battle/anim/rock.c4
-rw-r--r--src/battle/anim/seed.c4
-rw-r--r--src/battle/anim/shield.c2
-rw-r--r--src/battle/anim/unused_2.c12
-rw-r--r--src/battle/anim/unused_7.c2
-rw-r--r--src/battle_anim_effects_3.c84
-rwxr-xr-xsrc/battle_anim_special.c16
-rw-r--r--src/battle_main.c6
-rw-r--r--src/contest.c33
-rw-r--r--src/contest_link_80C2020.c12
-rw-r--r--src/contest_painting.c17
-rw-r--r--src/credits.c20
-rw-r--r--src/decoration.c14
-rw-r--r--src/egg_hatch.c6
-rw-r--r--src/evolution_graphics.c16
-rw-r--r--src/evolution_scene.c8
-rw-r--r--src/field_effect.c30
-rw-r--r--src/field_specials.c2
-rw-r--r--src/intro.c6
-rw-r--r--src/libs/m4a.c115
-rw-r--r--src/main_menu.c12
-rw-r--r--src/menu_cursor.c12
-rw-r--r--src/party_menu.c12
-rw-r--r--src/pokedex.c175
-rw-r--r--src/pokemon_storage_system_4.c2
-rw-r--r--src/pokemon_summary_screen.c2
-rw-r--r--src/pokenav.c146
-rw-r--r--src/unk_text_8095904.c208
43 files changed, 645 insertions, 2240 deletions
diff --git a/src/battle/anim/bottle.c b/src/battle/anim/bottle.c
index 13a3d538e..d1cee94d9 100644
--- a/src/battle/anim/bottle.c
+++ b/src/battle/anim/bottle.c
@@ -126,7 +126,7 @@ static void sub_80CCF70(struct Sprite* sprite)
}
break;
case 3:
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->data[0]++;
break;
case 4:
diff --git a/src/battle/anim/copy_orb.c b/src/battle/anim/copy_orb.c
index 9d078f440..b7b4239df 100644
--- a/src/battle/anim/copy_orb.c
+++ b/src/battle/anim/copy_orb.c
@@ -55,13 +55,13 @@ void sub_80CB4CC(struct Sprite* sprite)
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[0];
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[1];
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->data[0]++;
break;
}
case 1:
{
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
if (sprite->affineAnimEnded)
{
ChangeSpriteAffineAnim(sprite, 1);
diff --git a/src/battle/anim/current.c b/src/battle/anim/current.c
index 12da95fa8..32d09ddf2 100644
--- a/src/battle/anim/current.c
+++ b/src/battle/anim/current.c
@@ -808,7 +808,7 @@ void sub_80D6E9C(u8 taskId)
}
break;
case 3:
- gSprites[task->data[15]].invisible = 0;
+ gSprites[task->data[15]].invisible = FALSE;
DestroyAnimVisualTask(taskId);
break;
}
diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c
index 08aafe195..bae52d83f 100644
--- a/src/battle/anim/dark.c
+++ b/src/battle/anim/dark.c
@@ -233,7 +233,7 @@ static void sub_80DFC9C(u8 taskId)
gTasks[taskId].data[2] = 0;
if (r2 == 16)
{
- gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].invisible = 1;
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].invisible = TRUE;
DestroyAnimVisualTask(taskId);
}
}
@@ -797,12 +797,12 @@ void sub_80E0918(u8 taskId)
{
u8 toBG2 = GetBattlerPosition_permutated(gBattleAnimAttacker) ^ 1 ? 1 : 0;
MoveBattlerSpriteToBG(gBattleAnimAttacker, toBG2);
- gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].invisible = 0;
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].invisible = FALSE;
if (IsAnimBankSpriteVisible(gBattleAnimAttacker ^ 2))
{
MoveBattlerSpriteToBG(gBattleAnimAttacker ^ 2, toBG2 ^ 1);
- gSprites[gBattlerSpriteIds[gBattleAnimAttacker ^ 2]].invisible = 0;
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker ^ 2]].invisible = FALSE;
}
DestroyAnimVisualTask(taskId);
diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c
index 6ac0746a3..d49f83952 100644
--- a/src/battle/anim/dragon.c
+++ b/src/battle/anim/dragon.c
@@ -214,7 +214,7 @@ void sub_80DF5A0(struct Sprite *sprite)
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[3] = gBattleAnimArgs[4];
sprite->data[5] = gBattleAnimArgs[5];
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_8078504;
}
diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c
index 34f661f6a..a42d8617f 100644
--- a/src/battle/anim/draw.c
+++ b/src/battle/anim/draw.c
@@ -144,7 +144,7 @@ static void sub_80D0E8C(struct Sprite* sprite)
}
if (++sprite->data[1] > 16)
{
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
sprite->data[0]++;
}
break;
@@ -184,7 +184,7 @@ static void sub_80D0E8C(struct Sprite* sprite)
}
if (++sprite->data[1] > 16)
{
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
DestroyAnimSprite(sprite);
}
break;
diff --git a/src/battle/anim/espeed.c b/src/battle/anim/espeed.c
index cd3b70542..27dc47c21 100644
--- a/src/battle/anim/espeed.c
+++ b/src/battle/anim/espeed.c
@@ -73,7 +73,7 @@ void sub_80D15E0(u8 taskId)
if (RunAffineAnimFromTaskData(task) == 0)
{
gSprites[task->data[0]].pos2.y = 0;
- gSprites[task->data[0]].invisible = 1;
+ gSprites[task->data[0]].invisible = TRUE;
DestroyAnimVisualTask(taskId);
}
}
@@ -170,9 +170,9 @@ void sub_80D1808(u8 taskId)
{
task->data[1] = 0;
if (++task->data[2] & 1)
- gSprites[task->data[15]].invisible = 0;
+ gSprites[task->data[15]].invisible = FALSE;
else
- gSprites[task->data[15]].invisible = 1;
+ gSprites[task->data[15]].invisible = TRUE;
if (++task->data[3] >= task->data[13])
{
@@ -184,7 +184,7 @@ void sub_80D1808(u8 taskId)
}
else
{
- gSprites[task->data[15]].invisible = 0;
+ gSprites[task->data[15]].invisible = FALSE;
DestroyAnimVisualTask(taskId);
}
}
diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c
index 64991d161..588729ab5 100644
--- a/src/battle/anim/flying.c
+++ b/src/battle/anim/flying.c
@@ -16,36 +16,36 @@ extern u8 gBattlerPositions[];
extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB538;
void sub_80785E4(struct Sprite *sprite);
-void sub_80DA034(struct Sprite *sprite);
-void sub_80DA05C(struct Sprite *sprite);
-void sub_80DA16C(struct Sprite *sprite);
-void sub_80DA1EC(struct Sprite *sprite);
-void sub_80DA208(struct Sprite *sprite);
-void sub_80DA300(struct Sprite *sprite);
-void sub_80DA348(struct Sprite *sprite);
-void sub_80DA38C(struct Sprite *sprite);
-void sub_80DA4D8(struct Sprite *sprite);
-void sub_80DA410(struct Sprite *sprite);
-void sub_80DA6F0(struct Sprite *sprite);
-void sub_80DAD30(struct Sprite *sprite);
-void sub_80DAD84(struct Sprite *sprite);
-void sub_80DAF0C(struct Sprite *sprite);
-void sub_80DB000(struct Sprite *sprite);
-void sub_80DB0A0(struct Sprite *sprite);
-void sub_80DB194(struct Sprite *sprite);
-void sub_80DB1F4(struct Sprite *sprite);
-void sub_80DB288(struct Sprite *sprite);
-void sub_80DB2D0(struct Sprite *sprite);
-void sub_80DB330(struct Sprite *sprite);
-void sub_80DB374(struct Sprite *sprite);
-void sub_80DB458(struct Sprite *sprite);
-void sub_80DB508(struct Sprite *sprite);
-void sub_80DB564(struct Sprite *sprite);
-void sub_80DB578(struct Sprite *sprite);
-void sub_80DB5E4(struct Sprite *sprite);
-void sub_80DB6A0(struct Sprite *sprite);
-
-void sub_80DA0DC(u8 taskId);
+static void sub_80DA034(struct Sprite *sprite);
+static void sub_80DA05C(struct Sprite *sprite);
+static void sub_80DA16C(struct Sprite *sprite);
+static void sub_80DA1EC(struct Sprite *sprite);
+static void sub_80DA208(struct Sprite *sprite);
+static void sub_80DA300(struct Sprite *sprite);
+static void sub_80DA348(struct Sprite *sprite);
+static void sub_80DA38C(struct Sprite *sprite);
+static void AnimFallingFeather(struct Sprite *sprite);
+static void sub_80DA410(struct Sprite *sprite);
+static void DestroyAnimSpriteAfterTimer(struct Sprite *sprite);
+static void sub_80DAD30(struct Sprite *sprite);
+static void sub_80DAD84(struct Sprite *sprite);
+static void sub_80DAF0C(struct Sprite *sprite);
+static void sub_80DB000(struct Sprite *sprite);
+static void sub_80DB0A0(struct Sprite *sprite);
+static void sub_80DB194(struct Sprite *sprite);
+static void sub_80DB1F4(struct Sprite *sprite);
+static void sub_80DB288(struct Sprite *sprite);
+static void sub_80DB2D0(struct Sprite *sprite);
+static void sub_80DB330(struct Sprite *sprite);
+static void sub_80DB374(struct Sprite *sprite);
+static void sub_80DB458(struct Sprite *sprite);
+static void sub_80DB508(struct Sprite *sprite);
+static void sub_80DB564(struct Sprite *sprite);
+static void sub_80DB578(struct Sprite *sprite);
+static void sub_80DB5E4(struct Sprite *sprite);
+static void sub_80DB6A0(struct Sprite *sprite);
+
+static void sub_80DA0DC(u8 taskId);
const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA380 =
{
@@ -186,7 +186,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA498 =
.anims = gSpriteAnimTable_83DA490,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80DA4D8,
+ .callback = AnimFallingFeather,
};
const u16 gUnknownPalette_83DA4B0[] = INCBIN_U16("graphics/unknown/unknown_3DA4B0.gbapal");
@@ -369,7 +369,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA65C =
.callback = sub_80DB5E4,
};
-void sub_80DA034(struct Sprite *sprite)
+static void sub_80DA034(struct Sprite *sprite)
{
sub_8078764(sprite, FALSE);
sprite->pos1.y += 20;
@@ -378,7 +378,7 @@ void sub_80DA034(struct Sprite *sprite)
sub_80DA05C(sprite);
}
-void sub_80DA05C(struct Sprite *sprite) {
+static void sub_80DA05C(struct Sprite *sprite) {
sprite->pos2.x = Sin(sprite->data[1], 0x20);
sprite->pos2.y = Cos(sprite->data[1], 0x8);
sprite->data[1] = (sprite->data[1] + 5) & 0xFF;
@@ -395,7 +395,7 @@ void sub_80DA09C(u8 taskId)
gTasks[taskId].func = sub_80DA0DC;
}
-void sub_80DA0DC(u8 taskId)
+static void sub_80DA0DC(u8 taskId)
{
u8 data2;
u16 temp;
@@ -427,7 +427,7 @@ void sub_80DA0DC(u8 taskId)
}
}
-void sub_80DA16C(struct Sprite *sprite)
+static void sub_80DA16C(struct Sprite *sprite)
{
InitAnimSpritePos(sprite, 1);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
@@ -444,7 +444,7 @@ void sub_80DA16C(struct Sprite *sprite)
StoreSpriteCallbackInData(sprite, sub_80DA1EC);
}
-void sub_80DA1EC(struct Sprite *sprite)
+static void sub_80DA1EC(struct Sprite *sprite)
{
if (TranslateAnimLinear(sprite) != 0)
{
@@ -452,7 +452,7 @@ void sub_80DA1EC(struct Sprite *sprite)
}
}
-void sub_80DA208(struct Sprite *sprite)
+static void sub_80DA208(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
@@ -492,16 +492,16 @@ void sub_80DA208(struct Sprite *sprite)
SeekSpriteAnim(sprite, gBattleAnimArgs[5]);
}
-void sub_80DA300(struct Sprite *sprite)
+static void sub_80DA300(struct Sprite *sprite)
{
InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->callback = sub_80DA348;
- gSprites[GetAnimBattlerSpriteId(0)].invisible = 1;
+ gSprites[GetAnimBattlerSpriteId(0)].invisible = TRUE;
}
-void sub_80DA348(struct Sprite *sprite)
+static void sub_80DA348(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
@@ -519,7 +519,7 @@ void sub_80DA348(struct Sprite *sprite)
}
}
-void sub_80DA38C(struct Sprite *sprite)
+static void sub_80DA38C(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
@@ -543,7 +543,7 @@ void sub_80DA38C(struct Sprite *sprite)
sprite->callback = sub_80DA410;
}
-void sub_80DA410(struct Sprite *sprite)
+static void sub_80DA410(struct Sprite *sprite)
{
sprite->data[0] = 1;
TranslateAnimLinear(sprite);
@@ -555,1331 +555,283 @@ void sub_80DA410(struct Sprite *sprite)
sprite->data[3] &= 0xFF;
}
+ //The below if statement relies on overflow when cast to unsigned whenever pos1.x and pos2.x add up to less than 32.
if ((u32) (sprite->pos1.x + sprite->pos2.x + 32) > 304 || sprite->pos1.y + sprite->pos2.y > 160)
{
- gSprites[GetAnimBattlerSpriteId(0)].invisible = 0;
+ gSprites[GetAnimBattlerSpriteId(0)].invisible = FALSE;
DestroyAnimSprite(sprite);
}
}
void sub_80DA48C(struct Sprite *sprite)
{
- if (sprite->data[0]-- <= 0)
+ if (sprite->data[0]-- > 0)
+ return;
+ if (sprite->oam.affineMode & 1)
{
- if (sprite->oam.affineMode & 1)
- {
- FreeOamMatrix(sprite->oam.matrixNum);
- sprite->oam.affineMode = 0;
- }
-
- DestroySprite(sprite);
- gAnimVisualTaskCount--;
+ FreeOamMatrix(sprite->oam.matrixNum);
+ sprite->oam.affineMode = 0;
}
+
+ DestroySprite(sprite);
+ gAnimVisualTaskCount--;
}
-// FAKEMATCHING
-void sub_80DA4D8(struct Sprite *sprite)
+struct FeatherDanceData
+{
+ u16 unk0_0a : 1;
+ u16 unk0_0b : 1;
+ u16 unk0_0c : 1;
+ u16 unk0_0d : 1;
+ u16 unk0_1 : 4;
+ u16 unk1 : 8;
+ u16 unk2;
+ s16 unk4;
+ u16 unk6;
+ u16 unk8;
+ u16 unkA;
+ u8 unkC[2];
+
+ u16 unkE_0 : 1;
+ u16 unkE_1 : 15;
+};
+#define ANIM_SWITCH(sprite) \
+ { \
+ (sprite)->hFlip ^= 1; \
+ (sprite)->animNum = (sprite)->hFlip; \
+ (sprite)->animBeginning = TRUE; \
+ (sprite)->animEnded = FALSE; \
+ }
+
+#define CHANGE_PRIORITY(sprite, data) \
+ { \
+ if ((data)->unk0_0c) \
+ { \
+ if (gMain.inBattle) \
+ { \
+ if ((data)->unkE_0 == 0) \
+ { \
+ (sprite)->oam.priority--; \
+ (data)->unkE_0 ^= 1; \
+ } \
+ else \
+ { \
+ (sprite)->oam.priority++; \
+ (data)->unkE_0 ^= 1; \
+ } \
+ } \
+ else \
+ { \
+ if ((data)->unkE_0 == 0) \
+ { \
+ (sprite)->subpriority -= 12; \
+ (data)->unkE_0 ^= 1; \
+ } \
+ else \
+ { \
+ (sprite)->subpriority += 12; \
+ (data)->unkE_0 ^= 1; \
+ } \
+ } \
+ } \
+ }
+
+static void AnimFallingFeather(struct Sprite *sprite)
{
- s16 *data;
- u8 slot;
- s16 spriteCoord;
- int t1, t2;
- u32 arg2;
+ u8 battler, sinIndex;
u32 matrixNum;
- u8 sinIndex;
- register s16 sinVal asm ("r4");
- register int sinVal2 asm ("r0");
+ s16 sinVal;
- data = sprite->data;
+ struct FeatherDanceData *data = (struct FeatherDanceData *)sprite->data;
- if (gBattleAnimArgs[7] & 0x100)
- {
- slot = gBattleAnimAttacker;
- }
- else
- {
- slot = gBattleAnimTarget;
- }
+ battler = (gBattleAnimArgs[7] & 0x100) ? gBattleAnimAttacker : gBattleAnimTarget;
- if (GetBattlerSide(slot) == 0)
- {
+ if (GetBattlerSide(battler) == B_SIDE_PLAYER)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- }
- sprite->pos1.x = GetBattlerSpriteCoord(slot, 0) + gBattleAnimArgs[0];
- spriteCoord = GetBattlerSpriteCoord(slot, 1);
- sprite->pos1.y = spriteCoord + gBattleAnimArgs[1];
- data[4] = sprite->pos1.y << 8;
+ sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_HEIGHT) + gBattleAnimArgs[0];
+ sinVal = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_WIDTH);
+ sprite->pos1.y = sinVal + gBattleAnimArgs[1];
- t1 = (spriteCoord + (u16) gBattleAnimArgs[6]) << 1;
- data[7] = (data[7] & 1) | t1;
- ((u8 *) data)[0] |= 4;
+ data->unk8 = (u16)sprite->pos1.y << 8;
+ data->unkE_1 = (u16)(sinVal + gBattleAnimArgs[6]);
- arg2 = (u16) gBattleAnimArgs[2];
- data[1] = (u8) gBattleAnimArgs[2];
- arg2 <<= 16;
- data[5] = arg2 >> 24;
- data[2] = gBattleAnimArgs[3];
- data[3] = gBattleAnimArgs[4];
- data[6] = gBattleAnimArgs[5];
+ data->unk0_0c = 1;
+ data->unk2 = (u16)(gBattleAnimArgs[2] & 0xFF);
+ data->unkA = (u16)gBattleAnimArgs[2] >> 8;
+ data->unk4 = gBattleAnimArgs[3];
+ data->unk6 = (u16)gBattleAnimArgs[4];
+ *((u16 *)data->unkC) = (u16)gBattleAnimArgs[5];
- if ((u16) (data[1] - 64) <= 0x7f)
+ if (data->unk2 >= 64 && data->unk2 < 192)
{
if (gMain.inBattle)
{
- sprite->oam.priority = GetBattlerSpriteBGPriority(slot) + 1;
+ sprite->oam.priority = GetBattlerSpriteBGPriority(battler) + 1;
}
else
{
- sprite->oam.priority = GetBattlerSpriteBGPriority(slot);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(battler);
}
- ((u8 *) data)[14] = data[7] & -2;
+ data->unkE_0 = 0;
- if (!(data[2] & 0x8000))
+ if (!(data->unk4 & 0x8000))
{
- sprite->hFlip ^= 1;
- sprite->animNum = sprite->hFlip;
-
- sprite->animBeginning = 1;
- sprite->animEnded = 0;
+ ANIM_SWITCH(sprite);
}
}
else
{
- sprite->oam.priority = GetBattlerSpriteBGPriority(slot);
- ((u8 *) data)[14] |= 1;
+ sprite->oam.priority = GetBattlerSpriteBGPriority(battler);
+ data->unkE_0 = 1;
- if (data[2] & 0x8000)
+ if (data->unk4 & 0x8000)
{
- sprite->hFlip ^= 1;
- sprite->animNum = sprite->hFlip;
-
- sprite->animBeginning = 1;
- sprite->animEnded = 0;
+ ANIM_SWITCH(sprite);
}
}
- t2 = (u16) data[1] >> 6 << 4;
- ((u8 *) data)[0] = (15 & data[0]) | t2;
-
- sprite->pos2.x = (gSineTable[(u16) data[1]] * (u8) data[6]) >> 8;
-
+ data->unk0_1 = data->unk2/64;
+
+ sprite->pos2.x = (gSineTable[data->unk2] * (s32)data->unkC[0]) >> 8;
matrixNum = sprite->oam.matrixNum;
- sinIndex = (-sprite->pos2.x >> 1) + data[5];
+ sinIndex = ((-sprite->pos2.x >> 1) + data->unkA) & 0xFF;
sinVal = gSineTable[sinIndex];
gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
gOamMatrices[matrixNum].b = sinVal;
- sinVal2 = -sinVal;
- gOamMatrices[matrixNum].c = sinVal2;
+ gOamMatrices[matrixNum].c = -sinVal;
- sprite->callback = sub_80DA6F0;
+ sprite->callback = DestroyAnimSpriteAfterTimer;
}
-#ifdef NONMATCHING
-void sub_80DA6F0(struct Sprite * sprite)
+static void DestroyAnimSpriteAfterTimer(struct Sprite *sprite)
{
// (Probably) Functionally equivalent
- struct dataStruct {
- u8 one:1;
- u8 two:1;
- u8 three:1;
- u8 four:1;
- u8 fiveeight:4;
- };
-
- u8 zero;
- s16 * data;
- u8 * dataByte;
-
- u16 r8;
- u32 matrixNum;
u8 sinIndex;
- s16 sinVal;
-
- zero = 0;
- data = sprite->data;
- dataByte = (u8 *)data;
+ u32 matrixNum;
+ s16 sinVal = 0;
+ struct FeatherDanceData *data = (struct FeatherDanceData *)sprite->data;
- if (dataByte[0] & 1)
+ if (data->unk0_0a)
{
- u32 t1;
-
- t1 = dataByte[1];
- dataByte[1] += 0xff;
-
- t1 <<= 24;
- if (t1 == 0)
- {
- // 080da724
- ((struct dataStruct *)dataByte)[0].one = 0;
- dataByte[1] = zero;
- }
-
+ if (data->unk1-- > 0) return;
+ data->unk0_0a = 0;
+ data->unk1 = 0;
+ return;
}
- else
+ switch (data->unk2 / 64)
{
- // 080da730
- u16 tData;
- u16 t2;
-
- tData = data[1];
- t2 = tData >> 6;
- r8 = tData;
-
- switch (t2)
+ case 0:
+ if ((u8)data->unk0_1 == 1) // this must be cast to u8
{
- case (0):
- // 080da756
-
- if (dataByte[0] >> 4 == 1)
- {
- dataByte[0] |= 8;
- dataByte[0] |= 1;
- dataByte[1] = zero;
- }
- else if (dataByte[0] >> 4 == 3)
- {
- /*080da76c*/
- ((struct dataStruct *)dataByte)[0].two ^= 1;
- ((struct dataStruct *)dataByte)[0].one = 1;
- dataByte[1] = zero;
- }
- else
- {
- // 080da790
- if (dataByte[0] & 8)
- {
- sprite->hFlip ^= 1;
- sprite->animNum = sprite->hFlip;
- sprite->animBeginning = 1;
- sprite->animEnded = 0;
-
- if ((dataByte)[0] & 4)
- {
- u8 b;
- if (gMain.inBattle)
- {
- if (!(dataByte[14] & 1))
- {
- sprite->oam.priority -= 1;
- }
- else
- {
- // 080da814
- sprite->oam.priority += 1;
- }
- }
- else
- {
- // 080da82e
- if (!(dataByte[14] & 1))
- {
- sprite->subpriority -= 12;
- }
- else
- {
- // 080da85c
- sprite->subpriority += 12;
- }
- }
- b = (((u32)(dataByte[14] << 31) >> 31) ^ 1) & 1;
- dataByte[14] = (dataByte[14] & -2) | b;
- }
- // 080da87a
- ((struct dataStruct *)dataByte)[0].four = 0;
- r8 = data[1];
- }
- }
-
- // 080da88a
- dataByte[0] &= 15;
- // 080dac52
- break;
- case (1):
- // 080da896
- if (dataByte[0] >> 4 == 0)
- {
- dataByte[0] |= 8;
- dataByte[0] |= 1;
- dataByte[1] = zero;
- }
- else/*080da8ac*/if (dataByte[0] >> 4 == 2)
- {
- dataByte[0] |= 1;
- dataByte[1] = zero;
- }
- else
- {
- // 080da8be
- if (dataByte[0] & 8)
- {
- sprite->hFlip ^= 1;
- sprite->animNum = sprite->hFlip;
- sprite->animBeginning = 1;
- sprite->animEnded = 0;
-
- if (dataByte[0] & 4)
- {
- u8 b;
- if (gMain.inBattle)
- {
- if (!(dataByte[14] & 1))
- {
- sprite->oam.priority -= 1;
- }
- else
- {
- // 080da948
- sprite->oam.priority += 1;
- }
- }
- else
- {
- // 080da962
- if (!(dataByte[14] & 1))
- {
- sprite->subpriority -=12;
- }
- else
- {
- // 080da98c
- sprite->subpriority += 12;
- }
- }
- // 080da978 + 080da996
- b = (((u32)(dataByte[14] << 31) >> 31) ^ 1) & 1;
- dataByte[14] = (dataByte[14] & -2) | b;
- }
- // 080da9ac
- ((struct dataStruct *)dataByte)[0].four = 0;
- r8 = data[1];
- }
- }
- // 080da9bc
- dataByte[0] &= 15;
- dataByte[0] |= 16;
- // 080dac52
- break;
- case (2):
- // 080da9c8
- if (dataByte[0] >> 4 == 3)
- {
- dataByte[0] |= 8;
- dataByte[0] |= 1;
- dataByte[1] = zero;
- }
- else/*080da9de*/if (dataByte[0] >> 4 == 1)
- {
- dataByte[0] |= 1;
- dataByte[1] = zero;
- }
- else
- {
- // 080da9f0
- if (dataByte[0] & 8)
- {
- // 080da9fa
- sprite->hFlip ^= 1;
- sprite->animNum = sprite->hFlip;
- sprite->animBeginning = 1;
- sprite->animEnded = 0;
-
- if (dataByte[0] & 4)
- {
- u8 b;
- if (gMain.inBattle)
- {
- if (!(dataByte[14] & 1))
- {
- sprite->oam.priority -= 1;
- }
- else
- {
- // 080daa74
- sprite->oam.priority += 1;
- }
- }
- else
- {
- // 080daaa4
- if (!(dataByte[14] & 1))
- {
- sprite->subpriority -= 12;
- }
- else
- {
- // 080daace
- sprite->subpriority += 12;
- }
- }
- b = (((u32)(dataByte[14] << 31) >> 31) ^ 1) & 1;
- dataByte[14] = (dataByte[14] & -2) | b;
- }
- // 080daaec
- ((struct dataStruct *)dataByte)[0].four = 0;
- r8 = data[1];
- }
- }
- // 080daafe
- dataByte[0] &= 15;
- dataByte[0] |= 32;
- // 080dac52
- break;
- case (3):
- // 080dab0e
- if (dataByte[0] >> 4 == 2)
- {
- dataByte[0] |= 8;
- // 080dac42
- }
- else/*080dab20*/if (dataByte[0] >> 4 == 0)
- {
- ((struct dataStruct *)dataByte)[0].two ^= 1;
- ((struct dataStruct *)dataByte)[0].one = 1;
- dataByte[1] = zero;
- // 080dac42
- }
- else
- {
- // 080dab44
- if (dataByte[0] & 8)
- {
- sprite->hFlip ^= 1;
- sprite->animNum = sprite->hFlip;
- sprite->animBeginning = 1;
- sprite->animEnded = 0;
-
- if (dataByte[0] & 4)
- {
- u8 b;
- if (gMain.inBattle)
- {
- if (!(dataByte[14] & 1))
- {
- sprite->oam.priority -= 1;
- }
- else
- {
- // 080dabcc
- sprite->oam.priority += 1;
- }
- }
- else
- {
- // 080dabe6
- if (!(dataByte[14] & 1))
- {
- sprite->subpriority -= 12;
- }
- else
- {
- // 080dac14
- sprite->subpriority += 12;
- }
- }
- // 080dac00 + 080dac1e
- b = (((u32)(dataByte[14]) << 31 >> 31) ^ 1) & 1;
- dataByte[14] = (-2 & dataByte[14]) | b;
- }
- // 080dac32
- ((struct dataStruct *)dataByte)[0].four = 0;
- r8 = data[1];
- }
- }
- // 080dac42
- dataByte[0] &= 15;
- dataByte[0] |= 48;
- break;
+ data->unk0_0d = 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
}
-
- // 080dac52
-
- sprite->pos2.x = (dataByte[12 + ((struct dataStruct *)dataByte)[0].two] * gSineTable[r8]) >> 8;
-
- matrixNum = sprite->oam.matrixNum;
-
- sinIndex = (-sprite->pos2.x >> 1) + dataByte[10];
- sinVal = gSineTable[sinIndex];
-
- gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
- gOamMatrices[matrixNum].b = sinVal;
- gOamMatrices[matrixNum].c = -sinVal;
-
- data[4] += data[3];
-
- sprite->pos1.y = (u16)data[4] >> 8;
-
- if (data[2] & (0x80 << 8))
+ else if ((u8)data->unk0_1 == 3)
{
- data[1] = (data[1] - (data[2] & ((0x80 << 8) - 1))) & 0xff;
+ data->unk0_0b ^= 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
}
- else
+ else if (data->unk0_0d)
+ {
+ ANIM_SWITCH(sprite);
+ CHANGE_PRIORITY(sprite, data);
+ data->unk0_0d = 0;
+ }
+ data->unk0_1 = 0;
+ break;
+ case 1:
+ if ((u8)data->unk0_1 == 0)
+ {
+ data->unk0_0d = 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if ((u8)data->unk0_1 == 2)
+ {
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_0d)
+ {
+ ANIM_SWITCH(sprite);
+ CHANGE_PRIORITY(sprite, data);
+ data->unk0_0d = 0;
+ }
+ data->unk0_1 = 1;
+ break;
+ case 2:
+ if ((u8)data->unk0_1 == 3)
+ {
+ data->unk0_0d = 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if ((u8)data->unk0_1 == 1)
+ {
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_0d)
+ {
+ ANIM_SWITCH(sprite);
+ CHANGE_PRIORITY(sprite, data)
+ data->unk0_0d = 0;
+ }
+ data->unk0_1 = 2;
+ break;
+ case 3:
+ if ((u8)data->unk0_1 == 2)
{
- // 080dace8
- data[1] = ((data[2] & 0x7fff) + data[1]) & 0xff;
+ data->unk0_0d = 1;
}
- // 080dacfe
- if (sprite->pos1.y + sprite->pos2.y >= (u16)data[7] / 2)
+ else if ((u8)data->unk0_1 == 0)
{
- sprite->data[0] = 0;
- sprite->callback = sub_80DA48C;
+ data->unk0_0b ^= 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
}
+ else if (data->unk0_0d)
+ {
+ ANIM_SWITCH(sprite);
+ CHANGE_PRIORITY(sprite, data);
+ data->unk0_0d = 0;
+ }
+ data->unk0_1 = 3;
+ break;
+ }
+
+ sprite->pos2.x = ((s32)(data->unkC[data->unk0_0b]) * gSineTable[data->unk2]) >> 8;
+ matrixNum = sprite->oam.matrixNum;
+
+ sinIndex = ((-sprite->pos2.x >> 1) + data->unkA) & 0xFF;
+ sinVal = gSineTable[sinIndex];
+
+ gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
+ gOamMatrices[matrixNum].b = sinVal;
+ gOamMatrices[matrixNum].c = -sinVal;
+
+ data->unk8 += data->unk6;
+ sprite->pos1.y = (s16)(data->unk8 >> 8);
+ if (data->unk4 & 0x8000)
+ data->unk2 = (data->unk2 - (data->unk4 & 0x7FFF)) & 0xFF;
+ else
+ data->unk2 = (data->unk2 + (data->unk4 & 0x7FFF)) & 0xFF;
+ // 080dacfe
+ if (sprite->pos1.y + sprite->pos2.y >= data->unkE_1)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = sub_80DA48C;
}
}
-#else
-NAKED
-void sub_80DA6F0(struct Sprite *sprite)
-{
- asm_unified("push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- adds r5, r0, 0\n\
- movs r6, 0\n\
- movs r0, 0x2E\n\
- adds r0, r5\n\
- mov r12, r0\n\
- ldrb r2, [r0]\n\
- movs r7, 0x1\n\
- movs r1, 0x1\n\
- mov r9, r1\n\
- mov r0, r9\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _080DA730\n\
- mov r3, r12\n\
- ldrb r0, [r3, 0x1]\n\
- adds r1, r0, 0\n\
- adds r1, 0xFF\n\
- strb r1, [r3, 0x1]\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080DA724\n\
- b _080DAD1A\n\
-_080DA724:\n\
- movs r0, 0x2\n\
- negs r0, r0\n\
- ands r0, r2\n\
- strb r0, [r3]\n\
- strb r6, [r3, 0x1]\n\
- b _080DAD1A\n\
-_080DA730:\n\
- mov r4, r12\n\
- ldrh r0, [r4, 0x2]\n\
- lsrs r4, r0, 6\n\
- mov r8, r0\n\
- cmp r4, 0x1\n\
- bne _080DA73E\n\
- b _080DA896\n\
-_080DA73E:\n\
- cmp r4, 0x1\n\
- bgt _080DA748\n\
- cmp r4, 0\n\
- beq _080DA756\n\
- b _080DAC52\n\
-_080DA748:\n\
- cmp r4, 0x2\n\
- bne _080DA74E\n\
- b _080DA9C8\n\
-_080DA74E:\n\
- cmp r4, 0x3\n\
- bne _080DA754\n\
- b _080DAB0E\n\
-_080DA754:\n\
- b _080DAC52\n\
-_080DA756:\n\
- lsls r1, r2, 24\n\
- lsrs r0, r1, 28\n\
- cmp r0, 0x1\n\
- bne _080DA76C\n\
- movs r0, 0x8\n\
- orrs r0, r2\n\
- orrs r0, r7\n\
- mov r1, r12\n\
- strb r0, [r1]\n\
- strb r6, [r1, 0x1]\n\
- b _080DA88A\n\
-_080DA76C:\n\
- lsrs r0, r1, 28\n\
- cmp r0, 0x3\n\
- bne _080DA790\n\
- lsls r0, r2, 30\n\
- lsrs r0, 31\n\
- movs r1, 0x1\n\
- eors r0, r1\n\
- ands r0, r7\n\
- lsls r0, 1\n\
- movs r1, 0x3\n\
- negs r1, r1\n\
- ands r1, r2\n\
- orrs r1, r0\n\
- orrs r1, r7\n\
- mov r2, r12\n\
- strb r1, [r2]\n\
- strb r6, [r2, 0x1]\n\
- b _080DA88A\n\
-_080DA790:\n\
- movs r0, 0x8\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _080DA88A\n\
- adds r3, r5, 0\n\
- adds r3, 0x3F\n\
- ldrb r2, [r3]\n\
- lsls r1, r2, 31\n\
- lsrs r1, 31\n\
- movs r4, 0x1\n\
- eors r1, r4\n\
- ands r1, r7\n\
- movs r6, 0x2\n\
- negs r6, r6\n\
- adds r0, r6, 0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r3]\n\
- lsls r0, 31\n\
- lsrs r0, 31\n\
- adds r1, r5, 0\n\
- adds r1, 0x2A\n\
- strb r0, [r1]\n\
- ldrb r0, [r3]\n\
- movs r1, 0x4\n\
- orrs r0, r1\n\
- movs r1, 0x11\n\
- negs r1, r1\n\
- ands r0, r1\n\
- strb r0, [r3]\n\
- mov r3, r12\n\
- ldrb r1, [r3]\n\
- movs r0, 0x4\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080DA87A\n\
- ldr r0, _080DA80C @ =gMain\n\
- ldr r1, _080DA810 @ =0x0000043d\n\
- adds r0, r1\n\
- ldrb r1, [r0]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080DA82E\n\
- ldrb r1, [r3, 0xE]\n\
- mov r0, r9\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080DA814\n\
- ldrb r2, [r5, 0x5]\n\
- lsls r1, r2, 28\n\
- lsrs r1, 30\n\
- subs r1, 0x1\n\
- movs r0, 0x3\n\
- ands r1, r0\n\
- lsls r1, 2\n\
- movs r0, 0xD\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x5]\n\
- b _080DA868\n\
- .align 2, 0\n\
-_080DA80C: .4byte gMain\n\
-_080DA810: .4byte 0x0000043d\n\
-_080DA814:\n\
- ldrb r2, [r5, 0x5]\n\
- lsls r1, r2, 28\n\
- lsrs r1, 30\n\
- adds r1, 0x1\n\
- movs r0, 0x3\n\
- ands r1, r0\n\
- lsls r1, 2\n\
- movs r0, 0xD\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x5]\n\
- b _080DA866\n\
-_080DA82E:\n\
- mov r0, r12\n\
- ldrb r1, [r0, 0xE]\n\
- mov r0, r9\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080DA85C\n\
- adds r1, r5, 0\n\
- adds r1, 0x43\n\
- ldrb r0, [r1]\n\
- subs r0, 0xC\n\
- strb r0, [r1]\n\
- mov r1, r12\n\
- ldrb r2, [r1, 0xE]\n\
- lsls r0, r2, 31\n\
- lsrs r0, 31\n\
- eors r0, r4\n\
- ands r0, r7\n\
- adds r1, r6, 0\n\
- ands r1, r2\n\
- orrs r1, r0\n\
- mov r2, r12\n\
- strb r1, [r2, 0xE]\n\
- b _080DA87A\n\
-_080DA85C:\n\
- adds r1, r5, 0\n\
- adds r1, 0x43\n\
- ldrb r0, [r1]\n\
- adds r0, 0xC\n\
- strb r0, [r1]\n\
-_080DA866:\n\
- mov r3, r12\n\
-_080DA868:\n\
- ldrb r2, [r3, 0xE]\n\
- lsls r0, r2, 31\n\
- lsrs r0, 31\n\
- eors r0, r4\n\
- ands r0, r7\n\
- adds r1, r6, 0\n\
- ands r1, r2\n\
- orrs r1, r0\n\
- strb r1, [r3, 0xE]\n\
-_080DA87A:\n\
- mov r4, r12\n\
- ldrb r1, [r4]\n\
- movs r0, 0x9\n\
- negs r0, r0\n\
- ands r0, r1\n\
- strb r0, [r4]\n\
- ldrh r0, [r4, 0x2]\n\
- mov r8, r0\n\
-_080DA88A:\n\
- mov r2, r12\n\
- ldrb r1, [r2]\n\
- movs r0, 0xF\n\
- ands r0, r1\n\
- strb r0, [r2]\n\
- b _080DAC52\n\
-_080DA896:\n\
- lsls r1, r2, 24\n\
- lsrs r0, r1, 28\n\
- cmp r0, 0\n\
- bne _080DA8AC\n\
- movs r0, 0x8\n\
- orrs r0, r2\n\
- orrs r0, r7\n\
- mov r3, r12\n\
- strb r0, [r3]\n\
- strb r6, [r3, 0x1]\n\
- b _080DA9BC\n\
-_080DA8AC:\n\
- lsrs r0, r1, 28\n\
- cmp r0, 0x2\n\
- bne _080DA8BE\n\
- adds r0, r2, 0\n\
- orrs r0, r7\n\
- mov r4, r12\n\
- strb r0, [r4]\n\
- strb r6, [r4, 0x1]\n\
- b _080DA9BC\n\
-_080DA8BE:\n\
- movs r0, 0x8\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _080DA9BC\n\
- adds r3, r5, 0\n\
- adds r3, 0x3F\n\
- ldrb r2, [r3]\n\
- lsls r1, r2, 31\n\
- lsrs r1, 31\n\
- movs r4, 0x1\n\
- eors r1, r4\n\
- ands r1, r7\n\
- movs r6, 0x2\n\
- negs r6, r6\n\
- adds r0, r6, 0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r3]\n\
- lsls r0, 31\n\
- lsrs r0, 31\n\
- adds r1, r5, 0\n\
- adds r1, 0x2A\n\
- strb r0, [r1]\n\
- ldrb r0, [r3]\n\
- movs r1, 0x4\n\
- orrs r0, r1\n\
- movs r1, 0x11\n\
- negs r1, r1\n\
- ands r0, r1\n\
- strb r0, [r3]\n\
- mov r0, r12\n\
- ldrb r1, [r0]\n\
- movs r0, 0x4\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080DA9AC\n\
- ldr r0, _080DA940 @ =gMain\n\
- ldr r1, _080DA944 @ =0x0000043d\n\
- adds r0, r1\n\
- ldrb r1, [r0]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080DA962\n\
- mov r2, r12\n\
- ldrb r1, [r2, 0xE]\n\
- mov r0, r9\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080DA948\n\
- ldrb r2, [r5, 0x5]\n\
- lsls r1, r2, 28\n\
- lsrs r1, 30\n\
- subs r1, 0x1\n\
- movs r0, 0x3\n\
- ands r1, r0\n\
- lsls r1, 2\n\
- movs r0, 0xD\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x5]\n\
- mov r3, r12\n\
- b _080DA978\n\
- .align 2, 0\n\
-_080DA940: .4byte gMain\n\
-_080DA944: .4byte 0x0000043d\n\
-_080DA948:\n\
- ldrb r2, [r5, 0x5]\n\
- lsls r1, r2, 28\n\
- lsrs r1, 30\n\
- adds r1, 0x1\n\
- movs r0, 0x3\n\
- ands r1, r0\n\
- lsls r1, 2\n\
- movs r0, 0xD\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x5]\n\
- b _080DA996\n\
-_080DA962:\n\
- mov r3, r12\n\
- ldrb r1, [r3, 0xE]\n\
- mov r0, r9\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080DA98C\n\
- adds r1, r5, 0\n\
- adds r1, 0x43\n\
- ldrb r0, [r1]\n\
- subs r0, 0xC\n\
- strb r0, [r1]\n\
-_080DA978:\n\
- ldrb r2, [r3, 0xE]\n\
- lsls r0, r2, 31\n\
- lsrs r0, 31\n\
- eors r0, r4\n\
- ands r0, r7\n\
- adds r1, r6, 0\n\
- ands r1, r2\n\
- orrs r1, r0\n\
- strb r1, [r3, 0xE]\n\
- b _080DA9AC\n\
-_080DA98C:\n\
- adds r1, r5, 0\n\
- adds r1, 0x43\n\
- ldrb r0, [r1]\n\
- adds r0, 0xC\n\
- strb r0, [r1]\n\
-_080DA996:\n\
- mov r0, r12\n\
- ldrb r2, [r0, 0xE]\n\
- lsls r0, r2, 31\n\
- lsrs r0, 31\n\
- eors r0, r4\n\
- ands r0, r7\n\
- adds r1, r6, 0\n\
- ands r1, r2\n\
- orrs r1, r0\n\
- mov r2, r12\n\
- strb r1, [r2, 0xE]\n\
-_080DA9AC:\n\
- mov r3, r12\n\
- ldrb r1, [r3]\n\
- movs r0, 0x9\n\
- negs r0, r0\n\
- ands r0, r1\n\
- strb r0, [r3]\n\
- ldrh r4, [r3, 0x2]\n\
- mov r8, r4\n\
-_080DA9BC:\n\
- mov r1, r12\n\
- ldrb r0, [r1]\n\
- movs r1, 0xF\n\
- ands r1, r0\n\
- movs r0, 0x10\n\
- b _080DAC4C\n\
-_080DA9C8:\n\
- lsls r1, r2, 24\n\
- lsrs r0, r1, 28\n\
- cmp r0, 0x3\n\
- bne _080DA9DE\n\
- movs r0, 0x8\n\
- orrs r0, r2\n\
- orrs r0, r7\n\
- mov r3, r12\n\
- strb r0, [r3]\n\
- strb r6, [r3, 0x1]\n\
- b _080DAAFE\n\
-_080DA9DE:\n\
- lsrs r0, r1, 28\n\
- cmp r0, 0x1\n\
- bne _080DA9F0\n\
- adds r0, r2, 0\n\
- orrs r0, r7\n\
- mov r4, r12\n\
- strb r0, [r4]\n\
- strb r6, [r4, 0x1]\n\
- b _080DAAFE\n\
-_080DA9F0:\n\
- movs r0, 0x8\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- bne _080DA9FA\n\
- b _080DAAFE\n\
-_080DA9FA:\n\
- adds r3, r5, 0\n\
- adds r3, 0x3F\n\
- ldrb r2, [r3]\n\
- lsls r1, r2, 31\n\
- lsrs r1, 31\n\
- movs r6, 0x1\n\
- eors r1, r6\n\
- ands r1, r7\n\
- movs r0, 0x2\n\
- negs r0, r0\n\
- mov r8, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r3]\n\
- lsls r0, 31\n\
- lsrs r0, 31\n\
- adds r1, r5, 0\n\
- adds r1, 0x2A\n\
- strb r0, [r1]\n\
- ldrb r0, [r3]\n\
- movs r1, 0x4\n\
- orrs r0, r1\n\
- movs r1, 0x11\n\
- negs r1, r1\n\
- ands r0, r1\n\
- strb r0, [r3]\n\
- mov r2, r12\n\
- ldrb r1, [r2]\n\
- movs r0, 0x4\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080DAAEC\n\
- ldr r0, _080DAA6C @ =gMain\n\
- ldr r3, _080DAA70 @ =0x0000043d\n\
- adds r0, r3\n\
- ldrb r0, [r0]\n\
- ands r4, r0\n\
- cmp r4, 0\n\
- beq _080DAAA4\n\
- ldrb r1, [r2, 0xE]\n\
- mov r0, r9\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080DAA74\n\
- ldrb r2, [r5, 0x5]\n\
- lsls r1, r2, 28\n\
- lsrs r1, 30\n\
- subs r1, 0x1\n\
- movs r0, 0x3\n\
- ands r1, r0\n\
- lsls r1, 2\n\
- movs r0, 0xD\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x5]\n\
- b _080DAAD8\n\
- .align 2, 0\n\
-_080DAA6C: .4byte gMain\n\
-_080DAA70: .4byte 0x0000043d\n\
-_080DAA74:\n\
- ldrb r2, [r5, 0x5]\n\
- lsls r1, r2, 28\n\
- lsrs r1, 30\n\
- adds r1, 0x1\n\
- movs r0, 0x3\n\
- ands r1, r0\n\
- lsls r1, 2\n\
- movs r0, 0xD\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x5]\n\
- mov r0, r12\n\
- ldrb r2, [r0, 0xE]\n\
- lsls r0, r2, 31\n\
- lsrs r0, 31\n\
- eors r0, r6\n\
- ands r0, r7\n\
- mov r1, r8\n\
- ands r1, r2\n\
- orrs r1, r0\n\
- mov r2, r12\n\
- strb r1, [r2, 0xE]\n\
- b _080DAAEC\n\
-_080DAAA4:\n\
- mov r3, r12\n\
- ldrb r1, [r3, 0xE]\n\
- mov r0, r9\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080DAACE\n\
- adds r1, r5, 0\n\
- adds r1, 0x43\n\
- ldrb r0, [r1]\n\
- subs r0, 0xC\n\
- strb r0, [r1]\n\
- ldrb r2, [r3, 0xE]\n\
- lsls r0, r2, 31\n\
- lsrs r0, 31\n\
- eors r0, r6\n\
- ands r0, r7\n\
- mov r1, r8\n\
- ands r1, r2\n\
- orrs r1, r0\n\
- strb r1, [r3, 0xE]\n\
- b _080DAAEC\n\
-_080DAACE:\n\
- adds r1, r5, 0\n\
- adds r1, 0x43\n\
- ldrb r0, [r1]\n\
- adds r0, 0xC\n\
- strb r0, [r1]\n\
-_080DAAD8:\n\
- mov r4, r12\n\
- ldrb r2, [r4, 0xE]\n\
- lsls r0, r2, 31\n\
- lsrs r0, 31\n\
- eors r0, r6\n\
- ands r0, r7\n\
- mov r1, r8\n\
- ands r1, r2\n\
- orrs r1, r0\n\
- strb r1, [r4, 0xE]\n\
-_080DAAEC:\n\
- mov r0, r12\n\
- ldrb r1, [r0]\n\
- movs r0, 0x9\n\
- negs r0, r0\n\
- ands r0, r1\n\
- mov r1, r12\n\
- strb r0, [r1]\n\
- ldrh r2, [r1, 0x2]\n\
- mov r8, r2\n\
-_080DAAFE:\n\
- mov r3, r12\n\
- ldrb r0, [r3]\n\
- movs r1, 0xF\n\
- ands r1, r0\n\
- movs r0, 0x20\n\
- orrs r1, r0\n\
- strb r1, [r3]\n\
- b _080DAC52\n\
-_080DAB0E:\n\
- lsls r1, r2, 24\n\
- lsrs r0, r1, 28\n\
- cmp r0, 0x2\n\
- bne _080DAB20\n\
- movs r0, 0x8\n\
- orrs r0, r2\n\
- mov r4, r12\n\
- strb r0, [r4]\n\
- b _080DAC42\n\
-_080DAB20:\n\
- lsrs r0, r1, 28\n\
- cmp r0, 0\n\
- bne _080DAB44\n\
- lsls r0, r2, 30\n\
- lsrs r0, 31\n\
- movs r1, 0x1\n\
- eors r0, r1\n\
- ands r0, r7\n\
- lsls r0, 1\n\
- movs r1, 0x3\n\
- negs r1, r1\n\
- ands r1, r2\n\
- orrs r1, r0\n\
- orrs r1, r7\n\
- mov r0, r12\n\
- strb r1, [r0]\n\
- strb r6, [r0, 0x1]\n\
- b _080DAC42\n\
-_080DAB44:\n\
- movs r0, 0x8\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _080DAC42\n\
- adds r3, r5, 0\n\
- adds r3, 0x3F\n\
- ldrb r2, [r3]\n\
- lsls r1, r2, 31\n\
- lsrs r1, 31\n\
- movs r4, 0x1\n\
- eors r1, r4\n\
- ands r1, r7\n\
- movs r6, 0x2\n\
- negs r6, r6\n\
- adds r0, r6, 0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r3]\n\
- lsls r0, 31\n\
- lsrs r0, 31\n\
- adds r1, r5, 0\n\
- adds r1, 0x2A\n\
- strb r0, [r1]\n\
- ldrb r0, [r3]\n\
- movs r1, 0x4\n\
- orrs r0, r1\n\
- movs r1, 0x11\n\
- negs r1, r1\n\
- ands r0, r1\n\
- strb r0, [r3]\n\
- mov r2, r12\n\
- ldrb r1, [r2]\n\
- movs r0, 0x4\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080DAC32\n\
- ldr r0, _080DABC4 @ =gMain\n\
- ldr r3, _080DABC8 @ =0x0000043d\n\
- adds r0, r3\n\
- ldrb r1, [r0]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080DABE6\n\
- ldrb r1, [r2, 0xE]\n\
- mov r0, r9\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080DABCC\n\
- ldrb r2, [r5, 0x5]\n\
- lsls r1, r2, 28\n\
- lsrs r1, 30\n\
- subs r1, 0x1\n\
- movs r0, 0x3\n\
- ands r1, r0\n\
- lsls r1, 2\n\
- movs r0, 0xD\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x5]\n\
- mov r0, r12\n\
- ldrb r2, [r0, 0xE]\n\
- b _080DAC00\n\
- .align 2, 0\n\
-_080DABC4: .4byte gMain\n\
-_080DABC8: .4byte 0x0000043d\n\
-_080DABCC:\n\
- ldrb r2, [r5, 0x5]\n\
- lsls r1, r2, 28\n\
- lsrs r1, 30\n\
- adds r1, 0x1\n\
- movs r0, 0x3\n\
- ands r1, r0\n\
- lsls r1, 2\n\
- movs r0, 0xD\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x5]\n\
- b _080DAC1E\n\
-_080DABE6:\n\
- mov r0, r12\n\
- ldrb r1, [r0, 0xE]\n\
- mov r0, r9\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080DAC14\n\
- adds r1, r5, 0\n\
- adds r1, 0x43\n\
- ldrb r0, [r1]\n\
- subs r0, 0xC\n\
- strb r0, [r1]\n\
- mov r1, r12\n\
- ldrb r2, [r1, 0xE]\n\
-_080DAC00:\n\
- lsls r0, r2, 31\n\
- lsrs r0, 31\n\
- eors r0, r4\n\
- ands r0, r7\n\
- adds r1, r6, 0\n\
- ands r1, r2\n\
- orrs r1, r0\n\
- mov r2, r12\n\
- strb r1, [r2, 0xE]\n\
- b _080DAC32\n\
-_080DAC14:\n\
- adds r1, r5, 0\n\
- adds r1, 0x43\n\
- ldrb r0, [r1]\n\
- adds r0, 0xC\n\
- strb r0, [r1]\n\
-_080DAC1E:\n\
- mov r3, r12\n\
- ldrb r2, [r3, 0xE]\n\
- lsls r0, r2, 31\n\
- lsrs r0, 31\n\
- eors r0, r4\n\
- ands r0, r7\n\
- adds r1, r6, 0\n\
- ands r1, r2\n\
- orrs r1, r0\n\
- strb r1, [r3, 0xE]\n\
-_080DAC32:\n\
- mov r4, r12\n\
- ldrb r1, [r4]\n\
- movs r0, 0x9\n\
- negs r0, r0\n\
- ands r0, r1\n\
- strb r0, [r4]\n\
- ldrh r0, [r4, 0x2]\n\
- mov r8, r0\n\
-_080DAC42:\n\
- mov r1, r12\n\
- ldrb r0, [r1]\n\
- movs r1, 0xF\n\
- ands r1, r0\n\
- movs r0, 0x30\n\
-_080DAC4C:\n\
- orrs r1, r0\n\
- mov r2, r12\n\
- strb r1, [r2]\n\
-_080DAC52:\n\
- mov r3, r12\n\
- ldrb r1, [r3]\n\
- lsls r1, 30\n\
- lsrs r1, 31\n\
- mov r0, r12\n\
- adds r0, 0xC\n\
- adds r0, r1\n\
- ldrb r1, [r0]\n\
- ldr r3, _080DACE0 @ =gSineTable\n\
- mov r4, r8\n\
- lsls r0, r4, 1\n\
- adds r0, r3\n\
- movs r2, 0\n\
- ldrsh r0, [r0, r2]\n\
- muls r0, r1\n\
- asrs r0, 8\n\
- strh r0, [r5, 0x24]\n\
- ldrb r2, [r5, 0x3]\n\
- lsls r2, 26\n\
- lsrs r2, 27\n\
- movs r4, 0x24\n\
- ldrsh r0, [r5, r4]\n\
- negs r0, r0\n\
- asrs r0, 1\n\
- mov r1, r12\n\
- ldrb r1, [r1, 0xA]\n\
- adds r0, r1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r1, r0, 1\n\
- adds r1, r3\n\
- ldrh r6, [r1]\n\
- ldr r1, _080DACE4 @ =gOamMatrices\n\
- lsls r2, 3\n\
- adds r2, r1\n\
- adds r0, 0x40\n\
- lsls r0, 1\n\
- adds r0, r3\n\
- ldrh r0, [r0]\n\
- strh r0, [r2, 0x6]\n\
- strh r0, [r2]\n\
- strh r6, [r2, 0x2]\n\
- lsls r0, r6, 16\n\
- asrs r0, 16\n\
- negs r0, r0\n\
- strh r0, [r2, 0x4]\n\
- mov r2, r12\n\
- ldrh r0, [r2, 0x6]\n\
- ldrh r3, [r2, 0x8]\n\
- adds r0, r3\n\
- strh r0, [r2, 0x8]\n\
- lsls r0, 16\n\
- lsrs r0, 24\n\
- strh r0, [r5, 0x22]\n\
- movs r4, 0x4\n\
- ldrsh r0, [r2, r4]\n\
- movs r1, 0x80\n\
- lsls r1, 8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080DACE8\n\
- ldrh r0, [r2, 0x4]\n\
- subs r1, 0x1\n\
- ands r1, r0\n\
- ldrh r0, [r2, 0x2]\n\
- subs r0, r1\n\
- movs r1, 0xFF\n\
- ands r0, r1\n\
- strh r0, [r2, 0x2]\n\
- b _080DACFE\n\
- .align 2, 0\n\
-_080DACE0: .4byte gSineTable\n\
-_080DACE4: .4byte gOamMatrices\n\
-_080DACE8:\n\
- mov r1, r12\n\
- ldrh r0, [r1, 0x4]\n\
- ldr r1, _080DAD28 @ =0x00007fff\n\
- ands r1, r0\n\
- mov r2, r12\n\
- ldrh r2, [r2, 0x2]\n\
- adds r1, r2\n\
- movs r0, 0xFF\n\
- ands r1, r0\n\
- mov r3, r12\n\
- strh r1, [r3, 0x2]\n\
-_080DACFE:\n\
- movs r4, 0x22\n\
- ldrsh r1, [r5, r4]\n\
- movs r2, 0x26\n\
- ldrsh r0, [r5, r2]\n\
- adds r1, r0\n\
- mov r3, r12\n\
- ldrh r0, [r3, 0xE]\n\
- lsrs r0, 1\n\
- cmp r1, r0\n\
- blt _080DAD1A\n\
- movs r0, 0\n\
- strh r0, [r5, 0x2E]\n\
- ldr r0, _080DAD2C @ =sub_80DA48C\n\
- str r0, [r5, 0x1C]\n\
-_080DAD1A:\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080DAD28: .4byte 0x00007fff\n\
-_080DAD2C: .4byte sub_80DA48C\n");
-};
-#endif
-void sub_80DAD30(struct Sprite *sprite)
+static void sub_80DAD30(struct Sprite *sprite)
{
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
@@ -1887,9 +839,9 @@ void sub_80DAD30(struct Sprite *sprite)
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
}
-void sub_80DAD84(struct Sprite * sprite)
+static void sub_80DAD84(struct Sprite * sprite)
{
- s16 matrixNum;
+ u32 matrixNum;
s16 rand;
s16 sinVal;
@@ -1930,7 +882,7 @@ void sub_80DAD84(struct Sprite * sprite)
sprite->pos2.x = sprite->pos2.y = 0;
matrixNum = sprite->oam.matrixNum;
- sprite->data[1] = (u8) (sprite->data[1] >> 8);
+ sprite->data[1] = ((u16)sprite->data[1] >> 8);
rand = Random();
if (rand & 0x8000)
@@ -1957,217 +909,66 @@ void sub_80DAD84(struct Sprite * sprite)
}
-#ifdef NONMATCHING
-void sub_80DAF0C(struct Sprite *sprite)
+static void sub_80DAF0C(struct Sprite *sprite)
{
-
- /* NONMATCHING - Functionally equivalent
- *
- * differences:
- *
- * asm contains useless:
- * movs r1, 0
- * mov r8, r1
- * where r8 is never used can't be matched
- *
- * 0x8001 and 0x8002 loaded then added with 0 to r0 instead of loaded straight there */
-
- u16 *data;
u16 dataCpy[8];
- int higher;
-
- data = sprite->data;
+ struct FeatherDanceData *data = (struct FeatherDanceData *)sprite->data;
- if (++sprite->data[0] > 4)
- {
- sprite->pos2.x = (sprite->data[4] * sprite->data[6]) >> 8;
- sprite->pos2.y = (sprite->data[5] * sprite->data[6]) >> 8;
-
- sprite->data[6] += sprite->data[3] & 0xff;
-
- if (sprite->data[6] >= (sprite->data[2] & 0xff))
- {
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
+ if (++sprite->data[0] < 5)
+ return;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->pos2.x = (sprite->data[4] * sprite->data[6]) >> 8;
+ sprite->pos2.y = (sprite->data[5] * sprite->data[6]) >> 8;
- memcpy(dataCpy, data, 16);
- memset(data, 0, 16);
+ sprite->data[6] += sprite->data[3] & 0xff;
- data[4] = sprite->pos1.y << 8;
- data[3] = dataCpy[3] >> 8;
- data[1] = 0;
- data[5] = dataCpy[1];
+ if (sprite->data[6] < (sprite->data[2] & 0xff))
+ return;
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
- if (sprite->animNum != 0)
- {
- if (data[3] & 8)
- {
- data[2] = 0x8001;
- }
- else
- {
- data[2] = 0x8002;
- }
- }
- else
- {
- if (data[3] & 8)
- {
- data[2] = 1;
- }
- else
- {
- data[2] = 2;
- }
- }
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
- ((u8 *) data)[12] = dataCpy[2] >> 8;
- ((u8 *) data)[13] = (u8) data[6] - 2;
+ memcpy(dataCpy, sprite->data, 16);
+ memset(sprite->data, 0, 16);
- higher = dataCpy[7] << 1;
- data[7] = (data[7] & 1) | higher;
+ data->unk8 = (u16)sprite->pos1.y << 8;
+ data->unk6 = dataCpy[3] >> 8;
+ data->unk2 = 0;
+ data->unkA = dataCpy[1];
- sprite->callback = sub_80DA6F0;
+ if (sprite->animNum != 0)
+ {
+ if (data->unk6 & 8)
+ {
+ data->unk4 = 0x8001;
+ }
+ else
+ {
+ data->unk4 = 0x8002;
}
}
-}
-#else
-NAKED
-void sub_80DAF0C(struct Sprite *sprite)
-{
- asm_unified("push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- sub sp, 0x10\n\
- adds r4, r0, 0\n\
- adds r5, r4, 0\n\
- adds r5, 0x2E\n\
- ldrh r0, [r4, 0x2E]\n\
- adds r0, 0x1\n\
- movs r1, 0\n\
- mov r8, r1\n\
- movs r7, 0\n\
- strh r0, [r4, 0x2E]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x4\n\
- ble _080DAFF0\n\
- movs r2, 0x36\n\
- ldrsh r1, [r4, r2]\n\
- movs r2, 0x3A\n\
- ldrsh r0, [r4, r2]\n\
- muls r0, r1\n\
- asrs r6, r0, 8\n\
- strh r6, [r4, 0x24]\n\
- movs r0, 0x38\n\
- ldrsh r1, [r4, r0]\n\
- movs r2, 0x3A\n\
- ldrsh r0, [r4, r2]\n\
- muls r0, r1\n\
- asrs r3, r0, 8\n\
- strh r3, [r4, 0x26]\n\
- ldrh r2, [r4, 0x34]\n\
- movs r1, 0xFF\n\
- adds r0, r1, 0\n\
- ands r0, r2\n\
- ldrh r2, [r4, 0x3A]\n\
- adds r0, r2\n\
- strh r0, [r4, 0x3A]\n\
- ldrh r2, [r4, 0x32]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- ands r1, r2\n\
- cmp r0, r1\n\
- blt _080DAFF0\n\
- ldrh r0, [r4, 0x20]\n\
- adds r0, r6\n\
- strh r0, [r4, 0x20]\n\
- ldrh r0, [r4, 0x22]\n\
- adds r0, r3\n\
- strh r0, [r4, 0x22]\n\
- strh r7, [r4, 0x24]\n\
- strh r7, [r4, 0x26]\n\
- mov r0, sp\n\
- adds r1, r5, 0\n\
- movs r2, 0x10\n\
- bl memcpy\n\
- adds r0, r5, 0\n\
- movs r1, 0\n\
- movs r2, 0x10\n\
- bl memset\n\
- ldrh r0, [r4, 0x22]\n\
- lsls r0, 8\n\
- strh r0, [r5, 0x8]\n\
- mov r0, sp\n\
- ldrh r0, [r0, 0x6]\n\
- lsrs r1, r0, 8\n\
- strh r1, [r5, 0x6]\n\
- strh r7, [r5, 0x2]\n\
- mov r0, sp\n\
- ldrh r0, [r0, 0x2]\n\
- strh r0, [r5, 0xA]\n\
- adds r0, r4, 0\n\
- adds r0, 0x2A\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _080DAFC0\n\
- movs r0, 0x8\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _080DAFB8\n\
- ldr r0, _080DAFB4 @ =0x00008001\n\
- b _080DAFCE\n\
- .align 2, 0\n\
- _080DAFB4: .4byte 0x00008001\n\
- _080DAFB8:\n\
- ldr r0, _080DAFBC @ =0x00008002\n\
- b _080DAFCE\n\
- .align 2, 0\n\
- _080DAFBC: .4byte 0x00008002\n\
- _080DAFC0:\n\
- movs r0, 0x8\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _080DAFCC\n\
- movs r0, 0x1\n\
- b _080DAFCE\n\
- _080DAFCC:\n\
- movs r0, 0x2\n\
- _080DAFCE:\n\
- strh r0, [r5, 0x4]\n\
- mov r0, sp\n\
- ldrh r0, [r0, 0x4]\n\
- lsrs r0, 8\n\
- strb r0, [r5, 0xC]\n\
- subs r0, 0x2\n\
- strb r0, [r5, 0xD]\n\
- mov r0, sp\n\
- ldrh r1, [r0, 0xE]\n\
- lsls r1, 1\n\
- ldrh r2, [r5, 0xE]\n\
- movs r0, 0x1\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strh r0, [r5, 0xE]\n\
- ldr r0, _080DAFFC @ =sub_80DA6F0\n\
- str r0, [r4, 0x1C]\n\
- _080DAFF0:\n\
- add sp, 0x10\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
- _080DAFFC: .4byte sub_80DA6F0\n");
+ else
+ {
+ if (data->unk6 & 8)
+ {
+ data->unk4 = 1;
+ }
+ else
+ {
+ data->unk4 = 2;
+ }
+ }
+
+ data->unkC[0] = (u8)(dataCpy[2] >> 8);
+ data->unkC[1] = data->unkC[0] - 2;
+ data->unkE_1 = dataCpy[7];
+ sprite->callback = DestroyAnimSpriteAfterTimer;
}
-#endif
-void sub_80DB000(struct Sprite *sprite)
+static void sub_80DB000(struct Sprite *sprite)
{
u16 arg;
u8 mult;
@@ -2199,7 +1000,7 @@ void sub_80DB000(struct Sprite *sprite)
sprite->callback = sub_80DB0A0;
}
-void sub_80DB0A0(struct Sprite *sprite)
+static void sub_80DB0A0(struct Sprite *sprite)
{
sprite->pos2.x += sprite->data[1] >> 8;
@@ -2210,7 +1011,7 @@ void sub_80DB0A0(struct Sprite *sprite)
StartSpriteAnim(sprite, 0);
}
- if (--sprite->data[7] == -1)
+ if (sprite->data[7]-- == 0)
{
DestroyAnimSprite(sprite);
}
@@ -2242,13 +1043,13 @@ void sub_80DB0E8(u8 task)
}
}
-void sub_80DB194(struct Sprite *sprite)
+static void sub_80DB194(struct Sprite *sprite)
{
switch (sprite->data[0])
{
case 0:
InitAnimSpritePos(sprite, 1);
- gSprites[GetAnimBattlerSpriteId(0)].invisible = 1;
+ gSprites[GetAnimBattlerSpriteId(0)].invisible = TRUE;
++sprite->data[0];
break;
case 1:
@@ -2259,7 +1060,7 @@ void sub_80DB194(struct Sprite *sprite)
}
}
-void sub_80DB1F4(struct Sprite *sprite)
+static void sub_80DB1F4(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -2279,22 +1080,22 @@ void sub_80DB1F4(struct Sprite *sprite)
sprite->pos2.y -= 10;
if (sprite->pos1.y + sprite->pos2.y < -32)
{
- gSprites[GetAnimBattlerSpriteId(0)].invisible = 0;
+ gSprites[GetAnimBattlerSpriteId(0)].invisible = FALSE;
DestroyAnimSprite(sprite);
}
}
}
-void sub_80DB288(struct Sprite *sprite)
+static void sub_80DB288(struct Sprite *sprite)
{
InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->callback = sub_80DB2D0;
- gSprites[GetAnimBattlerSpriteId(0)].invisible = 1;
+ gSprites[GetAnimBattlerSpriteId(0)].invisible = TRUE;
}
-void sub_80DB2D0(struct Sprite *sprite)
+static void sub_80DB2D0(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
@@ -2307,7 +1108,7 @@ void sub_80DB2D0(struct Sprite *sprite)
}
else
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
if (sprite->data[3]++ > 20)
{
sprite->callback = sub_80DB330;
@@ -2315,13 +1116,13 @@ void sub_80DB2D0(struct Sprite *sprite)
}
}
-void sub_80DB330(struct Sprite *sprite)
+static void sub_80DB330(struct Sprite *sprite)
{
sprite->pos2.y += sprite->data[2] >> 8;
if (sprite->pos1.y + sprite->pos2.y > -32)
{
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
}
if (sprite->pos2.y > 0)
@@ -2330,7 +1131,7 @@ void sub_80DB330(struct Sprite *sprite)
}
}
-void sub_80DB374(struct Sprite *sprite)
+static void sub_80DB374(struct Sprite *sprite)
{
u32 matrixNum;
int t1, t2;
@@ -2384,7 +1185,7 @@ void sub_80DB374(struct Sprite *sprite)
}
}
-void sub_80DB458(struct Sprite *sprite)
+static void sub_80DB458(struct Sprite *sprite)
{
int v1, v2;
@@ -2430,7 +1231,7 @@ void sub_80DB458(struct Sprite *sprite)
sprite->callback = sub_80DB508;
}
-void sub_80DB508(struct Sprite *sprite)
+static void sub_80DB508(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -2457,14 +1258,14 @@ void sub_80DB508(struct Sprite *sprite)
}
}
-void sub_80DB564(struct Sprite *sprite)
+static void sub_80DB564(struct Sprite *sprite)
{
sprite->data[6] = 0;
sprite->data[7] = 0x40;
sprite->callback = sub_80DB578;
}
-void sub_80DB578(struct Sprite *sprite)
+static void sub_80DB578(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -2484,7 +1285,7 @@ void sub_80DB578(struct Sprite *sprite)
}
}
-void sub_80DB5E4(struct Sprite *sprite)
+static void sub_80DB5E4(struct Sprite *sprite)
{
s16 posx, posy;
u16 rotation;
@@ -2509,7 +1310,7 @@ void sub_80DB5E4(struct Sprite *sprite)
sprite->callback = sub_80DB6A0;
}
-void sub_80DB6A0(struct Sprite *sprite)
+static void sub_80DB6A0(struct Sprite *sprite)
{
sprite->data[4] += sprite->data[6];
sprite->data[5] += sprite->data[7];
@@ -2528,12 +1329,12 @@ void unref_sub_80DB6E4(u8 taskId)
if (gBattleAnimArgs[0] == 0)
{
u8 spriteId = GetAnimBattlerSpriteId(0);
- gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].invisible = TRUE;
}
else
{
u8 spriteId = GetAnimBattlerSpriteId(0);
- gSprites[spriteId].invisible = 0;
+ gSprites[spriteId].invisible = FALSE;
}
DestroyAnimVisualTask(taskId);
diff --git a/src/battle/anim/ghost.c b/src/battle/anim/ghost.c
index eddf4aac0..ed5445c10 100644
--- a/src/battle/anim/ghost.c
+++ b/src/battle/anim/ghost.c
@@ -723,7 +723,7 @@ static void sub_80DE6B0(u8 taskId)
BlendPalette(task->data[4], 16, 0, RGB(13, 0, 15));
break;
case 2:
- gSprites[task->data[14]].invisible = 1;
+ gSprites[task->data[14]].invisible = TRUE;
obj_delete_but_dont_free_vram(&gSprites[task->data[0]]);
FreeSpritePaletteByTag(0x2771);
REG_BLDCNT = 0;
@@ -774,7 +774,7 @@ static void sub_80DE7B8(struct Sprite *sprite)
sprite->pos1.x = battler1X;
sprite->pos1.y = battler1Y;
sprite->callback = sub_80DE8D8;
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
}
static void sub_80DE8D8(struct Sprite *sprite)
@@ -1102,7 +1102,7 @@ static void sub_80DF018(struct Sprite *sprite)
REG_BLDALPHA = (16 - sprite->data[2]) | (sprite->data[2] << 8);
if (sprite->data[2] == 16)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->callback = sub_80DF090;
}
}
@@ -1153,7 +1153,7 @@ static void sub_80DF0B8(struct Sprite *sprite)
sprite->data[6] = (coeffB << 8) | coeffA;
if (coeffB == 16 && coeffA == 0)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->callback = sub_80DF18C;
}
}
@@ -1301,7 +1301,7 @@ static void sub_80DF3D8(struct Sprite *sprite)
static void sub_80DF49C(struct Sprite *sprite)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->data[5] = gBattlerSpriteIds[gBattleAnimAttacker];
sprite->data[0] = 128;
sprite->data[1] = 10;
diff --git a/src/battle/anim/ground.c b/src/battle/anim/ground.c
index 8d342a2f6..eebba4810 100644
--- a/src/battle/anim/ground.c
+++ b/src/battle/anim/ground.c
@@ -337,7 +337,7 @@ static void sub_80E1284(u8 taskId)
if (task->data[14] < 0)
task->data[14] = 0;
- gSprites[task->data[10]].invisible = 1;
+ gSprites[task->data[10]].invisible = TRUE;
task->data[0]++;
break;
case 1:
@@ -376,7 +376,7 @@ static void sub_80E1284(u8 taskId)
break;
case 4:
DestroyAnimVisualTask(taskId);
- gSprites[task->data[10]].invisible = 1;
+ gSprites[task->data[10]].invisible = TRUE;
break;
}
}
@@ -384,7 +384,7 @@ static void sub_80E1284(u8 taskId)
static void sub_80E143C(u8 taskId)
{
u8 spriteId = GetAnimBattlerSpriteId(0);
- gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].pos2.x = 0;
gSprites[spriteId].pos2.y = 0;
@@ -416,7 +416,7 @@ static void sub_80E14DC(u8 taskId)
{
case 0:
task->data[10] = GetAnimBattlerSpriteId(0);
- gSprites[task->data[10]].invisible = 0;
+ gSprites[task->data[10]].invisible = FALSE;
gSprites[task->data[10]].pos2.x = 0;
gSprites[task->data[10]].pos2.y = 160 - gSprites[task->data[10]].pos1.y;
task->data[0]++;
diff --git a/src/battle/anim/lunge.c b/src/battle/anim/lunge.c
index f23b34efc..da3eda56a 100644
--- a/src/battle/anim/lunge.c
+++ b/src/battle/anim/lunge.c
@@ -49,7 +49,7 @@ const struct SpriteTemplate gSpriteTemplate_83D6DFC =
void sub_80CD774(struct Sprite* sprite)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->data[0] = 0;
switch (gBattleAnimArgs[0])
{
diff --git a/src/battle/anim/normal.c b/src/battle/anim/normal.c
index 40aaba4b8..c3100a15d 100644
--- a/src/battle/anim/normal.c
+++ b/src/battle/anim/normal.c
@@ -355,7 +355,7 @@ static void AnimSimplePaletteBlend(struct Sprite *sprite)
{
u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]);
BeginNormalPaletteFade(selectedPalettes, gBattleAnimArgs[1], gBattleAnimArgs[2], gBattleAnimArgs[3], gBattleAnimArgs[4]);
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->callback = AnimSimplePaletteBlendStep;
}
@@ -401,7 +401,7 @@ static void sub_80E1E2C(struct Sprite *sprite)
selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]);
BlendPalettes(selectedPalettes, gBattleAnimArgs[4], gBattleAnimArgs[3]);
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->callback = sub_80E1E80;
}
@@ -724,7 +724,7 @@ static void sub_80E24B8(struct Sprite *sprite)
{
u16 var0;
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->data[0] = -gBattleAnimArgs[0];
sprite->data[1] = gBattleAnimArgs[1];
sprite->data[2] = gBattleAnimArgs[1];
@@ -1921,7 +1921,7 @@ void sub_80E4300(u8 taskId)
else
{
gTasks[taskId].data[0] = ewram17800[gBattleAnimAttacker].invisible;
- ewram17800[gBattleAnimAttacker].invisible = 1;
+ ewram17800[gBattleAnimAttacker].invisible = TRUE;
gTasks[taskId].func = sub_80E4368;
gAnimVisualTaskCount--;
}
diff --git a/src/battle/anim/note_spin.c b/src/battle/anim/note_spin.c
index 165820cc1..c2b4e169c 100644
--- a/src/battle/anim/note_spin.c
+++ b/src/battle/anim/note_spin.c
@@ -69,7 +69,7 @@ void sub_80D2E68(struct Sprite *sprite)
if (sprite->data[0] == 0)
{
sprite->data[1] = 120 - gBattleAnimArgs[0];
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
}
if (++sprite->data[0] == sprite->data[1])
diff --git a/src/battle/anim/psychic.c b/src/battle/anim/psychic.c
index 714f93030..8bff55f47 100644
--- a/src/battle/anim/psychic.c
+++ b/src/battle/anim/psychic.c
@@ -524,14 +524,14 @@ static void sub_80DB92C(struct Sprite *sprite)
u8 bank = bankCopy = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
if (IsAnimBankSpriteVisible(bank))
- gSprites[gBattlerSpriteIds[bank]].invisible = 0;
+ gSprites[gBattlerSpriteIds[bank]].invisible = FALSE;
bank = bankCopy ^ 2;
if (IsAnimBankSpriteVisible(bank))
- gSprites[gBattlerSpriteIds[bank]].invisible = 0;
+ gSprites[gBattlerSpriteIds[bank]].invisible = FALSE;
}
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->callback = sub_80DB9E4;
}
}
@@ -721,7 +721,7 @@ static void sub_80DBD58(u8 taskId)
}
else
{
- gSprites[task->data[0]].invisible = 1;
+ gSprites[task->data[0]].invisible = TRUE;
gSprites[task->data[0]].pos1.x = 272;
sub_8078F40(task->data[0]);
DestroyAnimVisualTask(taskId);
@@ -1144,7 +1144,7 @@ void sub_80DC700(struct Sprite *sprite)
if (sprite->data[1] == 0)
{
sprite->data[0]++;
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
}
}
diff --git a/src/battle/anim/ring.c b/src/battle/anim/ring.c
index 69e903921..999d10a59 100644
--- a/src/battle/anim/ring.c
+++ b/src/battle/anim/ring.c
@@ -432,7 +432,7 @@ static void sub_80D154C(struct Sprite* sprite)
{
if ((u16)gBattleAnimArgs[7] == 0xFFFF)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
if (sprite->data[7] == 0)
sprite->callback = sub_80D158C;
else
diff --git a/src/battle/anim/rock.c b/src/battle/anim/rock.c
index 6f0ed4616..a16be68e5 100644
--- a/src/battle/anim/rock.c
+++ b/src/battle/anim/rock.c
@@ -782,12 +782,12 @@ void sub_80DD8E8(struct Sprite *sprite)
sprite->data[0] = 3;
sprite->data[1] = gBattleAnimArgs[3];
sprite->callback = sub_80DD928;
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
}
static void sub_80DD928(struct Sprite *sprite)
{
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
if (sprite->data[3] != 0)
{
sprite->pos2.y = sprite->data[2] + sprite->data[3];
diff --git a/src/battle/anim/seed.c b/src/battle/anim/seed.c
index 9b0d87eca..2f679a454 100644
--- a/src/battle/anim/seed.c
+++ b/src/battle/anim/seed.c
@@ -69,7 +69,7 @@ static void AnimLeechSeedStep(struct Sprite* sprite)
{
if (TranslateAnimArc(sprite))
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->data[0] = 10;
sprite->callback = WaitAnimForDuration;
StoreSpriteCallbackInData(sprite, AnimLeechSeedSprouts);
@@ -78,7 +78,7 @@ static void AnimLeechSeedStep(struct Sprite* sprite)
static void AnimLeechSeedSprouts(struct Sprite* sprite)
{
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
StartSpriteAnim(sprite, 1);
sprite->data[0] = 60;
sprite->callback = WaitAnimForDuration;
diff --git a/src/battle/anim/shield.c b/src/battle/anim/shield.c
index 6e601efa3..4babfee65 100644
--- a/src/battle/anim/shield.c
+++ b/src/battle/anim/shield.c
@@ -86,7 +86,7 @@ static void sub_80CCE0C(struct Sprite* sprite)
REG_BLDALPHA = (sprite->data[7] << 8) | (16 - sprite->data[7]);
if (sprite->data[7] == 16)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->callback = sub_807861C;
}
}
diff --git a/src/battle/anim/unused_2.c b/src/battle/anim/unused_2.c
index 0209823b8..a1c1a0785 100644
--- a/src/battle/anim/unused_2.c
+++ b/src/battle/anim/unused_2.c
@@ -105,15 +105,15 @@ void unref_sub_80CCB6C(struct Sprite* sprite)
{
if (sprite->data[3] & 1)
{
- sprite->invisible = 0;
- gSprites[sprite->data[0]].invisible = 0;
- gSprites[sprite->data[1]].invisible = 0;
+ sprite->invisible = FALSE;
+ gSprites[sprite->data[0]].invisible = FALSE;
+ gSprites[sprite->data[1]].invisible = FALSE;
}
else
{
- sprite->invisible = 1;
- gSprites[sprite->data[0]].invisible = 1;
- gSprites[sprite->data[1]].invisible = 1;
+ sprite->invisible = TRUE;
+ gSprites[sprite->data[0]].invisible = TRUE;
+ gSprites[sprite->data[1]].invisible = TRUE;
}
sprite->data[2] = 0;
diff --git a/src/battle/anim/unused_7.c b/src/battle/anim/unused_7.c
index 1ab6663f1..5b4781842 100644
--- a/src/battle/anim/unused_7.c
+++ b/src/battle/anim/unused_7.c
@@ -60,5 +60,5 @@ void sub_80CF3C4(struct Sprite* sprite)
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[2] = a;
sprite->callback = sub_80CF374;
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
}
diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c
index d4589beb5..881f13c97 100644
--- a/src/battle_anim_effects_3.c
+++ b/src/battle_anim_effects_3.c
@@ -1235,7 +1235,7 @@ static void sub_812C268(struct Sprite *sprite)
REG_BLDALPHA = ((16 - sprite->data[1]) << 8) | sprite->data[1];
if (--sprite->data[1] < 0)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->callback = sub_812C2A4;
}
}
@@ -1295,7 +1295,7 @@ static void sub_812C380(struct Sprite *sprite)
REG_BLDALPHA = 0;
StartSpriteAffineAnim(sprite, 1);
sprite->data[2] = 0;
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->affineAnimPaused = 1;
sprite->callback = sub_812C40C;
}
@@ -1305,7 +1305,7 @@ static void sub_812C40C(struct Sprite *sprite)
{
if (sprite->data[2]++ > 9)
{
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
sprite->affineAnimPaused = 0;
if (sprite->affineAnimEnded)
sprite->callback = sub_812C450;
@@ -1362,7 +1362,7 @@ static void sub_812C4FC(struct Sprite *sprite)
}
if (sprite->data[0] == 0)
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
if (sprite->data[0] < 0)
{
@@ -1560,7 +1560,7 @@ static void sub_812C990(struct Sprite *sprite)
sub_8078764(sprite, FALSE);
sprite->oam.objMode = ST_OAM_OBJ_WINDOW;
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->callback = sub_812CA04;
}
@@ -1569,7 +1569,7 @@ static void sub_812CA04(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
if (sprite->affineAnimEnded)
sprite->data[0]++;
break;
@@ -1599,7 +1599,7 @@ static void sub_812CA04(struct Sprite *sprite)
case 5:
if (sprite->affineAnimEnded)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->callback = sub_812CAD0;
}
break;
@@ -2028,13 +2028,13 @@ static void sub_812D294(struct Sprite *sprite)
{
u16 var = sprite->data[0];
if ((var & 1) == 0)
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
else
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
}
if (sprite->data[0] > 30)
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
if (sprite->data[0] == 61)
{
@@ -2095,7 +2095,7 @@ static void sub_812D3AC(struct Sprite *sprite)
if (++sprite->data[3] == 9)
{
sprite->data[3] = 0;
- gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].invisible = TRUE;
sub_8078F40(spriteId);
sprite->data[0]++;
}
@@ -2178,11 +2178,11 @@ static void sub_812D5E8(struct Sprite *sprite)
else
{
if (sprite->data[1] == 2)
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
if (sprite->data[1] == 3)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->data[1] = -1;
}
@@ -2504,8 +2504,8 @@ static void sub_812DEAC(struct Sprite *sprite)
gSprites[spriteId2].data[2] = gBattleAnimArgs[1];
gSprites[spriteId1].data[7] = -1;
gSprites[spriteId2].data[7] = -1;
- gSprites[spriteId1].invisible = 1;
- gSprites[spriteId2].invisible = 1;
+ gSprites[spriteId1].invisible = TRUE;
+ gSprites[spriteId2].invisible = TRUE;
gSprites[spriteId1].callback = sub_812E0F8;
gSprites[spriteId2].callback = sub_812E0F8;
@@ -2525,19 +2525,19 @@ static void sub_812DFEC(struct Sprite *sprite)
sprite->data[3] = var0 & 0xFF;
if (sprite->data[4] == 0 && sprite->pos2.y < -8)
{
- gSprites[sprite->data[6]].invisible = 0;
+ gSprites[sprite->data[6]].invisible = FALSE;
sprite->data[4]++;
}
if (sprite->data[4] == 1 && sprite->pos2.y < -16)
{
- gSprites[sprite->data[7]].invisible = 0;
+ gSprites[sprite->data[7]].invisible = FALSE;
sprite->data[4]++;
}
if (--sprite->data[1] == -1)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->callback = sub_812E09C;
}
}
@@ -2555,24 +2555,16 @@ static void sub_812E09C(struct Sprite *sprite)
static void sub_812E0F8(struct Sprite *sprite)
{
- u16 d2;
- register u16 d3 asm("r1");
- int var0;
- s8 var1;
-
- if (!sprite->invisible)
- {
- d2 = sprite->data[2];
- d3 = sprite->data[3];
- var0 = d2 + d3;
- var1 = var0 >> 8;
- sprite->pos2.y -= var1;
- sprite->data[3] = var0 & 0xFF;
- if (--sprite->data[1] == -1)
- {
- sprite->invisible = 1;
- sprite->callback = SpriteCallbackDummy;
- }
+ if (sprite->invisible)
+ return;
+
+ sprite->data[3] += sprite->data[2];
+ sprite->pos2.y -= sprite->data[3] >> 8;
+ sprite->data[3] &= 0xFF;
+ if (sprite->data[1]-- == 0)
+ {
+ sprite->invisible = TRUE;
+ sprite->callback = SpriteCallbackDummy;
}
}
@@ -3102,7 +3094,7 @@ static void sub_812ED84(struct Sprite *sprite)
sprite->data[0] = gBattleAnimArgs[2];
sub_8078764(sprite, FALSE);
sprite->oam.objMode = ST_OAM_OBJ_WINDOW;
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->callback = sub_812EE00;
}
@@ -3111,7 +3103,7 @@ static void sub_812EE00(struct Sprite *sprite)
switch (sprite->data[1])
{
case 0:
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
if (sprite->affineAnimEnded)
sprite->data[1]++;
break;
@@ -3125,7 +3117,7 @@ static void sub_812EE00(struct Sprite *sprite)
case 2:
if (sprite->affineAnimEnded)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->data[1]++;
}
break;
@@ -4593,7 +4585,7 @@ static void sub_8130FE0(struct Sprite *sprite)
REG_BLDALPHA = (sprite->data[2] << 8) | sprite->data[1];
if (++sprite->data[0] == 32)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->data[5]++;
}
break;
@@ -4666,7 +4658,7 @@ void sub_81312E4(u8 taskId)
{
gTasks[taskId].data[3] = 0;
sub_8078F40(spriteId);
- gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].invisible = TRUE;
gTasks[taskId].data[0]++;
}
}
@@ -4695,7 +4687,7 @@ static void sub_8131408(u8 taskId)
case 0:
gSprites[spriteId].pos2.y = -200;
gSprites[spriteId].pos2.x = 200;
- gSprites[spriteId].invisible = 0;
+ gSprites[spriteId].invisible = FALSE;
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0]++;
break;
@@ -4858,8 +4850,8 @@ void sub_81316F8(u8 taskId)
gSprites[spriteId2].data[7] = 0;
gSprites[spriteId1].data[7] = 0;
gTasks[taskId].data[0] = 2;
- gSprites[spriteId2].invisible = 0;
- gSprites[spriteId1].invisible = 1;
+ gSprites[spriteId2].invisible = FALSE;
+ gSprites[spriteId1].invisible = TRUE;
gSprites[spriteId2].oam.objMode = ST_OAM_OBJ_NORMAL;
gSprites[spriteId1].oam.objMode = ST_OAM_OBJ_NORMAL;
gSprites[spriteId2].callback = sub_8131838;
@@ -5748,13 +5740,13 @@ void sub_8131EB8(struct Sprite *sprite)
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 16;
sprite->data[0] = -32;
sprite->data[7]++;
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT && !IsContest())
sprite->subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_BATTLER_TARGET)].subpriority - 1;
}
else
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
}
break;
case 1:
diff --git a/src/battle_anim_special.c b/src/battle_anim_special.c
index d9cc2a477..e86b9359c 100755
--- a/src/battle_anim_special.c
+++ b/src/battle_anim_special.c
@@ -582,7 +582,7 @@ void sub_813F798(u8 taskId)
break;
case 2:
sub_8078F40(spriteId);
- gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].invisible = TRUE;
DestroyAnimVisualTask(taskId);
break;
}
@@ -847,7 +847,7 @@ static void sub_813FEC8(struct Sprite *sprite)
break;
case 2:
sub_8078F40(spriteId);
- gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].invisible = TRUE;
gTasks[taskId].data[0]++;
break;
default:
@@ -1173,7 +1173,7 @@ static void sub_81404E4(struct Sprite *sprite)
}
break;
case 2:
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->data[0]++;
break;
default:
@@ -1223,7 +1223,7 @@ static void sub_81405F4(struct Sprite *sprite)
sub_8141314(1, gBattleAnimTarget, 14, ballIndex);
LABEL:
- gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = 0;
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = FALSE;
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 1);
AnimateSprite(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]]);
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0x1000;
@@ -1234,7 +1234,7 @@ static void sub_81406BC(struct Sprite *sprite)
int next = FALSE;
if (sprite->animEnded)
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
if (gSprites[gBattlerSpriteIds[gBattleAnimTarget]].affineAnimEnded)
{
@@ -1942,7 +1942,7 @@ static void sub_814191C(u8 taskId)
gSprites[spriteId].callback = sub_8141B74;
gSprites[spriteId].pos2.x = -32;
gSprites[spriteId].pos2.y = 32;
- gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].invisible = TRUE;
if (gTasks[taskId].data[11] == 0)
{
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
@@ -1998,7 +1998,7 @@ static void sub_8141B74(struct Sprite *sprite)
}
else
{
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
sprite->pos2.x += 5;
sprite->pos2.y -= 5;
if (sprite->pos2.x > 32)
@@ -2050,7 +2050,7 @@ static void sub_8141CF4(struct Sprite *sprite)
if (TranslateAnimArc(sprite))
{
sprite->data[0] = 0;
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->callback = sub_8141D20;
}
}
diff --git a/src/battle_main.c b/src/battle_main.c
index 80e6167c3..040d42ef9 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -245,9 +245,8 @@ void CB2_InitBattleInternal(void)
gScanlineEffectRegBuffers[0][i] = 0xF0;
gScanlineEffectRegBuffers[1][i] = 0xF0;
}
- for (i = 80; i < 160; i++)
+ for (; i < 160; i++)
{
- asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter
gScanlineEffectRegBuffers[0][i] = 0xFF10;
gScanlineEffectRegBuffers[1][i] = 0xFF10;
}
@@ -1293,9 +1292,8 @@ void c2_8011A1C(void)
gScanlineEffectRegBuffers[0][i] = 0xF0;
gScanlineEffectRegBuffers[1][i] = 0xF0;
}
- for (i = 80; i < 160; i++)
+ for (; i < 160; i++)
{
- asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter
gScanlineEffectRegBuffers[0][i] = 0xFF10;
gScanlineEffectRegBuffers[1][i] = 0xFF10;
}
diff --git a/src/contest.c b/src/contest.c
index 58566e28d..50824c867 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -293,12 +293,12 @@ void ResetContestGpuRegs(void)
{
u16 savedIme;
- REG_DISPCNT = 0x40;
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP;
savedIme = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
REG_IME = savedIme;
- REG_DISPSTAT = 8;
+ REG_DISPSTAT = DISPSTAT_VBLANK_INTR;
REG_BG0CNT = 0x9800;
REG_BG1CNT = 0x9E09;
REG_BG2CNT = 0x9C00;
@@ -323,7 +323,6 @@ void ResetContestGpuRegs(void)
gBattle_WIN1H = 0;
gBattle_WIN1V = 0;
}
-
void LoadContestBgAfterMoveAnim(void)
{
s32 i;
@@ -474,14 +473,12 @@ void sub_80AB694(u8 taskId)
void sub_80AB6B4(u8 taskId)
{
- gTasks[taskId].data[0]--;
- if (gTasks[taskId].data[0] <= 0)
- {
- GetMultiplayerId(); // unused return value
- DestroyTask(taskId);
- gTasks[sContest.mainTaskId].func = sub_80AB960;
- gRngValue = gContestRngValue;
- }
+ if (--gTasks[taskId].data[0] > 0)
+ return;
+ GetMultiplayerId(); // unused return value
+ DestroyTask(taskId);
+ gTasks[sContest.mainTaskId].func = sub_80AB960;
+ gRngValue = gContestRngValue;
}
u8 sub_80AB70C(u8 *a)
@@ -3679,28 +3676,22 @@ void sub_80B0588(void)
sub_80B05A4(i);
}
-// TODO: Try to write this better
void sub_80B05A4(u8 a)
{
- u32 var;
- u32 r0;
-
sub_80B0548(a);
// 2-byte DMA copy? Why?
- r0 = a + 5;
DmaCopy16Defvars(
3,
- gPlttBufferUnfaded + r0 * 16 + 10,
- gPlttBufferFaded + r0 * 16 + 10,
+ &gPlttBufferUnfaded[16 * (5 + a) + 10],
+ &gPlttBufferFaded[16 * (5 + a) + 10],
2);
- var = (a + 5) * 16 + 12 + a;
DmaCopy16Defvars(
3,
- gPlttBufferUnfaded + var,
- gPlttBufferFaded + var,
+ &gPlttBufferUnfaded[16 * (5 + a) + 12 + a],
+ &gPlttBufferFaded[16 * (5 + a) + 12 + a],
2);
}
diff --git a/src/contest_link_80C2020.c b/src/contest_link_80C2020.c
index 356c806f8..e14880ee0 100644
--- a/src/contest_link_80C2020.c
+++ b/src/contest_link_80C2020.c
@@ -1378,12 +1378,12 @@ void sub_80C3698(const u8 *text)
sprite = &gSprites[eContestLink80C2020Struct2018000.unk_01];
sprite->pos1.x = x + 32;
sprite->pos1.y = 80;
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
for (i = 0; i < 3; i++)
{
gSprites[sprite->data[i]].pos1.x = sprite->pos1.x + sprite->pos2.x + (i + 1) * 64;
gSprites[sprite->data[i]].pos1.y = sprite->pos1.y;
- gSprites[sprite->data[i]].invisible = 0;
+ gSprites[sprite->data[i]].invisible = FALSE;
}
gBattle_WIN0H = 0x00F0;
@@ -1397,9 +1397,9 @@ void sub_80C3764(void)
struct Sprite *sprite;
sprite = &gSprites[eContestLink80C2020Struct2018000.unk_01];
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
for (i = 0; i < 3; i++)
- gSprites[sprite->data[i]].invisible = 1;
+ gSprites[sprite->data[i]].invisible = TRUE;
gBattle_WIN0H = 0;
gBattle_WIN0V = 0;
@@ -2025,7 +2025,7 @@ void sub_80C3CB8(struct Sprite *sprite)
if (sprite->pos1.x < -32)
{
sprite->callback = SpriteCallbackDummy;
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
eContestLink80C2020Struct2018000.unk_06 = 2;
}
}
@@ -2062,7 +2062,7 @@ void sub_80C3DF0(struct Sprite *sprite)
sprite->data[4] = var0;
sprite->pos1.y++;
if (eContestLink80C2020Struct2018000.unk_09)
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
if (sprite->pos1.x > 248 || sprite->pos1.y > 116)
{
diff --git a/src/contest_painting.c b/src/contest_painting.c
index af5eddf76..ae683d267 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -341,13 +341,9 @@ static void sub_8106AC4(u16 species, u8 arg1)
}
}
-
static void sub_8106B90(u8 *a, u16 *b, u16 *c)
{
- u16 i;
- u16 j;
- u16 k;
- u16 l;
+ u16 i, j, k, l;
/*
Raw arithmetics are required to match this function.
@@ -365,12 +361,7 @@ static void sub_8106B90(u8 *a, u16 *b, u16 *c)
{
for (l = 0; l < 8; l++)
{
- /*
- Parenthesis/group hack absolutely required to match regalloc. Remove any
- unneeded parentheses and the function gets thrown off. See the comments
- in CopyWallpaperTilemap for documentation on a similar behavior.
- */
- u8 temp = ((u8*)a + ((((i << 3) + j) << 5) + (k << 2) + (l >> 1)))[0];
+ u8 temp = a[(((i * 8) + j) * 32) + (k << 2) + (l >> 1)];
/*
The shifts have to be there to match r0 and r2's order in one instruction:
add r5, r2, r0
@@ -389,9 +380,9 @@ static void sub_8106B90(u8 *a, u16 *b, u16 *c)
// Same order as above needs to be written here, or else this happens:
// add r0, r7, r1 <- regswap
if (temp == 0)
- ((u16*)c + (((i << 3) + k) << 6) + ((j << 3)+l))[0] = 0x8000;
+ *(u16 *)(c + (((i * 8) + k) << 6) + ((j * 8) + l)) = 0x8000;
else
- ((u16*)c + (((i << 3) + k) << 6) + ((j << 3)+l))[0] = b[temp];
+ *(u16 *)(c + (((i * 8) + k) << 6) + ((j * 8) + l)) = b[temp];
}
}
}
diff --git a/src/credits.c b/src/credits.c
index 1ab6ed859..28a4994be 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -1126,8 +1126,8 @@ static void sub_8144A68(u8 data, u8 taskIdA)
switch (data)
{
case 0:
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 272;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
@@ -1137,8 +1137,8 @@ static void sub_8144A68(u8 data, u8 taskIdA)
gTasks[taskIdA].data[TDA_0] = sub_8148EC0(0, 0x2000, 0x20, 8);
break;
case 1:
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
@@ -1148,8 +1148,8 @@ static void sub_8144A68(u8 data, u8 taskIdA)
gTasks[taskIdA].data[TDA_0] = sub_8148EC0(0, 0x2000, 0x20, 8);
break;
case 2:
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
@@ -1159,8 +1159,8 @@ static void sub_8144A68(u8 data, u8 taskIdA)
gTasks[taskIdA].data[TDA_0] = sub_8148EC0(1, 0x2000, 0x200, 8);
break;
case 3:
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = -32;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
@@ -1170,8 +1170,8 @@ static void sub_8144A68(u8 data, u8 taskIdA)
gTasks[taskIdA].data[TDA_0] = sub_8148EC0(1, 0x2000, 0x200, 8);
break;
case 4:
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 88;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 152;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
diff --git a/src/decoration.c b/src/decoration.c
index f999f4edd..35b9ff47f 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -3039,15 +3039,15 @@ void sub_81009C0(struct Sprite *sprite)
{
if (sprite->data[6] < 15)
{
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
} else
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
}
sprite->data[6] = (sprite->data[6] + 1) & 0x1f;
} else
{
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
}
}
@@ -3239,7 +3239,7 @@ void sub_8100EEC(u8 taskId)
{
Menu_EraseWindowRect(0, 0, 29, 19);
gSprites[gUnknown_020391A8].data[7] = 0;
- gSprites[gUnknown_020391A8].invisible = 0;
+ gSprites[gUnknown_020391A8].invisible = FALSE;
gSprites[gUnknown_020391A8].callback = sub_8101698;
gSprites[gUnknown_020391A9].pos1.x = 0x88;
gSprites[gUnknown_020391A9].pos1.y = 0x48;
@@ -3258,7 +3258,7 @@ void sub_8100FB4(u8 taskId)
{
gTasks[taskId].data[10] = 0;
sub_810045C();
- gSprites[gUnknown_020391A8].invisible = 0;
+ gSprites[gUnknown_020391A8].invisible = FALSE;
gSprites[gUnknown_020391A8].callback = SpriteCallbackDummy;
DisplayItemMessageOnField(taskId, gSecretBaseText_StopPuttingAwayDecor, sub_810156C, 0);
}
@@ -3278,7 +3278,7 @@ void sub_8101024(u8 taskId)
if (MetatileBehavior_IsSecretBasePC(metatileBehavior) == TRUE
|| MetatileBehavior_IsPlayerRoomPCOn(metatileBehavior) == TRUE)
{
- gSprites[gUnknown_020391A8].invisible = 0;
+ gSprites[gUnknown_020391A8].invisible = FALSE;
gSprites[gUnknown_020391A8].callback = SpriteCallbackDummy;
DisplayItemMessageOnField(taskId, gSecretBaseText_StopPuttingAwayDecor, sub_810156C, 0);
} else
@@ -3343,7 +3343,7 @@ void sub_8101118(u8 decorIdx, struct UnkStruct_020391B4 *unk_020391B4)
void sub_8101198(u8 x, u8 y)
{
- gSprites[gUnknown_020391A8].invisible = 1;
+ gSprites[gUnknown_020391A8].invisible = TRUE;
gSprites[gUnknown_020391A8].callback = SpriteCallbackDummy;
gSprites[gUnknown_020391A9].pos1.x = 0x88 + x * 16;
gSprites[gUnknown_020391A9].pos1.y = 0x48 + y * 16;
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 5071d1a75..24c2340ac 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -362,7 +362,7 @@ static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID)
case 1:
GetMonSpriteTemplate_803C56C(GetMonSpritePalStruct(mon)->tag, r5);
spriteID = CreateSprite(&gUnknown_02024E8C, 120, 70, 6);
- gSprites[spriteID].invisible = 1;
+ gSprites[spriteID].invisible = TRUE;
gSprites[spriteID].callback = SpriteCallbackDummy;
break;
}
@@ -679,7 +679,7 @@ static void SpriteCB_Egg_4(struct Sprite* sprite)
if (!gPaletteFade.active)
{
PlaySE(SE_EGG_HATCH);
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->callback = SpriteCB_Egg_5;
sprite->data[0] = 0;
}
@@ -689,7 +689,7 @@ static void SpriteCB_Egg_5(struct Sprite* sprite)
{
if (sprite->data[0] == 0)
{
- gSprites[gEggHatchData->pokeSpriteID].invisible = 0;
+ gSprites[gEggHatchData->pokeSpriteID].invisible = FALSE;
StartSpriteAffineAnim(&gSprites[gEggHatchData->pokeSpriteID], 1);
}
if (sprite->data[0] == 8)
diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c
index 3f197f74c..d0f9d781d 100644
--- a/src/evolution_graphics.c
+++ b/src/evolution_graphics.c
@@ -223,10 +223,10 @@ static void SpriteCB_PostEvoSparkleSet2(struct Sprite* sprite)
sprite->subpriority = 1;
else
{
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
sprite->subpriority = 20;
if (sprite->data[6] > 112 && sprite->data[6] & 1)
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
}
if (matrixNum < 20)
matrixNum = 20;
@@ -501,13 +501,13 @@ u8 sub_8149E7C(u8 preEvoSpriteID, u8 postEvoSpriteID)
gSprites[preEvoSpriteID].callback = PokeEvoSprite_DummySpriteCB;
gSprites[preEvoSpriteID].oam.affineMode = 1;
gSprites[preEvoSpriteID].oam.matrixNum = 30;
- gSprites[preEvoSpriteID].invisible = 0;
+ gSprites[preEvoSpriteID].invisible = FALSE;
CpuSet(stack, &gPlttBufferFaded[0x100 + (gSprites[preEvoSpriteID].oam.paletteNum * 16)], 16);
gSprites[postEvoSpriteID].callback = PokeEvoSprite_DummySpriteCB;
gSprites[postEvoSpriteID].oam.affineMode = 1;
gSprites[postEvoSpriteID].oam.matrixNum = 31;
- gSprites[postEvoSpriteID].invisible = 0;
+ gSprites[postEvoSpriteID].invisible = FALSE;
CpuSet(stack, &gPlttBufferFaded[0x100 + (gSprites[postEvoSpriteID].oam.paletteNum * 16)], 16);
gTasks[taskID].tEvoStopped = FALSE;
@@ -591,11 +591,11 @@ static void PreEvoInVisible_PostEvoVisible_KillTask(u8 taskID)
{
gSprites[gTasks[taskID].tPreEvoSpriteID].oam.affineMode = 0;
gSprites[gTasks[taskID].tPreEvoSpriteID].oam.matrixNum = 0;
- gSprites[gTasks[taskID].tPreEvoSpriteID].invisible = 1;
+ gSprites[gTasks[taskID].tPreEvoSpriteID].invisible = TRUE;
gSprites[gTasks[taskID].tPostEvoSpriteID].oam.affineMode = 0;
gSprites[gTasks[taskID].tPostEvoSpriteID].oam.matrixNum = 0;
- gSprites[gTasks[taskID].tPostEvoSpriteID].invisible = 0;
+ gSprites[gTasks[taskID].tPostEvoSpriteID].invisible = FALSE;
DestroyTask(taskID);
}
@@ -604,11 +604,11 @@ static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskID)
{
gSprites[gTasks[taskID].tPreEvoSpriteID].oam.affineMode = 0;
gSprites[gTasks[taskID].tPreEvoSpriteID].oam.matrixNum = 0;
- gSprites[gTasks[taskID].tPreEvoSpriteID].invisible = 0;
+ gSprites[gTasks[taskID].tPreEvoSpriteID].invisible = FALSE;
gSprites[gTasks[taskID].tPostEvoSpriteID].oam.affineMode = 0;
gSprites[gTasks[taskID].tPostEvoSpriteID].oam.matrixNum = 0;
- gSprites[gTasks[taskID].tPostEvoSpriteID].invisible = 1;
+ gSprites[gTasks[taskID].tPostEvoSpriteID].invisible = TRUE;
DestroyTask(taskID);
}
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 60568ee87..ea7fde015 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -238,7 +238,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
gSprites[ID].callback = nullsub_37;
gSprites[ID].oam.paletteNum = 1;
- gSprites[ID].invisible = 1;
+ gSprites[ID].invisible = TRUE;
// postEvo sprite
DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve],
@@ -254,7 +254,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30);
gSprites[ID].callback = nullsub_37;
gSprites[ID].oam.paletteNum = 2;
- gSprites[ID].invisible = 1;
+ gSprites[ID].invisible = TRUE;
LoadEvoSparkleSpriteAndPal();
@@ -455,7 +455,7 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpri
gSprites[ID].callback = nullsub_37;
gSprites[ID].oam.paletteNum = 2;
- gSprites[ID].invisible = 1;
+ gSprites[ID].invisible = TRUE;
LoadEvoSparkleSpriteAndPal();
@@ -542,7 +542,7 @@ static void Task_EvolutionScene(u8 taskID)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
- gSprites[sEvoInfo.preEvoSpriteID].invisible = 0;
+ gSprites[sEvoInfo.preEvoSpriteID].invisible = FALSE;
gTasks[taskID].tState++;
break;
case 1: // print 'whoa, poke is evolving!!!' msg
diff --git a/src/field_effect.c b/src/field_effect.c
index 9f53606c4..280eb20bc 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -888,7 +888,7 @@ u8 PokecenterHealEffectHelper(s16 x, s16 y)
spriteIdAtEnd = CreateSpriteAtEnd(&gSpriteTemplate_839F220, x, y, 0);
sprite = &gSprites[spriteIdAtEnd];
sprite->oam.priority = 2;
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
SetSubspriteTables(sprite, &gUnknown_0839F1A0);
return spriteIdAtEnd;
}
@@ -898,7 +898,7 @@ void SpriteCB_PokecenterMonitor(struct Sprite *sprite)
if (sprite->data[0] != 0)
{
sprite->data[0] = 0;
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
StartSpriteAnim(sprite, 1);
}
if (sprite->animEnded)
@@ -918,7 +918,7 @@ void HallOfFameRecordEffectHelper(s16 a0, s16 a1, s16 a2, u8 a3)
{
spriteIdAtEnd = CreateSpriteAtEnd(&gSpriteTemplate_839F250, a1, a2, 0);
}
- gSprites[spriteIdAtEnd].invisible = 1;
+ gSprites[spriteIdAtEnd].invisible = TRUE;
gSprites[spriteIdAtEnd].data[0] = a0;
}
@@ -992,7 +992,7 @@ void mapldr_08084390(void)
Overworld_PlaySpecialMapMusic();
pal_fill_black();
CreateTask(c3_080843F8, 0);
- gObjectEvents[gPlayerAvatar.objectEventId].invisible = 1;
+ gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE;
if (gPlayerAvatar.flags & 0x08)
{
ObjectEventTurn(&gObjectEvents[gPlayerAvatar.objectEventId], DIR_WEST);
@@ -1051,7 +1051,7 @@ bool8 sub_80867AC(struct Task *task) // gUnknown_0839F2CC[0]
playerObject = &gObjectEvents[gPlayerAvatar.objectEventId];
playerSprite = &gSprites[gPlayerAvatar.spriteId];
CameraObjectReset2();
- gObjectEvents[gPlayerAvatar.objectEventId].invisible = 1;
+ gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE;
gPlayerAvatar.preventStep = TRUE;
ObjectEventSetHeldMovement(playerObject, GetFaceDirectionMovementAction(GetPlayerFacingDirection()));
task->data[4] = playerSprite->subspriteMode;
@@ -1080,7 +1080,7 @@ bool8 sub_8086870(struct Task *task) // gUnknown_0839F2CC[2]
sprite->pos2.y = -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
task->data[1] = 1;
task->data[2] = 0;
- gObjectEvents[gPlayerAvatar.objectEventId].invisible = 0;
+ gObjectEvents[gPlayerAvatar.objectEventId].invisible = FALSE;
PlaySE(SE_FALL);
task->data[0]++;
return FALSE;
@@ -1677,7 +1677,7 @@ bool8 sub_80874CC(struct Task *task, struct ObjectEvent *objectEvent, struct Spr
CameraObjectReset2();
FreezeObjectEvents();
gPlayerAvatar.preventStep = TRUE;
- objectEvent->invisible = 1;
+ objectEvent->invisible = TRUE;
task->data[0]++;
return FALSE;
}
@@ -1702,7 +1702,7 @@ bool8 sub_8087548(struct Task *task, struct ObjectEvent *objectEvent, struct Spr
if (sprite->animCmdIndex > 1)
{
task->data[0]++;
- objectEvent->invisible = 0;
+ objectEvent->invisible = FALSE;
CameraObjectReset1();
PlaySE(SE_M_DIG);
ObjectEventSetHeldMovement(objectEvent, GetJumpMovementAction(DIR_EAST));
@@ -1791,7 +1791,7 @@ bool8 sub_8087774(struct Task *task, struct ObjectEvent *objectEvent, struct Spr
{
if (gSprites[task->data[1]].animCmdIndex == 2)
{
- objectEvent->invisible = 1;
+ objectEvent->invisible = TRUE;
task->data[0]++;
}
return FALSE;
@@ -1914,7 +1914,7 @@ void mapldr_080859D4(void)
ScriptContext2_Enable();
FreezeObjectEvents();
gFieldCallback = NULL;
- gObjectEvents[gPlayerAvatar.objectEventId].invisible = 1;
+ gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE;
CreateTask(sub_8087A74, 0);
}
@@ -1944,7 +1944,7 @@ void sub_8087AC8(struct Task *task)
}
if (task->data[2] >= 32 && task->data[15] == GetPlayerFacingDirection())
{
- objectEvent->invisible = 0;
+ objectEvent->invisible = FALSE;
ScriptContext2_Disable();
UnfreezeObjectEvents();
DestroyTask(FindTaskIdByFunc(sub_8087A74));
@@ -2062,7 +2062,7 @@ static void mapldr_08085D88(void)
ScriptContext2_Enable();
FreezeObjectEvents();
gFieldCallback = NULL;
- gObjectEvents[gPlayerAvatar.objectEventId].invisible = 1;
+ gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE;
CameraObjectReset2();
CreateTask(sub_8087E1C, 0);
}
@@ -2087,7 +2087,7 @@ void sub_8087E4C(struct Task *task)
sprite = &gSprites[gPlayerAvatar.spriteId];
centerToCornerVecY = -(sprite->centerToCornerVecY << 1);
sprite->pos2.y = -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
- gObjectEvents[gPlayerAvatar.objectEventId].invisible = 0;
+ gObjectEvents[gPlayerAvatar.objectEventId].invisible = FALSE;
task->data[0]++;
task->data[1] = 8;
task->data[2] = 1;
@@ -3001,7 +3001,7 @@ void sub_808914C(struct Sprite *sprite)
sprite->data[7]++;
sprite->oam.affineMode = 0;
FreeOamMatrix(sprite->oam.matrixNum);
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
}
}
}
@@ -3054,7 +3054,7 @@ void sub_80892A0(struct Task *task)
CameraObjectReset2();
ObjectEventTurn(objectEvent, DIR_WEST);
StartSpriteAnim(&gSprites[objectEvent->spriteId], 0x16);
- objectEvent->invisible = 0;
+ objectEvent->invisible = FALSE;
task->data[1] = sub_8088F60();
sub_8088FC0(task->data[1]);
sub_8088FFC(task->data[1], objectEvent->spriteId);
diff --git a/src/field_specials.c b/src/field_specials.c
index 4a2ddb180..9c444f93b 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -1596,7 +1596,7 @@ void GlassWorkshopUpdateScrollIndicators(u8 newPos, u8 maxItems)
void SpawnCameraDummy(void)
{
u8 objectEventId = SpawnSpecialObjectEventParametrized(7, MOVEMENT_TYPE_FACE_DOWN, 0x7f, gSaveBlock1.pos.x + 7, gSaveBlock1.pos.y + 7, 3);
- gObjectEvents[objectEventId].invisible = 1;
+ gObjectEvents[objectEventId].invisible = TRUE;
CameraObjectSetFollowedObjectId(gObjectEvents[objectEventId].spriteId);
}
diff --git a/src/intro.c b/src/intro.c
index d1f3fa1ea..f1904f86e 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -1046,7 +1046,7 @@ static void Task_IntroScrollDownAndShowEon(u8 taskId)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_840AFF0, 200, 160, 10);
- gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].invisible = TRUE;
}
}
else
@@ -1403,7 +1403,7 @@ static void Task_IntroPokemonBattle(u8 taskId)
gSprites[gTasks[taskId].data[4]].data[0] = 3;
gSprites[gTasks[taskId].data[5]].data[0] = 3;
spriteId = CreateSprite(&gSpriteTemplate_840B1F4, 0x78, 0x50, 15);
- gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].invisible = TRUE;
}
if (gIntroFrameCounter == 800)
PlaySE(SE_INTRO_BLAST);
@@ -2207,7 +2207,7 @@ static void sub_813DE70(struct Sprite *sprite)
case 3:
if (sprite->pos1.y > 160)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->data[0] = 1;
}
else
diff --git a/src/libs/m4a.c b/src/libs/m4a.c
index 267a72657..66f563bd4 100644
--- a/src/libs/m4a.c
+++ b/src/libs/m4a.c
@@ -22,8 +22,7 @@ u8 gMPlayMemAccArea[0x10];
u32 MidiKeyToFreq(struct WaveData *wav, u8 key, u8 fineAdjust)
{
- u32 val1;
- u32 val2;
+ u32 val1, val2;
u32 fineAdjustShifted = fineAdjust << 24;
if (key > 178)
@@ -315,7 +314,7 @@ void MPlayExtender(struct CgbChannel *cgbChans)
void MusicPlayerJumpTableCopy(void)
{
- asm("swi 0x2A");
+ asm("svc 0x2A");
}
void ClearChain(void *x)
@@ -352,25 +351,25 @@ void SoundInit(struct SoundInfo *soundInfo)
| SOUND_ALL_MIX_FULL;
REG_SOUNDBIAS_H = (REG_SOUNDBIAS_H & 0x3F) | 0x40;
- REG_DMA1SAD = (s32)soundInfo->pcmBuffer;
- REG_DMA1DAD = (s32)&REG_FIFO_A;
- REG_DMA2SAD = (s32)soundInfo->pcmBuffer + PCM_DMA_BUF_SIZE;
- REG_DMA2DAD = (s32)&REG_FIFO_B;
+ REG_DMA1SAD = (u32)soundInfo->pcmBuffer;
+ REG_DMA1DAD = (u32)&REG_FIFO_A;
+ REG_DMA2SAD = (u32)soundInfo->pcmBuffer + PCM_DMA_BUF_SIZE;
+ REG_DMA2DAD = (u32)&REG_FIFO_B;
SOUND_INFO_PTR = soundInfo;
CpuFill32(0, soundInfo, sizeof(struct SoundInfo));
soundInfo->maxChans = 8;
soundInfo->masterVolume = 15;
- soundInfo->plynote = (u32)ply_note;
+ soundInfo->plynote = ply_note;
soundInfo->CgbSound = DummyFunc;
soundInfo->CgbOscOff = (void (*)(u8))DummyFunc;
soundInfo->MidiKeyToCgbFreq = (u32 (*)(u8, u8, u8))DummyFunc;
- soundInfo->ExtVolPit = (u32)DummyFunc;
+ soundInfo->ExtVolPit = (void (*)(struct MusicPlayerInfo *, struct MusicPlayerTrack *))DummyFunc;
MPlayJumpTableCopy(gMPlayJumpTable);
- soundInfo->MPlayJumpTable = (u32)gMPlayJumpTable;
+ soundInfo->MPlayJumpTable = (void (**)())gMPlayJumpTable;
SampleFreqSet(SOUND_MODE_FREQ_13379);
@@ -381,7 +380,7 @@ void SampleFreqSet(u32 freq)
{
struct SoundInfo *soundInfo = SOUND_INFO_PTR;
- freq = (freq & 0xF0000) >> 16;
+ freq = (freq & SOUND_MODE_FREQ) >> SOUND_MODE_FREQ_SHIFT;
soundInfo->freq = freq;
soundInfo->pcmSamplesPerVBlank = gPcmSamplesPerVBlankTable[freq - 1];
soundInfo->pcmDmaPeriod = PCM_DMA_BUF_SIZE / soundInfo->pcmSamplesPerVBlank;
@@ -433,13 +432,10 @@ void m4aSoundMode(u32 mode)
soundInfo->maxChans = temp >> SOUND_MODE_MAXCHN_SHIFT;
temp = MAX_DIRECTSOUND_CHANNELS;
- chan = &soundInfo->chans[0];
- while (temp != 0)
+ for (temp = MAX_DIRECTSOUND_CHANNELS, chan = soundInfo->chans; temp != 0; temp--,chan++)
{
chan->status = 0;
- temp--;
- chan++;
}
}
@@ -469,37 +465,28 @@ void m4aSoundMode(u32 mode)
void SoundClear(void)
{
- struct SoundInfo *soundInfo = SOUND_INFO_PTR;
s32 i;
- void *chan;
+ struct SoundInfo *soundInfo = SOUND_INFO_PTR;
+ struct SoundChannel *chan;
if (soundInfo->ident != ID_NUMBER)
return;
soundInfo->ident++;
- i = MAX_DIRECTSOUND_CHANNELS;
- chan = &soundInfo->chans[0];
-
- while (i > 0)
+ for (i = MAX_DIRECTSOUND_CHANNELS, chan = soundInfo->chans; i > 0; i--,chan++)
{
- ((struct SoundChannel *)chan)->status = 0;
- i--;
- chan = (void *)((s32)chan + sizeof(struct SoundChannel));
+ chan->status = 0;
}
- chan = soundInfo->cgbChans;
+ chan = (struct SoundChannel *)soundInfo->cgbChans;
if (chan)
{
- i = 1;
-
- while (i <= 4)
+ for (i=1; i<=4; i++,chan++)
{
soundInfo->CgbOscOff(i);
- ((struct CgbChannel *)chan)->sf = 0;
- i++;
- chan = (void *)((s32)chan + sizeof(struct CgbChannel));
+ chan->status = 0;
}
}
@@ -510,27 +497,26 @@ void m4aSoundVSyncOff(void)
{
struct SoundInfo *soundInfo = SOUND_INFO_PTR;
- if (soundInfo->ident >= ID_NUMBER && soundInfo->ident <= ID_NUMBER + 1)
- {
- soundInfo->ident += 10;
+ if (soundInfo->ident < ID_NUMBER || soundInfo->ident > ID_NUMBER + 1)
+ return;
+ soundInfo->ident += 10;
- if (REG_DMA1CNT & (DMA_REPEAT << 16))
- REG_DMA1CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4;
+ if (REG_DMA1CNT & (DMA_REPEAT << 16))
+ REG_DMA1CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4;
- if (REG_DMA2CNT & (DMA_REPEAT << 16))
- REG_DMA2CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4;
+ if (REG_DMA2CNT & (DMA_REPEAT << 16))
+ REG_DMA2CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4;
- REG_DMA1CNT_H = DMA_32BIT;
- REG_DMA2CNT_H = DMA_32BIT;
+ REG_DMA1CNT_H = DMA_32BIT;
+ REG_DMA2CNT_H = DMA_32BIT;
- CpuFill32(0, soundInfo->pcmBuffer, sizeof(soundInfo->pcmBuffer));
- }
+ CpuFill32(0, soundInfo->pcmBuffer, sizeof(soundInfo->pcmBuffer));
}
void m4aSoundVSyncOn(void)
{
struct SoundInfo *soundInfo = SOUND_INFO_PTR;
- u32 ident = soundInfo->ident;
+ const u32 ident = soundInfo->ident;
if (ident == ID_NUMBER)
return;
@@ -580,7 +566,7 @@ void MPlayOpen(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track
}
soundInfo->intp = (u32)mplayInfo;
- soundInfo->func = (u32)MPlayMain;
+ soundInfo->func = MPlayMain;
soundInfo->ident = ID_NUMBER;
mplayInfo->ident = ID_NUMBER;
}
@@ -614,28 +600,21 @@ void MPlayStart(struct MusicPlayerInfo *mplayInfo, struct SongHeader *songHeader
mplayInfo->tempoC = 0;
mplayInfo->fadeOI = 0;
- i = 0;
- track = mplayInfo->tracks;
-
- while (i < songHeader->trackCount && i < mplayInfo->trackCount)
+ for (i = 0, track = mplayInfo->tracks; i < songHeader->trackCount && i < mplayInfo->trackCount; i++, track++)
{
TrackStop(mplayInfo, track);
track->flags = MPT_FLG_EXIST | MPT_FLG_START;
track->chan = 0;
track->cmdPtr = songHeader->part[i];
- i++;
- track++;
}
- while (i < mplayInfo->trackCount)
+ for (; i < mplayInfo->trackCount; i++, track++)
{
TrackStop(mplayInfo, track);
track->flags = 0;
- i++;
- track++;
}
- if (songHeader->reverb & 0x80)
+ if (songHeader->reverb & SOUND_MODE_REVERB_SET)
m4aSoundMode(songHeader->reverb);
mplayInfo->ident = ID_NUMBER;
@@ -653,14 +632,9 @@ void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo)
mplayInfo->ident++;
mplayInfo->status |= MUSICPLAYER_STATUS_PAUSE;
- i = mplayInfo->trackCount;
- track = mplayInfo->tracks;
-
- while (i > 0)
+ for (i = mplayInfo->trackCount, track = mplayInfo->tracks; i > 0; i--, track++)
{
TrackStop(mplayInfo, track);
- i--;
- track++;
}
mplayInfo->ident = ID_NUMBER;
@@ -704,10 +678,8 @@ void FadeOutBody(struct MusicPlayerInfo *mplayInfo)
if ((s16)(mplayInfo->fadeOV & mask) <= 0)
{
- i = mplayInfo->trackCount;
- track = mplayInfo->tracks;
- while (i > 0)
+ for (i = mplayInfo->trackCount, track = mplayInfo->tracks; i > 0; i--, track++)
{
u32 val;
@@ -719,9 +691,6 @@ void FadeOutBody(struct MusicPlayerInfo *mplayInfo)
if (!val)
track->flags = 0;
-
- i--;
- track++;
}
if (mplayInfo->fadeOV & TEMPORARY_FADE)
@@ -734,10 +703,7 @@ void FadeOutBody(struct MusicPlayerInfo *mplayInfo)
}
}
- i = mplayInfo->trackCount;
- track = mplayInfo->tracks;
-
- while (i > 0)
+ for (i = mplayInfo->trackCount, track = mplayInfo->tracks; i > 0; i--, track++)
{
if (track->flags & MPT_FLG_EXIST)
{
@@ -746,9 +712,6 @@ void FadeOutBody(struct MusicPlayerInfo *mplayInfo)
track->volX = (fadeOV >> FADE_VOL_SHIFT);
track->flags |= MPT_FLG_VOLCHG;
}
-
- i--;
- track++;
}
}
@@ -756,7 +719,7 @@ void TrkVolPitSet(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *tr
{
if (track->flags & MPT_FLG_VOLSET)
{
- s32 x;
+ u32 x;
s32 y;
x = (u32)(track->vol * track->volX) >> 5;
@@ -904,7 +867,9 @@ void CgbModVol(struct CgbChannel *chan)
// Force chan->rightVolume and chan->leftVolume to be read from memory again,
// even though there is no reason to do so.
// The command line option "-fno-gcse" achieves the same result as this.
- asm("" : : : "memory");
+ #ifndef NONMATCHING
+ asm("" : : : "memory");
+ #endif
chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
if (chan->eg > 15)
diff --git a/src/main_menu.c b/src/main_menu.c
index f271138d6..3237663a5 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -782,7 +782,7 @@ static void Task_NewGameSpeech2(u8 taskId)
gSprites[spriteId].pos1.x = 136;
gSprites[spriteId].pos1.y = 60;
- gSprites[spriteId].invisible = 0;
+ gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
StartSpriteFadeIn(taskId, 10);
StartBackgroundFadeIn(taskId, 20);
@@ -833,7 +833,7 @@ static void Task_NewGameSpeech6(u8 taskId)
gSprites[spriteId].pos1.x = 104;
gSprites[spriteId].pos1.y = 72;
- gSprites[spriteId].invisible = 0;
+ gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].data[0] = 0;
CreatePokeballSprite(spriteId, gSprites[spriteId].oam.paletteNum, 0x70, 0x3A, 0, 0, 0x20, 0x0000FFFF);
gTasks[taskId].func = Task_NewGameSpeech7;
@@ -1439,26 +1439,26 @@ void AddBirchSpeechObjects(u8 taskId)
spriteId = CreateBirchSprite(136, 60, 1);
gSprites[spriteId].callback = nullsub_34;
gSprites[spriteId].oam.priority = 0;
- gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].invisible = TRUE;
gTasks[taskId].tBirchSpriteId = spriteId;
spriteId = CreateAzurillSprite(0x68, 0x48);
gSprites[spriteId].callback = nullsub_34;
gSprites[spriteId].oam.priority = 0;
- gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].invisible = TRUE;
gTasks[taskId].tAzurillSpriteId = spriteId;
//Create Brendan sprite
spriteId = CreateTrainerSprite(0, 120, 60, 0, eBrendanSprite);
gSprites[spriteId].callback = nullsub_34;
- gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].oam.priority = 0;
gTasks[taskId].tBrendanSpriteId = spriteId;
//Create May sprite
spriteId = CreateTrainerSprite(1, 120, 60, 0, eMaySprite);
gSprites[spriteId].callback = nullsub_34;
- gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].oam.priority = 0;
gTasks[taskId].tMaySpriteId = spriteId;
}
diff --git a/src/menu_cursor.c b/src/menu_cursor.c
index 32578d1a4..254723f17 100644
--- a/src/menu_cursor.c
+++ b/src/menu_cursor.c
@@ -136,7 +136,7 @@ void MenuCursor_SetPos814A880(u8 a1, u8 a2)
if (gUnknown_0203A3D0 != 0x40)
{
spr = &gSprites[gUnknown_0203A3D0];
- spr->invisible = 0;
+ spr->invisible = FALSE;
spr->centerToCornerVecX = 0;
spr->centerToCornerVecY = 0;
spr->pos1.x = a1;
@@ -146,7 +146,7 @@ void MenuCursor_SetPos814A880(u8 a1, u8 a2)
if (gUnknown_0203A3D1 != 0x40)
{
spr = &gSprites[gUnknown_0203A3D1];
- spr->invisible = 0;
+ spr->invisible = FALSE;
spr->centerToCornerVecX = 0;
spr->centerToCornerVecY = 0;
spr->pos1.x = a1;
@@ -163,13 +163,13 @@ void sub_814A904(void)
if (gUnknown_0203A3D0 != 0x40)
{
spr = &gSprites[gUnknown_0203A3D0];
- spr->invisible = 1;
+ spr->invisible = TRUE;
}
if (gUnknown_0203A3D1 != 0x40)
{
spr = &gSprites[gUnknown_0203A3D1];
- spr->invisible = 1;
+ spr->invisible = TRUE;
}
return;
@@ -744,7 +744,7 @@ void MenuCursor_SetPos814AD7C(u8 a1, u8 a2)
if (gUnknown_0203A3D2 != 0x40)
{
spr = &gSprites[gUnknown_0203A3D2];
- spr->invisible = 0;
+ spr->invisible = FALSE;
spr->centerToCornerVecX = 0;
spr->centerToCornerVecY = 0;
spr->pos1.x = a1;
@@ -759,7 +759,7 @@ void sub_814ADC8()
if (gUnknown_0203A3D2 != 0x40)
{
spr = &gSprites[gUnknown_0203A3D2];
- spr->invisible = 1;
+ spr->invisible = TRUE;
}
return;
}
diff --git a/src/party_menu.c b/src/party_menu.c
index f20f2ad16..b5b00c947 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -2885,11 +2885,11 @@ void SpriteCB_HeldItemIcon(struct Sprite *sprite)
if (gSprites[data7].invisible)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
}
else
{
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
sprite->pos1.x = gSprites[data7].pos1.x + gSprites[data7].pos2.x;
sprite->pos1.y = gSprites[data7].pos1.y + gSprites[data7].pos2.y;
}
@@ -2979,7 +2979,7 @@ void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item)
if (!item)
{
- gSprites[heldItemSpriteId].invisible = 1;
+ gSprites[heldItemSpriteId].invisible = TRUE;
}
else
{
@@ -2988,7 +2988,7 @@ void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item)
else
StartSpriteAnim(&gSprites[heldItemSpriteId], 0);
- gSprites[heldItemSpriteId].invisible = 0;
+ gSprites[heldItemSpriteId].invisible = FALSE;
}
gSprites[heldItemSpriteId].callback(&gSprites[heldItemSpriteId]);
@@ -3159,7 +3159,7 @@ void SetHeldItemIconVisibility(u8 taskId, u8 monIndex)
spriteId = GetMonHeldItemIconSpriteId(taskId, monIndex);
if (!GetMonData(&gPlayerParty[monIndex], MON_DATA_HELD_ITEM))
{
- gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].invisible = TRUE;
}
else
{
@@ -3181,7 +3181,7 @@ void SetHeldItemIconVisibility(u8 taskId, u8 monIndex)
animNum = 0;
}
StartSpriteAnim(sprite2, animNum);
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
}
}
diff --git a/src/pokedex.c b/src/pokedex.c
index 7da931967..d370cb36e 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -26,7 +26,6 @@
#include "scanline_effect.h"
#include "ewram.h"
-
struct PokedexListItem
{
u16 dexNum;
@@ -37,10 +36,7 @@ struct PokedexListItem
struct PokedexView
{
struct PokedexListItem unk0[NATIONAL_DEX_COUNT];
- u16 unk608;
- u8 unk60A_1:1;
- u8 unk60A_2:1;
- u8 unk60B;
+ struct PokedexListItem monData;
u16 pokemonListCount;
u16 selectedPokemon;
u16 unk610;
@@ -52,19 +48,18 @@ struct PokedexView
u16 unk61C;
u16 unk61E[4];
u16 selectedMonSpriteId;
- u16 unk628;
- u16 unk62A;
+ s16 unk628;
+ s16 unk62A;
u8 unk62C;
u8 unk62D;
u8 unk62E;
u8 unk62F;
s16 unk630;
s16 unk632;
- u16 unk634;
- u16 unk636;
+ s16 unk634;
+ s16 unk636;
u16 unk638;
- u16 unk63A[4];
- u8 filler642[8];
+ u16 unk63A[8];
u8 unk64A;
u8 unk64B;
u8 unk64C_1:1;
@@ -1331,9 +1326,9 @@ static void ClearPokedexView(struct PokedexView *pokedexView)
pokedexView->unk0[i].seen = 0;
pokedexView->unk0[i].owned = 0;
}
- pokedexView->unk608 = 0;
- pokedexView->unk60A_1 = 0;
- pokedexView->unk60A_2 = 0;
+ pokedexView->monData.dexNum = 0;
+ pokedexView->monData.seen = 0;
+ pokedexView->monData.owned = 0;
pokedexView->pokemonListCount = 0;
pokedexView->selectedPokemon = 0;
pokedexView->unk610 = 0;
@@ -1343,7 +1338,7 @@ static void ClearPokedexView(struct PokedexView *pokedexView)
pokedexView->unk618 = 0;
pokedexView->unk61A = 0;
pokedexView->unk61C = 0;
- for (i = 0; i <= 3; i++)
+ for (i = 0; i < 4; i++)
pokedexView->unk61E[i] |= 0xFFFF;
pokedexView->unk628 = 0;
pokedexView->unk62A = 0;
@@ -1356,7 +1351,7 @@ static void ClearPokedexView(struct PokedexView *pokedexView)
pokedexView->unk634 = 0;
pokedexView->unk636 = 0;
pokedexView->unk638 = 0;
- for (i = 0; i <= 3; i++)
+ for (i = 0; i < 4; i++)
pokedexView->unk63A[i] = 0;
pokedexView->unk64A = 0;
pokedexView->unk64B = 0;
@@ -1366,9 +1361,9 @@ static void ClearPokedexView(struct PokedexView *pokedexView)
pokedexView->menuIsOpen = 0;
pokedexView->menuCursorPos = 0;
pokedexView->menuY = 0;
- for (i = 0; i <= 7; i++)
+ for (i = 0; i < 8; i++)
pokedexView->unk656[i] = 0;
- for (i = 0; i <= 7; i++)
+ for (i = 0; i < 8; i++)
pokedexView->unk65E[i] = 0;
}
@@ -2201,8 +2196,8 @@ static void sub_808DEB0(u16 a, u8 b, u8 c, u16 d)
text[1] = CHAR_0 + (r7 % 100) / 10;
text[2] = CHAR_0 + (r7 % 100) % 10;
text[3] = EOS;
- *(u16 *)(VRAM + d * 0x800 + c * 0x40 + b * 2) = unk[0];
- *(u16 *)(VRAM + d * 0x800 + (c + 1) * 0x40 + b * 2) = unk[1];
+ *(u16 *)(BG_VRAM + d * 0x800 + c * 0x40 + b * 2) = unk[0];
+ *(u16 *)(BG_VRAM + d * 0x800 + (c + 1) * 0x40 + b * 2) = unk[1];
Menu_PrintText(text, b - 15, c);
}
@@ -2220,8 +2215,8 @@ static void sub_808DF88(u16 a, u8 b, u8 c, u16 d)
unk[0] = 0;
unk[1] = 0;
}
- *(u16 *)(VRAM + d * 0x800 + c * 0x40 + b * 2) = unk[0];
- *(u16 *)(VRAM + d * 0x800 + (c + 1) * 0x40 + b * 2) = unk[1];
+ *(u16 *)(BG_VRAM + d * 0x800 + c * 0x40 + b * 2) = unk[0];
+ *(u16 *)(BG_VRAM + d * 0x800 + (c + 1) * 0x40 + b * 2) = unk[1];
}
static u8 sub_808DFE4(u16 num, u8 b, u8 c)
@@ -2255,8 +2250,8 @@ static void sub_808E090(u8 a, u8 b, u16 c)
for (i = 0; i < 12; i++)
{
- *(u16 *)(VRAM + c * 0x800 + b * 64 + (a + i) * 2) = 0;
- *(u16 *)(VRAM + c * 0x800 + (b + 1) * 64 + (a + i) * 2) = 0;
+ *(u16 *)(BG_VRAM + c * 0x800 + b * 64 + (a + i) * 2) = 0;
+ *(u16 *)(BG_VRAM + c * 0x800 + (b + 1) * 64 + (a + i) * 2) = 0;
}
}
@@ -3795,7 +3790,7 @@ static void sub_8090750(u8 taskId)
#ifndef NONMATCHING
asm("");
#endif
- *(u16 *)(VRAM + 0x7800 + 2 * i) += 0x2000;
+ *(u16 *)(BG_VRAM + 0x7800 + 2 * i) += 0x2000;
}
sub_8091738(gTasks[taskId].data[1], 2, 0x3FC);
ResetPaletteFade();
@@ -3870,8 +3865,8 @@ static void sub_8090A3C(u8 taskId)
Menu_EraseWindowRect(2, 13, 27, 19);
Menu_PrintText(gPokedexEntries[r4].descriptionPage2, 2, 13);
- (*(u16 *)(VRAM + 0x7ACA))++;
- (*(u16 *)(VRAM + 0x7B0A))++;
+ (*(u16 *)(BG_VRAM + 0x7ACA))++;
+ (*(u16 *)(BG_VRAM + 0x7B0A))++;
gTasks[taskId].data[4] = 1;
PlaySE(SE_PIN);
}
@@ -3935,8 +3930,8 @@ static void sub_8090C68(void)
Menu_EraseWindowRect(2, 13, 27, 19);
Menu_PrintText(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage2, 2, 13);
gPokedexView->descriptionPageNum = 1;
- (*(u16 *)(VRAM + 0x7ACA))++;
- (*(u16 *)(VRAM + 0x7B0A))++;
+ (*(u16 *)(BG_VRAM + 0x7ACA))++;
+ (*(u16 *)(BG_VRAM + 0x7B0A))++;
PlaySE(SE_PIN);
}
else
@@ -3944,8 +3939,8 @@ static void sub_8090C68(void)
Menu_EraseWindowRect(2, 13, 27, 19);
Menu_PrintText(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13);
gPokedexView->descriptionPageNum = 0;
- (*(u16 *)(VRAM + 0x7ACA))--;
- (*(u16 *)(VRAM + 0x7B0A))--;
+ (*(u16 *)(BG_VRAM + 0x7ACA))--;
+ (*(u16 *)(BG_VRAM + 0x7B0A))--;
PlaySE(SE_PIN);
}
}
@@ -4172,16 +4167,15 @@ static u8 sub_80911C8(u16 num, u8 b, u8 c)
for (i = 0; i < 11; i++)
str[i] = EOS;
num = NationalPokedexNumToSpecies(num);
- switch (num)
+ if (num)
{
- default:
for (i = 0; gSpeciesNames[num][i] != EOS && i < 10; i++)
str[i] = gSpeciesNames[num][i];
- break;
- case 0:
+ }
+ else
+ {
for (i = 0; i < 10; i++)
str[i] = 0xAE;
- break;
}
Menu_PrintText(str, b, c);
return i;
@@ -4431,42 +4425,36 @@ static void sub_8091564(u16 arg0, u8 left, u8 top)
void sub_8091738(u16 num, u16 b, u16 c)
{
u8 arr[0x80];
- u16 i;
- u16 j;
+ u16 i, j, r7;
const u8 *r12;
- u16 r7;
- u8 r3;
+ u8 r3, r1;
- r12 = sMonFootprintTable[NationalPokedexNumToSpecies(num)];
- for (r7 = 0, i = 0; i < 32; i++)
+ r12 = (const u8*)sMonFootprintTable[NationalPokedexNumToSpecies(num)];
+ r7 = 0;
+ for (i = 0; i < 32; i++)
{
r3 = r12[i];
for (j = 0; j < 4; j++)
{
- u32 r1 = j * 2;
- s32 r2 = (r3 >> r1) & 1;
-
- if (r3 & (2 << r1))
- r2 |= 0x10;
+ r1 = 0;
+ if (r3 & (1 << (j * 2)))
+ r1 |= 0x01;
+ if (r3 & (2 << (j * 2)))
+ r1 |= 0x10;
-// Needed to match
-#ifndef NONMATCHING
- asm("");asm("");asm("");asm("");asm("");
-#endif
-
- arr[r7] = r2;
+ arr[r7] = r1;
r7++;
}
}
- CpuCopy16(arr, (u16 *)(VRAM + b * 0x4000 + c * 0x20), 0x80);
+ CpuCopy16((void*)arr, (void *)(BG_VRAM + b * 0x4000 + c * 0x20), 0x80);
}
static void sub_80917CC(u16 a, u16 b)
{
- *(u16 *)(VRAM + a * 0x800 + 0x232) = 0xF000 + b + 0;
- *(u16 *)(VRAM + a * 0x800 + 0x234) = 0xF000 + b + 1;
- *(u16 *)(VRAM + a * 0x800 + 0x272) = 0xF000 + b + 2;
- *(u16 *)(VRAM + a * 0x800 + 0x274) = 0xF000 + b + 3;
+ *(u16 *)(BG_VRAM + a * 0x800 + 0x232) = 0xF000 + b + 0;
+ *(u16 *)(BG_VRAM + a * 0x800 + 0x234) = 0xF000 + b + 1;
+ *(u16 *)(BG_VRAM + a * 0x800+ 0x272) = 0xF000 + b + 2;
+ *(u16 *)(BG_VRAM + a * 0x800 + 0x274) = 0xF000 + b + 3;
}
static u16 sub_8091818(u8 a, u16 b, u16 c, u16 d)
@@ -5084,74 +5072,25 @@ static void sub_80927F0(u8 taskId)
DestroyTask(taskId);
}
-#ifdef NONMATCHING
+#define VRAM_ADDR(a, b, c) *(u16 *)(BG_VRAM + (15 * 0x800) + (c) * 64 + ((b) + (a))*2)
void sub_8092810(u8 a, u8 b, u8 c, u8 d)
{
- u16 i;
+ u16 i, j;
for (i = 0; i < d; i++)
{
- ((u16 *)VRAM)[15 * 0x400 + c * 32 + i + b] &= 0xFFF;
- ((u16 *)VRAM)[15 * 0x400 + c * 32 + i + b] |= a << 12;
+ j = VRAM_ADDR(i, b, c);
+ j &= 0xFFF;
+ j |= a << 12;
- ((u16 *)VRAM)[15 * 0x400 + (c + 1) * 32 + i + b] &= 0xFFF;
- ((u16 *)VRAM)[15 * 0x400 + (c + 1) * 32 + i + b] |= a << 12;
+ VRAM_ADDR(i, b, c) = j;
+
+ j = VRAM_ADDR(i, b, c + 1);
+ j &= 0xFFF;
+ j |= a << 12;
+ VRAM_ADDR(i, b, c + 1) = j;
}
}
-#else
-NAKED
-void sub_8092810(u8 a, u8 b, u8 c, u8 d)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r12, r1\n\
- lsls r2, 24\n\
- lsrs r1, r2, 24\n\
- lsls r3, 24\n\
- lsrs r5, r3, 8\n\
- movs r3, 0\n\
- cmp r5, 0\n\
- beq _0809285A\n\
- lsls r7, r1, 6\n\
- ldr r6, _08092860 @ =0x00000fff\n\
- lsls r4, r0, 12\n\
-_08092830:\n\
- mov r0, r12\n\
- adds r1, r0, r3\n\
- lsls r1, 1\n\
- adds r1, r7, r1\n\
- ldr r0, _08092864 @ =0x06007800\n\
- adds r2, r1, r0\n\
- ldrh r0, [r2]\n\
- ands r0, r6\n\
- orrs r0, r4\n\
- strh r0, [r2]\n\
- ldr r0, _08092868 @ =0x06007840\n\
- adds r1, r0\n\
- ldrh r0, [r1]\n\
- ands r0, r6\n\
- orrs r0, r4\n\
- strh r0, [r1]\n\
- adds r0, r3, 0x1\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- cmp r0, r5\n\
- bcc _08092830\n\
-_0809285A:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08092860: .4byte 0x00000fff\n\
-_08092864: .4byte 0x06007800\n\
-_08092868: .4byte 0x06007840\n\
- .syntax divided\n");
-}
-#endif
static void sub_809286C(u8 a, u8 b, u8 c)
{
diff --git a/src/pokemon_storage_system_4.c b/src/pokemon_storage_system_4.c
index 6a1b78192..40e0e850b 100644
--- a/src/pokemon_storage_system_4.c
+++ b/src/pokemon_storage_system_4.c
@@ -2386,7 +2386,7 @@ void sub_809CC04(void)
gPokemonStorageSystemPtr->unk_11c4 = &gSprites[spriteId];
gPokemonStorageSystemPtr->unk_11c4->oam.priority = priority;
if (sBoxCursorArea)
- gPokemonStorageSystemPtr->unk_11c4->invisible = 1;
+ gPokemonStorageSystemPtr->unk_11c4->invisible = TRUE;
}
else
{
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 57626fc9d..63a65a6f0 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -4125,7 +4125,7 @@ static void sub_80A1BC0(struct Sprite *sprite)
else
{
sprite->data[1] = 0;
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
}
if (sprite->data[0] == 9)
diff --git a/src/pokenav.c b/src/pokenav.c
index 82b9a0f01..1db1ec6cc 100644
--- a/src/pokenav.c
+++ b/src/pokenav.c
@@ -3505,7 +3505,7 @@ void sub_80F3008(u8 arg0)
if (spriteId != MAX_SPRITES)
{
gPokenavStructPtr->unk87D0[i] = &gSprites[spriteId];
- gSprites[spriteId].invisible = 1;
+ gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].data[0] = 0;
gSprites[spriteId].data[1] = 0;
gSprites[spriteId].data[2] = i == 0 ? -1 : 1;
@@ -4030,7 +4030,7 @@ void sub_80F3D00(void)
if (spriteId != MAX_SPRITES)
{
gPokenavStructPtr->unk8800[i] = &gSprites[spriteId];
- gPokenavStructPtr->unk8800[i]->invisible = 1;
+ gPokenavStructPtr->unk8800[i]->invisible = TRUE;
}
else
{
@@ -4099,13 +4099,13 @@ void sub_80F3E9C(struct Sprite *sprite)
return;
SeekSpriteAnim(sprite, 0);
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
}
sub_80F3E24(sprite);
if (sprite->animEnded)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
if (sprite->data[3] == sprite->data[2])
{
if (sprite->data[3] == 9)
@@ -4147,7 +4147,7 @@ void sub_80F3F20(u8 arg0, u8 arg1)
sub_80F3E24(gPokenavStructPtr->unk8800[i]);
sub_80F3FAC();
gPokenavStructPtr->unk8800[i]->callback = sub_80F3E04;
- gPokenavStructPtr->unk8800[i]->invisible = 0;
+ gPokenavStructPtr->unk8800[i]->invisible = FALSE;
}
}
}
@@ -4162,7 +4162,7 @@ void sub_80F3FAC(void)
if (gPokenavStructPtr->unk8800[i])
{
SeekSpriteAnim(gPokenavStructPtr->unk8800[i], 0);
- gPokenavStructPtr->unk8800[i]->invisible = 0;
+ gPokenavStructPtr->unk8800[i]->invisible = FALSE;
}
}
}
@@ -4230,7 +4230,7 @@ void sub_80F4138(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
sprite->data[0] = 1;
}
}
@@ -4238,7 +4238,7 @@ void sub_80F4138(struct Sprite *sprite)
{
if (sprite->data[0] == 1)
{
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
sprite->data[0] = 0;
}
}
@@ -4648,135 +4648,31 @@ void sub_80F492C(void)
gPokenavStructPtr->unk8FE4 = 0;
}
-#ifdef NONMATCHING
-// registers r3/r4 are swapped
-void sub_80F4944(struct UnkUsePokeblockSub *arg0)
+void sub_80F4944(struct UnkUsePokeblockSub *arg0) // This looks like a sorting algorithm. Proposal: Make local variables min, max, and currPos
{
- u16 i;
- u16 r3;
- u16 r4;
+ u16 min, max, currPos;
- i = 0;
- r4 = gPokenavStructPtr->unk8FE4;
- r3 = r4 / 2;
- while (r3 != r4)
+ min = 0;
+ max = gPokenavStructPtr->unk8FE4;
+ currPos = min + (max - min)/ 2;
+ while (max != currPos)
{
- if (arg0->unk0 > gPokenavStructPtr->unk893c[r3].unk0)
- r4 = r3;
+ if (arg0->unk0 > gPokenavStructPtr->unk893c[currPos].unk0)
+ max = currPos;
else
- i = r3 + 1;
+ min = currPos + 1;
- r3 = ((r4 - i) / 2) + i;
+ currPos = min + (max - min) / 2;
}
- r4 = gPokenavStructPtr->unk8FE4;
- while (r4 > r3)
+ for ( max = gPokenavStructPtr->unk8FE4; max > currPos; max--)
{
- gPokenavStructPtr->unk893c[r4] = gPokenavStructPtr->unk893c[r4 - 1];
- r4--;
+ gPokenavStructPtr->unk893c[max] = gPokenavStructPtr->unk893c[max - 1];
}
- gPokenavStructPtr->unk893c[r3] = *arg0;
+ gPokenavStructPtr->unk893c[currPos] = *arg0;
gPokenavStructPtr->unk8FE4++;
}
-#else
-NAKED
-void sub_80F4944(struct UnkUsePokeblockSub *arg0)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- mov r12, r0\n\
- movs r2, 0\n\
- ldr r1, _080F4978 @ =gPokenavStructPtr\n\
- ldr r5, [r1]\n\
- ldr r3, _080F497C @ =0x00008fe4\n\
- adds r0, r5, r3\n\
- ldrh r4, [r0]\n\
- lsrs r3, r4, 1\n\
- mov r8, r1\n\
- cmp r4, r3\n\
- beq _080F499C\n\
- adds r6, r5, 0\n\
- mov r0, r12\n\
- ldrb r5, [r0]\n\
- ldr r7, _080F4980 @ =0x0000893c\n\
-_080F4968:\n\
- lsls r0, r3, 2\n\
- adds r0, r6, r0\n\
- adds r0, r7\n\
- ldrb r0, [r0]\n\
- cmp r5, r0\n\
- bls _080F4984\n\
- adds r4, r3, 0\n\
- b _080F498A\n\
- .align 2, 0\n\
-_080F4978: .4byte gPokenavStructPtr\n\
-_080F497C: .4byte 0x00008fe4\n\
-_080F4980: .4byte 0x0000893c\n\
-_080F4984:\n\
- adds r0, r3, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
-_080F498A:\n\
- subs r0, r4, r2\n\
- lsrs r1, r0, 31\n\
- adds r0, r1\n\
- asrs r0, 1\n\
- adds r0, r2, r0\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- cmp r4, r3\n\
- bne _080F4968\n\
-_080F499C:\n\
- mov r1, r8\n\
- ldr r2, [r1]\n\
- ldr r1, _080F49EC @ =0x00008fe4\n\
- adds r0, r2, r1\n\
- ldrh r4, [r0]\n\
- lsls r6, r3, 2\n\
- cmp r4, r3\n\
- bls _080F49C6\n\
- ldr r0, _080F49F0 @ =0x0000893c\n\
- adds r5, r2, r0\n\
-_080F49B0:\n\
- lsls r2, r4, 2\n\
- adds r2, r5, r2\n\
- subs r1, r4, 0x1\n\
- lsls r0, r1, 2\n\
- adds r0, r5, r0\n\
- ldr r0, [r0]\n\
- str r0, [r2]\n\
- lsls r1, 16\n\
- lsrs r4, r1, 16\n\
- cmp r4, r3\n\
- bhi _080F49B0\n\
-_080F49C6:\n\
- mov r1, r8\n\
- ldr r2, [r1]\n\
- ldr r3, _080F49F0 @ =0x0000893c\n\
- adds r0, r2, r3\n\
- adds r0, r6\n\
- mov r3, r12\n\
- ldr r1, [r3]\n\
- str r1, [r0]\n\
- ldr r0, _080F49EC @ =0x00008fe4\n\
- adds r2, r0\n\
- ldrh r0, [r2]\n\
- adds r0, 0x1\n\
- strh r0, [r2]\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080F49EC: .4byte 0x00008fe4\n\
-_080F49F0: .4byte 0x0000893c\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
void sub_80F49F4(void)
{
diff --git a/src/unk_text_8095904.c b/src/unk_text_8095904.c
index b619cbbe4..6d79b2586 100644
--- a/src/unk_text_8095904.c
+++ b/src/unk_text_8095904.c
@@ -11,18 +11,17 @@
extern const u32 gFont3LatinGlyphs[];
// text
-
-// some CSE stuff + register swaps (possibly DUE to CSE)
-#ifdef NONMATCHING
void sub_8095904(const u8 *src, u8 *dest, u8 bgOverride, u16 width, u8 bg, u8 *buffer)
{
- u16 strlen = StringLength(src);
+ const u8 *glyphs;
+ u16 i, strlen = StringLength(src);
+
if (bgOverride == 0)
{
- u16 i;
for (i = 0; i < strlen; i++)
{
- const u8 *glyphs = (const u8 *)(gFont3LatinGlyphs + ((src[i] & 0xfff0) * 16) + ((src[i] & 0xf) * 8));
+ glyphs = (const u8 *)((u32)(gFont3LatinGlyphs) +
+ (u32)((src[i] & 0xfff0) * 0x40 + (src[i] & 0xf) * 0x20));
CpuCopy16(glyphs, dest, 32);
CpuCopy16(glyphs + 0x200, dest + width, 32);
dest += 32;
@@ -30,22 +29,23 @@ void sub_8095904(const u8 *src, u8 *dest, u8 bgOverride, u16 width, u8 bg, u8 *b
}
else
{
- u16 i; // sp18
- u16 r9 = 0;
- u8 bgHi = bg << 4;
- u16 size = strlen * 32;
- for (i = 0; i < 2; i++)
+ u8 bgHi, r3, r2;
+ u16 size, j, r9, k;
+ k = 0;
+ bgHi = bg << 4;
+ size = strlen * 32;
+ for (j = 0; j < 2; j++)
{
- u16 j;
- for (j = 0; j < strlen; j++) // r5
+ for (i = 0; i < strlen; i++) // r5
{
- const u32 *glyphs = (const u32 *)(gFont3LatinGlyphs + (i * 0x80) + ((src[j] & 0xfff0) * 16) + ((src[j] & 0xf) * 8));
+ glyphs = (const u8 *)((u32)(gFont3LatinGlyphs) +
+ (u32)((src[i] & 0xfff0) * 0x40 + (src[i] & 0xf) * 0x20)) +
+ (j * 0x200);
- u16 k; // r6
- for (k = 0; k < 32; k++)
+ for (r9 = 0; r9 < 32; r9++)
{
- u8 r3 = *glyphs & 0xf0;
- u8 r2 = *glyphs & 0x0f;
+ r3 = *glyphs & 0xf0;
+ r2 = *glyphs & 0x0f;
if (r3 == 0)
{
r3 = bgHi;
@@ -54,184 +54,16 @@ void sub_8095904(const u8 *src, u8 *dest, u8 bgOverride, u16 width, u8 bg, u8 *b
{
r2 = bg;
}
- buffer[r9++] = r3 | r2;
+ buffer[k++] = r3 | r2;
glyphs++;
}
}
CpuCopy16(buffer, dest, size);
dest += width;
- r9 = 0;
+ k = 0;
}
}
}
-#else
-NAKED void sub_8095904(const u8 *src, u8 *dest, u8 bgOverride, u16 width, u8 bg, u8 *buffer)
-{
- 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"
- "\tstr r0, [sp]\n"
- "\tadds r7, r1, 0\n"
- "\tadds r4, r2, 0\n"
- "\tldr r0, [sp, 0x3C]\n"
- "\tlsls r4, 24\n"
- "\tlsrs r4, 24\n"
- "\tlsls r3, 16\n"
- "\tlsrs r3, 16\n"
- "\tstr r3, [sp, 0x4]\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tstr r0, [sp, 0x8]\n"
- "\tldr r0, [sp]\n"
- "\tbl StringLength\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tmov r8, r0\n"
- "\tcmp r4, 0\n"
- "\tbne _08095988\n"
- "\tmovs r5, 0\n"
- "\tcmp r5, r8\n"
- "\tbcs _08095A2E\n"
- "_0809593E:\n"
- "\tldr r1, [sp]\n"
- "\tadds r0, r1, r5\n"
- "\tldrb r2, [r0]\n"
- "\tldr r0, _08095980 @ =0x0000fff0\n"
- "\tands r0, r2\n"
- "\tlsls r0, 6\n"
- "\tmovs r1, 0xF\n"
- "\tands r2, r1\n"
- "\tlsls r2, 5\n"
- "\tadds r0, r2\n"
- "\tldr r1, _08095984 @ =gFont3LatinGlyphs\n"
- "\tadds r4, r0, r1\n"
- "\tadds r0, r4, 0\n"
- "\tadds r1, r7, 0\n"
- "\tmovs r2, 0x10\n"
- "\tbl CpuSet\n"
- "\tmovs r2, 0x80\n"
- "\tlsls r2, 2\n"
- "\tadds r0, r4, r2\n"
- "\tldr r3, [sp, 0x4]\n"
- "\tadds r1, r7, r3\n"
- "\tmovs r2, 0x10\n"
- "\tbl CpuSet\n"
- "\tadds r7, 0x20\n"
- "\tadds r0, r5, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r5, r0, 16\n"
- "\tcmp r5, r8\n"
- "\tbcc _0809593E\n"
- "\tb _08095A2E\n"
- "\t.align 2, 0\n"
- "_08095980: .4byte 0x0000fff0\n"
- "_08095984: .4byte gFont3LatinGlyphs\n"
- "_08095988:\n"
- "\tmovs r0, 0\n"
- "\tmov r9, r0\n"
- "\tldr r1, [sp, 0x8]\n"
- "\tlsls r0, r1, 28\n"
- "\tlsrs r0, 24\n"
- "\tstr r0, [sp, 0xC]\n"
- "\tmov r2, r8\n"
- "\tlsls r0, r2, 21\n"
- "\tmovs r1, 0\n"
- "\tlsrs r0, 1\n"
- "\tstr r0, [sp, 0x10]\n"
- "_0809599E:\n"
- "\tmovs r5, 0\n"
- "\tldr r3, [sp, 0x4]\n"
- "\tadds r3, r7, r3\n"
- "\tstr r3, [sp, 0x14]\n"
- "\tadds r0, r1, 0x1\n"
- "\tstr r0, [sp, 0x18]\n"
- "\tcmp r5, r8\n"
- "\tbcs _08095A12\n"
- "\tmovs r2, 0xF\n"
- "\tmov r12, r2\n"
- "\tlsls r1, 9\n"
- "\tldr r0, _08095A40 @ =gFont3LatinGlyphs\n"
- "\tadds r1, r0\n"
- "\tmov r10, r1\n"
- "_080959BA:\n"
- "\tldr r3, [sp]\n"
- "\tadds r0, r3, r5\n"
- "\tldrb r1, [r0]\n"
- "\tldr r0, _08095A44 @ =0x0000fff0\n"
- "\tands r0, r1\n"
- "\tlsls r0, 6\n"
- "\tmov r2, r12\n"
- "\tands r1, r2\n"
- "\tlsls r1, 5\n"
- "\tadds r0, r1\n"
- "\tmov r3, r10\n"
- "\tadds r4, r0, r3\n"
- "\tmovs r6, 0\n"
- "\tadds r5, 0x1\n"
- "_080959D6:\n"
- "\tldrb r0, [r4]\n"
- "\tmovs r3, 0xF0\n"
- "\tands r3, r0\n"
- "\tmov r2, r12\n"
- "\tands r2, r0\n"
- "\tcmp r3, 0\n"
- "\tbne _080959E6\n"
- "\tldr r3, [sp, 0xC]\n"
- "_080959E6:\n"
- "\tcmp r2, 0\n"
- "\tbne _080959EC\n"
- "\tldr r2, [sp, 0x8]\n"
- "_080959EC:\n"
- "\tmov r0, r9\n"
- "\tadds r1, r0, 0x1\n"
- "\tlsls r1, 16\n"
- "\tlsrs r1, 16\n"
- "\tmov r9, r1\n"
- "\tldr r1, [sp, 0x40]\n"
- "\tadds r0, r1, r0\n"
- "\torrs r3, r2\n"
- "\tstrb r3, [r0]\n"
- "\tadds r4, 0x1\n"
- "\tadds r0, r6, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r6, r0, 16\n"
- "\tcmp r6, 0x1F\n"
- "\tbls _080959D6\n"
- "\tlsls r0, r5, 16\n"
- "\tlsrs r5, r0, 16\n"
- "\tcmp r5, r8\n"
- "\tbcc _080959BA\n"
- "_08095A12:\n"
- "\tldr r0, [sp, 0x40]\n"
- "\tadds r1, r7, 0\n"
- "\tldr r3, [sp, 0x10]\n"
- "\tlsrs r2, r3, 16\n"
- "\tbl CpuSet\n"
- "\tldr r7, [sp, 0x14]\n"
- "\tmovs r0, 0\n"
- "\tmov r9, r0\n"
- "\tldr r1, [sp, 0x18]\n"
- "\tlsls r0, r1, 16\n"
- "\tlsrs r1, r0, 16\n"
- "\tcmp r1, 0x1\n"
- "\tbls _0809599E\n"
- "_08095A2E:\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"
- "_08095A40: .4byte gFont3LatinGlyphs\n"
- "_08095A44: .4byte 0x0000fff0");
-}
-#endif
void unref_sub_8095A48(const u8 *src, u8 *dest, u8 bgOverride, u8 width, u8 *buffer)
{