Same general cleanups (mostly to the VU interpreters), but on trunk this time. :) Also Fixes Issue 417 (I hope)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1900 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
Jake.Stine 2009-09-21 14:19:49 +00:00
parent fdbabaa11c
commit f460985004
12 changed files with 147 additions and 159 deletions

View File

@ -618,7 +618,7 @@ typedef s32 (CALLBACK* _CDVDctrlTrayClose)();
typedef s32 (CALLBACK* _CDVDreadSector)(u8* buffer, u32 lsn, int mode); typedef s32 (CALLBACK* _CDVDreadSector)(u8* buffer, u32 lsn, int mode);
typedef s32 (CALLBACK* _CDVDgetDualInfo)(s32* dualType, u32* _layer1start); typedef s32 (CALLBACK* _CDVDgetDualInfo)(s32* dualType, u32* _layer1start);
typedef void (CALLBACK* _CDVDnewDiskCB)(void (CALLBACK* callback)()); typedef void (CALLBACK* _CDVDnewDiskCB)(void (*callback)());
// DEV9 // DEV9

View File

@ -514,7 +514,7 @@ void cdvdDetectDisk()
} }
} }
void CALLBACK cdvdNewDiskCB() void cdvdNewDiskCB()
{ {
DoCDVDresetDiskTypeCache(); DoCDVDresetDiskTypeCache();

View File

@ -138,6 +138,6 @@ extern void cdvdReadInterrupt();
// We really should not have a function with the exact same name as a callback except for case! // We really should not have a function with the exact same name as a callback except for case!
extern void cdvdDetectDisk(); extern void cdvdDetectDisk();
extern void CALLBACK cdvdNewDiskCB(); extern void cdvdNewDiskCB();
extern u8 cdvdRead(u8 key); extern u8 cdvdRead(u8 key);
extern void cdvdWrite(u8 key, u8 rt); extern void cdvdWrite(u8 key, u8 rt);

View File

@ -396,7 +396,7 @@ s32 CALLBACK ISOdummyS32()
return 0; return 0;
} }
void CALLBACK ISOnewDiskCB(void(CALLBACK*)()) void CALLBACK ISOnewDiskCB(__unused void(*callback)())
{ {
} }

View File

@ -180,16 +180,5 @@ PCSX2_ALIGNED16_EXTERN(VURegs VU0);
#define VU1 (*g_pVU1) #define VU1 (*g_pVU1)
extern u32* GET_VU_MEM(VURegs* VU, u32 addr);
#ifdef _WIN32
extern __forceinline u32* GET_VU_MEM(VURegs* VU, u32 addr)
#else
static __forceinline u32* GET_VU_MEM(VURegs* VU, u32 addr)
#endif
{
if( VU == g_pVU1 ) return (u32*)(VU1.Mem+(addr&0x3fff));
if( addr >= 0x4000 ) return (u32*)(VU0.Mem+(addr&0x43f0)); // get VF and VI regs (they're mapped to 0x4xx0 in VU0 mem!)
return (u32*)(VU0.Mem+(addr&0x0fff)); // for addr 0x0000 to 0x4000 just wrap around
}

View File

