diff --git a/asm/non_matchings/unknown_001050/func_800021B0.s b/asm/non_matchings/unknown_001050/func_800021B0.s deleted file mode 100644 index d907063a..00000000 --- a/asm/non_matchings/unknown_001050/func_800021B0.s +++ /dev/null @@ -1,34 +0,0 @@ -glabel func_800021B0 -/* 002DB0 800021B0 308EFFFF */ andi $t6, $a0, 0xffff -/* 002DB4 800021B4 AFA40000 */ sw $a0, ($sp) -/* 002DB8 800021B8 19C0000D */ blez $t6, .L800021F0 -/* 002DBC 800021BC 01C01825 */ move $v1, $t6 -/* 002DC0 800021C0 3C0F8011 */ lui $t7, %hi(D_80115D14) # $t7, 0x8011 -/* 002DC4 800021C4 8DEF5D14 */ lw $t7, %lo(D_80115D14)($t7) -/* 002DC8 800021C8 00034080 */ sll $t0, $v1, 2 -/* 002DCC 800021CC 8DF80004 */ lw $t8, 4($t7) -/* 002DD0 800021D0 00000000 */ nop -/* 002DD4 800021D4 8F04000C */ lw $a0, 0xc($t8) -/* 002DD8 800021D8 00000000 */ nop -/* 002DDC 800021DC 8499000E */ lh $t9, 0xe($a0) -/* 002DE0 800021E0 00884821 */ addu $t1, $a0, $t0 -/* 002DE4 800021E4 032E082A */ slt $at, $t9, $t6 -/* 002DE8 800021E8 10200003 */ beqz $at, .L800021F8 -/* 002DEC 800021EC 00000000 */ nop -.L800021F0: -/* 002DF0 800021F0 03E00008 */ jr $ra -/* 002DF4 800021F4 00001025 */ move $v0, $zero - -.L800021F8: -/* 002DF8 800021F8 8D2A000C */ lw $t2, 0xc($t1) -/* 002DFC 800021FC 00000000 */ nop -/* 002E00 80002200 8D4B0000 */ lw $t3, ($t2) -/* 002E04 80002204 00000000 */ nop -/* 002E08 80002208 8D620004 */ lw $v0, 4($t3) -/* 002E0C 8000220C 00000000 */ nop -/* 002E10 80002210 244C0001 */ addiu $t4, $v0, 1 -/* 002E14 80002214 2D8C0001 */ sltiu $t4, $t4, 1 -/* 002E18 80002218 318200FF */ andi $v0, $t4, 0xff -/* 002E1C 8000221C 03E00008 */ jr $ra -/* 002E20 80002220 00000000 */ nop - diff --git a/src/unknown_001050.c b/src/unknown_001050.c index dcd6eeb3..13ad0bb3 100644 --- a/src/unknown_001050.c +++ b/src/unknown_001050.c @@ -52,25 +52,9 @@ extern u8 D_80115D04; extern u8 D_80115D05; extern s32 musicTempo; -extern ALBank ** D_80115D10; +extern ALBankFile *D_80115D10; - -typedef struct unk80115D14_4_C { - u8 pad0[0xE]; - u16 unkE; -} unk80115D14_4_C; - -typedef struct unk80115D14_4 { - u8 pad0[0xC]; - unk80115D14_4_C* unkC; -} unk80115D14_4; - -typedef struct unk80115D14 { - u8 pad0[4]; - unk80115D14_4* unk4; -} unk80115D14; - -extern unk80115D14 *D_80115D14; +extern ALBankFile *D_80115D14; /* Size: 0x0A bytes */ typedef struct unk80115D18 { @@ -103,8 +87,21 @@ extern s8 D_80115F78; extern s8 D_80115F79; extern s32 D_80115F7C; - +#if 1 GLOBAL_ASM("asm/non_matchings/unknown_001050/func_80000450.s") +#else +void func_80000450(void){ + u32 *tmp; + ALBankFile *tmp2; + alHeapInit(&gALHeap, &D_800EBF60, 0x00029D88); + tmp = func_80076C58(38); + D_80115D14 = (ALBankFile*) func_80070C9C(tmp[2] - tmp[1], 0x00FFFFFF); + func_80076E68(39, D_80115D14, tmp[1], tmp[2] - tmp[1]); + alBnkfNew(D_80115D14, func_80076EE8(39, tmp[2])); +} + +#endif + GLOBAL_ASM("asm/non_matchings/unknown_001050/func_80000890.s") void func_80004A60(u8, u16); @@ -399,14 +396,10 @@ void func_80001878(u8 arg0) { } } - u8 func_800018D0(void){ return D_800DC640; } - - - void func_800018E0(void) { if (func_80001C08() == 0) { D_80115D05 = 0; @@ -493,7 +486,7 @@ GLOBAL_ASM("asm/non_matchings/unknown_001050/func_80001F14.s") GLOBAL_ASM("asm/non_matchings/unknown_001050/func_80001FB8.s") u16 func_800020E8(void) { - return D_80115D14->unk4->unkC->unkE; + return D_80115D14->bankArray[0]->instArray[0]->soundCount; } u8 func_80002110(void) { @@ -525,11 +518,16 @@ void func_8000216C(unk80115D1C **arg0, s32 *arg1, s32 *arg2) { } } - - - - +#if 0 GLOBAL_ASM("asm/non_matchings/unknown_001050/func_800021B0.s") +#else +u8 func_800021B0(u16 arg0){ + if(arg0 <= 0 || D_80115D14->bankArray[0]->instArray[0]->soundCount < arg0){ + return 0; + } + return ((u32)(1+ D_80115D14->bankArray[0]->instArray[0]->soundArray[arg0-1]->envelope->decayTime) == 0); +} +#endif #if 0 GLOBAL_ASM("asm/non_matchings/unknown_001050/func_80002224.s") @@ -553,7 +551,7 @@ ALCSPlayer *func_80002224(s32 _max_voices, s32 _max_events){ cseqp = (ALCSPlayer *) alHeapDBAlloc(NULL, 0, &gALHeap, 1, 128); alCSPNew(cseqp, &config); - alCSPSetBank(cseqp, D_80115D10[1]); + alCSPSetBank(cseqp, D_80115D10->bankArray[0]); ((u8*) cseqp)[0x36]= 0x7F; //this member doesn't exist in ALCSPlayer return cseqp; }