diff --git a/CMakeLists.txt b/CMakeLists.txt index 5552ebf9..1c9388b6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,11 +23,14 @@ set(DOLPHIN_FILES set(GAME_FILES src/game/card.c src/game/fault.c + src/game/flag.c src/game/frand.c + src/game/gamework.c src/game/main.c src/game/malloc.c src/game/memory.c src/game/init.c + src/game/pad.c src/game/process.c ) diff --git a/extern/aurora b/extern/aurora index 6f686121..f713ca67 160000 --- a/extern/aurora +++ b/extern/aurora @@ -1 +1 @@ -Subproject commit 6f6861215150abc4fa00197de43754525cac07a6 +Subproject commit f713ca675055fa522bf44e2d326eb3e7941ec381 diff --git a/include/game/jmp.h b/include/game/jmp.h index cc3da85a..4ead22aa 100755 --- a/include/game/jmp.h +++ b/include/game/jmp.h @@ -164,10 +164,10 @@ s32 gcsetjmp(jmp_buf *jump); s32 gclongjmp(jmp_buf *jump, s32 status); #define SETJMP(jump) gcsetjmp(&(jump)) -#define SETJMP(jump, status) gclongjump(&(jump), (status)) +#define LONGJMP(jump, status) gclongjmp(&(jump), (status)) -#define SETJMP_SET_IP(jump, func) jmp_buf->lr = (u32)func -#define SETJMP_SET_IP(jump, sp) jmp_buf->sp = (u32)sp +#define SETJMP_SET_IP(jump, func) jump.lr = (u32)func +#define SETJMP_SET_SP(jump, stack_ptr) jump.sp = (u32)stack_ptr #endif #endif diff --git a/src/game/flag.c b/src/game/flag.c index 26cdb6c8..4f4b4c74 100644 --- a/src/game/flag.c +++ b/src/game/flag.c @@ -1,6 +1,9 @@ -#include "dolphin.h" #include "game/gamework_data.h" +#ifdef TARGET_PC +#include "string.h" +#endif + static u8 _Sys_Flag[16]; static u8 *GetFlagPtr(u32 flag) @@ -39,4 +42,4 @@ void _ClearFlag(u32 flag) void _InitFlag(void) { memset(_Sys_Flag, 0, sizeof(_Sys_Flag)); -} \ No newline at end of file +} diff --git a/src/game/jmp.c b/src/game/jmp.c index c16670de..4da43088 100755 --- a/src/game/jmp.c +++ b/src/game/jmp.c @@ -1,6 +1,6 @@ #include "game/jmp.h" -s32 gcsetjmp(register JMPBUF *jump) +s32 gcsetjmp(register jmp_buf *jump) { // clang-format off asm { @@ -37,7 +37,7 @@ s32 gcsetjmp(register JMPBUF *jump) } // clang-format off -asm s32 gclongjmp(register JMPBUF *jump, register s32 status) { +asm s32 gclongjmp(register jmp_buf *jump, register s32 status) { nofralloc lwz r5, jump->lr lwz r6, jump->cr diff --git a/src/game/main.c b/src/game/main.c index cbf96156..4aecaf09 100644 --- a/src/game/main.c +++ b/src/game/main.c @@ -205,16 +205,16 @@ void main(void) #endif } -// void HuSysVWaitSet(s16 vcount) -//{ -// minimumVcount = vcount; -// minimumVcountf = vcount; -// } -// -// s16 HuSysVWaitGet(s16 param) -//{ -// return (s16) minimumVcount; -// } +void HuSysVWaitSet(s16 vcount) +{ + minimumVcount = vcount; + minimumVcountf = vcount; +} + +s16 HuSysVWaitGet(s16 param) +{ + return (s16) minimumVcount; +} s32 rnd_seed = 0x0000D9ED; diff --git a/src/game/process.c b/src/game/process.c index e2d423ab..4a85475b 100644 --- a/src/game/process.c +++ b/src/game/process.c @@ -84,7 +84,7 @@ Process *HuPrcCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_siz process->stat = 0; process->prio = prio; process->sleep_time = 0; - process->base_sp = ((size_t)HuMemMemoryAlloc(heap, stack_size, FAKE_RETADDR)) + stack_size - 8; + process->base_sp = ((uintptr_t)HuMemMemoryAlloc(heap, stack_size, FAKE_RETADDR)) + stack_size - 8; SETJMP(process->jump); SETJMP_SET_IP(process->jump, func); SETJMP_SET_SP(process->jump, process->base_sp); @@ -191,7 +191,7 @@ static void gcTerminateProcess(Process *process) } UnlinkProcess(&processtop, process); processcnt--; - longjmp(processjmpbuf, 2); + LONGJMP(processjmpbuf, 2); } void HuPrcEnd() @@ -240,7 +240,7 @@ void HuPrcCall(s32 tick) Process *process; s32 ret; processcur = processtop; - ret = setjmp(processjmpbuf); + ret = SETJMP(processjmpbuf); while (1) { switch (ret) { case 2: diff --git a/src/port/stubs.c b/src/port/stubs.c index d9c1ed60..7b2a770b 100644 --- a/src/port/stubs.c +++ b/src/port/stubs.c @@ -518,6 +518,24 @@ OSInterruptMask __OSUnmaskInterrupts(OSInterruptMask mask) return 0; } +void SISetSamplingRate(u32 msec) +{ + // Maybe we could include SI later + puts("SISetSamplingRate is a stub"); +} + +VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback callback) +{ + puts("VISetPostRetraceCallback is a stub"); + // TODO + return callback; +} + +void msmSysRegularProc(void) +{ + puts("msmSysRegularProc is a stub"); +} + // Hudson void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2) { } void HuAudInit() { }