This commit is contained in:
angie
2023-09-20 10:39:56 -03:00
parent bf960bf288
commit 19758812b3
23 changed files with 80 additions and 87 deletions
-2
View File
@@ -142,8 +142,6 @@ typedef struct {
/* 0x7 */ s8 stick_y;
} __OSContReadFormat;
// Original name: __OSContRequesFormat
typedef struct {
/* 0x00 */ u8 align;
/* 0x01 */ u8 txsize;
+1 -1
View File
@@ -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);
+35 -37
View File
@@ -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;
+1 -1
View File
@@ -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"
+7 -1
View File
@@ -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;
}
+10 -9
View File
@@ -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;
}
+2 -2
View File
@@ -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);
+1 -1
View File
@@ -1,7 +1,7 @@
#include "ultra64.h"
s32 __osSiRawWriteIo(uintptr_t devAddr, u32 data) {
if (__osSiDeviceBusy() != 0) {
if (__osSiDeviceBusy()) {
return -1;
}
+2 -2
View File
@@ -1,5 +1,5 @@
#include "ultra64.h"
void osViExtendVStart(u32 a0) {
__additional_scanline = a0;
void osViExtendVStart(u32 value) {
__additional_scanline = value;
}
+4 -4
View File
@@ -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();
+1 -1
View File
@@ -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;
+1 -3
View File
@@ -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) {
+1 -3
View File
@@ -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:
+2 -3
View File
@@ -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))
+2 -3
View File
@@ -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))
+2 -3
View File
@@ -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))
+2 -3
View File
@@ -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))
+1 -1
View File
@@ -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;
+1 -1
View File
@@ -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[] = {
+1 -1
View File
@@ -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) {
+1 -3
View File
@@ -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))
+1 -1
View File
@@ -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) {
+1 -1
View File
@@ -308,7 +308,7 @@
0x800992F0 : "lookathil",
0x80099300 : "xprintf",
0x80099400 : "cosf",
0x80099450 : "__libm_qnan_f",
0x80099450 : "__libm_vals",
0x80099460 : "xldtob",
0x800994C0 : "llcvt",
0x800994D0 : "build",