Compare commits

...

15 Commits

Author SHA1 Message Date
gijs b406ea3ad3 Decompiled `func_80071288`
Almost got `obMain`, still needs some fixing
2023-10-18 18:27:11 +02:00
gijs 97b0b10970 Changed `obStackMain` to be used differently in different functions as I think it's an alias 2023-10-18 17:33:01 +02:00
gijs 129cce1e39 Changed `__GLOBAL_CONT_STATUS` to occopy 0x10 bytes 2023-10-18 17:32:04 +02:00
gijs 4f499b1f0f Decompiled `func_800764E0` and fixed `func_80077494` a bit 2023-10-18 17:05:12 +02:00
gijs 9875a517ee Fixed `__read_controller` call 2023-10-18 16:04:32 +02:00
gijs 8afad0eccf Fixed typing of `__GLOBAL_CONTROLLER_DATA_COPY` 2023-10-18 15:37:45 +02:00
gijs 0ab5a65328 Fixed unknown regressions for `UnusedMallocNo` 2023-10-18 15:35:27 +02:00
gijs 1cb760c99a Decompiled `func_80076E2C` 2023-10-18 14:12:08 +02:00
gijs 969059eeaa Added `D_800E82C8` and `D_800C4C10` to symbols 2023-10-18 14:09:18 +02:00
gijs 6c7da7abc9 Removed address of `__osViSwapBuffer_3` 2023-10-18 13:44:37 +02:00
gijs a7b4a9c109 Decompiled `func_80077494` 2023-10-18 13:30:09 +02:00
gijs ce7f900afd Decompiled `func_80072710` 2023-10-10 13:47:34 +02:00
gijs 961718f707 Decompiled `func_800727D8` 2023-10-10 13:36:03 +02:00
gijs 20a36e05df Decompiled `func_8007337C` 2023-10-10 13:30:01 +02:00
gijs d59bf67d23 Decompiled `func_8007338C` 2023-10-10 13:28:33 +02:00
8 changed files with 493 additions and 28 deletions

View File

