document minigame_countdown.c
This commit is contained in:
+50
-50
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user