ogrebattle64/src/boot.c

42 lines
1004 B
C

#include "common.h"
void boot(void);
void idle(void* arg);
void boot(void) {
extern OSThread THREAD_IDLE;
extern u8 SP_THREAD_IDLE[1];
osInitialize();
osCreateThread(&THREAD_IDLE, 1, idle, NULL, SP_THREAD_IDLE, 0xA);
osStartThread(&THREAD_IDLE);
}
void idle(void* arg) {
extern void main_(void*);
extern void __idle_start_4_threads(s32, s32);
extern void (*D_800E7A18)();
extern u8 SP_THREAD_FIRST_DMA_LOAD[1];
extern OSThread THREAD_FIRST_DMA_LOAD;
extern OSThread THREAD_IDLE;
D_800E7A18 = NULL;
obInitializePi();
__idle_start_4_threads(2, 1);
osViSetSpecialFeatures(OS_VI_DIVOT_ON | OS_VI_DITHER_FILTER_ON | OS_VI_GAMMA_OFF | OS_VI_GAMMA_DITHER_OFF);
osCreateThread(&THREAD_FIRST_DMA_LOAD, 3, main_, NULL, SP_THREAD_FIRST_DMA_LOAD, 0xA);
osStartThread(&THREAD_FIRST_DMA_LOAD);
osSetThreadPri(&THREAD_IDLE, OS_PRIORITY_IDLE);
while(1) {
if (D_800E7A18 != NULL) {
D_800E7A18();
}
}
}