From e49832bf035fb29c17b6ad7d71082cb3c27104ea Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Thu, 2 Dec 2021 13:37:35 -0500 Subject: [PATCH] Make some adjustments as recommended in PR #179 --- include/sched.h | 30 +++++++++++++++--------------- src/asset_loading.c | 4 ++-- src/unknown_003260.c | 25 +++++++++++-------------- src/video.c | 2 -- 4 files changed, 28 insertions(+), 33 deletions(-) diff --git a/include/sched.h b/include/sched.h index 3e14f78c..bf7903d2 100644 --- a/include/sched.h +++ b/include/sched.h @@ -70,25 +70,25 @@ typedef struct SCClient_s { OSMesgQueue *msgQ; /* where to send the frame msg */ } OSScClient; -/* 0x7C8 bytes - Side note, I'm seeing 0x288 now... */ +/* 0x288 bytes */ typedef struct { /* 0x00 */ OSScMsg retraceMsg; /* 0x20 */ OSScMsg prenmiMsg; /* 0x40 */ OSMesgQueue interruptQ; - /* 0x68 */ OSMesg intBuf[OS_SC_MAX_MESGS]; //0x8 per OsMesg - /* 0xA8 */ OSMesgQueue cmdQ; - /* 0xD0 */ OSMesg cmdMsgBuf[OS_SC_MAX_MESGS]; //0x8 per OsMesg - /* 0x110 */ OSThread thread; - /* 0x2D8 */ OSScClient *clientList; - /* 0x2F0 */ OSScTask *audioListHead; - /* 0x3A0 */ OSScTask *gfxListHead; - /* 0x450 */ OSScTask *audioListTail; - /* 0x500 */ OSScTask *gfxListTail; - /* 0x5B0 */ OSScTask *curRSPTask; - /* 0x660 */ OSScTask *curRDPTask; - /* 0x710 */ OSScTask *unkTask; //Rare added? - /* 0x7C0 */ u32 frameCount; - /* 0x7C4 */ s32 doAudio; + /* 0x58 */ OSMesg intBuf[OS_SC_MAX_MESGS]; //0x8 per OSMesg + /* 0x78 */ OSMesgQueue cmdQ; + /* 0x90 */ OSMesg cmdMsgBuf[OS_SC_MAX_MESGS]; //0x8 per OSMesg + /* 0xB0 */ OSThread thread; + /* 0x260 */ OSScClient *clientList; + /* 0x264 */ OSScTask *audioListHead; + /* 0x268 */ OSScTask *gfxListHead; + /* 0x26C */ OSScTask *audioListTail; + /* 0x270 */ OSScTask *gfxListTail; + /* 0x274 */ OSScTask *curRSPTask; + /* 0x278 */ OSScTask *curRDPTask; + /* 0x27C */ OSScTask *unkTask; //Rare added? + /* 0x280 */ u32 frameCount; + /* 0x284 */ s32 doAudio; } OSSched; typedef struct{ diff --git a/src/asset_loading.c b/src/asset_loading.c index 52e30871..b99c8c83 100644 --- a/src/asset_loading.c +++ b/src/asset_loading.c @@ -11,7 +11,7 @@ /************ .bss ************/ OSIoMesg gAssetsDmaIoMesg; -OSMesg gDmaMesgBuf[1]; +OSMesg gDmaMesgBuf[1]; //Seems to only work as an array of 1 for some reason. OSMesgQueue gDmaMesgQueue; OSMesg gPIMesgBuf[16]; OSMesgQueue gPIMesgQueue; @@ -175,7 +175,7 @@ s32 get_size_of_asset_section(u32 assetIndex) { * Copies data from the game cartridge to a ram address. */ void dmacopy(u32 romOffset, u32 ramAddress, s32 numBytes) { - OSMesg dmaMesgBuf[1]; + OSMesg dmaMesgBuf[1]; //Seems to only work as an array of 1 for some reason. s32 numBytesToDMA; osInvalDCache(ramAddress, numBytes); diff --git a/src/unknown_003260.c b/src/unknown_003260.c index d7c06110..0ced63bb 100644 --- a/src/unknown_003260.c +++ b/src/unknown_003260.c @@ -157,8 +157,7 @@ GLOBAL_ASM("asm/non_matchings/unknown_003260/func_80002DF8.s") *****************************************************************************/ #if 0 #define DMA_BUFFER_LENGTH 0x400 -s32 __amDMA(s32 addr, s32 len, void *state) -{ +s32 __amDMA(s32 addr, s32 len, void *state) { void *foundBuffer; s32 delta, addrEnd, buffEnd; AMDMABuffer *dmaPtr, *lastDmaPtr; @@ -170,14 +169,12 @@ s32 __amDMA(s32 addr, s32 len, void *state) /* first check to see if a currently existing buffer contains the sample that you need. */ - while(dmaPtr) - { + while(dmaPtr) { buffEnd = dmaPtr->startAddr + DMA_BUFFER_LENGTH; if(dmaPtr->startAddr > addr) /* since buffers are ordered */ break; /* abort if past possible */ - else if(addrEnd <= buffEnd) /* yes, found a buffer with samples */ - { + else if(addrEnd <= buffEnd) { /* yes, found a buffer with samples */ dmaPtr->lastFrame = audFrameCt; /* mark it used */ foundBuffer = dmaPtr->ptr + addr - dmaPtr->startAddr; return (int) osVirtualToPhysical(foundBuffer); @@ -195,27 +192,27 @@ s32 __amDMA(s32 addr, s32 len, void *state) * if you get here and dmaPtr is null, send back the a bogus * pointer, it's better than nothing */ - if(!dmaPtr) - return osVirtualToPhysical(dmaState.firstUsed); + if(!dmaPtr) { + return osVirtualToPhysical(dmaState.firstUsed); + } dmaState.firstFree = (AMDMABuffer*)dmaPtr->node.next; alUnlink((ALLink*)dmaPtr); /* add it to the used list */ - if(lastDmaPtr) /* if you have other dmabuffers used, add this one */ - { /* to the list, after the last one checked above */ + if(lastDmaPtr) { /* if you have other dmabuffers used, add this one */ + /* to the list, after the last one checked above */ alLink((ALLink*)dmaPtr,(ALLink*)lastDmaPtr); } - else if(dmaState.firstUsed) /* if this buffer is before any others */ - { /* jam at begining of list */ + else if(dmaState.firstUsed) { /* if this buffer is before any others */ + /* jam at begining of list */ lastDmaPtr = dmaState.firstUsed; dmaState.firstUsed = dmaPtr; dmaPtr->node.next = (ALLink*)lastDmaPtr; dmaPtr->node.prev = 0; lastDmaPtr->node.prev = (ALLink*)dmaPtr; } - else /* no buffers in list, this is the first one */ - { + else { /* no buffers in list, this is the first one */ dmaState.firstUsed = dmaPtr; dmaPtr->node.next = 0; dmaPtr->node.prev = 0; diff --git a/src/video.c b/src/video.c index 2f93fc5d..1ffdc79e 100644 --- a/src/video.c +++ b/src/video.c @@ -208,8 +208,6 @@ void init_framebuffer(s32 index) { } gVideoFbWidths[index] = gVideoModeResolutions[gVideoModeIndex & 7].width; gVideoFbHeights[index] = gVideoModeResolutions[gVideoModeIndex & 7].height; - // TODO: All of the gVideoFramebuffers values are suspicious and probably not the right code. - // The 0x3F is coincidentally sizeof(gVideoModeResolutions) - 1, but that might just be a coincidence if (gVideoModeIndex >= 2) { gVideoFramebuffers[index] = allocate_from_main_pool_safe((HIGH_RES_SCREEN_WIDTH * HIGH_RES_SCREEN_HEIGHT * 2) + 0x30, COLOR_TAG_WHITE); gVideoFramebuffers[index] = (u16 *)(((s32)gVideoFramebuffers[index] + 0x3F) & ~0x3F);