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

@@ -6,7 +6,7 @@
#include "ml/mtx.h"
void _guRotateF(Mtx*, f32, f32, f32, f32);
void _guRotateF(f32 mf[4][4], f32, f32, f32, f32);
f32 func_80263FF0(f32);
f32 cosf(f32);
@@ -21,9 +21,8 @@ f32 D_80276578 = BAD_DTOR;
f32 D_8027657C = BAD_DTOR;
/*.bss*/
Mtx_t D_80282810;
u8 pad_D_80282850[0x780];
Mtx * s_mtx_stack;
MtxF D_80282810[0x1F];
MtxF * s_mtx_stack;
/*.code*/
/**
@@ -31,17 +30,19 @@ Mtx * s_mtx_stack;
*
* @param dst
*/
void mlMtxGet(f32 *dst) {
void mlMtxGet(MtxF *dst) {
s32 row, col;
for(row = 0; row < 4; row++){
for(col = 0; col < 4; col++){
*(dst++) = reinterpret_cast(f32, s_mtx_stack->m[row][col]);
dst->m[0][0] = s_mtx_stack->m[row][col];
// TODO figure out how to avoid this pointer arithmetic.
dst = (MtxF*)&dst->m[0][1];
}
}
}
Mtx *mlMtx_get_stack_pointer(void){
MtxF *mlMtx_get_stack_pointer(void){
return s_mtx_stack;
}
@@ -49,23 +50,23 @@ void mlMtxApply(Mtx *mPtr){
_guMtxF2L(s_mtx_stack, mPtr);
}
void func_802514BC(Mtx* arg0) {
void func_802514BC(MtxF *arg0) {
s32 row;
s32 col;
s32 i;
f32 sum;
f32 prod[4][4];
for(row = 0; row < 4; row++, arg0 = &arg0->m[1][0]) {
for(row = 0; row < 4; row++, arg0 = (MtxF*)&arg0->m[1][0]) {
for(col = 0; col < 4; col++) {
sum = 0.0;
for(i = 0; i < 4; i++) {
sum += reinterpret_cast(f32, arg0->m[0][i]) * reinterpret_cast(f32, s_mtx_stack->m[i][col]);
sum += arg0->m[0][i] * s_mtx_stack->m[i][col];
}
prod[row][col] = sum;
}
}
func_80253010(s_mtx_stack, prod, sizeof(Mtx));
func_80253010(s_mtx_stack, prod, sizeof(MtxF));
}
void func_802515D4(f32 arg0[3][3]) {
@@ -79,7 +80,7 @@ void func_802515D4(f32 arg0[3][3]) {
for(var_v1 = 0; var_v1 < 3; var_v1++){
var_f0 = 0.0f;
for(var_v0 = 0; var_v0 < 3; var_v0++){
var_f0 += arg0[i][var_v0] * reinterpret_cast(f32, s_mtx_stack->m[var_v0][var_v1]);
var_f0 += arg0[i][var_v0] * s_mtx_stack->m[var_v0][var_v1];
}
sp1C[i][var_v1] = var_f0;
}
@@ -88,7 +89,7 @@ void func_802515D4(f32 arg0[3][3]) {
for( i = 0; i < 3; i++){
for(var_v1 = 0; var_v1 < 3; var_v1++){
reinterpret_cast(f32, s_mtx_stack->m[i][var_v1]) = sp1C[i][var_v1];
s_mtx_stack->m[i][var_v1] = sp1C[i][var_v1];
}
}
@@ -109,8 +110,8 @@ void mlMtx_push_duplicate(void) {
f32 *var_a3;
f32 *var_a2;
var_a2 = s_mtx_stack + 1;
var_a3 = s_mtx_stack;
var_a2 = &(s_mtx_stack + 1)->m[0][0];
var_a3 = &s_mtx_stack->m[0][0];
for(i = 0; i < 16; i++) {
var_a2[i] = var_a3[i];
}
@@ -123,7 +124,7 @@ void mlMtx_push_duplicate(void) {
*/
void mlMtx_push_identity(void){
s32 i;
f32 *v0 = ++s_mtx_stack;
f32 *v0 = &(++s_mtx_stack)->m[0][0];
for(i = 0; i<3; i++){
v0[0] = 1.0f;
v0[1] = 0.0f;
@@ -141,14 +142,13 @@ void mlMtx_push_identity(void){
* @param x
* @param y
* @param z
* @return f32*
*/
f32 *mlMtx_push_translation(f32 x, f32 y, f32 z){
f32 * var_v0 = ++s_mtx_stack;
void mlMtx_push_translation(f32 x, f32 y, f32 z){
f32 * var_v0 = &(++s_mtx_stack)->m[0][0];
*(var_v0++) = 1.0f; *(var_v0++) = 0.0f; *(var_v0++) = 0.0f; *(var_v0++) = 0.0f;
*(var_v0++) = 0.0f; *(var_v0++) = 1.0f; *(var_v0++) = 0.0f; *(var_v0++) = 0.0f;
*(var_v0++) = 0.0f; *(var_v0++) = 0.0f; *(var_v0++) = 1.0f; *(var_v0++) = 0.0f;
*(var_v0++) = x; *(var_v0++) = y; *(var_v0++) = z; *(var_v0++) = 1.0f;
*(var_v0++) = x; *(var_v0++) = y; *(var_v0++) = z; *(var_v0++) = 1.0f;
}
/**
@@ -162,7 +162,7 @@ void mlMtx_push_mtx(f32* mtx) {
s_mtx_stack++;
for(var_v0 = 0; var_v0 < 4; var_v0++){
for(j = 0; j < 4; j++){
reinterpret_cast(f32, s_mtx_stack->m[var_v0][j]) = *mtx++;
s_mtx_stack->m[var_v0][j] = *mtx++;
}
}
}
@@ -176,15 +176,15 @@ void mlMtx_push_mtx(f32* mtx) {
void mlMtx_push_multiplied(f32* l_mtx) {
s32 i;
s32 j;
Mtx* var_a2;
MtxF* var_a2;
var_a2 = s_mtx_stack + 1;
for(i = 0; i < 4; i++, l_mtx += 4){
for(j = 0; j < 4; j++){
reinterpret_cast(f32, var_a2->m[i][j]) = l_mtx[0] * reinterpret_cast(f32, s_mtx_stack->m[0][j])
+ l_mtx[1] * reinterpret_cast(f32, s_mtx_stack->m[1][j])
+ l_mtx[2] * reinterpret_cast(f32, s_mtx_stack->m[2][j])
+ l_mtx[3] * reinterpret_cast(f32, s_mtx_stack->m[3][j]);
var_a2->m[i][j] = l_mtx[0] * s_mtx_stack->m[0][j]
+ l_mtx[1] * s_mtx_stack->m[1][j]
+ l_mtx[2] * s_mtx_stack->m[2][j]
+ l_mtx[3] * s_mtx_stack->m[3][j];
}
}
s_mtx_stack = var_a2;
@@ -197,21 +197,21 @@ void mlMtx_push_multiplied(f32* l_mtx) {
* @param l_mtx
* @param r_mtx
*/
void mlMtx_push_multiplied_2(Mtx * l_mtx, Mtx * r_mtx) {
void mlMtx_push_multiplied_2(MtxF * l_mtx, MtxF * r_mtx) {
s32 row;
s32 col;
Mtx * dst = (s_mtx_stack + 1);
MtxF * dst = (s_mtx_stack + 1);
for (row = 0; row < 4; row++, r_mtx = &r_mtx->m[1][0])
for (row = 0; row < 4; row++, r_mtx = (MtxF*)&r_mtx->m[1][0])
{
for (col = 0; col < 4; col++)
{
reinterpret_cast(f32, dst->m[row][col]) =
dst->m[row][col] =
(
reinterpret_cast(f32, r_mtx->m[0][0]) * reinterpret_cast(f32, l_mtx->m[0][col]) +
reinterpret_cast(f32, r_mtx->m[0][1]) * reinterpret_cast(f32, l_mtx->m[1][col]) +
reinterpret_cast(f32, r_mtx->m[0][2]) * reinterpret_cast(f32, l_mtx->m[2][col]) +
reinterpret_cast(f32, r_mtx->m[0][3]) * reinterpret_cast(f32, l_mtx->m[3][col])
r_mtx->m[0][0] * l_mtx->m[0][col] +
r_mtx->m[0][1] * l_mtx->m[1][col] +
r_mtx->m[0][2] * l_mtx->m[2][col] +
r_mtx->m[0][3] * l_mtx->m[3][col]
);
}
}
@@ -221,7 +221,7 @@ void mlMtx_push_multiplied_2(Mtx * l_mtx, Mtx * r_mtx) {
//mlMtx
void mlMtxIdent(void){
s32 i;
f32 *v0 = s_mtx_stack = &D_80282810;
f32 *v0 = &(s_mtx_stack = &D_80282810[0])->m[0][0];
for(i = 0; i<3; i++){
v0[0] = 1.0f;
v0[1] = 0.0f;
@@ -234,28 +234,31 @@ void mlMtxIdent(void){
}
void func_80251B5C(f32 x, f32 y, f32 z){
f32 * var_v0 = s_mtx_stack = &D_80282810;
f32 * var_v0 = &(s_mtx_stack = &D_80282810[0])->m[0][0];
*(var_v0++) = 1.0f; *(var_v0++) = 0.0f; *(var_v0++) = 0.0f; *(var_v0++) = 0.0f;
*(var_v0++) = 0.0f; *(var_v0++) = 1.0f; *(var_v0++) = 0.0f; *(var_v0++) = 0.0f;
*(var_v0++) = 0.0f; *(var_v0++) = 0.0f; *(var_v0++) = 1.0f; *(var_v0++) = 0.0f;
*(var_v0++) = x; *(var_v0++) = y; *(var_v0++) = z; *(var_v0++) = 1.0f;
}
void mlMtxSet(Mtx* arg0) {
void mlMtxSet(MtxF* arg0) {
s32 i, j;
f32 *v0;
MtxF *v0;
v0 = s_mtx_stack = &D_80282810;
v0 = s_mtx_stack = D_80282810;
for(i = 0; i < 4*4; i+=4){
for(j = 0; j < 4; j++){
*(v0++) = *(((f32*)arg0)++);
v0->m[0][0] = arg0->m[0][0];
// TODO figure out how to avoid this pointer arithmetic.
v0 = (MtxF*)(&v0->m[0][1]);
arg0 = (MtxF*)(&arg0->m[0][1]);
}
}
}
void mlMtxRotate(f32 a, f32 x, f32 y, f32 z) {
_guRotateF(s_mtx_stack + 1, a, x, y, z);
guMtxCatF(s_mtx_stack + 1, s_mtx_stack, s_mtx_stack);
_guRotateF((s_mtx_stack + 1)->m, a, x, y, z);
guMtxCatF((s_mtx_stack + 1)->m, s_mtx_stack->m, s_mtx_stack->m);
}
void mlMtxRotPitch(f32 arg0) {
@@ -268,20 +271,20 @@ void mlMtxRotPitch(f32 arg0) {
arg0 *= D_80276578;
sin = sinf(arg0);
cos = cosf(arg0);
var_f18 = reinterpret_cast(f32, s_mtx_stack->m[1][0]);
var_f10 = reinterpret_cast(f32, s_mtx_stack->m[2][0]);
reinterpret_cast(f32, s_mtx_stack->m[1][0]) = var_f18*cos + var_f10*sin;
reinterpret_cast(f32, s_mtx_stack->m[2][0]) = var_f18*-sin + var_f10*cos;
var_f18 = s_mtx_stack->m[1][0];
var_f10 = s_mtx_stack->m[2][0];
s_mtx_stack->m[1][0] = var_f18*cos + var_f10*sin;
s_mtx_stack->m[2][0] = var_f18*-sin + var_f10*cos;
var_f18 = reinterpret_cast(f32, s_mtx_stack->m[1][1]);
var_f10 = reinterpret_cast(f32, s_mtx_stack->m[2][1]);
reinterpret_cast(f32, s_mtx_stack->m[1][1]) = var_f18*cos + var_f10*sin;
reinterpret_cast(f32, s_mtx_stack->m[2][1]) = var_f18*-sin + var_f10*cos;
var_f18 = s_mtx_stack->m[1][1];
var_f10 = s_mtx_stack->m[2][1];
s_mtx_stack->m[1][1] = var_f18*cos + var_f10*sin;
s_mtx_stack->m[2][1] = var_f18*-sin + var_f10*cos;
var_f18 = reinterpret_cast(f32, s_mtx_stack->m[1][2]);
var_f10 = reinterpret_cast(f32, s_mtx_stack->m[2][2]);
reinterpret_cast(f32, s_mtx_stack->m[1][2]) = var_f18*cos + var_f10*sin;
reinterpret_cast(f32, s_mtx_stack->m[2][2]) = var_f18*-sin + var_f10*cos;
var_f18 = s_mtx_stack->m[1][2];
var_f10 = s_mtx_stack->m[2][2];
s_mtx_stack->m[1][2] = var_f18*cos + var_f10*sin;
s_mtx_stack->m[2][2] = var_f18*-sin + var_f10*cos;
}
}
@@ -297,10 +300,10 @@ void mlMtxRotYaw(f32 arg0) {
sin = sinf(arg0);
cos = cosf(arg0);
for(i = 0; i < 3; i++){
var_f18 = reinterpret_cast(f32, s_mtx_stack->m[0][i]);
var_f10 = reinterpret_cast(f32, s_mtx_stack->m[2][i]);
reinterpret_cast(f32, s_mtx_stack->m[0][i]) = var_f18*cos - var_f10*sin;
reinterpret_cast(f32, s_mtx_stack->m[2][i]) = var_f18*sin + var_f10*cos;
var_f18 = s_mtx_stack->m[0][i];
var_f10 = s_mtx_stack->m[2][i];
s_mtx_stack->m[0][i] = var_f18*cos - var_f10*sin;
s_mtx_stack->m[2][i] = var_f18*sin + var_f10*cos;
}
}
}
@@ -315,20 +318,20 @@ void mlMtxRotRoll(f32 arg0) {
arg0 *= D_8027657C;
sin = sinf(arg0);
cos = cosf(arg0);
var_f18 = reinterpret_cast(f32, s_mtx_stack->m[0][0]);
var_f10 = reinterpret_cast(f32, s_mtx_stack->m[1][0]);
reinterpret_cast(f32, s_mtx_stack->m[0][0]) = var_f18*cos + var_f10*sin;
reinterpret_cast(f32, s_mtx_stack->m[1][0]) = var_f18*-sin + var_f10*cos;
var_f18 = s_mtx_stack->m[0][0];
var_f10 = s_mtx_stack->m[1][0];
s_mtx_stack->m[0][0] = var_f18*cos + var_f10*sin;
s_mtx_stack->m[1][0] = var_f18*-sin + var_f10*cos;
var_f18 = reinterpret_cast(f32, s_mtx_stack->m[0][1]);
var_f10 = reinterpret_cast(f32, s_mtx_stack->m[1][1]);
reinterpret_cast(f32, s_mtx_stack->m[0][1]) = var_f18*cos + var_f10*sin;
reinterpret_cast(f32, s_mtx_stack->m[1][1]) = var_f18*-sin + var_f10*cos;
var_f18 = s_mtx_stack->m[0][1];
var_f10 = s_mtx_stack->m[1][1];
s_mtx_stack->m[0][1] = var_f18*cos + var_f10*sin;
s_mtx_stack->m[1][1] = var_f18*-sin + var_f10*cos;
var_f18 = reinterpret_cast(f32, s_mtx_stack->m[0][2]);
var_f10 = reinterpret_cast(f32, s_mtx_stack->m[1][2]);
reinterpret_cast(f32, s_mtx_stack->m[0][2]) = var_f18*cos + var_f10*sin;
reinterpret_cast(f32, s_mtx_stack->m[1][2]) = var_f18*-sin + var_f10*cos;
var_f18 = s_mtx_stack->m[0][2];
var_f10 = s_mtx_stack->m[1][2];
s_mtx_stack->m[0][2] = var_f18*cos + var_f10*sin;
s_mtx_stack->m[1][2] = var_f18*-sin + var_f10*cos;
}
}
@@ -345,10 +348,10 @@ void mlMtx_rotate_pitch_deg(f32 arg0) {
sin = sinf(arg0);
cos = cosf(arg0);
for(i = 0; i < 3; i++){
var_f18 = reinterpret_cast(f32, s_mtx_stack->m[1][i]);
var_f10 = reinterpret_cast(f32, s_mtx_stack->m[2][i]);
reinterpret_cast(f32, s_mtx_stack->m[1][i]) = var_f18*cos + var_f10*sin;
reinterpret_cast(f32, s_mtx_stack->m[2][i]) = var_f18*-sin +var_f10*cos;
var_f18 = s_mtx_stack->m[1][i];
var_f10 = s_mtx_stack->m[2][i];
s_mtx_stack->m[1][i] = var_f18*cos + var_f10*sin;
s_mtx_stack->m[2][i] = var_f18*-sin +var_f10*cos;
}
}
}
@@ -365,10 +368,10 @@ void mlMtx_rotate_yaw_deg(f32 arg0) {
sin = sinf(arg0);
cos = cosf(arg0);
for(i = 0; i < 3; i++){
var_f18 = reinterpret_cast(f32, s_mtx_stack->m[0][i]);
var_f10 = reinterpret_cast(f32, s_mtx_stack->m[2][i]);
reinterpret_cast(f32, s_mtx_stack->m[0][i]) = var_f18*cos - var_f10*sin;
reinterpret_cast(f32, s_mtx_stack->m[2][i]) = var_f18*sin + var_f10*cos;
var_f18 = s_mtx_stack->m[0][i];
var_f10 = s_mtx_stack->m[2][i];
s_mtx_stack->m[0][i] = var_f18*cos - var_f10*sin;
s_mtx_stack->m[2][i] = var_f18*sin + var_f10*cos;
}
}
}
@@ -383,25 +386,25 @@ void mlMtxRotatePYR(f32 pitch, f32 yaw, f32 roll){
void mlMtxScale_xyz(f32 x, f32 y, f32 z){
int i;
for(i = 0; i < 3; i++){
reinterpret_cast(f32, s_mtx_stack->m[0][i]) *= x;
reinterpret_cast(f32, s_mtx_stack->m[1][i]) *= y;
reinterpret_cast(f32, s_mtx_stack->m[2][i]) *= z;
s_mtx_stack->m[0][i] *= x;
s_mtx_stack->m[1][i] *= y;
s_mtx_stack->m[2][i] *= z;
}
}
void mlMtxScale(f32 scale){
int i;
for(i = 0; i < 3; i++){
reinterpret_cast(f32, s_mtx_stack->m[0][i]) *= scale;
reinterpret_cast(f32, s_mtx_stack->m[1][i]) *= scale;
reinterpret_cast(f32, s_mtx_stack->m[2][i]) *= scale;
s_mtx_stack->m[0][i] *= scale;
s_mtx_stack->m[1][i] *= scale;
s_mtx_stack->m[2][i] *= scale;
}
}
void func_80252330(f32 x, f32 y, f32 z){
reinterpret_cast(f32, s_mtx_stack->m[3][0]) = x;
reinterpret_cast(f32, s_mtx_stack->m[3][1]) = y;
reinterpret_cast(f32, s_mtx_stack->m[3][2]) = z;
s_mtx_stack->m[3][0] = x;
s_mtx_stack->m[3][1] = y;
s_mtx_stack->m[3][2] = z;
}
void func_8025235C(f32 arg0[3], f32 arg1[3]) {
@@ -413,10 +416,10 @@ void func_8025235C(f32 arg0[3], f32 arg1[3]) {
sp0[2] = arg1[2];
for(i = 0; i < 3; i++){
arg0[i] = sp0[0]*reinterpret_cast(f32, s_mtx_stack->m[0][i])
+ sp0[1]*reinterpret_cast(f32, s_mtx_stack->m[1][i])
+ sp0[2]*reinterpret_cast(f32, s_mtx_stack->m[2][i])
+ reinterpret_cast(f32, s_mtx_stack->m[3][i]);
arg0[i] = sp0[0]*s_mtx_stack->m[0][i]
+ sp0[1]*s_mtx_stack->m[1][i]
+ sp0[2]*s_mtx_stack->m[2][i]
+ s_mtx_stack->m[3][i];
}
}
@@ -424,17 +427,17 @@ void func_80252434(f32 arg0[3], f32 arg1[3]) {
s32 i;
for(i = 0; i < 3; i++){
arg0[i] = arg1[0]*reinterpret_cast(f32, s_mtx_stack->m[0][i])
+ arg1[1]*reinterpret_cast(f32, s_mtx_stack->m[1][i])
+ arg1[2]*reinterpret_cast(f32, s_mtx_stack->m[2][i])
+ reinterpret_cast(f32, s_mtx_stack->m[3][i]);
arg0[i] = arg1[0]*s_mtx_stack->m[0][i]
+ arg1[1]*s_mtx_stack->m[1][i]
+ arg1[2]*s_mtx_stack->m[2][i]
+ s_mtx_stack->m[3][i];
}
}
void mlMtx_apply_f3(f32 dst[3], f32 x, f32 y, f32 z) {
dst[0] = x*((f32 (*)[4])s_mtx_stack)[0][0] + y*((f32 (*)[4])s_mtx_stack)[1][0] + z*((f32 (*)[4])s_mtx_stack)[2][0] + ((f32 (*)[4])s_mtx_stack)[3][0];
dst[1] = x*((f32 (*)[4])s_mtx_stack)[0][1] + y*((f32 (*)[4])s_mtx_stack)[1][1] + z*((f32 (*)[4])s_mtx_stack)[2][1] + ((f32 (*)[4])s_mtx_stack)[3][1];
dst[2] = x*((f32 (*)[4])s_mtx_stack)[0][2] + y*((f32 (*)[4])s_mtx_stack)[1][2] + z*((f32 (*)[4])s_mtx_stack)[2][2] + ((f32 (*)[4])s_mtx_stack)[3][2];
dst[0] = x* s_mtx_stack->m[0][0] + y*s_mtx_stack->m[1][0] + z*s_mtx_stack->m[2][0] + s_mtx_stack->m[3][0];
dst[1] = x* s_mtx_stack->m[0][1] + y*s_mtx_stack->m[1][1] + z*s_mtx_stack->m[2][1] + s_mtx_stack->m[3][1];
dst[2] = x* s_mtx_stack->m[0][2] + y*s_mtx_stack->m[1][2] + z*s_mtx_stack->m[2][2] + s_mtx_stack->m[3][2];
}
void mlMtx_apply_vec3s(s16 dst[3], s16 src[3]) {
@@ -442,7 +445,7 @@ void mlMtx_apply_vec3s(s16 dst[3], s16 src[3]) {
f32 sp0[3];
f32 (*temp_v0)[4];
temp_v0 = s_mtx_stack;
temp_v0 = &s_mtx_stack->m[0];
sp0[0] = (f32) src[0];
sp0[1] = (f32) src[1];
sp0[2] = (f32) src[2];
@@ -489,19 +492,14 @@ void func_8025276C(s32 arg0[3], s32 arg1[3], s32 arg2[3], s32 arg3[3]) {
}
void mlMtxTranslate(f32 x, f32 y, f32 z) {
f32 *temp_t6;
f32 *phi_v0;
f32 phi_f18;
f32 phi_f16;
f32 phi_f10;
s32 phi_v1;
phi_v0 = s_mtx_stack;
for(phi_v1 = 0; phi_v1 < 0xC; phi_v1 +=4){
phi_v0 = (u32)s_mtx_stack + phi_v1;
phi_f18 = phi_v0[0] * x;
phi_f16 = phi_v0[4] * y;
phi_v0[0xC] += phi_f18 + phi_f16 + (phi_v0[8] * z);
for(phi_v1 = 0; phi_v1 < 3; phi_v1++){
phi_f18 = s_mtx_stack->m[0][phi_v1] * x;
phi_f16 = s_mtx_stack->m[1][phi_v1] * y;
s_mtx_stack->m[3][phi_v1] += phi_f18 + phi_f16 + (s_mtx_stack->m[2][phi_v1] * z);
}
}
@@ -509,7 +507,7 @@ void func_80252A38(f32 x, f32 y, f32 z) {
s32 var_v1;
for(var_v1 = 0; var_v1 != 3; var_v1++){
reinterpret_cast(f32, s_mtx_stack->m[3][var_v1]) += reinterpret_cast(f32, s_mtx_stack->m[0][var_v1])*x + reinterpret_cast(f32, s_mtx_stack->m[1][var_v1])*y + reinterpret_cast(f32, s_mtx_stack->m[2][var_v1])*z;
s_mtx_stack->m[3][var_v1] += s_mtx_stack->m[0][var_v1]*x + s_mtx_stack->m[1][var_v1]*y + s_mtx_stack->m[2][var_v1]*z;
}
}

View File

@@ -2,6 +2,8 @@
#include "functions.h"
#include "variables.h"
#include "ml/mtx.h"
extern void guPerspective(Mtx *, u16*, f32, f32, f32, f32, f32);
extern f32 ml_dotProduct_vec3f(f32[3], f32[3]);
@@ -21,8 +23,8 @@ f32 D_80280ECC;
f32 D_80280ED0[4][4];
Vp s_viewport_stack[8];
int D_80280F90;
f32 D_80280F98[4][4];
Mtx D_80280FD8;
MtxF D_80280F98;
MtxF D_80280FD8;
s32 s_viewport_stack_index; //viewport indx
@@ -386,11 +388,11 @@ bool func_8024DD34(f32 arg0, f32 arg1, f32 arg2) {
return ((D_80280ED0[2][0]*arg0 + D_80280ED0[2][1]*arg1 + D_80280ED0[2][2]*arg2 + D_80280ED0[2][3]) <= 0.0f);
}
Mtx *func_8024DD90(void){
MtxF *func_8024DD90(void){
return &D_80280F98;
}
Mtx *func_8024DD9C(void){
MtxF *func_8024DD9C(void){
return &D_80280FD8;
}
@@ -450,7 +452,7 @@ f32 D_80281058[3];
f32 D_80281068[3];
f32 D_80281078[3];
f32 D_80281088[3];
f32 D_80281098[4][4];
MtxF D_80281098;
bool func_8024E030(f32 arg0[3], f32 *arg1)
{
@@ -488,7 +490,7 @@ void func_8024E258(void){
func_8024C5A8(D_80281088);
for(i = 0; i < 4; i++){
for(j = 0; j < 4; j++){
D_80281098[i][j] = D_80280F98[i][j];
D_80281098.m[i][j] = D_80280F98.m[i][j];
}
}
}
@@ -501,7 +503,7 @@ void func_8024E2FC(void){
ml_vec3f_copy(D_80280EA0, D_80281088);
for(i = 0; i < 4; i++){
for(j = 0; j < 4; j++){
D_80280F98[i][j] = D_80281098[i][j];
D_80280F98.m[i][j] = D_80281098.m[i][j];
}
}
}