@ -13,7 +13,6 @@
* If not, see <http://www.gnu.org/licenses/>. * If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "PrecompiledHeader.h" #include "PrecompiledHeader.h"
#include <cmath> #include <cmath>
@ -26,7 +25,7 @@
/*****************************************/ /*****************************************/
__inline void vuUpdateDI(VURegs * VU) { void vuUpdateDI(VURegs * VU) {
// u32 Flag_S = 0; // u32 Flag_S = 0;
// u32 Flag_I = 0; // u32 Flag_I = 0;
// u32 Flag_D = 0; // u32 Flag_D = 0;
@ -41,7 +40,7 @@ __inline void vuUpdateDI(VURegs * VU) {
// VU->statusflag|= (Flag_D | (VU0.VI[REG_STATUS_FLAG].US[0] >> 5)) << 11; // VU->statusflag|= (Flag_D | (VU0.VI[REG_STATUS_FLAG].US[0] >> 5)) << 11;
} }
__forceinline u32 VU_MAC_UPDATE( int shift, VURegs * VU, float f) static __releaseinline u32 VU_MAC_UPDATE( int shift, VURegs * VU, float f )
{ {
u32 v = *(u32*)&f; u32 v = *(u32*)&f;
int exp = (v >> 23) & 0xff; int exp = (v >> 23) & 0xff;
@ -112,7 +111,7 @@ __forceinline void VU_MACw_CLEAR(VURegs * VU)
VU->macflag&= ~(0x1111<<0); VU->macflag&= ~(0x1111<<0);
} }
void VU_STAT_UPDATE(VURegs * VU) { __releaseinline void VU_STAT_UPDATE(VURegs * VU) {
int newflag = 0 ; int newflag = 0 ;
if (VU->macflag & 0x000F) newflag = 0x1; if (VU->macflag & 0x000F) newflag = 0x1;
if (VU->macflag & 0x00F0) newflag |= 0x2; if (VU->macflag & 0x00F0) newflag |= 0x2;

View File

@ -16,15 +16,12 @@
#pragma once #pragma once
#include "VU.h" #include "VU.h"
void vuUpdateDI(VURegs * VU); extern u32 VU_MACx_UPDATE(VURegs * VU, float x);
__forceinline u32 VU_MAC_UPDATE( int shift, VURegs * VU, float f); extern u32 VU_MACy_UPDATE(VURegs * VU, float y);
__forceinline u32 VU_MACx_UPDATE(VURegs * VU, float x); extern u32 VU_MACz_UPDATE(VURegs * VU, float z);
__forceinline u32 VU_MACy_UPDATE(VURegs * VU, float y); extern u32 VU_MACw_UPDATE(VURegs * VU, float w);
__forceinline u32 VU_MACz_UPDATE(VURegs * VU, float z); extern void VU_MACx_CLEAR(VURegs * VU);
__forceinline u32 VU_MACw_UPDATE(VURegs * VU, float w); extern void VU_MACy_CLEAR(VURegs * VU);
__forceinline void VU_MACx_CLEAR(VURegs * VU); extern void VU_MACz_CLEAR(VURegs * VU);
__forceinline void VU_MACy_CLEAR(VURegs * VU); extern void VU_MACw_CLEAR(VURegs * VU);
__forceinline void VU_MACz_CLEAR(VURegs * VU); extern void VU_STAT_UPDATE(VURegs * VU);
__forceinline void VU_MACw_CLEAR(VURegs * VU);
void VU_STAT_UPDATE(VURegs * VU);

View File

@ -13,7 +13,6 @@
* If not, see <http://www.gnu.org/licenses/>. * If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "PrecompiledHeader.h" #include "PrecompiledHeader.h"
#include <cmath> #include <cmath>
@ -46,9 +45,9 @@
#define _UImm11_ (s32)(VU->code & 0x7ff) #define _UImm11_ (s32)(VU->code & 0x7ff)
VECTOR RDzero; static PCSX2_ALIGNED16( VECTOR RDzero );
void _vuFMACflush(VURegs * VU) { static __releaseinline void __fastcall _vuFMACflush(VURegs * VU) {
int i; int i;
for (i=0; i<8; i++) { for (i=0; i<8; i++) {
@ -65,7 +64,7 @@ void _vuFMACflush(VURegs * VU) {
} }
} }
void _vuFDIVflush(VURegs * VU) { static __releaseinline void __fastcall _vuFDIVflush(VURegs * VU) {
if (VU->fdiv.enable == 0) return; if (VU->fdiv.enable == 0) return;
if ((VU->cycle - VU->fdiv.sCycle) >= VU->fdiv.Cycle) { if ((VU->cycle - VU->fdiv.sCycle) >= VU->fdiv.Cycle) {
@ -77,7 +76,7 @@ void _vuFDIVflush(VURegs * VU) {
} }
} }
void _vuEFUflush(VURegs * VU) { static __releaseinline void __fastcall _vuEFUflush(VURegs * VU) {
if (VU->efu.enable == 0) return; if (VU->efu.enable == 0) return;
if ((VU->cycle - VU->efu.sCycle) >= VU->efu.Cycle) { if ((VU->cycle - VU->efu.sCycle) >= VU->efu.Cycle) {
@ -143,13 +142,13 @@ void _vuFlushAll(VURegs* VU)
} while(nRepeat); } while(nRepeat);
} }
void _vuTestPipes(VURegs * VU) { __forceinline void _vuTestPipes(VURegs * VU) {
_vuFMACflush(VU); _vuFMACflush(VU);
_vuFDIVflush(VU); _vuFDIVflush(VU);
_vuEFUflush(VU); _vuEFUflush(VU);
} }
void _vuFMACTestStall(VURegs * VU, int reg, int xyzw) { static void __fastcall _vuFMACTestStall(VURegs * VU, int reg, int xyzw) {
int cycle; int cycle;
int i; int i;
@ -172,7 +171,7 @@ void _vuFMACTestStall(VURegs * VU, int reg, int xyzw) {
_vuTestPipes(VU); _vuTestPipes(VU);
} }
void _vuFMACAdd(VURegs * VU, int reg, int xyzw) { static __releaseinline void __fastcall _vuFMACAdd(VURegs * VU, int reg, int xyzw) {
int i; int i;
/* find a free fmac pipe */ /* find a free fmac pipe */
@ -195,7 +194,7 @@ void _vuFMACAdd(VURegs * VU, int reg, int xyzw) {
VU->fmac[i].clipflag = VU->clipflag; VU->fmac[i].clipflag = VU->clipflag;
} }
void _vuFDIVAdd(VURegs * VU, int cycles) { static __releaseinline void __fastcall _vuFDIVAdd(VURegs * VU, int cycles) {
VUM_LOG("adding FDIV pipe"); VUM_LOG("adding FDIV pipe");
VU->fdiv.enable = 1; VU->fdiv.enable = 1;
@ -205,7 +204,7 @@ void _vuFDIVAdd(VURegs * VU, int cycles) {
VU->fdiv.statusflag = VU->statusflag; VU->fdiv.statusflag = VU->statusflag;
} }
void _vuEFUAdd(VURegs * VU, int cycles) { static __releaseinline void __fastcall _vuEFUAdd(VURegs * VU, int cycles) {
// VUM_LOG("adding EFU pipe\n"); // VUM_LOG("adding EFU pipe\n");
VU->efu.enable = 1; VU->efu.enable = 1;
@ -214,7 +213,7 @@ void _vuEFUAdd(VURegs * VU, int cycles) {
VU->efu.reg.F = VU->p.F; VU->efu.reg.F = VU->p.F;
} }
void _vuFlushFDIV(VURegs * VU) { static __releaseinline void __fastcall _vuFlushFDIV(VURegs * VU) {
int cycle; int cycle;
if (VU->fdiv.enable == 0) return; if (VU->fdiv.enable == 0) return;
@ -228,7 +227,7 @@ void _vuFlushFDIV(VURegs * VU) {
VU->VI[REG_STATUS_FLAG].UL = VU->fdiv.statusflag; VU->VI[REG_STATUS_FLAG].UL = VU->fdiv.statusflag;
} }
void _vuFlushEFU(VURegs * VU) { static __releaseinline void __fastcall _vuFlushEFU(VURegs * VU) {
int cycle; int cycle;
if (VU->efu.enable == 0) return; if (VU->efu.enable == 0) return;
@ -241,7 +240,7 @@ void _vuFlushEFU(VURegs * VU) {
VU->VI[REG_P].UL = VU->efu.reg.UL; VU->VI[REG_P].UL = VU->efu.reg.UL;
} }
void _vuTestFMACStalls(VURegs * VU, _VURegsNum *VUregsn) { __forceinline void _vuTestFMACStalls(VURegs * VU, _VURegsNum *VUregsn) {
if (VUregsn->VFread0) { if (VUregsn->VFread0) {
_vuFMACTestStall(VU, VUregsn->VFread0, VUregsn->VFr0xyzw); _vuFMACTestStall(VU, VUregsn->VFread0, VUregsn->VFr0xyzw);
} }
@ -250,7 +249,7 @@ void _vuTestFMACStalls(VURegs * VU, _VURegsNum *VUregsn) {
} }
} }
void _vuAddFMACStalls(VURegs * VU, _VURegsNum *VUregsn) { __forceinline void _vuAddFMACStalls(VURegs * VU, _VURegsNum *VUregsn) {
if (VUregsn->VFwrite) { if (VUregsn->VFwrite) {
_vuFMACAdd(VU, VUregsn->VFwrite, VUregsn->VFwxyzw); _vuFMACAdd(VU, VUregsn->VFwrite, VUregsn->VFwxyzw);
} else } else
@ -261,36 +260,36 @@ void _vuAddFMACStalls(VURegs * VU, _VURegsNum *VUregsn) {
} }
} }
void _vuTestFDIVStalls(VURegs * VU, _VURegsNum *VUregsn) { __forceinline void _vuTestFDIVStalls(VURegs * VU, _VURegsNum *VUregsn) {
// _vuTestFMACStalls(VURegs * VU, _VURegsNum *VUregsn); // _vuTestFMACStalls(VURegs * VU, _VURegsNum *VUregsn);
_vuFlushFDIV(VU); _vuFlushFDIV(VU);
} }
void _vuAddFDIVStalls(VURegs * VU, _VURegsNum *VUregsn) { __forceinline void _vuAddFDIVStalls(VURegs * VU, _VURegsNum *VUregsn) {
if (VUregsn->VIwrite & (1 << REG_Q)) { if (VUregsn->VIwrite & (1 << REG_Q)) {
_vuFDIVAdd(VU, VUregsn->cycles); _vuFDIVAdd(VU, VUregsn->cycles);
} }
} }
void _vuTestEFUStalls(VURegs * VU, _VURegsNum *VUregsn) { __forceinline void _vuTestEFUStalls(VURegs * VU, _VURegsNum *VUregsn) {
// _vuTestFMACStalls(VURegs * VU, _VURegsNum *VUregsn); // _vuTestFMACStalls(VURegs * VU, _VURegsNum *VUregsn);
_vuFlushEFU(VU); _vuFlushEFU(VU);
} }
void _vuAddEFUStalls(VURegs * VU, _VURegsNum *VUregsn) { __forceinline void _vuAddEFUStalls(VURegs * VU, _VURegsNum *VUregsn) {
if (VUregsn->VIwrite & (1 << REG_P)) { if (VUregsn->VIwrite & (1 << REG_P)) {
_vuEFUAdd(VU, VUregsn->cycles); _vuEFUAdd(VU, VUregsn->cycles);
} }
} }
void _vuTestUpperStalls(VURegs * VU, _VURegsNum *VUregsn) { __forceinline void _vuTestUpperStalls(VURegs * VU, _VURegsNum *VUregsn) {
switch (VUregsn->pipe) { switch (VUregsn->pipe) {
case VUPIPE_FMAC: _vuTestFMACStalls(VU, VUregsn); break; case VUPIPE_FMAC: _vuTestFMACStalls(VU, VUregsn); break;
} }
} }
void _vuTestLowerStalls(VURegs * VU, _VURegsNum *VUregsn) { __forceinline void _vuTestLowerStalls(VURegs * VU, _VURegsNum *VUregsn) {
switch (VUregsn->pipe) { switch (VUregsn->pipe) {
case VUPIPE_FMAC: _vuTestFMACStalls(VU, VUregsn); break; case VUPIPE_FMAC: _vuTestFMACStalls(VU, VUregsn); break;
case VUPIPE_FDIV: _vuTestFDIVStalls(VU, VUregsn); break; case VUPIPE_FDIV: _vuTestFDIVStalls(VU, VUregsn); break;
@ -298,13 +297,13 @@ void _vuTestLowerStalls(VURegs * VU, _VURegsNum *VUregsn) {
} }
} }
void _vuAddUpperStalls(VURegs * VU, _VURegsNum *VUregsn) { __forceinline void _vuAddUpperStalls(VURegs * VU, _VURegsNum *VUregsn) {
switch (VUregsn->pipe) { switch (VUregsn->pipe) {
case VUPIPE_FMAC: _vuAddFMACStalls(VU, VUregsn); break; case VUPIPE_FMAC: _vuAddFMACStalls(VU, VUregsn); break;
} }
} }
void _vuAddLowerStalls(VURegs * VU, _VURegsNum *VUregsn) { __forceinline void _vuAddLowerStalls(VURegs * VU, _VURegsNum *VUregsn) {
switch (VUregsn->pipe) { switch (VUregsn->pipe) {
case VUPIPE_FMAC: _vuAddFMACStalls(VU, VUregsn); break; case VUPIPE_FMAC: _vuAddFMACStalls(VU, VUregsn); break;
case VUPIPE_FDIV: _vuAddFDIVStalls(VU, VUregsn); break; case VUPIPE_FDIV: _vuAddFDIVStalls(VU, VUregsn); break;
@ -317,7 +316,7 @@ void _vuAddLowerStalls(VURegs * VU, _VURegsNum *VUregsn) {
/* VU Upper instructions */ /* VU Upper instructions */
/******************************/ /******************************/
#ifndef INT_VUDOUBLEHACK #ifndef INT_VUDOUBLEHACK
float vuDouble(u32 f) static float __fastcall vuDouble(u32 f)
{ {
switch(f & 0x7f800000){ switch(f & 0x7f800000){
case 0x0: case 0x0:
@ -337,7 +336,7 @@ float vuDouble(u32 f)
} }
} }
#else #else
float vuDouble(u32 f) static __forceinline float vuDouble(u32 f)
{ {
return *(float*)&f; return *(float*)&f;
} }
@ -1578,6 +1577,17 @@ void _vuMR32(VURegs * VU) {
if (_W) VU->VF[_Ft_].i.w = tx; if (_W) VU->VF[_Ft_].i.w = tx;
}//last updated 23/10/03 linuzappz }//last updated 23/10/03 linuzappz
// --------------------------------------------------------------------------------------
// Load / Store Instructions (VU Interpreter)
// --------------------------------------------------------------------------------------
__forceinline u32* GET_VU_MEM(VURegs* VU, u32 addr) // non-static, also used by sVU for now.
{
if( VU == g_pVU1 ) return (u32*)(VU1.Mem+(addr&0x3fff));
if( addr >= 0x4000 ) return (u32*)(VU0.Mem+(addr&0x43f0)); // get VF and VI regs (they're mapped to 0x4xx0 in VU0 mem!)
return (u32*)(VU0.Mem+(addr&0x0fff)); // for addr 0x0000 to 0x4000 just wrap around
}
void _vuLQ(VURegs * VU) { void _vuLQ(VURegs * VU) {
s16 imm; s16 imm;
u16 addr; u16 addr;

View File

@ -15,16 +15,7 @@
#pragma once #pragma once
#include "VU.h" #include "VU.h"
#include "VUflags.h"
extern __forceinline u32 VU_MAC_UPDATE( int shift, VURegs * VU, float f);
extern __forceinline u32 VU_MACx_UPDATE(VURegs * VU, float x);
extern __forceinline u32 VU_MACy_UPDATE(VURegs * VU, float y);
extern __forceinline u32 VU_MACz_UPDATE(VURegs * VU, float z);
extern __forceinline u32 VU_MACw_UPDATE(VURegs * VU, float w);
extern __forceinline void VU_MACx_CLEAR(VURegs * VU);
extern __forceinline void VU_MACy_CLEAR(VURegs * VU);
extern __forceinline void VU_MACz_CLEAR(VURegs * VU);
extern __forceinline void VU_MACw_CLEAR(VURegs * VU);
#define float_to_int4(x) (s32)((float)x * (1.0f / 0.0625f)) #define float_to_int4(x) (s32)((float)x * (1.0f / 0.0625f))
#define float_to_int12(x) (s32)((float)x * (1.0f / 0.000244140625f)) #define float_to_int12(x) (s32)((float)x * (1.0f / 0.000244140625f))
@ -36,14 +27,11 @@ extern __forceinline void VU_MACw_CLEAR(VURegs * VU);
#define MAC_Reset( VU ) VU->VI[REG_MAC_FLAG].UL = VU->VI[REG_MAC_FLAG].UL & (~0xFFFF) #define MAC_Reset( VU ) VU->VI[REG_MAC_FLAG].UL = VU->VI[REG_MAC_FLAG].UL & (~0xFFFF)
void _vuSetCycleFlags(VURegs * VU); extern void _vuTestPipes(VURegs * VU);
void _vuFlushFDIV(VURegs * VU); extern void _vuTestUpperStalls(VURegs * VU, _VURegsNum *VUregsn);
void _vuFlushEFU(VURegs * VU); extern void _vuTestLowerStalls(VURegs * VU, _VURegsNum *VUregsn);
void _vuTestPipes(VURegs * VU); extern void _vuAddUpperStalls(VURegs * VU, _VURegsNum *VUregsn);
void _vuTestUpperStalls(VURegs * VU, _VURegsNum *VUregsn); extern void _vuAddLowerStalls(VURegs * VU, _VURegsNum *VUregsn);
void _vuTestLowerStalls(VURegs * VU, _VURegsNum *VUregsn);
void _vuAddUpperStalls(VURegs * VU, _VURegsNum *VUregsn);
void _vuAddLowerStalls(VURegs * VU, _VURegsNum *VUregsn);
/******************************/ /******************************/
/* VU Upper instructions */ /* VU Upper instructions */

View File

@ -48,7 +48,92 @@ __forceinline static int _limit(int a, int max)
{ {
return (a > max) ? max : a; return (a > max) ? max : a;
} }
static __forceinline u32 setVifRowRegs(u32 reg, u32 data)
{
switch (reg)
{
case 0:
vifRegs->r0 = data;
break;
case 1:
vifRegs->r1 = data;
break;
case 2:
vifRegs->r2 = data;
break;
case 3:
vifRegs->r3 = data;
break;
jNO_DEFAULT;
}
return data;
}
static __forceinline u32 getVifRowRegs(u32 reg)
{
switch (reg)
{
case 0:
return vifRegs->r0;
break;
case 1:
return vifRegs->r1;
break;
case 2:
return vifRegs->r2;
break;
case 3:
return vifRegs->r3;
break;
jNO_DEFAULT;
}
return 0; // unreachable...
}
static __forceinline u32 setVifColRegs(u32 reg, u32 data)
{
switch (reg)
{
case 0:
vifRegs->c0 = data;
break;
case 1:
vifRegs->c1 = data;
break;
case 2:
vifRegs->c2 = data;
break;
case 3:
vifRegs->c3 = data;
break;
jNO_DEFAULT;
}
return data;
}
static __forceinline u32 getVifColRegs(u32 reg)
{
switch (reg)
{
case 0:
return vifRegs->c0;
break;
case 1:
return vifRegs->c1;
break;
case 2:
return vifRegs->c2;
break;
case 3:
return vifRegs->c3;
break;
jNO_DEFAULT;
}
return 0; // unreachable...
}
static __releaseinline void writeXYZW(u32 offnum, u32 &dest, u32 data) static __releaseinline void writeXYZW(u32 offnum, u32 &dest, u32 data)
{ {
int n; int n;

View File

@ -148,89 +148,10 @@ extern "C"
extern u32* _vifCol; extern u32* _vifCol;
} }
static __forceinline u32 setVifRowRegs(u32 reg, u32 data) //extern u32 setVifRowRegs(u32 reg, u32 data);
{ //extern u32 getVifRowRegs(u32 reg);
switch (reg) //extern u32 setVifColRegs(u32 reg, u32 data);
{ //extern u32 getVifColRegs(u32 reg);
case 0:
vifRegs->r0 = data;
break;
case 1:
vifRegs->r1 = data;
break;
case 2:
vifRegs->r2 = data;
break;
case 3:
vifRegs->r3 = data;
break;
jNO_DEFAULT;
}
return data;
}
static __forceinline u32 getVifRowRegs(u32 reg)
{
switch (reg)
{
case 0:
return vifRegs->r0;
break;
case 1:
return vifRegs->r1;
break;
case 2:
return vifRegs->r2;
break;
case 3:
return vifRegs->r3;
break;
jNO_DEFAULT;
}
return 0; // unreachable...
}
static __forceinline u32 setVifColRegs(u32 reg, u32 data)
{
switch (reg)
{
case 0:
vifRegs->c0 = data;
break;
case 1:
vifRegs->c1 = data;
break;
case 2:
vifRegs->c2 = data;
break;
case 3:
vifRegs->c3 = data;
break;
jNO_DEFAULT;
}
return data;
}
static __forceinline u32 getVifColRegs(u32 reg)
{
switch (reg)
{
case 0:
return vifRegs->c0;
break;
case 1:
return vifRegs->c1;
break;
case 2:
return vifRegs->c2;
break;
case 3:
return vifRegs->c3;
break;
jNO_DEFAULT;
}
return 0; // unreachable...
}
#define vif0Regs ((VIFregisters*)&PS2MEM_HW[0x3800]) #define vif0Regs ((VIFregisters*)&PS2MEM_HW[0x3800])
#define vif1Regs ((VIFregisters*)&PS2MEM_HW[0x3c00]) #define vif1Regs ((VIFregisters*)&PS2MEM_HW[0x3c00])

View File

@ -23,7 +23,6 @@
#include "iFPU.h" #include "iFPU.h"
#include "iCOP0.h" #include "iCOP0.h"
#include "VUmicro.h" #include "VUmicro.h"
#include "VUflags.h"
#include "sVU_Micro.h" #include "sVU_Micro.h"
#include "sVU_Debug.h" #include "sVU_Debug.h"
#include "sVU_zerorec.h" #include "sVU_zerorec.h"