mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
Move set_rsp_segment to it's own file outside of the os functions
This commit is contained in:
+1
-1
@@ -1,4 +1,4 @@
|
||||
glabel func_80079818
|
||||
glabel __scHandleRetrace
|
||||
/* 07A418 80079818 27BDFFB8 */ addiu $sp, $sp, -0x48
|
||||
/* 07A41C 8007981C AFBF001C */ sw $ra, 0x1c($sp)
|
||||
/* 07A420 80079820 AFB10018 */ sw $s1, 0x18($sp)
|
||||
@@ -40,7 +40,7 @@ glabel __scMain
|
||||
/* 07A240 80079640 10000020 */ b .L800796C4
|
||||
/* 07A244 80079644 8FA50064 */ lw $a1, 0x64($sp)
|
||||
.L80079648:
|
||||
/* 07A248 80079648 0C01E606 */ jal func_80079818
|
||||
/* 07A248 80079648 0C01E606 */ jal __scHandleRetrace
|
||||
/* 07A24C 8007964C 02402025 */ move $a0, $s2
|
||||
/* 07A250 80079650 1000FFEC */ b .L80079604
|
||||
/* 07A254 80079654 02602025 */ move $a0, $s3
|
||||
|
||||
@@ -12,7 +12,7 @@ void __osDevMgrMain(void);
|
||||
|
||||
// bss variables
|
||||
OSThread piThread;
|
||||
s32 D_8012A9B0[64];
|
||||
u8 piThreadStack_2[256]; // piThreadStack[OS_PIM_STACKSIZE]; Shouldn't this be piThreadStack?
|
||||
OSMesgQueue piEventQueue;
|
||||
OSMesg piEventBuf[2];
|
||||
|
||||
@@ -20,8 +20,7 @@ void osCreatePiManager(OSPri pri, OSMesgQueue *cmdQ, OSMesg *cmdBuf, s32 cmdMsgC
|
||||
u32 savedMask;
|
||||
OSPri oldPri;
|
||||
OSPri myPri;
|
||||
if (!__osPiDevMgr.active)
|
||||
{
|
||||
if (!__osPiDevMgr.active) {
|
||||
osCreateMesgQueue(cmdQ, cmdBuf, cmdMsgCnt);
|
||||
osCreateMesgQueue(&piEventQueue, (OSMesg*)&piEventBuf, 1);
|
||||
if (!__osPiAccessQueueEnabled)
|
||||
@@ -29,8 +28,7 @@ void osCreatePiManager(OSPri pri, OSMesgQueue *cmdQ, OSMesg *cmdBuf, s32 cmdMsgC
|
||||
osSetEventMesg(OS_EVENT_PI, &piEventQueue, (OSMesg)0x22222222);
|
||||
oldPri = -1;
|
||||
myPri = osGetThreadPri(NULL);
|
||||
if (myPri < pri)
|
||||
{
|
||||
if (myPri < pri) {
|
||||
oldPri = myPri;
|
||||
osSetThreadPri(NULL, pri);
|
||||
}
|
||||
@@ -46,8 +44,7 @@ void osCreatePiManager(OSPri pri, OSMesgQueue *cmdQ, OSMesg *cmdBuf, s32 cmdMsgC
|
||||
osCreateThread(&piThread, 0, __osDevMgrMain, &__osPiDevMgr, &piThreadStack[OS_PIM_STACKSIZE], pri);
|
||||
osStartThread(&piThread);
|
||||
__osRestoreInt(savedMask);
|
||||
if (oldPri != -1)
|
||||
{
|
||||
if (oldPri != -1) {
|
||||
osSetThreadPri(NULL, oldPri);
|
||||
}
|
||||
}
|
||||
|
||||
+12
-17
@@ -54,14 +54,14 @@ const char D_800E7958[] = "\tdata_size\t\t= %u\n";
|
||||
|
||||
s32 D_80126110;
|
||||
s32 D_80126114;
|
||||
OSTime D_80126118;
|
||||
OSTime gYieldTime;
|
||||
s32 D_80126120;
|
||||
s32 D_80126124;
|
||||
s32 D_80126128[18];
|
||||
|
||||
/*******************************/
|
||||
|
||||
void func_8007A080(OSSched *sc);
|
||||
void __scYield(OSSched *sc);
|
||||
void __scMain(void);
|
||||
void __scExec(OSSched *sc, OSScTask *sp, OSScTask *dp);
|
||||
|
||||
@@ -153,6 +153,7 @@ void func_80079584(f32 *arg0, f32 *arg1, f32 *arg2) {
|
||||
|
||||
GLOBAL_ASM("lib/asm/non_matchings/sched/__scMain.s")
|
||||
|
||||
//__scHandleRetrace equivalent for unk284?
|
||||
void func_80079760(OSSched *sc) {
|
||||
s32 sp24;
|
||||
s32 sp20;
|
||||
@@ -164,7 +165,7 @@ void func_80079760(OSSched *sc) {
|
||||
sc->unk284 = 1;
|
||||
}
|
||||
if ((sc->unk284 != 0) && (sc->curRSPTask != 0)) {
|
||||
func_8007A080(sc);
|
||||
__scYield(sc);
|
||||
} else {
|
||||
sp24 = ((sc->curRSPTask == 0) << 1) | (sc->curRDPTask == 0);
|
||||
if (__scSchedule(sc, &sp20, &sp1C, sp24) != sp24) {
|
||||
@@ -178,10 +179,10 @@ void dummy_80079808() {
|
||||
void dummy_80079810() {
|
||||
}
|
||||
|
||||
GLOBAL_ASM("lib/asm/non_matchings/sched/func_80079818.s")
|
||||
GLOBAL_ASM("lib/asm/non_matchings/sched/__scHandleRetrace.s")
|
||||
GLOBAL_ASM("lib/asm/non_matchings/sched/__scHandleRSP.s")
|
||||
|
||||
void __scHandleRDP(OSSched *sc){
|
||||
void __scHandleRDP(OSSched *sc) {
|
||||
OSScTask *t, *sp = 0, *dp = 0;
|
||||
s32 state;
|
||||
|
||||
@@ -198,7 +199,7 @@ void __scHandleRDP(OSSched *sc){
|
||||
}
|
||||
|
||||
|
||||
OSScTask *__scTaskReady(OSScTask *t){
|
||||
OSScTask *__scTaskReady(OSScTask *t) {
|
||||
if (t) {
|
||||
/*
|
||||
* If there is a pending swap bail out til later (next
|
||||
@@ -255,15 +256,14 @@ GLOBAL_ASM("lib/asm/non_matchings/sched/__scTaskComplete.s")
|
||||
|
||||
void __scAppendList(OSSched *sc, OSScTask *t) {
|
||||
u32 tmp = t->list.t.type;
|
||||
if (tmp == 2){
|
||||
if (tmp == 2) {
|
||||
if(sc->audioListTail)
|
||||
sc->audioListTail->next = t;
|
||||
else
|
||||
sc->audioListHead = t;
|
||||
|
||||
sc->audioListTail = t;
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
if(sc->gfxListTail)
|
||||
sc->gfxListTail->next = t;
|
||||
else
|
||||
@@ -300,17 +300,12 @@ void __scExec(OSSched *sc, OSScTask *sp, OSScTask *dp){
|
||||
}
|
||||
}
|
||||
|
||||
void func_8007A080(OSSched *sc) {
|
||||
void __scYield(OSSched *sc) {
|
||||
if (sc->curRSPTask->list.t.type == M_GFXTASK) {
|
||||
sc->curRSPTask->state |= 0x10;
|
||||
D_80126118 = osGetTime();
|
||||
sc->curRSPTask->state |= OS_SC_YIELD;
|
||||
gYieldTime = osGetTime();
|
||||
osSpTaskYield();
|
||||
}
|
||||
}
|
||||
|
||||
GLOBAL_ASM("lib/asm/non_matchings/sched/__scSchedule.s")
|
||||
|
||||
// This might need to be moved into it's own file.
|
||||
void set_rsp_segment(Gfx **dlist, s32 segment, s32 base) {
|
||||
gSPSegment((*dlist)++, segment, base + 0x80000000)
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#define OS_SC_PRE_NMI_MSG 4
|
||||
#define OS_SC_MAX_MESGS 8
|
||||
|
||||
#define OS_SC_YIELD 2
|
||||
#define OS_SC_YIELD 0x10
|
||||
|
||||
typedef struct {
|
||||
short type;
|
||||
@@ -67,7 +67,7 @@ extern OSViMode osViModeTable[];
|
||||
|
||||
/*******************************/
|
||||
|
||||
void func_8007A080(OSSched *sc);
|
||||
void __scYield(OSSched *sc);
|
||||
void __scMain(void);
|
||||
void __scExec(OSSched *sc, OSScTask *sp, OSScTask *dp);
|
||||
void osCreateScheduler(OSSched *sc, void *stack, OSPri priority, u8 mode, u8 numFields);
|
||||
@@ -82,8 +82,5 @@ OSScTask *__scTaskReady(OSScTask *t);
|
||||
s32 __scTaskComplete(OSSched *sc, OSScTask *t);
|
||||
void __scAppendList(OSSched *sc, OSScTask *t);
|
||||
void __scExec(OSSched *sc, OSScTask *sp, OSScTask *dp);
|
||||
void func_8007A080(OSSched *sc);
|
||||
// This might need to be moved into it's own file.
|
||||
void set_rsp_segment(Gfx **dlist, s32 segment, s32 base);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
/* The comment below is needed for this file to be picked up by generate_ld */
|
||||
/* RAM_POS: 0x8007A2D0 */
|
||||
|
||||
#include "set_rsp_segment.h"
|
||||
#include "PR/mbi.h"
|
||||
#include "PR/gbi.h"
|
||||
#include "PR/R4300.h"
|
||||
|
||||
void set_rsp_segment(Gfx **dlist, s32 segment, s32 base) {
|
||||
gSPSegment((*dlist)++, segment, base + K0BASE)
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef _SET_RSP_SEGMENT_H_
|
||||
#define _SET_RSP_SEGMENT_H_
|
||||
|
||||
#include "PR/gbi.h"
|
||||
|
||||
void set_rsp_segment(Gfx **dlist, s32 segment, s32 base);
|
||||
|
||||
#endif
|
||||
@@ -15,7 +15,7 @@
|
||||
#include "asset_loading.h"
|
||||
#include "menu.h"
|
||||
#include "video.h"
|
||||
#include "lib/src/mips1/sc/sched.h"
|
||||
#include "set_rsp_segment.h"
|
||||
#include "gzip.h"
|
||||
#include "printf.h"
|
||||
#include "thread0_epc.h"
|
||||
|
||||
Reference in New Issue
Block a user