diff --git a/include/structs/sprite_oam.h b/include/structs/sprite_oam.h index 781128ca8..d7eb20108 100644 --- a/include/structs/sprite_oam.h +++ b/include/structs/sprite_oam.h @@ -114,4 +114,151 @@ typedef struct SpriteOAM #define SPRITEOAM_SHIFT_UNK6_4 4 #define SPRITEOAM_MASK_UNK6_4 (SPRITEOAM_MAX_UNK6_4 << SPRITEOAM_SHIFT_UNK6_4) // ~ 0xF +// These seems to work most of the time when dealing with sprite pointers. However, these DO NOT match when dealing with local variables, for example a Sprite struct on the stack. +// These have to be macros, because static inlines WON'T match. + +#define SpriteSetAffine1(spritePtr, _affine1) \ +{ \ + u32 affine1 = _affine1; \ + affine1 &= SPRITEOAM_MAX_AFFINEMODE1; \ + affine1 <<= SPRITEOAM_SHIFT_AFFINEMODE1; \ + (spritePtr)->attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE1; \ + (spritePtr)->attrib1 |= affine1; \ +} + +#define SpriteSetAffine2(spritePtr, _affine2) \ +{ \ + u32 affine2 = _affine2; \ + affine2 &= SPRITEOAM_MAX_AFFINEMODE2; \ + affine2 <<= SPRITEOAM_SHIFT_AFFINEMODE2; \ + (spritePtr)->attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE2; \ + (spritePtr)->attrib1 |= affine2; \ +} + +#define SpriteSetObjMode(spritePtr, _objMode) \ +{ \ + u32 objMode = _objMode; \ + objMode &= SPRITEOAM_MAX_OBJMODE; \ + objMode <<= SPRITEOAM_SHIFT_OBJMODE; \ + (spritePtr)->attrib1 &= ~SPRITEOAM_MASK_OBJMODE; \ + (spritePtr)->attrib1 |= objMode; \ +} + +#define SpriteSetMosaic(spritePtr, _mosaic) \ +{ \ + u32 mosaic = _mosaic; \ + mosaic &= SPRITEOAM_MAX_MOSAIC; \ + mosaic <<= SPRITEOAM_SHIFT_MOSAIC; \ + (spritePtr)->attrib1 &= ~SPRITEOAM_MASK_MOSAIC; \ + (spritePtr)->attrib1 |= mosaic; \ +} + +#define SpriteSetBpp(spritePtr, _bpp) \ +{ \ + u32 bpp = _bpp; \ + bpp &= SPRITEOAM_MAX_BPP; \ + bpp <<= SPRITEOAM_SHIFT_BPP; \ + (spritePtr)->attrib1 &= ~SPRITEOAM_MASK_BPP; \ + (spritePtr)->attrib1 |= bpp; \ +} + +#define SpriteSetShape(spritePtr, _shape) \ +{ \ + u32 shape = _shape; \ + shape &= SPRITEOAM_MAX_SHAPE; \ + shape <<= SPRITEOAM_SHIFT_SHAPE; \ + (spritePtr)->attrib1 &= ~SPRITEOAM_MASK_SHAPE; \ + (spritePtr)->attrib1 |= shape; \ +} + +#define SpriteSetTileNum(spritePtr, _tileNum) \ +{ \ + u32 tileNum = _tileNum; \ + tileNum &= SPRITEOAM_MAX_TILENUM; \ + tileNum <<= SPRITEOAM_SHIFT_TILENUM; \ + (spritePtr)->attrib3 &= ~SPRITEOAM_MASK_TILENUM; \ + (spritePtr)->attrib3 |= tileNum; \ +} + +#define SpriteSetPriority(spritePtr, _priority) \ +{ \ + u32 priority = _priority; \ + priority &= SPRITEOAM_MAX_PRIORITY; \ + priority <<= SPRITEOAM_SHIFT_PRIORITY; \ + (spritePtr)->attrib3 &= ~SPRITEOAM_MASK_PRIORITY; \ + (spritePtr)->attrib3 |= priority; \ +} + +#define SpriteSetPalNum(spritePtr, _palNum) \ +{ \ + u32 palNum = _palNum; \ + palNum &= SPRITEOAM_MAX_PALETTENUM; \ + palNum <<= SPRITEOAM_SHIFT_PALETTENUM; \ + (spritePtr)->attrib3 &= ~SPRITEOAM_MASK_PALETTENUM; \ + (spritePtr)->attrib3 |= palNum; \ +} + +#define SpriteSetMatrixNum(spritePtr, _matrixNum) \ +{ \ + u32 matrixNum = _matrixNum; \ + matrixNum &= SPRITEOAM_MAX_MATRIXNUM; \ + matrixNum <<= SPRITEOAM_SHIFT_MATRIXNUM; \ + (spritePtr)->attrib2 &= ~SPRITEOAM_MASK_MATRIXNUM; \ + (spritePtr)->attrib2 |= matrixNum; \ +} + +#define SpriteSetSize(spritePtr, _size) \ +{ \ + u32 size = _size; \ + size &= SPRITEOAM_MAX_SIZE; \ + size <<= SPRITEOAM_SHIFT_SIZE; \ + (spritePtr)->attrib2 &= ~SPRITEOAM_MASK_SIZE; \ + (spritePtr)->attrib2 |= size; \ +} + +#define SpriteSetX(spritePtr, _x) \ +{ \ + u32 xSpriteVal = _x; \ + xSpriteVal &= SPRITEOAM_MAX_X; \ + xSpriteVal <<= SPRITEOAM_SHIFT_X; \ + (spritePtr)->attrib2 &= ~SPRITEOAM_MASK_X; \ + (spritePtr)->attrib2 |= xSpriteVal; \ +} + +#define SpriteSetY(spritePtr, _y) \ +{ \ + u32 ySpriteVal = _y; \ + ySpriteVal &= SPRITEOAM_MAX_UNK6_4; \ + ySpriteVal <<= SPRITEOAM_SHIFT_UNK6_4; \ + (spritePtr)->unk6 &= ~SPRITEOAM_MASK_UNK6_4; \ + (spritePtr)->unk6 |= ySpriteVal; \ +} + +#define SpriteSetUnk6_0(spritePtr, _unk6_0) \ +{ \ + u32 unk6_0 = _unk6_0; \ + unk6_0 &= SPRITEOAM_MAX_UNK6_0; \ + unk6_0 <<= SPRITEOAM_SHIFT_UNK6_0; \ + (spritePtr)->unk6 &= ~SPRITEOAM_MASK_UNK6_0; \ + (spritePtr)->unk6 |= unk6_0; \ +} + +#define SpriteSetUnk6_1(spritePtr, _unk6_1) \ +{ \ + u32 unk6_1 = _unk6_1; \ + unk6_1 &= SPRITEOAM_MAX_UNK6_1; \ + unk6_1 <<= SPRITEOAM_SHIFT_UNK6_1; \ + (spritePtr)->unk6 &= ~SPRITEOAM_MASK_UNK6_1; \ + (spritePtr)->unk6 |= unk6_1; \ +} + +#define SpriteSetUnk6_2(spritePtr, _unk6_2) \ +{ \ + u32 unk6_2 = _unk6_2; \ + unk6_2 &= SPRITEOAM_MAX_UNK6_2; \ + unk6_2 <<= SPRITEOAM_SHIFT_UNK6_2; \ + (spritePtr)->unk6 &= ~SPRITEOAM_MASK_UNK6_2; \ + (spritePtr)->unk6 |= unk6_2; \ +} + #endif // GUARD_SPRITE_OAM_H diff --git a/src/code_803E724.c b/src/code_803E724.c index 8d6293c1c..fd7ce16ef 100644 --- a/src/code_803E724.c +++ b/src/code_803E724.c @@ -367,52 +367,23 @@ void sub_803EDF0(void) // sprite oam memes strike again if (x >= -32 && y >= -8 && x < 240 && y < 160) { - u32 r9; - u32 unk6; - u32 shape, spriteX, palNum, prio, tileNum; + SpriteSetY(&gUnknown_202EDDC, y); + SpriteSetAffine1(&gUnknown_202EDDC, 0); + SpriteSetAffine2(&gUnknown_202EDDC, 0); + SpriteSetObjMode(&gUnknown_202EDDC, 0); + SpriteSetMosaic(&gUnknown_202EDDC, 0); + SpriteSetBpp(&gUnknown_202EDDC, 0); + SpriteSetShape(&gUnknown_202EDDC, 1); + SpriteSetX(&gUnknown_202EDDC, x); + SpriteSetMatrixNum(&gUnknown_202EDDC, 0); + SpriteSetSize(&gUnknown_202EDDC, 1); + SpriteSetTileNum(&gUnknown_202EDDC, 0x216); + SpriteSetPriority(&gUnknown_202EDDC, gDungeon->unk181e8.unk18208); + SpriteSetPalNum(&gUnknown_202EDDC, gUnknown_202EDE8.unk2); - unk6 = y & SPRITEOAM_MAX_UNK6_4; - unk6 <<= SPRITEOAM_SHIFT_UNK6_4; - gUnknown_202EDDC.unk6 &= ~SPRITEOAM_MASK_UNK6_4; - gUnknown_202EDDC.unk6 |= unk6; - - gUnknown_202EDDC.attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE1; - gUnknown_202EDDC.attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE2; - r9 = 3; - gUnknown_202EDDC.attrib1 &= ~SPRITEOAM_MASK_OBJMODE; - gUnknown_202EDDC.attrib1 &= ~SPRITEOAM_MASK_MOSAIC; - gUnknown_202EDDC.attrib1 &= ~SPRITEOAM_MASK_BPP; - - shape = 1 << SPRITEOAM_SHIFT_SHAPE; - gUnknown_202EDDC.attrib1 &= ~SPRITEOAM_MASK_SHAPE; - gUnknown_202EDDC.attrib1 |= shape; - - spriteX = x & SPRITEOAM_MAX_X; - gUnknown_202EDDC.attrib2 &= ~SPRITEOAM_MASK_X; - gUnknown_202EDDC.attrib2 |= spriteX; - - gUnknown_202EDDC.attrib2 &= ~SPRITEOAM_MASK_MATRIXNUM; - gUnknown_202EDDC.attrib2 &= ~SPRITEOAM_MASK_SIZE; - gUnknown_202EDDC.attrib2 |= 1 << SPRITEOAM_SHIFT_SIZE; - - tileNum = 0x216 << SPRITEOAM_SHIFT_TILENUM; - gUnknown_202EDDC.attrib3 &= ~SPRITEOAM_MASK_TILENUM; - gUnknown_202EDDC.attrib3 |= tileNum; - - prio = gDungeon->unk181e8.unk18208 & r9; - prio <<= SPRITEOAM_SHIFT_PRIORITY; - gUnknown_202EDDC.attrib3 &= ~SPRITEOAM_MASK_PRIORITY; - gUnknown_202EDDC.attrib3 |= prio; - - palNum = gUnknown_202EDE8.unk2; - palNum &= 0xF; - palNum <<= SPRITEOAM_SHIFT_PALETTENUM; - gUnknown_202EDDC.attrib3 &= ~SPRITEOAM_MASK_PALETTENUM; - gUnknown_202EDDC.attrib3 |= palNum; - - gUnknown_202EDDC.unk6 &= ~SPRITEOAM_MASK_UNK6_0; - gUnknown_202EDDC.unk6 &= ~SPRITEOAM_MASK_UNK6_1; - gUnknown_202EDDC.unk6 &= ~SPRITEOAM_MASK_UNK6_2; + SpriteSetUnk6_0(&gUnknown_202EDDC, 0); + SpriteSetUnk6_1(&gUnknown_202EDDC, 0); + SpriteSetUnk6_2(&gUnknown_202EDDC, 0); AddSprite(&gUnknown_202EDDC, 0x100, NULL, NULL); } diff --git a/src/dungeon_message.c b/src/dungeon_message.c index 2506818d6..758ba61d8 100644 --- a/src/dungeon_message.c +++ b/src/dungeon_message.c @@ -763,41 +763,19 @@ void sub_8052FB8(const u8 *str) else { r9++; if (r9 & 8) { - u32 shape, tileNum, unk6, spriteX, mask, palNum; - - sUnknown_202F1F0.attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE1; - sUnknown_202F1F0.attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE2; - sUnknown_202F1F0.attrib1 &= ~SPRITEOAM_MASK_OBJMODE; - sUnknown_202F1F0.attrib1 &= ~SPRITEOAM_MASK_MOSAIC; - sUnknown_202F1F0.attrib1 &= ~SPRITEOAM_MASK_BPP; - - sUnknown_202F1F0.attrib1 &= ~SPRITEOAM_MASK_SHAPE; - shape = 1; - shape <<= SPRITEOAM_SHIFT_SHAPE; - ASM_MATCH_TRICK(shape); - sUnknown_202F1F0.attrib1 |= shape; - - tileNum = 0x3F0 << SPRITEOAM_SHIFT_TILENUM; - sUnknown_202F1F0.attrib3 &= ~SPRITEOAM_MASK_TILENUM; - sUnknown_202F1F0.attrib3 |= tileNum; - - sUnknown_202F1F0.attrib3 &= ~SPRITEOAM_MASK_PRIORITY; - - mask = 0xF; - palNum = (15 & SPRITEOAM_MAX_PALETTENUM) << SPRITEOAM_SHIFT_PALETTENUM; - sUnknown_202F1F0.attrib3 &= ~SPRITEOAM_MASK_PALETTENUM; - sUnknown_202F1F0.attrib3 |= palNum; - - unk6 = 0x78 << SPRITEOAM_SHIFT_UNK6_4; - sUnknown_202F1F0.unk6 &= mask; // ~SPRITEOAM_MASK_UNK6_4 - sUnknown_202F1F0.unk6 |= unk6; - - sUnknown_202F1F0.attrib2 &= ~SPRITEOAM_MASK_X; - sUnknown_202F1F0.attrib2 &= ~SPRITEOAM_MASK_MATRIXNUM; - - spriteX = 0x70 & SPRITEOAM_MAX_X; - sUnknown_202F1F0.attrib2 &= ~SPRITEOAM_MASK_SIZE; - sUnknown_202F1F0.attrib2 |= spriteX; + SpriteSetAffine1(&sUnknown_202F1F0, 0); + SpriteSetAffine2(&sUnknown_202F1F0, 0); + SpriteSetObjMode(&sUnknown_202F1F0, 0); + SpriteSetMosaic(&sUnknown_202F1F0, 0); + SpriteSetBpp(&sUnknown_202F1F0, 0); + SpriteSetShape(&sUnknown_202F1F0, 1); + SpriteSetTileNum(&sUnknown_202F1F0, 0x3F0); + SpriteSetPriority(&sUnknown_202F1F0, 0); + SpriteSetPalNum(&sUnknown_202F1F0, 15); + SpriteSetY(&sUnknown_202F1F0, 120); + SpriteSetMatrixNum(&sUnknown_202F1F0, 0); + SpriteSetSize(&sUnknown_202F1F0, 0); + SpriteSetX(&sUnknown_202F1F0, 112); AddSprite(&sUnknown_202F1F0, 0x100, NULL, NULL); } @@ -1081,39 +1059,20 @@ static void CreateMessageLogArrow(bool8 upArrow, s32 y) { struct UnkTextStruct1 *unkStr = &gUnknown_2027370[0]; if (!(gUnknown_202EDCC & 8)) { - u32 matrixNum, xSprite, mask, ySprite, shape, yMask; - - sMessageLogArrowSpriteOAM.attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE1; - sMessageLogArrowSpriteOAM.attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE2; - sMessageLogArrowSpriteOAM.attrib1 &= ~SPRITEOAM_MASK_OBJMODE; - sMessageLogArrowSpriteOAM.attrib1 &= ~SPRITEOAM_MASK_MOSAIC; - sMessageLogArrowSpriteOAM.attrib1 &= ~SPRITEOAM_MASK_BPP; - - matrixNum = (upArrow != FALSE) ? (16) : 0; - // You may be thinking what is this empty loop doing here, but the better question is: Why do these unholy sprite macros exist? - do {} while (0); - matrixNum <<= 9; - sMessageLogArrowSpriteOAM.attrib2 &= ~SPRITEOAM_MASK_MATRIXNUM; - sMessageLogArrowSpriteOAM.attrib2 |= matrixNum; - - mask = 0xF; // ~SPRITEOAM_MASK_UNK6_4 - yMask = SPRITEOAM_MAX_UNK6_4; - ySprite = (yMask & (unkStr->unk2 * 8 + y)) << 4; - sMessageLogArrowSpriteOAM.unk6 &= mask; - sMessageLogArrowSpriteOAM.unk6 |= ySprite; - - xSprite = SPRITEOAM_MAX_X & ((unkStr->unk0 * 8) + 92); - sMessageLogArrowSpriteOAM.attrib2 &= ~SPRITEOAM_MASK_X; - sMessageLogArrowSpriteOAM.attrib2 |= xSprite; - - shape = 1; - shape <<= SPRITEOAM_SHIFT_SHAPE; - sMessageLogArrowSpriteOAM.attrib1 &= ~SPRITEOAM_MASK_SHAPE; - sMessageLogArrowSpriteOAM.attrib1 |= shape; - - sMessageLogArrowSpriteOAM.attrib2 &= ~SPRITEOAM_MASK_SIZE; - - sMessageLogArrowSpriteOAM.attrib3 = 0xF3F0; + SpriteSetAffine1(&sMessageLogArrowSpriteOAM, 0); + SpriteSetAffine2(&sMessageLogArrowSpriteOAM, 0); + SpriteSetObjMode(&sMessageLogArrowSpriteOAM, 0); + SpriteSetMosaic(&sMessageLogArrowSpriteOAM, 0); + SpriteSetBpp(&sMessageLogArrowSpriteOAM, 0); + SpriteSetMatrixNum(&sMessageLogArrowSpriteOAM, (upArrow != FALSE) ? (16) : 0); + SpriteSetPalNum(&sMessageLogArrowSpriteOAM, 15); + SpriteSetY(&sMessageLogArrowSpriteOAM, (unkStr->unk2 * 8) + y); + SpriteSetX(&sMessageLogArrowSpriteOAM, (unkStr->unk0 * 8) + 92); + SpriteSetShape(&sMessageLogArrowSpriteOAM, 1); + SpriteSetSize(&sMessageLogArrowSpriteOAM, 0); + SpriteSetPriority(&sMessageLogArrowSpriteOAM, 0); + SpriteSetPalNum(&sMessageLogArrowSpriteOAM, 15); + SpriteSetTileNum(&sMessageLogArrowSpriteOAM, 0x3f0); AddSprite(&sMessageLogArrowSpriteOAM, 127, NULL, NULL); } diff --git a/src/pokemon.c b/src/pokemon.c index 24d46680c..406cb8c99 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1410,52 +1410,21 @@ void InitShadowSprites(s32 param_1, s32 param_2) CloseFile(file); for (spriteIndex = 0; spriteIndex < 3; spriteIndex++) { - u32 objMode, shape, size, tileNum, priority; - SpriteOAM *sprite = &gShadowSprites[spriteIndex]; - sprite->attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE1; - sprite->attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE2; - - objMode = 0; - objMode &= SPRITEOAM_MAX_OBJMODE; - objMode <<= SPRITEOAM_SHIFT_OBJMODE; - sprite->attrib1 &= ~SPRITEOAM_MASK_OBJMODE; - sprite->attrib1 |= objMode; - - sprite->attrib1 &= ~SPRITEOAM_MASK_MOSAIC; - sprite->attrib1 &= ~SPRITEOAM_MASK_BPP; - - shape = gShadowSpriteSizeFlags_8107698[spriteIndex].shape; - shape &= SPRITEOAM_MAX_SHAPE; - shape <<= SPRITEOAM_SHIFT_SHAPE; - sprite->attrib1 &= ~SPRITEOAM_MASK_SHAPE; - sprite->attrib1 |= shape; - - sprite->attrib2 &= ~SPRITEOAM_MASK_MATRIXNUM; - - size = gShadowSpriteSizeFlags_8107698[spriteIndex].size; - size &= SPRITEOAM_MAX_SIZE; - size <<= SPRITEOAM_SHIFT_SIZE; - sprite->attrib2 &= ~SPRITEOAM_MASK_SIZE; - sprite->attrib2 |= size; - - tileNum = gShadowSpriteSizeFlags_8107698[spriteIndex].tileNum + param_1; - tileNum &= SPRITEOAM_MAX_TILENUM; - tileNum <<= SPRITEOAM_SHIFT_TILENUM; - sprite->attrib3 &= ~SPRITEOAM_MASK_TILENUM; - sprite->attrib3 |= tileNum; - - priority = param_2; - priority &= SPRITEOAM_MAX_PRIORITY; - priority <<= SPRITEOAM_SHIFT_PRIORITY; - sprite->attrib3 &= ~SPRITEOAM_MASK_PRIORITY; - sprite->attrib3 |= priority; - - sprite->attrib3 &= ~SPRITEOAM_MASK_PALETTENUM; - - sprite->unk6 &= ~SPRITEOAM_MASK_UNK6_0; - sprite->unk6 &= ~SPRITEOAM_MASK_UNK6_1; + SpriteSetAffine1(sprite, 0); + SpriteSetAffine2(sprite, 0); + SpriteSetObjMode(sprite, 0); + SpriteSetMosaic(sprite, 0); + SpriteSetBpp(sprite, 0); + SpriteSetShape(sprite, gShadowSpriteSizeFlags_8107698[spriteIndex].shape); + SpriteSetMatrixNum(sprite, 0); + SpriteSetSize(sprite, gShadowSpriteSizeFlags_8107698[spriteIndex].size); + SpriteSetTileNum(sprite, gShadowSpriteSizeFlags_8107698[spriteIndex].tileNum + param_1); + SpriteSetPriority(sprite, param_2); + SpriteSetPalNum(sprite, 0); + SpriteSetUnk6_0(sprite, 0); + SpriteSetUnk6_1(sprite, 0); } } @@ -1466,24 +1435,16 @@ bool8 AddShadowSprite(s16 species, s16* a2, s16* a3) if (species != MONSTER_DIGLETT && species != MONSTER_DUGTRIO) { s32 shadowSize = GetShadowSize(species); s32 x, y; - SpriteOAM* spr; x = a2[0] + a3[8]; y = a2[1] + a3[9]; x += gUnknown_81076C4[shadowSize]; y -= 4; - x &= SPRITEOAM_MAX_X; - x <<= SPRITEOAM_SHIFT_X; - spr = &gShadowSprites[shadowSize]; - spr->attrib2 &= ~SPRITEOAM_MASK_X; - spr->attrib2 |= x; + SpriteSetX(&gShadowSprites[shadowSize], x); + SpriteSetY(&gShadowSprites[shadowSize], y); - y &= SPRITEOAM_MAX_UNK6_4; - y <<= SPRITEOAM_SHIFT_UNK6_4; - spr->unk6 &= ~SPRITEOAM_MASK_UNK6_4; - spr->unk6 |= y; - AddSprite(spr, 0, NULL, NULL); + AddSprite(&gShadowSprites[shadowSize], 0, NULL, NULL); } return TRUE; diff --git a/src/rescue_password_menu.c b/src/rescue_password_menu.c index 87220eff3..e574f1ca9 100644 --- a/src/rescue_password_menu.c +++ b/src/rescue_password_menu.c @@ -679,67 +679,29 @@ u32 sub_8039068(u32 mailMode, u8 *passwordBuffer, unkStruct_203B480 *param_3) void sub_8039174(void) { - struct SpriteOAM* spr; - s16 earlyF; + SpriteSetAffine1(&gRescuePasswordMenu->unk208, 0); + SpriteSetAffine2(&gRescuePasswordMenu->unk208, 0); + SpriteSetObjMode(&gRescuePasswordMenu->unk208, 0); + SpriteSetMosaic(&gRescuePasswordMenu->unk208, 0); + SpriteSetBpp(&gRescuePasswordMenu->unk208, 0); + SpriteSetShape(&gRescuePasswordMenu->unk208, 1); + SpriteSetTileNum(&gRescuePasswordMenu->unk208, 0x3F0); + SpriteSetPriority(&gRescuePasswordMenu->unk208, 0); + SpriteSetPalNum(&gRescuePasswordMenu->unk208, 15); + SpriteSetMatrixNum(&gRescuePasswordMenu->unk208, 0); + SpriteSetSize(&gRescuePasswordMenu->unk208, 0); - spr = &gRescuePasswordMenu->unk208; - - spr->attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE1; - spr->attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE2; - spr->attrib1 &= ~SPRITEOAM_MASK_OBJMODE; - spr->attrib1 &= ~SPRITEOAM_MASK_MOSAIC; - spr->attrib1 &= ~SPRITEOAM_MASK_BPP; - - { - s32 temp = 1 << SPRITEOAM_SHIFT_SHAPE; - spr->attrib1 &= ~SPRITEOAM_MASK_SHAPE; - spr->attrib1 |= temp; - } while(0); - - { - s32 temp = 0x3F0 << SPRITEOAM_SHIFT_TILENUM; - spr->attrib3 &= ~SPRITEOAM_MASK_TILENUM; - spr->attrib3 |= temp; - } while(0); - - spr->attrib3 &= ~SPRITEOAM_MASK_PRIORITY; - - earlyF = (s16)~SPRITEOAM_MASK_UNK6_4; - - { - s32 temp = 15 << SPRITEOAM_SHIFT_PALETTENUM; - spr->attrib3 &= ~SPRITEOAM_MASK_PALETTENUM; - spr->attrib3 |= temp; - } while(0); - - { - s32 temp = 0; - spr->attrib2 = temp; - } while(0); - - { - s32 temp = 192 << SPRITEOAM_SHIFT_UNK6_4; - spr->unk6 &= earlyF; - spr->unk6 |= temp; - } while(0); + SpriteSetX(&gRescuePasswordMenu->unk208, 0); + SpriteSetY(&gRescuePasswordMenu->unk208, 192); } void sub_80391F8(void) { - SpriteOAM *spr; - u32 val; - - spr = &gRescuePasswordMenu->unk208; - - spr->attrib2 &= ~SPRITEOAM_MASK_X; - spr->attrib2 |= 112; - - val = 112 << SPRITEOAM_SHIFT_UNK6_4; - spr->unk6 &= ~SPRITEOAM_MASK_UNK6_4; - spr->unk6 |= val; + SpriteSetX(&gRescuePasswordMenu->unk208, 112); + SpriteSetY(&gRescuePasswordMenu->unk208, 112); if (gRescuePasswordMenu->unk210 & 8) - AddSprite(spr, 0x100, NULL, NULL); + AddSprite(&gRescuePasswordMenu->unk208, 0x100, NULL, NULL); DrawDialogueBoxString(); gRescuePasswordMenu->unk210++; diff --git a/src/save_menu.c b/src/save_menu.c index e8112b02f..7933ea70b 100644 --- a/src/save_menu.c +++ b/src/save_menu.c @@ -266,61 +266,24 @@ s32 UpdateSaveMenu(void) void sub_8038830(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; - u32 r5; - SpriteOAM *sprite; + SpriteSetAffine1(&sUnknown_203B364->unk1A8, 0); + SpriteSetAffine2(&sUnknown_203B364->unk1A8, 0); + SpriteSetObjMode(&sUnknown_203B364->unk1A8, 0); + SpriteSetMosaic(&sUnknown_203B364->unk1A8, 0); + SpriteSetBpp(&sUnknown_203B364->unk1A8, 0); + SpriteSetShape(&sUnknown_203B364->unk1A8, 1); - r5 = 0; - sprite = &sUnknown_203B364->unk1A8; + SpriteSetTileNum(&sUnknown_203B364->unk1A8, 0x3F0); + SpriteSetPriority(&sUnknown_203B364->unk1A8, 0); + SpriteSetPalNum(&sUnknown_203B364->unk1A8, 15); - r1 = sprite->attrib1; - r0 = (u16)~SPRITEOAM_MASK_AFFINEMODE1; - r0 &= r1; + SpriteSetMatrixNum(&sUnknown_203B364->unk1A8, 0); + SpriteSetSize(&sUnknown_203B364->unk1A8, 0); - r0 &= (u16)~SPRITEOAM_MASK_AFFINEMODE2; + SpriteSetX(&sUnknown_203B364->unk1A8, 112); + SpriteSetY(&sUnknown_203B364->unk1A8, 104); - 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; - sprite->attrib1 = r0; - - r2 = 0x3F0 << SPRITEOAM_SHIFT_TILENUM; - r1 = sprite->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; - sprite->attrib3 = r0; - - sprite->attrib2 = 112; // Set x to 112. Set matrixNum/size to 0 - - r1 = 104 << SPRITEOAM_SHIFT_UNK6_4; - r2 &= sprite->unk6; - r2 |= r1; - sprite->unk6 = r2; - - sUnknown_203B364->unk1B0 = r5; + sUnknown_203B364->unk1B0 = 0; ResetSprites(FALSE); } diff --git a/src/string_format.c b/src/string_format.c index 14731ca7f..7516b9934 100644 --- a/src/string_format.c +++ b/src/string_format.c @@ -527,49 +527,25 @@ void DrawDialogueBoxString(void) if (!buttonPress) { sArrowFrames++; if (!(sUnknownTextFlags & 0x2) && sArrowFrames & 8) { - u32 shape, tileNum, palNum, pal; - - sDialogueBoxArrowSprite.attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE1; - sDialogueBoxArrowSprite.attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE2; - sDialogueBoxArrowSprite.attrib1 &= ~SPRITEOAM_MASK_OBJMODE; - sDialogueBoxArrowSprite.attrib1 &= ~SPRITEOAM_MASK_MOSAIC; - sDialogueBoxArrowSprite.attrib1 &= ~SPRITEOAM_MASK_BPP; - - shape = 1; - shape <<= SPRITEOAM_SHIFT_SHAPE; - sDialogueBoxArrowSprite.attrib1 &= ~SPRITEOAM_MASK_SHAPE; - sDialogueBoxArrowSprite.attrib1 |= shape; - - sDialogueBoxArrowSprite.attrib2 &= ~SPRITEOAM_MASK_MATRIXNUM; - sDialogueBoxArrowSprite.attrib2 &= ~SPRITEOAM_MASK_SIZE; - - tileNum = 0x3F0 << SPRITEOAM_SHIFT_TILENUM; - sDialogueBoxArrowSprite.attrib3 &= ~SPRITEOAM_MASK_TILENUM; - sDialogueBoxArrowSprite.attrib3 |= tileNum; - - sDialogueBoxArrowSprite.attrib3 &= ~SPRITEOAM_MASK_PRIORITY; - - pal = 15; - palNum = (pal & SPRITEOAM_MAX_PALETTENUM) << SPRITEOAM_SHIFT_PALETTENUM; - sDialogueBoxArrowSprite.attrib3 &= ~SPRITEOAM_MASK_PALETTENUM; - sDialogueBoxArrowSprite.attrib3 |= palNum; + SpriteSetAffine1(&sDialogueBoxArrowSprite, 0); + SpriteSetAffine2(&sDialogueBoxArrowSprite, 0); + SpriteSetObjMode(&sDialogueBoxArrowSprite, 0); + SpriteSetMosaic(&sDialogueBoxArrowSprite, 0); + SpriteSetBpp(&sDialogueBoxArrowSprite, 0); + SpriteSetShape(&sDialogueBoxArrowSprite, 1); + SpriteSetMatrixNum(&sDialogueBoxArrowSprite, 0); + SpriteSetSize(&sDialogueBoxArrowSprite, 0); + SpriteSetTileNum(&sDialogueBoxArrowSprite, 0x3F0); + SpriteSetPriority(&sDialogueBoxArrowSprite, 0); + SpriteSetPalNum(&sDialogueBoxArrowSprite, 15); if (sUnknownTextFlags & 0x10) { - u32 var = (0x78 & SPRITEOAM_MAX_UNK6_4) << SPRITEOAM_SHIFT_UNK6_4; - sDialogueBoxArrowSprite.unk6 &= ~SPRITEOAM_MASK_UNK6_4; - sDialogueBoxArrowSprite.unk6 |= var; - sDialogueBoxArrowSprite.attrib2 &= ~SPRITEOAM_MASK_X; - sDialogueBoxArrowSprite.attrib2 |= (0x70 & SPRITEOAM_MAX_X) << SPRITEOAM_SHIFT_X; + SpriteSetY(&sDialogueBoxArrowSprite, 120); + SpriteSetX(&sDialogueBoxArrowSprite, 112); } else { - s16 x; - - u32 var = ((gUnknown_202E748.unkA + 1) & SPRITEOAM_MAX_UNK6_4) << SPRITEOAM_SHIFT_UNK6_4; - sDialogueBoxArrowSprite.unk6 &= ~SPRITEOAM_MASK_UNK6_4; - sDialogueBoxArrowSprite.unk6 |= var; - x = gUnknown_202E748.unk8; - sDialogueBoxArrowSprite.attrib2 &= ~SPRITEOAM_MASK_X; - sDialogueBoxArrowSprite.attrib2 |= (x & SPRITEOAM_MAX_X) << SPRITEOAM_SHIFT_X; + SpriteSetY(&sDialogueBoxArrowSprite, gUnknown_202E748.unkA + 1); + SpriteSetX(&sDialogueBoxArrowSprite, gUnknown_202E748.unk8); } AddSprite(&sDialogueBoxArrowSprite, 0x100, NULL, NULL); diff --git a/src/unk_menu_203B360.c b/src/unk_menu_203B360.c index 2c3e7ea06..7b2e37de1 100644 --- a/src/unk_menu_203B360.c +++ b/src/unk_menu_203B360.c @@ -127,66 +127,26 @@ u32 sub_80383D4(void) void sub_8038440(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; - u32 r5; - SpriteOAM *sprite; + SpriteSetAffine1(&sUnknown_203B360->unk1A8, 0); + SpriteSetAffine2(&sUnknown_203B360->unk1A8, 0); + SpriteSetObjMode(&sUnknown_203B360->unk1A8, 0); + SpriteSetMosaic(&sUnknown_203B360->unk1A8, 0); + SpriteSetBpp(&sUnknown_203B360->unk1A8, 0); + SpriteSetShape(&sUnknown_203B360->unk1A8, 1); - r5 = 0; - sprite = &sUnknown_203B360->unk1A8; + SpriteSetTileNum(&sUnknown_203B360->unk1A8, 0x3F0); + SpriteSetPriority(&sUnknown_203B360->unk1A8, 0); + SpriteSetPalNum(&sUnknown_203B360->unk1A8, 15); - r1 = sprite->attrib1; - r0 = (u16)~SPRITEOAM_MASK_AFFINEMODE1; - r0 &= r1; + SpriteSetMatrixNum(&sUnknown_203B360->unk1A8, 0); + SpriteSetSize(&sUnknown_203B360->unk1A8, 0); - r0 &= (u16)~SPRITEOAM_MASK_AFFINEMODE2; + SpriteSetX(&sUnknown_203B360->unk1A8, 112); + SpriteSetY(&sUnknown_203B360->unk1A8, 112); - 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; - - sprite->attrib1 = r0; - - r2 = 0x3F0 << SPRITEOAM_SHIFT_TILENUM; - r1 = sprite->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; - - sprite->attrib3 = r0; - - sprite->attrib2 = 112; // Set x to 112. Set matrixNum/size to 0 - - r1 = 112 << SPRITEOAM_SHIFT_UNK6_4; - r2 &= sprite->unk6; - r2 |= r1; - sprite->unk6 = r2; - - sUnknown_203B360->unk1B0 = r5; + sUnknown_203B360->unk1B0 = 0; } - void sub_80384D0(void) { if ((sUnknown_203B360->unk1B0 & 8) != 0) {