Decompiled `func_80071288`

Almost got `obMain`, still needs some fixing
This commit is contained in:
gijs 2023-10-18 18:27:11 +02:00
parent 97b0b10970
commit b406ea3ad3
2 changed files with 265 additions and 4 deletions

View File

@ -294,7 +294,7 @@ extern s16 D_800E7A1C;
extern s16 D_800E7D68;
extern void func_80073164(u8 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, s16 arg6);
extern s8 D_800A81F0;
// extern s8 D_800A81F0;
typedef struct {
/* 0x00 */ void(*field_0x0)(u32, void*, u32, s32);

View File

@ -1,6 +1,8 @@
#include "common.h"
#include "libmus.h"
extern u16 D_800AEDE2;
INCLUDE_ASM(const s32, "main", func_80070C60);
INCLUDE_ASM(const s32, "main", AddHeap);
@ -11,7 +13,18 @@ INCLUDE_ASM(const s32, "main", __virtual_mem_alloc);
INCLUDE_ASM(const s32, "main", func_800710DC);
INCLUDE_ASM(const s32, "main", func_80071288);
/* 1688 80071288 */
void* func_80071288(u32 arg0) {
u16 temp_s0;
void* ret;
temp_s0 = D_800AEDE2;
D_800AEDE2 = 1;
ret = __virtual_mem_alloc(arg0);
D_800AEDE2 = temp_s0;
return ret;
}
INCLUDE_ASM(const s32, "main", func_800712C4);
@ -39,8 +52,256 @@ INCLUDE_ASM(const s32, "main", func_80071C04);
INCLUDE_ASM(const s32, "main", func_80071E74);
typedef struct {
u8 field_0x0;
u8 field_0x1;
u8 field_0x2;
} Unknown0;
typedef struct {
s16 field_0x0[9];
} Unknown1;
void __calls_copy_controller_data(); /* extern */
void __calls_loads_overlay_array(); /* extern */
void __calls_osViSwapBuffer_8007307C(void**); /* extern */
void __dma_load_loop(s32); /* extern */
void __initialize_song_mem(); /* extern */
void __set_fp_8008A660(void(*)(u16)); /* extern */
void __set_obPtrPtrDisplayList(Gfx**); /* extern */
void __set_vi_mode(s32); /* extern */
void func_80070C60(s32*, s32); /* extern */
void func_80072710(); /* extern */
void func_800727D8(); /* extern */
u8 func_800728BC(); /* extern */
u8 func_80072900(); /* extern */
s32 func_80073F58(); /* extern */
void func_800746C8(); /* extern */
void func_800749C0(s32); /* extern */
void func_800764E0(); /* extern */
void func_80079380(); /* extern */
void func_8008A040(); /* extern */
void func_8008A1B0(); /* extern */
s8 func_8008A260(); /* extern */
void func_8009DAEC(); /* extern */
void func_800E9CEC(); /* extern */
void func_800EA714(); /* extern */
void func_800EA8E0(); /* extern */
void func_8016C900(); /* extern */
void func_8016CD50(s32); /* extern */
void func_80179060(); /* extern */
void func_8017BDC0(); /* extern */
void func_80184D70(); /* extern */
void obControllerInit(); /* extern */
extern s32 D_800A81F4;
extern s32 D_800A8204;
extern Unknown0 D_800A8210;
extern Unknown1 D_800ABD80;
extern Unknown1 D_800E9C08;
extern s8 D_800A8213;
extern u8 D_800AEF98;
extern s8 D_800AEF99;
extern s8 D_800AEF9A;
extern s32 D_800AEF9C;
extern s8 D_800AEFA0;
extern s32 D_800AEFA4;
extern s8 D_800C4808;
extern s32 D_800C4BCC;
extern s8 D_800C4CE4;
extern s8 D_800E7A0C;
extern s8 D_800E810C;
extern s8 D_800E82C4;
extern s32 D_800EB8F0;
extern s32 D_8018FDC0;
extern s32 D_80190F10;
extern s32 D_80243DB0;
extern OSContPad __GLOBAL_CONTROLLER_DATA_COPY[4];
extern struct {
// s32 field_0x0;
// s32 field_0x4;
// s32 field_0x8;
OSContPad* field_0xc[4];
} D_800C47F0;
extern u16 __MAIN_START_BUT_CHECK;
extern s16 __MAIN_START_BUT_STATE;
extern void func_8007284C(u16);
extern void func_8016AF80();
extern void func_80197B70();
extern struct {
s8 field_0x0;
s8 field_0x1;
s8 field_0x2;
} D_800A81F0;
DECLARE_SEGMENT(segment_song);
DECLARE_SEGMENT(segment_obdata);
INCLUDE_ASM(const s32, "main", obMain);
// void obMain(void* arg0) {
// s32 i;
// osAiSetFrequency(32000);
// func_8008A1B0();
// bzero(func_800E9C20, (u8*)0x80400000 - (u8*)&func_800E9C20);
// obControllerInit();
// D_800E82C4 = func_8008A260();
// for(i = 0; i < 4; i++)
// D_800C47F0.field_0xc[i] = &__GLOBAL_CONTROLLER_DATA_COPY[i];
// // i = 3;
// // var_v1 = &D_800C47FC;
// // var_v0 = &__GLOBAL_CONTROLLER_DATA_COPY[3];
// // do {
// // *var_v1 = var_v0;
// // var_v1 -= 4;
// // i -= 1;
// // var_v0 -= 6;
// // } while (i >= 0);
// D_800AEF9A = 0;
// __set_fp_8008A660(func_8007284C);
// func_8008A040();
// osInvalICache(SEGMENT_TEXT_START(segment_song), SEGMENT_TEXT_SIZE(segment_song));
// osInvalDCache(
// SEGMENT_DATA_START(segment_song),
// SEGMENT_RODATA_END(segment_song) - SEGMENT_DATA_START(segment_song)
// );
// __calls_romCopy_8009DA50(
// SEGMENT_ROM_START(segment_song),
// SEGMENT_VRAM_START(segment_song),
// SEGMENT_ROM_SIZE(segment_song)
// );
// if (SEGMENT_BSS_START(segment_song) != SEGMENT_BSS_END(segment_song)) {
// bzero(SEGMENT_BSS_START(segment_song), SEGMENT_BSS_SIZE(segment_song));
// }
// func_800E9CEC();
// func_800E9C20();
// MusSetMasterVolume(MUSFLAG_EFFECTS, 0x67FF);
// MusSetMasterVolume(MUSFLAG_SONGS, 0x7FFF);
// D_800AEF98 = 0;
// while(true) {
// func_800EA714();
// __initialize_song_mem();
// osInvalICache(SEGMENT_TEXT_START(segment_obdata), SEGMENT_TEXT_SIZE(segment_obdata));
// osInvalDCache(
// SEGMENT_DATA_START(segment_obdata),
// SEGMENT_RODATA_END(segment_obdata) - SEGMENT_DATA_START(segment_obdata)
// );
// __calls_romCopy_8009DA50(
// SEGMENT_ROM_START(segment_obdata),
// SEGMENT_VRAM_START(segment_obdata),
// SEGMENT_ROM_SIZE(segment_obdata)
// );
// if (SEGMENT_BSS_START(segment_obdata) != SEGMENT_BSS_END(segment_obdata)) {
// bzero(SEGMENT_BSS_START(segment_obdata), SEGMENT_BSS_SIZE(segment_obdata));
// }
// bzero(SEGMENT_BSS_START(segment_obdata), SEGMENT_BSS_SIZE(segment_obdata));
// func_80089AB0(&D_800A8204, 3);
// set_swap_buffer_func(__calls_osViSwapBuffer_8007307C);
// bzero(D_800A81C0, 0x30);
// D_800A81F0.field_0x0 = 0;
// // D_800A81F0.field_0x1 = 0;
// // D_800A81F0.field_0x2 = 0;
// D_800A8210.field_0x0 = 0;
// D_800A8210.field_0x1 = 0;
// D_800A8210.field_0x2 = 0;
// D_800A8213 = 0;
// D_800E7A0C = 1;
// D_800C4808 = 0;
// D_800E810C = 0;
// D_800C4CE4 = 1;
// D_800AEFA0 = 0;
// D_800A81F4 = 0;
// D_800AEFA4 = D_800C4BCC;
// if (D_800AEF98 != 3) {
// D_800E9C08 = D_800ABD80;
// }
// D_800AEF98 = 0;
// D_800AEF99 = 0;
// func_800727D8();
// func_80070C60(&D_80243DB0, (u8*)0x80400000 - (u8*)&D_80243DB0);
// func_8009DAEC();
// func_80079380();
// func_80072710();
// __calls_copy_controller_data();
// if (__MAIN_START_BUT_CHECK & 0x1000) {
// __MAIN_START_BUT_STATE = 0x18;
// } else {
// __MAIN_START_BUT_STATE = 9;
// }
// func_80179060();
// func_800EA8E0();
// func_80173610();
// func_80073164(0, 8, 2, 0x40, 0x40, 0x100, 0x1000);
// D_800AEF9C = 0;
// D_800C4B20 = 0;
// D_800A8213 = 0;
// D_800A8210.field_0x0 = 0;
// D_800A8210.field_0x1 = 0;
// D_800A8210.field_0x2 = 0;
// __set_obPtrPtrDisplayList(&obPtrDisplayList);
// D_8018FDC0 = 0;
// func_8017BDC0();
// func_80184D70();
// func_8016C900();
// bzero(D_80197168, 0x10);
// func_800746C8();
// func_800749C0(0xE);
// func_800764E0();
// if (__MAIN_NOT_NULL_INF_LOOP != 0)
// while(true);
// func_80072900();
// __set_black();
// __set_vi_mode(2);
// func_8016CD50(0);
// __set_black();
// func_800728BC();
// __calls_loads_overlay_array();
// func_80072900();
// __set_black();
// __dma_load_loop(5);
// __set_vi_mode(2);
// func_8016CD50(0);
// __set_black();
// do {
// __dma_load_loop(1);
// } while (func_80073F58() != 0);
// __initialize_song_mem();
// MusStop(MUSFLAG_SONGS | MUSFLAG_EFFECTS, 8);
// while (MusAsk(MUSFLAG_SONGS | MUSFLAG_EFFECTS))
// __dma_load_loop(1);
// }
// }
INCLUDE_ASM(const s32, "main", func_80072398);
/* 2B10 80072710 */
@ -85,7 +346,7 @@ loop_2:
}
extern u8 D_800AEF9A;
extern s8 D_800AEF9A;
void func_8007284C(u16 __unused) {
const u16 pattern_a = CONT_A | CONT_B | CONT_L | CONT_START;
@ -240,7 +501,7 @@ void func_8007328C(void) {
D_800AEE72 = 2;
bzero(&D_800A81C0, 0x30);
D_800A81F0 = 0;
D_800A81F0.field_0x0 = 0;
}
/* 377C 8007337C */