jmp fixes and be matching again

move to aurora fork
This commit is contained in:
dbalatoni13 2025-04-04 00:47:03 +02:00
parent 30d80d66a0
commit 4438f7d9c8
8 changed files with 45 additions and 21 deletions

View file

@ -23,11 +23,14 @@ set(DOLPHIN_FILES
set(GAME_FILES set(GAME_FILES
src/game/card.c src/game/card.c
src/game/fault.c src/game/fault.c
src/game/flag.c
src/game/frand.c src/game/frand.c
src/game/gamework.c
src/game/main.c src/game/main.c
src/game/malloc.c src/game/malloc.c
src/game/memory.c src/game/memory.c
src/game/init.c src/game/init.c
src/game/pad.c
src/game/process.c src/game/process.c
) )

2
extern/aurora vendored

@ -1 +1 @@
Subproject commit 6f6861215150abc4fa00197de43754525cac07a6 Subproject commit f713ca675055fa522bf44e2d326eb3e7941ec381

View file

@ -164,10 +164,10 @@ s32 gcsetjmp(jmp_buf *jump);
s32 gclongjmp(jmp_buf *jump, s32 status); s32 gclongjmp(jmp_buf *jump, s32 status);
#define SETJMP(jump) gcsetjmp(&(jump)) #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, func) jump.lr = (u32)func
#define SETJMP_SET_IP(jump, sp) jmp_buf->sp = (u32)sp #define SETJMP_SET_SP(jump, stack_ptr) jump.sp = (u32)stack_ptr
#endif #endif
#endif #endif

View file

@ -1,6 +1,9 @@
#include "dolphin.h"
#include "game/gamework_data.h" #include "game/gamework_data.h"
#ifdef TARGET_PC
#include "string.h"
#endif
static u8 _Sys_Flag[16]; static u8 _Sys_Flag[16];
static u8 *GetFlagPtr(u32 flag) static u8 *GetFlagPtr(u32 flag)
@ -39,4 +42,4 @@ void _ClearFlag(u32 flag)
void _InitFlag(void) void _InitFlag(void)
{ {
memset(_Sys_Flag, 0, sizeof(_Sys_Flag)); memset(_Sys_Flag, 0, sizeof(_Sys_Flag));
} }

View file

@ -1,6 +1,6 @@
#include "game/jmp.h" #include "game/jmp.h"
s32 gcsetjmp(register JMPBUF *jump) s32 gcsetjmp(register jmp_buf *jump)
{ {
// clang-format off // clang-format off
asm { asm {
@ -37,7 +37,7 @@ s32 gcsetjmp(register JMPBUF *jump)
} }
// clang-format off // clang-format off
asm s32 gclongjmp(register JMPBUF *jump, register s32 status) { asm s32 gclongjmp(register jmp_buf *jump, register s32 status) {
nofralloc nofralloc
lwz r5, jump->lr lwz r5, jump->lr
lwz r6, jump->cr lwz r6, jump->cr

View file

@ -205,16 +205,16 @@ void main(void)
#endif #endif
} }
// void HuSysVWaitSet(s16 vcount) void HuSysVWaitSet(s16 vcount)
//{ {
// minimumVcount = vcount; minimumVcount = vcount;
// minimumVcountf = vcount; minimumVcountf = vcount;
// } }
//
// s16 HuSysVWaitGet(s16 param) s16 HuSysVWaitGet(s16 param)
//{ {
// return (s16) minimumVcount; return (s16) minimumVcount;
// } }
s32 rnd_seed = 0x0000D9ED; s32 rnd_seed = 0x0000D9ED;

View file

@ -84,7 +84,7 @@ Process *HuPrcCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_siz
process->stat = 0; process->stat = 0;
process->prio = prio; process->prio = prio;
process->sleep_time = 0; 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(process->jump);
SETJMP_SET_IP(process->jump, func); SETJMP_SET_IP(process->jump, func);
SETJMP_SET_SP(process->jump, process->base_sp); SETJMP_SET_SP(process->jump, process->base_sp);
@ -191,7 +191,7 @@ static void gcTerminateProcess(Process *process)
} }
UnlinkProcess(&processtop, process); UnlinkProcess(&processtop, process);
processcnt--; processcnt--;
longjmp(processjmpbuf, 2); LONGJMP(processjmpbuf, 2);
} }
void HuPrcEnd() void HuPrcEnd()
@ -240,7 +240,7 @@ void HuPrcCall(s32 tick)
Process *process; Process *process;
s32 ret; s32 ret;
processcur = processtop; processcur = processtop;
ret = setjmp(processjmpbuf); ret = SETJMP(processjmpbuf);
while (1) { while (1) {
switch (ret) { switch (ret) {
case 2: case 2:

View file

@ -518,6 +518,24 @@ OSInterruptMask __OSUnmaskInterrupts(OSInterruptMask mask)
return 0; 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 // Hudson
void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2) { } void HuDvdErrDispInit(GXRenderModeObj *rmode, void *xfb1, void *xfb2) { }
void HuAudInit() { } void HuAudInit() { }