various documentation

This commit is contained in:
Banjo Kazooie
2024-07-01 00:28:11 -05:00
parent 676533f2dc
commit 9688497485
104 changed files with 1034 additions and 947 deletions

View File

@@ -178,7 +178,7 @@ void pfsManager_update(void) {
|| (getGameMode() == GAME_MODE_9_BANJO_AND_KAZOOIE)
) {
s0 = 0x1000;
if (gctransition_8030BD98()) {
if (gctransition_done()) {
D_802816E0 += time_getDelta();
}
if ((D_802816E0 < 1.0) || (getGameMode() == GAME_MODE_9_BANJO_AND_KAZOOIE)) {

View File

@@ -4,8 +4,7 @@
#include "ml/mtx.h"
void func_8024632C(Mtx*, f32, f32, f32, f32);
void _guRotateF(Mtx*, f32, f32, f32, f32);
f32 func_80263FF0(f32);
f32 cosf(f32);
@@ -21,25 +20,30 @@ f32 D_8027657C = BAD_DTOR;
/*.bss*/
Mtx_t D_80282810;
u8 pad_D_80282850[0x780];
Mtx * D_80282FD0;
Mtx * s_mtx_stack;
/*.code*/
void mlMtxGet(f32 *arg0) {
s32 var_v0, j;
/**
* @brief copies the top of the matrix stack to the destination address
*
* @param dst
*/
void mlMtxGet(f32 *dst) {
s32 row, col;
for(var_v0 = 0; var_v0 < 4; var_v0++){
for(j = 0; j < 4; j++){
*(arg0++) = reinterpret_cast(f32, D_80282FD0->m[var_v0][j]);
for(row = 0; row < 4; row++){
for(col = 0; col < 4; col++){
*(dst++) = reinterpret_cast(f32, s_mtx_stack->m[row][col]);
}
}
}
Mtx *func_80251488(void){
return D_80282FD0;
Mtx *mlMtx_get_stack_pointer(void){
return s_mtx_stack;
}
void mlMtxApply(Mtx *mPtr){
func_80245A7C(D_80282FD0, mPtr);
_guMtxF2L(s_mtx_stack, mPtr);
}
void func_802514BC(Mtx* arg0) {
@@ -49,19 +53,16 @@ void func_802514BC(Mtx* arg0) {
f32 sum;
f32 prod[4][4];
for(row = 0; row < 4; row++, arg0 = &arg0->m[1][0])
{
for(col = 0; col < 4; col++)
{
for(row = 0; row < 4; row++, arg0 = &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, D_80282FD0->m[i][col]);
for(i = 0; i < 4; i++) {
sum += reinterpret_cast(f32, arg0->m[0][i]) * reinterpret_cast(f32, s_mtx_stack->m[i][col]);
}
prod[row][col] = sum;
}
}
func_80253010(D_80282FD0, prod, sizeof(Mtx));
func_80253010(s_mtx_stack, prod, sizeof(Mtx));
}
void func_802515D4(f32 arg0[3][3]) {
@@ -75,7 +76,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, D_80282FD0->m[var_v0][var_v1]);
var_f0 += arg0[i][var_v0] * reinterpret_cast(f32, s_mtx_stack->m[var_v0][var_v1]);
}
sp1C[i][var_v1] = var_f0;
}
@@ -84,7 +85,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, D_80282FD0->m[i][var_v1]) = sp1C[i][var_v1];
reinterpret_cast(f32, s_mtx_stack->m[i][var_v1]) = sp1C[i][var_v1];
}
}
@@ -92,25 +93,34 @@ void func_802515D4(f32 arg0[3][3]) {
void mlMtxPop(void){
D_80282FD0--;
s_mtx_stack--;
}
void func_802516E0(void) {
/**
* @brief pushes a copy of the current matrix on the top matrix stack to the top of
* the matrix stack.
*
*/
void mlMtx_push_duplicate(void) {
s32 i, j;
f32 *var_a3;
f32 *var_a2;
var_a2 = D_80282FD0 + 1;
var_a3 = D_80282FD0;
var_a2 = s_mtx_stack + 1;
var_a3 = s_mtx_stack;
for(i = 0; i < 16; i++) {
var_a2[i] = var_a3[i];
}
D_80282FD0++;
s_mtx_stack++;
}
void func_80251738(void){
/**
* @brief pushes the identity matrix to the top of the matrix stack.
*
*/
void mlMtx_push_identity(void){
s32 i;
f32 *v0 = ++D_80282FD0;
f32 *v0 = ++s_mtx_stack;
for(i = 0; i<3; i++){
v0[0] = 1.0f;
v0[1] = 0.0f;
@@ -122,67 +132,93 @@ void func_80251738(void){
v0[0] = 1.0f;
}
f32 *func_80251788(f32 arg0, f32 arg1, f32 arg2){
f32 * var_v0 = ++D_80282FD0;
/**
* @brief Pushes a translation matrix to the top of the matrix stack.
*
* @param x
* @param y
* @param z
* @return f32*
*/
f32 *mlMtx_push_translation(f32 x, f32 y, f32 z){
f32 * var_v0 = ++s_mtx_stack;
*(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++) = arg0; *(var_v0++) = arg1; *(var_v0++) = arg2; *(var_v0++) = 1.0f;
*(var_v0++) = x; *(var_v0++) = y; *(var_v0++) = z; *(var_v0++) = 1.0f;
}
void func_802517F8(f32* arg0) {
/**
* @brief Pushes a copy of a matrix to the top of the matrix stack.
*
* @param mtx
*/
void mlMtx_push_mtx(f32* mtx) {
s32 var_v0, j;
D_80282FD0++;
s_mtx_stack++;
for(var_v0 = 0; var_v0 < 4; var_v0++){
for(j = 0; j < 4; j++){
reinterpret_cast(f32, D_80282FD0->m[var_v0][j]) = *arg0++;
reinterpret_cast(f32, s_mtx_stack->m[var_v0][j]) = *mtx++;
}
}
}
void func_80251878(f32* arg0) {
/**
* @brief Pushes a copy of the a matrix multiplied with the matrix at the top
* of the matrix stack onto the top of the matrix stack.
*
* @param l_mtx
*/
void mlMtx_push_multiplied(f32* l_mtx) {
s32 i;
s32 j;
Mtx* var_a2;
var_a2 = D_80282FD0 + 1;
for(i = 0; i < 4; i++, arg0 += 4){
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]) = arg0[0] * reinterpret_cast(f32, D_80282FD0->m[0][j])
+ arg0[1] * reinterpret_cast(f32, D_80282FD0->m[1][j])
+ arg0[2] * reinterpret_cast(f32, D_80282FD0->m[2][j])
+ arg0[3] * reinterpret_cast(f32, D_80282FD0->m[3][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]);
}
}
D_80282FD0 = var_a2;
s_mtx_stack = var_a2;
}
void func_802519C8(Mtx * arg0, Mtx * arg1) {
/**
* @brief Pushes a copy of the a matrix multiplied with another matrix onto the
* top of the matrix stack.
*
* @param l_mtx
* @param r_mtx
*/
void mlMtx_push_multiplied_2(Mtx * l_mtx, Mtx * r_mtx) {
s32 row;
s32 col;
Mtx * dst = (D_80282FD0 + 1);
Mtx * dst = (s_mtx_stack + 1);
for (row = 0; row < 4; row++, arg1 = &arg1->m[1][0])
for (row = 0; row < 4; row++, r_mtx = &r_mtx->m[1][0])
{
for (col = 0; col < 4; col++)
{
reinterpret_cast(f32, dst->m[row][col]) =
(
reinterpret_cast(f32, arg1->m[0][0]) * reinterpret_cast(f32, arg0->m[0][col]) +
reinterpret_cast(f32, arg1->m[0][1]) * reinterpret_cast(f32, arg0->m[1][col]) +
reinterpret_cast(f32, arg1->m[0][2]) * reinterpret_cast(f32, arg0->m[2][col]) +
reinterpret_cast(f32, arg1->m[0][3]) * reinterpret_cast(f32, arg0->m[3][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])
);
}
}
D_80282FD0 = (dst + 0);
s_mtx_stack = (dst + 0);
}
//mlMtx
void mlMtxIdent(void){
s32 i;
f32 *v0 = D_80282FD0 = &D_80282810;
f32 *v0 = s_mtx_stack = &D_80282810;
for(i = 0; i<3; i++){
v0[0] = 1.0f;
v0[1] = 0.0f;
@@ -194,19 +230,19 @@ void mlMtxIdent(void){
v0[0] = 1.0f;
}
void func_80251B5C(f32 arg0, f32 arg1, f32 arg2){
f32 * var_v0 = D_80282FD0 = &D_80282810;
void func_80251B5C(f32 x, f32 y, f32 z){
f32 * var_v0 = s_mtx_stack = &D_80282810;
*(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++) = arg0; *(var_v0++) = arg1; *(var_v0++) = arg2; *(var_v0++) = 1.0f;
*(var_v0++) = x; *(var_v0++) = y; *(var_v0++) = z; *(var_v0++) = 1.0f;
}
void mlMtxSet(Mtx* arg0) {
s32 i, j;
f32 *v0;
v0 = D_80282FD0 = &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)++);
@@ -214,9 +250,9 @@ void mlMtxSet(Mtx* arg0) {
}
}
void func_80251C20(f32 arg0, f32 arg1, f32 arg2, f32 arg3) {
func_8024632C(D_80282FD0 + 1, arg0, arg1, arg2, arg3);
func_80245DCC(D_80282FD0 + 1, D_80282FD0, D_80282FD0);
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);
}
void mlMtxRotPitch(f32 arg0) {
@@ -229,20 +265,20 @@ void mlMtxRotPitch(f32 arg0) {
arg0 *= D_80276578;
sin = sinf(arg0);
cos = cosf(arg0);
var_f18 = reinterpret_cast(f32, D_80282FD0->m[1][0]);
var_f10 = reinterpret_cast(f32, D_80282FD0->m[2][0]);
reinterpret_cast(f32, D_80282FD0->m[1][0]) = var_f18*cos + var_f10*sin;
reinterpret_cast(f32, D_80282FD0->m[2][0]) = var_f18*-sin + var_f10*cos;
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 = reinterpret_cast(f32, D_80282FD0->m[1][1]);
var_f10 = reinterpret_cast(f32, D_80282FD0->m[2][1]);
reinterpret_cast(f32, D_80282FD0->m[1][1]) = var_f18*cos + var_f10*sin;
reinterpret_cast(f32, D_80282FD0->m[2][1]) = 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 = reinterpret_cast(f32, D_80282FD0->m[1][2]);
var_f10 = reinterpret_cast(f32, D_80282FD0->m[2][2]);
reinterpret_cast(f32, D_80282FD0->m[1][2]) = var_f18*cos + var_f10*sin;
reinterpret_cast(f32, D_80282FD0->m[2][2]) = 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;
}
}
@@ -258,10 +294,10 @@ void mlMtxRotYaw(f32 arg0) {
sin = sinf(arg0);
cos = cosf(arg0);
for(i = 0; i < 3; i++){
var_f18 = reinterpret_cast(f32, D_80282FD0->m[0][i]);
var_f10 = reinterpret_cast(f32, D_80282FD0->m[2][i]);
reinterpret_cast(f32, D_80282FD0->m[0][i]) = var_f18*cos - var_f10*sin;
reinterpret_cast(f32, D_80282FD0->m[2][i]) = var_f18*sin + var_f10*cos;
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;
}
}
}
@@ -276,25 +312,25 @@ void mlMtxRotRoll(f32 arg0) {
arg0 *= D_8027657C;
sin = sinf(arg0);
cos = cosf(arg0);
var_f18 = reinterpret_cast(f32, D_80282FD0->m[0][0]);
var_f10 = reinterpret_cast(f32, D_80282FD0->m[1][0]);
reinterpret_cast(f32, D_80282FD0->m[0][0]) = var_f18*cos + var_f10*sin;
reinterpret_cast(f32, D_80282FD0->m[1][0]) = var_f18*-sin + var_f10*cos;
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 = reinterpret_cast(f32, D_80282FD0->m[0][1]);
var_f10 = reinterpret_cast(f32, D_80282FD0->m[1][1]);
reinterpret_cast(f32, D_80282FD0->m[0][1]) = var_f18*cos + var_f10*sin;
reinterpret_cast(f32, D_80282FD0->m[1][1]) = 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 = reinterpret_cast(f32, D_80282FD0->m[0][2]);
var_f10 = reinterpret_cast(f32, D_80282FD0->m[1][2]);
reinterpret_cast(f32, D_80282FD0->m[0][2]) = var_f18*cos + var_f10*sin;
reinterpret_cast(f32, D_80282FD0->m[1][2]) = 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;
}
}
void func_80251F8C(f32 arg0) {
void mlMtx_rotate_pitch_deg(f32 arg0) {
f32 cos;
f32 sin;
f32 var_f10;
@@ -306,15 +342,15 @@ void func_80251F8C(f32 arg0) {
sin = sinf(arg0);
cos = cosf(arg0);
for(i = 0; i < 3; i++){
var_f18 = reinterpret_cast(f32, D_80282FD0->m[1][i]);
var_f10 = reinterpret_cast(f32, D_80282FD0->m[2][i]);
reinterpret_cast(f32, D_80282FD0->m[1][i]) = var_f18*cos + var_f10*sin;
reinterpret_cast(f32, D_80282FD0->m[2][i]) = var_f18*-sin +var_f10*cos;
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;
}
}
}
void func_8025208C(f32 arg0) {
void mlMtx_rotate_yaw_deg(f32 arg0) {
f32 cos;
f32 sin;
f32 var_f10;
@@ -326,16 +362,16 @@ void func_8025208C(f32 arg0) {
sin = sinf(arg0);
cos = cosf(arg0);
for(i = 0; i < 3; i++){
var_f18 = reinterpret_cast(f32, D_80282FD0->m[0][i]);
var_f10 = reinterpret_cast(f32, D_80282FD0->m[2][i]);
reinterpret_cast(f32, D_80282FD0->m[0][i]) = var_f18*cos - var_f10*sin;
reinterpret_cast(f32, D_80282FD0->m[2][i]) = var_f18*sin + var_f10*cos;
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;
}
}
}
void mlMtxRotate(f32 pitch, f32 yaw, f32 roll){
void mlMtxRotatePYR(f32 pitch, f32 yaw, f32 roll){
mlMtxRotYaw(yaw);
mlMtxRotPitch(pitch);
mlMtxRotRoll(roll);
@@ -344,25 +380,25 @@ void mlMtxRotate(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, D_80282FD0->m[0][i]) *= x;
reinterpret_cast(f32, D_80282FD0->m[1][i]) *= y;
reinterpret_cast(f32, D_80282FD0->m[2][i]) *= z;
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;
}
}
void mlMtxScale(f32 scale){
int i;
for(i = 0; i < 3; i++){
reinterpret_cast(f32, D_80282FD0->m[0][i]) *= scale;
reinterpret_cast(f32, D_80282FD0->m[1][i]) *= scale;
reinterpret_cast(f32, D_80282FD0->m[2][i]) *= scale;
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;
}
}
void func_80252330(f32 x, f32 y, f32 z){
reinterpret_cast(f32, D_80282FD0->m[3][0]) = x;
reinterpret_cast(f32, D_80282FD0->m[3][1]) = y;
reinterpret_cast(f32, D_80282FD0->m[3][2]) = 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;
}
void func_8025235C(f32 arg0[3], f32 arg1[3]) {
@@ -374,10 +410,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, D_80282FD0->m[0][i])
+ sp0[1]*reinterpret_cast(f32, D_80282FD0->m[1][i])
+ sp0[2]*reinterpret_cast(f32, D_80282FD0->m[2][i])
+ reinterpret_cast(f32, D_80282FD0->m[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]);
}
}
@@ -385,17 +421,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, D_80282FD0->m[0][i])
+ arg1[1]*reinterpret_cast(f32, D_80282FD0->m[1][i])
+ arg1[2]*reinterpret_cast(f32, D_80282FD0->m[2][i])
+ reinterpret_cast(f32, D_80282FD0->m[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]);
}
}
void func_802524F0(f32 dst[3], f32 x, f32 y, f32 z) {
dst[0] = x*((f32 (*)[4])D_80282FD0)[0][0] + y*((f32 (*)[4])D_80282FD0)[1][0] + z*((f32 (*)[4])D_80282FD0)[2][0] + ((f32 (*)[4])D_80282FD0)[3][0];
dst[1] = x*((f32 (*)[4])D_80282FD0)[0][1] + y*((f32 (*)[4])D_80282FD0)[1][1] + z*((f32 (*)[4])D_80282FD0)[2][1] + ((f32 (*)[4])D_80282FD0)[3][1];
dst[2] = x*((f32 (*)[4])D_80282FD0)[0][2] + y*((f32 (*)[4])D_80282FD0)[1][2] + z*((f32 (*)[4])D_80282FD0)[2][2] + ((f32 (*)[4])D_80282FD0)[3][2];
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];
}
void mlMtx_apply_vec3s(s16 dst[3], s16 src[3]) {
@@ -403,7 +439,7 @@ void mlMtx_apply_vec3s(s16 dst[3], s16 src[3]) {
f32 sp0[3];
f32 (*temp_v0)[4];
temp_v0 = D_80282FD0;
temp_v0 = s_mtx_stack;
sp0[0] = (f32) src[0];
sp0[1] = (f32) src[1];
sp0[2] = (f32) src[2];
@@ -457,9 +493,9 @@ void mlMtxTranslate(f32 x, f32 y, f32 z) {
f32 phi_f10;
s32 phi_v1;
phi_v0 = D_80282FD0;
phi_v0 = s_mtx_stack;
for(phi_v1 = 0; phi_v1 < 0xC; phi_v1 +=4){
phi_v0 = (u32)D_80282FD0 + phi_v1;
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);
@@ -470,7 +506,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, D_80282FD0->m[3][var_v1]) += reinterpret_cast(f32, D_80282FD0->m[0][var_v1])*x + reinterpret_cast(f32, D_80282FD0->m[1][var_v1])*y + reinterpret_cast(f32, D_80282FD0->m[2][var_v1])*z;
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;
}
}
@@ -520,7 +556,7 @@ void func_80252C08(f32 arg0[3], f32 rotation[3], f32 scale, f32 arg3[3]){
}
void func_80252CC4(f32 arg0[3], f32 arg1[3], f32 scale, f32 arg3[3]){
void func_80252CC4(f32 position[3], f32 rotation[3], f32 scale, f32 arg3[3]){
if(arg3 != NULL)
mlMtxTranslate(arg3[0], arg3[1], arg3[2]);
@@ -528,62 +564,62 @@ void func_80252CC4(f32 arg0[3], f32 arg1[3], f32 scale, f32 arg3[3]){
mlMtxScale_xyz(1.0f/scale, 1.0f/scale, 1.0f/scale);
}
if(arg1 != NULL){
mlMtxRotRoll(-arg1[2]);
mlMtxRotPitch(-arg1[0]);
mlMtxRotYaw(-arg1[1]);
if(rotation != NULL){
mlMtxRotRoll(-rotation[2]);
mlMtxRotPitch(-rotation[0]);
mlMtxRotYaw(-rotation[1]);
}
if(arg0 != NULL)
mlMtxTranslate(-arg0[0], -arg0[1], -arg0[2]);
if(position != NULL)
mlMtxTranslate(-position[0], -position[1], -position[2]);
}
void func_80252D8C(f32 arg0[3], f32 arg1[3]){
mlMtxTranslate(arg0[0], arg0[1], arg0[2]);
mlMtxRotRoll(arg1[2]);
mlMtxRotPitch(arg1[0]);
mlMtxRotYaw(arg1[1]);
void func_80252D8C(f32 position[3], f32 rotation[3]){
mlMtxTranslate(position[0], position[1], position[2]);
mlMtxRotRoll(rotation[2]);
mlMtxRotPitch(rotation[0]);
mlMtxRotYaw(rotation[1]);
}
void func_80252DDC(f32 arg0[3], f32 arg1[3]){
mlMtxRotYaw(-arg1[1]);
mlMtxRotPitch(-arg1[0]);
mlMtxRotRoll(-arg1[2]);
mlMtxTranslate(-arg0[0], -arg0[1], -arg0[2]);
void func_80252DDC(f32 position[3], f32 rotation[3]){
mlMtxRotYaw(-rotation[1]);
mlMtxRotPitch(-rotation[0]);
mlMtxRotRoll(-rotation[2]);
mlMtxTranslate(-position[0], -position[1], -position[2]);
}
void func_80252E4C(f32 arg0[3], f32 arg1[3]){
mlMtxTranslate(arg0[0], arg0[1], arg0[2]);
mlMtxRotRoll(arg1[2]);
mlMtxRotPitch(arg1[0]);
mlMtxRotYaw(arg1[1]);
mlMtxTranslate(-arg0[0], -arg0[1], -arg0[2]);
void func_80252E4C(f32 position[3], f32 rotation[3]){
mlMtxTranslate(position[0], position[1], position[2]);
mlMtxRotRoll(rotation[2]);
mlMtxRotPitch(rotation[0]);
mlMtxRotYaw(rotation[1]);
mlMtxTranslate(-position[0], -position[1], -position[2]);
}
void func_80252EC8(f32 arg0[3], f32 arg1[3]){
mlMtxTranslate(arg0[0], arg0[1], arg0[2]);
mlMtxRotYaw(-arg1[1]);
mlMtxRotPitch(-arg1[0]);
mlMtxRotRoll(-arg1[2]);
mlMtxTranslate(-arg0[0], -arg0[1], -arg0[2]);
void func_80252EC8(f32 position[3], f32 rotation[3]){
mlMtxTranslate(position[0], position[1], position[2]);
mlMtxRotYaw(-rotation[1]);
mlMtxRotPitch(-rotation[0]);
mlMtxRotRoll(-rotation[2]);
mlMtxTranslate(-position[0], -position[1], -position[2]);
}
void func_80252F50(f32 arg0[3]){
mlMtxRotYaw(arg0[1]);
mlMtxRotPitch(arg0[0]);
mlMtxRotRoll(arg0[2]);
void func_80252F50(f32 rotation[3]){
mlMtxRotYaw(rotation[1]);
mlMtxRotPitch(rotation[0]);
mlMtxRotRoll(rotation[2]);
}
void func_80252F8C(f32 arg0[3]){
mlMtxRotRoll(arg0[2]);
mlMtxRotPitch(arg0[0]);
mlMtxRotYaw(arg0[1]);
void func_80252F8C(f32 rotation[3]){
mlMtxRotRoll(rotation[2]);
mlMtxRotPitch(rotation[0]);
mlMtxRotYaw(rotation[1]);
}
void func_80252FC8(f32 arg0[3]){
mlMtxRotYaw(-arg0[1]);
mlMtxRotPitch(-arg0[0]);
mlMtxRotRoll(-arg0[2]);
void func_80252FC8(f32 rotation[3]){
mlMtxRotYaw(-rotation[1]);
mlMtxRotPitch(-rotation[0]);
mlMtxRotRoll(-rotation[2]);
}

View File

@@ -30,7 +30,7 @@ f32 ml_acosValTbl[90] = { //D_80276CBC
0.0871559978, 0.0697569996, 0.0523359999, 0.0348990001, 0.0174519997
};
f32 viewport_getYaw(void);
f32 viewport_get_yaw(void);
// .h
void func_80257918(f32 arg0[3], f32 arg1[3], f32 arg2[3], f32 arg3[3]);
@@ -1481,7 +1481,7 @@ void func_802596AC(f32 a0[3], f32 a1[3], f32 a2[3], f32 a3[3])
s32 func_8025975C(f32 a0)
{
f32 val = (s32)(viewport_getYaw() - a0);
f32 val = (s32)(viewport_get_yaw() - a0);
while (val < 0)
val += 360;

View File

@@ -616,7 +616,7 @@ int func_8025AEEC(void){
return out;
}
void func_8025AF38(void){
void comusic_defrag(void){
CoMusic *iPtr;
if(!D_80276E30) return;

View File

@@ -17,7 +17,7 @@ void func_802409C0(f32 arg0[3], f32 arg1){
sp30[1] = 0.0f;
sp30[2] = -(sp28[1] * sp24);
viewport_getRotation(&sp3C);
viewport_get_rotation_vec3f(&sp3C);
ml_vec3f_yaw_rotate_copy(sp30, sp30, sp3C[1]);
arg0[0] = arg0[0] + sp30[0];
@@ -59,7 +59,7 @@ void func_80240AC8(f32 arg0[3], f32 arg1){
sp30[1] = 0.0f;
sp30[2] = -(sp28[1] * sp24);
viewport_getRotation(&sp3C);
viewport_get_rotation_vec3f(&sp3C);
ml_vec3f_yaw_rotate_copy(sp30, sp30, sp3C[1]);
arg0[0] = arg0[0] + sp30[0];

View File

@@ -1,7 +1,7 @@
#include <ultra64.h>
extern f32 gu_sqrtf(f32);
static void _guMtxF2L(float mf[4][4], Mtx *m)
static void __guMtxF2L(float mf[4][4], Mtx *m)
{
int i, j;
int e1,e2;
@@ -142,7 +142,7 @@ void guScale(Mtx *m, float x, float y, float z)
float mf[4][4];
guScaleF(mf, x, y, z);
_guMtxF2L(mf, m);
__guMtxF2L(mf, m);
}
void guRotateRPYF(f32 mf[4][4], f32 r, f32 p, f32 h) {

View File

@@ -4,7 +4,7 @@
extern f32 ml_cos_deg(f32);
extern f32 ml_sin_deg(f32);
extern void func_8024C5F0(s32[3]);
extern void veiwport_get_position_vec3w(s32[3]);
Gfx D_80275880[] = {
gsSPClearGeometryMode(G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0060CD00),
@@ -26,7 +26,7 @@ void func_80241490(Gfx **gfx, Vtx **vtx, s32 *arg2[3], s32 arg3[3], s32 arg4[3],
s32 sp78[3][4];
s32 i;
func_8024C5F0(spB4);
veiwport_get_position_vec3w(spB4);
gSPDisplayList((*gfx)++, D_80275880);
if (arg6 != 0) {
gSPSetGeometryMode((*gfx)++, G_ZBUFFER | G_CULL_BACK);
@@ -95,7 +95,7 @@ void func_80241928(Gfx** gfx, Vtx** vtx, s32 arg2[3], s32 arg3, s32 arg4[3]) {
s32 var_fp;
s32 var_s0;
func_8024C5F0(spB4);
veiwport_get_position_vec3w(spB4);
for(var_fp = 0; var_fp < 4; var_fp++){
gSPDisplayList((*gfx)++, D_80275880);
gSPSetGeometryMode((*gfx)++, G_ZBUFFER);
@@ -162,7 +162,7 @@ void func_802424D4(Gfx **gfx, Mtx **mtx, Vtx **vtx, f32 arg3[3], f32 arg4[3], f3
sp68[1] *= arg5;
sp68[2] *= arg5;
viewport_getPosition(sp5C);
viewport_get_position_vec3f(sp5C);
gSPDisplayList((*gfx)++, D_80275880);
gSPSetGeometryMode((*gfx)++, G_ZBUFFER);
gSPVertex((*gfx)++, *vtx, 8, 0);
@@ -209,7 +209,7 @@ void func_80242BE8(Gfx **gfx, Vtx **arg1, f32 arg2[2][2][2][3], s32 arg3[3], s32
s32 i;
s32 j;
s32 k;
viewport_getPosition(sp84);
viewport_get_position_vec3f(sp84);
gSPDisplayList((*gfx)++, D_80275880);
if (arg5){
gSPSetGeometryMode((*gfx)++, G_CULL_BACK);

View File

@@ -2,14 +2,16 @@
#include "functions.h"
#include "variables.h"
static void _guMtxIdentF(float mf[4][4]);
u8 D_80275900[] = {0xCF, 0xAD, 0xA2, 0x90, 0x93, 0x4A, 0x83, 0xF1};
f32 D_80275908 = BAD_DTOR;
s32 func_80245980(f32 arg0){
static s32 guFToFix32(f32 arg0){
return arg0*65536.0f;
}
void func_802459A0(float mf[4][4], Mtx *m)
static void __guMtxF2L(float mf[4][4], Mtx *m)
{
int i, j;
int e1,e2;
@@ -21,14 +23,14 @@ void func_802459A0(float mf[4][4], Mtx *m)
for (i=0; i<4; i++)
for (j=0; j<2; j++) {
e1=func_80245980(mf[i][j*2]);
e2=func_80245980(mf[i][j*2+1]);
e1=guFToFix32(mf[i][j*2]);
e2=guFToFix32(mf[i][j*2+1]);
*(ai++) = ( e1 & 0xffff0000 ) | ((e2 >> 16)&0xffff);
*(af++) = ((e1 << 16) & 0xffff0000) | (e2 & 0xffff);
}
}
void func_80245A7C(float mf[4][4], Mtx *m) //should be mf[4][4]
void _guMtxF2L(float mf[4][4], Mtx *m) //should be mf[4][4]
{
int i;
int j;
@@ -50,10 +52,10 @@ void func_80245A7C(float mf[4][4], Mtx *m) //should be mf[4][4]
}
}
void func_80245BE4(f32 mf[4][4], f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7) {
void _guFustrumF(f32 mf[4][4], f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7) {
s32 i, j;
_guMtxIdentF_80245D44(mf);
_guMtxIdentF(mf);
mf[0][0] = (2 * arg5) / (arg2 - arg1);
mf[1][1] = (2 * arg5) / (arg4 - arg3);
mf[2][0] = (arg2 + arg1) / (arg2 - arg1);
@@ -69,7 +71,7 @@ void func_80245BE4(f32 mf[4][4], f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg
}
}
void _guMtxIdentF_80245D44(float mf[4][4]) //static
static void _guMtxIdentF(float mf[4][4]) //static
{
int i, j;
@@ -79,7 +81,7 @@ void _guMtxIdentF_80245D44(float mf[4][4]) //static
else mf[i][j] = 0.0;
}
void func_80245DCC(f32 lmf[4][4], f32 rmf[4][4], f32 dst[4][4]) {
void guMtxCatF(f32 lmf[4][4], f32 rmf[4][4], f32 dst[4][4]) {
s32 i, j, k;
f32 sp1C[4][4];
@@ -98,7 +100,7 @@ void func_80245DCC(f32 lmf[4][4], f32 rmf[4][4], f32 dst[4][4]) {
}
}
void func_80245F34(f32 *arg0, f32 *arg1, f32 *arg2) {
static void _guNormalize(f32 *arg0, f32 *arg1, f32 *arg2) {
f32 inv_len;
inv_len = 1.0f / gu_sqrtf((*arg0 * *arg0) + (*arg1 * *arg1) + (*arg2 * *arg2));
@@ -107,7 +109,7 @@ void func_80245F34(f32 *arg0, f32 *arg1, f32 *arg2) {
*arg2 *= inv_len;
}
void func_80245FB8(float mf[4][4], u16 *perspNorm, float fovy, float aspect, float near, float far, float scale)
void guPerspectiveF(float mf[4][4], u16 *perspNorm, float fovy, float aspect, float near, float far, float scale)
{
float cot;
float tmp;
@@ -163,25 +165,25 @@ void func_80245FB8(float mf[4][4], u16 *perspNorm, float fovy, float aspect, flo
void guPerspective(Mtx *m, u16 *perspNorm, f32 fovy, f32 aspect, f32 near, f32 far, f32 scale) {
f32 sp28[4][4];
func_80245FB8(sp28, perspNorm, fovy, aspect, near, far, scale);
func_802459A0(sp28, m);
guPerspectiveF(sp28, perspNorm, fovy, aspect, near, far, scale);
__guMtxF2L(sp28, m);
}
void func_8024632C(f32 mf[4][4], f32 arg1, f32 arg2, f32 arg3, f32 arg4) {
void _guRotateF(f32 mf[4][4], f32 arg1, f32 arg2, f32 arg3, f32 arg4) {
f32 sp34;
f32 sp30;
f32 sp2C;
f32 sp28;
volatile f32 sp24;
func_80245F34(&arg2, &arg3, &arg4);
_guNormalize(&arg2, &arg3, &arg4);
arg1 *= D_80275908;
sp34 = sinf(arg1);
sp30 = cosf(arg1);
sp2C = arg2 * arg3 * (1.0f - sp30);
sp28 = arg3 * arg4 * (1.0f - sp30);
sp24 = (arg4 * arg2 * (1.0f - sp30));
_guMtxIdentF_80245D44(mf);
_guMtxIdentF(mf);
mf[0][0] = ((1.0f - (arg2 * arg2)) * sp30) + (arg2 * arg2);
mf[2][1] = (sp28 - (arg2 * sp34));
mf[1][2] = ((arg2 * sp34) + sp28);
@@ -195,10 +197,10 @@ void func_8024632C(f32 mf[4][4], f32 arg1, f32 arg2, f32 arg3, f32 arg4) {
mf[0][1] = (arg4 * sp34) + sp2C;
}
void func_802464B0(f32 mf[4][4], f32 arg1){
void guRotateRollF(f32 mf[4][4], f32 arg1){
f32 c, s;
arg1 *= D_80275908;
_guMtxIdentF_80245D44(mf);
_guMtxIdentF(mf);
c = cosf(arg1);
mf[1][1] = c;
mf[2][2] = c;
@@ -207,10 +209,10 @@ void func_802464B0(f32 mf[4][4], f32 arg1){
mf[2][1] = -s;
}
void func_80246510(f32 mf[4][4], f32 arg1){
void guRotatePitchF(f32 mf[4][4], f32 arg1){
f32 c, s;
arg1 *= D_80275908;
_guMtxIdentF_80245D44(mf);
_guMtxIdentF(mf);
c = cosf(arg1);
mf[0][0] = c;
mf[2][2] = c;
@@ -219,10 +221,10 @@ void func_80246510(f32 mf[4][4], f32 arg1){
mf[0][2] = -s;
}
void func_80246570(f32 mf[4][4], f32 arg1){
void guRotateYawF(f32 mf[4][4], f32 arg1){
f32 c, s;
arg1 *= D_80275908;
_guMtxIdentF_80245D44(mf);
_guMtxIdentF(mf);
c = cosf(arg1);
mf[0][0] = c;
mf[1][1] = c;
@@ -231,16 +233,16 @@ void func_80246570(f32 mf[4][4], f32 arg1){
mf[1][0] = -s;
}
void func_802465D0(f32 mf[4][4], f32 arg1, f32 arg2, f32 arg3){
_guMtxIdentF_80245D44(mf);
void _guScaleF(f32 mf[4][4], f32 arg1, f32 arg2, f32 arg3){
_guMtxIdentF(mf);
mf[0][0] = arg1;
mf[1][1] = arg2;
mf[2][2] = arg3;
mf[3][3] = 1.0f;
}
void func_80246624(f32 mf[4][4], f32 arg1, f32 arg2, f32 arg3){
_guMtxIdentF_80245D44(mf);
void _guTranslateF(f32 mf[4][4], f32 arg1, f32 arg2, f32 arg3){
_guMtxIdentF(mf);
mf[3][0] = arg1;
mf[3][1] = arg2;
mf[3][2] = arg3;

View File

@@ -535,7 +535,7 @@ void draw_texture_ci4(s32 x, s32 y, void *tmem, s32 w, s32 h, bool alpha_enabled
}
}
void func_80249CEC(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled) {
void draw_sprite(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled) {
s16 temp_v0;
temp_v0 = sprite->type;

View File

@@ -5,11 +5,13 @@
extern void guPerspective(Mtx *, u16*, f32, f32, f32, f32, f32);
extern f32 ml_dotProduct_vec3f(f32[3], f32[3]);
#define VIEWPORT_FOVY_DEFAULT (40.0f)
/* .data */
f32 D_80275D20 = 40.0f; //fovy
f32 D_80275D24 = 1.35185182f; //aspect
f32 D_80275D28 = 30.0f; //near
f32 D_80275D2C = 4000.0f; //far
f32 s_viewport_fovy = VIEWPORT_FOVY_DEFAULT; //fovy
f32 s_viewport_aspect = 1.35185182f; //aspect
f32 s_viewport_near = 30.0f; //near
f32 s_viewport_far = 4000.0f; //far
/* .data */
f32 D_80280EA0[3];
@@ -30,11 +32,11 @@ void func_8024F450(void);
void func_8024F4AC(void);
void func_8024C964(Gfx **, Mtx **, f32, f32);
void func_8024CD7C(int);
void func_8024CDF8(f32, f32, f32);
void func_8024CE40(f32, f32, f32);
void viewport_set_position_f3(f32, f32, f32);
void viewport_set_rotation_f3(f32, f32, f32);
void func_8024CE60(f32, f32);
void func_8024CE74(s32 arg0, s32 arg1, s32 arg2, s32 arg3);
void func_8024DDB4(f32);
void viewport_set_field_of_view(f32);
void func_80256E24(f32 [3], f32, f32, f32, f32, f32);
@@ -55,31 +57,31 @@ void func_8024C5A8(f32 arg0[3]){
ml_vec3f_copy(arg0, D_80280EA0);
}
void viewport_getPosition(f32 arg0[3]){
void viewport_get_position_vec3f(f32 arg0[3]){
ml_vec3f_copy(arg0, viewportPosition);
}
void func_8024C5F0(s32 dst[3]){
void veiwport_get_position_vec3w(s32 dst[3]){
dst[0] = ((f32)(s32)(viewportPosition[0]*500.0))/500.0;
dst[1] = ((f32)(s32)(viewportPosition[1]*500.0))/500.0;
dst[2] = ((f32)(s32)(viewportPosition[2]*500.0))/500.0;
}
void func_8024C6A0(s16 dst[3]){
void veiwport_get_position_vec3s(s16 dst[3]){
dst[0] = ((f32)(s32)(viewportPosition[0]*500.0))/500.0;
dst[1] = ((f32)(s32)(viewportPosition[1]*500.0))/500.0;
dst[2] = ((f32)(s32)(viewportPosition[2]*500.0))/500.0;
}
void viewport_getRotation(f32 arg0[3]){
void viewport_get_rotation_vec3f(f32 arg0[3]){
ml_vec3f_copy(arg0, viewportRotation);
}
f32 viewport_getYaw(void){
f32 viewport_get_yaw(void){
return viewportRotation[1];
}
void func_8024C794(f32 *pitch, f32 *yaw, f32 *roll){
void viewport_get_rotation_f3(f32 *pitch, f32 *yaw, f32 *roll){
*pitch = viewportRotation[0];
*yaw = viewportRotation[1];
*roll = viewportRotation[2];
@@ -97,21 +99,21 @@ void func_8024C7B8(Gfx **gfx, Mtx **mtx){
void func_8024C904(Gfx **gfx, Mtx **mtx){
gSPViewport((*gfx)++, &D_80280F10[D_80281018]);
func_8024C964(gfx, mtx, D_80275D28, D_80275D2C);
func_8024C964(gfx, mtx, s_viewport_near, s_viewport_far);
}
void func_8024C964(Gfx **gfx, Mtx **mtx, f32 near, f32 far){
u16 sp5e;
near = MAX(D_80275D28, near);
far = MIN(D_80275D2C, far);
near = MAX(s_viewport_near, near);
far = MIN(s_viewport_far, far);
if(*(u32*)OS_PHYSICAL_TO_K1(0x1D8) + 0x53D4FFF0){
near = 750.0f;
far = 1250.0f;
}
guPerspective(*mtx, &sp5e, D_80275D20, D_80275D24, near, far, 0.5f);
guPerspective(*mtx, &sp5e, s_viewport_fovy, s_viewport_aspect, near, far, 0.5f);
gSPPerspNormalize((*gfx)++, sp5e);
gSPMatrix((*gfx)++, OS_PHYSICAL_TO_K0((*mtx)++), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
@@ -129,7 +131,7 @@ void func_8024C964(Gfx **gfx, Mtx **mtx, f32 near, f32 far){
}
void func_8024CBD4(Gfx **gfx, Mtx **mtx){
func_8024C964(gfx, mtx, D_80275D28, D_80275D2C);
func_8024C964(gfx, mtx, s_viewport_near, s_viewport_far);
}
void func_8024CC00(void){}
@@ -150,12 +152,12 @@ void func_8024CC5C(void){
void func_8024CCC4(void){
func_8024CD7C(1);
func_8024CDF8(0.0f, 0.0f, 0.0f);
func_8024CE40(0.0f, 0.0f, 0.0f);
viewport_set_position_f3(0.0f, 0.0f, 0.0f);
viewport_set_rotation_f3(0.0f, 0.0f, 0.0f);
func_8024CC08(40.0f);
func_8024CE60(1.0f, 10000.0f);
func_8024CC5C();
func_8024DDB4(40.0f);
viewport_set_field_of_view(VIEWPORT_FOVY_DEFAULT);
mlMtxIdent();
mlMtxRotYaw(-60.0f);
mlMtxRotPitch(-90.0f);
@@ -166,35 +168,35 @@ void func_8024CD7C(int arg0){
D_80280F90 = arg0;
}
void viewport_setPosition(f32 src[3]){
void viewport_set_position_vec3f(f32 src[3]){
ml_vec3f_copy(viewportPosition, src);
}
void func_8024CDB0(s32 src[3]){
void viewport_set_position_vec3w(s32 src[3]){
viewportPosition[0] = (f32)src[0];
viewportPosition[1] = (f32)src[1];
viewportPosition[2] = (f32)src[2];
}
void func_8024CDF8(f32 arg0, f32 arg1, f32 arg2){
viewportPosition[0] = arg0;
viewportPosition[1] = arg1;
viewportPosition[2] = arg2;
void viewport_set_position_f3(f32 x, f32 y, f32 z){
viewportPosition[0] = x;
viewportPosition[1] = y;
viewportPosition[2] = z;
}
void viewport_setRotation(f32 src[3]){
void viewport_set_rotation_vec3f(f32 src[3]){
ml_vec3f_copy(viewportRotation, src);
}
void func_8024CE40(f32 arg0, f32 arg1, f32 arg2){
viewportRotation[0] = arg0;
viewportRotation[1] = arg1;
viewportRotation[2] = arg2;
void viewport_set_rotation_f3(f32 pitch, f32 yaw, f32 roll){
viewportRotation[0] = pitch;
viewportRotation[1] = yaw;
viewportRotation[2] = roll;
}
void func_8024CE60(f32 near, f32 far){
D_80275D28 = near;
D_80275D2C = far;
s_viewport_near = near;
s_viewport_far = far;
}
void func_8024CE74(s32 arg0, s32 arg1, s32 arg2, s32 arg3){
@@ -348,14 +350,14 @@ bool func_8024D9B0(Cube *cube) {
}
bool func_8024DB50(f32 arg0[3], f32 arg1) {
f32 sp3C[3];
f32 delta[3];
s32 i;
sp3C[0] = arg0[0] - viewportPosition[0];
sp3C[1] = arg0[1] - viewportPosition[1];
sp3C[2] = arg0[2] - viewportPosition[2];
delta[0] = arg0[0] - viewportPosition[0];
delta[1] = arg0[1] - viewportPosition[1];
delta[2] = arg0[2] - viewportPosition[2];
for(i = 0; i < 4; i++){
if(arg1 <= ml_dotProduct_vec3f(sp3C, D_80280ED0[i])){
if(arg1 <= ml_dotProduct_vec3f(delta, D_80280ED0[i])){
return FALSE;
}
}
@@ -392,20 +394,20 @@ Mtx *func_8024DD9C(void){
return &D_80280FD8;
}
f32 func_8024DDA8(void){
return D_80275D20;
f32 viewport_get_field_of_view(void){
return s_viewport_fovy;
}
void func_8024DDB4(f32 arg0){
D_80275D20 = arg0;
void viewport_set_field_of_view(f32 fovy){
s_viewport_fovy = fovy;
}
f32 func_8024DDC0(void){
return D_80275D24;
f32 viewport_get_aspect_ratio(void){
return s_viewport_aspect;
}
f32 func_8024DDCC(void){
return D_80275D28;
f32 viewport_get_near(void){
return s_viewport_near;
}
f32 func_8024DDD8(s32 arg0, f32 arg1){
@@ -413,16 +415,16 @@ f32 func_8024DDD8(s32 arg0, f32 arg1){
}
f32 func_8024DE1C(f32 arg0, f32 arg1, f32 arg2[3], f32 arg3[3]) {
f32 sp24;
f32 fovy_rad;
static f32 D_8028101C;
static f32 D_80281020;
static f32 D_80281024;
if ((D_80275D20 != D_8028101C) || (D_80275D28 != D_80281020)) {
sp24 = (D_80275D20 * M_PI) / 360.0;
D_80281024 = (500.0 + D_80275D28) / (((framebuffer_height / (f32)2) / sinf(sp24)) * cosf(sp24));
D_8028101C = D_80275D20;
D_80281020 = D_80275D28;
if ((s_viewport_fovy != D_8028101C) || (s_viewport_near != D_80281020)) {
fovy_rad = (s_viewport_fovy * M_PI) / 360.0;
D_80281024 = (500.0 + s_viewport_near) / (((framebuffer_height / (f32)2) / sinf(fovy_rad)) * cosf(fovy_rad));
D_8028101C = s_viewport_fovy;
D_80281020 = s_viewport_near;
}
arg0 = arg0 - (framebuffer_width / (f32)2);
arg1 = (framebuffer_height / (f32)2) - arg1;
@@ -431,7 +433,7 @@ f32 func_8024DE1C(f32 arg0, f32 arg1, f32 arg2[3], f32 arg3[3]) {
arg3[2] = viewportRotation[2];
arg2[0] = arg0 * D_80281024;
arg2[1] = arg1 * D_80281024;
arg2[2] = (-500.0 - D_80275D28);
arg2[2] = (-500.0 - s_viewport_near);
ml_vec3f_pitch_rotate_copy(arg2, arg2, arg3[0]);
ml_vec3f_yaw_rotate_copy(arg2, arg2, arg3[1]);
@@ -456,13 +458,13 @@ bool func_8024E030(f32 arg0[3], f32 *arg1)
f32 temp_f2_2;
f32 temp_f2;
f32 sp28;
sp28 = (D_80275D20 * 3.14159265358979323846) / 360.0;
sp28 = (s_viewport_fovy * M_PI) / 360.0;
sp34[0] = arg0[0] - viewportPosition[0];
sp34[1] = arg0[1] - viewportPosition[1];
sp34[2] = arg0[2] - viewportPosition[2];
ml_vec3f_yaw_rotate_copy(sp34, sp34, -viewportRotation[1]);
ml_vec3f_pitch_rotate_copy(sp34, sp34, -viewportRotation[0]);
if ((-D_80275D28) <= sp34[2]) {
if ((-s_viewport_near) <= sp34[2]) {
return 0;
}
temp_f2 = gu_sqrtf((sp34[1] * sp34[1]) + (sp34[2] * sp34[2])) * sinf(sp28);
@@ -480,8 +482,8 @@ bool func_8024E030(f32 arg0[3], f32 *arg1)
void func_8024E258(void){
s32 i, j;
viewport_getPosition(D_80281028);
viewport_getRotation(D_80281038);
viewport_get_position_vec3f(D_80281028);
viewport_get_rotation_vec3f(D_80281038);
func_8024D1EC(D_80281048, D_80281058, D_80281068, D_80281078);
func_8024C5A8(D_80281088);
for(i = 0; i < 4; i++){
@@ -493,8 +495,8 @@ void func_8024E258(void){
void func_8024E2FC(void){
s32 i, j;
viewport_setPosition(D_80281028);
viewport_setRotation(D_80281038);
viewport_set_position_vec3f(D_80281028);
viewport_set_rotation_vec3f(D_80281038);
func_8024D2B0(D_80281048, D_80281058, D_80281068, D_80281078);
ml_vec3f_copy(D_80280EA0, D_80281088);
for(i = 0; i < 4; i++){
@@ -505,10 +507,10 @@ void func_8024E2FC(void){
}
//moves the point(arg0) some distance (arg1) further away from the camera
void func_8024E3A8(f32 arg0[3], f32 arg1){
void func_8024E3A8(f32 arg0[3], f32 distance){
f32 sp1C[3];
ml_vec3f_diff_copy(sp1C, viewportPosition, arg0);
ml_vec3f_set_length_copy(sp1C, sp1C, arg1);
ml_vec3f_set_length_copy(sp1C, sp1C, distance);
arg0[0] += sp1C[0];
arg0[1] += sp1C[1];
arg0[2] += sp1C[2];

View File

@@ -1 +1 @@
unsigned long long D_80276E70 = 0xAB8D9F7781280783;
unsigned long long D_80276E70 = 0xAB8D9F7781280783;

View File

@@ -800,7 +800,7 @@ void func_80255A3C(void){
func_802E6820(1);
if(!func_802559A0())
func_802F542C();
printbuffer_defrag();
if(!func_802559A0()){
ml_defrag();

View File

@@ -1,4 +1,4 @@
#include <os_internal.h>
//not included in final rom, but __osThreadSave is here for some reason
OSThread __osThreadSave;
OSThread __osThreadSave;