mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07:00
sched.c OK (#248)
* sched * Minor fixes * Format headers in the ultra64 folder, bitshifts in defines * Fix PI_STATUS_ERROR * Update variables
This commit is contained in:
@@ -1,88 +0,0 @@
|
||||
#ifndef _ULTRA64_HARDWARE_H_
|
||||
#define _ULTRA64_HARDWARE_H_
|
||||
|
||||
#define AI_DRAM_ADDR_REG 0x04500000
|
||||
#define AI_LEN_REG 0x04500004
|
||||
#define AI_CONTROL_REG 0x04500008
|
||||
#define AI_STATUS_REG 0x0450000C
|
||||
#define AI_STATUS_AI_FULL (1 << 31)
|
||||
#define AI_STATUS_AI_BUSY (1 << 30)
|
||||
#define AI_DACRATE_REG 0x04500010
|
||||
#define AI_BITRATE_REG 0x04500014
|
||||
|
||||
#define VI_STATUS_REG 0x04400000
|
||||
#define VI_CONTROL_REG 0x04400000
|
||||
#define VI_ORIGIN_REG 0x04400004
|
||||
#define VI_DRAM_ADDR_REG 0x04400004
|
||||
#define VI_WIDTH_REG 0x04400008
|
||||
#define VI_H_WIDTH_REG 0x04400008
|
||||
#define VI_INTR_REG 0x0440000C
|
||||
#define VI_V_INTER_REG 0x0440000C
|
||||
#define VI_CURRENT_REG 0x04400010
|
||||
#define VI_V_CURRENT_LINE_REG 0x04400010
|
||||
#define VI_BURST_REG 0x04400014
|
||||
#define VI_TIMING_REG 0x04400014
|
||||
#define VI_V_SYNC_REG 0x04400018 //VI vertical sync
|
||||
#define VI_H_SYNC_REG 0x0440001C //VI horizontal sync
|
||||
#define VI_LEAP_REG 0x04400020 //VI horizontal sync leap
|
||||
#define VI_H_SYNC_LEAP_REG 0x04400020
|
||||
#define VI_H_START_REG 0x04400024 //VI horizontal video
|
||||
#define VI_H_VIDEO_REG 0x04400024
|
||||
#define VI_V_START_REG 0x04400028 //VI vertical video
|
||||
#define VI_V_VIDEO_REG 0x04400028
|
||||
#define VI_V_BURST_REG 0x0440002C //VI vertical burst
|
||||
#define VI_X_SCALE_REG 0x04400030 //VI x-scale
|
||||
#define VI_Y_SCALE_REG 0x04400034 //VI y-scale
|
||||
|
||||
#define SP_IMEM_START 0x04001000
|
||||
#define SP_DMEM_START 0x04000000
|
||||
|
||||
#define SP_MEM_ADDR_REG 0x04040000
|
||||
#define SP_DRAM_ADDR_REG 0x04040004
|
||||
#define SP_RD_LEN_REG 0x04040008
|
||||
#define SP_WR_LEN_REG 0x0404000C
|
||||
#define SP_STATUS_REG 0x04040010
|
||||
#define SP_PC_REG 0x04080000
|
||||
|
||||
#define PI_DRAM_ADDR_REG 0x04600000 //PI DRAM address
|
||||
#define PI_CART_ADDR_REG 0x04600004 //PI pbus (cartridge) address
|
||||
#define PI_RD_LEN_REG 0x04600008 //PI read length
|
||||
#define PI_WR_LEN_REG 0x0460000C //PI write length
|
||||
#define PI_STATUS_REG 0x04600010 //PI status
|
||||
#define PI_BSD_DOM1_LAT_REG 0x04600014 //PI dom1 latency
|
||||
#define PI_DOMAIN1_REG 0x04600014
|
||||
#define PI_BSD_DOM1_PWD_REG 0x04600018 //PI dom1 pulse width
|
||||
#define PI_BSD_DOM1_PGS_REG 0x0460001C //PI dom1 page size
|
||||
#define PI_BSD_DOM1_RLS_REG 0x04600020 //PI dom1 release
|
||||
#define PI_BSD_DOM2_LAT_REG 0x04600024 //PI dom2 latency
|
||||
#define PI_DOMAIN2_REG 0x04600024
|
||||
#define PI_BSD_DOM2_PWD_REG 0x04600028 //PI dom2 pulse width
|
||||
#define PI_BSD_DOM2_PGS_REG 0x0460002C //PI dom2 page size
|
||||
#define PI_BSD_DOM2_RLS_REG 0x04600030 //PI dom2 release
|
||||
|
||||
#define PI_STATUS_BUSY 0x1
|
||||
#define PI_STATUS_IOBUSY 0x2
|
||||
#define PI_STATUS_ERROR 0x3
|
||||
|
||||
#define PI_STATUS_RESET_CONTROLLER 0x1
|
||||
#define PI_STATUS_CLEAR_INTR 0x2
|
||||
|
||||
#define SI_DRAM_ADDR_REG 0x04800000
|
||||
#define SI_PIF_ADDR_RD64B_REG 0x04800004
|
||||
#define SI_PIF_ADDR_WR64B_REG 0x04800010
|
||||
#define SI_STATUS_REG 0x04800018
|
||||
|
||||
#define SI_STATUS_DMA_BUSY 0x1
|
||||
#define SI_STATUS_IO_READ_BUSY 0x2
|
||||
#define SI_STATUS_DMA_ERROR 0x8
|
||||
#define SI_STATUS_INTERRUPT (1 << 12)
|
||||
|
||||
#define PIF_RAM_START 0x1FC007C0
|
||||
|
||||
#define MI_INIT_MODE_REG 0x04300000
|
||||
#define MI_MODE_REG MI_INIT_MODE_REG
|
||||
#define MI_VERSION_REG 0x04300004
|
||||
#define MI_INTR_REG 0x04300008
|
||||
#define MI_INTR_MASK_REG 0x0430000C
|
||||
|
||||
#endif
|
||||
@@ -1,49 +0,0 @@
|
||||
#ifndef _SCHED_H_
|
||||
#define _SCHED_H_
|
||||
|
||||
#include "os.h"
|
||||
#include "sptask.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ short type;
|
||||
/* 0x2 */ unsigned char misc[30];
|
||||
} OSScMsg;
|
||||
|
||||
|
||||
typedef struct OSScTask_s {
|
||||
/* 0x0 */ struct OSScTask_s* next;
|
||||
/* 0x4 */ u32 state;
|
||||
/* 0x8 */ u32 flags;
|
||||
/* 0xC */ void* framebuffer;
|
||||
/* 0x10 */ OSTask list;
|
||||
/* 0x50 */ OSMesgQueue* msgQ;
|
||||
/* 0x54 */ OSMesg msg;
|
||||
} OSScTask;
|
||||
|
||||
|
||||
typedef struct OSScClient_s {
|
||||
/* 0x0 */ struct OSScClient_s* next;
|
||||
/* 0x4 */ OSMesgQueue* msgQ;
|
||||
} OSScClient;
|
||||
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ OSScMsg retraceMsg;
|
||||
/* 0x20 */ OSScMsg prenmiMsg;
|
||||
/* 0x40 */ OSMesgQueue interruptQ;
|
||||
/* 0x58 */ OSMesg intBuf[8];
|
||||
/* 0x78 */ OSMesgQueue cmdQ;
|
||||
/* 0x90 */ OSMesg cmdMsgBuf[8];
|
||||
/* 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 */ u32 frameCount;
|
||||
/* 0x280 */ s32 doAudio;
|
||||
} OSSched;
|
||||
|
||||
#endif
|
||||
+22
-24
@@ -482,7 +482,7 @@ float __ull_to_f(unsigned long long l);
|
||||
// void osVoiceCheckWord(void);
|
||||
// void osVoiceControlGain(void);
|
||||
// void osVoiceStartReadData(void);
|
||||
// void osViGetCurrentFramebuffer(void);
|
||||
void* osViGetCurrentFramebuffer(void);
|
||||
s32 __osSpSetPc(u32 data);
|
||||
// void __osVoiceContWrite4(void);
|
||||
void __osGetHWIntrRoutine(s32 idx, OSMesgQueue** outQueue, OSMesg* outMsg);
|
||||
@@ -3220,30 +3220,28 @@ void Padmgr_GetInput(Input* input, s32 param_2);
|
||||
void Padmgr_GetInput2(Input* input, s32 param_2);
|
||||
void Padmgr_ThreadEntry(PadMgr* padmgr);
|
||||
void Padmgr_Start(OSMesgQueue* siEventCallbackQueue, IrqMgr* irqmgr, OSId threadId, OSPri threadPri, void* stack);
|
||||
// void func_80176280(void);
|
||||
// void func_80176314(void);
|
||||
void Sched_Nop80176364(SchedContext* sched);
|
||||
void func_80176370(SchedContext* sched);
|
||||
void func_80176394(SchedContext* sched);
|
||||
void func_801764F0(SchedContext* sched);
|
||||
void func_8017668C(SchedContext* sched, UNK_PTR puParm2);
|
||||
// void func_801766F0(void);
|
||||
// void func_80176748(void);
|
||||
// void func_801767B8(void);
|
||||
// void func_801768E0(void);
|
||||
// void func_8017691C(void);
|
||||
// void func_80176988(void);
|
||||
void func_80176B34(SchedContext* sched);
|
||||
void func_80176C24(SchedContext* sched);
|
||||
void func_80176CF4(SchedContext* sched);
|
||||
void func_80176F2C(SchedContext* sched);
|
||||
void Sched_SwapFramebuffer(CfbInfo* cfbInfo);
|
||||
void Sched_RetraceUpdateFramebuffer(SchedContext* sched, CfbInfo* cfbInfo);
|
||||
void Sched_HandleReset(SchedContext* sched);
|
||||
void Sched_HandleStop(SchedContext* sched);
|
||||
void Sched_HandleAudioCancel(SchedContext* sched);
|
||||
void Sched_HandleGfxCancel(SchedContext* sched);
|
||||
void Sched_QueueTask(SchedContext* sched, OSScTask* task);
|
||||
void Sched_Yield(SchedContext* sched);
|
||||
s32 Sched_Schedule(SchedContext* sched, OSScTask** spTask, OSScTask** dpTask, s32 state);
|
||||
void Sched_TaskUpdateFramebuffer(SchedContext* sched, OSScTask* task);
|
||||
void Sched_NotifyDone(SchedContext* sched, OSScTask* task);
|
||||
void Sched_RunTask(SchedContext* sched, OSScTask* spTask, OSScTask* dpTask);
|
||||
void Sched_HandleEntry(SchedContext* sched);
|
||||
void Sched_HandleRetrace(SchedContext* sched);
|
||||
void Sched_HandleRSPDone(SchedContext* sched);
|
||||
void Sched_HandleRDPDone(SchedContext* sched);
|
||||
void Sched_SendEntryMsg(SchedContext* sched);
|
||||
void func_8017703C(SchedContext* sched);
|
||||
void func_80177060(SchedContext* sched);
|
||||
void func_80177084(SchedContext* sched);
|
||||
void Sched_ThreadEntry(SchedContext* sched);
|
||||
// void func_80177280(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE1 param_5, UNK_TYPE1 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12);
|
||||
// void Sched_Start(SchedContext* sched, void* stack, OSPri pri, UNK_TYPE4 param_4, UNK_TYPE4 param_5, IrqMgr* irqmgrStruct);
|
||||
void Sched_SendAudioCancelMsg(SchedContext* sched);
|
||||
void Sched_SendGfxCancelMsg(SchedContext* sched);
|
||||
void Sched_FaultClient(void* param1, void* param2);
|
||||
void Sched_ThreadEntry(void* arg);
|
||||
void Sched_Init(SchedContext* sched, void* stack, OSPri pri, UNK_TYPE arg3, UNK_TYPE arg4, IrqMgr* irqMgr);
|
||||
// void func_80177390(void);
|
||||
void func_801773A0(void* arg0);
|
||||
void func_801773C4(void* arg0);
|
||||
|
||||
+2
-100
@@ -1,114 +1,16 @@
|
||||
#ifndef _OS_H_
|
||||
#define _OS_H_
|
||||
|
||||
#include "PR/ultratypes.h"
|
||||
|
||||
typedef s32 OSPri;
|
||||
|
||||
typedef s32 OSId;
|
||||
#include "ultra64/thread.h"
|
||||
#include "ultra64/message.h"
|
||||
|
||||
#define OS_READ 0
|
||||
#define OS_WRITE 1
|
||||
|
||||
typedef union {
|
||||
/* 0x0 */ struct {
|
||||
/* 0x0 */ f32 f_odd;
|
||||
/* 0x4 */ f32 f_even;
|
||||
} f;
|
||||
/* 0x0 */ f64 d;
|
||||
} __OSfp;
|
||||
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u64 at;
|
||||
/* 0x8 */ u64 v0;
|
||||
/* 0x10 */ u64 v1;
|
||||
/* 0x18 */ u64 a0;
|
||||
/* 0x20 */ u64 a1;
|
||||
/* 0x28 */ u64 a2;
|
||||
/* 0x30 */ u64 a3;
|
||||
/* 0x38 */ u64 t0;
|
||||
/* 0x40 */ u64 t1;
|
||||
/* 0x48 */ u64 t2;
|
||||
/* 0x50 */ u64 t3;
|
||||
/* 0x58 */ u64 t4;
|
||||
/* 0x60 */ u64 t5;
|
||||
/* 0x68 */ u64 t6;
|
||||
/* 0x70 */ u64 t7;
|
||||
/* 0x78 */ u64 s0;
|
||||
/* 0x80 */ u64 s1;
|
||||
/* 0x88 */ u64 s2;
|
||||
/* 0x90 */ u64 s3;
|
||||
/* 0x98 */ u64 s4;
|
||||
/* 0xA0 */ u64 s5;
|
||||
/* 0xA8 */ u64 s6;
|
||||
/* 0xB0 */ u64 s7;
|
||||
/* 0xB8 */ u64 t8;
|
||||
/* 0xC0 */ u64 t9;
|
||||
/* 0xC8 */ u64 gp;
|
||||
/* 0xD0 */ u64 sp;
|
||||
/* 0xD8 */ u64 s8;
|
||||
/* 0xE0 */ u64 ra;
|
||||
/* 0xE8 */ u64 lo;
|
||||
/* 0xF0 */ u64 hi;
|
||||
/* 0xF8 */ u32 sr;
|
||||
/* 0xFC */ u32 pc;
|
||||
/* 0x100 */ u32 cause;
|
||||
/* 0x104 */ u32 badvaddr;
|
||||
/* 0x108 */ u32 rcp;
|
||||
/* 0x10C */ u32 fpcsr;
|
||||
/* 0x110 */ __OSfp fp0;
|
||||
/* 0x118 */ __OSfp fp2;
|
||||
/* 0x120 */ __OSfp fp4;
|
||||
/* 0x128 */ __OSfp fp6;
|
||||
/* 0x130 */ __OSfp fp8;
|
||||
/* 0x138 */ __OSfp fp10;
|
||||
/* 0x140 */ __OSfp fp12;
|
||||
/* 0x148 */ __OSfp fp14;
|
||||
/* 0x150 */ __OSfp fp16;
|
||||
/* 0x158 */ __OSfp fp18;
|
||||
/* 0x160 */ __OSfp fp20;
|
||||
/* 0x168 */ __OSfp fp22;
|
||||
/* 0x170 */ __OSfp fp24;
|
||||
/* 0x178 */ __OSfp fp26;
|
||||
/* 0x180 */ __OSfp fp28;
|
||||
/* 0x188 */ __OSfp fp30;
|
||||
} __OSThreadContext;
|
||||
|
||||
|
||||
typedef struct OSThread_s {
|
||||
/* 0x0 */ struct OSThread_s* next;
|
||||
/* 0x4 */ OSPri priority;
|
||||
/* 0x8 */ struct OSThread_s** queue;
|
||||
/* 0xC */ struct OSThread_s* tlnext;
|
||||
/* 0x10 */ u16 state;
|
||||
/* 0x12 */ u16 flags;
|
||||
/* 0x14 */ OSId id;
|
||||
/* 0x18 */ int fp;
|
||||
/* 0x20 */ __OSThreadContext context;
|
||||
} OSThread;
|
||||
|
||||
typedef u32 OSEvent;
|
||||
|
||||
typedef u32 OSIntMask;
|
||||
|
||||
typedef u32 OSPageMask;
|
||||
|
||||
#define OS_MESG_NOBLOCK 0
|
||||
#define OS_MESG_BLOCK 1
|
||||
|
||||
typedef void* OSMesg;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ OSThread* mtqueue;
|
||||
/* 0x04 */ OSThread* fullqueue;
|
||||
/* 0x08 */ s32 validCount;
|
||||
/* 0x0C */ s32 first;
|
||||
/* 0x10 */ s32 msgCount;
|
||||
/* 0x14 */ OSMesg* msg;
|
||||
} OSMesgQueue; // size = 0x20
|
||||
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 errStatus;
|
||||
/* 0x04 */ void* dramAddr;
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
#include "os_internal.h"
|
||||
#include "ultraerror.h"
|
||||
#include "ultralog.h"
|
||||
#include "sptask.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ OSMesgQueue* messageQueue;
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
#ifndef _SPTASK_H_
|
||||
#define _SPTASK_H_
|
||||
|
||||
#include "PR/ultratypes.h"
|
||||
|
||||
#define OS_YIELD_DATA_SIZE 0xC00
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u32 type;
|
||||
/* 0x4 */ u32 flags;
|
||||
/* 0x8 */ u64* ucode_boot;
|
||||
/* 0xC */ u32 ucode_boot_size;
|
||||
/* 0x10 */ u64* ucode;
|
||||
/* 0x14 */ u32 ucode_size;
|
||||
/* 0x18 */ u64* ucode_data;
|
||||
/* 0x1C */ u32 ucode_data_size;
|
||||
/* 0x20 */ u64* dram_stack;
|
||||
/* 0x24 */ u32 dram_stack_size;
|
||||
/* 0x28 */ u64* output_buff;
|
||||
/* 0x2C */ u64* output_buff_size;
|
||||
/* 0x30 */ u64* data_ptr;
|
||||
/* 0x34 */ u32 data_size;
|
||||
/* 0x38 */ u64* yield_data_ptr;
|
||||
/* 0x3C */ u32 yield_data_size;
|
||||
} OSTask_t;
|
||||
|
||||
|
||||
typedef union {
|
||||
/* 0x0 */ OSTask_t t;
|
||||
/* 0x0 */ long long force_structure_alignment;
|
||||
} OSTask;
|
||||
|
||||
typedef u32 OSYieldResult;
|
||||
|
||||
#endif
|
||||
@@ -6,4 +6,10 @@
|
||||
|
||||
#include "unk.h"
|
||||
|
||||
#include "ultra64/hardware.h"
|
||||
#include "ultra64/message.h"
|
||||
#include "ultra64/sptask.h"
|
||||
#include "ultra64/thread.h"
|
||||
#include "ultra64/rsp.h"
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
#ifndef _ULTRA64_HARDWARE_H_
|
||||
#define _ULTRA64_HARDWARE_H_
|
||||
|
||||
#define HW_REG(reg, type) *(volatile type*)((reg) | 0xa0000000)
|
||||
|
||||
#define AI_DRAM_ADDR_REG 0x04500000
|
||||
#define AI_LEN_REG 0x04500004
|
||||
#define AI_CONTROL_REG 0x04500008
|
||||
#define AI_STATUS_REG 0x0450000C
|
||||
#define AI_DACRATE_REG 0x04500010
|
||||
#define AI_BITRATE_REG 0x04500014
|
||||
|
||||
#define AI_STATUS_AI_BUSY (1 << 30)
|
||||
#define AI_STATUS_AI_FULL (1 << 31)
|
||||
|
||||
#define VI_STATUS_REG 0x04400000
|
||||
#define VI_CONTROL_REG 0x04400000
|
||||
#define VI_ORIGIN_REG 0x04400004
|
||||
#define VI_DRAM_ADDR_REG 0x04400004
|
||||
#define VI_WIDTH_REG 0x04400008
|
||||
#define VI_H_WIDTH_REG 0x04400008
|
||||
#define VI_INTR_REG 0x0440000C
|
||||
#define VI_V_INTER_REG 0x0440000C
|
||||
#define VI_CURRENT_REG 0x04400010
|
||||
#define VI_V_CURRENT_LINE_REG 0x04400010
|
||||
#define VI_BURST_REG 0x04400014
|
||||
#define VI_TIMING_REG 0x04400014
|
||||
#define VI_V_SYNC_REG 0x04400018 //VI vertical sync
|
||||
#define VI_H_SYNC_REG 0x0440001C //VI horizontal sync
|
||||
#define VI_LEAP_REG 0x04400020 //VI horizontal sync leap
|
||||
#define VI_H_SYNC_LEAP_REG 0x04400020
|
||||
#define VI_H_START_REG 0x04400024 //VI horizontal video
|
||||
#define VI_H_VIDEO_REG 0x04400024
|
||||
#define VI_V_START_REG 0x04400028 //VI vertical video
|
||||
#define VI_V_VIDEO_REG 0x04400028
|
||||
#define VI_V_BURST_REG 0x0440002C //VI vertical burst
|
||||
#define VI_X_SCALE_REG 0x04400030 //VI x-scale
|
||||
#define VI_Y_SCALE_REG 0x04400034 //VI y-scale
|
||||
|
||||
#define SP_IMEM_START 0x04001000
|
||||
#define SP_IMEM_SIZE 0x1000
|
||||
|
||||
#define SP_DMEM_START 0x04000000
|
||||
#define SP_DMEM_SIZE 0x1000
|
||||
|
||||
#define SP_MEM_ADDR_REG 0x04040000
|
||||
#define SP_DRAM_ADDR_REG 0x04040004
|
||||
#define SP_RD_LEN_REG 0x04040008
|
||||
#define SP_WR_LEN_REG 0x0404000C
|
||||
#define SP_STATUS_REG 0x04040010
|
||||
#define SP_DMA_FULL_REG 0x04040014
|
||||
#define SP_DMA_BUSY_REG 0x04040018
|
||||
#define SP_PC_REG 0x04080000
|
||||
|
||||
#define PI_DRAM_ADDR_REG 0x04600000 //PI DRAM address
|
||||
#define PI_CART_ADDR_REG 0x04600004 //PI pbus (cartridge) address
|
||||
#define PI_RD_LEN_REG 0x04600008 //PI read length
|
||||
#define PI_WR_LEN_REG 0x0460000C //PI write length
|
||||
#define PI_STATUS_REG 0x04600010 //PI status
|
||||
#define PI_BSD_DOM1_LAT_REG 0x04600014 //PI dom1 latency
|
||||
#define PI_DOMAIN1_REG 0x04600014
|
||||
#define PI_BSD_DOM1_PWD_REG 0x04600018 //PI dom1 pulse width
|
||||
#define PI_BSD_DOM1_PGS_REG 0x0460001C //PI dom1 page size
|
||||
#define PI_BSD_DOM1_RLS_REG 0x04600020 //PI dom1 release
|
||||
#define PI_BSD_DOM2_LAT_REG 0x04600024 //PI dom2 latency
|
||||
#define PI_DOMAIN2_REG 0x04600024
|
||||
#define PI_BSD_DOM2_PWD_REG 0x04600028 //PI dom2 pulse width
|
||||
#define PI_BSD_DOM2_PGS_REG 0x0460002C //PI dom2 page size
|
||||
#define PI_BSD_DOM2_RLS_REG 0x04600030 //PI dom2 release
|
||||
|
||||
#define PI_STATUS_BUSY (1 << 0)
|
||||
#define PI_STATUS_IOBUSY (1 << 1)
|
||||
#define PI_STATUS_ERROR (PI_STATUS_BUSY | PI_STATUS_IOBUSY)
|
||||
|
||||
#define PI_STATUS_RESET_CONTROLLER (1 << 0)
|
||||
#define PI_STATUS_CLEAR_INTR (1 << 1)
|
||||
|
||||
#define SI_DRAM_ADDR_REG 0x04800000
|
||||
#define SI_PIF_ADDR_RD64B_REG 0x04800004
|
||||
#define SI_PIF_ADDR_WR64B_REG 0x04800010
|
||||
#define SI_STATUS_REG 0x04800018
|
||||
|
||||
#define SI_STATUS_DMA_BUSY (1 << 0)
|
||||
#define SI_STATUS_IO_READ_BUSY (1 << 1)
|
||||
#define SI_STATUS_DMA_ERROR (1 << 3)
|
||||
#define SI_STATUS_INTERRUPT (1 << 12)
|
||||
|
||||
#define PIF_RAM_START 0x1FC007C0
|
||||
|
||||
#define MI_INIT_MODE_REG 0x04300000
|
||||
#define MI_MODE_REG MI_INIT_MODE_REG
|
||||
#define MI_VERSION_REG 0x04300004
|
||||
#define MI_INTR_REG 0x04300008
|
||||
#define MI_INTR_MASK_REG 0x0430000C
|
||||
|
||||
/* Interrupt pending bits */
|
||||
#define CAUSE_IP8 0x00008000 /* External level 8 pending - COMPARE */
|
||||
#define CAUSE_IP7 0x00004000 /* External level 7 pending - INT4 */
|
||||
#define CAUSE_IP6 0x00002000 /* External level 6 pending - INT3 */
|
||||
#define CAUSE_IP5 0x00001000 /* External level 5 pending - INT2 */
|
||||
#define CAUSE_IP4 0x00000800 /* External level 4 pending - INT1 */
|
||||
#define CAUSE_IP3 0x00000400 /* External level 3 pending - INT0 */
|
||||
#define CAUSE_SW2 0x00000200 /* Software level 2 pending */
|
||||
#define CAUSE_SW1 0x00000100 /* Software level 1 pending */
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,53 @@
|
||||
#ifndef _ULTRA64_MESSAGE_H_
|
||||
#define _ULTRA64_MESSAGE_H_
|
||||
|
||||
#include "ultra64/thread.h"
|
||||
|
||||
#define OS_NUM_EVENTS 15
|
||||
|
||||
#define OS_EVENT_SW1 0 /* CPU SW1 interrupt */
|
||||
#define OS_EVENT_SW2 1 /* CPU SW2 interrupt */
|
||||
#define OS_EVENT_CART 2 /* Cartridge interrupt: used by rmon */
|
||||
#define OS_EVENT_COUNTER 3 /* Counter int: used by VI/Timer Mgr */
|
||||
#define OS_EVENT_SP 4 /* SP task done interrupt */
|
||||
#define OS_EVENT_SI 5 /* SI (controller) interrupt */
|
||||
#define OS_EVENT_AI 6 /* AI interrupt */
|
||||
#define OS_EVENT_VI 7 /* VI interrupt: used by VI/Timer Mgr */
|
||||
#define OS_EVENT_PI 8 /* PI interrupt: used by PI Manager */
|
||||
#define OS_EVENT_DP 9 /* DP full sync interrupt */
|
||||
#define OS_EVENT_CPU_BREAK 10 /* CPU breakpoint: used by rmon */
|
||||
#define OS_EVENT_SP_BREAK 11 /* SP breakpoint: used by rmon */
|
||||
#define OS_EVENT_FAULT 12 /* CPU fault event: used by rmon */
|
||||
#define OS_EVENT_THREADSTATUS 13 /* CPU thread status: used by rmon */
|
||||
#define OS_EVENT_PRENMI 14 /* Pre NMI interrupt */
|
||||
|
||||
#define OS_EVENT_RDB_READ_DONE 15 /* RDB read ok event: used by rmon */
|
||||
#define OS_EVENT_RDB_LOG_DONE 16 /* read of log data complete */
|
||||
#define OS_EVENT_RDB_DATA_DONE 17 /* read of host io data complete */
|
||||
#define OS_EVENT_RDB_REQ_RAMROM 18 /* host needs ramrom access */
|
||||
#define OS_EVENT_RDB_FREE_RAMROM 19 /* host is done with ramrom access */
|
||||
#define OS_EVENT_RDB_DBG_DONE 20
|
||||
#define OS_EVENT_RDB_FLUSH_PROF 21
|
||||
#define OS_EVENT_RDB_ACK_PROF 22
|
||||
|
||||
typedef void* OSMesg;
|
||||
typedef u32 OSEvent;
|
||||
|
||||
#define OS_MESG_NOBLOCK 0
|
||||
#define OS_MESG_BLOCK 1
|
||||
|
||||
typedef struct OSMesgQueue {
|
||||
/* 0x00 */ OSThread* mtQueue;
|
||||
/* 0x04 */ OSThread* fullQueue;
|
||||
/* 0x08 */ s32 validCount;
|
||||
/* 0x0C */ s32 first;
|
||||
/* 0x10 */ s32 msgCount;
|
||||
/* 0x14 */ OSMesg* msg;
|
||||
} OSMesgQueue; // size = 0x18
|
||||
|
||||
#define MQ_COUNT(mq) ((mq)->validCount)
|
||||
|
||||
#define MQ_IS_EMPTY(mq) (MQ_COUNT(mq) == 0)
|
||||
#define MQ_IS_FULL(mq) (MQ_COUNT(mq) >= (mq)->msgCount)
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,47 @@
|
||||
#ifndef _ULTRA64_RSP_H_
|
||||
#define _ULTRA64_RSP_H_
|
||||
|
||||
/* SP Status Flags */
|
||||
#define SP_STATUS_HALT (1 << 0)
|
||||
#define SP_STATUS_BROKE (1 << 1)
|
||||
#define SP_STATUS_DMA_BUSY (1 << 2)
|
||||
#define SP_STATUS_DMA_FULL (1 << 3)
|
||||
#define SP_STATUS_IO_FULL (1 << 4)
|
||||
#define SP_STATUS_SSTEP (1 << 5)
|
||||
#define SP_STATUS_INTR_BREAK (1 << 6)
|
||||
#define SP_STATUS_YIELD (1 << 7) // SIG0
|
||||
#define SP_STATUS_YIELDED (1 << 8) // SIG1
|
||||
#define SP_STATUS_TASKDONE (1 << 9) // SIG2
|
||||
#define SP_STATUS_SIG3 (1 << 10)
|
||||
#define SP_STATUS_SIG4 (1 << 11)
|
||||
#define SP_STATUS_SIG5 (1 << 12)
|
||||
#define SP_STATUS_SIG6 (1 << 13)
|
||||
#define SP_STATUS_SIG7 (1 << 14)
|
||||
|
||||
#define SP_CLR_HALT (1 << 0)
|
||||
#define SP_SET_HALT (1 << 1)
|
||||
#define SP_CLR_BROKE (1 << 2)
|
||||
#define SP_CLR_INTR (1 << 3)
|
||||
#define SP_SET_INTR (1 << 4)
|
||||
#define SP_CLR_SSTEP (1 << 5)
|
||||
#define SP_SET_SSTEP (1 << 6)
|
||||
#define SP_CLR_INTR_BREAK (1 << 7)
|
||||
#define SP_SET_INTR_BREAK (1 << 8)
|
||||
#define SP_CLR_SIG0 (1 << 9)
|
||||
#define SP_SET_SIG0 (1 << 10)
|
||||
#define SP_CLR_SIG1 (1 << 11)
|
||||
#define SP_SET_SIG1 (1 << 12)
|
||||
#define SP_CLR_SIG2 (1 << 13)
|
||||
#define SP_SET_SIG2 (1 << 14)
|
||||
#define SP_CLR_SIG3 (1 << 15)
|
||||
#define SP_SET_SIG3 (1 << 16)
|
||||
#define SP_CLR_SIG4 (1 << 17)
|
||||
#define SP_SET_SIG4 (1 << 18)
|
||||
#define SP_CLR_SIG5 (1 << 19)
|
||||
#define SP_SET_SIG5 (1 << 20)
|
||||
#define SP_CLR_SIG6 (1 << 21)
|
||||
#define SP_SET_SIG6 (1 << 22)
|
||||
#define SP_CLR_SIG7 (1 << 23)
|
||||
#define SP_SET_SIG7 (1 << 24)
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,112 @@
|
||||
#ifndef _SPTASK_H_
|
||||
#define _SPTASK_H_
|
||||
|
||||
#include "PR/ultratypes.h"
|
||||
|
||||
/* Task Types */
|
||||
#define M_NULTASK 0
|
||||
#define M_GFXTASK 1
|
||||
#define M_AUDTASK 2
|
||||
#define M_VIDTASK 3
|
||||
#define M_NJPEGTASK 4
|
||||
#define M_HVQTASK 6
|
||||
#define M_HVQMTASK 7
|
||||
|
||||
/* Task Flags */
|
||||
#define M_TASK_FLAG0 (1 << 0)
|
||||
#define M_TASK_FLAG1 (1 << 1)
|
||||
|
||||
/* Task Flag Fields */
|
||||
#define OS_TASK_YIELDED (1 << 0)
|
||||
#define OS_TASK_DP_WAIT (1 << 1)
|
||||
#define OS_TASK_LOADABLE (1 << 2)
|
||||
#define OS_TASK_SP_ONLY (1 << 3)
|
||||
#define OS_TASK_USR0 (1 << 4)
|
||||
#define OS_TASK_USR1 (1 << 5)
|
||||
#define OS_TASK_USR2 (1 << 6)
|
||||
#define OS_TASK_USR3 (1 << 7)
|
||||
|
||||
#define OS_YIELD_DATA_SIZE 0xC00
|
||||
#define OS_YIELD_AUDIO_SIZE 0x400
|
||||
|
||||
/* SpStatus */
|
||||
|
||||
/* Write */
|
||||
#define SPSTATUS_CLEAR_HALT (1 << 0)
|
||||
#define SPSTATUS_SET_HALT (1 << 1)
|
||||
#define SPSTATUS_CLEAR_BROKE (1 << 2)
|
||||
#define SPSTATUS_CLEAR_INTR (1 << 3)
|
||||
#define SPSTATUS_SET_INTR (1 << 4)
|
||||
#define SPSTATUS_CLEAR_SSTEP (1 << 5)
|
||||
#define SPSTATUS_SET_SSTEP (1 << 6)
|
||||
#define SPSTATUS_CLEAR_INTR_ON_BREAK (1 << 7)
|
||||
#define SPSTATUS_SET_INTR_ON_BREAK (1 << 8)
|
||||
#define SPSTATUS_CLEAR_SIGNAL0 (1 << 9)
|
||||
#define SPSTATUS_SET_SIGNAL0 (1 << 10)
|
||||
#define SPSTATUS_CLEAR_SIGNAL1 (1 << 11)
|
||||
#define SPSTATUS_SET_SIGNAL1 (1 << 12)
|
||||
#define SPSTATUS_CLEAR_SIGNAL2 (1 << 13)
|
||||
#define SPSTATUS_SET_SIGNAL2 (1 << 14)
|
||||
#define SPSTATUS_CLEAR_SIGNAL3 (1 << 15)
|
||||
#define SPSTATUS_SET_SIGNAL3 (1 << 16)
|
||||
#define SPSTATUS_CLEAR_SIGNAL4 (1 << 17)
|
||||
#define SPSTATUS_SET_SIGNAL4 (1 << 18)
|
||||
#define SPSTATUS_CLEAR_SIGNAL5 (1 << 19)
|
||||
#define SPSTATUS_SET_SIGNAL5 (1 << 20)
|
||||
#define SPSTATUS_CLEAR_SIGNAL6 (1 << 21)
|
||||
#define SPSTATUS_SET_SIGNAL6 (1 << 23)
|
||||
#define SPSTATUS_CLEAR_SIGNAL7 (1 << 24)
|
||||
#define SPSTATUS_SET_SIGNAL7 (1 << 25)
|
||||
|
||||
/* Read */
|
||||
#define SPSTATUS_HALT (1 << 0)
|
||||
#define SPSTATUS_BROKE (1 << 1)
|
||||
#define SPSTATUS_DMA_BUSY (1 << 2)
|
||||
#define SPSTATUS_DMA_FULL (1 << 3)
|
||||
#define SPSTATUS_IO_FULL (1 << 4)
|
||||
#define SPSTATUS_SINGLE_STEP (1 << 5)
|
||||
#define SPSTATUS_INTERRUPT_ON_BREAK (1 << 6)
|
||||
#define SPSTATUS_SIGNAL0_SET (1 << 7)
|
||||
#define SPSTATUS_SIGNAL1_SET (1 << 8)
|
||||
#define SPSTATUS_SIGNAL2_SET (1 << 9)
|
||||
#define SPSTATUS_SIGNAL3_SET (1 << 10)
|
||||
#define SPSTATUS_SIGNAL4_SET (1 << 11)
|
||||
#define SPSTATUS_SIGNAL5_SET (1 << 12)
|
||||
#define SPSTATUS_SIGNAL6_SET (1 << 13)
|
||||
#define SPSTATUS_SIGNAL7_SET (1 << 14)
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 type;
|
||||
/* 0x04 */ u32 flags;
|
||||
|
||||
/* 0x08 */ u64* ucode_boot;
|
||||
/* 0x0C */ u32 ucode_boot_size;
|
||||
|
||||
/* 0x10 */ u64* ucode;
|
||||
/* 0x14 */ u32 ucode_size;
|
||||
|
||||
/* 0x18 */ u64* ucode_data;
|
||||
/* 0x1C */ u32 ucode_data_size;
|
||||
|
||||
/* 0x20 */ u64* dram_stack;
|
||||
/* 0x24 */ u32 dram_stack_size;
|
||||
|
||||
/* 0x28 */ u64* output_buff;
|
||||
/* 0x2C */ u64* output_buff_size;
|
||||
|
||||
/* 0x30 */ u64* data_ptr;
|
||||
/* 0x34 */ u32 data_size;
|
||||
|
||||
/* 0x38 */ u64* yield_data_ptr;
|
||||
/* 0x3C */ u32 yield_data_size;
|
||||
} OSTask_t; // size = 0x40
|
||||
|
||||
typedef union
|
||||
{
|
||||
OSTask_t t;
|
||||
long long int force_structure_alignment;
|
||||
} OSTask;
|
||||
|
||||
typedef u32 OSYieldResult;
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,69 @@
|
||||
#ifndef _ULTRA64_THREAD_H_
|
||||
#define _ULTRA64_THREAD_H_
|
||||
|
||||
#include "PR/ultratypes.h"
|
||||
|
||||
#define OS_PRIORITY_IDLE 10
|
||||
#define OS_PRIORITY_MAIN 10
|
||||
#define OS_PRIORITY_GRAPH 11
|
||||
#define OS_PRIORITY_AUDIOMGR 12
|
||||
#define OS_PRIORITY_PADMGR 14
|
||||
#define OS_PRIORITY_SCHED 15
|
||||
#define OS_PRIORITY_DMAMGR 16
|
||||
#define OS_PRIORITY_IRQMGR 17
|
||||
#define OS_PRIORITY_PIMGR 150
|
||||
#define OS_PRIORITY_FAULTCLIENT 126
|
||||
#define OS_PRIORITY_FAULT 127
|
||||
#define OS_PRIORITY_APPMAX 127
|
||||
#define OS_PRIORITY_RMONSPIN 200
|
||||
#define OS_PRIORITY_RMON 250
|
||||
#define OS_PRIORITY_VIMGR 254
|
||||
#define OS_PRIORITY_MAX 255
|
||||
|
||||
#define OS_STATE_STOPPED (1 << 0)
|
||||
#define OS_STATE_RUNNABLE (1 << 1)
|
||||
#define OS_STATE_RUNNING (1 << 2)
|
||||
#define OS_STATE_WAITING (1 << 3)
|
||||
|
||||
typedef s32 OSPri;
|
||||
typedef s32 OSId;
|
||||
|
||||
typedef union {
|
||||
struct {
|
||||
/* 0x00 */ f32 f_odd;
|
||||
/* 0x04 */ f32 f_even;
|
||||
} f;
|
||||
} __OSfp; // size = 0x08
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ u64 at, v0, v1, a0, a1, a2, a3;
|
||||
/* 0x038 */ u64 t0, t1, t2, t3, t4, t5, t6, t7;
|
||||
/* 0x078 */ u64 s0, s1, s2, s3, s4, s5, s6, s7;
|
||||
/* 0x0B8 */ u64 t8, t9, gp, sp, s8, ra;
|
||||
/* 0x0E8 */ u64 lo, hi;
|
||||
/* 0x0F8 */ u32 sr, pc, cause, badvaddr, rcp;
|
||||
/* 0x10C */ u32 fpcsr;
|
||||
/* 0x110 */ __OSfp fp0, fp2, fp4, fp6, fp8, fp10, fp12, fp14;
|
||||
/* 0x150 */ __OSfp fp16, fp18, fp20, fp22, fp24, fp26, fp28, fp30;
|
||||
} __OSThreadContext; // size = 0x190
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 flag;
|
||||
/* 0x04 */ u32 count;
|
||||
/* 0x08 */ u64 time;
|
||||
} __OSThreadprofile; // size = 0x10
|
||||
|
||||
typedef struct OSThread {
|
||||
/*0x00*/ struct OSThread* next;
|
||||
/*0x04*/ OSPri priority;
|
||||
/*0x08*/ struct OSThread** queue;
|
||||
/*0x0C*/ struct OSThread* tlnext;
|
||||
/*0x10*/ u16 state;
|
||||
/*0x12*/ u16 flags;
|
||||
/*0x14*/ OSId id;
|
||||
/*0x18*/ s32 fp;
|
||||
/*0x1C*/ __OSThreadprofile* thprof;
|
||||
/*0x20*/ __OSThreadContext context;
|
||||
} OSThread; // size = 0x1B0
|
||||
|
||||
#endif
|
||||
+12
-18
@@ -3455,28 +3455,22 @@ extern StackEntry audioStackEntry;
|
||||
extern StackEntry padmgrStackEntry;
|
||||
extern AudioMgr audioContext;
|
||||
extern PadMgr D_801FB620;
|
||||
// extern UNK_TYPE1 D_801FBAA0;
|
||||
// extern UNK_TYPE1 D_801FBAB0;
|
||||
// extern UNK_TYPE1 D_801FBAB4;
|
||||
// extern UNK_TYPE1 D_801FBAB8;
|
||||
// extern UNK_TYPE1 D_801FBABC;
|
||||
// extern UNK_TYPE1 D_801FBAC0;
|
||||
// extern UNK_TYPE1 D_801FBAC4;
|
||||
// extern UNK_TYPE1 D_801FBAC8;
|
||||
// extern UNK_TYPE1 D_801FBACC;
|
||||
// extern UNK_TYPE1 D_801FBAD0;
|
||||
// extern UNK_TYPE1 D_801FBAD4;
|
||||
extern FaultClient sSchedFaultClient;
|
||||
extern OSTime sRSPGFXStartTime;
|
||||
extern OSTime sRSPAudioStartTime;
|
||||
extern OSTime sRSPOtherStartTime;
|
||||
extern OSTime sRDPStartTime;
|
||||
extern u64* gAudioSPDataPtr;
|
||||
extern u32 gAudioSPDataSize;
|
||||
// extern UNK_TYPE1 D_801FBAE0;
|
||||
// extern UNK_TYPE1 D_801FBAE8;
|
||||
extern volatile OSTime D_801FBAF0;
|
||||
extern volatile OSTime lastRenderFrameDuration;
|
||||
// extern UNK_TYPE1 D_801FBB00;
|
||||
// extern UNK_TYPE1 D_801FBB04;
|
||||
// extern UNK_TYPE1 D_801FBB08;
|
||||
// extern UNK_TYPE1 D_801FBB0C;
|
||||
// extern UNK_TYPE1 D_801FBB10;
|
||||
// extern UNK_TYPE1 D_801FBB14;
|
||||
// extern UNK_TYPE1 D_801FBB20;
|
||||
extern volatile OSTime gRSPAudioTotalTime;
|
||||
extern volatile OSTime sRSPGFXTotalTime;
|
||||
extern volatile OSTime sRSPOtherTotalTime;
|
||||
// extern UNK_TYPE1 D_801FBB18;
|
||||
extern volatile OSTime gRDPTotalTime;
|
||||
// extern UNK_TYPE1 D_801FBB28;
|
||||
extern OSViMode D_801FBB30;
|
||||
extern u32* gFramebuffers[2];
|
||||
|
||||
+53
-19
@@ -7,7 +7,6 @@
|
||||
|
||||
#include "PR/ultratypes.h"
|
||||
#include "PR/gbi.h"
|
||||
#include "PR/sched.h"
|
||||
#include "io/controller.h"
|
||||
#include "osint.h"
|
||||
#include "viint.h"
|
||||
@@ -46,6 +45,7 @@
|
||||
#define Z_THREAD_ID_IDLE 1
|
||||
#define Z_THREAD_ID_SLOWLY 2
|
||||
#define Z_THREAD_ID_MAIN 3
|
||||
#define Z_THREAD_ID_SCHED 5
|
||||
#define Z_THREAD_ID_DMAMGR 18
|
||||
#define Z_THREAD_ID_IRQMGR 19
|
||||
|
||||
@@ -267,6 +267,19 @@ typedef struct {
|
||||
/* 0x20308 */ u16 tailMagic; // 5678
|
||||
} GfxPool; // size = 0x20310
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16* fb1;
|
||||
/* 0x04 */ u16* swapBuffer;
|
||||
/* 0x08 */ OSViMode* viMode;
|
||||
/* 0x0C */ u32 features;
|
||||
/* 0x10 */ u8 unk_10;
|
||||
/* 0x11 */ s8 updateRate;
|
||||
/* 0x12 */ s8 updateRate2;
|
||||
/* 0x13 */ u8 unk_13;
|
||||
/* 0x14 */ f32 xScale;
|
||||
/* 0x18 */ f32 yScale;
|
||||
} CfbInfo; // size = 0x1C
|
||||
|
||||
typedef struct GraphicsContext {
|
||||
/* 0x000 */ Gfx* polyOpaBuffer;
|
||||
/* 0x004 */ Gfx* polyXluBuffer;
|
||||
@@ -1234,6 +1247,11 @@ typedef struct IrqMgrClient_t {
|
||||
/* 0x4 */ OSMesgQueue* queue;
|
||||
} IrqMgrClient; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ s16 type;
|
||||
/* 0x2 */ u8 misc[30];
|
||||
} OSScMsg;
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ OSScMsg verticalRetraceMesg;
|
||||
/* 0x020 */ OSScMsg prenmiMsg;
|
||||
@@ -1281,25 +1299,41 @@ typedef struct {
|
||||
#define OS_SC_RCP_MASK 0x0003
|
||||
#define OS_SC_TYPE_MASK 0x0007
|
||||
|
||||
#define OS_SC_DP 0x0001
|
||||
#define OS_SC_SP 0x0002
|
||||
#define OS_SC_YIELD 0x0010
|
||||
#define OS_SC_YIELDED 0x0020
|
||||
|
||||
typedef struct OSScTask {
|
||||
/* 0x00 */ struct OSScTask* next;
|
||||
/* 0x04 */ u32 state;
|
||||
/* 0x08 */ u32 flags;
|
||||
/* 0x0C */ CfbInfo* framebuffer;
|
||||
/* 0x10 */ OSTask list;
|
||||
/* 0x50 */ OSMesgQueue* msgQ;
|
||||
/* 0x54 */ OSMesg msg;
|
||||
} OSScTask; // size = 0x58
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ OSMesgQueue interruptQ;
|
||||
/* 0x018 */ OSMesg intMsgBuf[64];
|
||||
/* 0x118 */ OSMesgQueue cmdQ;
|
||||
/* 0x130 */ OSMesg cmdMsgBuf[8];
|
||||
/* 0x150 */ OSThread thread;
|
||||
/* 0x300 */ UNK_TYPE4 unk300;
|
||||
/* 0x304 */ UNK_TYPE4 unk304;
|
||||
/* 0x308 */ UNK_TYPE4 unk308;
|
||||
/* 0x30C */ UNK_TYPE4 unk30C;
|
||||
/* 0x310 */ UNK_TYPE4 unk310;
|
||||
/* 0x314 */ UNK_TYPE4 unk314;
|
||||
/* 0x318 */ s32 unk318;
|
||||
/* 0x31C */ UNK_TYPE1 pad31C[0x4];
|
||||
/* 0x320 */ UNK_TYPE4 unk320;
|
||||
/* 0x324 */ UNK_TYPE4 unk324;
|
||||
/* 0x328 */ UNK_TYPE1 pad328[0x7];
|
||||
/* 0x32F */ s8 unk32F;
|
||||
/* 0x330 */ IrqMgrClient irqClient;
|
||||
/* 0x0000 */ OSMesgQueue interruptQ;
|
||||
/* 0x0018 */ OSMesg intBuf[64];
|
||||
/* 0x0118 */ OSMesgQueue cmdQ;
|
||||
/* 0x0130 */ OSMesg cmdMsgBuf[8];
|
||||
/* 0x0150 */ OSThread thread;
|
||||
/* 0x0300 */ OSScTask* audioListHead;
|
||||
/* 0x0304 */ OSScTask* gfxListHead;
|
||||
/* 0x0308 */ OSScTask* audioListTail;
|
||||
/* 0x030C */ OSScTask* gfxListTail;
|
||||
/* 0x0310 */ OSScTask* curRSPTask;
|
||||
/* 0x0314 */ OSScTask* curRDPTask;
|
||||
/* 0x0318 */ s32 retraceCount;
|
||||
/* 0x0318 */ s32 doAudio;
|
||||
/* 0x0320 */ CfbInfo* curBuf;
|
||||
/* 0x0324 */ CfbInfo* pendingSwapBuf1;
|
||||
/* 0x0328 */ CfbInfo* pendingSwapBuf2;
|
||||
/* 0x032C */ char unk_32C[0x3];
|
||||
/* 0x032F */ u8 shouldUpdateVi;
|
||||
/* 0x0330 */ IrqMgrClient irqClient;
|
||||
} SchedContext; // size = 0x338
|
||||
|
||||
typedef struct StackEntry_t {
|
||||
|
||||
@@ -634,7 +634,6 @@ beginseg
|
||||
include "build/src/code/padmgr.o"
|
||||
include "build/data/code/padmgr.data.o"
|
||||
include "build/src/code/sched.o"
|
||||
include "build/data/code/sched.bss.o"
|
||||
include "build/src/code/speed_meter.o"
|
||||
include "build/data/code/speed_meter.data.o"
|
||||
include "build/data/code/speed_meter.bss.o"
|
||||
|
||||
@@ -712,7 +712,10 @@ void Fault_ProcessClients(void) {
|
||||
if (iter->callback) {
|
||||
Fault_FillScreenBlack();
|
||||
FaultDrawer_SetCharPad(-2, 0);
|
||||
FaultDrawer_Printf("8CallBack (%d) %08x %08x %08x\n7", idx++, iter, iter->param0, iter->param1);
|
||||
FaultDrawer_Printf("\x1A\x38"
|
||||
"CallBack (%d) %08x %08x %08x\n"
|
||||
"\x1A\x37",
|
||||
idx++, iter, iter->param0, iter->param1);
|
||||
FaultDrawer_SetCharPad(0, 0);
|
||||
iter->callback(iter->param0, iter->param1);
|
||||
Fault_WaitForInput();
|
||||
|
||||
+1
-1
@@ -51,7 +51,7 @@ void AudioMgr_HandleRetrace(AudioMgr* audioMgr) {
|
||||
osSyncPrintf("AUDIO SP TIMEOUT %08x %08x\n", audioMgr->rspTask, audioMgr->rspTask->task);
|
||||
if (retryCount >= 0) {
|
||||
retryCount--;
|
||||
func_8017703C(audioMgr->sched);
|
||||
Sched_SendAudioCancelMsg(audioMgr->sched);
|
||||
} else {
|
||||
osSyncPrintf("audioMgr.c:もうダメ!死ぬ!\n");
|
||||
osDestroyThread(NULL);
|
||||
|
||||
+578
-23
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "PR/hardware.h"
|
||||
|
||||
s32 __osEPiRawWriteIo(OSPiHandle* handle, u32 devAddr, u32 data) {
|
||||
s32 status;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#include "global.h"
|
||||
|
||||
void osCreateMesgQueue(OSMesgQueue* mq, OSMesg* msq, s32 count) {
|
||||
mq->mtqueue = (OSThread*)&__osThreadTail;
|
||||
mq->fullqueue = (OSThread*)&__osThreadTail;
|
||||
mq->mtQueue = (OSThread*)&__osThreadTail;
|
||||
mq->fullQueue = (OSThread*)&__osThreadTail;
|
||||
mq->validCount = 0;
|
||||
mq->first = 0;
|
||||
mq->msgCount = count;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user