Compare commits
29 Commits
2e0df3b558
...
901ff5dc63
| Author | SHA1 | Date |
|---|---|---|
|
|
901ff5dc63 | |
|
|
0d4532eda3 | |
|
|
5635db776f | |
|
|
0adce00abb | |
|
|
420bf3ce0c | |
|
|
26bd797aa0 | |
|
|
a9ae2448a7 | |
|
|
ed677a4a28 | |
|
|
c53a8b95e5 | |
|
|
411c33a536 | |
|
|
3595244a44 | |
|
|
d0531d6926 | |
|
|
30b4d8c254 | |
|
|
05dbe6d9e5 | |
|
|
f1b5fa0528 | |
|
|
5f804ef0db | |
|
|
0e2f7a99ad | |
|
|
f9188543c7 | |
|
|
2a3e5aaf05 | |
|
|
3ff8ee4a52 | |
|
|
eeddbc0da8 | |
|
|
d570045631 | |
|
|
60f66d3b43 | |
|
|
52f66d3290 | |
|
|
ffce6e7f11 | |
|
|
a34eed808c | |
|
|
a5afbd93be | |
|
|
9227a20d5a | |
|
|
97c9f3041a |
|
|
@ -1,5 +1,7 @@
|
||||||
#include <ultra64.h>
|
#include <ultra64.h>
|
||||||
|
|
||||||
|
#include "nu/nusys.h"
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "ability.h"
|
#include "ability.h"
|
||||||
#include "character.h"
|
#include "character.h"
|
||||||
|
|
|
||||||
|
|
@ -129,7 +129,6 @@ extern void* musCurrentPtrBank;
|
||||||
extern void* D_800B1828;
|
extern void* D_800B1828;
|
||||||
|
|
||||||
extern s32 D_800E8B14;
|
extern s32 D_800E8B14;
|
||||||
extern Unk0 MQ_800E8B4C;
|
|
||||||
extern s32 __SCREEN_IS_NOT_BLACK;
|
extern s32 __SCREEN_IS_NOT_BLACK;
|
||||||
extern s32 D_800A9EB0;
|
extern s32 D_800A9EB0;
|
||||||
extern s32 __SOMETHING_FRAMEBUFFERS;
|
extern s32 __SOMETHING_FRAMEBUFFERS;
|
||||||
|
|
@ -181,7 +180,7 @@ extern u8 D_594284;
|
||||||
extern void (*SWAP_BUFFER_FUNC)(void** buffers);
|
extern void (*SWAP_BUFFER_FUNC)(void** buffers);
|
||||||
|
|
||||||
extern Stack__dma_load_loop *D_800E9178[0];
|
extern Stack__dma_load_loop *D_800E9178[0];
|
||||||
extern u8 __MAIN_NOT_NULL_INF_LOOP;
|
extern u8 nuScPreNMIFlag;
|
||||||
extern OSMesgQueue MQ_800B9C40;
|
extern OSMesgQueue MQ_800B9C40;
|
||||||
extern s8 D_800E918D;
|
extern s8 D_800E918D;
|
||||||
|
|
||||||
|
|
@ -190,10 +189,7 @@ extern void romCopy(u32 devAddr, void* dramAddr, u32 size, s32 direction);
|
||||||
extern void romCopy_512(void* src, void* dst, u32 len);
|
extern void romCopy_512(void* src, void* dst, u32 len);
|
||||||
extern void __calls_romCopy_8009DA50(void* src, void* dst, u32 len);
|
extern void __calls_romCopy_8009DA50(void* src, void* dst, u32 len);
|
||||||
|
|
||||||
extern void Stack__dma_load_loop_new(Stack__dma_load_loop* arg0, OSMesgQueue* arg1, s16 flags);
|
extern void nuPiInit();
|
||||||
extern void Stack__dma_load_loop_delete(Stack__dma_load_loop* arg0);
|
|
||||||
|
|
||||||
extern void obInitializePi();
|
|
||||||
|
|
||||||
extern void __set_black();
|
extern void __set_black();
|
||||||
extern void __calls_osViBlack(bool black);
|
extern void __calls_osViBlack(bool black);
|
||||||
|
|
@ -355,11 +351,9 @@ extern const char STR_EMPTY[];
|
||||||
extern void AddHeap(void* start, u32 length);
|
extern void AddHeap(void* start, u32 length);
|
||||||
extern void __some_logging(const char* format, ...);
|
extern void __some_logging(const char* format, ...);
|
||||||
|
|
||||||
|
extern void nuBoot(void);
|
||||||
extern void __idle_start_4_threads(s32, s32);
|
extern void nuScCreateScheduler(u8 videoMode, u8 numFields);
|
||||||
extern void (*D_800E7A18)();
|
extern void (*nuIdleFunc)();
|
||||||
|
|
||||||
extern void boot(void);
|
|
||||||
|
|
||||||
extern void obIdle(void*);
|
extern void obIdle(void*);
|
||||||
extern void obMain(void*);
|
extern void obMain(void*);
|
||||||
|
|
@ -631,8 +625,20 @@ extern s32 D_800AF0B0;
|
||||||
extern void Unpack(s32, s32);
|
extern void Unpack(s32, s32);
|
||||||
extern OSMesgQueue MQ_800AF320;
|
extern OSMesgQueue MQ_800AF320;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
/* 0x00 */ s32 field_0x0;
|
||||||
|
/* 0x04 */ OSMesgQueue* queue;
|
||||||
|
/* 0x08 */ u8 format;
|
||||||
|
/* 0x09 */ u8 field_0x9[3];
|
||||||
|
/* 0x0C */ s32 field_0xc;
|
||||||
|
/* 0x10 */ s32 field_0x10;
|
||||||
|
} OBUnpackMesg;
|
||||||
|
|
||||||
extern u32 obCurrentTime;
|
extern u32 obCurrentTime;
|
||||||
extern void obSetCurrentTime(u32 time);
|
extern void obSetCurrentTime(u32 time);
|
||||||
extern u32 obGetCurrentTime();
|
extern u32 obGetCurrentTime();
|
||||||
|
extern f32 obGetCurrentTimeF();
|
||||||
|
|
||||||
|
extern Gfx DISPLAY_LIST_800A9EF0[];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,8 +1,30 @@
|
||||||
|
nusched = 0x800E8B10; // size:0x680
|
||||||
|
nuScRetraceCounter = 0x800C4BCC;
|
||||||
|
nuScPreNMIFlag = 0x800C4800;
|
||||||
|
nuScPreNMIFunc = 0x800A9E60;
|
||||||
|
|
||||||
|
nuBoot = 0x8007F880;
|
||||||
|
nuScCreateScheduler = 0x80088C50; // rom:0x19050
|
||||||
|
nuPiInit = 0x80089F40;
|
||||||
|
nuIdleFunc = 0x800E7A18;
|
||||||
|
nuScEventHandler = 0x80088F08;
|
||||||
|
nuScExecuteAudio = 0x80089200;
|
||||||
|
nuScExecuteGraphics = 0x800893C0;
|
||||||
|
nuScEventBroadcast = 0x800891A0;
|
||||||
|
nuScGetAudioMQ = 0x80088EF0;
|
||||||
|
nuScGetGfxMQ = 0x80088EFC;
|
||||||
|
nuScAddClient = 0x80089054;
|
||||||
|
nuScRemoveClient = 0x80089124;
|
||||||
|
nuScSetFrameBufferNum = 0x80089528;
|
||||||
|
nuGfxRetraceWait = 0x80089A30;
|
||||||
|
|
||||||
obCurrentTime = 0x800C47D0;
|
obCurrentTime = 0x800C47D0;
|
||||||
obSetCurrentTime = 0x8009C7C0; // rom:0x2CBC0
|
obSetCurrentTime = 0x8009C7C0; // rom:0x2CBC0
|
||||||
obGetCurrentTime = 0x8009C7CC; // rom:0x2CBCC
|
obGetCurrentTime = 0x8009C7CC; // rom:0x2CBCC
|
||||||
obGetCurrentTimeF = 0x8007FD10; // rom:0x10110
|
obGetCurrentTimeF = 0x8007FD10; // rom:0x10110
|
||||||
|
|
||||||
|
obSendUnpackMesg = 0x8007AB7C; // rom:0xAF7C
|
||||||
|
|
||||||
fchar = 0x800AEA80; // rom:0x3EE80
|
fchar = 0x800AEA80; // rom:0x3EE80
|
||||||
_Printf = 0x80099BE0; // rom:0x29FE0
|
_Printf = 0x80099BE0; // rom:0x29FE0
|
||||||
_Putfld = 0x8009A160; // rom:0x2A560
|
_Putfld = 0x8009A160; // rom:0x2A560
|
||||||
|
|
@ -677,12 +699,11 @@ __SCREEN_IS_NOT_BLACK = 0x800C4BD8;
|
||||||
__calls_osViBlack = 0x80089BE4;
|
__calls_osViBlack = 0x80089BE4;
|
||||||
__set_black = 0x80089BC0;
|
__set_black = 0x80089BC0;
|
||||||
|
|
||||||
__MAIN_NOT_NULL_INF_LOOP = 0x800C4800;
|
|
||||||
__MAIN_START_BUT_CHECK = 0x800E79B0; // size:0x14
|
__MAIN_START_BUT_CHECK = 0x800E79B0; // size:0x14
|
||||||
__MAIN_START_BUT_STATE = 0x800E8214;
|
__MAIN_START_BUT_STATE = 0x800E8214;
|
||||||
|
|
||||||
__thread_80089358 = 0x80089358;
|
__thread_80089358 = 0x80089358;
|
||||||
__idle_start_4_threads = 0x80088C50;
|
|
||||||
|
|
||||||
__CONTROLLER_0_BUTTON = 0x800E8700;
|
__CONTROLLER_0_BUTTON = 0x800E8700;
|
||||||
__menu_handle_input = 0x8019B8AC; // type:func
|
__menu_handle_input = 0x8019B8AC; // type:func
|
||||||
|
|
@ -841,9 +862,6 @@ __start_thread_800B9C88 = 0x80089660;
|
||||||
|
|
||||||
magnitude = 0x8009C780;
|
magnitude = 0x8009C780;
|
||||||
|
|
||||||
|
|
||||||
__dma_load_loop = 0x80089A30;
|
|
||||||
|
|
||||||
__MUS_MEM_800B18A4 = 0x800B18A4; // size:0x58
|
__MUS_MEM_800B18A4 = 0x800B18A4; // size:0x58
|
||||||
__MUS_MEM_800B186C = 0x800B186C;
|
__MUS_MEM_800B186C = 0x800B186C;
|
||||||
__MUS_MEM_800B1870 = 0x800B1870;
|
__MUS_MEM_800B1870 = 0x800B1870;
|
||||||
|
|
@ -861,9 +879,7 @@ MQ_800B1880 = 0x800B1880;
|
||||||
MQ_800E79C8 = 0x800E79C8;
|
MQ_800E79C8 = 0x800E79C8;
|
||||||
MQ_800C49E8 = 0x800C49E8;
|
MQ_800C49E8 = 0x800C49E8;
|
||||||
MQ_800BE030 = 0x800BE030;
|
MQ_800BE030 = 0x800BE030;
|
||||||
MQ_800E8B84 = 0x800E8B84;
|
|
||||||
MQ_800B9C40 = 0x800B9C40;
|
MQ_800B9C40 = 0x800B9C40;
|
||||||
MQ_800E8B4C = 0x800E8B4C;
|
|
||||||
|
|
||||||
OSMESG_800BE190 = 0x800BE190;
|
OSMESG_800BE190 = 0x800BE190;
|
||||||
OSMESG_800BE194 = 0x800BE194;
|
OSMESG_800BE194 = 0x800BE194;
|
||||||
|
|
@ -906,14 +922,7 @@ __MAYBE_SONG_800EB290 = 0x800EB290; // size:0x50
|
||||||
__MAYBE_SONG_ARRAY_800A8218 = 0x800A8218; // size:0x1C
|
__MAYBE_SONG_ARRAY_800A8218 = 0x800A8218; // size:0x1C
|
||||||
__initialize_song_mem = 0x80073FD4;
|
__initialize_song_mem = 0x80073FD4;
|
||||||
|
|
||||||
Stack__dma_load_loop_new = 0x80089054;
|
|
||||||
Stack__dma_load_loop_delete = 0x80089124;
|
|
||||||
|
|
||||||
|
|
||||||
__thread_8008AFE0 = 0x8008AFE0;
|
__thread_8008AFE0 = 0x8008AFE0;
|
||||||
__thread_80088F08 = 0x80088F08;
|
|
||||||
__thread_80089200 = 0x80089200;
|
|
||||||
__thread_800893C0 = 0x800893C0;
|
|
||||||
__thread_80089540 = 0x80089540;
|
__thread_80089540 = 0x80089540;
|
||||||
|
|
||||||
STR_INVALID_HEADER_LHA_FILE = 0x800AE108;
|
STR_INVALID_HEADER_LHA_FILE = 0x800AE108;
|
||||||
|
|
@ -976,9 +985,6 @@ obMain = 0x80071EB0;
|
||||||
obThreadMain = 0x800AF5F0;
|
obThreadMain = 0x800AF5F0;
|
||||||
obStackMain = 0x800C6D60;
|
obStackMain = 0x800C6D60;
|
||||||
|
|
||||||
obInitializePi = 0x80089F40;
|
|
||||||
|
|
||||||
boot = 0x8007F880;
|
|
||||||
entry = 0x80070C00;
|
entry = 0x80070C00;
|
||||||
|
|
||||||
guRotateRPYF = 0x80092A90;
|
guRotateRPYF = 0x80092A90;
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,7 @@ segments:
|
||||||
- [0x19050, c, "_ob_past_brick"]
|
- [0x19050, c, "_ob_past_brick"]
|
||||||
- [0x19DD0, c, "_ob_questionable_glass"]
|
- [0x19DD0, c, "_ob_questionable_glass"]
|
||||||
- [0x19E10, asm]
|
- [0x19E10, asm]
|
||||||
- [0x19E30, c, "_ob_yielding_ice"]
|
- [0x19E30, c, "nu/nugfxretracewait"]
|
||||||
- [0x19EB0, asm]
|
- [0x19EB0, asm]
|
||||||
- [0x19FC0, c, "black"]
|
- [0x19FC0, c, "black"]
|
||||||
- [0x1A050, c, "_ob_icy_coast"]
|
- [0x1A050, c, "_ob_icy_coast"]
|
||||||
|
|
@ -765,7 +765,8 @@ segments:
|
||||||
- [0x16F990, c, "_ob_gruesome_way"]
|
- [0x16F990, c, "_ob_gruesome_way"]
|
||||||
|
|
||||||
- [0x16FB90, data]
|
- [0x16FB90, data]
|
||||||
- [0x16FF40, .data, "data_16FF40"]
|
#- [0x16FF40, .data, "data_16FF40"]
|
||||||
|
- [0x16FF40, data, "data_16FF40"]
|
||||||
- [0x170100, data]
|
- [0x170100, data]
|
||||||
|
|
||||||
- [0x171DA0, .rodata, "_ob_handy_bed"]
|
- [0x171DA0, .rodata, "_ob_handy_bed"]
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
/* 10110 8007FD10 */
|
/* 10110 8007FD10 */
|
||||||
f32 obGetCurrentTimeF(void) {
|
f32 obGetCurrentTimeF() {
|
||||||
f64 var_f4;
|
f64 var_f4;
|
||||||
s32 temp_s0_2;
|
s32 temp_s0_2;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,15 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
|
#include "nu/nusys.h"
|
||||||
|
|
||||||
/* 1B3E0 8008AFE0 */
|
/* 1B3E0 8008AFE0 */
|
||||||
void __thread_8008AFE0(void* arg0) {
|
void __thread_8008AFE0(void* arg0) {
|
||||||
Stack__dma_load_loop sp10;
|
NUScClient sp10;
|
||||||
u16* sp20;
|
u16* sp20;
|
||||||
s16 temp_v0;
|
s16 temp_v0;
|
||||||
|
|
||||||
osCreateMesgQueue(&MQ_800C4C28, OSMESG_800BE1A0, 8);
|
osCreateMesgQueue(&MQ_800C4C28, OSMESG_800BE1A0, 8);
|
||||||
Stack__dma_load_loop_new(&sp10, &MQ_800C4C28, 3);
|
nuScAddClient(&sp10, &MQ_800C4C28, 3);
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
osRecvMesg(&MQ_800C4C28, &sp20, OS_MESG_BLOCK);
|
osRecvMesg(&MQ_800C4C28, &sp20, OS_MESG_BLOCK);
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ void __start_controller_thread(void) {
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "_ob_icy_coast", __controller_thread_80089D9C);
|
INCLUDE_ASM(const s32, "_ob_icy_coast", __controller_thread_80089D9C);
|
||||||
|
|
||||||
void obInitializePi(void) {
|
void nuPiInit(void) {
|
||||||
osCreatePiManager(OS_PRIORITY_PIMGR, &MQ_800BE030, OSMESG_800BE048, sizeof(OSMESG_800BE048) / sizeof(OSMesg));
|
osCreatePiManager(OS_PRIORITY_PIMGR, &MQ_800BE030, OSMESG_800BE048, sizeof(OSMESG_800BE048) / sizeof(OSMesg));
|
||||||
PTR_CART_ROM_HANDLE = osCartRomInit();
|
PTR_CART_ROM_HANDLE = osCartRomInit();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,111 +1,121 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "_ob_past_brick", __idle_start_4_threads);
|
#include "nu/nusys.h"
|
||||||
|
|
||||||
|
INCLUDE_ASM(const s32, "_ob_past_brick", nuScCreateScheduler);
|
||||||
|
|
||||||
/* 192F0 80088EF0*/
|
/* 192F0 80088EF0*/
|
||||||
s32* func_80088EF0(void) {
|
OSMesgQueue* nuScGetAudioMQ() {
|
||||||
return &D_800E8B14;
|
return &nusched.audioRequestMQ;
|
||||||
}
|
}
|
||||||
|
|
||||||
Unk0* func_80088EFC(void) {
|
OSMesgQueue* nuScGetGfxMQ() {
|
||||||
return &MQ_800E8B4C;
|
return &nusched.graphicsRequestMQ;
|
||||||
}
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "_ob_past_brick", __thread_80088F08);
|
INCLUDE_ASM(const s32, "_ob_past_brick", nuScEventHandler);
|
||||||
|
|
||||||
|
INCLUDE_ASM(const s32, "_ob_past_brick", nuScAddClient);
|
||||||
|
|
||||||
/* 19454 80089054 */
|
/* 19454 80089054 */
|
||||||
void Stack__dma_load_loop_new(Stack__dma_load_loop* arg0, OSMesgQueue* mq, s16 flags)
|
// void nuScAddClient(Stack__dma_load_loop* arg0, OSMesgQueue* mq, s16 flags)
|
||||||
{
|
// {
|
||||||
s32 mask = osSetIntMask(OS_IM_NONE);
|
// s32 mask = osSetIntMask(OS_IM_NONE);
|
||||||
|
|
||||||
arg0->mq = mq;
|
// arg0->mq = mq;
|
||||||
arg0->next = D_800E9178[0];
|
// arg0->next = D_800E9178[0];
|
||||||
arg0->flags = flags;
|
// arg0->flags = flags;
|
||||||
|
|
||||||
D_800E9178[0] = arg0;
|
// D_800E9178[0] = arg0;
|
||||||
|
|
||||||
if ((flags & 2) && (__MAIN_NOT_NULL_INF_LOOP != 0)) {
|
// if ((flags & 2) && (nuScPreNMIFlag != 0)) {
|
||||||
osSendMesg(mq, (u8*)(&D_800E9178) - 0x666, OS_MESG_NOBLOCK);
|
// osSendMesg(mq, (u8*)(&D_800E9178) - 0x666, OS_MESG_NOBLOCK);
|
||||||
}
|
// }
|
||||||
|
|
||||||
osSetIntMask(mask);
|
// osSetIntMask(mask);
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "_ob_past_brick", func_800890E4);
|
INCLUDE_ASM(const s32, "_ob_past_brick", func_800890E4);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "_ob_past_brick", Stack__dma_load_loop_delete);
|
INCLUDE_ASM(const s32, "_ob_past_brick", nuScRemoveClient);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "_ob_past_brick", func_800891A0);
|
INCLUDE_ASM(const s32, "_ob_past_brick", nuScEventBroadcast);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "_ob_past_brick", __thread_80089200);
|
INCLUDE_ASM(const s32, "_ob_past_brick", nuScExecuteAudio);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "_ob_past_brick", __thread_80089358);
|
INCLUDE_ASM(const s32, "_ob_past_brick", __thread_80089358);
|
||||||
|
|
||||||
void __thread_800893C0(void) {
|
INCLUDE_ASM(const s32, "_ob_past_brick", nuScExecuteGraphics);
|
||||||
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 nuScExecuteGraphics(void) {
|
||||||
void* sp14;
|
// typedef struct {
|
||||||
|
// /* 0x00 */ s32 field_0x0;
|
||||||
|
// /* 0x04 */ s32 field_0x4;
|
||||||
|
// /* 0x08 */ s32 field_0x8;
|
||||||
|
// /* 0x1C */ u8 field_0x1c[0x42];
|
||||||
|
// /* 0x50 */ OSMesgQueue* field_0x50;
|
||||||
|
// } Stack0;
|
||||||
|
|
||||||
while(1) {
|
// Stack0* sp10;
|
||||||
osRecvMesg(&MQ_800E8B4C.field_0x0, &sp10, 1);
|
// void* sp14;
|
||||||
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);
|
// while(1) {
|
||||||
osSendMesg(&MQ_800B9C40, NULL, OS_MESG_BLOCK);
|
// osRecvMesg(&MQ_800E8B4C.field_0x0, &sp10, 1);
|
||||||
if (!(sp10->field_0x8 & 2)) {
|
// if (!(nuScPreNMIFlag & 2)) {
|
||||||
osRecvMesg(&MQ_800E8B4C.field_0xa8, &sp14, OS_MESG_BLOCK);
|
// func_8008949C(sp10);
|
||||||
}
|
// osWritebackDCacheAll();
|
||||||
}
|
// osSendMesg(&MQ_800B9C40, sp10, OS_MESG_BLOCK);
|
||||||
osSendMesg(sp10->field_0x50, sp10, OS_MESG_BLOCK);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
extern struct {
|
// osRecvMesg(&MQ_800E8B4C.field_0x70, &sp14, OS_MESG_BLOCK);
|
||||||
OSMesgQueue mq;
|
// osSendMesg(&MQ_800B9C40, NULL, OS_MESG_BLOCK);
|
||||||
u8 padding[0x549];
|
// if (!(sp10->field_0x8 & 2)) {
|
||||||
u8 b;
|
// osRecvMesg(&MQ_800E8B4C.field_0xa8, &sp14, OS_MESG_BLOCK);
|
||||||
} D_800E8C2C;
|
// }
|
||||||
|
// }
|
||||||
|
// osSendMesg(sp10->field_0x50, sp10, OS_MESG_BLOCK);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// extern struct {
|
||||||
|
// OSMesgQueue mq;
|
||||||
|
// u8 padding[0x549];
|
||||||
|
// u8 b;
|
||||||
|
// } D_800E8C2C;
|
||||||
|
|
||||||
|
INCLUDE_ASM(const s32, "_ob_past_brick", func_8008949C);
|
||||||
|
|
||||||
/* 1989C 8008949C */
|
/* 1989C 8008949C */
|
||||||
void func_8008949C(void** buffers)
|
// void func_8008949C(void** buffers)
|
||||||
{
|
// {
|
||||||
Stack__dma_load_loop sp10;
|
// Stack__dma_load_loop sp10;
|
||||||
void* temp_s0 = buffers[3];
|
// void* temp_s0 = buffers[3];
|
||||||
|
|
||||||
if (D_800E8C2C.b != 1)
|
// if (D_800E8C2C.b != 1)
|
||||||
{
|
// {
|
||||||
while(osViGetNextFramebuffer() == temp_s0 || osViGetCurrentFramebuffer() == temp_s0)
|
// while(osViGetNextFramebuffer() == temp_s0 || osViGetCurrentFramebuffer() == temp_s0)
|
||||||
{
|
// {
|
||||||
Stack__dma_load_loop_new(&sp10, &D_800E8C2C.mq, 1);
|
// nuScAddClient(&sp10, &D_800E8C2C.mq, 1);
|
||||||
osRecvMesg(&D_800E8C2C.mq, NULL, 1);
|
// osRecvMesg(&D_800E8C2C.mq, NULL, 1);
|
||||||
Stack__dma_load_loop_delete(&sp10);
|
// nuScRemoveClient(&sp10);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
void func_80089528(s8 arg0) {
|
INCLUDE_ASM(const s32, "_ob_past_brick", nuScSetFrameBufferNum);
|
||||||
D_800E918D = arg0;
|
|
||||||
}
|
// void func_80089528(s8 arg0) {
|
||||||
|
// D_800E918D = arg0;
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
// INCLUDE_ASM(const s32, "_ob_past_brick", func_80089534);
|
// extern u8 D_800E918C;
|
||||||
extern u8 D_800E918C;
|
|
||||||
|
|
||||||
|
INCLUDE_ASM(const s32, "_ob_past_brick", func_80089534);
|
||||||
/* 19934 80089534 */
|
/* 19934 80089534 */
|
||||||
u8 func_80089534(void) {
|
// u8 func_80089534(void) {
|
||||||
return D_800E918C;
|
// return D_800E918C;
|
||||||
}
|
// }
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "_ob_past_brick", __thread_80089540);
|
INCLUDE_ASM(const s32, "_ob_past_brick", __thread_80089540);
|
||||||
|
|
||||||
|
|
@ -113,13 +123,15 @@ INCLUDE_ASM(const s32, "_ob_past_brick", __start_thread_800B9C88);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "_ob_past_brick", __something_display_list);
|
INCLUDE_ASM(const s32, "_ob_past_brick", __something_display_list);
|
||||||
|
|
||||||
|
INCLUDE_ASM(const s32, "_ob_past_brick", func_80089990);
|
||||||
|
|
||||||
/* 19D90 80089990 */
|
/* 19D90 80089990 */
|
||||||
void func_80089990(void (*arg0)(s32)) {
|
// void func_80089990(void (*arg0)(s32)) {
|
||||||
s32 mask;
|
// s32 mask;
|
||||||
|
|
||||||
func_80089A10();
|
// func_80089A10();
|
||||||
mask = osSetIntMask(OS_IM_NONE);
|
// mask = osSetIntMask(OS_IM_NONE);
|
||||||
D_800AA090 = arg0;
|
// D_800AA090 = arg0;
|
||||||
osSetIntMask(mask);
|
// osSetIntMask(mask);
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -447,29 +447,25 @@ INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007A80C);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007AB30);
|
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007AB30);
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007AB7C);
|
/* AF7C 8007AB7C */
|
||||||
|
void obSendUnpackMesg(OBUnpackMesg* msg) {
|
||||||
|
msg->format = 1;
|
||||||
|
osSendMesg(&MQ_800AF320, msg, 1);
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007ABAC);
|
INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007ABAC);
|
||||||
|
|
||||||
/* B030 8007AC30 */
|
/* B030 8007AC30 */
|
||||||
void UnpackProc(void) {
|
void UnpackProc(void) {
|
||||||
struct {
|
OBUnpackMesg *msg = NULL;
|
||||||
/* 0x00 */ s32 field_0x0;
|
|
||||||
/* 0x04 */ OSMesgQueue* queue;
|
|
||||||
/* 0x08 */ u8 format;
|
|
||||||
/* 0x09 */ u8 field_0x9[3];
|
|
||||||
/* 0x0C */ s32 field_0xc;
|
|
||||||
/* 0x10 */ s32 field_0x10;
|
|
||||||
} *pack;
|
|
||||||
|
|
||||||
pack = NULL;
|
|
||||||
while(1) {
|
while(1) {
|
||||||
osRecvMesg(&MQ_800AF320, (OSMesg)&pack, 1);
|
osRecvMesg(&MQ_800AF320, (OSMesg)&msg, 1);
|
||||||
if (pack->format == 1) {
|
if (msg->format == 1) {
|
||||||
Unpack(pack->field_0x10, pack->field_0xc);
|
Unpack(msg->field_0x10, msg->field_0xc);
|
||||||
osSendMesg(pack->queue, pack, OS_MESG_BLOCK);
|
osSendMesg(msg->queue, msg, OS_MESG_BLOCK);
|
||||||
} else {
|
} else {
|
||||||
osSyncPrintf("UnpackProc: no supported format %d\n", pack->format);
|
osSyncPrintf("UnpackProc: no supported format %d\n", msg->format);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
/* 19E30 80089A30 */
|
|
||||||
void __dma_load_loop(s32 count) {
|
|
||||||
Stack__dma_load_loop sp10;
|
|
||||||
OSMesgQueue mq;
|
|
||||||
OSMesg buf;
|
|
||||||
|
|
||||||
osCreateMesgQueue(&mq, &buf, 1);
|
|
||||||
Stack__dma_load_loop_new(&sp10, &mq, 1);
|
|
||||||
|
|
||||||
for(; count != 0; count--)
|
|
||||||
osRecvMesg(&mq, NULL, OS_MESG_BLOCK);
|
|
||||||
|
|
||||||
Stack__dma_load_loop_delete(&sp10);
|
|
||||||
}
|
|
||||||
13
src/boot.c
13
src/boot.c
|
|
@ -2,17 +2,17 @@
|
||||||
|
|
||||||
extern u8 obStackMain[];
|
extern u8 obStackMain[];
|
||||||
|
|
||||||
void boot(void) {
|
void nuBoot(void) {
|
||||||
osInitialize();
|
osInitialize();
|
||||||
osCreateThread(&obThreadIdle, 1, obIdle, NULL, obStackIdle, 0xA);
|
osCreateThread(&obThreadIdle, 1, obIdle, NULL, obStackIdle, 0xA);
|
||||||
osStartThread(&obThreadIdle);
|
osStartThread(&obThreadIdle);
|
||||||
}
|
}
|
||||||
|
|
||||||
void obIdle(void* arg) {
|
void obIdle(void* arg) {
|
||||||
D_800E7A18 = NULL;
|
nuIdleFunc = NULL;
|
||||||
|
|
||||||
obInitializePi();
|
nuPiInit();
|
||||||
__idle_start_4_threads(2, 1);
|
nuScCreateScheduler(OS_VI_NTSC_LAN1, 1);
|
||||||
|
|
||||||
osViSetSpecialFeatures(OS_VI_DIVOT_ON | OS_VI_DITHER_FILTER_ON | OS_VI_GAMMA_OFF | OS_VI_GAMMA_DITHER_OFF);
|
osViSetSpecialFeatures(OS_VI_DIVOT_ON | OS_VI_DITHER_FILTER_ON | OS_VI_GAMMA_OFF | OS_VI_GAMMA_DITHER_OFF);
|
||||||
|
|
||||||
|
|
@ -22,8 +22,7 @@ void obIdle(void* arg) {
|
||||||
osSetThreadPri(&obThreadIdle, OS_PRIORITY_IDLE);
|
osSetThreadPri(&obThreadIdle, OS_PRIORITY_IDLE);
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
if (D_800E7A18 != NULL) {
|
if (nuIdleFunc != NULL)
|
||||||
D_800E7A18();
|
nuIdleFunc();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
12
src/main.c
12
src/main.c
|
|
@ -1,5 +1,7 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
#include "libmus.h"
|
#include "libmus.h"
|
||||||
|
#include "nu/nusys.h"
|
||||||
|
|
||||||
extern u16 D_800AEDE2;
|
extern u16 D_800AEDE2;
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
@ -15,7 +17,6 @@ typedef struct {
|
||||||
void __calls_copy_controller_data(); /* extern */
|
void __calls_copy_controller_data(); /* extern */
|
||||||
void __calls_loads_overlay_array(); /* extern */
|
void __calls_loads_overlay_array(); /* extern */
|
||||||
void __calls_osViSwapBuffer_8007307C(void**); /* extern */
|
void __calls_osViSwapBuffer_8007307C(void**); /* extern */
|
||||||
void __dma_load_loop(s32); /* extern */
|
|
||||||
void __initialize_song_mem(); /* extern */
|
void __initialize_song_mem(); /* extern */
|
||||||
void __set_fp_8008A660(void(*)(u16)); /* extern */
|
void __set_fp_8008A660(void(*)(u16)); /* extern */
|
||||||
void __set_obPtrPtrDisplayList(Gfx**); /* extern */
|
void __set_obPtrPtrDisplayList(Gfx**); /* extern */
|
||||||
|
|
@ -52,7 +53,6 @@ extern s8 D_800AEF9A;
|
||||||
extern s8 D_800AEFA0;
|
extern s8 D_800AEFA0;
|
||||||
extern s32 D_800AEFA4;
|
extern s32 D_800AEFA4;
|
||||||
extern s8 D_800C4808;
|
extern s8 D_800C4808;
|
||||||
extern s32 D_800C4BCC;
|
|
||||||
extern s8 D_800C4CE4;
|
extern s8 D_800C4CE4;
|
||||||
extern s8 D_800E7A0C;
|
extern s8 D_800E7A0C;
|
||||||
extern s8 D_800E810C;
|
extern s8 D_800E810C;
|
||||||
|
|
@ -66,7 +66,6 @@ extern Arg_800712C4* D_800AEF9C;
|
||||||
|
|
||||||
extern s32 D_800A81F4;
|
extern s32 D_800A81F4;
|
||||||
extern s32 D_800A81F8;
|
extern s32 D_800A81F8;
|
||||||
extern s32 D_800C4BCC;
|
|
||||||
|
|
||||||
extern s8 D_800AEF9A;
|
extern s8 D_800AEF9A;
|
||||||
extern void* D_800C4BB8;
|
extern void* D_800C4BB8;
|
||||||
|
|
@ -161,7 +160,7 @@ void func_80072710(void) {
|
||||||
/* 2B38 80072738 */
|
/* 2B38 80072738 */
|
||||||
void __set_vi_mode(s32 arg0) {
|
void __set_vi_mode(s32 arg0) {
|
||||||
switch (osTvType) {
|
switch (osTvType) {
|
||||||
case 1:
|
case OS_TV_NTSC:
|
||||||
switch (arg0) {
|
switch (arg0) {
|
||||||
case 2:
|
case 2:
|
||||||
osViSetMode(&osViModeNtscLan1);
|
osViSetMode(&osViModeNtscLan1);
|
||||||
|
|
@ -171,7 +170,8 @@ void __set_vi_mode(s32 arg0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
|
||||||
|
case OS_TV_MPAL:
|
||||||
switch (arg0) {
|
switch (arg0) {
|
||||||
case 2:
|
case 2:
|
||||||
osViSetMode(&osViModeMpalLan1);
|
osViSetMode(&osViModeMpalLan1);
|
||||||
|
|
@ -472,7 +472,7 @@ void func_80073ED8(void) {
|
||||||
__MAYBE_SONG_800EB290.field_0x2c = 0;
|
__MAYBE_SONG_800EB290.field_0x2c = 0;
|
||||||
MusStop(MUSFLAG_SONGS | MUSFLAG_EFFECTS, 12);
|
MusStop(MUSFLAG_SONGS | MUSFLAG_EFFECTS, 12);
|
||||||
D_800A81F4 = 12;
|
D_800A81F4 = 12;
|
||||||
D_800A81F8 = D_800C4BCC;
|
D_800A81F8 = nuScRetraceCounter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
#include "nu/nusys.h"
|
||||||
|
|
||||||
|
/* 19E30 80089A30 */
|
||||||
|
void nuGfxRetraceWait(u32 retraceNum) {
|
||||||
|
NUScClient client;
|
||||||
|
OSMesgQueue mq;
|
||||||
|
OSMesg buf;
|
||||||
|
|
||||||
|
osCreateMesgQueue(&mq, &buf, 1);
|
||||||
|
nuScAddClient(&client, &mq, 1);
|
||||||
|
|
||||||
|
for(; retraceNum > 0; retraceNum--)
|
||||||
|
osRecvMesg(&mq, NULL, OS_MESG_BLOCK);
|
||||||
|
|
||||||
|
nuScRemoveClient(&client);
|
||||||
|
}
|
||||||
|
|
@ -3,10 +3,10 @@
|
||||||
#include "PR/gbi.h"
|
#include "PR/gbi.h"
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
extern u32 D_800E91D0;
|
#include "nu/nusys.h"
|
||||||
|
|
||||||
/* 16FF40 8021EF00 */
|
/* 16FF40 8021EF00 */
|
||||||
void *D_overlay_165FC0_8021EF00_16FF40 = &D_800E91D0;
|
void *D_overlay_165FC0_8021EF00_16FF40 = nusched.graphicsRequestBuf;
|
||||||
|
|
||||||
/* 16FF44 8021EF04 */
|
/* 16FF44 8021EF04 */
|
||||||
u8 D_overlay_165FC0_8021EF04_16FF44 = 0;
|
u8 D_overlay_165FC0_8021EF04_16FF44 = 0;
|
||||||
|
|
|
||||||
|
|
@ -42,3 +42,4 @@ D_800E8C2C = 0x800E8C2C;
|
||||||
|
|
||||||
D_80187BCC = 0x80187BCC;
|
D_80187BCC = 0x80187BCC;
|
||||||
D_800E8300 = 0x800E8300;
|
D_800E8300 = 0x800E8300;
|
||||||
|
nusched = 0x800E8B10;
|
||||||
Loading…
Reference in New Issue