mirror of
https://github.com/pret/pmd-red.git
synced 2026-10-02 13:58:56 -05:00
more sprite oam clean-up
This commit is contained in:
@@ -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; \
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
391
src/menu_input.c
391
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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user