Ignore build folder
Remove include folders from Makefile Updated symbols Reverse a couple of functions
This commit is contained in:
parent
b7c264fe1e
commit
3fa9d72769
|
|
@ -2,6 +2,7 @@ baserom.z64
|
|||
|
||||
asm
|
||||
assets
|
||||
build
|
||||
|
||||
.vscode
|
||||
|
||||
|
|
|
|||
2
Makefile
2
Makefile
|
|
@ -68,7 +68,7 @@ ENDLINE := \n'
|
|||
|
||||
### Compiler Options ###
|
||||
|
||||
IINC := -I include -I $(BUILD_DIR)/include -I src -I asm -I lib/libreultra/include/2.0I/
|
||||
IINC := -I include -I $(BUILD_DIR)/include -I lib/libreultra/include/2.0I/
|
||||
|
||||
ASFLAGS := -Iinclude -EB -mtune=vr4300 -march=vr4300
|
||||
CPPFLAGS := $(IINC) -D_LANGUAGE_C -D_FINALROM -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -nostdinc -mgp32 -mfp32 -mips2
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ segments:
|
|||
follows_vram: entry
|
||||
bss_size: 0x3AE70
|
||||
subsegments:
|
||||
- [0x1060, asm, "main"]
|
||||
- [0x1060, c, "main"]
|
||||
- [0x4AC0, asm]
|
||||
- [0x5FC0, asm]
|
||||
- [0x68E0, asm]
|
||||
|
|
@ -109,7 +109,7 @@ segments:
|
|||
- [0x1A5B0, asm]
|
||||
- [0x1A660, c]
|
||||
- [0x1A9A0, asm]
|
||||
- [0x1AA00, asm, "copy_global_controller_data"]
|
||||
- [0x1AA00, c]
|
||||
- [0x1AAA0, asm]
|
||||
- [0x1AD10, asm]
|
||||
- [0x1AFD0, asm]
|
||||
|
|
@ -312,7 +312,7 @@ segments:
|
|||
# - [0x3F140, rodata, heapcheck]
|
||||
# - [0x3F170, rodata, heapcheck]
|
||||
|
||||
# - { start: 0x3F1B0, type: bss, vram: 0x800E9C20 }
|
||||
- { start: 0x3F1B0, type: bss, vram: 0x800E9C20 }
|
||||
|
||||
- type: code
|
||||
dir: overlays/overlay0
|
||||
|
|
|
|||
12
src/1A050.c
12
src/1A050.c
|
|
@ -10,6 +10,18 @@ INCLUDE_ASM(const s32, "1A050", func_80089C50);
|
|||
|
||||
INCLUDE_ASM(const s32, "1A050", __init_controllers);
|
||||
|
||||
// u8 __init_controllers(void) {
|
||||
// ? sp18;
|
||||
// u8 sp28;
|
||||
|
||||
// osCreateMesgQueue(&MQ_CONTROLLER, &D_800BBE60, 8);
|
||||
// osSetEventMesg(5, &MQ_CONTROLLER, 0);
|
||||
// osContInit(&MQ_CONTROLLER, &sp28, &sp18);
|
||||
// osCreateThread(&THREAD_CONTROLLER, 5, __controller_thread_80089D9C, NULL, &MQ_800BE030, 0x73);
|
||||
// osStartThread(&THREAD_CONTROLLER);
|
||||
// return sp28;
|
||||
// }
|
||||
|
||||
INCLUDE_ASM(const s32, "1A050", func_80089CF8);
|
||||
|
||||
INCLUDE_ASM(const s32, "1A050", func_80089D5C);
|
||||
|
|
|
|||
89
src/1A660.c
89
src/1A660.c
|
|
@ -1,25 +1,40 @@
|
|||
#include "common.h"
|
||||
|
||||
#include <PR/os.h>
|
||||
#include <ultra64.h>
|
||||
|
||||
void __start_copy_global_controller_data(void);
|
||||
void __end_copy_global_controller_data(void);
|
||||
|
||||
s32 __read_controller(OSContPad* data, u32 flags);
|
||||
s32 __real_read_controller(void);
|
||||
s32 __calls_read_controller_0(s16* arg0);
|
||||
|
||||
extern void func_8008A354();
|
||||
extern void func_8008A37C();
|
||||
|
||||
extern u32 D_800C4B30;
|
||||
extern s32 D_800C4B30;
|
||||
extern OSMesgQueue MQ_CONTROLLER;
|
||||
extern OSMesgQueue MQ_800E9BF0;
|
||||
|
||||
INCLUDE_ASM(const s32, "1A660", func_8008A260);
|
||||
|
||||
INCLUDE_ASM(const s32, "1A660", func_8008A334);
|
||||
// INCLUDE_ASM(const s32, "1A660", func_8008A334);
|
||||
extern void func_8008B1D0(u8*);
|
||||
extern u8 D_800A9FF8;
|
||||
|
||||
INCLUDE_ASM(const s32, "1A660", __start_copy_global_controller_data);
|
||||
void func_8008A334(void) {
|
||||
func_8008B1D0(&D_800A9FF8);
|
||||
}
|
||||
|
||||
INCLUDE_ASM(const s32, "1A660", __end_copy_global_controller_data);
|
||||
void __start_copy_global_controller_data(void) {
|
||||
osSendMesg(&MQ_800E9BF0, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
|
||||
// INCLUDE_ASM(const s32, "1A660", __read_controller);
|
||||
void __end_copy_global_controller_data(void) {
|
||||
osRecvMesg(&MQ_800E9BF0, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
|
||||
|
||||
s32 __read_controller(OSContPad* data, u32 arg1) {
|
||||
s32 __read_controller(OSContPad* data, u32 flags) {
|
||||
s32 res;
|
||||
|
||||
res = osContStartReadData(&MQ_CONTROLLER);
|
||||
|
|
@ -27,7 +42,7 @@ s32 __read_controller(OSContPad* data, u32 arg1) {
|
|||
return res;
|
||||
|
||||
osRecvMesg(&MQ_CONTROLLER, NULL, OS_MESG_BLOCK);
|
||||
if (!(arg1 & D_800C4B30)) {
|
||||
if (!(flags & D_800C4B30)) {
|
||||
func_8008A354();
|
||||
osContGetReadData(data);
|
||||
func_8008A37C();
|
||||
|
|
@ -37,11 +52,59 @@ s32 __read_controller(OSContPad* data, u32 arg1) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
extern OSContStatus __GLOBAL_CONT_STATUS[MAXCONTROLLERS];
|
||||
extern OSMesgQueue MQ_CONTROLLER;
|
||||
|
||||
INCLUDE_ASM(const s32, "1A660", __real_read_controller);
|
||||
s32 __real_read_controller(void) {
|
||||
s32 var_v0;
|
||||
|
||||
INCLUDE_ASM(const s32, "1A660", __calls_read_controller_0);
|
||||
var_v0 = osContStartQuery(&MQ_CONTROLLER);
|
||||
if (var_v0 == 0) {
|
||||
osRecvMesg(&MQ_CONTROLLER, NULL, OS_MESG_BLOCK);
|
||||
osContGetQuery(__GLOBAL_CONT_STATUS);
|
||||
return 0;
|
||||
} else {
|
||||
return var_v0;
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM(const s32, "1A660", __calls_read_controller_1);
|
||||
extern void (*D_800A9FE0)(s16);
|
||||
extern OSMesgQueue MQ_800C4A00;
|
||||
extern OSContPad __GLOBAL_CONTROLLER_DATA;
|
||||
|
||||
s32 __calls_read_controller_0(s16* arg0) {
|
||||
if (D_800C4B30 == 0) {
|
||||
osRecvMesg(&MQ_800C4A00, NULL, 0);
|
||||
__read_controller(&__GLOBAL_CONTROLLER_DATA, 1);
|
||||
if (D_800A9FE0 != NULL) {
|
||||
D_800A9FE0(*arg0);
|
||||
}
|
||||
osSendMesg(&MQ_800C4A00, NULL, 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 field_0x0[0xc];
|
||||
/* 0xC */ OSContPad* data;
|
||||
} Arg___calls_read_controller_1;
|
||||
|
||||
void __calls_read_controller_1(Arg___calls_read_controller_1* arg) {
|
||||
__read_controller(arg->data, 0);
|
||||
}
|
||||
|
||||
s32 __calls_read_controller_2(s16* arg0) {
|
||||
s32 var_v0;
|
||||
|
||||
osRecvMesg(&MQ_800C4A00, NULL, 0);
|
||||
var_v0 = __read_controller(&__GLOBAL_CONTROLLER_DATA, 0);
|
||||
if (var_v0 == 0) {
|
||||
if (D_800A9FE0 != NULL) {
|
||||
D_800A9FE0(*arg0);
|
||||
}
|
||||
return 0;
|
||||
} else {
|
||||
return var_v0;
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM(const s32, "1A660", __calls_read_controller_2);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
#include "common.h"
|
||||
|
||||
#include <PR/os.h>
|
||||
|
||||
extern OSContPad __GLOBAL_CONTROLLER_DATA;
|
||||
|
||||
extern void __end_copy_global_controller_data();
|
||||
extern void __start_copy_global_controller_data();
|
||||
|
||||
void __copy_global_controller_data(OSContPad* arg0) {
|
||||
__start_copy_global_controller_data();
|
||||
bcopy(&__GLOBAL_CONTROLLER_DATA, arg0, 0x18);
|
||||
__end_copy_global_controller_data();
|
||||
}
|
||||
|
||||
extern void func_80089CF8(s32, s32);
|
||||
|
||||
void func_8008A640(void) {
|
||||
func_80089CF8(0x103, 0);
|
||||
}
|
||||
|
||||
extern s32 D_800A9FE0;
|
||||
|
||||
void func_8008A660(s32 arg0) {
|
||||
s32 mask;
|
||||
|
||||
mask = osSetIntMask(OS_IM_NONE);
|
||||
D_800A9FE0 = arg0;
|
||||
osSetIntMask(mask);
|
||||
}
|
||||
|
||||
338
src/ctx.h
338
src/ctx.h
|
|
@ -1,338 +0,0 @@
|
|||
typedef unsigned char u8; /* unsigned 8-bit */
|
||||
typedef unsigned short u16; /* unsigned 16-bit */
|
||||
typedef unsigned long u32; /* unsigned 32-bit */
|
||||
typedef unsigned long long u64; /* unsigned 64-bit */
|
||||
|
||||
typedef signed char s8; /* signed 8-bit */
|
||||
typedef short s16; /* signed 16-bit */
|
||||
typedef long s32; /* signed 32-bit */
|
||||
typedef long long s64; /* signed 64-bit */
|
||||
|
||||
typedef volatile unsigned char vu8; /* unsigned 8-bit */
|
||||
typedef volatile unsigned short vu16; /* unsigned 16-bit */
|
||||
typedef volatile unsigned long vu32; /* unsigned 32-bit */
|
||||
typedef volatile unsigned long long vu64; /* unsigned 64-bit */
|
||||
|
||||
typedef volatile signed char vs8; /* signed 8-bit */
|
||||
typedef volatile short vs16; /* signed 16-bit */
|
||||
typedef volatile long vs32; /* signed 32-bit */
|
||||
typedef volatile long long vs64; /* signed 64-bit */
|
||||
|
||||
typedef float f32; /* single prec floating point */
|
||||
typedef double f64; /* double prec floating point */
|
||||
|
||||
typedef unsigned long size_t;
|
||||
|
||||
#define NULL 0
|
||||
|
||||
#define true 1
|
||||
#define false 0
|
||||
|
||||
|
||||
/* Flags to turn blocking on/off when sending/receiving message */
|
||||
#define OS_MESG_NOBLOCK 0
|
||||
#define OS_MESG_BLOCK 1
|
||||
|
||||
/* Recommended thread priorities for the system threads */
|
||||
#define OS_PRIORITY_MAX 255
|
||||
#define OS_PRIORITY_VIMGR 254
|
||||
#define OS_PRIORITY_RMON 250
|
||||
#define OS_PRIORITY_RMONSPIN 200
|
||||
#define OS_PRIORITY_PIMGR 150
|
||||
#define OS_PRIORITY_SIMGR 140
|
||||
#define OS_PRIORITY_APPMAX 127
|
||||
#define OS_PRIORITY_IDLE 0 /* Must be 0 */
|
||||
|
||||
typedef s32 OSPri;
|
||||
typedef s32 OSId;
|
||||
typedef union { struct { f32 f_odd; f32 f_even; } f; f64 d; } __OSfp;
|
||||
|
||||
typedef struct {
|
||||
u64 at, v0, v1, a0, a1, a2, a3;
|
||||
u64 t0, t1, t2, t3, t4, t5, t6, t7;
|
||||
u64 s0, s1, s2, s3, s4, s5, s6, s7;
|
||||
u64 t8, t9, gp, sp, s8, ra;
|
||||
u64 lo, hi;
|
||||
u32 sr, pc, cause, badvaddr, rcp;
|
||||
u32 fpcsr;
|
||||
__OSfp fp0, fp2, fp4, fp6, fp8, fp10, fp12, fp14;
|
||||
__OSfp fp16, fp18, fp20, fp22, fp24, fp26, fp28, fp30;
|
||||
} __OSThreadContext;
|
||||
|
||||
typedef struct OSThread_s {
|
||||
struct OSThread_s *next; /* run/mesg queue link */
|
||||
OSPri priority; /* run/mesg queue priority */
|
||||
struct OSThread_s **queue; /* queue thread is on */
|
||||
struct OSThread_s *tlnext; /* all threads queue link */
|
||||
u16 state; /* OS_STATE_* */
|
||||
u16 flags; /* flags for rmon */
|
||||
OSId id; /* id for debugging */
|
||||
int fp; /* thread has used fp unit */
|
||||
__OSThreadContext context; /* register/interrupt mask */
|
||||
} OSThread;
|
||||
/*
|
||||
* Structure for message
|
||||
*/
|
||||
typedef void* OSMesg;
|
||||
|
||||
typedef struct {
|
||||
u16 button;
|
||||
s8 stick_x; /* -80 <= stick_x <= 80 */
|
||||
s8 stick_y; /* -80 <= stick_y <= 80 */
|
||||
u8 errno;
|
||||
} OSContPad;
|
||||
|
||||
/*
|
||||
* Structure for message queue
|
||||
*/
|
||||
typedef struct OSMesgQueue_s {
|
||||
OSThread *mtqueue; /* Queue to store threads blocked
|
||||
on empty mailboxes (receive) */
|
||||
OSThread *fullqueue; /* Queue to store threads blocked
|
||||
on full mailboxes (send) */
|
||||
s32 validCount; /* Contains number of valid message */
|
||||
s32 first; /* Points to first valid message */
|
||||
s32 msgCount; /* Contains total # of messages */
|
||||
OSMesg *msg; /* Points to message buffer array */
|
||||
} OSMesgQueue;
|
||||
|
||||
/*
|
||||
* OSTranxInfo is set up for Leo Disk DMA. This info will be maintained
|
||||
* by exception handler. This is how the PIMGR and the ISR communicate.
|
||||
*/
|
||||
typedef struct {
|
||||
u32 errStatus; /* error status */
|
||||
void *dramAddr; /* RDRAM buffer address (DMA) */
|
||||
void *C2Addr; /* C2 buffer address */
|
||||
u32 sectorSize; /* size of transfering sector */
|
||||
u32 C1ErrNum; /* total # of C1 errors */
|
||||
u32 C1ErrSector[4]; /* error sectors */
|
||||
} __OSBlockInfo;
|
||||
|
||||
typedef struct {
|
||||
u32 cmdType; /* for disk only */
|
||||
u16 transferMode; /* Block, Track, or sector? */
|
||||
u16 blockNum; /* which block is transfering */
|
||||
s32 sectorNum; /* which sector is transfering */
|
||||
u32 devAddr; /* Device buffer address */
|
||||
u32 bmCtlShadow; /* asic bm_ctl(510) register shadow ram */
|
||||
u32 seqCtlShadow; /* asic seq_ctl(518) register shadow ram */
|
||||
__OSBlockInfo block[2]; /* bolck transfer info */
|
||||
} __OSTranxInfo;
|
||||
|
||||
|
||||
typedef struct OSPiHandle_s {
|
||||
struct OSPiHandle_s *next; /* point to next handle on the table */
|
||||
u8 type; /* DEVICE_TYPE_BULK for disk */
|
||||
u8 latency; /* domain latency */
|
||||
u8 pageSize; /* domain page size */
|
||||
u8 relDuration; /* domain release duration */
|
||||
u8 pulse; /* domain pulse width */
|
||||
u8 domain; /* which domain */
|
||||
u32 baseAddress; /* Domain address */
|
||||
u32 speed; /* for roms only */
|
||||
/* The following are "private" elements" */
|
||||
__OSTranxInfo transferInfo; /* for disk only */
|
||||
} OSPiHandle;
|
||||
|
||||
/*
|
||||
* Structure for I/O message block
|
||||
*/
|
||||
typedef struct {
|
||||
u16 type; /* Message type */
|
||||
u8 pri; /* Message priority (High or Normal) */
|
||||
u8 status; /* Return status */
|
||||
OSMesgQueue *retQueue; /* Return message queue to notify I/O
|
||||
* completion */
|
||||
} OSIoMesgHdr;
|
||||
|
||||
typedef struct {
|
||||
OSIoMesgHdr hdr; /* Message header */
|
||||
void * dramAddr; /* RDRAM buffer address (DMA) */
|
||||
u32 devAddr; /* Device buffer address (DMA) */
|
||||
u32 size; /* DMA transfer size in bytes */
|
||||
OSPiHandle *piHandle; /* PI device handle */
|
||||
} OSIoMesg;
|
||||
|
||||
/*
|
||||
* Structure for device manager block
|
||||
*/
|
||||
typedef struct {
|
||||
s32 active; /* Status flag */
|
||||
OSThread *thread; /* Calling thread */
|
||||
OSMesgQueue *cmdQueue; /* Command queue */
|
||||
OSMesgQueue *evtQueue; /* Event queue */
|
||||
OSMesgQueue *acsQueue; /* Access queue */
|
||||
/* Raw DMA routine */
|
||||
s32 (*dma)(s32, u32, void *, u32);
|
||||
s32 (*edma)(OSPiHandle *, s32, u32, void *, u32);
|
||||
} OSDevMgr;
|
||||
|
||||
|
||||
#define OS_SC_STACKSIZE 0x2000
|
||||
|
||||
#define OS_SC_RETRACE_MSG 1
|
||||
#define OS_SC_DONE_MSG 2
|
||||
#define OS_SC_RDP_DONE_MSG 3
|
||||
#define OS_SC_PRE_NMI_MSG 4
|
||||
#define OS_SC_LAST_MSG 4 /* this should have highest number */
|
||||
#define OS_SC_MAX_MESGS 8
|
||||
|
||||
typedef struct {
|
||||
short type;
|
||||
char misc[30];
|
||||
} OSScMsg;
|
||||
|
||||
typedef struct {
|
||||
u32 type;
|
||||
u32 flags;
|
||||
|
||||
u64 *ucode_boot;
|
||||
u32 ucode_boot_size;
|
||||
|
||||
u64 *ucode;
|
||||
u32 ucode_size;
|
||||
|
||||
u64 *ucode_data;
|
||||
u32 ucode_data_size;
|
||||
|
||||
u64 *dram_stack;
|
||||
u32 dram_stack_size;
|
||||
|
||||
u64 *output_buff;
|
||||
u64 *output_buff_size;
|
||||
|
||||
u64 *data_ptr;
|
||||
u32 data_size;
|
||||
|
||||
u64 *yield_data_ptr;
|
||||
u32 yield_data_size;
|
||||
|
||||
} OSTask_t;
|
||||
|
||||
typedef union {
|
||||
OSTask_t t;
|
||||
long long int force_structure_alignment;
|
||||
} OSTask;
|
||||
|
||||
typedef struct OSScTask_s {
|
||||
struct OSScTask_s *next; /* note: this must be first */
|
||||
u32 state;
|
||||
u32 flags;
|
||||
void *framebuffer; /* used by graphics tasks */
|
||||
|
||||
OSTask list;
|
||||
OSMesgQueue *msgQ;
|
||||
OSMesg msg;
|
||||
} OSScTask; /* non FINALROM code */
|
||||
|
||||
/*
|
||||
* OSScTask flags:
|
||||
*/
|
||||
#define OS_SC_NEEDS_RDP 0x0001 /* uses the RDP */
|
||||
#define OS_SC_NEEDS_RSP 0x0002 /* uses the RSP */
|
||||
#define OS_SC_DRAM_DLIST 0x0004 /* SP & DP communicate through DRAM */
|
||||
#define OS_SC_PARALLEL_TASK 0x0010 /* must be first gfx task on list */
|
||||
#define OS_SC_LAST_TASK 0x0020 /* last task in queue for frame */
|
||||
#define OS_SC_SWAPBUFFER 0x0040 /* swapbuffers when gfx task done */
|
||||
|
||||
#define OS_SC_RCP_MASK 0x0003 /* mask for needs bits */
|
||||
#define OS_SC_TYPE_MASK 0x0007 /* complete type mask */
|
||||
/*
|
||||
* OSScClient:
|
||||
*
|
||||
* Data structure used by threads that wish to communicate to the
|
||||
* scheduling thread
|
||||
*
|
||||
*/
|
||||
typedef struct SCClient_s {
|
||||
struct SCClient_s *next; /* next client in the list */
|
||||
OSMesgQueue *msgQ; /* where to send the frame msg */
|
||||
} OSScClient;
|
||||
|
||||
typedef struct {
|
||||
OSScMsg retraceMsg;
|
||||
OSScMsg prenmiMsg;
|
||||
OSMesgQueue interruptQ;
|
||||
OSMesg intBuf[8];
|
||||
OSMesgQueue cmdQ;
|
||||
OSMesg cmdMsgBuf[8];
|
||||
OSThread thread;
|
||||
OSScClient *clientList;
|
||||
OSScTask *audioListHead;
|
||||
OSScTask *gfxListHead;
|
||||
OSScTask *audioListTail;
|
||||
OSScTask *gfxListTail;
|
||||
OSScTask *curRSPTask;
|
||||
OSScTask *curRDPTask;
|
||||
u32 frameCount;
|
||||
s32 doAudio;
|
||||
} OSSched;
|
||||
|
||||
/* Buttons */
|
||||
#define CONT_A 0x8000
|
||||
#define CONT_B 0x4000
|
||||
#define CONT_G 0x2000
|
||||
#define CONT_START 0x1000
|
||||
#define CONT_UP 0x0800
|
||||
#define CONT_DOWN 0x0400
|
||||
#define CONT_LEFT 0x0200
|
||||
#define CONT_RIGHT 0x0100
|
||||
#define CONT_L 0x0020
|
||||
#define CONT_R 0x0010
|
||||
#define CONT_E 0x0008
|
||||
#define CONT_D 0x0004
|
||||
#define CONT_C 0x0002
|
||||
#define CONT_F 0x0001
|
||||
|
||||
/* Nintendo's official button names */
|
||||
#define A_BUTTON CONT_A
|
||||
#define B_BUTTON CONT_B
|
||||
#define L_TRIG CONT_L
|
||||
#define R_TRIG CONT_R
|
||||
#define Z_TRIG CONT_G
|
||||
#define START_BUTTON CONT_START
|
||||
#define U_JPAD CONT_UP
|
||||
#define L_JPAD CONT_LEFT
|
||||
#define R_JPAD CONT_RIGHT
|
||||
#define D_JPAD CONT_DOWN
|
||||
#define U_CBUTTONS CONT_E
|
||||
#define L_CBUTTONS CONT_C
|
||||
#define R_CBUTTONS CONT_F
|
||||
#define D_CBUTTONS CONT_D
|
||||
|
||||
extern void osContGetReadData(OSContPad* data);
|
||||
extern s32 osContStartReadData(OSMesgQueue *mq);
|
||||
extern s32 osRecvMesg(OSMesgQueue *mq, OSMesg *msg, s32 flags);
|
||||
extern void osCreateThread(OSThread *t, OSId id, void (*entry)(void *), void *arg, void *sp, OSPri p);
|
||||
extern void osSetThreadPri(OSThread *t, OSPri pri);
|
||||
extern void osStartThread(OSThread *t);
|
||||
extern void osCreateScheduler(OSSched *s, void *stack, OSPri priority, u8 mode, u8 retraceCount);
|
||||
|
||||
extern void osCreateMesgQueue(OSMesgQueue *mq, OSMesg *msg, s32 count);
|
||||
extern void osSendMesg(OSMesgQueue *mq, OSMesg msg, s32 flag);
|
||||
extern void osJamMesg(OSMesgQueue *mq, OSMesg msg, s32 flag);
|
||||
extern s32 osRecvMesg(OSMesgQueue *mq, OSMesg *msg, s32 flag);
|
||||
|
||||
extern void osInvalDCache(void *vaddr, s32 nbytes);
|
||||
|
||||
extern OSPiHandle* CART_HANDLE;
|
||||
extern s32 osEPiStartDma(OSPiHandle *pihandle, OSIoMesg *mb, s32 direction);
|
||||
extern s32 osEPiWriteIo(OSPiHandle *pihandle, u32 devAddr, u32 data);
|
||||
extern s32 osEPiReadIo(OSPiHandle *pihandle, u32 devAddr, u32 *data);
|
||||
|
||||
extern void osInitialize(void);
|
||||
|
||||
extern void MusFxBankSetPtrBank(void *ifxbank, void *ipbank);
|
||||
extern void MusSetMasterVolume(unsigned long flags, int volume);
|
||||
extern void MusFxBankInitialize(void *fxbank);
|
||||
|
||||
extern void osViSetSpecialFeatures(u32 func);
|
||||
|
||||
extern void boot(void* arg);
|
||||
extern void idle(void* arg);
|
||||
extern void main_(void* arg);
|
||||
|
||||
extern void romCopy(u8* src, u8* dst, u32 len);
|
||||
|
||||
extern void __calls_romCopy_8009DA50(u8* src, u8* dst, u32 len);
|
||||
|
|
@ -0,0 +1,105 @@
|
|||
#include "common.h"
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80070C60);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", AddHeap);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80070F14);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", __virtual_mem_alloc);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_800710DC);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80071288);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_800712C4);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_800713EC);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", HIsAllocatedPointer);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80071634);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_8007163C);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80071644);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80071950);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_800719E8);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80071A3C);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80071A74);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80071B9C);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80071C04);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80071E74);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", main_);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80072398);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80072710);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80072738);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_800727D8);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_8007284C);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_800728BC);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80072900);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80072944);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", __calls_copy_controller_data);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_8007307C);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80073164);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_8007328C);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_8007337C);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_8007338C);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80073398);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_800733F8);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_800737A0);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_8007382C);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80073AE4);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80073BD0);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80073C48);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80073CB0);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80073ED8);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80073F58);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80073FD4);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80074050);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80074080);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_800740F0);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_800741A8);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_8007422C);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_800742F4);
|
||||
|
||||
INCLUDE_ASM(const s32, "main", func_80074494);
|
||||
|
|
@ -9,6 +9,8 @@ __inc_menu_timer = 0x8019BCEC; // type:func rom:0x1D21EC
|
|||
__calls_inc_menu_timer = 0x80177A38; // rom:0x4D938
|
||||
__MENU_INDEX = 0x801BA94C;
|
||||
|
||||
__GLOBAL_CONT_STATUS = 0x800C4B38;
|
||||
|
||||
musCurrentPtrBank = 0x800B182C;
|
||||
|
||||
osViModeTable = 0x800AA7E0;
|
||||
|
|
@ -167,13 +169,13 @@ proutSprintf = 0x80093508;
|
|||
osSyncPrintf = 0x80093540;
|
||||
rmonPrintf = 0x80093554;
|
||||
|
||||
bzero = 0x80093380;
|
||||
strchr = 0x80093420;
|
||||
strlen = 0x80093460;
|
||||
memcpy = 0x80093484;
|
||||
|
||||
_bcmp = 0x80092F50;
|
||||
_bcopy = 0x80093060;
|
||||
bcopy = 0x80093060;
|
||||
bcmp = 0x80092F50;
|
||||
bzero = 0x80093380;
|
||||
|
||||
MusHandlePause = 0x80081EA4;
|
||||
MusHandleUnpause = 0x80081EC8;
|
||||
|
|
|
|||
Loading…
Reference in New Issue