Skip to content

Instantly share code, notes, and snippets.

@Ziemas
Created October 7, 2023 20:37
Show Gist options
  • Save Ziemas/b0368ae301eb46a97eb60b068bd651b4 to your computer and use it in GitHub Desktop.
Save Ziemas/b0368ae301eb46a97eb60b068bd651b4 to your computer and use it in GitHub Desktop.
// File written by stdump on 2023-10-07
//
// Input file:
// TAPCTRL.IRX
// Toolchain version(s):
// unknown
// Built-in types:
// char 8-bit integer
// complex double 64-bit floating point
// complex float 32-bit floating point
// complex long double 64-bit floating point
// double 64-bit floating point
// float 32-bit floating point
// int 32-bit signed integer
// long double 64-bit floating point
// long int 32-bit signed integer
// long long int 64-bit signed integer
// long long unsigned int 64-bit unsigned integer
// long unsigned int error
// short int 16-bit signed integer
// short unsigned int 16-bit unsigned integer
// signed char 8-bit signed integer
// unsigned char 8-bit unsigned integer
// unsigned int error
typedef struct { // 0x8
/* 0x0 */ int real;
/* 0x4 */ int imag;
} complex int;
typedef void void;
enum KernelErrorCode {
KE_OK = 0,
KE_ERROR = -1,
KE_ILLEGAL_EXPCODE = -50,
KE_EXPHANDLER_NOUSE = -51,
KE_EXPHANDLER_USED = -52,
KE_ILLEGAL_CONTEXT = -100,
KE_ILLEGAL_INTRCODE = -101,
KE_CPUDI = -102,
KE_INTRDISABLE = -103,
KE_FOUND_HANDLER = -104,
KE_NOTFOUND_HANDLER = -105,
KE_NO_TIMER = -150,
KE_ILLEGAL_TIMERID = -151,
KE_ILLEGAL_SOURCE = -152,
KE_ILLEGAL_PRESCALE = -153,
KE_TIMER_BUSY = -154,
KE_TIMER_NOT_SETUP = -155,
KE_TIMER_NOT_INUSE = -156,
KE_UNIT_USED = -160,
KE_UNIT_NOUSE = -161,
KE_NO_ROMDIR = -162,
KE_LINKERR = -200,
KE_ILLEGAL_OBJECT = -201,
KE_UNKNOWN_MODULE = -202,
KE_NOFILE = -203,
KE_FILEERR = -204,
KE_MEMINUSE = -205,
KE_ALREADY_STARTED = -206,
KE_NOT_STARTED = -207,
KE_ALREADY_STOPPED = -208,
KE_CAN_NOT_STOP = -209,
KE_NOT_STOPPED = -210,
KE_NOT_REMOVABLE = -211,
KE_LIBRARY_FOUND = -212,
KE_LIBRARY_NOTFOUND = -213,
KE_ILLEGAL_LIBRARY = -214,
KE_LIBRARY_INUSE = -215,
KE_ALREADY_STOPPING = -216,
KE_ILLEGAL_OFFSET = -217,
KE_ILLEGAL_POSITION = -218,
KE_ILLEGAL_ACCESS = -219,
KE_NO_MEMORY = -400,
KE_ILLEGAL_ATTR = -401,
KE_ILLEGAL_ENTRY = -402,
KE_ILLEGAL_PRIORITY = -403,
KE_ILLEGAL_STACK_SIZE = -404,
KE_ILLEGAL_MODE = -405,
KE_ILLEGAL_THID = -406,
KE_UNKNOWN_THID = -407,
KE_UNKNOWN_SEMID = -408,
KE_UNKNOWN_EVFID = -409,
KE_UNKNOWN_MBXID = -410,
KE_UNKNOWN_VPLID = -411,
KE_UNKNOWN_FPLID = -412,
KE_DORMANT = -413,
KE_NOT_DORMANT = -414,
KE_NOT_SUSPEND = -415,
KE_NOT_WAIT = -416,
KE_CAN_NOT_WAIT = -417,
KE_RELEASE_WAIT = -418,
KE_SEMA_ZERO = -419,
KE_SEMA_OVF = -420,
KE_EVF_COND = -421,
KE_EVF_MULTI = -422,
KE_EVF_ILPAT = -423,
KE_MBOX_NOMSG = -424,
KE_WAIT_DELETE = -425,
KE_ILLEGAL_MEMBLOCK = -426,
KE_ILLEGAL_MEMSIZE = -427
};
struct _libhead { // 0x14
/* 0x00 */ _libhead *next;
/* 0x04 */ _libcaller *client;
/* 0x08 */ short unsigned int version;
/* 0x0a */ short unsigned int flags;
/* 0x0c */ char name[1];
};
typedef _libhead libhead;
struct _libcaller { // 0x14
/* 0x00:0 */ long unsigned int magic : 32;
/* 0x04 */ _libcaller *client;
/* 0x08 */ short unsigned int version;
/* 0x0a */ short unsigned int flags;
/* 0x0c */ char name[1];
};
typedef _libcaller libcaller;
struct _moduleinfo { // 0x8
/* 0x0 */ char *name;
/* 0x4 */ short unsigned int version;
};
typedef _moduleinfo ModuleInfo;
struct _libinfo { // 0x14
/* 0x00 */ long unsigned int dummy[1];
/* 0x08 */ short unsigned int version;
/* 0x0a */ short unsigned int dummy2;
/* 0x0c */ char name[1];
};
typedef _libinfo LibInfo;
typedef unsigned int size_t;
typedef int ssize_t;
typedef char *caddr_t;
typedef unsigned char u_char;
typedef short unsigned int u_short;
typedef unsigned int u_int;
typedef long unsigned int u_long;
typedef unsigned char unchar;
typedef short unsigned int ushort;
typedef unsigned int uint;
typedef long unsigned int ulong;
struct _modulestatus { // 0x60
/* 0x00 */ char name[1];
/* 0x38 */ u_short version;
/* 0x3a */ u_short flags;
/* 0x3c */ int id;
/* 0x40 */ u_long entry_addr;
/* 0x44 */ u_long gp_value;
/* 0x48 */ u_long text_addr;
/* 0x4c */ u_long text_size;
/* 0x50 */ u_long data_size;
/* 0x54 */ u_long bss_size;
/* 0x58 */ u_long lreserve[1];
};
typedef _modulestatus ModuleStatus;
struct _ldfilefunc { // 0x20
/* 0x00 */ int (*beforeOpen)(/* parameters unknown */);
/* 0x04 */ int (*afterOpen)(/* parameters unknown */);
/* 0x08 */ int (*close)(/* parameters unknown */);
/* 0x0c */ int (*setBufSize)(/* parameters unknown */);
/* 0x10 */ int (*beforeRead)(/* parameters unknown */);
/* 0x14 */ int (*read)(/* parameters unknown */);
/* 0x18 */ int (*lseek)(/* parameters unknown */);
/* 0x1c */ int (*getfsize)(/* parameters unknown */);
};
typedef _ldfilefunc LDfilefunc;
struct _lmwooption { // 0x20
/* 0x00 */ char position;
/* 0x01 */ char access;
/* 0x02 */ char creserved[1];
/* 0x04 */ void *distaddr;
/* 0x08 */ int distoffset;
/* 0x0c */ LDfilefunc *functable;
/* 0x10 */ void *funcopt;
/* 0x14 */ int ireserved[1];
};
typedef _lmwooption LMWOoption;
enum EXCEP {
EXCEP_Int = 0,
EXCEP_MOD = 1,
EXCEP_TLBL = 2,
EXCEP_TLBS = 3,
EXCEP_AdEL = 4,
EXCEP_AdES = 5,
EXCEP_IBE = 6,
EXCEP_DBE = 7,
EXCEP_Sys = 8,
EXCEP_Bp = 9,
EXCEP_RI = 10,
EXCEP_CpU = 11,
EXCEP_Ovf = 12,
EXCEP_reserv1 = 13,
EXCEP_reserv2 = 14,
EXCEP_HDB = 15,
EXCEP_MAX = 16
};
enum INUM {
INUM_VBLANK = 0,
INUM_GM = 1,
INUM_CDROM = 2,
INUM_DMA = 3,
INUM_RTC0 = 4,
INUM_RTC1 = 5,
INUM_RTC2 = 6,
INUM_SIO0 = 7,
INUM_SIO1 = 8,
INUM_SPU = 9,
INUM_PIO = 10,
INUM_EVBLANK = 11,
INUM_DVD = 12,
INUM_PCMCIA = 13,
INUM_RTC3 = 14,
INUM_RTC4 = 15,
INUM_RTC5 = 16,
INUM_SIO2 = 17,
INUM_HTR0 = 18,
INUM_HTR1 = 19,
INUM_HTR2 = 20,
INUM_HTR3 = 21,
INUM_USB = 22,
INUM_EXTR = 23,
INUM_FWRE = 24,
INUM_FDMA = 25,
INUM_DMA_0 = 32,
INUM_DMA_1 = 33,
INUM_DMA_2 = 34,
INUM_DMA_3 = 35,
INUM_DMA_4 = 36,
INUM_DMA_5 = 37,
INUM_DMA_6 = 38,
INUM_DMA_BERR = 39,
INUM_DMA_7 = 40,
INUM_DMA_8 = 41,
INUM_DMA_9 = 42,
INUM_DMA_10 = 43,
INUM_DMA_11 = 44,
INUM_DMA_12 = 45,
INUM_MAX = 64
};
typedef int (*intr_handler)(/* parameters unknown */);
struct ThreadParam { // 0x14
/* 0x00 */ u_int attr;
/* 0x04 */ u_int option;
/* 0x08 */ void *entry;
/* 0x0c */ int stackSize;
/* 0x10 */ int initPriority;
};
struct ThreadInfo { // 0x44
/* 0x00 */ u_int attr;
/* 0x04 */ u_int option;
/* 0x08 */ int status;
/* 0x0c */ void *entry;
/* 0x10 */ void *stack;
/* 0x14 */ int stackSize;
/* 0x18 */ void *gpReg;
/* 0x1c */ int initPriority;
/* 0x20 */ int currentPriority;
/* 0x24 */ int waitType;
/* 0x28 */ int waitId;
/* 0x2c */ int wakeupCount;
/* 0x30 */ u_long *regContext;
/* 0x34 */ int reserved1;
/* 0x38 */ int reserved2;
/* 0x3c */ int reserved3;
/* 0x40 */ int reserved4;
};
struct SemaParam { // 0x10
/* 0x0 */ u_int attr;
/* 0x4 */ u_int option;
/* 0x8 */ int initCount;
/* 0xc */ int maxCount;
};
struct SemaInfo { // 0x20
/* 0x00 */ u_int attr;
/* 0x04 */ u_int option;
/* 0x08 */ int initCount;
/* 0x0c */ int maxCount;
/* 0x10 */ int currentCount;
/* 0x14 */ int numWaitThreads;
/* 0x18 */ int reserved1;
/* 0x1c */ int reserved2;
};
struct EventFlagParam { // 0xc
/* 0x0 */ u_int attr;
/* 0x4 */ u_int option;
/* 0x8 */ u_int initPattern;
};
struct EventFlagInfo { // 0x1c
/* 0x00 */ u_int attr;
/* 0x04 */ u_int option;
/* 0x08 */ u_int initPattern;
/* 0x0c */ u_int currentPattern;
/* 0x10 */ int numWaitThreads;
/* 0x14 */ int reserved1;
/* 0x18 */ int reserved2;
};
struct MbxParam { // 0x8
/* 0x0 */ u_int attr;
/* 0x4 */ u_int option;
};
struct MbxInfo { // 0x1c
/* 0x00 */ u_int attr;
/* 0x04 */ u_int option;
/* 0x08 */ int numWaitThreads;
/* 0x0c */ int numMessage;
/* 0x10 */ MsgPacket *topPacket;
/* 0x14 */ int reserved1;
/* 0x18 */ int reserved2;
};
struct MsgPacket { // 0x8
/* 0x0 */ MsgPacket *next;
/* 0x4 */ u_char msgPriority;
/* 0x5 */ u_char dummy[1];
};
struct VplParam { // 0xc
/* 0x0 */ u_int attr;
/* 0x4 */ u_int option;
/* 0x8 */ int size;
};
struct VplInfo { // 0x20
/* 0x00 */ u_int attr;
/* 0x04 */ u_int option;
/* 0x08 */ int size;
/* 0x0c */ int freeSize;
/* 0x10 */ int numWaitThreads;
/* 0x14 */ int reserved1;
/* 0x18 */ int reserved2;
/* 0x1c */ int reserved3;
};
struct FplParam { // 0x10
/* 0x0 */ u_int attr;
/* 0x4 */ u_int option;
/* 0x8 */ int blockSize;
/* 0xc */ int numBlocks;
};
struct FplInfo { // 0x28
/* 0x00 */ u_int attr;
/* 0x04 */ u_int option;
/* 0x08 */ int blockSize;
/* 0x0c */ int numBlocks;
/* 0x10 */ int freeBlocks;
/* 0x14 */ int numWaitThreads;
/* 0x18 */ int reserved1;
/* 0x1c */ int reserved2;
/* 0x20 */ int reserved3;
/* 0x24 */ int reserved4;
};
struct SysClock { // 0x8
/* 0x0 */ u_int low;
/* 0x4 */ u_int hi;
};
typedef u_int (*AlarmHandler)(/* parameters unknown */);
typedef struct { // 0x10
/* 0x0:0 */ unsigned int data : 32;
/* 0x4:0 */ unsigned int addr : 32;
/* 0x8:0 */ unsigned int size : 32;
/* 0xc:0 */ unsigned int mode : 32;
} sceSifDmaData;
typedef struct { // 0x10
/* 0x0:0 */ unsigned int psize : 8;
/* 0x1:0 */ unsigned int dsize : 24;
/* 0x4:0 */ unsigned int daddr : 32;
/* 0x8:0 */ unsigned int fcode : 32;
/* 0xc:0 */ unsigned int opt : 32;
} sceSifCmdHdr;
typedef void (*sceSifCmdHandler)(/* parameters unknown */);
typedef struct { // 0x8
/* 0x0 */ sceSifCmdHandler func;
/* 0x4 */ void *data;
} sceSifCmdData;
typedef struct { // 0x14
/* 0x00 */ sceSifCmdHdr chdr;
/* 0x10 */ void *newaddr;
} sceSifCmdCSData;
typedef struct { // 0x18
/* 0x00 */ sceSifCmdHdr chdr;
/* 0x10 */ int rno;
/* 0x14:0 */ unsigned int value : 32;
} sceSifCmdSRData;
typedef struct { // 0x68
/* 0x00 */ sceSifCmdHdr chdr;
/* 0x10 */ int size;
/* 0x14 */ int flag;
/* 0x18 */ char arg[1];
} sceSifCmdResetData;
struct _sif_rpc_data { // 0x10
/* 0x0 */ void *paddr;
/* 0x4:0 */ unsigned int pid : 32;
/* 0x8 */ int tid;
/* 0xc:0 */ unsigned int mode : 32;
};
typedef _sif_rpc_data sceSifRpcData;
typedef void (*sceSifEndFunc)(/* parameters unknown */);
struct _sif_client_data { // 0x28
/* 0x00 */ _sif_rpc_data rpcd;
/* 0x10:0 */ unsigned int command : 32;
/* 0x14 */ void *buff;
/* 0x18 */ void *cbuff;
/* 0x1c */ sceSifEndFunc func;
/* 0x20 */ void *para;
/* 0x24 */ _sif_serve_data *serve;
};
typedef _sif_client_data sceSifClientData;
struct _sif_receive_data { // 0x1c
/* 0x00 */ _sif_rpc_data rpcd;
/* 0x10 */ void *src;
/* 0x14 */ void *dest;
/* 0x18 */ int size;
};
typedef _sif_receive_data sceSifReceiveData;
typedef void* (*sceSifRpcFunc)(/* parameters unknown */);
struct _sif_serve_data { // 0x44
/* 0x00:0 */ unsigned int command : 32;
/* 0x04 */ sceSifRpcFunc func;
/* 0x08 */ void *buff;
/* 0x0c */ int size;
/* 0x10 */ sceSifRpcFunc cfunc;
/* 0x14 */ void *cbuff;
/* 0x18 */ int csize;
/* 0x1c */ sceSifClientData *client;
/* 0x20 */ void *paddr;
/* 0x24:0 */ unsigned int fno : 32;
/* 0x28 */ void *receive;
/* 0x2c */ int rsize;
/* 0x30 */ int rmode;
/* 0x34:0 */ unsigned int rid : 32;
/* 0x38 */ _sif_serve_data *link;
/* 0x3c */ _sif_serve_data *next;
/* 0x40 */ _sif_queue_data *base;
};
typedef _sif_serve_data sceSifServeData;
struct _sif_queue_data { // 0x18
/* 0x00 */ int key;
/* 0x04 */ int active;
/* 0x08 */ _sif_serve_data *link;
/* 0x0c */ _sif_serve_data *start;
/* 0x10 */ _sif_serve_data *end;
/* 0x14 */ _sif_queue_data *next;
};
typedef _sif_queue_data sceSifQueueData;
typedef int (*sceSdTransIntrHandler)(/* parameters unknown */);
typedef int (*sceSdSpu2IntrHandler)(/* parameters unknown */);
typedef struct { // 0x8
/* 0x0 */ short unsigned int func;
/* 0x2 */ short unsigned int entry;
/* 0x4:0 */ unsigned int value : 32;
} sceSdBatch;
typedef struct { // 0x14
/* 0x00 */ int core;
/* 0x04 */ int mode;
/* 0x08 */ short int depth_L;
/* 0x0a */ short int depth_R;
/* 0x0c */ int delay;
/* 0x10 */ int feedback;
} sceSdEffectAttr;
typedef struct { // 0x8
/* 0x0 */ int sema;
/* 0x4 */ void *buff;
} sceCslBuffCtx;
typedef struct { // 0x8
/* 0x0 */ int buffNum;
/* 0x4 */ sceCslBuffCtx *buffCtx;
} sceCslBuffGrp;
typedef struct { // 0x14
/* 0x00 */ int buffGrpNum;
/* 0x04 */ sceCslBuffGrp *buffGrp;
/* 0x08 */ void *conf;
/* 0x0c */ void *callBack;
/* 0x10 */ char **extmod;
} sceCslCtx;
typedef struct { // 0x8
/* 0x0 */ u_int buffsize;
/* 0x4 */ u_int validsize;
/* 0x8 */ u_char data[1];
} sceCslMidiStream;
typedef struct { // 0x8
/* 0x0 */ unsigned char type;
/* 0x1 */ unsigned char loopTimes;
/* 0x2 */ unsigned char loopCount;
/* 0x4:0 */ unsigned int loopId : 32;
} sceMidiLoopInfo;
typedef struct { // 0x228
/* 0x000:0 */ unsigned int songNum : 32;
/* 0x004:0 */ unsigned int midiNum : 32;
/* 0x008:0 */ unsigned int position : 32;
/* 0x00c:0 */ unsigned int status : 32;
/* 0x010 */ short unsigned int outPort[1];
/* 0x030 */ short unsigned int excOutPort;
/* 0x034 */ unsigned int (*chMsgCallBack)(/* parameters unknown */);
/* 0x038:0 */ unsigned int chMsgCallBackPrivateData : 32;
/* 0x03c */ int (*metaMsgCallBack)(/* parameters unknown */);
/* 0x040:0 */ unsigned int metaMsgCallBackPrivateData : 32;
/* 0x044 */ int (*excMsgCallBack)(/* parameters unknown */);
/* 0x048:0 */ unsigned int excMsgCallBackPrivateData : 32;
/* 0x04c */ int (*repeatCallBack)(/* parameters unknown */);
/* 0x050:0 */ unsigned int repeatCallBackPrivateData : 32;
/* 0x054 */ unsigned char system[1];
} sceMidiEnv;
typedef struct { // 0x8
/* 0x0 */ unsigned char id;
/* 0x2 */ short unsigned int waveLen;
/* 0x4 */ short int *wave;
} sceHSynUserLfoWave;
typedef struct { // 0x7e
/* 0x00 */ unsigned char velMap[1];
} sceHSynUserVelocityMap;
typedef struct { // 0x558
/* 0x000 */ unsigned char priority;
/* 0x001 */ unsigned char maxPolyphony;
/* 0x002 */ unsigned char portMode;
/* 0x003 */ unsigned char waveType;
/* 0x004 */ int lfoWaveNum;
/* 0x008 */ sceHSynUserLfoWave *lfoWaveTbl;
/* 0x00c */ int velocityMapNum;
/* 0x010 */ sceHSynUserVelocityMap *velocityMapTbl;
/* 0x014 */ unsigned char system[1];
} sceHSynEnv;
typedef struct { // 0x98
/* 0x00 */ int pendingVoiceCount;
/* 0x04 */ int workVoiceCount;
/* 0x08 */ unsigned char voice_state[1][1];
/* 0x38 */ short unsigned int voice_env[1][1];
} sceHSyn_VoiceStat;
typedef struct { // 0x18
/* 0x00 */ int core;
/* 0x04 */ int mode;
/* 0x08 */ short int depth_L;
/* 0x0a */ short int depth_R;
/* 0x0c */ int delay;
/* 0x10 */ int feedback;
/* 0x14 */ short int vol_l;
/* 0x16 */ short int vol_r;
} sceHSyn_EffectAttr;
typedef struct { // 0x10
/* 0x0 */ unsigned char ch[1];
} sceHSynChStat;
typedef struct { // 0x1c
/* 0x00:0 */ unsigned int func : 32;
/* 0x04:0 */ unsigned int retVal : 32;
/* 0x08 */ unsigned int arg[1];
} sceHSyn_SdCall;
typedef struct { // 0xc
/* 0x0:0 */ unsigned int infoBlkNum : 32;
/* 0x4:0 */ unsigned int readIndex : 32;
/* 0x8:0 */ unsigned int writeIndex : 32;
/* 0xc */ sceHSyn_SdCall sdCall[1];
} sceHSyn_DebugInfo;
typedef struct { // 0x7
/* 0x0 */ unsigned char d[1];
} sceMSInHsMsg;
typedef struct { // 0x28
/* 0x00 */ u_int trans_set;
/* 0x04 */ u_int chan;
/* 0x08 */ u_int spu_adr_top;
/* 0x0c */ u_int iop_adr_top;
/* 0x10 */ u_int iop_size;
/* 0x14 */ u_int iop_adr_end;
/* 0x18 */ u_int bd_spu_adr;
/* 0x1c */ u_int bd_size;
/* 0x20 */ u_int hd_iop_adr;
/* 0x24 */ u_int hd_size;
} TAPCTRL;
typedef struct { // 0x6
/* 0x0 */ u_char use_flag;
/* 0x1 */ u_char use_chan;
/* 0x2 */ u_char prg;
/* 0x3 */ u_char key;
/* 0x4 */ u_char id;
/* 0x5 */ u_char velocity;
} TAP_REQ_BOX;
typedef enum {
TRM_NONE = 0,
TRM_EE2IOP = 1,
TRM_IOP2SPU = 2,
TRM_MAX = 3,
TRM_NOWT = 256
} TRANS_MODE;
typedef struct { // 0x10
/* 0x0 */ TRANS_MODE tr_mode;
/* 0x4 */ void *moto_pos;
/* 0x8 */ void *saki_pos;
/* 0xc */ u_int size;
} TRANS_MEM;
struct TimerCtx { // 0xc
/* 0x0 */ int threadID;
/* 0x4 */ int timerID;
/* 0x8 */ int count;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment