Fix fixed-point matrix type being used in floating-point matrix instances

This commit is contained in:
Mr-Wiseguy
2024-09-13 17:56:28 -04:00
parent b77274c9ea
commit 8d918e3505
18 changed files with 236 additions and 204 deletions

View File

@@ -2,6 +2,7 @@
#include "functions.h"
#include "variables.h"
#include "zoombox.h"
#include "ml/mtx.h"
extern f32 func_8024DE1C(f32, f32, f32[3], f32[3]);
void func_80252330(f32, f32, f32);
@@ -9,6 +10,8 @@ extern f32 func_8033DDB8(void);
extern void func_8024E60C(s32, void *);
extern void func_8024E640(s32, void *);
extern void func_8024E5A8(s32, void *);
extern void func_80344090(BKSpriteDisplayData *self, s32 frame, Gfx **gfx);
BKSprite *func_8033B6C4(enum asset_e sprite_id, BKSpriteDisplayData **arg1);
typedef struct struct_18_s{
s16 sfx_id; /* enum sfx_e */
@@ -838,7 +841,7 @@ void func_803163A8(GcZoombox *this, Gfx **gfx, Mtx **mtx) {
modelRender_draw(gfx, mtx, sp50, sp5C, this->unk198 * sp34, sp38, this->model);
}
void func_803164B0(GcZoombox *this, Gfx **gfx, Mtx **mtx, s32 arg3, s32 arg4, s32 arg5, f32 arg6) {
void func_803164B0(GcZoombox *this, Gfx **gfx, Mtx **mtx, s32 arg3, s32 arg4, BKSpriteDisplayData *arg5, f32 arg6) {
f32 sp2C[3];
f32 temp_f12;
@@ -1190,7 +1193,7 @@ void gczoombox_update(GcZoombox *this){
}//L803176C8
if(this->unk1A4_25 == 0){
if(this->unk166 - ((this->unk1A4_19)? 0xf : 0xc) >= this->unk16C){
func_803153A8(this->unk30, this->unk0, 0, 0x30);
func_803153A8(this->unk30, this->unk0, 0, sizeof(this->unk0));
_gczoombox_memClear(this->unk30, 0x30);
this->unk16C = this->unk166;
this->unk16E = ((this->unk1A4_19) ? 0xf : 0xc) + this->unk16C;
@@ -1459,9 +1462,9 @@ GcZoombox *gczoombox_new(s32 arg0, GcZoomboxSprite portrait_id, s32 arg2, s32 ar
func_80318760(this, 18000);
_gczoombox_memClear( this->unk0, 0x30);
_gczoombox_memClear( this->unk30, 0x30);
_gczoombox_memClear( &this->unk60, 0x30);
_gczoombox_memClear( &this->unk90, 0x20);
_gczoombox_memClear( &this->unkB0, 0x40);
_gczoombox_memClear( this->unk60, 0x30);
_gczoombox_memClear( this->unk90, 0x20);
_gczoombox_memClear( this->unkB0, 0x40);
return this;
}
@@ -1768,10 +1771,10 @@ void func_80318C48(GcZoombox *this, s32 arg1) {
if (this->unk0[0] == 0xFD) {
this->unk0[1] = 0x68;
} else {
func_803153A8(&this->unk0[0], &D_803830B0, 0, 0x30);
func_803153A8(&this->unk0[0], D_803830B0, 0, sizeof(D_803830B0));
this->unk0[0] = 0xFD;
this->unk0[1] = 0x68;
func_803153A8(&D_803830B0, &this->unk0[2], 0, 0x2E);
func_803153A8(D_803830B0, &this->unk0[2], 0, sizeof(this->unk0) - 2);
}
}
else if (this->unk0[0] == 0xFD) {
@@ -1785,10 +1788,10 @@ void func_80318C48(GcZoombox *this, s32 arg1) {
return;
}
else{
func_803153A8(&this->unk30[0], &D_803830B0, 0, 0x30);
func_803153A8(&this->unk30[0], D_803830B0, 0, sizeof(D_803830B0));
this->unk30[0] = 0xFD;
this->unk30[1] = 0x68;
func_803153A8(&D_803830B0, &this->unk30[2], 0, 0x2E);
func_803153A8(D_803830B0, &this->unk30[2], 0, sizeof(this->unk30) - 2);
}
}
else if (this->unk30[0] == 0xFD) {