mirror of
https://github.com/zeldaret/mm.git
synced 2026-06-23 16:45:12 -04:00
final io chunk
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
s32 __osSiRawReadIo(uintptr_t devAddr, u32* data) {
|
||||
if (__osSiDeviceBusy()) {
|
||||
return -1;
|
||||
}
|
||||
*data = *(u32*)(devAddr | 0xA0000000);
|
||||
*data = IO_READ(devAddr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
s32 __osSiRawWriteIo(uintptr_t devAddr, u32 data) {
|
||||
if (__osSiDeviceBusy() != 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
*(u32*)(devAddr | 0xA0000000) = data;
|
||||
IO_WRITE(devAddr, data);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
#include "libc/stdbool.h"
|
||||
|
||||
s32 __osSpDeviceBusy(void) {
|
||||
register u32 status = IO_READ(SP_STATUS_REG);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
u32 __osSpGetStatus() {
|
||||
return IO_READ(SP_STATUS_REG);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
s32 __osSpRawStartDma(s32 direction, u32 devAddr, void* dramAddr, size_t size) {
|
||||
if (__osSpDeviceBusy()) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
s32 __osSpSetPc(u32 pc) {
|
||||
register u32 spStatus = IO_READ(SP_STATUS_REG);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
void __osSpSetStatus(u32 data) {
|
||||
IO_WRITE(SP_STATUS_REG, data);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
#define _osVirtualToPhysical(ptr) \
|
||||
if (ptr != NULL) { \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
void osSpTaskYield(void) {
|
||||
__osSpSetStatus(0x400);
|
||||
__osSpSetStatus(SP_SET_YIELD);
|
||||
}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
OSYieldResult osSpTaskYielded(OSTask* task) {
|
||||
s32 status;
|
||||
s32 status = __osSpGetStatus();
|
||||
OSYieldResult result;
|
||||
status = __osSpGetStatus();
|
||||
if (status & 0x100) {
|
||||
result = 1;
|
||||
|
||||
if (status & SP_STATUS_YIELDED) {
|
||||
result = OS_TASK_YIELDED;
|
||||
} else {
|
||||
result = 0;
|
||||
}
|
||||
if (status & 0x80) {
|
||||
if (status & SP_STATUS_YIELD) {
|
||||
task->t.flags |= result;
|
||||
task->t.flags &= ~(2);
|
||||
task->t.flags &= ~OS_TASK_DP_WAIT;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
#include "alignment.h"
|
||||
|
||||
__OSViContext vi[2] = { 0 };
|
||||
__OSViContext vi[2] ALIGNED(8) = { 0 };
|
||||
__OSViContext* __osViCurr = &vi[0];
|
||||
__OSViContext* __osViNext = &vi[1];
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
void osViBlack(u8 active) {
|
||||
register u32 saveMask;
|
||||
@@ -6,9 +6,9 @@ void osViBlack(u8 active) {
|
||||
saveMask = __osDisableInt();
|
||||
|
||||
if (active) {
|
||||
__osViNext->state |= 0x20;
|
||||
__osViNext->state |= VI_STATE_BLACK;
|
||||
} else {
|
||||
__osViNext->state &= ~0x20;
|
||||
__osViNext->state &= ~VI_STATE_BLACK;
|
||||
}
|
||||
|
||||
__osRestoreInt(saveMask);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
void osViExtendVStart(u32 a0) {
|
||||
__additional_scanline = a0;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
__OSViContext* __osViGetCurrentContext(void) {
|
||||
return __osViCurr;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
void* osViGetCurrentFramebuffer(void) {
|
||||
register u32 prevInt = __osDisableInt();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
void* osViGetNextFramebuffer(void) {
|
||||
register u32 saveMask;
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
#include "PR/osint.h"
|
||||
#include "stack.h"
|
||||
#include "PR/osint.h"
|
||||
#include "libc/stdbool.h"
|
||||
#include "macros.h"
|
||||
|
||||
OSThread viThread;
|
||||
STACK(sViStack, 0x1000);
|
||||
OSMesgQueue viEventQueue;
|
||||
OSMesg viEventBuf[6];
|
||||
OSIoMesg viRetraceMsg;
|
||||
OSIoMesg viCounterMsg;
|
||||
STACK(sViStack, OS_VIM_STACKSIZE) ALIGNED(16);
|
||||
OSMesgQueue viEventQueue ALIGNED(8);
|
||||
OSMesg viEventBuf[6] ALIGNED(8);
|
||||
OSIoMesg viRetraceMsg ALIGNED(8);
|
||||
OSIoMesg viCounterMsg ALIGNED(8);
|
||||
OSDevMgr __osViDevMgr = { 0 };
|
||||
u32 __additional_scanline = 0;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
void osViSetEvent(OSMesgQueue* mq, OSMesg m, u32 retraceCount) {
|
||||
register u32 saveMask = __osDisableInt();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
void osViSetMode(OSViMode* modep) {
|
||||
register u32 saveMask;
|
||||
@@ -6,7 +6,7 @@ void osViSetMode(OSViMode* modep) {
|
||||
saveMask = __osDisableInt();
|
||||
|
||||
__osViNext->modep = modep;
|
||||
__osViNext->state = 1;
|
||||
__osViNext->state = VI_STATE_MODE_UPDATED;
|
||||
__osViNext->features = __osViNext->modep->comRegs.ctrl;
|
||||
|
||||
__osRestoreInt(saveMask);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
void osViSetSpecialFeatures(u32 func) {
|
||||
register u32 saveMask = __osDisableInt();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
void osViSetXScale(f32 value) {
|
||||
register u32 nomValue;
|
||||
@@ -8,10 +8,10 @@ void osViSetXScale(f32 value) {
|
||||
|
||||
__osViNext->x.factor = value;
|
||||
|
||||
__osViNext->state |= 0x2;
|
||||
__osViNext->state |= VI_STATE_XSCALE_UPDATED;
|
||||
|
||||
nomValue = __osViNext->modep->comRegs.xScale & 0xFFF;
|
||||
__osViNext->x.scale = (u32)(__osViNext->x.factor * nomValue) & 0xFFF;
|
||||
nomValue = __osViNext->modep->comRegs.xScale & VI_SCALE_MASK;
|
||||
__osViNext->x.scale = (u32)(__osViNext->x.factor * nomValue) & VI_SCALE_MASK;
|
||||
|
||||
__osRestoreInt(saveMask);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
void osViSetYScale(f32 value) {
|
||||
register u32 saveMask;
|
||||
@@ -7,7 +7,7 @@ void osViSetYScale(f32 value) {
|
||||
|
||||
__osViNext->y.factor = value;
|
||||
|
||||
__osViNext->state |= 0x4;
|
||||
__osViNext->state |= VI_STATE_YSCALE_UPDATED;
|
||||
|
||||
__osRestoreInt(saveMask);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
void osViSwapBuffer(void* frameBufPtr) {
|
||||
|
||||
u32 saveMask = __osDisableInt();
|
||||
|
||||
__osViNext->buffer = frameBufPtr;
|
||||
__osViNext->state |= 0x10;
|
||||
__osViNext->state |= VI_STATE_BUFFER_UPDATED;
|
||||
|
||||
__osRestoreInt(saveMask);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "ultra64.h"
|
||||
|
||||
void __osViSwapContext(void) {
|
||||
register OSViMode* viMode;
|
||||
|
||||
Reference in New Issue
Block a user