Super Mario 64 Source
A Super Mario 64 decompilation, brought to you by a bunch of clever folks.
Data Structures | Macros | Functions
gd_math.c File Reference
#include <ultra64.h>
#include <macros.h>
#include "gd_types.h"
#include "gd_macros.h"
#include "gd_main.h"
#include "gd_math.h"
#include "debug_utils.h"
#include "renderer.h"

Data Structures

struct  Row4
 
struct  InvMat4
 

Macros

#define MAT4_DOT_PROD(A, B, R, row, col)
 
#define MAT4_MULTIPLY(A, B, R)
 

Functions

f32 gd_sqrt_f (f32 val)
 
void func_80193B68 (Mat4f *mtx, f32 a1, f32 a2, f32 a3, f32 sp78, f32 sp7C, f32 sp80, f32 sp84, f32 sp88, f32 sp8C)
 
void func_8019415C (Mat4f *mtx, struct GdVec3f *vec)
 
void func_80194220 (Mat4f *mtx, struct GdVec3f *vec)
 
void func_801942E4 (Mat4f *mtx, struct GdVec3f *vec)
 
void func_80194358 (Mat4f *mtx, struct GdVec3f *vec, f32 a2)
 
f32 func_80194728 (f32 a, f32 b)
 
void limit_vec3f (struct GdVec3f *vec, f32 limit)
 
void func_80194880 (f32 a0, f32 *a1, f32 *a2)
 
void Unknown8019498C (Mat4f *a0, s32 row, f32 a2)
 
void absrot_mat4 (Mat4f *mtx, s32 axisnum, f32 a2)
 
f32 magnitude_vec3f (struct GdVec3f *vec)
 
s32 into_unit_vec3f (struct GdVec3f *vec)
 
void cross_product_vec3f (struct GdVec3f *a, struct GdVec3f *b, struct GdVec3f *dst)
 
f32 dot_product_vec3f (struct GdVec3f *a, struct GdVec3f *b)
 
void Unknown80194DFC (Mat4f *src, Mat4f *dst)
 
void func_80194F90 (Mat4f *, Mat4f *)
 
f32 func_80195578 (Mat4f *)
 
void inverse_mat4 (Mat4f *src, Mat4f *dst)
 
f32 func_80195844 (f32, f32, f32, f32, f32, f32, f32, f32, f32)
 
f32 func_8019590C (f32, f32, f32, f32)
 
void Unknown80195950 (Mat4f *mtx, struct GdVec3f *vec, f32 x, f32 y, f32 z)
 
void Unknown801959E0 (f32 *a0, struct GdVec3f *vec, f32 a2, s32 a3, s32 sp38)
 
void Unknown80195B04 (f32 *a0, UNUSED s32 a1, f32 a2, f32 a3, s32 sp28, s32 sp2C)
 
void func_80195C78 (Mat4f *mtx)
 
void Unknown80195D98 (f32 *a0, UNUSED s32 a1, Mat4f *mtx)
 
void func_80195FD4 (Mat4f *mtx, struct GdVec3f *vec, f32 a, f32 b)
 
void func_801961F4 (Mat4f *mtx, struct GdVec3f *vec, f32 ang)
 
void set_identity_mat4 (Mat4f *mtx)
 
void cpy_mat4 (const Mat4f *src, Mat4f *dst)
 
void func_80196430 (struct GdVec3f *vec, const Mat4f *mtx)
 
void func_80196540 (struct GdVec3f *vec, const Mat4f *mtx)
 
void multiply_mat4 (const Mat4f *mA, const Mat4f *mB, Mat4f *dst)
 
void gd_print_vec (UNUSED const char *prefix, UNUSED const struct GdVec3f *vec)
 
void gd_print_plane (UNUSED const char *prefix, UNUSED const struct GdPlaneF *p)
 
void gd_print_mtx (UNUSED const char *prefix, const Mat4f *mtx)
 
void Unknown80197068 (const char *prefix, const f32 *f)
 
void Unknown801970F0 (Mat4f *dst, f32 x, f32 y, f32 z, s32 copy)
 

Macro Definition Documentation

◆ MAT4_DOT_PROD

#define MAT4_DOT_PROD (   A,
  B,
  R,
  row,
  col 
)
Value:
{ \
(R)[(row)][(col)] = (A)[(row)][0] * (B)[0][(col)]; \
(R)[(row)][(col)] += (A)[(row)][1] * (B)[1][(col)]; \
(R)[(row)][(col)] += (A)[(row)][2] * (B)[2][(col)]; \
(R)[(row)][(col)] += (A)[(row)][3] * (B)[3][(col)]; \
}

◆ MAT4_MULTIPLY

#define MAT4_MULTIPLY (   A,
  B,
 
)
Value:
{ \
MAT4_DOT_PROD((A), (B), (R), 0, 0); \
MAT4_DOT_PROD((A), (B), (R), 0, 1); \
MAT4_DOT_PROD((A), (B), (R), 0, 2); \
MAT4_DOT_PROD((A), (B), (R), 0, 3); \
MAT4_DOT_PROD((A), (B), (R), 1, 0); \
MAT4_DOT_PROD((A), (B), (R), 1, 1); \
MAT4_DOT_PROD((A), (B), (R), 1, 2); \
MAT4_DOT_PROD((A), (B), (R), 1, 3); \
MAT4_DOT_PROD((A), (B), (R), 2, 0); \
MAT4_DOT_PROD((A), (B), (R), 2, 1); \
MAT4_DOT_PROD((A), (B), (R), 2, 2); \
MAT4_DOT_PROD((A), (B), (R), 2, 3); \
MAT4_DOT_PROD((A), (B), (R), 3, 0); \
MAT4_DOT_PROD((A), (B), (R), 3, 1); \
MAT4_DOT_PROD((A), (B), (R), 3, 2); \
MAT4_DOT_PROD((A), (B), (R), 3, 3); \
}

