127 lines
2.8 KiB
C
127 lines
2.8 KiB
C
#include "PR/os.h"
|
|
#include "common.h"
|
|
|
|
void func_8008949C(void*);
|
|
|
|
INCLUDE_ASM(const s32, "19050", __idle_start_4_threads);
|
|
|
|
/* 192F0 80088EF0*/
|
|
s32* func_80088EF0(void) {
|
|
extern s32 D_800E8B14;
|
|
|
|
return &D_800E8B14;
|
|
}
|
|
|
|
typedef struct {
|
|
/* 0x00 */ OSMesgQueue field_0x0;
|
|
/* 0x30 */ u8 field_0x30[0x58];
|
|
/* 0x88 */ OSMesgQueue field_0x70;
|
|
/* 0x74 */ u8 field_0x74[0x20];
|
|
/* 0xa8 */ OSMesgQueue field_0xa8;
|
|
} Unk0;
|
|
|
|
extern Unk0 MQ_800E8B4C;
|
|
|
|
Unk0* func_80088EFC(void) {
|
|
return &MQ_800E8B4C;
|
|
}
|
|
|
|
INCLUDE_ASM(const s32, "19050", __thread_80088F08);
|
|
|
|
extern Stack__dma_load_loop *D_800E9178[0];
|
|
extern u8 __MAIN_NOT_NULL_INF_LOOP;
|
|
|
|
/* 19454 80089054 */
|
|
void Stack__dma_load_loop_new(Stack__dma_load_loop* arg0, OSMesgQueue* mq, s16 flags)
|
|
{
|
|
s32 mask = osSetIntMask(OS_IM_NONE);
|
|
|
|
arg0->mq = mq;
|
|
arg0->next = D_800E9178[0];
|
|
arg0->flags = flags;
|
|
|
|
D_800E9178[0] = arg0;
|
|
|
|
if ((flags & 2) && (__MAIN_NOT_NULL_INF_LOOP != 0)) {
|
|
osSendMesg(mq, (u8*)(&D_800E9178) - 0x666, OS_MESG_NOBLOCK);
|
|
}
|
|
|
|
osSetIntMask(mask);
|
|
}
|
|
|
|
|
|
INCLUDE_ASM(const s32, "19050", func_800890E4);
|
|
|
|
INCLUDE_ASM(const s32, "19050", Stack__dma_load_loop_delete);
|
|
|
|
INCLUDE_ASM(const s32, "19050", func_800891A0);
|
|
|
|
INCLUDE_ASM(const s32, "19050", __thread_80089200);
|
|
|
|
INCLUDE_ASM(const s32, "19050", __thread_80089358);
|
|
|
|
extern OSMesgQueue MQ_800B9C40;
|
|
|
|
void __thread_800893C0(void) {
|
|
typedef struct {
|
|
/* 0x00 */ s32 field_0x0;
|
|
/* 0x04 */ s32 field_0x4;
|
|
/* 0x08 */ s32 field_0x8;
|
|
/* 0x1C */ u8 field_0x1c[0x42];
|
|
/* 0x50 */ OSMesgQueue* field_0x50;
|
|
} Stack0;
|
|
|
|
Stack0* sp10;
|
|
void* sp14;
|
|
|
|
while(1) {
|
|
osRecvMesg(&MQ_800E8B4C.field_0x0, &sp10, 1);
|
|
if (!(__MAIN_NOT_NULL_INF_LOOP & 2)) {
|
|
func_8008949C(sp10);
|
|
osWritebackDCacheAll();
|
|
osSendMesg(&MQ_800B9C40, sp10, OS_MESG_BLOCK);
|
|
|
|
osRecvMesg(&MQ_800E8B4C.field_0x70, &sp14, OS_MESG_BLOCK);
|
|
osSendMesg(&MQ_800B9C40, NULL, OS_MESG_BLOCK);
|
|
if (!(sp10->field_0x8 & 2)) {
|
|
osRecvMesg(&MQ_800E8B4C.field_0xa8, &sp14, OS_MESG_BLOCK);
|
|
}
|
|
}
|
|
osSendMesg(sp10->field_0x50, sp10, OS_MESG_BLOCK);
|
|
}
|
|
}
|
|
|
|
|
|
INCLUDE_ASM(const s32, "19050", func_8008949C);
|
|
|
|
// INCLUDE_ASM(const s32, "19050", func_80089528);
|
|
|
|
void func_80089528(s8 arg0) {
|
|
extern s8 D_800E918D;
|
|
|
|
D_800E918D = arg0;
|
|
}
|
|
|
|
|
|
INCLUDE_ASM(const s32, "19050", func_80089534);
|
|
|
|
INCLUDE_ASM(const s32, "19050", __thread_80089540);
|
|
|
|
INCLUDE_ASM(const s32, "19050", __start_thread_800B9C88);
|
|
|
|
INCLUDE_ASM(const s32, "19050", func_80089804);
|
|
|
|
/* 19D90 80089990 */
|
|
void func_80089990(s32 arg0) {
|
|
extern void func_80089A10();
|
|
extern s32 D_800AA090;
|
|
|
|
s32 mask;
|
|
|
|
func_80089A10();
|
|
mask = osSetIntMask(OS_IM_NONE);
|
|
D_800AA090 = arg0;
|
|
osSetIntMask(mask);
|
|
}
|
|
|