more sprite oam clean-up

This commit is contained in:
DizzyEggg
2024-12-22 10:23:15 +01:00
parent 5a18f5af52
commit a32c559336
6 changed files with 131 additions and 426 deletions

View File

@@ -225,6 +225,23 @@ typedef struct SpriteOAM
(spritePtr)->attrib2 |= xSpriteVal; \
}
// Hacky way of matching functions in menu_input.c AddMenuCursorSprite_, sub_801332C sub_8013470
#define SpriteSetX_MatrixNumSize0(spritePtr, _x) \
{ \
u32 xSpriteVal = _x; \
xSpriteVal &= SPRITEOAM_MAX_X; \
xSpriteVal <<= SPRITEOAM_SHIFT_X; \
(spritePtr)->attrib2 &= ~SPRITEOAM_MASK_X; \
(spritePtr)->attrib2 = xSpriteVal; \
}
#define SpriteGetY(spritePtr, _y) \
{ \
_y = (spritePtr)->unk6; \
_y >>= SPRITEOAM_SHIFT_UNK6_4; \
_y &= SPRITEOAM_MAX_UNK6_4; \
}
#define SpriteSetY(spritePtr, _y) \
{ \
u32 ySpriteVal = _y; \
@@ -234,6 +251,14 @@ typedef struct SpriteOAM
(spritePtr)->unk6 |= ySpriteVal; \
}
#define SpriteAddY(spritePtr, addVal) \
{ \
u32 _yVal; \
SpriteGetY(spritePtr, _yVal); \
_yVal += (addVal); \
SpriteSetY(spritePtr, _yVal); \
}
#define SpriteSetUnk6_0(spritePtr, _unk6_0) \
{ \
u32 unk6_0 = _unk6_0; \

View File

@@ -2290,18 +2290,8 @@ void sub_806C51C(Entity *entity)
if (xSprite >= -32 && ySprite >= -32 && xSprite <= 271 && ySprite <= 191 && r7 != 6 && entity->unk22 == 0) {
struct unkStruct_202ED28 *spriteStructPtr = &gUnknown_202ED28[var_34][r7];
if (entInfo->unk156 != 0) {
u32 finalXSprite, finalYSprite;
finalXSprite = xSprite + spriteStructPtr->x;
finalXSprite &= SPRITEOAM_MASK_X;
spriteStructPtr->sprite.attrib2 &= ~SPRITEOAM_MASK_X;
spriteStructPtr->sprite.attrib2 |= finalXSprite;
finalYSprite = ySprite + spriteStructPtr->y;
finalYSprite &= SPRITEOAM_MAX_UNK6_4;
finalYSprite <<= SPRITEOAM_SHIFT_UNK6_4;
spriteStructPtr->sprite.unk6 &= ~SPRITEOAM_MASK_UNK6_4;
spriteStructPtr->sprite.unk6 |= finalYSprite;
SpriteSetX(&spriteStructPtr->sprite, xSprite + spriteStructPtr->x);
SpriteSetY(&spriteStructPtr->sprite, ySprite + spriteStructPtr->y);
AddSprite(&spriteStructPtr->sprite, 0, NULL, NULL);
}

View File

@@ -1455,38 +1455,12 @@ void sub_807FA9C(void)
s32 spriteX = (x * 24) - gDungeon->unk181e8.cameraPixelPos.x;
s32 spriteY = (y * 24) - gDungeon->unk181e8.cameraPixelPos.y;
if (spriteX >= -32 && spriteY >= -32 && spriteX <= 272 && spriteY <= 192) {
u32 spriteXMasked, spriteYMasked, priority, palNum, tileNum, objMode;
objMode = 0;
objMode &= SPRITEOAM_MAX_OBJMODE;
objMode <<= SPRITEOAM_SHIFT_OBJMODE;
gUnknown_202EDC0.attrib1 &= ~SPRITEOAM_MASK_OBJMODE;
gUnknown_202EDC0.attrib1 |= objMode;
spriteYMasked = (spriteY & SPRITEOAM_MAX_UNK6_4);
spriteYMasked <<= SPRITEOAM_SHIFT_UNK6_4;
gUnknown_202EDC0.unk6 &= ~SPRITEOAM_MASK_UNK6_4;
gUnknown_202EDC0.unk6 |= spriteYMasked;
spriteXMasked = (spriteX & SPRITEOAM_MAX_X);
spriteXMasked <<= SPRITEOAM_SHIFT_X;
gUnknown_202EDC0.attrib2 &= ~SPRITEOAM_MASK_X;
gUnknown_202EDC0.attrib2 |= spriteXMasked;
priority = 3 & SPRITEOAM_MAX_PRIORITY;
priority <<= SPRITEOAM_SHIFT_PRIORITY;
gUnknown_202EDC0.attrib3 &= ~SPRITEOAM_MASK_PRIORITY;
gUnknown_202EDC0.attrib3 |= priority;
palNum = 10 & SPRITEOAM_MAX_PALETTENUM;
palNum <<= SPRITEOAM_SHIFT_PALETTENUM;
gUnknown_202EDC0.attrib3 &= ~SPRITEOAM_MASK_PALETTENUM;
gUnknown_202EDC0.attrib3 |= palNum;
tileNum = 0x1FC & SPRITEOAM_MAX_TILENUM;
tileNum <<= SPRITEOAM_SHIFT_TILENUM;
gUnknown_202EDC0.attrib3 &= ~SPRITEOAM_MASK_TILENUM;
gUnknown_202EDC0.attrib3 |= tileNum;
SpriteSetObjMode(&gUnknown_202EDC0, 0);
SpriteSetY(&gUnknown_202EDC0, spriteY);
SpriteSetX(&gUnknown_202EDC0, spriteX);
SpriteSetPriority(&gUnknown_202EDC0, 3);
SpriteSetPalNum(&gUnknown_202EDC0, 10);
SpriteSetTileNum(&gUnknown_202EDC0, 0x1FC);
AddSprite(&gUnknown_202EDC0, 0, NULL, NULL);
}

View File

@@ -9,18 +9,8 @@ bool8 sub_8083568(s32 inX, s32 inY, u8 index)
if (x >= -16 && y >= -16 && x <= 255 && y <= 175)
{
u32 finalXSprite, finalYSprite;
finalXSprite = x + gUnknown_202ED28[0][index].x;
finalXSprite &= SPRITEOAM_MASK_X;
gUnknown_202ED28[0][index].sprite.attrib2 &= ~SPRITEOAM_MASK_X;
gUnknown_202ED28[0][index].sprite.attrib2 |= finalXSprite;
finalYSprite = y + gUnknown_202ED28[0][index].y;
finalYSprite &= SPRITEOAM_MAX_UNK6_4;
finalYSprite <<= SPRITEOAM_SHIFT_UNK6_4;
gUnknown_202ED28[0][index].sprite.unk6 &= ~SPRITEOAM_MASK_UNK6_4;
gUnknown_202ED28[0][index].sprite.unk6 |= finalYSprite;
SpriteSetX(&gUnknown_202ED28[0][index].sprite, x + gUnknown_202ED28[0][index].x);
SpriteSetY(&gUnknown_202ED28[0][index].sprite, y + gUnknown_202ED28[0][index].y);
AddSprite(&gUnknown_202ED28[0][index].sprite, 0, NULL, NULL);
return TRUE;

View File

@@ -603,74 +603,26 @@ void AddMenuCursorSprite(MenuInputStruct *param_1)
void AddMenuCursorSprite_(MenuInputStruct *a0, u8 *a1)
{
SpriteOAM sp = {};
SpriteOAM* ptr;
s32 value;
s32 r0;
s32 r1;
s32 r2;
s32 r5;
struct SpriteOAM sp = {0};
if (a0->unk1A > 0) {
UpdateMenuCursorSpriteCoords(a0);
if (!(a0->unk24 & 8)) {
#ifdef NONMATCHING // SpriteOAM memes https://decomp.me/scratch/T9aXl
u32 tmp, tmp2;
#else
register u32 tmp asm("r0"), tmp2 asm("r1");
#endif
tmp = sp.attrib1;
sp.attrib1 = tmp & ~SPRITEOAM_MASK_AFFINEMODE1;
sp.attrib1 = sp.attrib1;
tmp2 = sp.attrib1;
sp.attrib1 = tmp2 & ~SPRITEOAM_MASK_AFFINEMODE2;
sp.attrib1 = sp.attrib1;
tmp2 = sp.attrib1;
sp.attrib1 = tmp2 & ~SPRITEOAM_MASK_OBJMODE;
sp.attrib1 = sp.attrib1;
tmp2 = sp.attrib1;
sp.attrib1 = tmp2 & ~SPRITEOAM_MASK_MOSAIC;
sp.attrib1 = sp.attrib1;
tmp2 = sp.attrib1;
sp.attrib1 = tmp2 & ~SPRITEOAM_MASK_BPP;
sp.attrib1 = sp.attrib1;
tmp2 = sp.attrib1;
sp.attrib1 = tmp2 & ~SPRITEOAM_MASK_SHAPE;
sp.attrib1 = sp.attrib1;
ptr = &sp;
r2 = 0x3F4 << SPRITEOAM_SHIFT_TILENUM;
ptr->attrib3 &= ~SPRITEOAM_MASK_TILENUM;
ptr->attrib3 |= r2;
ptr->attrib3 &= ~SPRITEOAM_MASK_PRIORITY;
r5 = (u16)~SPRITEOAM_MASK_UNK6_4;
r1 = 15 << SPRITEOAM_SHIFT_PALETTENUM;
ptr->attrib3 &= ~SPRITEOAM_MASK_PALETTENUM;
ptr->attrib3 |= r1;
ptr->unk6 &= ~SPRITEOAM_MASK_UNK6_0;
ptr->unk6 &= ~SPRITEOAM_MASK_UNK6_1;
r0 = a0->unk8.x;
r0 &= SPRITEOAM_MAX_X;
ptr->attrib2 = r0;
value = a0->unk8.y + 1;
value &= SPRITEOAM_MAX_UNK6_4;
value <<= SPRITEOAM_SHIFT_UNK6_4;
ptr->unk6 &= r5;
ptr->unk6 |= value;
SpriteSetAffine1(&sp, 0);
SpriteSetAffine2(&sp, 0);
SpriteSetObjMode(&sp, 0);
SpriteSetMosaic(&sp, 0);
SpriteSetBpp(&sp, 0);
SpriteSetShape(&sp, 0);
SpriteSetSize(&sp, 0);
SpriteSetTileNum(&sp, 0x3F4);
SpriteSetPriority(&sp, 0);
SpriteSetPalNum(&sp, 15);
SpriteSetUnk6_0(&sp, 0);
SpriteSetUnk6_1(&sp, 0);
SpriteSetX_MatrixNumSize0(&sp, a0->unk8.x);
SpriteSetY(&sp, a0->unk8.y + 1);
AddSprite(&sp, 0xFF, 0, 0);
}
@@ -689,197 +641,64 @@ void nullsub_34(MenuInputStructSub *a0, s32 a1)
static void sub_801332C(DungeonPos *a0)
{
SpriteOAM sp = {};
SpriteOAM* ptr;
#ifdef NONMATCHING // SpriteOAM memes https://decomp.me/scratch/zeLxS
u32 r0, r1, r2;
#else
register u32 r0 asm("r0");
register u32 r1 asm("r1");
register u32 r2 asm("r2");
#endif
u32 r3;
u32 r5;
u32 r6;
struct SpriteOAM sp = {0};
r1 = sp.attrib1;
sp.attrib1 = r1 & ~SPRITEOAM_MASK_AFFINEMODE1;
sp.attrib1 = sp.attrib1;
r2 = sp.attrib1;
sp.attrib1 = r2 & ~SPRITEOAM_MASK_AFFINEMODE2;
sp.attrib1 = sp.attrib1;
r5 = 1 << SPRITEOAM_SHIFT_OBJMODE;
r2 = sp.attrib1;
sp.attrib1 = r2 & ~SPRITEOAM_MASK_OBJMODE;
sp.attrib1 = sp.attrib1 | r5;
r2 = sp.attrib1;
sp.attrib1 = r2 & ~SPRITEOAM_MASK_MOSAIC;
sp.attrib1 = sp.attrib1;
r2 = sp.attrib1;
sp.attrib1 = r2 & ~SPRITEOAM_MASK_BPP;
sp.attrib1 = sp.attrib1;
r2 = sp.attrib1;
sp.attrib1 = r2 & ~SPRITEOAM_MASK_SHAPE;
sp.attrib1 = sp.attrib1;
ptr = &sp;
r3 = 0x3F5 << SPRITEOAM_SHIFT_TILENUM;
ptr->attrib3 &= ~SPRITEOAM_MASK_TILENUM;
ptr->attrib3 |= r3;
ptr->attrib3 &= ~SPRITEOAM_MASK_PRIORITY;
r6 = (u16)~SPRITEOAM_MASK_UNK6_4;
r2 = 15 << SPRITEOAM_SHIFT_PALETTENUM;
ptr->attrib3 &= ~SPRITEOAM_MASK_PALETTENUM;
ptr->attrib3 |= r2;
ptr->unk6 &= ~SPRITEOAM_MASK_UNK6_0;
ptr->unk6 &= ~SPRITEOAM_MASK_UNK6_1;
r1 = a0->x;
r1 &= SPRITEOAM_MAX_X;
ptr->attrib2 = r1;
r0 = a0->y + 1;
r0 &= SPRITEOAM_MAX_UNK6_4;
r0 <<= SPRITEOAM_SHIFT_UNK6_4;
ptr->unk6 &= r6;
ptr->unk6 |= r0;
SpriteSetAffine1(&sp, 0);
SpriteSetAffine2(&sp, 0);
SpriteSetObjMode(&sp, 1);
SpriteSetMosaic(&sp, 0);
SpriteSetBpp(&sp, 0);
SpriteSetShape(&sp, 0);
SpriteSetSize(&sp, 0);
SpriteSetTileNum(&sp, 0x3F5);
SpriteSetPriority(&sp, 0);
SpriteSetPalNum(&sp, 15);
SpriteSetUnk6_0(&sp, 0);
SpriteSetUnk6_1(&sp, 0);
SpriteSetX_MatrixNumSize0(&sp, a0->x);
SpriteSetY(&sp, a0->y + 1);
AddSprite(&sp, 0xFF, NULL, NULL);
}
static void sub_8013470(MenuInputStruct *a0)
{
SpriteOAM sp = {};
#ifdef NONMATCHING // SpriteOAM memes https://decomp.me/scratch/70Ieb
SpriteOAM *ptr;
u32 r0, r1, r5;
#else
register SpriteOAM *ptr asm("r3");
register u32 r0 asm("r0");
register u32 r1 asm("r1");
register u32 r5 asm("r5");
#endif
u32 r2;
struct SpriteOAM sp = {0};
if (a0->unkC != 0) {
if (a0->unk1E != 0) {
r0 = sp.attrib1;
sp.attrib1 = r0 & ~SPRITEOAM_MASK_AFFINEMODE1;
sp.attrib1 = sp.attrib1;
r1 = sp.attrib1;
sp.attrib1 = r1 & ~SPRITEOAM_MASK_AFFINEMODE2;
sp.attrib1 = sp.attrib1;
r1 = sp.attrib1;
sp.attrib1 = r1 & (u16)~SPRITEOAM_MASK_OBJMODE;
sp.attrib1 = sp.attrib1;
r1 = sp.attrib1;
sp.attrib1 = r1 & ~SPRITEOAM_MASK_MOSAIC;
sp.attrib1 = sp.attrib1;
r1 = sp.attrib1;
sp.attrib1 = r1 & ~SPRITEOAM_MASK_BPP;
sp.attrib1 = sp.attrib1;
r1 = sp.attrib1;
sp.attrib1 = r1 & ~SPRITEOAM_MASK_SHAPE;
sp.attrib1 = sp.attrib1;
ptr = &sp;
r2 = 0x3F2 << SPRITEOAM_SHIFT_TILENUM;
r1 = ptr->attrib3;
r0 = r1 & (u16)~SPRITEOAM_MASK_TILENUM;
r0 |= r2;
r0 &= (u16)~SPRITEOAM_MASK_PRIORITY;
r5 = (u16)~SPRITEOAM_MASK_UNK6_4;
r1 = 15 << SPRITEOAM_SHIFT_PALETTENUM;
r0 &= (u16)~SPRITEOAM_MASK_PALETTENUM;
r0 |= r1;
ptr->attrib3 = r0;
r0 = ptr->unk6;
r1 = r0 & (u16)~SPRITEOAM_MASK_UNK6_0;
r1 &= (u16)~SPRITEOAM_MASK_UNK6_1;
r0 = a0->unkC;
r0 &= SPRITEOAM_MAX_X;
ptr->attrib2 = r0;
r0 = a0->unkE;
r0 &= SPRITEOAM_MAX_UNK6_4;
r0 <<= SPRITEOAM_SHIFT_UNK6_4;
r1 &= r5;
r1 |= r0;
ptr->unk6 = r1;
SpriteSetAffine1(&sp, 0);
SpriteSetAffine2(&sp, 0);
SpriteSetObjMode(&sp, 0);
SpriteSetMosaic(&sp, 0);
SpriteSetBpp(&sp, 0);
SpriteSetShape(&sp, 0);
SpriteSetSize(&sp, 0);
SpriteSetTileNum(&sp, 0x3F2);
SpriteSetPriority(&sp, 0);
SpriteSetPalNum(&sp, 15);
SpriteSetUnk6_0(&sp, 0);
SpriteSetUnk6_1(&sp, 0);
SpriteSetX_MatrixNumSize0(&sp, a0->unkC);
SpriteSetY(&sp, a0->unkE);
AddSprite(&sp, 0xFF, NULL, NULL);
}
if (a0->unk20 != 0 && a0->unk20 != a0->unk1E + 1) {
r0 = sp.attrib1;
sp.attrib1 = r0 & ~SPRITEOAM_MASK_AFFINEMODE1;
sp.attrib1 = sp.attrib1;
sp.attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE2;
sp.attrib1 = sp.attrib1;
sp.attrib1 &= (u16)~SPRITEOAM_MASK_OBJMODE;
sp.attrib1 = sp.attrib1;
sp.attrib1 &= ~SPRITEOAM_MASK_MOSAIC;
sp.attrib1 = sp.attrib1;
sp.attrib1 &= ~SPRITEOAM_MASK_BPP;
sp.attrib1 = sp.attrib1;
sp.attrib1 &= ~SPRITEOAM_MASK_SHAPE;
sp.attrib1 = sp.attrib1;
ptr = &sp;
r2 = 0x3F3 << SPRITEOAM_SHIFT_TILENUM;
r1 = ptr->attrib3;
r0 = r1 & (u16)~SPRITEOAM_MASK_TILENUM;
r0 |= r2;
r0 &= (u16)~SPRITEOAM_MASK_PRIORITY;
r5 = (u16)~SPRITEOAM_MASK_UNK6_4;
r1 = 15 << SPRITEOAM_SHIFT_PALETTENUM;
r0 &= (u16)~SPRITEOAM_MASK_PALETTENUM;
r0 |= r1;
ptr->attrib3 = r0;
r0 = ptr->unk6;
r1 = r0 & (u16)~SPRITEOAM_MASK_UNK6_0;
r1 &= (u16)~SPRITEOAM_MASK_UNK6_1;
r0 = a0->unkC + 10;
r0 &= SPRITEOAM_MAX_X;
ptr->attrib2 = r0;
r0 = a0->unkE;
r0 &= SPRITEOAM_MAX_UNK6_4;
r0 <<= SPRITEOAM_SHIFT_UNK6_4;
r1 &= r5;
r1 |= r0;
ptr->unk6 = r1;
SpriteSetAffine1(&sp, 0);
SpriteSetAffine2(&sp, 0);
SpriteSetObjMode(&sp, 0);
SpriteSetMosaic(&sp, 0);
SpriteSetBpp(&sp, 0);
SpriteSetShape(&sp, 0);
SpriteSetSize(&sp, 0);
SpriteSetTileNum(&sp, 0x3F3);
SpriteSetPriority(&sp, 0);
SpriteSetPalNum(&sp, 15);
SpriteSetUnk6_0(&sp, 0);
SpriteSetUnk6_1(&sp, 0);
SpriteSetX_MatrixNumSize0(&sp, a0->unkC + 10);
SpriteSetY(&sp, a0->unkE);
AddSprite(&sp, 0xFF, NULL, NULL);
}
@@ -1196,48 +1015,21 @@ void sub_8013A7C(MenuInputStruct *param_1)
void sub_8013AA0(unkStructFor8013AA0 *a0)
{
s32 r1;
s32 test;
s32 r3;
s32 r4;
s32 test2;
s16 earlyF;
s32 sp[10];
a0->unk28.attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE1;
a0->unk28.attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE2;
a0->unk28.attrib1 &= ~SPRITEOAM_MASK_OBJMODE;
a0->unk28.attrib1 &= ~SPRITEOAM_MASK_MOSAIC;
a0->unk28.attrib1 &= ~SPRITEOAM_MASK_BPP;
r1 = 1 << SPRITEOAM_SHIFT_SHAPE;
a0->unk28.attrib1 &= ~SPRITEOAM_MASK_SHAPE;
a0->unk28.attrib1 |= r1;
test = 16 << SPRITEOAM_SHIFT_MATRIXNUM;
a0->unk28.attrib2 &= ~SPRITEOAM_MASK_MATRIXNUM;
a0->unk28.attrib2 |= test;
a0->unk28.attrib2 &= ~SPRITEOAM_MASK_SIZE;
r3 = 0x3F0 << SPRITEOAM_SHIFT_TILENUM;
a0->unk28.attrib3 &= ~SPRITEOAM_MASK_TILENUM;
a0->unk28.attrib3 |= r3;
a0->unk28.attrib3 &= ~SPRITEOAM_MASK_PRIORITY;
earlyF = (s16)~SPRITEOAM_MASK_UNK6_4;
r4 = 15 << SPRITEOAM_SHIFT_PALETTENUM;
a0->unk28.attrib3 &= ~SPRITEOAM_MASK_PALETTENUM;
a0->unk28.attrib3 |= r4;
a0->unk28.attrib2 &= ~SPRITEOAM_MASK_X;
a0->unk28.attrib2 |= DISPLAY_WIDTH;
test2 = DISPLAY_WIDTH << SPRITEOAM_SHIFT_UNK6_4;
a0->unk28.unk6 &= earlyF;
a0->unk28.unk6 |= test2;
SpriteSetAffine1(&a0->unk28, 0);
SpriteSetAffine2(&a0->unk28, 0);
SpriteSetObjMode(&a0->unk28, 0);
SpriteSetMosaic(&a0->unk28, 0);
SpriteSetBpp(&a0->unk28, 0);
SpriteSetShape(&a0->unk28, 1);
SpriteSetMatrixNum(&a0->unk28, 16);
SpriteSetSize(&a0->unk28, 0);
SpriteSetTileNum(&a0->unk28, 0x3F0);
SpriteSetPriority(&a0->unk28, 0);
SpriteSetPalNum(&a0->unk28, 15);
SpriteSetX(&a0->unk28, DISPLAY_WIDTH);
SpriteSetY(&a0->unk28, DISPLAY_WIDTH);
a0->unk26 = 0;
@@ -1265,24 +1057,12 @@ u32 sub_8013BBC(unkStructFor8013AA0 *a0)
sub_8013D10(a0);
if (a0->unk26 & 8) {
{
s32 temp = 16 << SPRITEOAM_SHIFT_MATRIXNUM;
a0->unk28.attrib2 &= ~SPRITEOAM_MASK_MATRIXNUM;
a0->unk28.attrib2 |= temp;
}
SpriteSetMatrixNum(&a0->unk28, 16);
AddSprite(&a0->unk28, 0x100, NULL, NULL);
a0->unk28.attrib2 &= ~SPRITEOAM_MASK_MATRIXNUM;
{
u32 temp = a0->unk28.unk6;
s32 max = SPRITEOAM_MAX_UNK6_4;
temp >>= SPRITEOAM_SHIFT_UNK6_4;
temp += 16;
temp &= max;
temp <<= SPRITEOAM_SHIFT_UNK6_4;
a0->unk28.unk6 &= ~SPRITEOAM_MASK_UNK6_4;
a0->unk28.unk6 |= temp;
}
SpriteSetMatrixNum(&a0->unk28, 0);
SpriteAddY(&a0->unk28, 16);
AddSprite(&a0->unk28, 0x100, NULL, NULL);
}
@@ -1326,6 +1106,7 @@ void sub_8013C68(unkStructFor8013AA0 *a0)
void sub_8013D10(unkStructFor8013AA0 *a0)
{
s32 x, y;
u8 uVar4;
UnkTextStruct1 *ptr;
@@ -1347,21 +1128,11 @@ void sub_8013D10(unkStructFor8013AA0 *a0)
a0->unk26 = 8;
}
{
s32 temp = (a0->unk1C - ((a0->unk24 + 1) * 12) + (ptr->unk0 * 8)) - 3;
temp &= SPRITEOAM_MAX_X;
temp <<= SPRITEOAM_SHIFT_X;
a0->unk28.attrib2 &= ~SPRITEOAM_MASK_X;
a0->unk28.attrib2 |= temp;
} while (0);
x = (a0->unk1C - ((a0->unk24 + 1) * 12) + (ptr->unk0 * 8)) - 3;
SpriteSetX(&a0->unk28, x);
{
s32 temp = a0->unk20 + (ptr->unk2 * 8) - 7;
temp &= SPRITEOAM_MAX_UNK6_4;
temp <<= SPRITEOAM_SHIFT_UNK6_4;
a0->unk28.unk6 &= ~SPRITEOAM_MASK_UNK6_4;
a0->unk28.unk6 |= temp;
} while (0);
y = a0->unk20 + (ptr->unk2 * 8) - 7;
SpriteSetY(&a0->unk28, y);
}
static bool8 sub_8013DD0(unkStructFor8013AA0 *a0)

View File

@@ -330,70 +330,25 @@ static void sub_8037400(void)
static void sub_80376CC(void)
{
#ifdef NONMATCHING // SpriteOAM memes
u32 r0;
u32 r2;
#else
register u32 r0 asm("r0");
register u32 r2 asm("r2");
#endif
u32 r1;
u32 r4;
r1 = sUnknown_203B35C->unkC.attrib1;
r0 = (u16)~SPRITEOAM_MASK_AFFINEMODE1;
r0 &= r1;
r0 &= (u16)~SPRITEOAM_MASK_AFFINEMODE2;
r0 &= (u16)~SPRITEOAM_MASK_OBJMODE;
r0 &= (u16)~SPRITEOAM_MASK_MOSAIC;
r0 &= (u16)~SPRITEOAM_MASK_BPP;
r2 = 1 << SPRITEOAM_SHIFT_SHAPE;
r0 &= (u16)~SPRITEOAM_MASK_SHAPE;
r0 |= r2;
sUnknown_203B35C->unkC.attrib1 = r0;
r2 = 0x3F0 << SPRITEOAM_SHIFT_TILENUM;
r1 = sUnknown_203B35C->unkC.attrib3;
r0 = (u16)~SPRITEOAM_MASK_TILENUM;
r0 &= r1;
r0 |= r2;
r0 &= (u16)~SPRITEOAM_MASK_PRIORITY;
r2 = (u16)~SPRITEOAM_MASK_UNK6_4;
r4 = 15 << SPRITEOAM_SHIFT_PALETTENUM;
r0 &= (u16)~SPRITEOAM_MASK_PALETTENUM;
r0 |= r4;
sUnknown_203B35C->unkC.attrib3 = r0;
r0 = 0; // Set x/matrixNum/size to 0
sUnknown_203B35C->unkC.attrib2 = r0;
r1 = 192 << SPRITEOAM_SHIFT_UNK6_4;
r0 = sUnknown_203B35C->unkC.unk6;
r2 &= r0;
r2 |= r1;
sUnknown_203B35C->unkC.unk6 = r2;
SpriteSetAffine1(&sUnknown_203B35C->unkC, 0);
SpriteSetAffine2(&sUnknown_203B35C->unkC, 0);
SpriteSetObjMode(&sUnknown_203B35C->unkC, 0);
SpriteSetMosaic(&sUnknown_203B35C->unkC, 0);
SpriteSetBpp(&sUnknown_203B35C->unkC, 0);
SpriteSetShape(&sUnknown_203B35C->unkC, 1);
SpriteSetTileNum(&sUnknown_203B35C->unkC, 0x3F0);
SpriteSetPriority(&sUnknown_203B35C->unkC, 0);
SpriteSetPalNum(&sUnknown_203B35C->unkC, 15);
SpriteSetX(&sUnknown_203B35C->unkC, 0);
SpriteSetMatrixNum(&sUnknown_203B35C->unkC, 0);
SpriteSetSize(&sUnknown_203B35C->unkC, 0);
SpriteSetY(&sUnknown_203B35C->unkC, 192);
}
static void sub_8037748(void)
{
u16 temp2;
sUnknown_203B35C->unkC.attrib2 &= ~SPRITEOAM_MASK_X; // Clear x
sUnknown_203B35C->unkC.attrib2 |= 112; // Set x to 112
temp2 = 104 << SPRITEOAM_SHIFT_UNK6_4;
sUnknown_203B35C->unkC.unk6 &= ~SPRITEOAM_MASK_UNK6_4;
sUnknown_203B35C->unkC.unk6 |= temp2;
SpriteSetX(&sUnknown_203B35C->unkC, 112);
SpriteSetY(&sUnknown_203B35C->unkC, 104);
if ((sUnknown_203B35C->unk14 & 8) != 0)
AddSprite(&sUnknown_203B35C->unkC, 0x100, NULL, NULL);