diff options
author | GriffinR <griffin.g.richards@gmail.com> | 2020-09-01 13:54:16 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-01 13:54:16 -0400 |
commit | 4412f9f6979fd9fbdcab58b1a96799f2f557b02c (patch) | |
tree | 32883aaf23c727f3d27a8960b8a1498d5fb7d1a6 /src | |
parent | 69ce45f71f49c859ca7adc07902842503c07d405 (diff) | |
parent | 403b8546684d4a8074220d27aa32471ec546abf0 (diff) |
Merge pull request #800 from PokeCodec/matchRubyTime
Match more functions
Diffstat (limited to 'src')
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)®_FIFO_A; - REG_DMA2SAD = (s32)soundInfo->pcmBuffer + PCM_DMA_BUF_SIZE; - REG_DMA2DAD = (s32)®_FIFO_B; + REG_DMA1SAD = (u32)soundInfo->pcmBuffer; + REG_DMA1DAD = (u32)®_FIFO_A; + REG_DMA2SAD = (u32)soundInfo->pcmBuffer + PCM_DMA_BUF_SIZE; + REG_DMA2DAD = (u32)®_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) { |