Change some struct usage to their first substruct where appropriate

This commit is contained in:
Mateon1 2024-10-28 19:58:00 +01:00
parent 20a3f2251a
commit ea037dfcb5
No known key found for this signature in database
GPG Key ID: 6A6067123E4CAF6E
3 changed files with 71 additions and 75 deletions

View File

@ -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

View File

@ -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++;
}
}
}

View File

@ -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;
}