Add the function definition for guMtxXFMF, and use that to help define other functions that use it

This commit is contained in:
Ryan Myers
2021-09-09 13:42:13 -04:00
parent 11ec3fb30b
commit 9b7b360ff1
4 changed files with 52 additions and 51 deletions
+2
View File
@@ -21,6 +21,8 @@ void guMtxIdent(Mtx *m);
void guMtxIdentF(float mf[4][4]);
void guMtxL2F(float mf[4][4], Mtx *m);
void guNormalize(float *, float *, float *);
void guMtxXFMF(float mf[4][4], float x, float y, float z,
float *ox, float *oy, float *oz);
/* Used only in Fast3DEX2 */
void guLookAtReflect (Mtx *m, LookAt *l, float xEye, float yEye, float zEye,
+6 -7
View File
@@ -174,7 +174,6 @@ unk80120AC0 *func_80069D20(void);
void func_800014BC(f32 arg0);
s8* get_misc_asset(s32 arg0);
s32 func_8006A624(s8 arg0);
void guMtxXFMF(Matrix, f32, f32, f32, f32*, f32*, f32*);
void func_8006F870(Matrix, Matrix);
s16 get_level_segment_index_from_position(f32, f32, f32);
void func_8006A50C(void);
@@ -888,12 +887,12 @@ Matrix *func_80069DBC(void) {
return &D_80120F60;
}
f32 func_80069DC8(f32 arg0, f32 arg1, f32 arg2) {
f32 sp34;
f32 sp30;
f32 returnVal;
guMtxXFMF(D_80120F60, arg0, arg1, arg2, &sp34, &sp30, &returnVal);
return returnVal;
f32 func_80069DC8(f32 x, f32 y, f32 z) {
f32 ox, oy, oz;
guMtxXFMF(D_80120F60, x, y, z, &ox, &oy, &oz);
return oz;
}
void func_80069E14(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4) {
+18 -16
View File
@@ -7,6 +7,7 @@
#include "macros.h"
#include "structs.h"
#include "f3ddkr.h"
#include "PR/gu.h"
/* Size: 0x44 bytes */
typedef struct unk80120AC0 {
@@ -225,11 +226,11 @@ typedef struct unk8011D388 {
} unk8011D388;
unk8011D388 D_8011D388[4];
typedef struct{
s32 unk00;
s32 unk04;
s32 unk08;
}unk8011D468;
typedef struct {
/* 0x00 */ s32 x;
/* 0x04 */ s32 y;
/* 0x08 */ s32 z;
} unk8011D468;
unk8011D468 D_8011D468;
s32 D_8011D474;
@@ -255,7 +256,6 @@ s32 D_8011D4BC;
/******************************/
extern void guMtxXFMF(Matrix, f32, f32, f32, f32*, f32*, f32*);
f32 func_800BB2F4(s32, f32, f32, f32*);
void func_8007B3D0(Gfx**);
Object *get_object(s32);
@@ -1177,8 +1177,8 @@ GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80030A74.s")
GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80030DE0.s")
void func_80031018(void){
Matrix sp_50;
void func_80031018(void) {
Matrix mf;
struct {
s16 unk00; //sp_38
@@ -1191,9 +1191,9 @@ void func_80031018(void){
f32 unk14; //sp4C;
} sp_38;
f32 sp_34 = 0.0f;
f32 sp_30 = 0.0f;
f32 sp_2C = -65536.0f;
f32 x = 0.0f;
f32 y = 0.0f;
f32 z = -65536.0f;
sp_38.unk04 = D_8011B0B0->z_rotation;
sp_38.unk02 = D_8011B0B0->x_rotation;
@@ -1203,9 +1203,11 @@ void func_80031018(void){
sp_38.unk14 = 0.0f;
sp_38.unk08 = 1.0f;
func_8006FC30(&sp_50, &sp_38);
guMtxXFMF(&sp_50, sp_34, sp_30, sp_2C, &sp_34, &sp_30, &sp_2C);
D_8011D468.unk00 = sp_34;
D_8011D468.unk04 = sp_30;
D_8011D468.unk08 = sp_2C;
func_8006FC30(&mf, &sp_38);
guMtxXFMF(&mf, x, y, z, &x, &y, &z);
//Store x/y/z as integers
D_8011D468.x = (s32) x;
D_8011D468.y = (s32) y;
D_8011D468.z = (s32) z;
}
+26 -28
View File
@@ -641,20 +641,18 @@ typedef struct unk800535C4 {
/* Unknown Size */
typedef struct unk800535C4_2 {
u8 unk0[0x9C];
s32 unk9C;
s32 unkA0;
s32 unkA4;
u8 unkA8[0xF8];
s16 unk1A0;
s16 unk1A2;
s16 unk1A4;
/* 0x00 */ u8 unk0[0x9C];
/* 0x9C */ f32 oz;
/* 0xA0 */ f32 ox;
/* 0xA4 */ f32 oy;
/* 0xA8 */ u8 unkA8[0xF8];
/* 0x1A0 */ s16 unk1A0;
/* 0x1A2 */ s16 unk1A2;
/* 0x1A4 */ s16 unk1A4;
} unk800535C4_2;
void guMtxXFMF(Matrix*, f32, f32, f32, s32*, s32*, s32*);
void func_800535C4(unk800535C4 *arg0, unk800535C4_2 *arg1) {
Matrix sp30;
Matrix mf;
D_8011D510.unk0 = -arg1->unk1A0;
D_8011D510.unk2 = -arg0->unk2;
@@ -663,9 +661,9 @@ void func_800535C4(unk800535C4 *arg0, unk800535C4_2 *arg1) {
D_8011D510.unk10 = 0;
D_8011D510.unk14 = 0;
D_8011D510.unk8 = 1;
func_8006FE74(&sp30, &D_8011D510);
func_8006FE74(&mf, &D_8011D510);
guMtxXFMF(&sp30, 0, -1, 0, &arg1->unkA0, &arg1->unkA4, &arg1->unk9C);
guMtxXFMF(&mf, 0.0f, -1.0f, 0.0f, &arg1->ox, &arg1->oy, &arg1->oz);
}
void func_80053664(Object_64 *arg0) {
@@ -805,20 +803,20 @@ GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80057220.s")
/* Unknown size */
typedef struct Object_64_800575EC {
u8 pad0[0x38];
f32 unk38;
f32 unk3C;
f32 unk40;
f32 unk44;
f32 unk48;
f32 unk4C;
f32 unk50;
f32 unk54;
f32 unk58;
/* 0x00 */ u8 pad0[0x38];
/* 0x38 */ f32 ox1;
/* 0x3C */ f32 oy1;
/* 0x40 */ f32 oz1;
/* 0x44 */ f32 ox2;
/* 0x48 */ f32 oy2;
/* 0x4C */ f32 oz2;
/* 0x50 */ f32 ox3;
/* 0x54 */ f32 oy3;
/* 0x58 */ f32 oz3;
} Object_64_800575EC;
void func_800575EC(Object *obj, Object_64_800575EC *obj64) {
Matrix sp38;
Matrix mf;
D_8011D510.unk0 = obj->y_rotation;
D_8011D510.unk2 = obj->x_rotation;
@@ -827,10 +825,10 @@ void func_800575EC(Object *obj, Object_64_800575EC *obj64) {
D_8011D510.unk10 = 0.0f;
D_8011D510.unk14 = 0.0f;
D_8011D510.unk8 = 1.0f;
func_8006FC30(&sp38, &D_8011D510);
guMtxXFMF(&sp38, 0.0f, 0.0f, 1.0f, &obj64->unk38, &obj64->unk3C, &obj64->unk40);
guMtxXFMF(&sp38, 0.0f, 1.0f, 0.0f, &obj64->unk44, &obj64->unk48, &obj64->unk4C);
guMtxXFMF(&sp38, 1.0f, 0.0f, 0.0f, &obj64->unk50, &obj64->unk54, &obj64->unk58);
func_8006FC30(&mf, &D_8011D510);
guMtxXFMF(&mf, 0.0f, 0.0f, 1.0f, &obj64->ox1, &obj64->oy1, &obj64->oz1);
guMtxXFMF(&mf, 0.0f, 1.0f, 0.0f, &obj64->ox2, &obj64->oy2, &obj64->oz2);
guMtxXFMF(&mf, 1.0f, 0.0f, 0.0f, &obj64->ox3, &obj64->oy3, &obj64->oz3);
}
GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800576E0.s")