From cf961527146e5d6201c1c1819dabc3fff91dd0b1 Mon Sep 17 00:00:00 2001 From: Mittenshugg Date: Tue, 11 Aug 2020 12:13:28 -0500 Subject: [PATCH 1/8] func_80001BC0 --- .../unknown_001050/func_80001BC0.s | 20 ------------------- .../{func_80002660.s => audioNewThread.s} | 2 +- asm/non_matchings/unknown_066AA0/D_8006C330.s | 2 +- src/unknown_001050.c | 11 +++++----- src/unknown_003260.c | 8 ++++---- src/unknown_066AA0.c | 2 +- 6 files changed, 13 insertions(+), 32 deletions(-) delete mode 100644 asm/non_matchings/unknown_001050/func_80001BC0.s rename asm/non_matchings/unknown_003260/{func_80002660.s => audioNewThread.s} (99%) diff --git a/asm/non_matchings/unknown_001050/func_80001BC0.s b/asm/non_matchings/unknown_001050/func_80001BC0.s deleted file mode 100644 index 226515e4..00000000 --- a/asm/non_matchings/unknown_001050/func_80001BC0.s +++ /dev/null @@ -1,20 +0,0 @@ -glabel func_80001BC0 -/* 0027C0 80001BC0 3C028011 */ lui $v0, %hi(D_80115D05) # $v0, 0x8011 -/* 0027C4 80001BC4 240E0001 */ li $t6, 1 -/* 0027C8 80001BC8 3C01800E */ lui $at, %hi(D_800DC644) # $at, 0x800e -/* 0027CC 80001BCC 24425D05 */ addiu $v0, %lo(D_80115D05) # addiu $v0, $v0, 0x5d05 -/* 0027D0 80001BD0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0027D4 80001BD4 00803025 */ move $a2, $a0 -/* 0027D8 80001BD8 A02EC644 */ sb $t6, %lo(D_800DC644)($at) -/* 0027DC 80001BDC A0460000 */ sb $a2, ($v0) -/* 0027E0 80001BE0 3C05800E */ lui $a1, %hi(gSndFxPlayer) # $a1, 0x800e -/* 0027E4 80001BE4 AFBF0014 */ sw $ra, 0x14($sp) -/* 0027E8 80001BE8 AFA40018 */ sw $a0, 0x18($sp) -/* 0027EC 80001BEC 8CA5C634 */ lw $a1, %lo(gSndFxPlayer)($a1) -/* 0027F0 80001BF0 0C0008AF */ jal func_800022BC -/* 0027F4 80001BF4 30C400FF */ andi $a0, $a2, 0xff -/* 0027F8 80001BF8 8FBF0014 */ lw $ra, 0x14($sp) -/* 0027FC 80001BFC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 002800 80001C00 03E00008 */ jr $ra -/* 002804 80001C04 00000000 */ nop - diff --git a/asm/non_matchings/unknown_003260/func_80002660.s b/asm/non_matchings/unknown_003260/audioNewThread.s similarity index 99% rename from asm/non_matchings/unknown_003260/func_80002660.s rename to asm/non_matchings/unknown_003260/audioNewThread.s index 48fcff8d..8949fd01 100644 --- a/asm/non_matchings/unknown_003260/func_80002660.s +++ b/asm/non_matchings/unknown_003260/audioNewThread.s @@ -1,4 +1,4 @@ -glabel func_80002660 +glabel audioNewThread /* 003260 80002660 27BDFFB8 */ addiu $sp, $sp, -0x48 /* 003264 80002664 3C018011 */ lui $at, %hi(D_80115F90) # $at, 0x8011 /* 003268 80002668 AFBF0034 */ sw $ra, 0x34($sp) diff --git a/asm/non_matchings/unknown_066AA0/D_8006C330.s b/asm/non_matchings/unknown_066AA0/D_8006C330.s index 4fb51ea1..7eb2bcd2 100644 --- a/asm/non_matchings/unknown_066AA0/D_8006C330.s +++ b/asm/non_matchings/unknown_066AA0/D_8006C330.s @@ -21,7 +21,7 @@ glabel D_8006C330 /* 06CF78 8006C378 00000000 */ nop /* 06CF7C 8006C37C 0C01C9C2 */ jal func_80072708 /* 06CF80 8006C380 00000000 */ nop -/* 06CF84 8006C384 0C000A9D */ jal func_80002A74 +/* 06CF84 8006C384 0C000A9D */ jal audioStopThread /* 06CF88 8006C388 00000000 */ nop /* 06CF8C 8006C38C 0C031CEF */ jal func_800C73BC /* 06CF90 8006C390 00000000 */ nop diff --git a/src/unknown_001050.c b/src/unknown_001050.c index 50f2b37d..b9146c7b 100644 --- a/src/unknown_001050.c +++ b/src/unknown_001050.c @@ -184,7 +184,7 @@ void audio_init(u32 arg0){ mConfig.unk1d = 2; mConfig.unk18 = 0; mConfig.heap = &gALHeap; - func_80002660(&mConfig, 12, arg0); + audioNewThread(&mConfig, 12, arg0); gMusicPlayer = func_80002224(24, 120); func_8000B010(gMusicPlayer, 18); gSndFxPlayer = func_80002224(16, 50); @@ -196,7 +196,7 @@ void audio_init(u32 arg0){ audConfig.unk10 = 1; audConfig.hp = &gALHeap; func_800031C0(&audConfig); - func_80002A50(); + audioStartThread(); func_80000968(0); func_80071140(reg_s2); func_8000318C(10); @@ -644,9 +644,10 @@ void sfxSetPan(ALPan pan){ return; } - -GLOBAL_ASM("asm/non_matchings/unknown_001050/func_80001BC0.s") - +void func_80001BC0(u8 arg0){ + D_800DC644 = 1; + func_800022BC( D_80115D05 = arg0, gSndFxPlayer); +} u32 func_80001C08(void){ if(D_80115D05 && D_800DC644 && (gSndFxPlayer->state == AL_PLAYING) ){ diff --git a/src/unknown_003260.c b/src/unknown_003260.c index d0ff13bf..618cb96a 100644 --- a/src/unknown_003260.c +++ b/src/unknown_003260.c @@ -31,9 +31,9 @@ extern OSMesg D_80119B08; extern f32 D_80126170; #if 1 -GLOBAL_ASM("asm/non_matchings/unknown_003260/func_80002660.s") +GLOBAL_ASM("asm/non_matchings/unknown_003260/audioNewThread.s") #else - void func_80002660(ALSynConfig* c, OSPri p, s32 arg2){ + void audioNewThread(ALSynConfig* c, OSPri p, s32 arg2){ D_80115F90 = arg2; D_80115F94 = c->heap; c->dmaproc = &D_80003008; @@ -49,11 +49,11 @@ GLOBAL_ASM("asm/non_matchings/unknown_003260/func_80002660.s") } #endif -void func_80002A50(void) { +void audioStartThread(void) { osStartThread(&D_80115FB0); } -void func_80002A74(void) { +void audioStopThread(void) { osStopThread(&D_80115FB0); } diff --git a/src/unknown_066AA0.c b/src/unknown_066AA0.c index c31fd0a0..81f4f63f 100644 --- a/src/unknown_066AA0.c +++ b/src/unknown_066AA0.c @@ -1411,7 +1411,7 @@ void func_8006C330(s32 arg0) { while(1) { if (func_8006EAC0() != 0) { func_80072708(); - func_80002A74(); + audioStopThread(); func_800C73BC(); __osSpSetStatus(0xAAAA82); func_800CD250(0x1D6); From 131afb89e899383e024d43dbe26944a6fbe84866 Mon Sep 17 00:00:00 2001 From: Mittenshugg Date: Tue, 11 Aug 2020 13:03:15 -0500 Subject: [PATCH 2/8] c: musicSetVolSlider --- .../unknown_001050/func_80001A3C.s | 47 ------------------- .../unknown_080500/MenuAudioOptionsLoop.s | 2 +- src/unknown_001050.c | 13 ++++- 3 files changed, 12 insertions(+), 50 deletions(-) delete mode 100644 asm/non_matchings/unknown_001050/func_80001A3C.s diff --git a/asm/non_matchings/unknown_001050/func_80001A3C.s b/asm/non_matchings/unknown_001050/func_80001A3C.s deleted file mode 100644 index 7482d87a..00000000 --- a/asm/non_matchings/unknown_001050/func_80001A3C.s +++ /dev/null @@ -1,47 +0,0 @@ -glabel func_80001A3C -/* 00263C 80001A3C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 002640 80001A40 2C810101 */ sltiu $at, $a0, 0x101 -/* 002644 80001A44 AFBF0014 */ sw $ra, 0x14($sp) -/* 002648 80001A48 14200002 */ bnez $at, .L80001A54 -/* 00264C 80001A4C 00803025 */ move $a2, $a0 -/* 002650 80001A50 24060100 */ li $a2, 256 -.L80001A54: -/* 002654 80001A54 3C02800E */ lui $v0, %hi(musicVolumeSliderPercentage) # $v0, 0x800e -/* 002658 80001A58 2442C654 */ addiu $v0, %lo(musicVolumeSliderPercentage) # addiu $v0, $v0, -0x39ac -/* 00265C 80001A5C AC460000 */ sw $a2, ($v0) -/* 002660 80001A60 3C0E800E */ lui $t6, %hi(D_800DC638) # $t6, 0x800e -/* 002664 80001A64 91CEC638 */ lbu $t6, %lo(D_800DC638)($t6) -/* 002668 80001A68 3C19800E */ lui $t9, %hi(D_800DC66C) # $t9, 0x800e -/* 00266C 80001A6C 01C60019 */ multu $t6, $a2 -/* 002670 80001A70 8F39C66C */ lw $t9, %lo(D_800DC66C)($t9) -/* 002674 80001A74 3C01800E */ lui $at, %hi(D_800DC650) # $at, 0x800e -/* 002678 80001A78 C428C650 */ lwc1 $f8, %lo(D_800DC650)($at) -/* 00267C 80001A7C 44995000 */ mtc1 $t9, $f10 -/* 002680 80001A80 3C04800E */ lui $a0, %hi(gMusicPlayer) # $a0, 0x800e -/* 002684 80001A84 46805420 */ cvt.s.w $f16, $f10 -/* 002688 80001A88 8C84C630 */ lw $a0, %lo(gMusicPlayer)($a0) -/* 00268C 80001A8C 0000C012 */ mflo $t8 -/* 002690 80001A90 44982000 */ mtc1 $t8, $f4 -/* 002694 80001A94 00000000 */ nop -/* 002698 80001A98 468021A0 */ cvt.s.w $f6, $f4 -/* 00269C 80001A9C 46083002 */ mul.s $f0, $f6, $f8 -/* 0026A0 80001AA0 00000000 */ nop -/* 0026A4 80001AA4 46008482 */ mul.s $f18, $f16, $f0 -/* 0026A8 80001AA8 4448F800 */ cfc1 $t0, $31 -/* 0026AC 80001AAC 00000000 */ nop -/* 0026B0 80001AB0 35010003 */ ori $at, $t0, 3 -/* 0026B4 80001AB4 38210002 */ xori $at, $at, 2 -/* 0026B8 80001AB8 44C1F800 */ ctc1 $at, $31 -/* 0026BC 80001ABC 00000000 */ nop -/* 0026C0 80001AC0 46009124 */ cvt.w.s $f4, $f18 -/* 0026C4 80001AC4 44052000 */ mfc1 $a1, $f4 -/* 0026C8 80001AC8 44C8F800 */ ctc1 $t0, $31 -/* 0026CC 80001ACC 00054A03 */ sra $t1, $a1, 8 -/* 0026D0 80001AD0 00095400 */ sll $t2, $t1, 0x10 -/* 0026D4 80001AD4 0C031E14 */ jal alCSPSetVol -/* 0026D8 80001AD8 000A2C03 */ sra $a1, $t2, 0x10 -/* 0026DC 80001ADC 8FBF0014 */ lw $ra, 0x14($sp) -/* 0026E0 80001AE0 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0026E4 80001AE4 03E00008 */ jr $ra -/* 0026E8 80001AE8 00000000 */ nop - diff --git a/asm/non_matchings/unknown_080500/MenuAudioOptionsLoop.s b/asm/non_matchings/unknown_080500/MenuAudioOptionsLoop.s index ce919b4e..f5921d81 100644 --- a/asm/non_matchings/unknown_080500/MenuAudioOptionsLoop.s +++ b/asm/non_matchings/unknown_080500/MenuAudioOptionsLoop.s @@ -242,7 +242,7 @@ glabel MenuAudioOptionsLoop /* 085BD8 80084FD8 24020100 */ li $v0, 256 /* 085BDC 80084FDC AC620000 */ sw $v0, ($v1) .L80084FE0: -/* 085BE0 80084FE0 0C00068F */ jal func_80001A3C +/* 085BE0 80084FE0 0C00068F */ jal musicSetVolSlider /* 085BE4 80084FE4 00402025 */ move $a0, $v0 /* 085BE8 80084FE8 0C000572 */ jal musicIsPlaying /* 085BEC 80084FEC 00000000 */ nop diff --git a/src/unknown_001050.c b/src/unknown_001050.c index b9146c7b..553c38ad 100644 --- a/src/unknown_001050.c +++ b/src/unknown_001050.c @@ -621,7 +621,15 @@ u8 func_80001980(void) { GLOBAL_ASM("asm/non_matchings/unknown_001050/musicSetRelativeVolume.s") -GLOBAL_ASM("asm/non_matchings/unknown_001050/func_80001A3C.s") + +void musicSetVolSlider(u32 arg0){ + f32 normalized_vol; + + arg0 = (arg0 < 0x101)?arg0:256; + musicVolumeSliderPercentage = arg0; + normalized_vol = musicVolumeSliderPercentage*D_800DC638*D_800DC650; + alCSPSetVol(gMusicPlayer, (s16)((s32)(D_800DC66C*normalized_vol)>>8)); +} u8 func_80001AEC(void) { return D_800DC638; @@ -671,7 +679,8 @@ u16 func_80001CB8(u16 arg0) { } return D_80115D18[arg0].unk6; } -void func_80001D04(u16, void*); + + GLOBAL_ASM("asm/non_matchings/unknown_001050/func_80001D04.s") From fe916648799d3270b185fa1d2f5143e1fb2a219d Mon Sep 17 00:00:00 2001 From: Mittenshugg Date: Tue, 11 Aug 2020 13:15:20 -0500 Subject: [PATCH 3/8] c: musicSetRelativeVolume --- .../unknown_001050/musicSetRelativeVolume.s | 45 ------------------- .../unknown_080500/MenuTitleScreenInit.s | 2 +- data/dkr.data.s | 2 +- src/unknown_001050.c | 40 ++++++++++------- undefined_syms.txt | 2 +- 5 files changed, 28 insertions(+), 63 deletions(-) delete mode 100644 asm/non_matchings/unknown_001050/musicSetRelativeVolume.s diff --git a/asm/non_matchings/unknown_001050/musicSetRelativeVolume.s b/asm/non_matchings/unknown_001050/musicSetRelativeVolume.s deleted file mode 100644 index 752be705..00000000 --- a/asm/non_matchings/unknown_001050/musicSetRelativeVolume.s +++ /dev/null @@ -1,45 +0,0 @@ -glabel musicSetRelativeVolume -/* 002590 80001990 3C02800E */ lui $v0, %hi(D_800DC638) # $v0, 0x800e -/* 002594 80001994 2442C638 */ addiu $v0, %lo(D_800DC638) # addiu $v0, $v0, -0x39c8 -/* 002598 80001998 00803025 */ move $a2, $a0 -/* 00259C 8000199C A0460000 */ sb $a2, ($v0) -/* 0025A0 800019A0 3C0F800E */ lui $t7, %hi(musicVolumeSliderPercentage) # $t7, 0x800e -/* 0025A4 800019A4 8DEFC654 */ lw $t7, %lo(musicVolumeSliderPercentage)($t7) -/* 0025A8 800019A8 30CE00FF */ andi $t6, $a2, 0xff -/* 0025AC 800019AC 01CF0019 */ multu $t6, $t7 -/* 0025B0 800019B0 3C19800E */ lui $t9, %hi(D_800DC66C) # $t9, 0x800e -/* 0025B4 800019B4 8F39C66C */ lw $t9, %lo(D_800DC66C)($t9) -/* 0025B8 800019B8 3C01800E */ lui $at, %hi(D_800DC650) # $at, 0x800e -/* 0025BC 800019BC C428C650 */ lwc1 $f8, %lo(D_800DC650)($at) -/* 0025C0 800019C0 44995000 */ mtc1 $t9, $f10 -/* 0025C4 800019C4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0025C8 800019C8 46805420 */ cvt.s.w $f16, $f10 -/* 0025CC 800019CC AFA40018 */ sw $a0, 0x18($sp) -/* 0025D0 800019D0 3C04800E */ lui $a0, %hi(gMusicPlayer) # $a0, 0x800e -/* 0025D4 800019D4 AFBF0014 */ sw $ra, 0x14($sp) -/* 0025D8 800019D8 8C84C630 */ lw $a0, %lo(gMusicPlayer)($a0) -/* 0025DC 800019DC 0000C012 */ mflo $t8 -/* 0025E0 800019E0 44982000 */ mtc1 $t8, $f4 -/* 0025E4 800019E4 00000000 */ nop -/* 0025E8 800019E8 468021A0 */ cvt.s.w $f6, $f4 -/* 0025EC 800019EC 46083002 */ mul.s $f0, $f6, $f8 -/* 0025F0 800019F0 00000000 */ nop -/* 0025F4 800019F4 46008482 */ mul.s $f18, $f16, $f0 -/* 0025F8 800019F8 4448F800 */ cfc1 $t0, $31 -/* 0025FC 800019FC 00000000 */ nop -/* 002600 80001A00 35010003 */ ori $at, $t0, 3 -/* 002604 80001A04 38210002 */ xori $at, $at, 2 -/* 002608 80001A08 44C1F800 */ ctc1 $at, $31 -/* 00260C 80001A0C 00000000 */ nop -/* 002610 80001A10 46009124 */ cvt.w.s $f4, $f18 -/* 002614 80001A14 44052000 */ mfc1 $a1, $f4 -/* 002618 80001A18 44C8F800 */ ctc1 $t0, $31 -/* 00261C 80001A1C 00054A03 */ sra $t1, $a1, 8 -/* 002620 80001A20 00095400 */ sll $t2, $t1, 0x10 -/* 002624 80001A24 0C031E14 */ jal alCSPSetVol -/* 002628 80001A28 000A2C03 */ sra $a1, $t2, 0x10 -/* 00262C 80001A2C 8FBF0014 */ lw $ra, 0x14($sp) -/* 002630 80001A30 27BD0018 */ addiu $sp, $sp, 0x18 -/* 002634 80001A34 03E00008 */ jr $ra -/* 002638 80001A38 00000000 */ nop - diff --git a/asm/non_matchings/unknown_080500/MenuTitleScreenInit.s b/asm/non_matchings/unknown_080500/MenuTitleScreenInit.s index 06eb5af9..adef7ec6 100644 --- a/asm/non_matchings/unknown_080500/MenuTitleScreenInit.s +++ b/asm/non_matchings/unknown_080500/MenuTitleScreenInit.s @@ -19,7 +19,7 @@ glabel MenuTitleScreenInit /* 084180 80083580 AC2FF4BC */ sw $t7, %lo(D_800DF4BC)($at) /* 084184 80083584 0C0002CD */ jal func_80000B34 /* 084188 80083588 24040001 */ li $a0, 1 -/* 08418C 8008358C 0C0006BB */ jal func_80001AEC +/* 08418C 8008358C 0C0006BB */ jal musicGetRelativeVolume /* 084190 80083590 00000000 */ nop /* 084194 80083594 3C03800E */ lui $v1, %hi(D_800DF458) # $v1, 0x800e /* 084198 80083598 3C01800E */ lui $at, %hi(D_800DF760) # $at, 0x800e diff --git a/data/dkr.data.s b/data/dkr.data.s index 30c6b654..5806f731 100644 --- a/data/dkr.data.s +++ b/data/dkr.data.s @@ -12,7 +12,7 @@ glabel gMusicPlayer glabel gSndFxPlayer .word 0x00000000 -glabel D_800DC638 +glabel musicRelativeVolume .word 0x7F000000 glabel D_800DC63C diff --git a/src/unknown_001050.c b/src/unknown_001050.c index 553c38ad..7f3cde6f 100644 --- a/src/unknown_001050.c +++ b/src/unknown_001050.c @@ -24,7 +24,7 @@ typedef struct unk800DC630 { extern ALCSPlayer* gMusicPlayer; extern ALCSPlayer* gSndFxPlayer; -extern u8 D_800DC638; +extern u8 musicRelativeVolume; extern u8 D_800DC63C; extern u8 D_800DC640; extern u8 D_800DC644; @@ -218,7 +218,7 @@ void func_80000890(u8 arg0){ D_80115F78 = arg0; if(D_80115F78 == 0){ D_800DC66C = 256; - musicSetRelativeVolume(D_800DC638); + musicSetRelativeVolume(musicRelativeVolume); func_80004A60(0,D_800DC66C*128-1); func_80004A60(1,D_800DC66C*128-1); func_80004A60(2,D_800DC66C*128-1); @@ -236,7 +236,7 @@ void func_80000968(s32 arg0) { func_80004A60(1, 0x7FFF); func_80004A60(2, 0); func_80004A60(4, 0); - alCSPSetVol(gMusicPlayer, (s16) (D_800DC638 * musicVolumeSliderPercentage >> 2)); + alCSPSetVol(gMusicPlayer, (s16) (musicRelativeVolume * musicVolumeSliderPercentage >> 2)); alCSPSetVol(gSndFxPlayer, 0); break; case 2: @@ -256,7 +256,7 @@ void func_80000968(s32 arg0) { func_80004A60(1, 0x7FFF); func_80004A60(2, 0x7FFF); func_80004A60(4, 0x7FFF); - alCSPSetVol(gMusicPlayer, (s16) (D_800DC638 * musicVolumeSliderPercentage)); + alCSPSetVol(gMusicPlayer, (s16) (musicRelativeVolume * musicVolumeSliderPercentage)); alCSPSetVol(gSndFxPlayer, (s16) (sfxVolumeSliderPercentage() * D_800DC63C)); break; } @@ -276,7 +276,7 @@ void func_800022BC(u8, ALCSPlayer*); void func_80000B34(u8 arg0) { if (D_800DC648 == 0 && musicVolumeSliderPercentage != 0) { D_80115D04 = arg0; - D_800DC638 = 0x7F; + musicRelativeVolume = 0x7F; if (D_800DC640 != 0) { func_800022BC(D_80115D04, gMusicPlayer); } @@ -321,7 +321,7 @@ void func_80000CBC(void) { D_80115D38 = 0; D_80115D3C = 0; D_800DC650 = 1.0f; - musicSetRelativeVolume(D_800DC638); + musicSetRelativeVolume(musicRelativeVolume); } void func_80001D04(u16,void*); @@ -340,7 +340,7 @@ void func_80000D00(u8 arg0){ D_80115D3C = 0; D_800DC650 = 1.0f; } - musicSetRelativeVolume(D_800DC638); + musicSetRelativeVolume(musicRelativeVolume); }else if(D_80115D3C < 0) { D_80115D38 -= arg0; @@ -350,7 +350,7 @@ void func_80000D00(u8 arg0){ D_80115D3C = 0; D_800DC650 = 0.0f; } - musicSetRelativeVolume(D_800DC638); + musicSetRelativeVolume(musicRelativeVolume); } if(D_800DC658 > 0){ @@ -619,20 +619,30 @@ u8 func_80001980(void) { return D_80115D05; } - +#if 0 GLOBAL_ASM("asm/non_matchings/unknown_001050/musicSetRelativeVolume.s") +#else +void musicSetRelativeVolume(u8 vol){ + f32 normalized_vol; -void musicSetVolSlider(u32 arg0){ + musicRelativeVolume = vol; + normalized_vol = musicVolumeSliderPercentage*musicRelativeVolume*D_800DC650; + alCSPSetVol(gMusicPlayer, (s16)((s32)(D_800DC66C*normalized_vol)>>8)); +} +#endif + + +void musicSetVolSlider(u32 slider_val){ f32 normalized_vol; - arg0 = (arg0 < 0x101)?arg0:256; - musicVolumeSliderPercentage = arg0; - normalized_vol = musicVolumeSliderPercentage*D_800DC638*D_800DC650; + slider_val = (slider_val < 0x101)?slider_val:256; + musicVolumeSliderPercentage = slider_val; + normalized_vol = musicVolumeSliderPercentage*musicRelativeVolume*D_800DC650; alCSPSetVol(gMusicPlayer, (s16)((s32)(D_800DC66C*normalized_vol)>>8)); } -u8 func_80001AEC(void) { - return D_800DC638; +u8 musicGetRelativeVolume(void) { + return musicRelativeVolume; } s32 musicGetVolSliderPercentage(void) { diff --git a/undefined_syms.txt b/undefined_syms.txt index 74988c59..688a7a33 100755 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -73,7 +73,7 @@ D_800D9790 = 0x800D9790; D_800DA970 = 0x800DA970; gMusicPlayer = 0x800DC630; gSndFxPlayer = 0x800DC634; -D_800DC638 = 0x800DC638; +musicRelativeVolume = 0x800DC638; D_800DC63C = 0x800DC63C; D_800DC640 = 0x800DC640; D_800DC644 = 0x800DC644; From 1ae00a905c8b8e83cc3a27a6659d3f6dd28a7ab6 Mon Sep 17 00:00:00 2001 From: Mittenshugg Date: Tue, 11 Aug 2020 13:43:45 -0500 Subject: [PATCH 4/8] c: musicSetTempo --- .../unknown_001050/musicSetTempo.s | 36 ------------------- .../unknown_001050/sfxSetTempo.s | 30 ---------------- src/unknown_001050.c | 33 +++++++++++------ 3 files changed, 23 insertions(+), 76 deletions(-) delete mode 100644 asm/non_matchings/unknown_001050/musicSetTempo.s delete mode 100644 asm/non_matchings/unknown_001050/sfxSetTempo.s diff --git a/asm/non_matchings/unknown_001050/musicSetTempo.s b/asm/non_matchings/unknown_001050/musicSetTempo.s deleted file mode 100644 index f1c15839..00000000 --- a/asm/non_matchings/unknown_001050/musicSetTempo.s +++ /dev/null @@ -1,36 +0,0 @@ -glabel musicSetTempo -/* 002134 80001534 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 002138 80001538 AFBF0014 */ sw $ra, 0x14($sp) -/* 00213C 8000153C 1080001A */ beqz $a0, .L800015A8 -/* 002140 80001540 00803025 */ move $a2, $a0 -/* 002144 80001544 44863000 */ mtc1 $a2, $f6 -/* 002148 80001548 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 00214C 8000154C 46803220 */ cvt.s.w $f8, $f6 -/* 002150 80001550 44812000 */ mtc1 $at, $f4 -/* 002154 80001554 3C01800E */ lui $at, %hi(D_800E49DC) # $at, 0x800e -/* 002158 80001558 46082283 */ div.s $f10, $f4, $f8 -/* 00215C 8000155C C43049DC */ lwc1 $f16, %lo(D_800E49DC)($at) -/* 002160 80001560 3C04800E */ lui $a0, %hi(gMusicPlayer) # $a0, 0x800e -/* 002164 80001564 8C84C630 */ lw $a0, %lo(gMusicPlayer)($a0) -/* 002168 80001568 AFA60018 */ sw $a2, 0x18($sp) -/* 00216C 8000156C 46105482 */ mul.s $f18, $f10, $f16 -/* 002170 80001570 444EF800 */ cfc1 $t6, $31 -/* 002174 80001574 00000000 */ nop -/* 002178 80001578 35C10003 */ ori $at, $t6, 3 -/* 00217C 8000157C 38210002 */ xori $at, $at, 2 -/* 002180 80001580 44C1F800 */ ctc1 $at, $31 -/* 002184 80001584 00000000 */ nop -/* 002188 80001588 460091A4 */ cvt.w.s $f6, $f18 -/* 00218C 8000158C 44053000 */ mfc1 $a1, $f6 -/* 002190 80001590 44CEF800 */ ctc1 $t6, $31 -/* 002194 80001594 0C031E78 */ jal alCSPSetTempo -/* 002198 80001598 00000000 */ nop -/* 00219C 8000159C 8FA60018 */ lw $a2, 0x18($sp) -/* 0021A0 800015A0 3C018011 */ lui $at, %hi(D_80115D30) # $at, 0x8011 -/* 0021A4 800015A4 A4265D30 */ sh $a2, %lo(D_80115D30)($at) -.L800015A8: -/* 0021A8 800015A8 8FBF0014 */ lw $ra, 0x14($sp) -/* 0021AC 800015AC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0021B0 800015B0 03E00008 */ jr $ra -/* 0021B4 800015B4 00000000 */ nop - diff --git a/asm/non_matchings/unknown_001050/sfxSetTempo.s b/asm/non_matchings/unknown_001050/sfxSetTempo.s deleted file mode 100644 index 1dc142b4..00000000 --- a/asm/non_matchings/unknown_001050/sfxSetTempo.s +++ /dev/null @@ -1,30 +0,0 @@ -glabel sfxSetTempo -/* 0023D4 800017D4 00803025 */ move $a2, $a0 -/* 0023D8 800017D8 44863000 */ mtc1 $a2, $f6 -/* 0023DC 800017DC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0023E0 800017E0 46803220 */ cvt.s.w $f8, $f6 -/* 0023E4 800017E4 44812000 */ mtc1 $at, $f4 -/* 0023E8 800017E8 3C01800E */ lui $at, %hi(D_800E49EC) # $at, 0x800e -/* 0023EC 800017EC 46082283 */ div.s $f10, $f4, $f8 -/* 0023F0 800017F0 C43049EC */ lwc1 $f16, %lo(D_800E49EC)($at) -/* 0023F4 800017F4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0023F8 800017F8 3C04800E */ lui $a0, %hi(gSndFxPlayer) # $a0, 0x800e -/* 0023FC 800017FC AFBF0014 */ sw $ra, 0x14($sp) -/* 002400 80001800 8C84C634 */ lw $a0, %lo(gSndFxPlayer)($a0) -/* 002404 80001804 46105482 */ mul.s $f18, $f10, $f16 -/* 002408 80001808 444EF800 */ cfc1 $t6, $31 -/* 00240C 8000180C 00000000 */ nop -/* 002410 80001810 35C10003 */ ori $at, $t6, 3 -/* 002414 80001814 38210002 */ xori $at, $at, 2 -/* 002418 80001818 44C1F800 */ ctc1 $at, $31 -/* 00241C 8000181C 00000000 */ nop -/* 002420 80001820 460091A4 */ cvt.w.s $f6, $f18 -/* 002424 80001824 44053000 */ mfc1 $a1, $f6 -/* 002428 80001828 44CEF800 */ ctc1 $t6, $31 -/* 00242C 8000182C 0C031E78 */ jal alCSPSetTempo -/* 002430 80001830 00000000 */ nop -/* 002434 80001834 8FBF0014 */ lw $ra, 0x14($sp) -/* 002438 80001838 27BD0018 */ addiu $sp, $sp, 0x18 -/* 00243C 8000183C 03E00008 */ jr $ra -/* 002440 80001840 00000000 */ nop - diff --git a/src/unknown_001050.c b/src/unknown_001050.c index 7f3cde6f..6bd69466 100644 --- a/src/unknown_001050.c +++ b/src/unknown_001050.c @@ -38,6 +38,9 @@ extern u8 D_800DC660; extern s32 D_800DC66C; extern u8 D_800DC670; +extern f32 D_800E49DC; +extern f32 D_800E49EC; + extern u8 D_800EBF60; extern ALHeap gALHeap; @@ -537,15 +540,24 @@ void func_80001440(u8 *arg0){ return; } -s16 func_800015B8(void); +s16 musicGetTempo(void); + +void musicSetTempo(s32); void func_800014BC(f32 arg0) { - musicSetTempo((s32)((f32)(u32)(func_800015B8() & 0xFF) * arg0)); + musicSetTempo((s32)((f32)(u32)(musicGetTempo() & 0xFF) * arg0)); } -GLOBAL_ASM("asm/non_matchings/unknown_001050/musicSetTempo.s") -s16 func_800015B8(void) { +void musicSetTempo(s32 tempo){ + if(tempo != 0){ + f32 inv_tempo = (1.0f/tempo); + alCSPSetTempo(gMusicPlayer,(s32)(inv_tempo*D_800E49DC)); + D_80115D30 = tempo; + } +} + +s16 musicGetTempo(void) { return D_80115D30; } @@ -564,7 +576,12 @@ void func_80001784(u8 a0){ } } -GLOBAL_ASM("asm/non_matchings/unknown_001050/sfxSetTempo.s") + +void sfxSetTempo(s32 tempo){ + f32 inv_tempo = (1.0f/tempo); + alCSPSetTempo(gSndFxPlayer,(s32)(inv_tempo*D_800E49EC)); +} + void func_80002570(ALCSPlayer* arg0); @@ -619,9 +636,7 @@ u8 func_80001980(void) { return D_80115D05; } -#if 0 -GLOBAL_ASM("asm/non_matchings/unknown_001050/musicSetRelativeVolume.s") -#else + void musicSetRelativeVolume(u8 vol){ f32 normalized_vol; @@ -629,8 +644,6 @@ void musicSetRelativeVolume(u8 vol){ normalized_vol = musicVolumeSliderPercentage*musicRelativeVolume*D_800DC650; alCSPSetVol(gMusicPlayer, (s16)((s32)(D_800DC66C*normalized_vol)>>8)); } -#endif - void musicSetVolSlider(u32 slider_val){ f32 normalized_vol; From f9f0c6e9ba8b01b92c07794f5f6be893b8dc4c6b Mon Sep 17 00:00:00 2001 From: Mittenshugg Date: Tue, 11 Aug 2020 16:51:17 -0500 Subject: [PATCH 5/8] c: func_80001728 --- .../unknown_001050/func_800015F8.s | 33 +------ .../unknown_003260/audioNewThread.s | 4 +- data/dkr.data.s | 2 +- include/PR/libaudio.h | 1 + src/unknown_001050.c | 90 +++++++++++++------ src/unknown_003260.c | 75 ++++++++++++---- undefined_syms.txt | 4 +- 7 files changed, 133 insertions(+), 76 deletions(-) diff --git a/asm/non_matchings/unknown_001050/func_800015F8.s b/asm/non_matchings/unknown_001050/func_800015F8.s index cf62d33b..b2760604 100644 --- a/asm/non_matchings/unknown_001050/func_800015F8.s +++ b/asm/non_matchings/unknown_001050/func_800015F8.s @@ -3,8 +3,8 @@ glabel func_800015F8 /* 0021FC 800015FC AFBF0014 */ sw $ra, 0x14($sp) /* 002200 80001600 0C031E34 */ jal osGetCount /* 002204 80001604 00000000 */ nop -/* 002208 80001608 3C04800E */ lui $a0, %hi(D_800DC64C) # $a0, 0x800e -/* 00220C 8000160C 8C84C64C */ lw $a0, %lo(D_800DC64C)($a0) +/* 002208 80001608 3C04800E */ lui $a0, %hi(audioPrevCount) # $a0, 0x800e +/* 00220C 8000160C 8C84C64C */ lw $a0, %lo(audioPrevCount)($a0) /* 002210 80001610 3C198011 */ lui $t9, %hi(D_80115D40) # $t9, 0x8011 /* 002214 80001614 0082082B */ sltu $at, $a0, $v0 /* 002218 80001618 10200013 */ beqz $at, .L80001668 @@ -61,7 +61,7 @@ glabel func_800015F8 /* 0022D0 800016D0 C42A49E8 */ lwc1 $f10, %lo(D_800E49E8)($at) /* 0022D4 800016D4 468034A0 */ cvt.s.w $f18, $f6 /* 0022D8 800016D8 C4620000 */ lwc1 $f2, ($v1) -/* 0022DC 800016DC 3C01800E */ lui $at, %hi(D_800DC64C) # $at, 0x800e +/* 0022DC 800016DC 3C01800E */ lui $at, %hi(audioPrevCount) # $at, 0x800e /* 0022E0 800016E0 46125303 */ div.s $f12, $f10, $f18 /* 0022E4 800016E4 4602603C */ c.lt.s $f12, $f2 /* 0022E8 800016E8 00000000 */ nop @@ -78,32 +78,7 @@ glabel func_800015F8 /* 002310 80001710 00000000 */ nop /* 002314 80001714 8FBF0014 */ lw $ra, 0x14($sp) .L80001718: -/* 002318 80001718 AC22C64C */ sw $v0, %lo(D_800DC64C)($at) +/* 002318 80001718 AC22C64C */ sw $v0, %lo(audioPrevCount)($at) /* 00231C 8000171C 27BD0018 */ addiu $sp, $sp, 0x18 /* 002320 80001720 03E00008 */ jr $ra /* 002324 80001724 460C1003 */ div.s $f0, $f2, $f12 - -/* 002328 80001728 3C038011 */ lui $v1, %hi(D_80115D1C) # $v1, 0x8011 -/* 00232C 8000172C 24635D1C */ addiu $v1, %lo(D_80115D1C) # addiu $v1, $v1, 0x5d1c -/* 002330 80001730 308E00FF */ andi $t6, $a0, 0xff -/* 002334 80001734 8C6F0000 */ lw $t7, ($v1) -/* 002338 80001738 000E1080 */ sll $v0, $t6, 2 -/* 00233C 8000173C 004E1023 */ subu $v0, $v0, $t6 -/* 002340 80001740 AFA40000 */ sw $a0, ($sp) -/* 002344 80001744 01E2C021 */ addu $t8, $t7, $v0 -/* 002348 80001748 93190001 */ lbu $t9, 1($t8) -/* 00234C 8000174C 00000000 */ nop -/* 002350 80001750 A0B90000 */ sb $t9, ($a1) -/* 002354 80001754 8C680000 */ lw $t0, ($v1) -/* 002358 80001758 00000000 */ nop -/* 00235C 8000175C 01024821 */ addu $t1, $t0, $v0 -/* 002360 80001760 912A0000 */ lbu $t2, ($t1) -/* 002364 80001764 00000000 */ nop -/* 002368 80001768 A0CA0000 */ sb $t2, ($a2) -/* 00236C 8000176C 8C6B0000 */ lw $t3, ($v1) -/* 002370 80001770 00000000 */ nop -/* 002374 80001774 01626021 */ addu $t4, $t3, $v0 -/* 002378 80001778 918D0002 */ lbu $t5, 2($t4) -/* 00237C 8000177C 03E00008 */ jr $ra -/* 002380 80001780 A0ED0000 */ sb $t5, ($a3) - diff --git a/asm/non_matchings/unknown_003260/audioNewThread.s b/asm/non_matchings/unknown_003260/audioNewThread.s index 8949fd01..4ebc9122 100644 --- a/asm/non_matchings/unknown_003260/audioNewThread.s +++ b/asm/non_matchings/unknown_003260/audioNewThread.s @@ -245,10 +245,10 @@ glabel audioNewThread /* 003600 80002A00 8FB9004C */ lw $t9, 0x4c($sp) /* 003604 80002A04 3C188012 */ lui $t8, %hi(D_80119230) # $t8, 0x8012 /* 003608 80002A08 27189230 */ addiu $t8, %lo(D_80119230) # addiu $t8, $t8, -0x6dd0 -/* 00360C 80002A0C 3C048011 */ lui $a0, %hi(D_80115FB0) # $a0, 0x8011 +/* 00360C 80002A0C 3C048011 */ lui $a0, %hi(audioThread) # $a0, 0x8011 /* 003610 80002A10 3C068000 */ lui $a2, %hi(D_80002A98) # $a2, 0x8000 /* 003614 80002A14 24C62A98 */ addiu $a2, %lo(D_80002A98) # addiu $a2, $a2, 0x2a98 -/* 003618 80002A18 24845FB0 */ addiu $a0, %lo(D_80115FB0) # addiu $a0, $a0, 0x5fb0 +/* 003618 80002A18 24845FB0 */ addiu $a0, %lo(audioThread) # addiu $a0, $a0, 0x5fb0 /* 00361C 80002A1C AFB80010 */ sw $t8, 0x10($sp) /* 003620 80002A20 24050004 */ li $a1, 4 /* 003624 80002A24 00003825 */ move $a3, $zero diff --git a/data/dkr.data.s b/data/dkr.data.s index 5806f731..0d66d672 100644 --- a/data/dkr.data.s +++ b/data/dkr.data.s @@ -27,7 +27,7 @@ glabel D_800DC644 glabel D_800DC648 .word 0x00000000 -glabel D_800DC64C +glabel audioPrevCount .word 0x00000000 glabel D_800DC650 diff --git a/include/PR/libaudio.h b/include/PR/libaudio.h index 80bc3186..93f0ef3a 100644 --- a/include/PR/libaudio.h +++ b/include/PR/libaudio.h @@ -265,6 +265,7 @@ typedef struct { ALHeap *heap; s32 outputRate; /* output sample rate */ ALFxId fxType; + u8 unk1d; s32 *params; } ALSynConfig; diff --git a/src/unknown_001050.c b/src/unknown_001050.c index 6bd69466..971f5a01 100644 --- a/src/unknown_001050.c +++ b/src/unknown_001050.c @@ -29,7 +29,7 @@ extern u8 D_800DC63C; extern u8 D_800DC640; extern u8 D_800DC644; extern s32 D_800DC648; -extern s32 D_800DC64C; +extern s32 audioPrevCount; extern f32 D_800DC650; extern s32 musicVolumeSliderPercentage; extern s32 D_800DC658; @@ -107,18 +107,6 @@ typedef struct audioMgrConfig_s{ u16 unk10; } audioMgrConfig; -typedef struct musicConfig_s{ - u32 unk00; - u32 unk04; - u32 unk08; - u32 unk0c; - u32 unk10; - ALHeap *heap; - u32 unk18; - u8 unk1c; - u8 unk1d; -} musicConfig; - void func_80000968(s32 arg0); ALCSPlayer* func_80002224(s32, s32); void func_8000B010(ALCSPlayer*, u8); @@ -128,8 +116,7 @@ void *alHeapDBAlloc(u8 *file, s32 line, ALHeap *hp, s32 num, s32 size); void audio_init(u32 arg0){ s32 iCnt; - s32 tmp; - musicConfig mConfig; + ALSynConfig synth_config; u32 *reg_s2; u32 seqfSize; u32 seq_max_len; @@ -179,15 +166,15 @@ void audio_init(u32 arg0){ } - mConfig.unk00 = 40; - mConfig.unk04 = 40; - mConfig.unk08 = 96; - mConfig.unk10 = 0; - mConfig.unk1c = 6; - mConfig.unk1d = 2; - mConfig.unk18 = 0; - mConfig.heap = &gALHeap; - audioNewThread(&mConfig, 12, arg0); + synth_config.maxVVoices = 40; + synth_config.maxPVoices = 40; + synth_config.maxUpdates = 96; + synth_config.dmaproc = NULL; + synth_config.fxType = 6; + synth_config.unk1d = 2; + synth_config.outputRate = 0; + synth_config.heap = &gALHeap; + audioNewThread(&synth_config, 12, arg0); gMusicPlayer = func_80002224(24, 120); func_8000B010(gMusicPlayer, 18); gSndFxPlayer = func_80002224(16, 50); @@ -284,7 +271,7 @@ void func_80000B34(u8 arg0) { func_800022BC(D_80115D04, gMusicPlayer); } musicTempo = alCSPGetTempo(gMusicPlayer); - D_800DC64C = osGetCount(); + audioPrevCount = osGetCount(); D_80115D40 = 1; D_80115F7C = -1; } @@ -565,7 +552,53 @@ u8 musicIsPlaying(void) { return (alCSPGetState(gMusicPlayer) == AL_PLAYING); } + +extern f32 D_800E49E0; +extern f32 D_800E49E8; +extern f32 D_80115D34; + +#if 1 GLOBAL_ASM("asm/non_matchings/unknown_001050/func_800015F8.s") +#else +f32 func_800015F8(void){ + u32 current_cnt = osGetCount(); + u32 delta; + f32 delta_f; + f32 tmp; + f32* tmp2 = &D_80115D34; + if(audioPrevCount < current_cnt){ + delta = current_cnt - audioPrevCount; + delta_f = (delta < 0) + ? (f32) delta + 4294967296.000000f + : delta; + D_80115D34 = delta_f/D_800E49E0 + *tmp2; + } + else{ + delta = audioPrevCount - current_cnt; + delta_f = (delta + -1); + delta_f = (delta < 0) + ? (f32) delta + 4294967296.000000f + : delta; + *tmp2 = delta_f/D_800E49E0 + D_80115D34; + } + if(D_80115D40 == 0){ + D_80115D30 = 182; + } + tmp = D_800E49E8/(f32) D_80115D30; + while(D_80115D34 > tmp){ + D_80115D34 -= tmp; + } + audioPrevCount = current_cnt; + return D_80115D34/tmp; + +} +#endif + +void func_80001728(u8 arg0, u8* arg1, u8* arg2, u8* arg3){ + *arg1 = D_80115D1C[arg0].unk1; + *arg2 = D_80115D1C[arg0].unk0; + *arg3 = D_80115D1C[arg0].unk2; +} u32 func_80001C08(void); @@ -740,8 +773,13 @@ void func_80001F14(u16 arg0, u32 *arg1){ } } - +#if 1 GLOBAL_ASM("asm/non_matchings/unknown_001050/func_80001FB8.s") +#else +void func_80001FB8(u16 arg0){ + arg0*10 + D_80115D18[0].unk00; +} +#endif u16 func_800020E8(void) { return D_80115D14->bankArray[0]->instArray[0]->soundCount; diff --git a/src/unknown_003260.c b/src/unknown_003260.c index 618cb96a..5e358562 100644 --- a/src/unknown_003260.c +++ b/src/unknown_003260.c @@ -16,45 +16,88 @@ typedef struct unk800DC6BC { s32 unk48; } unk800DC6BC; +typedef struct unk80119240 +{ + ALLink node; + u32 unk08; + u32 unk0C; + void* unk10; +} unk80119240; + extern unk800DC6BC* D_800DC6BC; extern s32 D_800DC6C0; extern s32 D_80115F90; extern ALHeap* D_80115F94; -extern OSThread D_80115FB0; +extern OSThread audioThread; extern OSMesgQueue D_80116160; extern OSMesg D_80116178; extern OSMesgQueue D_80116198; extern OSMesg D_801161B0; +extern ALGlobals D_801161D0; extern s32 D_80119230; +extern unk80119240 D_80119240[0x31]; +extern s32 D_8011962C; extern OSMesgQueue D_80119AF0; extern OSMesg D_80119B08; extern f32 D_80126170; +void *alHeapDBAlloc(u8 *, s32, ALHeap *, s32, s32); + #if 1 GLOBAL_ASM("asm/non_matchings/unknown_003260/audioNewThread.s") #else - void audioNewThread(ALSynConfig* c, OSPri p, s32 arg2){ - D_80115F90 = arg2; - D_80115F94 = c->heap; - c->dmaproc = &D_80003008; - c->outputRate = func_800C8600(22050); - - alHeapDBAlloc(0,0, c->heap, 1, 120); - - osCreateMesgQueue(&D_80116198, &D_801161B0, 8); - osCreateMesgQueue(&D_80116160, &D_80116178, 8); - osCreateMesgQueue(&D_80119AF0, &D_80119B08, 50); - - osCreateThread(&D_80115FB0, 4, &D_80002A98, NULL, &D_80119230, p); +void audioNewThread(ALSynConfig* c, OSPri p, s32 arg2){ + u32 *reg_v0; + void *reg_s0; + u32 tmp_size; + s32 tmp; + s32 i; + D_80115F90 = arg2; + D_80115F94 = c->heap; + c->dmaproc = &D_80003008; + c->outputRate = func_800C8600(22050); + D_8011962C = (((f32) c->outputRate)*2.0f)/D_80126170; + if(D_8011962C < 0){ } + + if(c->fxType == AL_FX_CUSTOM){ + reg_v0 = func_80076C58(38); + tmp_size = reg_v0[9]-reg_v0[8]; + reg_s0 = func_80070C9C(tmp_size, 0x00FFFFFF, reg_v0[8]); + func_80076E68(39,reg_s0, reg_v0[8],tmp_size); + c->params = reg_s0; + c[1].maxVVoices = 0; + alInit(&D_801161D0, c); + func_80071140(reg_s0); + } + else{ + alInit(&D_801161D0, c); + } + D_80119240[0].node.next = NULL; + D_80119240[0].node.prev = NULL; + + for(i=0; i< 0x30; i++){ + alLink(&(D_80119240[i+1].node), &(D_80119240[i].node)); + D_80119240[i].unk10 = alHeapDBAlloc(0,0,c->heap, 1, 0x400); + } + D_80119240[i].unk10 = alHeapDBAlloc(0,0, c->heap, 1, 0x400); + alHeapDBAlloc(0,0, c->heap, 1, 120); + + + osCreateMesgQueue(&D_80116198, &D_801161B0, 8); + osCreateMesgQueue(&D_80116160, &D_80116178, 8); + osCreateMesgQueue(&D_80119AF0, &D_80119B08, 50); + + osCreateThread(&audioThread, 4, &D_80002A98, NULL, &D_80119230, p); +} #endif void audioStartThread(void) { - osStartThread(&D_80115FB0); + osStartThread(&audioThread); } void audioStopThread(void) { - osStopThread(&D_80115FB0); + osStopThread(&audioThread); } GLOBAL_ASM("asm/non_matchings/unknown_003260/D_80002A98.s") diff --git a/undefined_syms.txt b/undefined_syms.txt index 688a7a33..25d414a3 100755 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -78,7 +78,7 @@ D_800DC63C = 0x800DC63C; D_800DC640 = 0x800DC640; D_800DC644 = 0x800DC644; D_800DC648 = 0x800DC648; -D_800DC64C = 0x800DC64C; +audioPrevCount = 0x800DC64C; D_800DC650 = 0x800DC650; musicVolumeSliderPercentage = 0x800DC654; D_800DC658 = 0x800DC658; @@ -1752,7 +1752,7 @@ D_80115F94 = 0x80115F94; D_80115F98 = 0x80115F98; D_80115FA0 = 0x80115FA0; D_80115FA4 = 0x80115FA4; -D_80115FB0 = 0x80115FB0; +audioThread = 0x80115FB0; D_80116160 = 0x80116160; D_80116178 = 0x80116178; D_80116198 = 0x80116198; From 6db3ca9258f560c3ed27e8977044c4a4929910dd Mon Sep 17 00:00:00 2001 From: Mittenshugg Date: Tue, 11 Aug 2020 16:58:58 -0500 Subject: [PATCH 6/8] c: func_80004604, func_8000461C --- .../unknown_003260/func_80004604.s | 19 ------------------- src/unknown_003260.c | 13 ++++++++++++- 2 files changed, 12 insertions(+), 20 deletions(-) delete mode 100644 asm/non_matchings/unknown_003260/func_80004604.s diff --git a/asm/non_matchings/unknown_003260/func_80004604.s b/asm/non_matchings/unknown_003260/func_80004604.s deleted file mode 100644 index 90d93c98..00000000 --- a/asm/non_matchings/unknown_003260/func_80004604.s +++ /dev/null @@ -1,19 +0,0 @@ -glabel func_80004604 -/* 005204 80004604 AFA50004 */ sw $a1, 4($sp) -/* 005208 80004608 10800002 */ beqz $a0, .L80004614 -/* 00520C 8000460C 30AE00FF */ andi $t6, $a1, 0xff -/* 005210 80004610 A08E0036 */ sb $t6, 0x36($a0) -.L80004614: -/* 005214 80004614 03E00008 */ jr $ra -/* 005218 80004618 00000000 */ nop - -/* 00521C 8000461C 10800004 */ beqz $a0, .L80004630 -/* 005220 80004620 00001025 */ move $v0, $zero -/* 005224 80004624 9082003F */ lbu $v0, 0x3f($a0) -/* 005228 80004628 03E00008 */ jr $ra -/* 00522C 8000462C 00000000 */ nop - -.L80004630: -/* 005230 80004630 03E00008 */ jr $ra -/* 005234 80004634 00000000 */ nop - diff --git a/src/unknown_003260.c b/src/unknown_003260.c index 5e358562..4427c378 100644 --- a/src/unknown_003260.c +++ b/src/unknown_003260.c @@ -136,7 +136,18 @@ GLOBAL_ASM("asm/non_matchings/unknown_003260/func_800041FC.s") GLOBAL_ASM("asm/non_matchings/unknown_003260/func_800042CC.s") GLOBAL_ASM("asm/non_matchings/unknown_003260/func_80004384.s") GLOBAL_ASM("asm/non_matchings/unknown_003260/func_80004520.s") -GLOBAL_ASM("asm/non_matchings/unknown_003260/func_80004604.s") +//GLOBAL_ASM("asm/non_matchings/unknown_003260/func_80004604.s") + +void func_80004604(u8* arg0, u8 arg1){ + if (arg0) + arg0[0x36]=arg1; +} + +u8 func_8000461C(u8* arg0){ + if (arg0) + return arg0[0x3F]; + return 0; +} void func_80004638(ALBank* bnk, s16 arg1, s32 arg2) { func_80004668(bnk, arg1, 0, arg2); From 58c64ce310f07dc9d1dd7ba402008377aa4a6eb4 Mon Sep 17 00:00:00 2001 From: Mittenshugg Date: Tue, 11 Aug 2020 16:59:04 -0500 Subject: [PATCH 7/8] c: func_80004604, func_8000461C --- src/unknown_003260.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/unknown_003260.c b/src/unknown_003260.c index 4427c378..2ee5bca3 100644 --- a/src/unknown_003260.c +++ b/src/unknown_003260.c @@ -136,7 +136,6 @@ GLOBAL_ASM("asm/non_matchings/unknown_003260/func_800041FC.s") GLOBAL_ASM("asm/non_matchings/unknown_003260/func_800042CC.s") GLOBAL_ASM("asm/non_matchings/unknown_003260/func_80004384.s") GLOBAL_ASM("asm/non_matchings/unknown_003260/func_80004520.s") -//GLOBAL_ASM("asm/non_matchings/unknown_003260/func_80004604.s") void func_80004604(u8* arg0, u8 arg1){ if (arg0) From 33d5a8f033a6f544ba897fefec5429d88a6e8d83 Mon Sep 17 00:00:00 2001 From: Mittenshugg Date: Tue, 11 Aug 2020 19:18:32 -0500 Subject: [PATCH 8/8] c: func_80004A3C --- asm/non_matchings/unknown_003260/func_800049F8.s | 9 --------- src/unknown_003260.c | 8 ++++++++ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/asm/non_matchings/unknown_003260/func_800049F8.s b/asm/non_matchings/unknown_003260/func_800049F8.s index b60edbc1..32a90b80 100644 --- a/asm/non_matchings/unknown_003260/func_800049F8.s +++ b/asm/non_matchings/unknown_003260/func_800049F8.s @@ -18,13 +18,4 @@ glabel func_800049F8 /* 005634 80004A34 03E00008 */ jr $ra /* 005638 80004A38 00000000 */ nop -/* 00563C 80004A3C 3C0F8012 */ lui $t7, %hi(D_80119C28) # $t7, 0x8012 -/* 005640 80004A40 8DEF9C28 */ lw $t7, %lo(D_80119C28)($t7) -/* 005644 80004A44 308E00FF */ andi $t6, $a0, 0xff -/* 005648 80004A48 000EC040 */ sll $t8, $t6, 1 -/* 00564C 80004A4C AFA40000 */ sw $a0, ($sp) -/* 005650 80004A50 01F8C821 */ addu $t9, $t7, $t8 -/* 005654 80004A54 97220000 */ lhu $v0, ($t9) -/* 005658 80004A58 03E00008 */ jr $ra -/* 00565C 80004A5C 00000000 */ nop diff --git a/src/unknown_003260.c b/src/unknown_003260.c index 2ee5bca3..60032d42 100644 --- a/src/unknown_003260.c +++ b/src/unknown_003260.c @@ -39,6 +39,7 @@ extern unk80119240 D_80119240[0x31]; extern s32 D_8011962C; extern OSMesgQueue D_80119AF0; extern OSMesg D_80119B08; +extern u16* D_80119C28; extern f32 D_80126170; void *alHeapDBAlloc(u8 *, s32, ALHeap *, s32, s32); @@ -160,5 +161,12 @@ void func_800049D8(void) { func_800048D8(3); } + + GLOBAL_ASM("asm/non_matchings/unknown_003260/func_800049F8.s") + +u16 func_80004A3C(u8 arg0){ + return D_80119C28[arg0]; +} + GLOBAL_ASM("asm/non_matchings/unknown_003260/func_80004A60.s")