Merged `__read_u32_le` and `UnpackProc` from `lha.c` to `_ob_rabid_jar`

This commit is contained in:
gijs 2023-09-30 00:58:19 +02:00
parent 9e1dd54094
commit 2efd0cbbe9
3 changed files with 59 additions and 12 deletions

View File

@ -253,7 +253,7 @@ typedef struct {
ASSERT_SIZE(OverlaySomething, 0x14); ASSERT_SIZE(OverlaySomething, 0x14);
extern OverlaySomething* (*D_800AF028[24])(void); extern OverlaySomething* (*D_800AF028[])(void);
extern OverlaySomething* D_800E8294; extern OverlaySomething* D_800E8294;
@ -270,7 +270,7 @@ extern void __setup_overlay_87200(void);
extern void __setup_overlay_71280_51674(void); extern void __setup_overlay_71280_51674(void);
extern void __setup_overlay_71280_51940(void); extern void __setup_overlay_71280_51940(void);
extern u32* func_80076188(void); extern OverlaySomething* func_80076188(void);
extern void func_80076194(void); extern void func_80076194(void);
extern void func_800761A4(void); extern void func_800761A4(void);
extern void __loads_overlay_array(s32 arg0); extern void __loads_overlay_array(s32 arg0);
@ -387,7 +387,7 @@ extern void func_801C889C(s32 arg0);
extern void func_8007337C(void); extern void func_8007337C(void);
extern void func_801C8864(void); extern void func_801C8864(void);
extern u32 D_800A872C[]; extern OverlaySomething D_800A872C;
extern CharacterSlot CHARACTER_SLOT[0x64]; extern CharacterSlot CHARACTER_SLOT[0x64];

View File

@ -12,8 +12,27 @@ INCLUDE_ASM(const s32, "_ob_rabid_jar", __calls_loads_overlay_array);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076150); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076150);
/* 6550 80076150 */
// s8 func_80076150(u16 arg0) {
// switch (arg0) {
// case 3:
// case 4:
// case 5:
// case 6:
// case 7:
// case 10:
// case 11:
// case 15:
// case 18:
// case 23:
// return 0;
// default:
// return 1;
// }
// }
/* 6588 80076188 */ /* 6588 80076188 */
u32* func_80076188(void) { OverlaySomething* func_80076188(void) {
return &D_800A872C; return &D_800A872C;
} }
@ -162,7 +181,10 @@ INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007A070);
INCLUDE_ASM(const s32, "_ob_rabid_jar", Unpack); INCLUDE_ASM(const s32, "_ob_rabid_jar", Unpack);
INCLUDE_ASM(const s32, "_ob_rabid_jar", __read_u32_le); /* ABE0 8007A7E0 */
u32 __read_u32_le(u8* arg0) {
return (arg0[0] << 24) | (arg0[1] << 16) | (arg0[2] << 8) | arg0[3];
}
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007A80C); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007A80C);
@ -172,4 +194,29 @@ INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007AB7C);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007ABAC); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007ABAC);
INCLUDE_ASM(const s32, "_ob_rabid_jar", UnpackProc); void Unpack(s32, s32);
extern OSMesgQueue MQ_800AF320;
/* B030 8007AC30 */
void UnpackProc(void) {
struct {
/* 0x00 */ s32 field_0x0;
/* 0x04 */ OSMesgQueue* field_0x4;
/* 0x08 */ u8 field_0x8;
/* 0x09 */ u8 field_0x9[3];
/* 0x0C */ s32 field_0xc;
/* 0x10 */ s32 field_0x10;
} *sp10;
sp10 = NULL;
while(1) {
osRecvMesg(&MQ_800AF320, &sp10, 1);
if (sp10->field_0x8 == 1) {
Unpack(sp10->field_0x10, sp10->field_0xc);
osSendMesg(sp10->field_0x4, sp10, 1);
} else {
osSyncPrintf("UnpackProc: no supported format %d\n", sp10->field_0x8);
}
}
}

View File

@ -222,12 +222,12 @@ u8* __SOME_OVERLAY_ID_ARRAY[] = {
u32 D_800A8728 = NULL; u32 D_800A8728 = NULL;
/* 38B2C 800A872C */ /* 38B2C 800A872C */
u32 D_800A872C[] = { OverlaySomething D_800A872C = {
0x800761A4, .setup = func_800761A4,
0x00000000, .field_0x4 = 0x00000000,
0x00000000, .field_0x8 = 0x00000000,
0x00000000, .field_0xc = 0x00000000,
0x0000000C .field_0x10 = 0x0000000C
}; };
/* 38B40 800A8740 */ /* 38B40 800A8740 */