summaryrefslogtreecommitdiff
path: root/src/sprite.c
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-02-11 13:43:14 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2020-02-11 13:43:14 -0500
commit9ff146b0bcf3e5f2bbb0db9a21a147dde80d81fd (patch)
tree1c983f6d141765bc5e556abd8c19b67f7aac9305 /src/sprite.c
parent354d837d6f680b44b7824e95a1363b387717807a (diff)
document minigame_countdown.c
Diffstat (limited to 'src/sprite.c')
-rw-r--r--src/sprite.c100
1 files changed, 50 insertions, 50 deletions
diff --git a/src/sprite.c b/src/sprite.c
index c1fc89777..d109a8347 100644
--- a/src/sprite.c
+++ b/src/sprite.c
@@ -250,47 +250,47 @@ static const AffineAnimCmdFunc sAffineAnimCmdFuncs[] =
AffineAnimCmd_frame,
};
-static const s32 sUnknown_082EC6F4[3][4][2] =
+static const s32 sOamDimensionsCopy[3][4][2] =
{
- {
- {8, 8},
- {0x10, 0x10},
- {0x20, 0x20},
- {0x40, 0x40},
+ [ST_OAM_SQUARE] = {
+ [ST_OAM_SIZE_0] = { 8, 8}, // SPRITE_SIZE_8x8
+ [ST_OAM_SIZE_1] = {16, 16}, // SPRITE_SIZE_16x16
+ [ST_OAM_SIZE_2] = {32, 32}, // SPRITE_SIZE_32x32
+ [ST_OAM_SIZE_3] = {64, 64}, // SPRITE_SIZE_64x64
},
- {
- {0x10, 8},
- {0x20, 8},
- {0x20, 0x10},
- {0x40, 0x20},
+ [ST_OAM_H_RECTANGLE] = {
+ [ST_OAM_SIZE_0] = {16, 8}, // SPRITE_SIZE_16x8
+ [ST_OAM_SIZE_1] = {32, 8}, // SPRITE_SIZE_32x8
+ [ST_OAM_SIZE_2] = {32, 16}, // SPRITE_SIZE_32x16
+ [ST_OAM_SIZE_3] = {64, 32}, // SPRITE_SIZE_64x32
},
- {
- {8, 0x10},
- {8, 0x20},
- {0x10, 0x20},
- {0x20, 0x40},
+ [ST_OAM_V_RECTANGLE] = {
+ [ST_OAM_SIZE_0] = { 8, 16}, // SPRITE_SIZE_8x16
+ [ST_OAM_SIZE_1] = { 8, 32}, // SPRITE_SIZE_8x32
+ [ST_OAM_SIZE_2] = {16, 32}, // SPRITE_SIZE_16x32
+ [ST_OAM_SIZE_3] = {32, 64}, // SPRITE_SIZE_32x64
},
};
static const struct OamDimensions sOamDimensions[3][4] =
{
- { // square
- { 8, 8 },
- { 16, 16 },
- { 32, 32 },
- { 64, 64 },
+ [ST_OAM_SQUARE] = {
+ [ST_OAM_SIZE_0] = { 8, 8}, // SPRITE_SIZE_8x8
+ [ST_OAM_SIZE_1] = {16, 16}, // SPRITE_SIZE_16x16
+ [ST_OAM_SIZE_2] = {32, 32}, // SPRITE_SIZE_32x32
+ [ST_OAM_SIZE_3] = {64, 64}, // SPRITE_SIZE_64x64
},
- { // horizontal rectangle
- { 16, 8 },
- { 32, 8 },
- { 32, 16 },
- { 64, 32 },
+ [ST_OAM_H_RECTANGLE] = {
+ [ST_OAM_SIZE_0] = {16, 8}, // SPRITE_SIZE_16x8
+ [ST_OAM_SIZE_1] = {32, 8}, // SPRITE_SIZE_32x8
+ [ST_OAM_SIZE_2] = {32, 16}, // SPRITE_SIZE_32x16
+ [ST_OAM_SIZE_3] = {64, 32}, // SPRITE_SIZE_64x32
},
- { // vertical rectangle
- { 8, 16 },
- { 8, 32 },
- { 16, 32 },
- { 32, 64 },
+ [ST_OAM_V_RECTANGLE] = {
+ [ST_OAM_SIZE_0] = { 8, 16}, // SPRITE_SIZE_8x16
+ [ST_OAM_SIZE_1] = { 8, 32}, // SPRITE_SIZE_8x32
+ [ST_OAM_SIZE_2] = {16, 32}, // SPRITE_SIZE_16x32
+ [ST_OAM_SIZE_3] = {32, 64}, // SPRITE_SIZE_32x64
},
};
@@ -1222,43 +1222,43 @@ u8 GetSpriteMatrixNum(struct Sprite *sprite)
return matrixNum;
}
-void sub_8007FFC(struct Sprite* sprite, s16 a2, s16 a3)
+void obj_pos2_update_enable(struct Sprite* sprite, s16 a2, s16 a3)
{
sprite->data[6] = a2;
sprite->data[7] = a3;
sprite->flags_f = 1;
}
-s32 sub_800800C(s32 a0, s32 a1, s32 a2)
+static s32 affine_get_new_pos2(s32 baseDim, s32 xformed, s32 modifier)
{
- s32 subResult, var1;
+ s32 subResult, shiftResult;
- subResult = a1 - a0;
+ subResult = xformed - baseDim;
if (subResult < 0)
- var1 = -(subResult) >> 9;
+ shiftResult = -(subResult) >> 9;
else
- var1 = -(subResult >> 9);
- return a2 - ((u32)(a2 * a1) / (u32)(a0) + var1);
+ shiftResult = -(subResult >> 9);
+ return modifier - ((u32)(modifier * xformed) / (u32)(baseDim) + shiftResult);
}
-void obj_update_pos2(struct Sprite *sprite, s32 a1, s32 a2)
+static void obj_update_pos2(struct Sprite *sprite, s32 xmod, s32 ymod)
{
- s32 var0, var1, var2;
+ s32 dim, baseDim, xFormed;
u32 matrixNum = sprite->oam.matrixNum;
- if (a1 != 0x800)
+ if (xmod != 0x800)
{
- var0 = sUnknown_082EC6F4[sprite->oam.shape][sprite->oam.size][0];
- var1 = var0 << 8;
- var2 = (var0 << 16) / gOamMatrices[matrixNum].a;
- sprite->pos2.x = sub_800800C(var1, var2, a1);
+ dim = sOamDimensionsCopy[sprite->oam.shape][sprite->oam.size][0];
+ baseDim = dim << 8;
+ xFormed = (dim << 16) / gOamMatrices[matrixNum].a;
+ sprite->pos2.x = affine_get_new_pos2(baseDim, xFormed, xmod);
}
- if (a2 != 0x800)
+ if (ymod != 0x800)
{
- var0 = sUnknown_082EC6F4[sprite->oam.shape][sprite->oam.size][1];
- var1 = var0 << 8;
- var2 = (var0 << 16) / gOamMatrices[matrixNum].d;
- sprite->pos2.y = sub_800800C(var1, var2, a2);
+ dim = sOamDimensionsCopy[sprite->oam.shape][sprite->oam.size][1];
+ baseDim = dim << 8;
+ xFormed = (dim << 16) / gOamMatrices[matrixNum].d;
+ sprite->pos2.y = affine_get_new_pos2(baseDim, xFormed, ymod);
}
}