mirror of
https://github.com/encounter/oot-gc.git
synced 2026-03-30 11:33:44 -07:00
d693726da8
* Use #include "..." rather than #include <...> * Remove unused dolphin headers * Go through dolphin/base.h * Remove __cplusplus guards * Go through dolphin/gx.h * Move dolphin OS headers to subdirectory * Go through dolphin/os.h * Go through the rest of dolphin headers * Split out si.h * Split up hw_regs.h * Change #include <> to #include "" in debug info * Create dolphin/thp.h * Go through variables.h * Create dolphin.h
1027 lines
24 KiB
C
1027 lines
24 KiB
C
/*
|
|
Compile unit: C:\HOMEBOY\STEPHEN\Japanese Ocarina\Fire\rspASM.c
|
|
Producer: MW EABI PPC C-Compiler
|
|
Language: C89
|
|
Code range: 0x8008CF0C -> 0x8008D248
|
|
*/
|
|
|
|
#include "dolphin/types.h"
|
|
|
|
// Erased
|
|
static s32 rspVMULF(s16* pVec1, s16* pVec2, s16* pVecResult, u32 nElement, s32* pAcc) {
|
|
// Parameters
|
|
// s16* pVec1; // r4
|
|
// s16* pVec2; // r30
|
|
// s16* pVecResult; // r6
|
|
// u32 nElement; // r31
|
|
// s32* pAcc; // r8
|
|
|
|
// Local variables
|
|
s32 i; // r20
|
|
u16 du; // r1+0x8
|
|
s64 taccum; // r19
|
|
s64 clampMask; // r17
|
|
|
|
// References
|
|
// -> s32 cmask_tab[8];
|
|
// -> s32 emask_tab[8];
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspVMUDL(s16* pVec1, s16* pVec2, s16* pVecResult, u32 nElement, s32* pAcc) {
|
|
// Parameters
|
|
// s16* pVec1; // r4
|
|
// s16* pVec2; // r19
|
|
// s16* pVecResult; // r6
|
|
// u32 nElement; // r31
|
|
// s32* pAcc; // r8
|
|
|
|
// Local variables
|
|
s32 i; // r22
|
|
u16 du; // r1+0x8
|
|
s64 taccum; // r3
|
|
s64 clampMask; // r21
|
|
|
|
// References
|
|
// -> s32 cmask_tab[8];
|
|
// -> s32 emask_tab[8];
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspVMUDM(s16* pVec1, s16* pVec2, s16* pVecResult, u32 nElement, s32* pAcc) {
|
|
// Parameters
|
|
// s16* pVec1; // r4
|
|
// s16* pVec2; // r17
|
|
// s16* pVecResult; // r6
|
|
// u32 nElement; // r18
|
|
// s32* pAcc; // r8
|
|
|
|
// Local variables
|
|
s32 i; // r23
|
|
u16 du; // r1+0x8
|
|
s64 taccum; // r22
|
|
s64 clampMask; // r20
|
|
|
|
// References
|
|
// -> s32 cmask_tab[8];
|
|
// -> s32 emask_tab[8];
|
|
}
|
|
|
|
// Range: 0x8008D0B0 -> 0x8008D248
|
|
static s32 rspVMUDN(s16* pVec1, s16* pVec2, s16* pVecResult, u32 nElement, s64* pAcc) {
|
|
// Parameters
|
|
// s16* pVec1; // r4
|
|
// s16* pVec2; // r30
|
|
// s16* pVecResult; // r6
|
|
// u32 nElement; // r31
|
|
// s64* pAcc; // r8
|
|
|
|
// Local variables
|
|
s32 i; // r20
|
|
u16 du; // r1+0x8
|
|
s64 taccum; // r19
|
|
s64 clampMask; // r17
|
|
|
|
// References
|
|
// -> s32 cmask_tab[8];
|
|
// -> s32 emask_tab[8];
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspVMUDH(s16* pVec1, s16* pVec2, s16* pVecResult, u32 nElement, s32* pAcc) {
|
|
// Parameters
|
|
// s16* pVec1; // r4
|
|
// s16* pVec2; // r30
|
|
// s16* pVecResult; // r6
|
|
// u32 nElement; // r31
|
|
// s32* pAcc; // r8
|
|
|
|
// Local variables
|
|
s32 i; // r22
|
|
u16 du; // r1+0x8
|
|
s64 taccum; // r21
|
|
s64 clampMask; // r19
|
|
|
|
// References
|
|
// -> s32 cmask_tab[8];
|
|
// -> s32 emask_tab[8];
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspVMACF(s16* pVec1, s16* pVec2, s16* pVecResult, u32 nElement, s32* pAcc) {
|
|
// Parameters
|
|
// s16* pVec1; // r4
|
|
// s16* pVec2; // r17
|
|
// s16* pVecResult; // r6
|
|
// u32 nElement; // r18
|
|
// s32* pAcc; // r8
|
|
|
|
// Local variables
|
|
s32 i; // r23
|
|
u16 du; // r1+0x8
|
|
s64 taccum; // r22
|
|
s64 clampMask; // r20
|
|
|
|
// References
|
|
// -> s32 cmask_tab[8];
|
|
// -> s32 emask_tab[8];
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspVMADL(s16* pVec1, s16* pVec2, s16* pVecResult, u32 nElement, s32* pAcc) {
|
|
// Parameters
|
|
// s16* pVec1; // r4
|
|
// s16* pVec2; // r27
|
|
// s16* pVecResult; // r6
|
|
// u32 nElement; // r28
|
|
// s32* pAcc; // r8
|
|
|
|
// Local variables
|
|
s32 i; // r31
|
|
u16 du; // r1+0x8
|
|
s64 taccum; // r3
|
|
s64 clampMask; // r30
|
|
|
|
// References
|
|
// -> s32 cmask_tab[8];
|
|
// -> s32 emask_tab[8];
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspVMADM(s16* pVec1, s16* pVec2, s16* pVecResult, u32 nElement, s32* pAcc) {
|
|
// Parameters
|
|
// s16* pVec1; // r4
|
|
// s16* pVec2; // r17
|
|
// s16* pVecResult; // r6
|
|
// u32 nElement; // r18
|
|
// s32* pAcc; // r8
|
|
|
|
// Local variables
|
|
s32 i; // r23
|
|
u16 du; // r1+0x8
|
|
s64 taccum; // r22
|
|
s64 clampMask; // r20
|
|
|
|
// References
|
|
// -> s32 cmask_tab[8];
|
|
// -> s32 emask_tab[8];
|
|
}
|
|
|
|
// Range: 0x8008CF0C -> 0x8008D0B0
|
|
static s32 rspVMADN(s16* pVec1, s16* pVec2, s16* pVecResult, u32 nElement, s64* pAcc) {
|
|
// Parameters
|
|
// s16* pVec1; // r4
|
|
// s16* pVec2; // r30
|
|
// s16* pVecResult; // r6
|
|
// u32 nElement; // r31
|
|
// s64* pAcc; // r8
|
|
|
|
// Local variables
|
|
s32 i; // r20
|
|
u16 du; // r1+0x8
|
|
s64 taccum; // r19
|
|
s64 clampMask; // r17
|
|
|
|
// References
|
|
// -> s32 cmask_tab[8];
|
|
// -> s32 emask_tab[8];
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspVMADH(s16* pVec1, s16* pVec2, s16* pVecResult, u32 nElement, s32* pAcc) {
|
|
// Parameters
|
|
// s16* pVec1; // r4
|
|
// s16* pVec2; // r18
|
|
// s16* pVecResult; // r6
|
|
// u32 nElement; // r19
|
|
// s32* pAcc; // r8
|
|
|
|
// Local variables
|
|
s32 i; // r24
|
|
u16 du; // r1+0x8
|
|
s64 taccum; // r23
|
|
s64 clampMask; // r21
|
|
|
|
// References
|
|
// -> s32 cmask_tab[8];
|
|
// -> s32 emask_tab[8];
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspVADD(s16* pVec1, s16* pVec2, s16* pVecResult, u32 nElement, s32* pAcc) {
|
|
// Parameters
|
|
// s16* pVec1; // r4
|
|
// s16* pVec2; // r1+0x10
|
|
// s16* pVecResult; // r6
|
|
// u32 nElement; // r1+0x18
|
|
// s32* pAcc; // r8
|
|
|
|
// Local variables
|
|
s32 i; // r10
|
|
s32 carry; // r28
|
|
s32 di; // r28
|
|
|
|
// References
|
|
// -> static u16 rsp_VCO;
|
|
// -> s32 cmask_tab[8];
|
|
// -> s32 emask_tab[8];
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspVSUB(s16* pVec1, s16* pVec2, s16* pVecResult, u32 nElement, s32* pAcc) {
|
|
// Parameters
|
|
// s16* pVec1; // r4
|
|
// s16* pVec2; // r1+0x10
|
|
// s16* pVecResult; // r6
|
|
// u32 nElement; // r1+0x18
|
|
// s32* pAcc; // r8
|
|
|
|
// Local variables
|
|
s32 i; // r10
|
|
s32 borrow; // r28
|
|
s32 di; // r29
|
|
|
|
// References
|
|
// -> static u16 rsp_VCO;
|
|
// -> s32 cmask_tab[8];
|
|
// -> s32 emask_tab[8];
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspVADDC(s16* pVec1, s16* pVec2, s16* pVecResult, u32 nElement, s32* pAcc) {
|
|
// Parameters
|
|
// s16* pVec1; // r4
|
|
// s16* pVec2; // r1+0x10
|
|
// s16* pVecResult; // r6
|
|
// u32 nElement; // r1+0x18
|
|
// s32* pAcc; // r8
|
|
|
|
// Local variables
|
|
s32 i; // r10
|
|
u32 di; // r27
|
|
|
|
// References
|
|
// -> static u16 rsp_VCO;
|
|
// -> s32 cmask_tab[8];
|
|
// -> s32 emask_tab[8];
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspVSUBC(s16* pVec1, s16* pVec2, s16* pVecResult, u32 nElement, s32* pAcc) {
|
|
// Parameters
|
|
// s16* pVec1; // r4
|
|
// s16* pVec2; // r1+0x10
|
|
// s16* pVecResult; // r6
|
|
// u32 nElement; // r1+0x18
|
|
// s32* pAcc; // r8
|
|
|
|
// Local variables
|
|
s32 i; // r10
|
|
s32 di; // r29
|
|
|
|
// References
|
|
// -> static u16 rsp_VCO;
|
|
// -> s32 cmask_tab[8];
|
|
// -> s32 emask_tab[8];
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspVGE(s16* pVec1, s16* pVec2, s16* pVecResult, u32 nElement, s32* pAcc) {
|
|
// Parameters
|
|
// s16* pVec1; // r4
|
|
// s16* pVec2; // r1+0x10
|
|
// s16* pVecResult; // r6
|
|
// u32 nElement; // r1+0x18
|
|
// s32* pAcc; // r8
|
|
|
|
// Local variables
|
|
s32 i; // r12
|
|
s16 si; // r1+0x8
|
|
s16 ti; // r1+0x8
|
|
|
|
// References
|
|
// -> static u16 rsp_VCO;
|
|
// -> static u16 rsp_VCC;
|
|
// -> s32 cmask_tab[8];
|
|
// -> s32 emask_tab[8];
|
|
// -> static u8 vco_carry[8];
|
|
// -> static u8 vco_equal[8];
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspVCL(s16* pVec1, s16* pVec2, s16* pVecResult, u32 nElement, s32* pAcc) {
|
|
// Parameters
|
|
// s16* pVec1; // r4
|
|
// s16* pVec2; // r1+0x10
|
|
// s16* pVecResult; // r6
|
|
// u32 nElement; // r1+0x18
|
|
// s32* pAcc; // r8
|
|
|
|
// Local variables
|
|
u16 sf; // r30
|
|
u16 tf; // r29
|
|
s32 di; // r1+0x8
|
|
s32 i; // r28
|
|
s32 ge; // r11
|
|
s32 le; // r27
|
|
s32 vce; // r26
|
|
s32 eq; // r25
|
|
s32 carry; // r24
|
|
|
|
// References
|
|
// -> static u8 rsp_VCE;
|
|
// -> static u16 rsp_VCO;
|
|
// -> static u16 rsp_VCC;
|
|
// -> s32 cmask_tab[8];
|
|
// -> s32 emask_tab[8];
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspVSAW(s16* pResult, u32 nElement, s32* pAcc) {
|
|
// Parameters
|
|
// s16* pResult; // r4
|
|
// u32 nElement; // r1+0x10
|
|
// s32* pAcc; // r6
|
|
|
|
// Local variables
|
|
s32 i; // r29
|
|
s32 element; // r28
|
|
u16 ri; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmADD(struct __anon_0x5845E* pRSP, s16 rd, s16 rs, s16 rt) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rd; // r1+0x4
|
|
// s16 rs; // r1+0x6
|
|
// s16 rt; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmADDI(struct __anon_0x5845E* pRSP, s16 rt, s16 rs, s16 immediate) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rt; // r1+0x4
|
|
// s16 rs; // r1+0x6
|
|
// s16 immediate; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmAND(struct __anon_0x5845E* pRSP, s16 rd, s16 rs, s16 rt) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rd; // r1+0x4
|
|
// s16 rs; // r1+0x6
|
|
// s16 rt; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmANDI(struct __anon_0x5845E* pRSP, s16 rt, s16 rs, s16 immediate) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rt; // r1+0x4
|
|
// s16 rs; // r1+0x6
|
|
// s16 immediate; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmLB(struct __anon_0x5845E* pRSP, s16 rt, s16 offset, s16 base) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rt; // r1+0x4
|
|
// s16 offset; // r1+0x6
|
|
// s16 base; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmLBU(struct __anon_0x5845E* pRSP, s16 rt, s16 offset, s16 base) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rt; // r1+0x4
|
|
// s16 offset; // r1+0x6
|
|
// s16 base; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmLH(struct __anon_0x5845E* pRSP, s16 rt, s16 offset, s16 base) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rt; // r1+0x4
|
|
// s16 offset; // r1+0x6
|
|
// s16 base; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmLHU(struct __anon_0x5845E* pRSP, s16 rt, s16 offset, s16 base) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rt; // r1+0x4
|
|
// s16 offset; // r1+0x6
|
|
// s16 base; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmLUI(struct __anon_0x5845E* pRSP, s16 rt, s16 immediate) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rt; // r1+0x4
|
|
// s16 immediate; // r1+0x6
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmLW(struct __anon_0x5845E* pRSP, s16 rt, s16 offset, s16 base) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rt; // r1+0x4
|
|
// s16 offset; // r1+0x6
|
|
// s16 base; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmMFC0(struct __anon_0x5845E* pRSP, s16 rt, s16 rd) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rt; // r1+0x4
|
|
// s16 rd; // r1+0x6
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmMTC0(struct __anon_0x5845E* pRSP, s16 rt, s16 rd) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rt; // r1+0x4
|
|
// s16 rd; // r1+0x6
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmMTC2(struct __anon_0x5845E* pRSP, s16 rt, s16 vd, s16 e) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rt; // r1+0x4
|
|
// s16 vd; // r1+0x6
|
|
// s16 e; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmNOP() {}
|
|
|
|
// Erased
|
|
static s32 rspAsmOR(struct __anon_0x5845E* pRSP, s16 rd, s16 rs, s16 rt) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rd; // r1+0x4
|
|
// s16 rs; // r1+0x6
|
|
// s16 rt; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmORI(struct __anon_0x5845E* pRSP, s16 rt, s16 rs, s16 immediate) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rt; // r1+0x4
|
|
// s16 rs; // r1+0x6
|
|
// s16 immediate; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmSH(struct __anon_0x5845E* pRSP, s16 rt, s16 offset, s16 base) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rt; // r1+0x4
|
|
// s16 offset; // r1+0x6
|
|
// s16 base; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmSLL(struct __anon_0x5845E* pRSP, s16 rd, s16 rt, s16 sa) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rd; // r1+0x4
|
|
// s16 rt; // r1+0x6
|
|
// s16 sa; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmSRL(struct __anon_0x5845E* pRSP, s16 rd, s16 rt, s16 sa) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rd; // r1+0x4
|
|
// s16 rt; // r1+0x6
|
|
// s16 sa; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmSRLV(struct __anon_0x5845E* pRSP, s16 rd, s16 rt, s16 rs) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rd; // r1+0x4
|
|
// s16 rt; // r1+0x6
|
|
// s16 rs; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmSUB(struct __anon_0x5845E* pRSP, s16 rd, s16 rs, s16 rt) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rd; // r1+0x4
|
|
// s16 rs; // r1+0x6
|
|
// s16 rt; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmSW(struct __anon_0x5845E* pRSP, s16 rt, s16 offset, s16 nBase) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 rt; // r1+0x4
|
|
// s16 offset; // r1+0x6
|
|
// s16 nBase; // r1+0x8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmSSV(struct __anon_0x5845E* pRSP, s16 nVT, s16 nElement, s16 nOffset, s16 nBase) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 nVT; // r1+0x4
|
|
// s16 nElement; // r1+0x6
|
|
// s16 nOffset; // r1+0x8
|
|
// s16 nBase; // r1+0xA
|
|
|
|
// Local variables
|
|
char* pVT; // r4
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmSLV(struct __anon_0x5845E* pRSP, s16 nVT, s16 nElement, s16 nOffset, s16 nBase) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 nVT; // r1+0x4
|
|
// s16 nElement; // r1+0x6
|
|
// s16 nOffset; // r1+0x8
|
|
// s16 nBase; // r1+0xA
|
|
|
|
// Local variables
|
|
char* pVT; // r5
|
|
char* pDMEM; // r4
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmSDV(struct __anon_0x5845E* pRSP, s16 nVT, s16 nElement, s16 nOffset, s16 nBase) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 nVT; // r1+0x4
|
|
// s16 nElement; // r1+0x6
|
|
// s16 nOffset; // r1+0x8
|
|
// s16 nBase; // r1+0xA
|
|
|
|
// Local variables
|
|
char* pVT; // r5
|
|
char* pDMEM; // r4
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmSQV(struct __anon_0x5845E* pRSP, s16 nVT, s16 nElement, s16 nOffset, s16 nBase) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 nVT; // r1+0x4
|
|
// s16 nElement; // r1+0x6
|
|
// s16 nOffset; // r1+0x8
|
|
// s16 nBase; // r1+0xA
|
|
|
|
// Local variables
|
|
char* pVT; // r4
|
|
s16 i; // r3
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmLSV(struct __anon_0x5845E* pRSP, s16 nVT, s16 nElement, s16 nOffset, s16 nBase) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 nVT; // r1+0x4
|
|
// s16 nElement; // r1+0x6
|
|
// s16 nOffset; // r1+0x8
|
|
// s16 nBase; // r1+0xA
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmLDV(struct __anon_0x5845E* pRSP, s16 nVT, s16 nElement, s16 nOffset, s16 nBase) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 nVT; // r1+0x4
|
|
// s16 nElement; // r1+0x6
|
|
// s16 nOffset; // r1+0x8
|
|
// s16 nBase; // r1+0xA
|
|
|
|
// Local variables
|
|
char* pVReg; // r4
|
|
char* pDMEM; // r7
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmLPV(struct __anon_0x5845E* pRSP, s16 nVT, s16 nOffset, s16 nBase) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 nVT; // r1+0x4
|
|
// s16 nOffset; // r1+0x8
|
|
// s16 nBase; // r1+0xA
|
|
|
|
// Local variables
|
|
s32 nAddress; // r5
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmLQV(struct __anon_0x5845E* pRSP, s16 nVT, s16 nElement, s16 nOffset, s16 nBase) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 nVT; // r1+0x4
|
|
// s16 nElement; // r1+0x6
|
|
// s16 nOffset; // r1+0x8
|
|
// s16 nBase; // r1+0xA
|
|
|
|
// Local variables
|
|
char* pVT; // r9
|
|
s16 i; // r8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmLRV(struct __anon_0x5845E* pRSP, s16 nVT, s16 nElement, s16 nOffset, s16 nBase) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x0
|
|
// s16 nVT; // r1+0x4
|
|
// s16 nElement; // r1+0x6
|
|
// s16 nOffset; // r1+0x8
|
|
// s16 nBase; // r1+0xA
|
|
|
|
// Local variables
|
|
char* pVT; // r8
|
|
s16 i; // r7
|
|
s16 nStartAddress; // r8
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVAND(struct __anon_0x5845E* pRSP, s16 nVD, s16 nVS, s16 nVT, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r3
|
|
// s16 nVD; // r1+0xC
|
|
// s16 nVS; // r1+0xE
|
|
// s16 nVT; // r1+0x10
|
|
// s16 nE; // r1+0x12
|
|
|
|
// Local variables
|
|
s16 i; // r28
|
|
s16 j; // r1+0x8
|
|
s32 nResult; // r4
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVXOR(struct __anon_0x5845E* pRSP, s16 nVD, s16 nVS, s16 nVT, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r3
|
|
// s16 nVD; // r1+0xC
|
|
// s16 nVS; // r1+0xE
|
|
// s16 nVT; // r1+0x10
|
|
// s16 nE; // r1+0x12
|
|
|
|
// Local variables
|
|
s16 i; // r28
|
|
s16 j; // r1+0x8
|
|
s32 nResult; // r4
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVADD(struct __anon_0x5845E* pRSP, s16 nVD, s16 nVS, s16 nVT, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r3
|
|
// s16 nVD; // r1+0xC
|
|
// s16 nVS; // r1+0xE
|
|
// s16 nVT; // r1+0x10
|
|
// s16 nE; // r1+0x12
|
|
|
|
// Local variables
|
|
s16 i; // r30
|
|
s16 j; // r29
|
|
s32 nResult; // r24
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVADDC(struct __anon_0x5845E* pRSP, s16 nVD, s16 nVS, s16 nVT, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r3
|
|
// s16 nVD; // r1+0xC
|
|
// s16 nVS; // r1+0xE
|
|
// s16 nVT; // r1+0x10
|
|
// s16 nE; // r1+0x12
|
|
|
|
// Local variables
|
|
s16 i; // r30
|
|
s16 j; // r29
|
|
s32 nResult; // r27
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVSUB(struct __anon_0x5845E* pRSP, s16 nVD, s16 nVS, s16 nVT, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r3
|
|
// s16 nVD; // r1+0xC
|
|
// s16 nVS; // r1+0xE
|
|
// s16 nVT; // r1+0x10
|
|
// s16 nE; // r1+0x12
|
|
|
|
// Local variables
|
|
s16 i; // r30
|
|
s16 j; // r29
|
|
s32 nResult; // r24
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVSUBC(struct __anon_0x5845E* pRSP, s16 nVD, s16 nVS, s16 nVT, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r3
|
|
// s16 nVD; // r1+0xC
|
|
// s16 nVS; // r1+0xE
|
|
// s16 nVT; // r1+0x10
|
|
// s16 nE; // r1+0x12
|
|
|
|
// Local variables
|
|
s16 i; // r30
|
|
s16 j; // r29
|
|
s32 nResult; // r25
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVGE(struct __anon_0x5845E* pRSP, s16 nVD, s16 nVS, s16 nVT, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r3
|
|
// s16 nVD; // r1+0xC
|
|
// s16 nVS; // r1+0xE
|
|
// s16 nVT; // r1+0x10
|
|
// s16 nE; // r1+0x12
|
|
|
|
// Local variables
|
|
s16 i; // r28
|
|
s16 j; // r27
|
|
s32 nResult; // r24
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVCL(struct __anon_0x5845E* pRSP, s16 nVD, s16 nVS, s16 nVT, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r22
|
|
// s16 nVD; // r1+0xC
|
|
// s16 nVS; // r1+0xE
|
|
// s16 nVT; // r1+0x10
|
|
// s16 nE; // r1+0x12
|
|
|
|
// Local variables
|
|
s16 nLE; // r27
|
|
s16 nGE; // r26
|
|
s16 nEQ; // r25
|
|
s16 nCarry; // r21
|
|
s16 i; // r24
|
|
s16 j; // r23
|
|
s16 nDI; // r25
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVMADM(struct __anon_0x5845E* pRSP, s16 nVD, s16 nVS, s16 nVT, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x40
|
|
// s16 nVD; // r1+0x44
|
|
// s16 nVS; // r1+0xE
|
|
// s16 nVT; // r1+0x10
|
|
// s16 nE; // r1+0x12
|
|
|
|
// Local variables
|
|
s32 i; // r26
|
|
s32 j; // r25
|
|
s64 product; // r30
|
|
s16 buffer[8]; // r1+0x1C
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVMADN(struct __anon_0x5845E* pRSP, s16 nVD, s16 nVS, s16 nVT, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x40
|
|
// s16 nVD; // r1+0x44
|
|
// s16 nVS; // r1+0xE
|
|
// s16 nVT; // r1+0x10
|
|
// s16 nE; // r1+0x12
|
|
|
|
// Local variables
|
|
s32 i; // r26
|
|
s32 j; // r25
|
|
s64 product; // r30
|
|
s16 buffer[8]; // r1+0x1C
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVMADH(struct __anon_0x5845E* pRSP, s16 nVD, s16 nVS, s16 nVT, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x40
|
|
// s16 nVD; // r1+0x44
|
|
// s16 nVS; // r1+0xE
|
|
// s16 nVT; // r1+0x10
|
|
// s16 nE; // r1+0x12
|
|
|
|
// Local variables
|
|
s32 i; // r26
|
|
s32 j; // r25
|
|
s64 product; // r30
|
|
s16 buffer[8]; // r1+0x1C
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVMADL(struct __anon_0x5845E* pRSP, s16 nVD, s16 nVS, s16 nVT, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x40
|
|
// s16 nVD; // r1+0x44
|
|
// s16 nVS; // r1+0xE
|
|
// s16 nVT; // r1+0x10
|
|
// s16 nE; // r1+0x12
|
|
|
|
// Local variables
|
|
s32 i; // r26
|
|
s32 j; // r25
|
|
s64 product; // r1+0x8
|
|
s16 buffer[8]; // r1+0x1C
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVMUDH(struct __anon_0x5845E* pRSP, s16 nVD, s16 nVS, s16 nVT, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x38
|
|
// s16 nVD; // r1+0x3C
|
|
// s16 nVS; // r1+0xE
|
|
// s16 nVT; // r1+0x10
|
|
// s16 nE; // r1+0x12
|
|
|
|
// Local variables
|
|
s32 i; // r28
|
|
s32 j; // r25
|
|
s64 product; // r30
|
|
s16 buffer[8]; // r1+0x1C
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVMUDL(struct __anon_0x5845E* pRSP, s16 nVD, s16 nVS, s16 nVT, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x38
|
|
// s16 nVD; // r1+0x3C
|
|
// s16 nVS; // r1+0xE
|
|
// s16 nVT; // r1+0x10
|
|
// s16 nE; // r1+0x12
|
|
|
|
// Local variables
|
|
s32 i; // r28
|
|
s32 j; // r25
|
|
s64 product; // r1+0x8
|
|
s16 buffer[8]; // r1+0x1C
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVMUDM(struct __anon_0x5845E* pRSP, s16 nVD, s16 nVS, s16 nVT, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x38
|
|
// s16 nVD; // r1+0x3C
|
|
// s16 nVS; // r1+0xE
|
|
// s16 nVT; // r1+0x10
|
|
// s16 nE; // r1+0x12
|
|
|
|
// Local variables
|
|
s32 i; // r28
|
|
s32 j; // r25
|
|
s64 product; // r30
|
|
s16 buffer[8]; // r1+0x1C
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVMUDN(struct __anon_0x5845E* pRSP, s16 nVD, s16 nVS, s16 nVT, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x38
|
|
// s16 nVD; // r1+0x3C
|
|
// s16 nVS; // r1+0xE
|
|
// s16 nVT; // r1+0x10
|
|
// s16 nE; // r1+0x12
|
|
|
|
// Local variables
|
|
s32 i; // r28
|
|
s32 j; // r25
|
|
s64 product; // r30
|
|
s16 buffer[8]; // r1+0x1C
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVMULF(struct __anon_0x5845E* pRSP, s16 nVD, s16 nVS, s16 nVT, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x38
|
|
// s16 nVD; // r1+0x3C
|
|
// s16 nVS; // r1+0xE
|
|
// s16 nVT; // r1+0x10
|
|
// s16 nE; // r1+0x12
|
|
|
|
// Local variables
|
|
s32 i; // r28
|
|
s32 j; // r25
|
|
s64 product; // r30
|
|
s16 buffer[8]; // r1+0x1C
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVMACF(struct __anon_0x5845E* pRSP, s16 nVD, s16 nVS, s16 nVT, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x40
|
|
// s16 nVD; // r1+0x44
|
|
// s16 nVS; // r1+0xE
|
|
// s16 nVT; // r1+0x10
|
|
// s16 nE; // r1+0x12
|
|
|
|
// Local variables
|
|
s32 i; // r26
|
|
s32 j; // r25
|
|
s64 product; // r30
|
|
s16 buffer[8]; // r1+0x1C
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspAsmVSAR(struct __anon_0x5845E* pRSP, s16 nVD, s16 nE) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r3
|
|
// s16 nVD; // r1+0x4
|
|
// s16 nE; // r1+0xA
|
|
|
|
// Local variables
|
|
s16 i; // r6
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspDMARead(struct __anon_0x5845E* pRSP, s32 nDMEMAddress, s32 nRDRAMAddress, s32 nLength) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x8
|
|
// s32 nDMEMAddress; // r1+0xC
|
|
// s32 nRDRAMAddress; // r1+0x10
|
|
// s32 nLength; // r30
|
|
|
|
// Local variables
|
|
s32 i; // r5
|
|
s32 nAddress; // r5
|
|
s16* pDMEM; // r31
|
|
s16* pRDRAM; // r6
|
|
void* pData; // r1+0x1C
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspDMAWrite(struct __anon_0x5845E* pRSP, s32 nDMEMAddress, s32 nRDRAMAddress, s32 nLength) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r1+0x8
|
|
// s32 nDMEMAddress; // r1+0xC
|
|
// s32 nRDRAMAddress; // r1+0x10
|
|
// s32 nLength; // r31
|
|
|
|
// Local variables
|
|
s32 i; // r5
|
|
s32 nAddress; // r5
|
|
s16* pDMEM; // r30
|
|
s16* pRDRAM; // r6
|
|
void* pData; // r1+0x1C
|
|
}
|
|
|
|
// Erased
|
|
static s32 rspDisassemble(struct __anon_0x5845E* pRSP, struct __anon_0x575BD* pTask) {
|
|
// Parameters
|
|
// struct __anon_0x5845E* pRSP; // r22
|
|
// struct __anon_0x575BD* pTask; // r19
|
|
|
|
// Local variables
|
|
struct tXL_FILE* pIMEMFile; // r1+0x105C
|
|
s32 i; // r27
|
|
s32 h; // r20
|
|
s32 nCodeAddress; // r7
|
|
s32 nDataAddress; // r9
|
|
s32 nFound; // r24
|
|
u32 nOutData; // r31
|
|
void* pCode; // r1+0x1058
|
|
void* pData; // r1+0x1054
|
|
u32 nRS; // r7
|
|
u32 nRT; // r20
|
|
u32 nRD; // r21
|
|
u32 nSA; // r19
|
|
u32 nOffset; // r6
|
|
u32 nTarget; // r5
|
|
u32 nE; // r7
|
|
u32 nVT; // r7
|
|
u32 nVS; // r6
|
|
u32 nVD; // r5
|
|
u32 nDE; // r6
|
|
u32 nBase; // r7
|
|
u32 nElement; // r6
|
|
u32 nSize; // r1+0x1048
|
|
s32 nImmediate; // r7
|
|
s32 nCount; // r29
|
|
char acOp[8]; // r1+0x1040
|
|
char acTemp[8]; // r1+0x1038
|
|
char acOpString[8]; // r1+0x1030
|
|
char acTempString[128]; // r1+0xFB0
|
|
char acOpList[500][8]; // r1+0x10
|
|
s32 nFirst; // r23
|
|
}
|