@ -62,6 +62,10 @@ typedef u8 bool;
#define false 0 #define false 0
#define true 1 #define true 1
#define OS_TV_TYPE_PAL 0
#define OS_TV_TYPE_NTSC 1
#define OS_TV_TYPE_MPAL 2
#define MAX_BYTES_TO_READ 512 #define MAX_BYTES_TO_READ 512
#define ARRAY_LENGTH(x) ((sizeof(x)) / (sizeof(x[0]))) #define ARRAY_LENGTH(x) ((sizeof(x)) / (sizeof(x[0])))
@ -157,7 +161,9 @@ extern OSContStatus __GLOBAL_CONT_STATUS[MAXCONTROLLERS];
extern OSMesgQueue MQ_CONTROLLER; extern OSMesgQueue MQ_CONTROLLER;
extern void (*D_800A9FE0)(s16); extern void (*D_800A9FE0)(s16);
extern OSMesgQueue MQ_800C4A00; extern OSMesgQueue MQ_800C4A00;
extern OSContPad __GLOBAL_CONTROLLER_DATA;
extern OSContPad __GLOBAL_CONTROLLER_DATA[MAXCONTROLLERS];
extern OSContPad __GLOBAL_CONTROLLER_DATA_COPY[MAXCONTROLLERS];
extern u8 D_800AA040; extern u8 D_800AA040;
extern void (*SWAP_BUFFER_FUNC_800A9E8C)(void** buffers); extern void (*SWAP_BUFFER_FUNC_800A9E8C)(void** buffers);
@ -288,7 +294,7 @@ extern s16 D_800E7A1C;
extern s16 D_800E7D68; extern s16 D_800E7D68;
extern void func_80073164(u8 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, s16 arg6); 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 { typedef struct {
/* 0x00 */ void(*field_0x0)(u32, void*, u32, s32); /* 0x00 */ void(*field_0x0)(u32, void*, u32, s32);
@ -357,7 +363,7 @@ extern void obIdle(void*);
extern void obMain(void*); extern void obMain(void*);
extern OSThread obThreadMain; extern OSThread obThreadMain;
extern u8 obStackMain[]; // extern u8 obStackMain[];
extern OSThread obThreadIdle; extern OSThread obThreadIdle;
extern u8 obStackIdle[]; extern u8 obStackIdle[];
@ -602,4 +608,9 @@ extern SomethingMusic __MAYBE_SONG_800EB290;
extern char *obStrategyName[]; extern char *obStrategyName[];
extern char *obGetStrategyName(u8 index); extern char *obGetStrategyName(u8 index);
extern s8 D_800A8213;
extern s16 D_800AEE90;
extern s16 D_800AEF10;
#endif #endif

View File

@ -622,6 +622,9 @@ D_800E7D90 = 0x800E7D90; // size:0x58
D_800E7DE8 = 0x800E7DE8; // size:0x58 D_800E7DE8 = 0x800E7DE8; // size:0x58
D_800AEFE0 = 0x800AEFE0; // size:0x8 D_800AEFE0 = 0x800AEFE0; // size:0x8
D_800E82C8 = 0x800E82C8; // size:0x3F0 type:u8
D_800C4C10 = 0x800C4C10; // size:0xC type:u8
VALID_LHA_MAGIC = 0x800A8750; // type:u32 size:0x24 VALID_LHA_MAGIC = 0x800A8750; // type:u32 size:0x24
STR_LHa___s_s__s = 0x800AE30C; // type:asciz STR_LHa___s_s__s = 0x800AE30C; // type:asciz
@ -688,7 +691,7 @@ __MENU_INDEX = 0x801BA94C;
__GLOBAL_WITH__inc_menu_timer = 0x8018FB20; __GLOBAL_WITH__inc_menu_timer = 0x8018FB20;
__GLOBAL_CONT_STATUS = 0x800C4B38; __GLOBAL_CONT_STATUS = 0x800C4B38; // size:0x10 type:u32
__set_fp_8008A660 = 0x8008A660; __set_fp_8008A660 = 0x8008A660;

View File

@ -1,7 +1,43 @@
#include "common.h" #include "common.h"
void func_8008A5D0();
void func_8008A640();
extern OSMesg OSMESG_800BE190;
extern OSMesg OSMESG_800BE194;
extern u32 obStackMain;
/* 1A660 8008A260 */
u8 func_8008A260(void) {
s32 var_a0;
s32 var_a1;
s32 var_v1;
func_8008A5D0();
osCreateMesgQueue(&MQ_800C4A00, &OSMESG_800BE190, 1);
osCreateMesgQueue(&MQ_800E9BF0, &OSMESG_800BE194, 1);
func_8008B130(&D_800A9FF8);
func_8008A640();
var_a0 = 1;
var_a1 = 0;
var_v1 = 0;
obStackMain = 0;
for(; var_v1 < MAXCONTROLLERS; var_v1++) {
if (__GLOBAL_CONT_STATUS[var_v1].errno == 0) {
if ((__GLOBAL_CONT_STATUS[var_v1].type & CONT_TYPE_MASK) == CONT_TYPE_NORMAL) {
var_a1 |= var_a0;
obStackMain += 1;
}
var_a0 *= 2;
}
}
return var_a1;
}
INCLUDE_ASM(const s32, "_ob_prized_reading", func_8008A260);
void func_8008A334(void) { void func_8008A334(void) {
func_8008B1D0(&D_800A9FF8); func_8008B1D0(&D_800A9FF8);
@ -50,7 +86,7 @@ s32 __real_read_controller(void) {
s32 __calls_read_controller_0(s16* arg0) { s32 __calls_read_controller_0(s16* arg0) {
if (D_800C4B30 == 0) { if (D_800C4B30 == 0) {
osRecvMesg(&MQ_800C4A00, NULL, 0); osRecvMesg(&MQ_800C4A00, NULL, 0);
__read_controller(&__GLOBAL_CONTROLLER_DATA, 1); __read_controller(__GLOBAL_CONTROLLER_DATA, 1);
if (D_800A9FE0 != NULL) { if (D_800A9FE0 != NULL) {
D_800A9FE0(*arg0); D_800A9FE0(*arg0);
} }
@ -72,7 +108,7 @@ s32 __calls_read_controller_2(s16* arg0) {
s32 var_v0; s32 var_v0;
osRecvMesg(&MQ_800C4A00, NULL, 0); osRecvMesg(&MQ_800C4A00, NULL, 0);
var_v0 = __read_controller(&__GLOBAL_CONTROLLER_DATA, 0); var_v0 = __read_controller(__GLOBAL_CONTROLLER_DATA, 0);
if (var_v0 == 0) { if (var_v0 == 0) {
if (D_800A9FE0 != NULL) { if (D_800A9FE0 != NULL) {
D_800A9FE0(*arg0); D_800A9FE0(*arg0);

View File

@ -8,6 +8,56 @@ typedef struct {
extern SomethingMalloc D_800E8300[]; extern SomethingMalloc D_800E8300[];
extern s32* D_800C4804;
extern s32 D_800C480A;
extern s32 D_800C49D2;
extern s32* D_800C4AD4;
extern s32* D_800C4B24;
extern s32 D_800C4B28;
extern s32* D_800C4BAC;
extern s32 D_800C4BB0;
extern s32 D_800C4BD0;
extern s32* D_800C4BDC;
extern s32* D_800C4BE0;
extern s32* D_800C4BE8;
extern s32* D_800C4C0C;
extern s32* D_800C4C4C;
extern s32 D_800E797C;
extern s32 D_800E79BC;
extern s32* D_800E7A08;
extern s32 D_800E7A24;
extern s32* D_800E7D6C;
extern s32 D_800E8100;
extern s32* D_800E8108;
extern s32* D_800E9BC0;
extern s32 __CONTROLLER_0_BUTTON;
extern s32 __MAIN_START_BUT_CHECK;
extern u8 __SOMETHING_WITH_GFX;
extern u16 D_800C4C10[6];
extern struct {
s16 field_0x0;
s8 field_0x2;
s8 field_0x3;
s8 field_0x4;
} D_800AF0A0;
extern s32 D_800AF0B0;
extern s16 D_800C49D0;
extern s32 D_800C4C20;
extern s32 D_800E79A0;
extern u8 D_800E82C8[0x3F0];
extern s16 D_800AF0A6[4];
extern void* D_800AF090[4];
extern void* D_800C47F0[4];
extern void func_8007819C();
extern void func_8009C7C0(s32 time); // this function doesnt take an s64
extern s32 func_80173B60(s32);
INCLUDE_ASM(const s32, "_ob_rabid_jar", __calls_loads_overlay_array); 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);
@ -52,7 +102,35 @@ INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076324);
INCLUDE_ASM(const s32, "_ob_rabid_jar", __get_overlay_index); INCLUDE_ASM(const s32, "_ob_rabid_jar", __get_overlay_index);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800764E0); // INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800764E0);
/* 68E0 800764E0 */
void func_800764E0(void) {
u16 i;
osGetTime();
bzero(D_800E82C8, 0x3F0);
bzero(D_800C4C10, sizeof(D_800C4C10));
D_800C4C20 = 1;
D_800E79A0 = 8;
D_800C49D0 = 0;
D_800AF0B0 = 0;
D_800AF0A0.field_0x0 = 0;
D_800AF0A0.field_0x3 = 0;
D_800AF0A0.field_0x2 = 0;
D_800AF0A0.field_0x4 = 0;
for(i = 0; i < 4; i++) {
D_800AF0A6[i] = 0;
D_800AF090[i] = &D_800AF0A0;
}
func_8009C7C0(osGetTime());
D_800AF0B0 = func_80173B60(D_800AF0B0);
func_8007819C();
}
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800765D8); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800765D8);
@ -62,7 +140,13 @@ INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076DC8);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076E00); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076E00);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076E2C); s32 func_80173B60(s32); /* extern */
extern s32 D_800AF0B0;
/* 722C 80076E2C */
void func_80076E2C(void) {
D_800AF0B0 = func_80173B60(D_800AF0B0);
}
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076E58); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076E58);
@ -109,7 +193,39 @@ INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007740C);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007745C); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007745C);
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077494); /* 7894 80077494 */
void func_80077494(s32 arg0) {
if (arg0 == D_800C4C10[0]) {
D_800C4BE0 = D_800C47F0;
D_800E8108 = &__MAIN_START_BUT_CHECK;
D_800C4BDC = &D_800E8100;
D_800C4804 = &D_800C4BD0;
D_800C4C0C = &D_800E79BC;
D_800C4BE8 = &D_800C49D2;
D_800C4AD4 = &D_800E7A24;
D_800E9BC0 = &D_800E797C;
D_800E7A08 = &D_800C480A;
D_800C4BAC = &__SOMETHING_WITH_GFX + 4;
D_800C4B24 = &D_800C4B28;
D_800E7D6C = &D_800C4BB0;
D_800C4C4C = &__CONTROLLER_0_BUTTON;
} else {
D_800C4BE0 = D_800AF090;
D_800E8108 = &D_800AF0A6;
D_800C4BDC = &D_800AF0A6;
D_800C4804 = &D_800AF0A6;
D_800C4C0C = &D_800AF0A6;
D_800C4BE8 = &D_800AF0A6;
D_800C4AD4 = &D_800AF0A6;
D_800E9BC0 = &D_800AF0A6;
D_800E7A08 = &D_800AF0A6;
D_800C4BAC = &D_800AF0A6;
D_800C4B24 = &D_800AF0A6;
D_800E7D6C = &D_800AF0A6;
D_800C4C4C = &D_800AF0A6;
}
}
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800775EC); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800775EC);

