From a32c55933659cd39a42830b01da07b19b8ec4459 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 22 Dec 2024 10:23:15 +0100 Subject: [PATCH] more sprite oam clean-up --- include/structs/sprite_oam.h | 25 +++ src/code_8069E0C.c | 14 +- src/code_807E5AC.c | 38 +--- src/code_808333C.c | 14 +- src/menu_input.c | 391 ++++++++--------------------------- src/other_menus1.c | 75 ++----- 6 files changed, 131 insertions(+), 426 deletions(-) diff --git a/include/structs/sprite_oam.h b/include/structs/sprite_oam.h index d7eb20108..867c0d0a0 100644 --- a/include/structs/sprite_oam.h +++ b/include/structs/sprite_oam.h @@ -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; \ diff --git a/src/code_8069E0C.c b/src/code_8069E0C.c index cf559ce08..335656fb1 100644 --- a/src/code_8069E0C.c +++ b/src/code_8069E0C.c @@ -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); } diff --git a/src/code_807E5AC.c b/src/code_807E5AC.c index 31da4c6d6..05bf64e5a 100644 --- a/src/code_807E5AC.c +++ b/src/code_807E5AC.c @@ -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); } diff --git a/src/code_808333C.c b/src/code_808333C.c index 863723cfe..e0635cd11 100644 --- a/src/code_808333C.c +++ b/src/code_808333C.c @@ -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; diff --git a/src/menu_input.c b/src/menu_input.c index 72a32bb74..16f95c5bd 100644 --- a/src/menu_input.c +++ b/src/menu_input.c @@ -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) diff --git a/src/other_menus1.c b/src/other_menus1.c index 1c0c21a60..3cc5485d3 100644 --- a/src/other_menus1.c +++ b/src/other_menus1.c @@ -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);