summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorwho-knows-who <j.williams.8@warwick.ac.uk>2018-08-01 14:21:14 +0100
committerwho-knows-who <j.williams.8@warwick.ac.uk>2018-08-01 14:21:14 +0100
commit574454555454ecbe0b508c0cf90bea3853ed8d5b (patch)
tree7b2fe1539947e3ed3b6f707d7698adc73bd4ce04 /src
parent4f5409b7082570879ff78f4f0963a5a7cff2edfa (diff)
slight changes
Diffstat (limited to 'src')
-rw-r--r--src/battle/anim/flying.c55
1 files changed, 28 insertions, 27 deletions
diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c
index dd3baebb2..ca4b61771 100644
--- a/src/battle/anim/flying.c
+++ b/src/battle/anim/flying.c
@@ -36,7 +36,7 @@ void sub_80DB5E4(struct Sprite *sprite);
void sub_80DA0DC(u8 taskId);
-int sub_80DA6F0(int a1);
+u32 sub_80DA6F0(u32 a1);
const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA380 =
{
@@ -643,21 +643,19 @@ void sub_80DA4D8(struct Sprite *sprite ) {
s16 * data;
u8 bank;
s16 spriteCoord;
- s16 v6;
- u32 t1, t2;
+ u32 t1;
+ u16 t2;
- int v7;
- int v8;
+ u32 v7;
+ u8 arg2byte;
u32 matrixNum;
- int sinVal1;
- int v14;
- //s16 sinVal2;
- //int temp;
+ //int sinVal1;
+ u8 v14;
register s16 sinVal2 asm ("r4");
- register int temp asm ("r0");
+ register int sinVal3 asm ("r0");
data = sprite->data;
@@ -672,29 +670,33 @@ void sub_80DA4D8(struct Sprite *sprite ) {
}
sprite->pos1.x = GetBattlerSpriteCoord(bank, 0) + gBattleAnimArgs[0];
+
+ spriteCoord = GetBattlerSpriteCoord(bank, 1);
- spriteCoord = (u8) GetBattlerSpriteCoord(bank, 1u);
- v6 = spriteCoord + gBattleAnimArgs[1];
sprite->pos1.y = spriteCoord + gBattleAnimArgs[1];
- data[4] = v6 << 8;
-
- t1 = 2 * (spriteCoord + (u16)gBattleAnimArgs[6]);
- data[7] = (data[7] & 1) | t1;
+ data[4] = sprite->pos1.y << 8;
- *(u8*)data |= 4u;
+ // keep lowest bit of data[7] replace other bits from coord + animarg[6]
+ //arg6 = gBattleAnimArgs[6];
+ t1 = (spriteCoord + (u16)gBattleAnimArgs[6]) << 1;
+ data[7] = (data[7] & 1) | t1;
+
+ // 3rd bit of data[0] = 1
+ // needs to store a byte
+ *(u8*)data |= 4;
v7 = (u16) gBattleAnimArgs[2];
- v8 = (u8) gBattleAnimArgs[2];
+ arg2byte = gBattleAnimArgs[2]; // (u8)
- data[1] = (u8) gBattleAnimArgs[2];
+ data[1] = arg2byte;
v7 = v7 << 16;
- v7 = ((u32)v7) >> 24;
- data[5] = v7;
+ v7 = v7 >> 16;
+ data[5] = v7 >> 8;
data[2] = gBattleAnimArgs[3];
data[3] = gBattleAnimArgs[4];
data[6] = gBattleAnimArgs[5];
- if ((u16)(v8 - 64) <= 0x7f){
+ if ((u16)(arg2byte - 64) <= 0x7f){
if (gMain.inBattle) {
sprite->oam.priority = sub_8079ED4(bank) + 1;
@@ -736,18 +738,17 @@ void sub_80DA4D8(struct Sprite *sprite ) {
t2 = (u16)data[1] >> 6 << 4;
*(u8*)data = (15 & (u8)data[0]) | t2;
- sinVal1 = gSineTable[(u16)data[1]];
- sprite->pos2.x = (sinVal1 * (u8)data[6]) >> 8;
+ sprite->pos2.x = (gSineTable[(u16)data[1]] * (u8)data[6]) >> 8;
matrixNum = sprite->oam.matrixNum;
- v14 = (u8) ((-sprite->pos2.x >> 1) + (u8)data[5]);
+ v14 = (-sprite->pos2.x >> 1) + (u8)data[5];
sinVal2 = gSineTable[v14];
gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[v14 + 64];
gOamMatrices[matrixNum].b = sinVal2;
- temp = - (s16) sinVal2;
- gOamMatrices[matrixNum].c = temp;
+ sinVal3 = - sinVal2;
+ gOamMatrices[matrixNum].c = sinVal3;
sprite->callback = (SpriteCallback) sub_80DA6F0;