View File

@ -8,7 +8,7 @@ void func_8008A1B0(void) {
__start_thread_800BE1C0(); __start_thread_800BE1C0();
func_80089AB0(&__SOMETHING_FRAMEBUFFERS, 3); func_80089AB0(&__SOMETHING_FRAMEBUFFERS, 3);
D_800C4B20 = BOOT_ADDRESS_ULTRA; D_800C4B20 = BOOT_ADDRESS_ULTRA;
set_swap_buffer_func(&__osViSwapBuffer_3); set_swap_buffer_func(__osViSwapBuffer_3);
D_800C4CE0 = &D_800A9EB0; D_800C4CE0 = &D_800A9EB0;
__start_thread_800B9C88(); __start_thread_800B9C88();

View File

@ -1,5 +1,7 @@
#include "common.h" #include "common.h"
extern u8 obStackMain[];
void boot(void) { void boot(void) {
osInitialize(); osInitialize();
osCreateThread(&obThreadIdle, 1, obIdle, NULL, obStackIdle, 0xA); osCreateThread(&obThreadIdle, 1, obIdle, NULL, obStackIdle, 0xA);

View File

@ -1,6 +1,7 @@
#include "common.h" #include "common.h"
#include "libmus.h" #include "libmus.h"
extern u16 D_800AEDE2;
INCLUDE_ASM(const s32, "main", func_80070C60); INCLUDE_ASM(const s32, "main", func_80070C60);
@ -12,7 +13,18 @@ INCLUDE_ASM(const s32, "main", __virtual_mem_alloc);
INCLUDE_ASM(const s32, "main", func_800710DC); 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); INCLUDE_ASM(const s32, "main", func_800712C4);
@ -40,18 +52,301 @@ INCLUDE_ASM(const s32, "main", func_80071C04);
INCLUDE_ASM(const s32, "main", func_80071E74); 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); 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); INCLUDE_ASM(const s32, "main", func_80072398);
INCLUDE_ASM(const s32, "main", func_80072710); /* 2B10 80072710 */
void func_80072710(void) {
if ((u32)(osTvType - 1) >= OS_TV_TYPE_MPAL) {
while(1);
}
}
INCLUDE_ASM(const s32, "main", __set_vi_mode); INCLUDE_ASM(const s32, "main", __set_vi_mode);
INCLUDE_ASM(const s32, "main", func_800727D8); /* 2BD8 800727D8 */
void func_800727D8(void) {
s16* var_a0;
s16* var_a2;
s16* var_a3;
s16* var_v1;
s32 var_a1;
s32 var_t0;
extern u8 D_800AEF9A; var_t0 = 0;
extern OSContPad __GLOBAL_CONTROLLER_DATA; var_a3 = &D_800AEF10;
var_a2 = &D_800AEE90;
do {
var_a1 = 0;
var_a0 = var_a2;
var_v1 = var_a3;
loop_2:
*var_v1 = 0;
*var_a0 = 0;
var_a0 += 1;
var_a1 += 1;
var_v1 += 1;
if (var_a1 < 0x10) {
goto loop_2;
}
var_a3 += 0x10;
var_t0 += 1;
var_a2 += 0x10;
} while (var_t0 < 4);
bzero(__GLOBAL_CONTROLLER_DATA_COPY, sizeof(__GLOBAL_CONTROLLER_DATA_COPY));
}
extern s8 D_800AEF9A;
void func_8007284C(u16 __unused) { void func_8007284C(u16 __unused) {
const u16 pattern_a = CONT_A | CONT_B | CONT_L | CONT_START; const u16 pattern_a = CONT_A | CONT_B | CONT_L | CONT_START;
@ -59,11 +354,11 @@ void func_8007284C(u16 __unused) {
if ((D_800AEF9A & 1) && !(D_800AEF9A & 4)) { if ((D_800AEF9A & 1) && !(D_800AEF9A & 4)) {
if (D_800AEF9A & 2) { if (D_800AEF9A & 2) {
if (__GLOBAL_CONTROLLER_DATA.button == 0) { if (__GLOBAL_CONTROLLER_DATA[0].button == 0) {
D_800AEF9A = D_800AEF9A & 0xFD; D_800AEF9A = D_800AEF9A & 0xFD;
} }
} else if (__GLOBAL_CONTROLLER_DATA.button == pattern_a || } else if (__GLOBAL_CONTROLLER_DATA[0].button == pattern_a ||
__GLOBAL_CONTROLLER_DATA.button == pattern_b) { __GLOBAL_CONTROLLER_DATA[0].button == pattern_b) {
D_800AEF9A = D_800AEF9A | 6; D_800AEF9A = D_800AEF9A | 6;
} }
} }
@ -107,10 +402,6 @@ INCLUDE_ASM(const s32, "main", __calls_copy_controller_data);
extern u8 __reset_compared_osTvType(); /* extern */ extern u8 __reset_compared_osTvType(); /* extern */
extern void* D_800C4BB8; extern void* D_800C4BB8;
#define OS_TV_TYPE_PAL 0
#define OS_TV_TYPE_NTSC 1
#define OS_TV_TYPE_MPAL 2
/* 347C 8007307C */ /* 347C 8007307C */
void __calls_osViSwapBuffer_8007307C(void** buffers) void __calls_osViSwapBuffer_8007307C(void** buffers)
{ {
@ -210,13 +501,18 @@ void func_8007328C(void) {
D_800AEE72 = 2; D_800AEE72 = 2;
bzero(&D_800A81C0, 0x30); bzero(&D_800A81C0, 0x30);
D_800A81F0 = 0; D_800A81F0.field_0x0 = 0;
} }
/* 377C 8007337C */
void func_8007337C(void) {
D_800A8213 = 1;
}
INCLUDE_ASM(const s32, "main", func_8007337C); /* 378C 8007338C */
u8 func_8007338C(void) {
INCLUDE_ASM(const s32, "main", func_8007338C); return D_800A8213;
}
INCLUDE_ASM(const s32, "main", func_80073398); INCLUDE_ASM(const s32, "main", func_80073398);

View File

@ -41,3 +41,4 @@ D_800EB0E8 = 0x800EB0E8;
D_800E8C2C = 0x800E8C2C; D_800E8C2C = 0x800E8C2C;
D_80187BCC = 0x80187BCC; D_80187BCC = 0x80187BCC;
D_800E8300 = 0x800E8300;