From 19758812b36a546b41e939f0c83d791fa1db90d7 Mon Sep 17 00:00:00 2001 From: angie Date: Wed, 20 Sep 2023 10:39:56 -0300 Subject: [PATCH] review --- include/PR/controller.h | 2 - include/PR/os_vi.h | 2 +- include/PR/piint.h | 72 ++++++++++++------------ spec | 2 +- src/libultra/flash/osFlash.c | 8 ++- src/libultra/io/controller.c | 19 ++++--- src/libultra/io/devmgr.c | 4 +- src/libultra/io/sirawwrite.c | 2 +- src/libultra/io/viextendvstart.c | 4 +- src/libultra/io/vimgr.c | 8 +-- src/libultra/io/viswapcontext.c | 2 +- src/libultra/os/recvmesg.c | 4 +- src/libultra/os/startthread.c | 4 +- src/libultra/voice/voicecontread2.c | 5 +- src/libultra/voice/voicecontread36.c | 5 +- src/libultra/voice/voicecontwrite20.c | 5 +- src/libultra/voice/voicecontwrite4.c | 5 +- src/libultra/voice/voicegetstatus.c | 2 +- src/libultra/voice/voiceinit.c | 2 +- src/libultra/voice/voicemaskdictionary.c | 2 +- src/libultra/voice/voicesetadconverter.c | 4 +- src/libultra/voice/voicesetword.c | 2 +- tools/disasm/files.txt | 2 +- 23 files changed, 80 insertions(+), 87 deletions(-) diff --git a/include/PR/controller.h b/include/PR/controller.h index b8d86594a5..367912452c 100644 --- a/include/PR/controller.h +++ b/include/PR/controller.h @@ -142,8 +142,6 @@ typedef struct { /* 0x7 */ s8 stick_y; } __OSContReadFormat; - -// Original name: __OSContRequesFormat typedef struct { /* 0x00 */ u8 align; /* 0x01 */ u8 txsize; diff --git a/include/PR/os_vi.h b/include/PR/os_vi.h index faf9ca6889..041622916c 100644 --- a/include/PR/os_vi.h +++ b/include/PR/os_vi.h @@ -133,7 +133,7 @@ void* osViGetCurrentFramebuffer(void); void* osViGetNextFramebuffer(void); void osViSetXScale(f32 value); void osViSetYScale(f32 value); -void osViExtendVStart(u32 a0); +void osViExtendVStart(u32 value); void osViSetSpecialFeatures(u32 func); void osViSetMode(OSViMode* modep); void osViSetEvent(OSMesgQueue* mq, OSMesg m, u32 retraceCount); diff --git a/include/PR/piint.h b/include/PR/piint.h index a0b6f7c1e6..8517f9d63b 100644 --- a/include/PR/piint.h +++ b/include/PR/piint.h @@ -5,7 +5,6 @@ #include "os_pi.h" #include "libc/stdint.h" - #define LEO_BASE_REG 0x05000000 #define LEO_CMD (LEO_BASE_REG + 0x508) @@ -17,25 +16,25 @@ #define LEO_SEQ_CTL (LEO_BASE_REG + 0x518) #define LEO_SEQ_STATUS (LEO_BASE_REG + 0x518) -#define LEO_C2_BUFF (LEO_BASE_REG + 0x000) //C2 Sector Buffer -#define LEO_SECTOR_BUFF (LEO_BASE_REG + 0x400) //Data Sector Buffer -#define LEO_DATA (LEO_BASE_REG + 0x500) //Data -#define LEO_MISC_REG (LEO_BASE_REG + 0x504) //Misc Register -#define LEO_CUR_TK (LEO_BASE_REG + 0x50C) //Current Track -#define LEO_ERR_SECTOR (LEO_BASE_REG + 0x514) //Sector Error Status -#define LEO_CUR_SECTOR (LEO_BASE_REG + 0x51C) //Current Sector -#define LEO_HARD_RESET (LEO_BASE_REG + 0x520) //Hard Reset -#define LEO_C1_S0 (LEO_BASE_REG + 0x524) //C1 -#define LEO_HOST_SECBYTE (LEO_BASE_REG + 0x528) //Sector Size (in bytes) -#define LEO_C1_S2 (LEO_BASE_REG + 0x52C) //C1 -#define LEO_SEC_BYTE (LEO_BASE_REG + 0x530) //Sectors per Block, Full Size -#define LEO_C1_S4 (LEO_BASE_REG + 0x534) //C1 -#define LEO_C1_S6 (LEO_BASE_REG + 0x538) //C1 -#define LEO_CUR_ADDR (LEO_BASE_REG + 0x53C) //Current Address? -#define LEO_ID_REG (LEO_BASE_REG + 0x540) //ID -#define LEO_TEST_REG (LEO_BASE_REG + 0x544) //Test Read -#define LEO_TEST_PIN_SEL (LEO_BASE_REG + 0x548) //Test Write -#define LEO_RAM_ADDR (LEO_BASE_REG + 0x580) //Microsequencer RAM +#define LEO_C2_BUFF (LEO_BASE_REG + 0x000) // C2 Sector Buffer +#define LEO_SECTOR_BUFF (LEO_BASE_REG + 0x400) // Data Sector Buffer +#define LEO_DATA (LEO_BASE_REG + 0x500) // Data +#define LEO_MISC_REG (LEO_BASE_REG + 0x504) // Misc Register +#define LEO_CUR_TK (LEO_BASE_REG + 0x50C) // Current Track +#define LEO_ERR_SECTOR (LEO_BASE_REG + 0x514) // Sector Error Status +#define LEO_CUR_SECTOR (LEO_BASE_REG + 0x51C) // Current Sector +#define LEO_HARD_RESET (LEO_BASE_REG + 0x520) // Hard Reset +#define LEO_C1_S0 (LEO_BASE_REG + 0x524) // C1 +#define LEO_HOST_SECBYTE (LEO_BASE_REG + 0x528) // Sector Size (in bytes) +#define LEO_C1_S2 (LEO_BASE_REG + 0x52C) // C1 +#define LEO_SEC_BYTE (LEO_BASE_REG + 0x530) // Sectors per Block, Full Size +#define LEO_C1_S4 (LEO_BASE_REG + 0x534) // C1 +#define LEO_C1_S6 (LEO_BASE_REG + 0x538) // C1 +#define LEO_CUR_ADDR (LEO_BASE_REG + 0x53C) // Current Address? +#define LEO_ID_REG (LEO_BASE_REG + 0x540) // ID +#define LEO_TEST_REG (LEO_BASE_REG + 0x544) // Test Read +#define LEO_TEST_PIN_SEL (LEO_BASE_REG + 0x548) // Test Write +#define LEO_RAM_ADDR (LEO_BASE_REG + 0x580) // Microsequencer RAM #define LEO_STATUS_PRESENCE_MASK 0xFFFF @@ -60,29 +59,28 @@ #define LEO_CUR_TK_INDEX_LOCK 0x60000000 -#define LEO_BM_STATUS_RUNNING 0x80000000 //Running -#define LEO_BM_STATUS_ERROR 0x04000000 //Error -#define LEO_BM_STATUS_MICRO 0x02000000 //Micro Status? -#define LEO_BM_STATUS_BLOCK 0x01000000 //Block Transfer -#define LEO_BM_STATUS_C1CORRECTION 0x00800000 //C1 Correction -#define LEO_BM_STATUS_C1DOUBLE 0x00400000 //C1 Double -#define LEO_BM_STATUS_C1SINGLE 0x00200000 //C1 Single -#define LEO_BM_STATUS_C1ERROR 0x00010000 //C1 Error +#define LEO_BM_STATUS_RUNNING 0x80000000 // Running +#define LEO_BM_STATUS_ERROR 0x04000000 // Error +#define LEO_BM_STATUS_MICRO 0x02000000 // Micro Status? +#define LEO_BM_STATUS_BLOCK 0x01000000 // Block Transfer +#define LEO_BM_STATUS_C1CORRECTION 0x00800000 // C1 Correction +#define LEO_BM_STATUS_C1DOUBLE 0x00400000 // C1 Double +#define LEO_BM_STATUS_C1SINGLE 0x00200000 // C1 Single +#define LEO_BM_STATUS_C1ERROR 0x00010000 // C1 Error -#define LEO_BM_CTL_START 0x80000000 //Start Buffer Manager -#define LEO_BM_CTL_MODE 0x40000000 //Buffer Manager Mode -#define LEO_BM_CTL_IMASK 0x20000000 //BM Interrupt Mask -#define LEO_BM_CTL_RESET 0x10000000 //Buffer Manager Reset -#define LEO_BM_CTL_DISABLE_OR 0x08000000 //Disable OR Check? -#define LEO_BM_CTL_DISABLE_C1 0x04000000 //Disable C1 Correction -#define LEO_BM_CTL_BLOCK 0x02000000 //Block Transfer -#define LEO_BM_CTL_CLR_MECHANIC_INTR 0x01000000 //Mechanic Interrupt Reset +#define LEO_BM_CTL_START 0x80000000 // Start Buffer Manager +#define LEO_BM_CTL_MODE 0x40000000 // Buffer Manager Mode +#define LEO_BM_CTL_IMASK 0x20000000 // BM Interrupt Mask +#define LEO_BM_CTL_RESET 0x10000000 // Buffer Manager Reset +#define LEO_BM_CTL_DISABLE_OR 0x08000000 // Disable OR Check? +#define LEO_BM_CTL_DISABLE_C1 0x04000000 // Disable C1 Correction +#define LEO_BM_CTL_BLOCK 0x02000000 // Block Transfer +#define LEO_BM_CTL_CLR_MECHANIC_INTR 0x01000000 // Mechanic Interrupt Reset #define LEO_BM_CTL_CONTROL_MASK 0xFF000000 #define LEO_BM_CTL_SECTOR_MASK 0x00FF0000 #define LEO_BM_CTL_SECTOR_SHIFT 16 - extern OSDevMgr __osPiDevMgr; extern OSPiHandle* __osCurrentHandle[]; extern u32 __osPiAccessQueueEnabled; diff --git a/spec b/spec index e843c281b9..71151c2fef 100644 --- a/spec +++ b/spec @@ -203,7 +203,7 @@ beginseg include "build/src/libultra/io/contramwrite.o" include "build/src/libultra/io/epirawwrite.o" include "build/src/libultra/os/settimer.o" - include "build/data/boot/__libm_qnan_f.rodata.o" + include "build/data/boot/__libm_vals.rodata.o" include "build/src/libultra/libc/xldtob.o" include "build/src/libultra/libc/ldiv.o" include "build/src/libultra/libc/xlitob.o" diff --git a/src/libultra/flash/osFlash.c b/src/libultra/flash/osFlash.c index b8a2fdb2ba..97eefa421d 100644 --- a/src/libultra/flash/osFlash.c +++ b/src/libultra/flash/osFlash.c @@ -12,8 +12,14 @@ s32 __osFlashVersion; static s32 sBssPad[5]; uintptr_t osFlashGetAddr(u32 pageNum) { + uintptr_t addr; + // Account for hardware bug in old flash where the address bits are shifted 1-off where they should be - uintptr_t addr = (__osFlashVersion == OLD_FLASH) ? pageNum * (FLASH_BLOCK_SIZE >> 1) : pageNum * FLASH_BLOCK_SIZE; + if (__osFlashVersion == OLD_FLASH) { + addr = pageNum * (FLASH_BLOCK_SIZE >> 1); + } else { + addr = pageNum * FLASH_BLOCK_SIZE; + } return addr; } diff --git a/src/libultra/io/controller.c b/src/libultra/io/controller.c index 933b2c921e..762dcbb098 100644 --- a/src/libultra/io/controller.c +++ b/src/libultra/io/controller.c @@ -61,7 +61,8 @@ void __osContGetInitData(u8* pattern, OSContStatus* data) { ptr = (u8*)__osContPifRam.ramarray; for (i = 0; i < __osMaxControllers; i++, ptr += sizeof(requestHeader), data++) { requestHeader = *(__OSContRequesFormat*)ptr; - data->errno = (requestHeader.rxsize & 0xC0) >> 4; + data->errno = CHNL_ERR(requestHeader); + if (data->errno == 0) { data->type = requestHeader.typel << 8 | requestHeader.typeh; data->status = requestHeader.status; @@ -83,18 +84,18 @@ void __osPackRequestData(u8 poll) { __osContPifRam.status = CONT_CMD_READ_BUTTON; ptr = (u8*)__osContPifRam.ramarray; - requestHeader.align = 255; - requestHeader.txsize = 1; - requestHeader.rxsize = 3; + requestHeader.align = CONT_CMD_NOP; + requestHeader.txsize = CONT_CMD_RESET_TX; + requestHeader.rxsize = CONT_CMD_RESET_RX; requestHeader.poll = poll; - requestHeader.typeh = 255; - requestHeader.typel = 255; - requestHeader.status = 255; - requestHeader.align1 = 255; + requestHeader.typeh = CONT_CMD_NOP; + requestHeader.typel = CONT_CMD_NOP; + requestHeader.status = CONT_CMD_NOP; + requestHeader.align1 = CONT_CMD_NOP; for (i = 0; i < __osMaxControllers; i++) { *(__OSContRequesFormat*)ptr = requestHeader; ptr += sizeof(requestHeader); } - *ptr = 254; + *ptr = CONT_CMD_END; } diff --git a/src/libultra/io/devmgr.c b/src/libultra/io/devmgr.c index 6d14f90c95..a40c8c14f9 100644 --- a/src/libultra/io/devmgr.c +++ b/src/libultra/io/devmgr.c @@ -38,7 +38,7 @@ void __osDevMgrMain(void* arg) { __osResetGlobalIntMask(OS_IM_PI); __osEPiRawWriteIo(ioMesg->piHandle, LEO_BM_CTL, transfer->bmCtlShadow | 0x80000000); - label: + readblock1: osRecvMesg(devMgr->evtQueue, &sp70, OS_MESG_BLOCK); transfer = &ioMesg->piHandle->transferInfo; block = &transfer->block[transfer->blockNum]; @@ -60,7 +60,7 @@ void __osDevMgrMain(void* arg) { if ((msgVar == 1) && (ioMesg->piHandle->transferInfo.block[0].errStatus == 0)) { msgVar = 0; - goto label; + goto readblock1; } osSendMesg(devMgr->acsQueue, NULL, OS_MESG_NOBLOCK); diff --git a/src/libultra/io/sirawwrite.c b/src/libultra/io/sirawwrite.c index 37749918bf..3175c59990 100644 --- a/src/libultra/io/sirawwrite.c +++ b/src/libultra/io/sirawwrite.c @@ -1,7 +1,7 @@ #include "ultra64.h" s32 __osSiRawWriteIo(uintptr_t devAddr, u32 data) { - if (__osSiDeviceBusy() != 0) { + if (__osSiDeviceBusy()) { return -1; } diff --git a/src/libultra/io/viextendvstart.c b/src/libultra/io/viextendvstart.c index b187f1418d..a28a8386d5 100644 --- a/src/libultra/io/viextendvstart.c +++ b/src/libultra/io/viextendvstart.c @@ -1,5 +1,5 @@ #include "ultra64.h" -void osViExtendVStart(u32 a0) { - __additional_scanline = a0; +void osViExtendVStart(u32 value) { + __additional_scanline = value; } diff --git a/src/libultra/io/vimgr.c b/src/libultra/io/vimgr.c index 196658993d..485bdf5973 100644 --- a/src/libultra/io/vimgr.c +++ b/src/libultra/io/vimgr.c @@ -60,8 +60,8 @@ void osCreateViManager(OSPri pri) { } } -void viMgrMain(void* vargs) { - OSDevMgr* args; +void viMgrMain(void* arg) { + OSDevMgr* dmArgs; static u16 viRetrace; u32 addTime; OSIoMesg* mesg; @@ -73,10 +73,10 @@ void viMgrMain(void* vargs) { viRetrace = 1; } - args = (OSDevMgr*)vargs; + dmArgs = (OSDevMgr*)arg; while (true) { - osRecvMesg(args->evtQueue, (OSMesg*)&mesg, OS_MESG_BLOCK); + osRecvMesg(dmArgs->evtQueue, (OSMesg*)&mesg, OS_MESG_BLOCK); switch (mesg->hdr.type) { case OS_MESG_TYPE_VRETRACE: __osViSwapContext(); diff --git a/src/libultra/io/viswapcontext.c b/src/libultra/io/viswapcontext.c index 528f04bea3..0840ce7497 100644 --- a/src/libultra/io/viswapcontext.c +++ b/src/libultra/io/viswapcontext.c @@ -16,7 +16,7 @@ void __osViSwapContext(void) { field = IO_READ(VI_V_CURRENT_LINE_REG) & 1; s2 = osVirtualToPhysical(viNext->buffer); origin = (viMode->fldRegs[field].origin) + s2; - if (viNext->state & 2) { + if (viNext->state & VI_STATE_XSCALE_UPDATED) { viNext->x.scale |= viMode->comRegs.xScale & ~0xFFF; } else { viNext->x.scale = viMode->comRegs.xScale; diff --git a/src/libultra/os/recvmesg.c b/src/libultra/os/recvmesg.c index dd3aeaea39..03a399b9ab 100644 --- a/src/libultra/os/recvmesg.c +++ b/src/libultra/os/recvmesg.c @@ -1,9 +1,7 @@ #include "ultra64.h" s32 osRecvMesg(OSMesgQueue* mq, OSMesg* msg, s32 flags) { - register u32 saveMask; - - saveMask = __osDisableInt(); + register u32 saveMask = __osDisableInt(); while (MQ_IS_EMPTY(mq)) { if (flags == OS_MESG_NOBLOCK) { diff --git a/src/libultra/os/startthread.c b/src/libultra/os/startthread.c index 5773b7e2a1..259e5545cf 100644 --- a/src/libultra/os/startthread.c +++ b/src/libultra/os/startthread.c @@ -1,9 +1,7 @@ #include "ultra64.h" void osStartThread(OSThread* t) { - register u32 saveMask; - - saveMask = __osDisableInt(); + register u32 saveMask = __osDisableInt(); switch (t->state) { case OS_STATE_WAITING: diff --git a/src/libultra/voice/voicecontread2.c b/src/libultra/voice/voicecontread2.c index c294ab4e64..a9e6660bbb 100644 --- a/src/libultra/voice/voicecontread2.c +++ b/src/libultra/voice/voicecontread2.c @@ -2,12 +2,11 @@ * File: voicecontread2.c */ +#include "ultra64.h" #include "PR/controller_voice.h" #include "PR/voiceinternal.h" #include "PR/controller.h" -#include "PR/voiceinternal.h" -#include "functions.h" -#include "variables.h" +#include "macros.h" #define READ2FORMAT(ptr) ((__OSVoiceRead2Format*)(ptr)) diff --git a/src/libultra/voice/voicecontread36.c b/src/libultra/voice/voicecontread36.c index 999dff6679..eb4ead42ef 100644 --- a/src/libultra/voice/voicecontread36.c +++ b/src/libultra/voice/voicecontread36.c @@ -2,12 +2,11 @@ * File: voicecontread36.c */ +#include "ultra64.h" #include "PR/controller_voice.h" #include "PR/voiceinternal.h" #include "PR/controller.h" -#include "PR/voiceinternal.h" -#include "functions.h" -#include "variables.h" +#include "macros.h" #define READ36FORMAT(ptr) ((__OSVoiceRead36Format*)(ptr)) diff --git a/src/libultra/voice/voicecontwrite20.c b/src/libultra/voice/voicecontwrite20.c index b92e46075e..89d5e933c8 100644 --- a/src/libultra/voice/voicecontwrite20.c +++ b/src/libultra/voice/voicecontwrite20.c @@ -2,12 +2,11 @@ * File: voicecontwrite20.c */ +#include "ultra64.h" #include "PR/controller_voice.h" #include "PR/voiceinternal.h" #include "PR/controller.h" -#include "PR/voiceinternal.h" -#include "functions.h" -#include "variables.h" +#include "macros.h" #define WRITE20FORMAT(ptr) ((__OSVoiceWrite20Format*)(ptr)) diff --git a/src/libultra/voice/voicecontwrite4.c b/src/libultra/voice/voicecontwrite4.c index 20e27d62d9..b0c6a4e53f 100644 --- a/src/libultra/voice/voicecontwrite4.c +++ b/src/libultra/voice/voicecontwrite4.c @@ -2,12 +2,11 @@ * File: voicecontwrite4.c */ +#include "ultra64.h" #include "PR/controller_voice.h" #include "PR/voiceinternal.h" #include "PR/controller.h" -#include "PR/voiceinternal.h" -#include "functions.h" -#include "variables.h" +#include "macros.h" #define WRITE4FORMAT(ptr) ((__OSVoiceWrite4Format*)(ptr)) diff --git a/src/libultra/voice/voicegetstatus.c b/src/libultra/voice/voicegetstatus.c index b19348908a..2e5713f763 100644 --- a/src/libultra/voice/voicegetstatus.c +++ b/src/libultra/voice/voicegetstatus.c @@ -2,9 +2,9 @@ * File: voicegetstatus.c */ +#include "ultra64.h" #include "PR/controller_voice.h" #include "PR/controller.h" -#include "functions.h" s32 __osVoiceGetStatus(OSMesgQueue* mq, s32 channel, u8* status) { __OSContRequestHeaderAligned header; diff --git a/src/libultra/voice/voiceinit.c b/src/libultra/voice/voiceinit.c index f8c965f703..69fc2fd7c3 100644 --- a/src/libultra/voice/voiceinit.c +++ b/src/libultra/voice/voiceinit.c @@ -4,10 +4,10 @@ * Initializes Voice Recognition System control structure and hardware */ +#include "ultra64.h" #include "PR/controller_voice.h" #include "PR/os_voice.h" #include "PR/controller.h" -#include "functions.h" #include "macros.h" static u8 sCmds[] = { diff --git a/src/libultra/voice/voicemaskdictionary.c b/src/libultra/voice/voicemaskdictionary.c index 225c45dee3..6ff957d45e 100644 --- a/src/libultra/voice/voicemaskdictionary.c +++ b/src/libultra/voice/voicemaskdictionary.c @@ -4,10 +4,10 @@ * Mask words registered in the voice recognition system */ +#include "ultra64.h" #include "PR/controller_voice.h" #include "PR/os_voice.h" #include "PR/controller.h" -#include "functions.h" #include "macros.h" s32 osVoiceMaskDictionary(OSVoiceHandle* hd, u8* maskPattern, int size) { diff --git a/src/libultra/voice/voicesetadconverter.c b/src/libultra/voice/voicesetadconverter.c index ec0efb0055..bb8e7e169d 100644 --- a/src/libultra/voice/voicesetadconverter.c +++ b/src/libultra/voice/voicesetadconverter.c @@ -2,12 +2,10 @@ * File: voicesetadconverter.c */ +#include "ultra64.h" #include "PR/controller_voice.h" #include "PR/voiceinternal.h" #include "PR/controller.h" -#include "PR/voiceinternal.h" -#include "functions.h" -#include "variables.h" #define SWRITEFORMAT(ptr) ((__OSVoiceSWriteFormat*)(ptr)) diff --git a/src/libultra/voice/voicesetword.c b/src/libultra/voice/voicesetword.c index 82b0f88aa2..f832b60106 100644 --- a/src/libultra/voice/voicesetword.c +++ b/src/libultra/voice/voicesetword.c @@ -4,10 +4,10 @@ * Registers words to the Voice Recognition System dictionary */ +#include "ultra64.h" #include "PR/controller_voice.h" #include "PR/os_voice.h" #include "PR/controller.h" -#include "functions.h" #include "macros.h" s32 osVoiceSetWord(OSVoiceHandle* hd, u8* word) { diff --git a/tools/disasm/files.txt b/tools/disasm/files.txt index a1f4c218cc..bd511baabb 100644 --- a/tools/disasm/files.txt +++ b/tools/disasm/files.txt @@ -308,7 +308,7 @@ 0x800992F0 : "lookathil", 0x80099300 : "xprintf", 0x80099400 : "cosf", - 0x80099450 : "__libm_qnan_f", + 0x80099450 : "__libm_vals", 0x80099460 : "xldtob", 0x800994C0 : "llcvt", 0x800994D0 : "build",