mirror of
https://github.com/zeldaret/mm.git
synced 2026-06-27 01:55:07 -04:00
various io files
This commit is contained in:
@@ -93,6 +93,12 @@ typedef struct OSDevMgr {
|
||||
#define OS_MESG_PRI_NORMAL 0
|
||||
#define OS_MESG_PRI_HIGH 1
|
||||
|
||||
/*
|
||||
* PI/EPI
|
||||
*/
|
||||
#define PI_DOMAIN1 0
|
||||
#define PI_DOMAIN2 1
|
||||
|
||||
|
||||
extern OSPiHandle* __osPiTable;
|
||||
|
||||
|
||||
@@ -115,6 +115,12 @@
|
||||
|
||||
#define CHNL_ERR_MASK 0xC0 /* Bit 6-7: channel errors */
|
||||
|
||||
#define PI_DOM1_ADDR1 0x06000000 /* to 0x07FFFFFF */
|
||||
#define PI_DOM1_ADDR2 0x10000000 /* to 0x1FBFFFFF */
|
||||
#define PI_DOM1_ADDR3 0x1FD00000 /* to 0x7FFFFFFF */
|
||||
#define PI_DOM2_ADDR1 0x05000000 /* to 0x05FFFFFF */
|
||||
#define PI_DOM2_ADDR2 0x08000000 /* to 0x0FFFFFFF */
|
||||
|
||||
#define IO_READ(addr) (*(vu32*)PHYS_TO_K1(addr))
|
||||
#define IO_WRITE(addr,data) (*(vu32*)PHYS_TO_K1(addr)=(u32)(data))
|
||||
|
||||
|
||||
@@ -112,6 +112,7 @@ beginseg
|
||||
pad_text
|
||||
include "build/src/libultra/io/devmgr.o"
|
||||
include "build/src/libultra/io/pirawdma.o"
|
||||
include "build/src/libultra/vimodes/vimodentschpn1.o"
|
||||
include "build/src/libultra/io/contpfs.o"
|
||||
include "build/asm/boot/getcount.text.o"
|
||||
pad_text
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "ultra64.h"
|
||||
#include "global.h"
|
||||
#include "alignment.h"
|
||||
|
||||
u32 __osFlashID[4] ALIGNED(8);
|
||||
OSIoMesg __osFlashMsg ALIGNED(8);
|
||||
@@ -8,7 +8,7 @@ OSMesgQueue __osFlashMessageQ ALIGNED(8);
|
||||
OSPiHandle __osFlashHandler ALIGNED(8);
|
||||
OSMesg __osFlashMsgBuf[1];
|
||||
s32 __osFlashVersion;
|
||||
UNK_TYPE1 D_801FD0FC[0x14];
|
||||
s32 D_801FD0FC[0x5];
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ FLASH_OLD,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
u32 osAiGetLength(void) {
|
||||
return IO_READ(AI_LEN_REG);
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
s32 osAiSetFrequency(u32 frequency) {
|
||||
u8 bitrate;
|
||||
f32 dacRateF = ((f32)osViClock / frequency) + 0.5f;
|
||||
u32 dacRate = dacRateF;
|
||||
|
||||
if (dacRate < 132) {
|
||||
if (dacRate < AI_MIN_DAC_RATE) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
bitrate = (dacRate / 66);
|
||||
if (bitrate > 16) {
|
||||
bitrate = 16;
|
||||
if (bitrate > AI_MAX_BIT_RATE) {
|
||||
bitrate = AI_MAX_BIT_RATE;
|
||||
}
|
||||
|
||||
IO_WRITE(AI_DACRATE_REG, dacRate - 1);
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
#include "libc/stdbool.h"
|
||||
#include "alignment.h"
|
||||
|
||||
OSPiHandle __CartRomHandle;
|
||||
OSPiHandle __CartRomHandle ALIGNED(8);
|
||||
|
||||
OSPiHandle* osCartRomInit(void) {
|
||||
register u32 initialConfig;
|
||||
@@ -22,8 +24,8 @@ OSPiHandle* osCartRomInit(void) {
|
||||
|
||||
sCartRomNeedsInit = false;
|
||||
__CartRomHandle.type = DEVICE_TYPE_CART;
|
||||
__CartRomHandle.baseAddress = 0xB0000000;
|
||||
__CartRomHandle.domain = 0;
|
||||
__CartRomHandle.baseAddress = PHYS_TO_K1(PI_DOM1_ADDR2);
|
||||
__CartRomHandle.domain = PI_DOMAIN1;
|
||||
__CartRomHandle.speed = 0;
|
||||
bzero(&__CartRomHandle.transferInfo, sizeof(__OSTranxInfo));
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
#include "PR/controller.h"
|
||||
|
||||
s32 __osContChannelReset(OSMesgQueue* mq, s32 channel) {
|
||||
s32 i;
|
||||
@@ -7,13 +8,13 @@ s32 __osContChannelReset(OSMesgQueue* mq, s32 channel) {
|
||||
|
||||
__osSiGetAccess();
|
||||
|
||||
__osPfsPifRam.status = 1;
|
||||
__osPfsPifRam.status = CONT_CMD_EXE;
|
||||
|
||||
for (i = 0; i < channel; i++) {
|
||||
*bufptr++ = 0;
|
||||
*bufptr++ = CONT_CMD_REQUEST_STATUS;
|
||||
}
|
||||
|
||||
*bufptr++ = 0xFD;
|
||||
*bufptr++ = CONT_CMD_CHANNEL_RESET;
|
||||
*bufptr = CONT_CMD_END;
|
||||
|
||||
__osSiRawStartDma(OS_WRITE, &__osPfsPifRam);
|
||||
|
||||
@@ -1,39 +1,9 @@
|
||||
#include "ultra64.h"
|
||||
#include "global.h"
|
||||
#include "PR/controller.h"
|
||||
#include "alignment.h"
|
||||
|
||||
__OSInode __osPfsInodeCache ALIGNED(8);
|
||||
|
||||
__OSInode __osPfsInodeCache;
|
||||
OSViMode osViModeNtscHpn1 = {
|
||||
8, // type
|
||||
{
|
||||
// comRegs
|
||||
0x324E, // ctrl
|
||||
0x500, // width
|
||||
0x3E52239, // burst
|
||||
0x20C, // vSync
|
||||
0xC15, // hSync
|
||||
0xC150C15, // leap
|
||||
0x6C02EC, // hStart
|
||||
0x400, // xScale
|
||||
0, // vCurrent
|
||||
},
|
||||
{ // fldRegs
|
||||
{
|
||||
// [0]
|
||||
0x500, // origin
|
||||
0x400, // yScale
|
||||
0x2301FD, // vStart
|
||||
0xE0204, // vBurst
|
||||
2, // vIntr
|
||||
},
|
||||
{
|
||||
// [1]
|
||||
0xA00, // origin
|
||||
0x400, // yScale
|
||||
0x2501FF, // vStart
|
||||
0xE0204, // vBurst
|
||||
2, // vIntr
|
||||
} },
|
||||
};
|
||||
s32 __osPfsInodeCacheChannel = -1;
|
||||
u8 __osPfsInodeCacheBank = 250;
|
||||
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
#include "PR/controller.h"
|
||||
|
||||
s32 osContStartQuery(OSMesgQueue* mq) {
|
||||
s32 ret;
|
||||
|
||||
__osSiGetAccess();
|
||||
|
||||
if (__osContLastPoll != 0) {
|
||||
__osPackRequestData(0);
|
||||
if (__osContLastPoll != CONT_CMD_REQUEST_STATUS) {
|
||||
__osPackRequestData(CONT_CMD_REQUEST_STATUS);
|
||||
__osSiRawStartDma(OS_WRITE, &__osContPifRam);
|
||||
osRecvMesg(mq, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
|
||||
ret = __osSiRawStartDma(OS_READ, &__osContPifRam);
|
||||
|
||||
__osContLastPoll = 0;
|
||||
__osContLastPoll = CONT_CMD_REQUEST_STATUS;
|
||||
|
||||
__osSiRelAccess();
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
#include "PR/controller.h"
|
||||
#include "PR/voiceinternal.h"
|
||||
|
||||
#define BLOCKSIZE 32
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "ultra64.h"
|
||||
#include "PR/controller.h"
|
||||
#include "PR/voiceinternal.h"
|
||||
#include "global.h"
|
||||
|
||||
s32 __osContRamWrite(OSMesgQueue* mq, s32 channel, u16 address, u8* buffer, s32 force) {
|
||||
s32 ret = 0;
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
#include "PR/controller.h"
|
||||
#include "macros.h"
|
||||
|
||||
void __osPackReadData(void);
|
||||
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
#include "PR/controller.h"
|
||||
#include "alignment.h"
|
||||
#include "macros.h"
|
||||
|
||||
s32 __osContinitialized = 0;
|
||||
|
||||
OSPifRam __osContPifRam;
|
||||
OSPifRam __osContPifRam ALIGNED(16);
|
||||
u8 __osContLastPoll;
|
||||
u8 __osMaxControllers;
|
||||
|
||||
OSTimer __osEepromTimer;
|
||||
OSMesgQueue __osEepromTimerQ;
|
||||
OSMesgQueue __osEepromTimerQ ALIGNED(8);
|
||||
OSMesg __osEepromTimerMsg[1];
|
||||
|
||||
s32 osContInit(OSMesgQueue* mq, u8* bitpattern, OSContStatus* data) {
|
||||
@@ -24,15 +27,15 @@ s32 osContInit(OSMesgQueue* mq, u8* bitpattern, OSContStatus* data) {
|
||||
__osContinitialized = 1;
|
||||
|
||||
t = osGetTime();
|
||||
if (t < 0x165A0BC) {
|
||||
if (t < OS_USEC_TO_CYCLES(500000)) {
|
||||
osCreateMesgQueue(&timerMesgQueue, &dummy, 1);
|
||||
osSetTimer(&mytimer, 0x165A0BC - t, 0, &timerMesgQueue, &dummy);
|
||||
osSetTimer(&mytimer, OS_USEC_TO_CYCLES(500000) - t, 0, &timerMesgQueue, &dummy);
|
||||
osRecvMesg(&timerMesgQueue, &dummy, OS_MESG_BLOCK);
|
||||
}
|
||||
|
||||
__osMaxControllers = 4;
|
||||
|
||||
__osPackRequestData(0);
|
||||
__osPackRequestData(CONT_CMD_REQUEST_STATUS);
|
||||
|
||||
ret = __osSiRawStartDma(OS_WRITE, &__osContPifRam);
|
||||
osRecvMesg(mq, &dummy, OS_MESG_BLOCK);
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
#include "PR/controller.h"
|
||||
|
||||
s32 osContSetCh(u8 ch) {
|
||||
__osSiGetAccess();
|
||||
|
||||
if (4 < ch) {
|
||||
__osMaxControllers = 4;
|
||||
if (ch > MAXCONTROLLERS) {
|
||||
__osMaxControllers = MAXCONTROLLERS;
|
||||
} else {
|
||||
__osMaxControllers = ch;
|
||||
}
|
||||
__osContLastPoll = -2;
|
||||
__osContLastPoll = CONT_CMD_END;
|
||||
|
||||
__osSiRelAccess();
|
||||
return 0;
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
* implementing CRC (Cyclic Redundancy Check) calculation
|
||||
* ](http://www.sunshine2k.de/articles/coding/crc/understanding_crc.html)
|
||||
*/
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
#define ADDRESS_CRC_MESSAGE_LENGTH 10
|
||||
#define ADDRESS_CRC_LENGTH 5
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
#include "libc/stdbool.h"
|
||||
|
||||
void __osDevMgrMain(void* arg) {
|
||||
OSIoMesg* ioMesg;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
u32 osDpGetStatus(void) {
|
||||
return IO_READ(DPC_STATUS_REG);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
void osDpSetStatus(u32 data) {
|
||||
IO_WRITE(DPC_STATUS_REG, data);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
s32 osEPiStartDma(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction) {
|
||||
register s32 result;
|
||||
@@ -9,13 +9,13 @@ s32 osEPiStartDma(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction) {
|
||||
|
||||
mb->piHandle = pihandle;
|
||||
|
||||
if (direction == 0) {
|
||||
mb->hdr.type = 15;
|
||||
if (direction == OS_READ) {
|
||||
mb->hdr.type = OS_MESG_TYPE_EDMAREAD;
|
||||
} else {
|
||||
mb->hdr.type = 16;
|
||||
mb->hdr.type = OS_MESG_TYPE_EDMAWRITE;
|
||||
}
|
||||
|
||||
if (mb->hdr.pri == 1) {
|
||||
if (mb->hdr.pri == OS_MESG_PRI_HIGH) {
|
||||
result = osJamMesg(osPiGetCmdQueue(), mb, OS_MESG_NOBLOCK);
|
||||
} else {
|
||||
result = osSendMesg(osPiGetCmdQueue(), mb, OS_MESG_NOBLOCK);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
s32 osEPiLinkHandle(OSPiHandle* handle) {
|
||||
u32 saveMask = __osDisableInt();
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
#ifndef _SIINT_H_
|
||||
#define _SIINT_H_
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,37 @@
|
||||
#include "PR/os.h"
|
||||
#include "PR/rcp.h"
|
||||
#include "PR/viint.h"
|
||||
|
||||
OSViMode osViModeNtscHpn1 = {
|
||||
OS_VI_NTSC_HPN1, // type
|
||||
{
|
||||
// comRegs
|
||||
VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 |
|
||||
VI_CTRL_PIXEL_ADV_3, // ctrl
|
||||
WIDTH(1280), // width
|
||||
BURST(57, 34, 5, 62), // burst
|
||||
VSYNC(524), // vSync
|
||||
HSYNC(3093, 0), // hSync
|
||||
LEAP(3093, 3093), // leap
|
||||
HSTART(108, 748), // hStart
|
||||
SCALE(1, 0), // xScale
|
||||
VCURRENT(0), // vCurrent
|
||||
},
|
||||
{ // fldRegs
|
||||
{
|
||||
// [0]
|
||||
ORIGIN(1280), // origin
|
||||
SCALE(1, 0), // yScale
|
||||
HSTART(35, 509), // vStart
|
||||
BURST(4, 2, 14, 0), // vBurst
|
||||
VINTR(2), // vIntr
|
||||
},
|
||||
{
|
||||
// [1]
|
||||
ORIGIN(2560), // origin
|
||||
SCALE(1, 0), // yScale
|
||||
HSTART(37, 511), // vStart
|
||||
BURST(4, 2, 14, 0), // vBurst
|
||||
VINTR(2), // vIntr
|
||||
} },
|
||||
};
|
||||
@@ -270,6 +270,7 @@
|
||||
0x80097E70 : "pimgr",
|
||||
0x80097EA0 : "piacs",
|
||||
0x80097EB0 : "contpfs",
|
||||
0x80097EB0 : "vimodentschpn1",
|
||||
0x80097F10 : "seteventmesg",
|
||||
0x80097F20 : "xprintf",
|
||||
0x80097F70 : "timerintr",
|
||||
|
||||
Reference in New Issue
Block a user