document minigame_countdown.c

This commit is contained in:
PikalaxALT
2020-02-11 13:43:14 -05:00
parent 354d837d6f
commit 9ff146b0bc
8 changed files with 152 additions and 141 deletions
+50 -50
View File
@@ -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);
}
}