From aa5ac0f8149c8bfad29ea1045de622cd18cf2ebb Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 27 Mar 2021 22:27:20 +1000 Subject: [PATCH] Decompile __vsDelta --- src/include/lib/lib_3d280.h | 1 - src/lib/lib_3d280.c | 40 +++++++++++++++------------------- src/lib/ultra/audio/csplayer.c | 18 +++++++-------- 3 files changed, 26 insertions(+), 33 deletions(-) diff --git a/src/include/lib/lib_3d280.h b/src/include/lib/lib_3d280.h index 4797872e4..3867acb32 100644 --- a/src/include/lib/lib_3d280.h +++ b/src/include/lib/lib_3d280.h @@ -11,7 +11,6 @@ u32 func0003d69c(void); u32 func0003d72c(void); u32 func0003d8a4(void); u32 func0003d9cc(void); -u32 func0003dad0(void); u32 func0003db14(void); void __resetPerfChanState(ALSeqPlayer *seqp, s32 chan); u32 func0003e2a0(void); diff --git a/src/lib/lib_3d280.c b/src/lib/lib_3d280.c index d71ea68e1..97ba3fe6a 100644 --- a/src/lib/lib_3d280.c +++ b/src/lib/lib_3d280.c @@ -680,29 +680,23 @@ glabel func0003d9cc /* 3dacc: 27bd0018 */ addiu $sp,$sp,0x18 ); -GLOBAL_ASM( -glabel func0003dad0 -/* 3dad0: 27bdfff8 */ addiu $sp,$sp,-8 -/* 3dad4: 8c8e0024 */ lw $t6,0x24($a0) -/* 3dad8: 01c57823 */ subu $t7,$t6,$a1 -/* 3dadc: afaf0004 */ sw $t7,0x4($sp) -/* 3dae0: 8fb80004 */ lw $t8,0x4($sp) -/* 3dae4: 07000005 */ bltz $t8,.L0003dafc -/* 3dae8: 00000000 */ nop -/* 3daec: 10000007 */ b .L0003db0c -/* 3daf0: 8fa20004 */ lw $v0,0x4($sp) -/* 3daf4: 10000003 */ b .L0003db04 -/* 3daf8: 00000000 */ nop -.L0003dafc: -/* 3dafc: 10000003 */ b .L0003db0c -/* 3db00: 240203e8 */ addiu $v0,$zero,0x3e8 -.L0003db04: -/* 3db04: 10000001 */ b .L0003db0c -/* 3db08: 00000000 */ nop -.L0003db0c: -/* 3db0c: 03e00008 */ jr $ra -/* 3db10: 27bd0008 */ addiu $sp,$sp,0x8 -); +ALMicroTime __vsDelta(ALVoiceState *vs, ALMicroTime t) +{ + /* + * If we are interrupting a previously set envelope segment, we + * need to recalculate the segment end time given the current + * time. Note: this routine assumes that the voice is currently + * playing. + */ + + s32 delta = vs->envEndTime - t; + + if (delta >= 0) { + return delta; + } else { + return AL_GAIN_CHANGE_TIME; + } +} GLOBAL_ASM( glabel func0003db14 diff --git a/src/lib/ultra/audio/csplayer.c b/src/lib/ultra/audio/csplayer.c index a91eca56e..9954c8d82 100644 --- a/src/lib/ultra/audio/csplayer.c +++ b/src/lib/ultra/audio/csplayer.c @@ -1124,7 +1124,7 @@ glabel __CSPVoiceHandler /* 34700: 00028400 */ sll $s0,$v0,0x10 /* 34704: 00108403 */ sra $s0,$s0,0x10 /* 34708: 8fa40058 */ lw $a0,0x58($sp) -/* 3470c: 0c00f6b4 */ jal func0003dad0 +/* 3470c: 0c00f6b4 */ jal __vsDelta /* 34710: 8d65001c */ lw $a1,0x1c($t3) /* 34714: 8fa40058 */ lw $a0,0x58($sp) /* 34718: 00408825 */ or $s1,$v0,$zero @@ -1281,7 +1281,7 @@ glabel __CSPVoiceHandler /* 3496c: 00028400 */ sll $s0,$v0,0x10 /* 34970: 00108403 */ sra $s0,$s0,0x10 /* 34974: 8fa40058 */ lw $a0,0x58($sp) -/* 34978: 0c00f6b4 */ jal func0003dad0 +/* 34978: 0c00f6b4 */ jal __vsDelta /* 3497c: 8d85001c */ lw $a1,0x1c($t4) /* 34980: 8fa40058 */ lw $a0,0x58($sp) /* 34984: 00408825 */ or $s1,$v0,$zero @@ -1697,7 +1697,7 @@ glabel func00034f0c /* 34f60: a7a2002a */ sh $v0,0x2a($sp) /* 34f64: 8faa0030 */ lw $t2,0x30($sp) /* 34f68: 8fa4002c */ lw $a0,0x2c($sp) -/* 34f6c: 0c00f6b4 */ jal func0003dad0 +/* 34f6c: 0c00f6b4 */ jal __vsDelta /* 34f70: 8d45001c */ lw $a1,0x1c($t2) /* 34f74: 8fa4002c */ lw $a0,0x2c($sp) /* 34f78: 00408025 */ or $s0,$v0,$zero @@ -2538,7 +2538,7 @@ glabel func00035110 /* 35bac: 00028c00 */ sll $s1,$v0,0x10 /* 35bb0: 00118c03 */ sra $s1,$s1,0x10 /* 35bb4: 8fa4009c */ lw $a0,0x9c($sp) -/* 35bb8: 0c00f6b4 */ jal func0003dad0 +/* 35bb8: 0c00f6b4 */ jal __vsDelta /* 35bbc: 8d45001c */ lw $a1,0x1c($t2) /* 35bc0: 8fa4009c */ lw $a0,0x9c($sp) /* 35bc4: 00408025 */ or $s0,$v0,$zero @@ -2568,7 +2568,7 @@ glabel func00035110 /* 35c20: 00028c00 */ sll $s1,$v0,0x10 /* 35c24: 00118c03 */ sra $s1,$s1,0x10 /* 35c28: 8fa400c8 */ lw $a0,0xc8($sp) -/* 35c2c: 0c00f6b4 */ jal func0003dad0 +/* 35c2c: 0c00f6b4 */ jal __vsDelta /* 35c30: 8de5001c */ lw $a1,0x1c($t7) /* 35c34: 8fa400c8 */ lw $a0,0xc8($sp) /* 35c38: 00408025 */ or $s0,$v0,$zero @@ -3077,7 +3077,7 @@ glabel func00035110 /* 36394: a7a200b6 */ sh $v0,0xb6($sp) /* 36398: 8faa00d0 */ lw $t2,0xd0($sp) /* 3639c: 8fa400c8 */ lw $a0,0xc8($sp) -/* 363a0: 0c00f6b4 */ jal func0003dad0 +/* 363a0: 0c00f6b4 */ jal __vsDelta /* 363a4: 8d45001c */ lw $a1,0x1c($t2) /* 363a8: 8fa400c8 */ lw $a0,0xc8($sp) /* 363ac: 00408025 */ or $s0,$v0,$zero @@ -4765,7 +4765,7 @@ glabel func00035110 /* 35bac: 00028c00 */ sll $s1,$v0,0x10 /* 35bb0: 00118c03 */ sra $s1,$s1,0x10 /* 35bb4: 8fa4009c */ lw $a0,0x9c($sp) -/* 35bb8: 0c00f6b4 */ jal func0003dad0 +/* 35bb8: 0c00f6b4 */ jal __vsDelta /* 35bbc: 8d45001c */ lw $a1,0x1c($t2) /* 35bc0: 8fa4009c */ lw $a0,0x9c($sp) /* 35bc4: 00408025 */ or $s0,$v0,$zero @@ -4795,7 +4795,7 @@ glabel func00035110 /* 35c20: 00028c00 */ sll $s1,$v0,0x10 /* 35c24: 00118c03 */ sra $s1,$s1,0x10 /* 35c28: 8fa400c8 */ lw $a0,0xc8($sp) -/* 35c2c: 0c00f6b4 */ jal func0003dad0 +/* 35c2c: 0c00f6b4 */ jal __vsDelta /* 35c30: 8de5001c */ lw $a1,0x1c($t7) /* 35c34: 8fa400c8 */ lw $a0,0xc8($sp) /* 35c38: 00408025 */ or $s0,$v0,$zero @@ -5304,7 +5304,7 @@ glabel func00035110 /* 36394: a7a200b6 */ sh $v0,0xb6($sp) /* 36398: 8faa00d0 */ lw $t2,0xd0($sp) /* 3639c: 8fa400c8 */ lw $a0,0xc8($sp) -/* 363a0: 0c00f6b4 */ jal func0003dad0 +/* 363a0: 0c00f6b4 */ jal __vsDelta /* 363a4: 8d45001c */ lw $a1,0x1c($t2) /* 363a8: 8fa400c8 */ lw $a0,0xc8($sp) /* 363ac: 00408025 */ or $s0,$v0,$zero