Function Documentation

◆ absrot_mat4()

void absrot_mat4 ( Mat4f mtx,
s32  axisnum,
f32  a2 
)

◆ cpy_mat4()

void cpy_mat4 ( const Mat4f src,
Mat4f dst 
)

◆ cross_product_vec3f()

void cross_product_vec3f ( struct GdVec3f a,
struct GdVec3f b,
struct GdVec3f dst 
)

◆ dot_product_vec3f()

f32 dot_product_vec3f ( struct GdVec3f a,
struct GdVec3f b 
)

◆ func_80193B68()

void func_80193B68 ( Mat4f mtx,
f32  a1,
f32  a2,
f32  a3,
f32  sp78,
f32  sp7C,
f32  sp80,
f32  sp84,
f32  sp88,
f32  sp8C 
)

◆ func_8019415C()

void func_8019415C ( Mat4f mtx,
struct GdVec3f vec 
)

◆ func_80194220()

void func_80194220 ( Mat4f mtx,
struct GdVec3f vec 
)

◆ func_801942E4()

void func_801942E4 ( Mat4f mtx,
struct GdVec3f vec 
)

◆ func_80194358()

void func_80194358 ( Mat4f mtx,
struct GdVec3f vec,
f32  a2 
)

◆ func_80194728()

f32 func_80194728 ( f32  a,
f32  b 
)

◆ func_80194880()

void func_80194880 ( f32  a0,
f32 a1,
f32 a2 
)

◆ func_80194F90()

void func_80194F90 ( Mat4f src,
Mat4f adj 
)

◆ func_80195578()

f32 func_80195578 ( Mat4f mtx)

◆ func_80195844()

f32 func_80195844 ( f32  r0c0,
f32  r0c1,
f32  r0c2,
f32  r1c0,
f32  r1c1,
f32  r1c2,
f32  r2c0,
f32  r2c1,
f32  r2c2 
)

◆ func_8019590C()

f32 func_8019590C ( f32  a,
f32  b,
f32  c,
f32  d 
)

◆ func_80195C78()

void func_80195C78 ( Mat4f mtx)

◆ func_80195FD4()

void func_80195FD4 ( Mat4f mtx,
struct GdVec3f vec,
f32  a,
f32  b 
)

◆ func_801961F4()

void func_801961F4 ( Mat4f mtx,
struct GdVec3f vec,
f32  ang 
)

◆ func_80196430()

void func_80196430 ( struct GdVec3f vec,
const Mat4f mtx 
)

◆ func_80196540()

void func_80196540 ( struct GdVec3f vec,
const Mat4f mtx 
)

◆ gd_print_mtx()

void gd_print_mtx ( UNUSED const char prefix,
const Mat4f mtx 
)

◆ gd_print_plane()

void gd_print_plane ( UNUSED const char prefix,
UNUSED const struct GdPlaneF p 
)

◆ gd_print_vec()

void gd_print_vec ( UNUSED const char prefix,
UNUSED const struct GdVec3f vec 
)

◆ gd_sqrt_f()

f32 gd_sqrt_f ( f32  val)

◆ into_unit_vec3f()

s32 into_unit_vec3f ( struct GdVec3f vec)

◆ inverse_mat4()

void inverse_mat4 ( Mat4f src,
Mat4f dst 
)

◆ limit_vec3f()

void limit_vec3f ( struct GdVec3f vec,
f32  limit 
)

◆ magnitude_vec3f()

f32 magnitude_vec3f ( struct GdVec3f vec)

◆ multiply_mat4()

void multiply_mat4 ( const Mat4f mA,
const Mat4f mB,
Mat4f dst 
)

◆ set_identity_mat4()

void set_identity_mat4 ( Mat4f mtx)

◆ Unknown8019498C()

void Unknown8019498C ( Mat4f a0,
s32  row,
f32  a2 
)

◆ Unknown80194DFC()

void Unknown80194DFC ( Mat4f src,
Mat4f dst 
)

◆ Unknown80195950()

void Unknown80195950 ( Mat4f mtx,
struct GdVec3f vec,
f32  x,
f32  y,
f32  z 
)

◆ Unknown801959E0()

void Unknown801959E0 ( f32 a0,
struct GdVec3f vec,
f32  a2,
s32  a3,
s32  sp38 
)

◆ Unknown80195B04()

void Unknown80195B04 ( f32 a0,
UNUSED s32  a1,
f32  a2,
f32  a3,
s32  sp28,
s32  sp2C 
)

◆ Unknown80195D98()

void Unknown80195D98 ( f32 a0,
UNUSED s32  a1,
Mat4f mtx 
)

◆ Unknown80197068()

void Unknown80197068 ( const char prefix,
const f32 f 
)

◆ Unknown801970F0()

void Unknown801970F0 ( Mat4f dst,
f32  x,
f32  y,
f32  z,
s32  copy 
)