c: func_80001728

This commit is contained in:
Mittenshugg
2020-08-11 16:51:17 -05:00
parent 1ae00a905c
commit f9f0c6e9ba
7 changed files with 133 additions and 76 deletions
@@ -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)
@@ -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
+1 -1
View File
@@ -27,7 +27,7 @@ glabel D_800DC644
glabel D_800DC648
.word 0x00000000
glabel D_800DC64C
glabel audioPrevCount
.word 0x00000000
glabel D_800DC650
+1
View File
@@ -265,6 +265,7 @@ typedef struct {
ALHeap *heap;
s32 outputRate; /* output sample rate */
ALFxId fxType;
u8 unk1d;
s32 *params;
} ALSynConfig;
+64 -26
View File
@@ -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;
+59 -16
View File
@@ -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")
+2 -2
View File
@@ -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;