c: func_800049F8

This commit is contained in:
Mittenz
2020-08-18 18:37:50 -05:00
parent a470c61c13
commit c3eae75971
11 changed files with 112 additions and 54 deletions
@@ -1,8 +1,8 @@
glabel func_800031C0
glabel alSndPNew
/* 003DC0 800031C0 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 003DC4 800031C4 AFB20028 */ sw $s2, 0x28($sp)
/* 003DC8 800031C8 3C12800E */ lui $s2, %hi(D_800DC6BC) # $s2, 0x800e
/* 003DCC 800031CC 2652C6BC */ addiu $s2, %lo(D_800DC6BC) # addiu $s2, $s2, -0x3944
/* 003DC8 800031C8 3C12800E */ lui $s2, %hi(gAlSndPlayer) # $s2, 0x800e
/* 003DCC 800031CC 2652C6BC */ addiu $s2, %lo(gAlSndPlayer) # addiu $s2, $s2, -0x3944
/* 003DD0 800031D0 AFBF002C */ sw $ra, 0x2c($sp)
/* 003DD4 800031D4 AFB10024 */ sw $s1, 0x24($sp)
/* 003DD8 800031D8 AFB00020 */ sw $s0, 0x20($sp)
@@ -6,14 +6,14 @@ glabel func_8000410C
/* 004D1C 8000411C 00807025 */ move $t6, $a0
/* 004D20 80004120 31F80004 */ andi $t8, $t7, 4
/* 004D24 80004124 1300000C */ beqz $t8, .L80004158
/* 004D28 80004128 3C19800E */ lui $t9, %hi(D_800DC6BC) # $t9, 0x800e
/* 004D2C 8000412C 8F39C6BC */ lw $t9, %lo(D_800DC6BC)($t9)
/* 004D28 80004128 3C19800E */ lui $t9, %hi(gAlSndPlayer) # $t9, 0x800e
/* 004D2C 8000412C 8F39C6BC */ lw $t9, %lo(gAlSndPlayer)($t9)
/* 004D30 80004130 25C5000C */ addiu $a1, $t6, 0xc
/* 004D34 80004134 8F240038 */ lw $a0, 0x38($t9)
/* 004D38 80004138 0C03262C */ jal alSynStopVoice
/* 004D3C 8000413C AFA5001C */ sw $a1, 0x1c($sp)
/* 004D40 80004140 3C08800E */ lui $t0, %hi(D_800DC6BC) # $t0, 0x800e
/* 004D44 80004144 8D08C6BC */ lw $t0, %lo(D_800DC6BC)($t0)
/* 004D40 80004140 3C08800E */ lui $t0, %hi(gAlSndPlayer) # $t0, 0x800e
/* 004D44 80004144 8D08C6BC */ lw $t0, %lo(gAlSndPlayer)($t0)
/* 004D48 80004148 8FA5001C */ lw $a1, 0x1c($sp)
/* 004D4C 8000414C 8D040038 */ lw $a0, 0x38($t0)
/* 004D50 80004150 0C03264C */ jal alSynFreeVoice
@@ -22,8 +22,8 @@ glabel func_8000410C
/* 004D58 80004158 8FA40020 */ lw $a0, 0x20($sp)
/* 004D5C 8000415C 0C001148 */ jal func_80004520
/* 004D60 80004160 00000000 */ nop
/* 004D64 80004164 3C04800E */ lui $a0, %hi(D_800DC6BC) # $a0, 0x800e
/* 004D68 80004168 8C84C6BC */ lw $a0, %lo(D_800DC6BC)($a0)
/* 004D64 80004164 3C04800E */ lui $a0, %hi(gAlSndPlayer) # $a0, 0x800e
/* 004D68 80004168 8C84C6BC */ lw $a0, %lo(gAlSndPlayer)($a0)
/* 004D6C 8000416C 8FA50020 */ lw $a1, 0x20($sp)
/* 004D70 80004170 3406FFFF */ li $a2, 65535
/* 004D74 80004174 0C00107F */ jal func_800041FC
@@ -9,9 +9,9 @@ glabel func_8000418C
/* 004DA8 800041A8 0C032678 */ jal alCents2Ratio
/* 004DAC 800041AC AFA70030 */ sw $a3, 0x30($sp)
/* 004DB0 800041B0 8FA70030 */ lw $a3, 0x30($sp)
/* 004DB4 800041B4 3C04800E */ lui $a0, %hi(D_800DC6BC) # $a0, 0x800e
/* 004DB4 800041B4 3C04800E */ lui $a0, %hi(gAlSndPlayer) # $a0, 0x800e
/* 004DB8 800041B8 C4E4002C */ lwc1 $f4, 0x2c($a3)
/* 004DBC 800041BC 8C84C6BC */ lw $a0, %lo(D_800DC6BC)($a0)
/* 004DBC 800041BC 8C84C6BC */ lw $a0, %lo(gAlSndPlayer)($a0)
/* 004DC0 800041C0 46040182 */ mul.s $f6, $f0, $f4
/* 004DC4 800041C4 24180010 */ li $t8, 16
/* 004DC8 800041C8 A7B80020 */ sh $t8, 0x20($sp)
@@ -24,9 +24,9 @@ glabel func_80004668
/* 0052C0 800046C0 10000066 */ b .L8000485C
/* 0052C4 800046C4 00001025 */ move $v0, $zero
.L800046C8:
/* 0052C8 800046C8 3C15800E */ lui $s5, %hi(D_800DC6BC) # $s5, 0x800e
/* 0052C8 800046C8 3C15800E */ lui $s5, %hi(gAlSndPlayer) # $s5, 0x800e
/* 0052CC 800046CC 8FB30064 */ lw $s3, 0x64($sp)
/* 0052D0 800046D0 26B5C6BC */ addiu $s5, %lo(D_800DC6BC) # addiu $s5, $s5, -0x3944
/* 0052D0 800046D0 26B5C6BC */ addiu $s5, %lo(gAlSndPlayer) # addiu $s5, $s5, -0x3944
/* 0052D4 800046D4 AFA40080 */ sw $a0, 0x80($sp)
/* 0052D8 800046D8 27B60050 */ addiu $s6, $sp, 0x50
/* 0052DC 800046DC 8FA40080 */ lw $a0, 0x80($sp)
@@ -15,8 +15,8 @@ glabel func_800048D8
/* 00550C 8000490C AFA2004C */ sw $v0, 0x4c($sp)
/* 005510 80004910 12000016 */ beqz $s0, .L8000496C
/* 005514 80004914 02408825 */ move $s1, $s2
/* 005518 80004918 3C13800E */ lui $s3, %hi(D_800DC6BC) # $s3, 0x800e
/* 00551C 8000491C 2673C6BC */ addiu $s3, %lo(D_800DC6BC) # addiu $s3, $s3, -0x3944
/* 005518 80004918 3C13800E */ lui $s3, %hi(gAlSndPlayer) # $s3, 0x800e
/* 00551C 8000491C 2673C6BC */ addiu $s3, %lo(gAlSndPlayer) # addiu $s3, $s3, -0x3944
/* 005520 80004920 27B4003C */ addiu $s4, $sp, 0x3c
/* 005524 80004924 2412FFEF */ li $s2, -17
/* 005528 80004928 240E0400 */ li $t6, 1024
@@ -1,21 +0,0 @@
glabel func_800049F8
/* 0055F8 800049F8 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 0055FC 800049FC AFBF0014 */ sw $ra, 0x14($sp)
/* 005600 80004A00 AFA5002C */ sw $a1, 0x2c($sp)
/* 005604 80004A04 A7A50018 */ sh $a1, 0x18($sp)
/* 005608 80004A08 AFA4001C */ sw $a0, 0x1c($sp)
/* 00560C 80004A0C 10800007 */ beqz $a0, .L80004A2C
/* 005610 80004A10 AFA60020 */ sw $a2, 0x20($sp)
/* 005614 80004A14 3C04800E */ lui $a0, %hi(D_800DC6BC) # $a0, 0x800e
/* 005618 80004A18 8C84C6BC */ lw $a0, %lo(D_800DC6BC)($a0)
/* 00561C 80004A1C 27A50018 */ addiu $a1, $sp, 0x18
/* 005620 80004A20 00003025 */ move $a2, $zero
/* 005624 80004A24 0C03246B */ jal alEvtqPostEvent
/* 005628 80004A28 24840014 */ addiu $a0, $a0, 0x14
.L80004A2C:
/* 00562C 80004A2C 8FBF0014 */ lw $ra, 0x14($sp)
/* 005630 80004A30 27BD0028 */ addiu $sp, $sp, 0x28
/* 005634 80004A34 03E00008 */ jr $ra
/* 005638 80004A38 00000000 */ nop
@@ -21,8 +21,8 @@ glabel func_80004A60
/* 0056AC 80004AAC 12000017 */ beqz $s0, .L80004B0C
/* 0056B0 80004AB0 A7110000 */ sh $s1, ($t8)
/* 0056B4 80004AB4 02408825 */ move $s1, $s2
/* 0056B8 80004AB8 3C12800E */ lui $s2, %hi(D_800DC6BC) # $s2, 0x800e
/* 0056BC 80004ABC 2652C6BC */ addiu $s2, %lo(D_800DC6BC) # addiu $s2, $s2, -0x3944
/* 0056B8 80004AB8 3C12800E */ lui $s2, %hi(gAlSndPlayer) # $s2, 0x800e
/* 0056BC 80004ABC 2652C6BC */ addiu $s2, %lo(gAlSndPlayer) # addiu $s2, $s2, -0x3944
/* 0056C0 80004AC0 27B3002C */ addiu $s3, $sp, 0x2c
.L80004AC4:
/* 0056C4 80004AC4 8E190008 */ lw $t9, 8($s0)
+1 -1
View File
@@ -95,7 +95,7 @@ glabel D_800DC6B4
glabel D_800DC6B8
.word 0x00000000
glabel D_800DC6BC
glabel gAlSndPlayer
.word 0x80119BD0
glabel sfxVolumeSlider
+1 -1
View File
@@ -178,7 +178,7 @@ void audio_init(u32 arg0){
audConfig.maxChannels = 16;
audConfig.unk10 = 1;
audConfig.hp = &gALHeap;
func_800031C0(&audConfig);
alSndPNew(&audConfig);
audioStartThread();
func_80000968(0);
func_80071140(reg_s2);
+92 -13
View File
@@ -9,14 +9,35 @@
extern void func_80002A98(void*);
extern u32 D_80003008;
typedef struct unk800DC6BC_40 {
ALLink node;
u8 pad0C[0x38];
} unk800DC6BC_40; //ALSoundState
typedef union {
ALEvent msg;
struct{
s16 type;
void* state;
u32 unk04;
}snd_event;
}ALSndpEvent;
/* Unknown Size */
typedef struct unk800DC6BC {
ALPlayer node;
ALEventQueue evtq;
u8 pad18[0x1C];
s32 unk44;
s32 unk48;
} unk800DC6BC;
ALPlayer node;
ALEventQueue evtq;
ALEvent nextEvent;
ALSynth *drvr;
u32 unk3C;
unk800DC6BC_40 *unk40;
s32 unk44;
s32 unk48;
s32 frameTime;
ALMicroTime nextDelta;
} unk800DC6BC; //ALSndPlayer
typedef struct unk80119240
{
@@ -34,7 +55,7 @@ typedef struct unk80119240
*/
extern u32 D_800DC6A0;
//extern unk800DC6B0* D_800DC6B0;
extern unk800DC6BC* D_800DC6BC;
extern unk800DC6BC* gAlSndPlayer;
extern s32 sfxVolumeSlider;
extern s32 D_80115F90;
extern ALHeap* D_80115F94;
@@ -131,14 +152,64 @@ s32 sfxGetVolumeSlider(void) {
}
void func_8000318C(s32 arg0) {
if (D_800DC6BC->unk44 >= arg0) {
D_800DC6BC->unk48 = arg0;
if (gAlSndPlayer->unk44 >= arg0) {
gAlSndPlayer->unk48 = arg0;
} else {
D_800DC6BC->unk48 = D_800DC6BC->unk44;
gAlSndPlayer->unk48 = gAlSndPlayer->unk44;
}
}
GLOBAL_ASM("asm/non_matchings/unknown_003260/func_800031C0.s")
#if 1 //BAD Regalloc in first for loop
GLOBAL_ASM("asm/non_matchings/unknown_003260/alSndPNew.s")
#else
typedef struct audioMgrConfig_s{
u32 unk00;
u32 unk04;
u32 maxChannels;
ALHeap* hp;
u16 unk10;
} audioMgrConfig;
extern unk800DC6BC_40* D_800DC6B8;
ALMicroTime _sndpVoiceHandler(void *node);
void alSndPNew(audioMgrConfig* c){
s32 i;
unk800DC6BC_40* tmp1;
ALEvent sp_38;
gAlSndPlayer->unk44 = c->maxChannels;
gAlSndPlayer->unk48 = c->maxChannels;
gAlSndPlayer->unk3C = 0;
gAlSndPlayer->frameTime = 33000;
gAlSndPlayer->unk40 = (unk800DC6BC_40 *) alHeapDBAlloc(0, 0, c->hp, 1, (c->unk00) << 6);
alEvtqNew(&(gAlSndPlayer->evtq), alHeapDBAlloc(0,0,c->hp,1, (c->unk04)*28), c->unk04);
D_800DC6B8 = gAlSndPlayer->unk40;
for (i=1; i < c->unk00; i++){
//bad regalloc
tmp1 = &(gAlSndPlayer->unk40[i]);
alLink(tmp1, tmp1 - 1);
}
D_80119C28 = alHeapDBAlloc(0,0,c->hp, 2, c->unk10);
for (i=0; i < c->unk10; i++){
D_80119C28[i] = 32767;
}
gAlSndPlayer->drvr = alGlobals;
gAlSndPlayer->node.next = NULL;
gAlSndPlayer->node.handler = &_sndpVoiceHandler;
gAlSndPlayer->node.clientData = gAlSndPlayer;
alSynAddPlayer(gAlSndPlayer->drvr, gAlSndPlayer);
sp_38.type = 32;
alEvtqPostEvent(&(gAlSndPlayer->evtq), &sp_38, gAlSndPlayer->frameTime);
gAlSndPlayer->nextDelta = alEvtqNextEvent(&(gAlSndPlayer->evtq), &(gAlSndPlayer->nextEvent));
}
#endif
GLOBAL_ASM("asm/non_matchings/unknown_003260/_sndpVoiceHandler.s")
GLOBAL_ASM("asm/non_matchings/unknown_003260/_handleEvent.s")
GLOBAL_ASM("asm/non_matchings/unknown_003260/func_8000410C.s")
@@ -182,7 +253,7 @@ void func_8000488C(u8* arg0){
((u32*)(&sp_18))[1] = (u32) arg0;
if(arg0){
arg0[0x3e] &= ~(1<<4);
alEvtqPostEvent(&(D_800DC6BC->evtq), &sp_18, 0);
alEvtqPostEvent(&(gAlSndPlayer->evtq), &sp_18, 0);
}
}
GLOBAL_ASM("asm/non_matchings/unknown_003260/func_800048D8.s")
@@ -192,8 +263,16 @@ void func_800049D8(void) {
}
void func_800049F8(void * sndState,s16 type, u32 arg2){
ALSndpEvent sp_18;
sp_18.snd_event.type = type;
sp_18.snd_event.state = sndState;
sp_18.snd_event.unk04 = arg2;
if(sndState){
alEvtqPostEvent(&(gAlSndPlayer->evtq), &sp_18,0);
}
GLOBAL_ASM("asm/non_matchings/unknown_003260/func_800049F8.s")
}
u16 func_80004A3C(u8 arg0){
return D_80119C28[arg0];
+1 -1
View File
@@ -98,7 +98,7 @@ D_800DC6A0 = 0x800DC6A0;
D_800DC6B0 = 0x800DC6B0;
D_800DC6B4 = 0x800DC6B4;
D_800DC6B8 = 0x800DC6B8;
D_800DC6BC = 0x800DC6BC;
gAlSndPlayer = 0x800DC6BC;
sfxVolumeSlider = 0x800DC6C0;
D_800DC6C4 = 0x800DC6C4;
D_800DC6D0 = 0x800DC6D0;