diff --git a/include/structs/dungeon_entity.h b/include/structs/dungeon_entity.h index 49da01d45..12e480386 100644 --- a/include/structs/dungeon_entity.h +++ b/include/structs/dungeon_entity.h @@ -358,9 +358,9 @@ typedef struct Entity /* 0x14 */ PixelPos prevPixelPos; s32 unk1C; /* 0x20 */ bool8 isVisible; // Turned off when a Pokémon faints. - u8 fill21; + u8 unk21; u8 unk22; - u8 fill23; + u8 unk23; u8 unk24; /* 0x25 */ u8 room; // The global spawn index counter starts at 10. Each Pokémon that spawns increments the counter and diff --git a/include/structs/str_202ED28.h b/include/structs/str_202ED28.h new file mode 100644 index 000000000..9ad561024 --- /dev/null +++ b/include/structs/str_202ED28.h @@ -0,0 +1,13 @@ +#ifndef GUARD_STR_202ED28_H +#define GUARD_STR_202ED28_H + +struct unkStruct_202ED28 +{ + SpriteOAM sprite; + s16 x; + s16 y; +}; + +extern struct unkStruct_202ED28 gUnknown_202ED28[][6]; + +#endif diff --git a/src/code_8069E0C.c b/src/code_8069E0C.c index 67e9621bf..09850874c 100644 --- a/src/code_8069E0C.c +++ b/src/code_8069E0C.c @@ -39,6 +39,7 @@ #include "dungeon_ai_movement.h" #include "constants/iq_skill.h" #include "structs/str_806B7F8.h" +#include "structs/str_202ED28.h" struct unkStruct_80F520C { @@ -2053,15 +2054,6 @@ void UpdateDungeonPokemonSprite(int id, short species, int status, char visible) extern void sub_8042EC8(Entity *a0, s32 a1); void DoAxFrame_800558C(struct axObject *a0, s32 spriteX, s32 spriteY, u32 a3, u32 paletteNum, u16 *spriteMasks); -struct unkStruct_202ED28 -{ - SpriteOAM sprite; - s16 unk8; - s16 unkA; -}; - -extern struct unkStruct_202ED28 gUnknown_202ED28[][6]; - static inline u16 GetUnkFlag(Entity *entity) { if ((entity->axObj.axdata.flags & 0x2000)) @@ -2105,14 +2097,14 @@ void sub_806C51C(Entity *entity) if (r2) { s32 r0; s32 r3 = sub_806CEBC(entity); - entity->fill21 = 1; + entity->unk21 = 1; if (entInfo->unkFE == 99) { if (entity->axObj.unk43_animId2 <= 12) { s32 r2; if (entInfo->bideClassStatus.status == STATUS_BIDE) { r2 = 2; } - else if (entity->fill23 < 3) { + else if (entity->unk23 < 3) { r2 = 0; } else { @@ -2202,12 +2194,12 @@ void sub_806C51C(Entity *entity) } if (entity->pixelPos.x == entity->prevPixelPos.x && entity->pixelPos.y == entity->prevPixelPos.y) { - if (entity->fill23 < 10) { - entity->fill23++; + if (entity->unk23 < 10) { + entity->unk23++; } } else { - entity->fill23 = 0; + entity->unk23 = 0; } entity->prevPixelPos.x = entity->pixelPos.x; @@ -2324,12 +2316,12 @@ void sub_806C51C(Entity *entity) if (entInfo->unk156 != 0) { u32 finalXSprite, finalYSprite; - finalXSprite = xSprite + spriteStructPtr->unk8; + finalXSprite = xSprite + spriteStructPtr->x; finalXSprite &= SPRITEOAM_MASK_X; spriteStructPtr->sprite.attrib2 &= ~SPRITEOAM_MASK_X; spriteStructPtr->sprite.attrib2 |= finalXSprite; - finalYSprite = ySprite + spriteStructPtr->unkA; + finalYSprite = ySprite + spriteStructPtr->y; finalYSprite &= SPRITEOAM_MAX_UNK6_4; finalYSprite <<= SPRITEOAM_SHIFT_UNK6_4; spriteStructPtr->sprite.unk6 &= 0xF; diff --git a/src/code_808333C.c b/src/code_808333C.c index 3349d64ba..068a3e1e1 100644 --- a/src/code_808333C.c +++ b/src/code_808333C.c @@ -1,57 +1,28 @@ #include "global.h" #include "structs/str_dungeon.h" +#include "structs/str_202ED28.h" -struct unkStruct_202ED28 +bool8 sub_8083568(s32 inX, s32 inY, u8 index) { - SpriteOAM sp; - s16 unk8; - s16 unkA; -}; - -struct unkStruct_202ED28 gUnknown_202ED28[4]; // seeing index 3 used a lot - -bool8 sub_8083568(s32 inX, s32 inY, u8 index) { - s32 x; - s32 y; - SpriteOAM *sp; - s32 tmp2; -#ifdef NONMATCHING - s32 tmp; -#else - register s32 tmp asm("r2"); -#endif - - x = inX - gDungeon->unk181e8.cameraPixelPos.x; - y = inY - gDungeon->unk181e8.cameraPixelPos.y; + s32 x = inX - gDungeon->unk181e8.cameraPixelPos.x; + s32 y = inY - gDungeon->unk181e8.cameraPixelPos.y; if (x >= -16 && y >= -16 && x <= 255 && y <= 175) { - struct unkStruct_202ED28 *ptr = gUnknown_202ED28; - sp = &ptr[index].sp; + u32 finalXSprite, finalYSprite; - tmp = ptr[index].unk8; - tmp = x + ptr[index].unk8; - tmp &= SPRITEOAM_MASK_X; + 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; - x = sp->attrib2; - tmp2 = (0xFE00); - tmp2 &= x; - tmp2 |= tmp; - sp->attrib2 = tmp2; + finalYSprite = y + gUnknown_202ED28[0][index].y; + finalYSprite &= SPRITEOAM_MAX_UNK6_4; + finalYSprite <<= SPRITEOAM_SHIFT_UNK6_4; + gUnknown_202ED28[0][index].sprite.unk6 &= 0xF; + gUnknown_202ED28[0][index].sprite.unk6 |= finalYSprite; - tmp = ptr[index].unkA; - tmp = y + ptr[index].unkA; - tmp &= SPRITEOAM_MAX_UNK6_4; - tmp <<= SPRITEOAM_SHIFT_UNK6_4; - - x = sp->unk6; - tmp2 = 0xF; - tmp2 &= x; - tmp2 |= tmp; - sp->unk6 = tmp2; - - - AddSprite(sp, 0, NULL, NULL); + AddSprite(&gUnknown_202ED28[0][index].sprite, 0, NULL, NULL); return TRUE; } else