#include "common.h" #include "os_message.h" typedef struct { s32 field_0x0; u8 field_0x4[0xA0]; s32 field_0x8; } SomethingMalloc; 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 s32 func_80173B60(s32); INCLUDE_ASM(const s32, "_ob_rabid_jar", __calls_loads_overlay_array); 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 */ OverlaySomething* func_80076188(void) { return &D_800A872C; } /* 6594 80076194 */ void func_80076194(void) { D_800C4C26 = 0xFFFE; } /* 65A4 800761A4 */ void func_800761A4(void) { func_80073164(0, 1, 1, 0x80, 1, 0x100, 0x2000); } INCLUDE_ASM(const s32, "_ob_rabid_jar", __loads_overlay_array); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076324); INCLUDE_ASM(const s32, "_ob_rabid_jar", __get_overlay_index); /* 68E0 800764E0 */ void func_800764E0(void) { u16 i; osGetTime(); bzero(D_800E82C8, sizeof(D_800E82C8)); 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; } obSetCurrentTime(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_80076AE8); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076DC8); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076E00); /* 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_80076EAC); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076F00); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076F5C); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007705C); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077160); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077200); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077288); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077314); /* 7768 80077368 */ s32 UnusedMallocNo(s32 arg0) { s32 var_a1; SomethingMalloc** var_v1; var_a1 = 0; var_v1 = &D_800E8300[arg0]; loop_1: if (*var_v1 != 0) { var_a1 += 1; var_v1 += 1; if (var_a1 >= 10) { osSyncPrintf("UnusedMallocNo(): 空きがない!\n"); while(1); } goto loop_1; } return var_a1; } INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800773D4); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007740C); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007745C); /* 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_80077BF8); void func_80077F80(void) { } INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077F88); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800780D4); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80078164); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007819C); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800782EC); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80078300); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007834C); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80078658); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80078674); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007896C); // s32 func_8007338C(); /* extern */ // extern s32 D_800E8210; // /* 8D6C 8007896C */ // void func_8007896C(s16 arg0, s16 arg1, s16 arg2, s16 arg3) { // s16 ulx; // s16 uly; // s16 lrx; // s16 lry; // // s32 temp_a0; // // lry = arg0; // lrx = arg1; // ulx = arg2; // uly = arg3; // if (func_8007338C() != 0) { // if (arg0 < 0) { // lry = 0; // } else if (arg0 >= 320) { // lry = 319; // } // if (lrx < 0) { // lrx = 0; // } else if (lrx >= 320) { // lrx = 319; // } // if (ulx < 0) { // ulx = 0; // } else if (ulx >= 320) { // ulx = 319; // } // if (uly < 0) { // uly = 0; // } else if (uly >= 240) { // uly = 239; // } // // gDPPipeSync(obPtrDisplayList++); // // // obPtrDisplayList = temp_v0 + 8; // // temp_v0->unk8 = 0xE200001C; // // temp_v0->unkC = 0; // gDPSetRenderMode(obPtrDisplayList++, G_RM_NOOP, G_RM_NOOP2); // // gDPPipeSync(obPtrDisplayList++); // gDPPipeSync(obPtrDisplayList++); // gDPPipeSync(obPtrDisplayList++); // // // obPtrDisplayList = temp_v0 + 0x28; // // temp_v0->unk28 = 0xE3000A01; // // temp_v0->unk2C = 0x00300000; // gDPSetCycleType(obPtrDisplayList++, G_CYC_FILL); // // // obPtrDisplayList = temp_v0 + 0x30; // // temp_v0->unk30 = 0xE7000000U; // // temp_v0->unk34 = 0; // gDPPipeSync(obPtrDisplayList++); // // // obPtrDisplayList = temp_v0 + 0x38; // // temp_v0->unk38 = 0xFE000000; // // temp_v0->unk3C = temp_a0; // gDPSetDepthImage(obPtrDisplayList++, D_800C4B20 - 0x80000000); // // // obPtrDisplayList = temp_v0 + 0x40; // // temp_v0->unk40 = 0xFF10013F; // // temp_v0->unk44 = temp_a0; // gDPSetColorImage(obPtrDisplayList++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, D_800C4B20 - 0x80000000); // // // obPtrDisplayList = temp_v0 + 0x48; // // temp_v0->unk48 = 0xF7000000; // // temp_v0->unk4C = 0xFFFCFFFC; // gDPSetFillColor(obPtrDisplayList++, 0xFFFCFFFC); // // // obPtrDisplayList = temp_v0 + 0x50; // // temp_v0->unk50 = 0xE7000000U; // // temp_v0->unk54 = 0; // gDPPipeSync(obPtrDisplayList++); // // // obPtrDisplayList = temp_v0 + 0x58; // // temp_v0->unk58 = (s32) (((ulx & 0x3FF) << 0xE) | (((uly & 0x3FF) * 4) | 0xF6000000)); // // temp_v0->unk5C = (s32) (((lry & 0x3FF) << 0xE) | ((lrx & 0x3FF) * 4)); // gDPFillRectangle(obPtrDisplayList++, ulx, uly, lrx, lry); // // // obPtrDisplayList = temp_v0 + 0x60; // // temp_v0->unk60 = 0xE7000000U; // // temp_v0->unk64 = 0; // gDPPipeSync(obPtrDisplayList++); // // // obPtrDisplayList = temp_v0 + 0x68; // // temp_v0->unk68 = 0xE7000000U; // // temp_v0->unk6C = 0; // gDPPipeSync(obPtrDisplayList++); // // // obPtrDisplayList = temp_v0 + 0x70; // // temp_v0->unk70 = 0xE7000000U; // // temp_v0->unk74 = 0; // gDPPipeSync(obPtrDisplayList++); // // // obPtrDisplayList = temp_v0 + 0x78; // // temp_v0->unk78 = 0xE7000000U; // // temp_v0->unk7C = 0; // gDPPipeSync(obPtrDisplayList++); // // // obPtrDisplayList = temp_v0 + 0x80; // // temp_v0->unk80 = 0xFF10013F; // // temp_v0->unk84 = (s32) (D_800E8210 - 0x80000000); // gDPSetColorImage(obPtrDisplayList++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, D_800E8210 - 0x80000000); // // // obPtrDisplayList = temp_v0 + 0x88; // // temp_v0->unk88 = 0xE7000000U; // // temp_v0->unk8C = 0; // gDPPipeSync(obPtrDisplayList++); // // // obPtrDisplayList = temp_v0 + 0x90; // // temp_v0->unk90 = 0xE7000000U; // // temp_v0->unk94 = 0; // gDPPipeSync(obPtrDisplayList++); // // // obPtrDisplayList = temp_v0 + 0x98; // // temp_v0->unk98 = 0xE3000A01; // // temp_v0->unk9C = 0; // gDPSetCycleType(obPtrDisplayList++, G_CYC_1CYCLE); // // // obPtrDisplayList = temp_v0 + 0xA0; // // temp_v0->unkA0 = 0xE7000000U; // // temp_v0->unkA4 = 0; // gDPPipeSync(obPtrDisplayList++); // // // obPtrDisplayList = temp_v0 + 0xA8; // } // } INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80078C6C); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079028); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007913C); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079358); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079380); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007938C); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079618); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079850); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800798AC); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079950); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079AFC); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079BD8); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079CB4); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079D60); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079D98); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079DF8); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079E50); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079E9C); /* A29C 80079E9C */ // Arg_800712C4* func_80079E9C(Arg_800712C4* arg0) { // Arg_800712C4* var_s0; // var_s0 = arg0; // if (var_s0 != NULL) { // var_s0->field_0x10 = func_80079E9C(var_s0->field_0x10); // var_s0->field_0x14 = func_80079E9C(var_s0->field_0x14); // func_800712C4(var_s0->field_0x4); // func_800712C4(var_s0); // var_s0 = NULL; // } // return var_s0; // } INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079EF4); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80079F70); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007A070); INCLUDE_ASM(const s32, "_ob_rabid_jar", Unpack); /* 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_8007AB30); /* AF7C 8007AB7C */ void obSendUnpackMesg(OBUnpackMesg* msg) { msg->format = 1; osSendMesg(&MQ_800AF320, msg, 1); } INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007ABAC); /* B030 8007AC30 */ void UnpackProc(void) { OBUnpackMesg *msg = NULL; while(1) { osRecvMesg(&MQ_800AF320, (OSMesg)&msg, 1); if (msg->format == 1) { Unpack(msg->field_0x10, msg->field_0xc); osSendMesg(msg->queue, msg, OS_MESG_BLOCK); } else { osSyncPrintf("UnpackProc: no supported format %d\n", msg->format); } } }