diff --git a/src/373A0.c b/src/373A0.c index bfeb1d2..638dee0 100644 --- a/src/373A0.c +++ b/src/373A0.c @@ -577,7 +577,7 @@ s32 func_800373D8(void) { // Read the second file from the sub header into D_800FC6DC (0x16F2BD0) func_8004ADB0(D_800FC6EC->offset2, D_800FC6DC, D_800FC6EC->wave_tables_offset - D_800FC6EC->offset2); - // Decompress the yay0 file into D_800FC688 + // Decompress the yay0 file into D_800FC68C D_800FC68C = alHeapAlloc(D_800FC810, 1, 0x157C); func_80050B40(D_800FC6DC, D_800FC68C, 0x157C); // ??? diff --git a/src/373A0.h b/src/373A0.h index d7f225f..46122b3 100644 --- a/src/373A0.h +++ b/src/373A0.h @@ -14,7 +14,7 @@ typedef struct File1Header { /* 0x04 */ u32 wave_tables_offset; /* 0x08 */ u32 num_files; /* 0x0C */ u32 files[1]; -} File1Header; // size = 0xC +} File1Header; // size >= 0x10 typedef struct File2SubHeader1 { /* 0x00 */ u32 offset1; @@ -48,7 +48,7 @@ typedef struct unk_D_800FC6D4_entry { typedef struct unk_D_800FC6D4_008 { /* 0x00 */ u32 unk_00; /* 0x04 */ u8 unk_04; -} unk_D_800FC6D4_008; // size = 0x8 +} unk_D_800FC6D4_008; // size = 0x5 typedef struct unk_D_800FC6D4 { /* 0x00 */ u16 flags; diff --git a/src/fragments/25/fragment25.c b/src/fragments/25/fragment25.c index d901c46..e895b06 100644 --- a/src/fragments/25/fragment25.c +++ b/src/fragments/25/fragment25.c @@ -2,6 +2,7 @@ #include "src/2E460.h" extern unk_D_88400138 D_88400138[]; +extern unk_D_88400100 D_88400100[]; /* static unk_D_88400138 D_88400138[] = { { 0x00000000, { 0xFF, 0xFF, 0xFF, 0xFF } }, { 0x00000001, { 0x4D, 0x4D, 0x4D, 0xFF } }, @@ -10,8 +11,6 @@ static unk_D_88400138 D_88400138[] = { { 0x00000006, { 0xFF, 0xFF, 0x00, 0xFF } }, }; */ - -extern unk_D_88400138 D_88400138[]; /* static unk_D_88400138 D_88400138[] = { { 0, { 0xF0, 0xF0, 0xF0, 0xFF }, { 0xF0, 0xF0, 0xF0, 0xFF } }, @@ -32,9 +31,42 @@ static unk_D_88400138 D_88400138[] = { }; */ +#ifdef NON_MATCHING +s32 func_88400020(s32 arg0) { + s32 v1; + if (arg0 & 7) { + return 2; + } + if (arg0 & 8) { + return 3; + } + if (arg0 & 0x10) { + return 4; + } + if (arg0 & 0x20) { + return 5; + } + if (arg0 & 0x40) { + return 6; + } + v1 = 0; + return v1; +} +#else +s32 func_88400020(s32); #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/25/fragment25/func_88400020.s") +#endif -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/25/fragment25/func_8840007C.s") +unk_D_88400100* func_8840007C(unk_func_80026268_arg0* arg0) { + s32 var_v1; + + if (arg0->unk_02 == 0) { + var_v1 = 1; + } else { + var_v1 = func_88400020(arg0->unk_05); + } + return &D_88400100[var_v1]; +} unk_D_88400138* func_884000C4(s32 arg0) { return &D_88400138[func_8002EDEC(arg0)];