473 lines
12 KiB
C
473 lines
12 KiB
C
#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 func_8007AB7C(OBUnpackMesg* arg0) {
|
|
arg0->format = 1;
|
|
osSendMesg(&MQ_800AF320, arg0, 1);
|
|
}
|
|
|
|
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007ABAC);
|
|
|
|
/* B030 8007AC30 */
|
|
void UnpackProc(void) {
|
|
OBUnpackMesg *pack = NULL;
|
|
|
|
while(1) {
|
|
osRecvMesg(&MQ_800AF320, (OSMesg)&pack, 1);
|
|
if (pack->format == 1) {
|
|
Unpack(pack->field_0x10, pack->field_0xc);
|
|
osSendMesg(pack->queue, pack, OS_MESG_BLOCK);
|
|
} else {
|
|
osSyncPrintf("UnpackProc: no supported format %d\n", pack->format);
|
|
}
|
|
}
|
|
}
|
|
|