From ea037dfcb58b9b2febc47553bec2c713bd7eaa5b Mon Sep 17 00:00:00 2001 From: Mateon1 Date: Mon, 28 Oct 2024 19:58:00 +0100 Subject: [PATCH] Change some struct usage to their first substruct where appropriate --- include/sprite.h | 2 +- src/code_800558C.c | 94 ++++++++++++++++++++++------------------------ src/sprite.c | 50 ++++++++++++------------ 3 files changed, 71 insertions(+), 75 deletions(-) diff --git a/include/sprite.h b/include/sprite.h index 45a2f5c21..09197daf1 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -42,6 +42,6 @@ void sub_800533C(ax_pose **, UnkSpriteMem **, axdata1 *, u16 *, bool8); void AxResInitFile(axdata *, OpenedFile *, u32, u32, u32, u32, bool8); void AxResInit(axdata *, axmain *, u32, u32, u32, u32, bool8); void AxResInitUnorientedFile(axdata *, OpenedFile *, u32, u32, u32, bool8); -void RunAxAnimationFrame(struct axPokemon *); +void RunAxAnimationFrame(struct axObject *); #endif // GUARD_SPRITE_H diff --git a/src/code_800558C.c b/src/code_800558C.c index 5daaedef4..498c53041 100644 --- a/src/code_800558C.c +++ b/src/code_800558C.c @@ -34,26 +34,26 @@ extern s32 cos_4096(s32); static void sub_800561C(struct unkStructFor800561C *, s32, s32, u8 *); s32 *sub_8005674(struct unkStructFor800561C *, s32); -void DoAxFrame_800558C(struct axPokemon *a0, s32 spriteX, s32 spriteY, u32 a3, u32 paletteNum, u16 *spriteMasks) +void DoAxFrame_800558C(struct axObject *a0, s32 spriteX, s32 spriteY, u32 a3, u32 paletteNum, u16 *spriteMasks) { - if (!(a0->obj.axdata.flags >> 15)) + if (!(a0->axdata.flags >> 15)) return; - if (a0->obj.axdata.sub1.poseId < 0) + if (a0->axdata.sub1.poseId < 0) RunAxAnimationFrame(a0); - if (!(a0->obj.axdata.flags >> 15)) + if (!(a0->axdata.flags >> 15)) return; - a0->obj.axdata.sub1.pos.x = a0->obj.axdata.sub1.offset.x + spriteX; - a0->obj.axdata.sub1.pos.y = a0->obj.axdata.sub1.offset.y + spriteY; - a0->obj.axdata.sub1.paletteNum = paletteNum; - a0->obj.axdata.sub1.unk16 = a3; - sub_800533C(a0->obj.axdata.poseData, a0->obj.axdata.spriteData, &a0->obj.axdata.sub1, spriteMasks, !!(a0->obj.axdata.sub1.lastPoseId ^ a0->obj.axdata.sub1.poseId)); - a0->obj.axdata.sub1.lastPoseId = a0->obj.axdata.sub1.poseId; + a0->axdata.sub1.pos.x = a0->axdata.sub1.offset.x + spriteX; + a0->axdata.sub1.pos.y = a0->axdata.sub1.offset.y + spriteY; + a0->axdata.sub1.paletteNum = paletteNum; + a0->axdata.sub1.unk16 = a3; + sub_800533C(a0->axdata.poseData, a0->axdata.spriteData, &a0->axdata.sub1, spriteMasks, !!(a0->axdata.sub1.lastPoseId ^ a0->axdata.sub1.poseId)); + a0->axdata.sub1.lastPoseId = a0->axdata.sub1.poseId; - if (a0->obj.axdata.flags & 0x800) - a0->obj.axdata.flags &= 0xF7FF; + if (a0->axdata.flags & 0x800) + a0->axdata.flags &= 0xF7FF; } void sub_8005610(OpenedFile *a0, s32 a1, s32 a2, u8 *a3) @@ -87,68 +87,64 @@ s32 *sub_8005674(struct unkStructFor800561C *a0, s32 a1) return a0->unk18; } -// a0 is an s16[2] and a1 is not confirmed to be (struct axPokemon *) yet -void sub_800569C(s16 *a0, struct axPokemon *a1, u8 a2) +void sub_800569C(Position *a0, struct axObject *a1, u8 a2) { - s16 *ptr; - s16 *ptr2; - s16 *ptr3; + Position *ptr; + Position *ptr2; + Position *ptr3; - a0[0] = 0; - a0[1] = 0; + a0->x = 0; + a0->y = 0; - if (!(a1->obj.axdata.flags >> 15) || a2 >= 4) + if (!(a1->axdata.flags >> 15) || a2 >= 4) return; - if (a1->obj.axdata.paletteData != NULL) { - ptr = (s16 *)a1->obj.axdata.paletteData; - ptr += a1->obj.axdata.sub1.poseId * 8; - ptr2 = ptr + (a2 * 2); - if (ptr2[0] == 99 && ptr2[1] == 99) { - a0[0] = 99; - a0[1] = 99; + if (a1->axdata.paletteData != NULL) { + ptr = &((Position*)a1->axdata.paletteData)[a1->axdata.sub1.poseId * 4]; + ptr2 = &ptr[a2]; + if (*&ptr2->x == 99 && *&ptr2->y == 99) { + a0->x = 99; + a0->y = 99; } else { - ptr3 = ptr + (a2 * 2); - a0[0] = a1->obj.axdata.sub1.offset.x + ptr3[0]; - a0[1] = a1->obj.axdata.sub1.offset.y + ptr3[1]; + ptr3 = &ptr[a2]; + a0->x = a1->axdata.sub1.offset.x + ptr3->x; + a0->y = a1->axdata.sub1.offset.y + ptr3->y; } } else { - a0[0] = 99; - a0[1] = 99; + a0->x = 99; + a0->y = 99; } } -// a0 is an s16[12] and a1 is not confirmed to be (struct axPokemon *) yet -void sub_8005700(s16 *a0, struct axPokemon *a1) +void sub_8005700(Position *a0, struct axObject *a1) { s32 i; - s16 *ptr; + Position *ptr; - if (!(a1->obj.axdata.flags >> 15)) + if (!(a1->axdata.flags >> 15)) return; - if (a1->obj.axdata.paletteData != NULL) { - ptr = (s16 *)a1->obj.axdata.paletteData; - ptr += a1->obj.axdata.sub1.poseId * 8; - for (i = 0; i <= 6; i += 2) { - if (ptr[i] == 99 && ptr[i + 1] == 99) { - a0[0] = 99; - a0[1] = 99; + if (a1->axdata.paletteData != NULL) { + ptr = &((Position*)a1->axdata.paletteData)[a1->axdata.sub1.poseId * 4]; + for (i = 0; i < 4; i++) { + if (*&ptr[i].x == 99 && *&ptr[i].y == 99) { + a0->x = 99; + a0->y = 99; } else { - a0[0] = a1->obj.axdata.sub1.offset.x + ptr[i]; - a0[1] = a1->obj.axdata.sub1.offset.y + ptr[i + 1]; + a0->x = a1->axdata.sub1.offset.x + ptr[i].x; + a0->y = a1->axdata.sub1.offset.y + ptr[i].y; } - a0 += 2; + a0++; } } else { for (i = 0; i < 4; i++) { - a0[0] = 99; - a0[1] = 99; - a0 += 2; + a0->x = 99; + a0->y = 99; + a0++; } } } diff --git a/src/sprite.c b/src/sprite.c index dd61fbf18..8d5128655 100644 --- a/src/sprite.c +++ b/src/sprite.c @@ -964,49 +964,49 @@ static inline s16 check_flag_for_80054BC(u16 flags) { } -void RunAxAnimationFrame(struct axPokemon *a0) +void RunAxAnimationFrame(struct axObject *a0) { ax_anim *aData; - if (!check_flag_for_80054BC(a0->obj.axdata.flags)) + if (!check_flag_for_80054BC(a0->axdata.flags)) return; - if (a0->obj.axdata.sub1.poseId >= 0) { - if (a0->obj.axdata.flags & 0x4000) + if (a0->axdata.sub1.poseId >= 0) { + if (a0->axdata.flags & 0x4000) return; - if (a0->obj.axdata.totalFrames < 30000) - a0->obj.axdata.totalFrames++; + if (a0->axdata.totalFrames < 30000) + a0->axdata.totalFrames++; - if (a0->obj.axdata.animWaitFrames != 0) { - a0->obj.axdata.animWaitFrames--; + if (a0->axdata.animWaitFrames != 0) { + a0->axdata.animWaitFrames--; return; } - if (a0->obj.axdata.animFrames != 0 && --a0->obj.axdata.animFrames > 0) + if (a0->axdata.animFrames != 0 && --a0->axdata.animFrames > 0) return; } - if (a0->obj.axdata.activeAnimData->frames == 0) { - if (!(a0->obj.axdata.flags & 0x1000)) { - a0->obj.axdata.flags |= 0x2000; + if (a0->axdata.activeAnimData->frames == 0) { + if (!(a0->axdata.flags & 0x1000)) { + a0->axdata.flags |= 0x2000; return; } - a0->obj.axdata.activeAnimData = a0->obj.axdata.nextAnimData; - a0->obj.axdata.animWaitFrames = Rand32Bit() & 1; + a0->axdata.activeAnimData = a0->axdata.nextAnimData; + a0->axdata.animWaitFrames = Rand32Bit() & 1; } - a0->obj.axdata.flags |= 0x800; + a0->axdata.flags |= 0x800; - aData = a0->obj.axdata.activeAnimData; - a0->obj.axdata.animFrames = aData->frames; - a0->obj.axdata.sub1.poseId = aData->poseId; - a0->obj.axdata.sub1.offset.x = aData->offset.x; - a0->obj.axdata.sub1.offset.y = aData->offset.y; - a0->obj.axdata.sub1.shadow.x = aData->shadow.x; - a0->obj.axdata.sub1.shadow.y = aData->shadow.y; - a0->obj.axdata.sub1.unkC = aData->unkFlags; - a0->obj.axdata.sub1.unk10 |= aData->unkFlags; - a0->obj.axdata.activeAnimData = aData + 1; + aData = a0->axdata.activeAnimData; + a0->axdata.animFrames = aData->frames; + a0->axdata.sub1.poseId = aData->poseId; + a0->axdata.sub1.offset.x = aData->offset.x; + a0->axdata.sub1.offset.y = aData->offset.y; + a0->axdata.sub1.shadow.x = aData->shadow.x; + a0->axdata.sub1.shadow.y = aData->shadow.y; + a0->axdata.sub1.unkC = aData->unkFlags; + a0->axdata.sub1.unk10 |= aData->unkFlags; + a0->axdata.activeAnimData = aData + 1; }