From 209a9aeb161429849bd6ec25b4ecd997d4496da9 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 30 Apr 2021 11:19:09 +1000 Subject: [PATCH] Decompile modelSetDistanceChecksDisabled --- src/game/chr/chr.c | 12 ++++++------ src/include/data.h | 4 ++-- src/include/lib/model.h | 3 +-- src/lib/lib_184d0.c | 12 ++++++------ src/lib/model.c | 24 +++++++++++------------- 5 files changed, 26 insertions(+), 29 deletions(-) diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index 5d2ba5e0c..d8475b7aa 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -7876,7 +7876,7 @@ glabel var7f1a99ecpf /* f023ea8: 10400004 */ beqz $v0,.PF0f023ebc /* f023eac: 3c013ea0 */ lui $at,0x3ea0 /* f023eb0: 44816000 */ mtc1 $at,$f12 -/* f023eb4: 0c0068a7 */ jal func0001a50c +/* f023eb4: 0c0068a7 */ jal modelSetDistanceScale /* f023eb8: 00000000 */ nop .PF0f023ebc: /* f023ebc: 3c0a7f02 */ lui $t2,0x7f02 @@ -8185,7 +8185,7 @@ glabel var7f1a99ecpf .PF0f024334: /* f024334: ac20ec74 */ sw $zero,-0x138c($at) /* f024338: 3c018006 */ lui $at,0x8006 -/* f02433c: 0c0068a7 */ jal func0001a50c +/* f02433c: 0c0068a7 */ jal modelSetDistanceScale /* f024340: c42c26c8 */ lwc1 $f12,0x26c8($at) /* f024344: 8fab01f0 */ lw $t3,0x1f0($sp) /* f024348: 260400f8 */ addiu $a0,$s0,0xf8 @@ -9314,7 +9314,7 @@ glabel var7f1a87d8 /* f023d84: 10400004 */ beqz $v0,.L0f023d98 /* f023d88: 3c013ea0 */ lui $at,0x3ea0 /* f023d8c: 44816000 */ mtc1 $at,$f12 -/* f023d90: 0c006943 */ jal func0001a50c +/* f023d90: 0c006943 */ jal modelSetDistanceScale /* f023d94: 00000000 */ nop .L0f023d98: /* f023d98: 3c0c7f02 */ lui $t4,%hi(func0f02152c) @@ -9623,7 +9623,7 @@ glabel var7f1a87d8 .L0f024210: /* f024210: ac20efcc */ sw $zero,%lo(var8005efcc)($at) /* f024214: 3c018006 */ lui $at,%hi(var800629e8) -/* f024218: 0c006943 */ jal func0001a50c +/* f024218: 0c006943 */ jal modelSetDistanceScale /* f02421c: c42c29e8 */ lwc1 $f12,%lo(var800629e8)($at) /* f024220: 8fad01f0 */ lw $t5,0x1f0($sp) /* f024224: 260400f8 */ addiu $a0,$s0,0xf8 @@ -10693,7 +10693,7 @@ glabel var7f1a87d8 /* f02379c: 10400004 */ beqz $v0,.NB0f0237b0 /* f0237a0: 3c013ea0 */ lui $at,0x3ea0 /* f0237a4: 44816000 */ mtc1 $at,$f12 -/* f0237a8: 0c006d9f */ jal func0001a50c +/* f0237a8: 0c006d9f */ jal modelSetDistanceScale /* f0237ac: 00000000 */ sll $zero,$zero,0x0 .NB0f0237b0: /* f0237b0: 3c0e7f02 */ lui $t6,0x7f02 @@ -11002,7 +11002,7 @@ glabel var7f1a87d8 .NB0f023c28: /* f023c28: ac20139c */ sw $zero,0x139c($at) /* f023c2c: 3c018006 */ lui $at,0x8006 -/* f023c30: 0c006d9f */ jal func0001a50c +/* f023c30: 0c006d9f */ jal modelSetDistanceScale /* f023c34: c42c4ef8 */ lwc1 $f12,0x4ef8($at) /* f023c38: 8faa01f0 */ lw $t2,0x1f0($sp) /* f023c3c: 260400f8 */ addiu $a0,$s0,0xf8 diff --git a/src/include/data.h b/src/include/data.h index 9bd4a37a2..b14fad82b 100644 --- a/src/include/data.h +++ b/src/include/data.h @@ -55,8 +55,8 @@ extern u32 var8005ef40; extern u32 var8005ef5c; extern u32 var8005ef7c; extern u32 var8005ef90; -extern u32 var8005efb4; -extern f32 var8005efb8; +extern bool g_ModelDistanceDisabled; +extern f32 g_ModelDistanceScale; extern bool var8005efbc; extern u32 var8005efc0; extern bool (*var8005efc4)(struct model *model, struct modelnode *node); diff --git a/src/include/lib/model.h b/src/include/lib/model.h index 669a3a1e0..0ff0364cb 100644 --- a/src/include/lib/model.h +++ b/src/include/lib/model.h @@ -4,8 +4,7 @@ #include "data.h" #include "types.h" -u32 func0001a500(void); -void func0001a50c(f32 value); +void modelSetDistanceScale(f32 value); void func0001a518(void *callback); s32 func0001a524(struct modelnode *node, s32 arg1); Mtxf *func0001a5cc(struct model *model, struct modelnode *node, s32 arg2); diff --git a/src/lib/lib_184d0.c b/src/lib/lib_184d0.c index f8866cd1b..8e06804a5 100644 --- a/src/lib/lib_184d0.c +++ b/src/lib/lib_184d0.c @@ -50,8 +50,8 @@ u32 var8005efb0 = 0x00000000; u32 var8005efb0_2 = 0; #endif -u32 var8005efb4 = 0x00000000; -f32 var8005efb8 = 1; +bool g_ModelDistanceDisabled = false; +f32 g_ModelDistanceScale = 1; bool var8005efbc = false; u32 var8005efc0 = 0x00000000; bool (*var8005efc4)(struct model *model, struct modelnode *node) = NULL; @@ -821,8 +821,8 @@ glabel func00018680 /* 1900c: 0000000c */ syscall /* 19010: 0c006897 */ jal func0001a25c /* 19014: 001c4020 */ add $t0,$zero,$gp -/* 19018: 3c0a8006 */ lui $t2,%hi(var8005efb4) -/* 1901c: 254aefb4 */ addiu $t2,$t2,%lo(var8005efb4) +/* 19018: 3c0a8006 */ lui $t2,%hi(g_ModelDistanceDisabled) +/* 1901c: 254aefb4 */ addiu $t2,$t2,%lo(g_ModelDistanceDisabled) /* 19020: 0c006747 */ jal func00019d1c /* 19024: 8f890004 */ lw $t1,0x4($gp) /* 19028: 8d4a0000 */ lw $t2,0x0($t2) @@ -837,8 +837,8 @@ glabel func00018680 /* 1904c: 46000007 */ neg.s $f0,$f0 /* 19050: c5411774 */ lwc1 $f1,0x1774($t2) /* 19054: 46010002 */ mul.s $f0,$f0,$f1 -/* 19058: 3c088006 */ lui $t0,%hi(var8005efb8) -/* 1905c: 2508efb8 */ addiu $t0,$t0,%lo(var8005efb8) +/* 19058: 3c088006 */ lui $t0,%hi(g_ModelDistanceScale) +/* 1905c: 2508efb8 */ addiu $t0,$t0,%lo(g_ModelDistanceScale) /* 19060: c5010000 */ lwc1 $f1,0x0($t0) /* 19064: 46010002 */ mul.s $f0,$f0,$f1 .L00019068: diff --git a/src/lib/model.c b/src/lib/model.c index 3c6958f7a..ea4d032fa 100644 --- a/src/lib/model.c +++ b/src/lib/model.c @@ -18,16 +18,14 @@ #include "data.h" #include "types.h" -GLOBAL_ASM( -glabel func0001a500 -/* 1a500: 3c018006 */ lui $at,%hi(var8005efb4) -/* 1a504: 03e00008 */ jr $ra -/* 1a508: ac24efb4 */ sw $a0,%lo(var8005efb4)($at) -); - -void func0001a50c(f32 value) +void modelSetDistanceChecksDisabled(bool disabled) { - var8005efb8 = value; + g_ModelDistanceDisabled = disabled; +} + +void modelSetDistanceScale(f32 scale) +{ + g_ModelDistanceScale = scale; } void func0001a518(void *callback) @@ -2748,7 +2746,7 @@ glabel func0001c5b4 ); /** - * For a near/far node, set its target to visible based on distance. + * For a distance node, set its target to visible based on distance. */ void func0001c664(struct model *model, struct modelnode *node) { @@ -2757,13 +2755,13 @@ void func0001c664(struct model *model, struct modelnode *node) Mtxf *mtx = func0001a5cc(model, node, 0); f32 distance; - if (var8005efb4 || !mtx) { + if (g_ModelDistanceDisabled || !mtx) { distance = 0; } else { distance = -mtx->m[3][2] * currentPlayerGetLodScaleZ(); - if (var8005efb8 != 1) { - distance *= var8005efb8; + if (g_ModelDistanceScale != 1) { + distance *= g_ModelDistanceScale; } }