mirror of https://github.com/PCSX2/pcsx2.git
Since WriteLn is used for logging, and it automatically appends newlines, remove a bunch of legacy newlines from various logging functions.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@844 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
4ea9d9292f
commit
007c34a8b0
119
pcsx2/CDVD.cpp
119
pcsx2/CDVD.cpp
|
@ -831,11 +831,11 @@ void mechaDecryptBytes( u32 madr, int size )
|
||||||
int cdvdReadSector() {
|
int cdvdReadSector() {
|
||||||
s32 bcr;
|
s32 bcr;
|
||||||
|
|
||||||
CDR_LOG("SECTOR %d (BCR %x;%x)\n", cdvd.Sector, HW_DMA3_BCR_H16, HW_DMA3_BCR_L16);
|
CDR_LOG("SECTOR %d (BCR %x;%x)", cdvd.Sector, HW_DMA3_BCR_H16, HW_DMA3_BCR_L16);
|
||||||
|
|
||||||
bcr = (HW_DMA3_BCR_H16 * HW_DMA3_BCR_L16) *4;
|
bcr = (HW_DMA3_BCR_H16 * HW_DMA3_BCR_L16) *4;
|
||||||
if (bcr < cdvd.BlockSize) {
|
if (bcr < cdvd.BlockSize) {
|
||||||
CDR_LOG( "READBLOCK: bcr < cdvd.BlockSize; %x < %x\n", bcr, cdvd.BlockSize );
|
CDR_LOG( "READBLOCK: bcr < cdvd.BlockSize; %x < %x", bcr, cdvd.BlockSize );
|
||||||
if (HW_DMA3_CHCR & 0x01000000) {
|
if (HW_DMA3_CHCR & 0x01000000) {
|
||||||
HW_DMA3_CHCR &= ~0x01000000;
|
HW_DMA3_CHCR &= ~0x01000000;
|
||||||
psxDmaInterrupt(3);
|
psxDmaInterrupt(3);
|
||||||
|
@ -907,8 +907,7 @@ int cdvdReadSector() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// decrypt sector's bytes
|
// decrypt sector's bytes
|
||||||
if( cdvd.decSet )
|
if( cdvd.decSet ) mechaDecryptBytes( HW_DMA3_MADR, cdvd.BlockSize );
|
||||||
mechaDecryptBytes( HW_DMA3_MADR, cdvd.BlockSize );
|
|
||||||
|
|
||||||
// Added a clear after memory write .. never seemed to be necessary before but *should*
|
// Added a clear after memory write .. never seemed to be necessary before but *should*
|
||||||
// be more correct. (air)
|
// be more correct. (air)
|
||||||
|
@ -980,7 +979,7 @@ __forceinline void cdvdReadInterrupt()
|
||||||
cdvd.Status = CDVD_STATUS_SEEK_COMPLETE;
|
cdvd.Status = CDVD_STATUS_SEEK_COMPLETE;
|
||||||
cdvd.Sector = cdvd.SeekToSector;
|
cdvd.Sector = cdvd.SeekToSector;
|
||||||
|
|
||||||
CDR_LOG( "Cdvd Seek Complete > Scheduling block read interrupt at iopcycle=%8.8x.\n",
|
CDR_LOG( "Cdvd Seek Complete > Scheduling block read interrupt at iopcycle=%8.8x.",
|
||||||
psxRegs.cycle + cdvd.ReadTime );
|
psxRegs.cycle + cdvd.ReadTime );
|
||||||
|
|
||||||
CDVDREAD_INT(cdvd.ReadTime);
|
CDVDREAD_INT(cdvd.ReadTime);
|
||||||
|
@ -1068,93 +1067,93 @@ void cdvdVsync() {
|
||||||
|
|
||||||
|
|
||||||
u8 cdvdRead04(void) { // NCOMMAND
|
u8 cdvdRead04(void) { // NCOMMAND
|
||||||
CDR_LOG("cdvdRead04(NCMD) %x\n", cdvd.nCommand);
|
CDR_LOG("cdvdRead04(NCMD) %x", cdvd.nCommand);
|
||||||
|
|
||||||
return cdvd.nCommand;
|
return cdvd.nCommand;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead05(void) { // N-READY
|
u8 cdvdRead05(void) { // N-READY
|
||||||
CDR_LOG("cdvdRead05(NReady) %x\n", cdvd.Ready);
|
CDR_LOG("cdvdRead05(NReady) %x", cdvd.Ready);
|
||||||
|
|
||||||
return cdvd.Ready;
|
return cdvd.Ready;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead06(void) { // ERROR
|
u8 cdvdRead06(void) { // ERROR
|
||||||
CDR_LOG("cdvdRead06(Error) %x\n", cdvd.Error);
|
CDR_LOG("cdvdRead06(Error) %x", cdvd.Error);
|
||||||
|
|
||||||
return cdvd.Error;
|
return cdvd.Error;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead07(void) { // BREAK
|
u8 cdvdRead07(void) { // BREAK
|
||||||
CDR_LOG("cdvdRead07(Break) %x\n", 0);
|
CDR_LOG("cdvdRead07(Break) %x", 0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead08(void) { // INTR_STAT
|
u8 cdvdRead08(void) { // INTR_STAT
|
||||||
CDR_LOG("cdvdRead08(IntrReason) %x\n", cdvd.PwOff);
|
CDR_LOG("cdvdRead08(IntrReason) %x", cdvd.PwOff);
|
||||||
|
|
||||||
return cdvd.PwOff;
|
return cdvd.PwOff;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead0A(void) { // STATUS
|
u8 cdvdRead0A(void) { // STATUS
|
||||||
CDR_LOG("cdvdRead0A(Status) %x\n", cdvd.Status);
|
CDR_LOG("cdvdRead0A(Status) %x", cdvd.Status);
|
||||||
|
|
||||||
return cdvd.Status;
|
return cdvd.Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead0B(void) { // TRAY-STATE (if tray has been opened)
|
u8 cdvdRead0B(void) { // TRAY-STATE (if tray has been opened)
|
||||||
u8 tray = cdvdGetTrayStatus();
|
u8 tray = cdvdGetTrayStatus();
|
||||||
CDR_LOG("cdvdRead0B(Tray) %x\n", tray);
|
CDR_LOG("cdvdRead0B(Tray) %x", tray);
|
||||||
|
|
||||||
return tray;
|
return tray;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead0C(void) { // CRT MINUTE
|
u8 cdvdRead0C(void) { // CRT MINUTE
|
||||||
CDR_LOG("cdvdRead0C(Min) %x\n", itob((u8)(cdvd.Sector/(60*75))));
|
CDR_LOG("cdvdRead0C(Min) %x", itob((u8)(cdvd.Sector/(60*75))));
|
||||||
|
|
||||||
return itob((u8)(cdvd.Sector/(60*75)));
|
return itob((u8)(cdvd.Sector/(60*75)));
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead0D(void) { // CRT SECOND
|
u8 cdvdRead0D(void) { // CRT SECOND
|
||||||
CDR_LOG("cdvdRead0D(Sec) %x\n", itob((u8)((cdvd.Sector/75)%60)+2));
|
CDR_LOG("cdvdRead0D(Sec) %x", itob((u8)((cdvd.Sector/75)%60)+2));
|
||||||
|
|
||||||
return itob((u8)((cdvd.Sector/75)%60)+2);
|
return itob((u8)((cdvd.Sector/75)%60)+2);
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead0E(void) { // CRT FRAME
|
u8 cdvdRead0E(void) { // CRT FRAME
|
||||||
CDR_LOG("cdvdRead0E(Frame) %x\n", itob((u8)(cdvd.Sector%75)));
|
CDR_LOG("cdvdRead0E(Frame) %x", itob((u8)(cdvd.Sector%75)));
|
||||||
|
|
||||||
return itob((u8)(cdvd.Sector%75));
|
return itob((u8)(cdvd.Sector%75));
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead0F(void) // TYPE
|
u8 cdvdRead0F(void) // TYPE
|
||||||
{
|
{
|
||||||
CDR_LOG("cdvdRead0F(Disc Type) %x\n", cdvd.Type);
|
CDR_LOG("cdvdRead0F(Disc Type) %x", cdvd.Type);
|
||||||
cdvdGetDiskType();
|
cdvdGetDiskType();
|
||||||
return cdvd.Type;
|
return cdvd.Type;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead13(void) { // UNKNOWN
|
u8 cdvdRead13(void) { // UNKNOWN
|
||||||
CDR_LOG("cdvdRead13(Unknown) %x\n", 4);
|
CDR_LOG("cdvdRead13(Unknown) %x", 4);
|
||||||
|
|
||||||
return 4;
|
return 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead15(void) { // RSV
|
u8 cdvdRead15(void) { // RSV
|
||||||
CDR_LOG("cdvdRead15(RSV)\n");
|
CDR_LOG("cdvdRead15(RSV)");
|
||||||
|
|
||||||
return 0x01; // | 0x80 for ATAPI mode
|
return 0x01; // | 0x80 for ATAPI mode
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead16(void) { // SCOMMAND
|
u8 cdvdRead16(void) { // SCOMMAND
|
||||||
CDR_LOG("cdvdRead16(SCMD) %x\n", cdvd.sCommand);
|
CDR_LOG("cdvdRead16(SCMD) %x", cdvd.sCommand);
|
||||||
|
|
||||||
return cdvd.sCommand;
|
return cdvd.sCommand;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead17(void) { // SREADY
|
u8 cdvdRead17(void) { // SREADY
|
||||||
CDR_LOG("cdvdRead17(SReady) %x\n", cdvd.sDataIn);
|
CDR_LOG("cdvdRead17(SReady) %x", cdvd.sDataIn);
|
||||||
|
|
||||||
return cdvd.sDataIn;
|
return cdvd.sDataIn;
|
||||||
}
|
}
|
||||||
|
@ -1169,54 +1168,54 @@ u8 cdvdRead18(void) { // SDATAOUT
|
||||||
ret = cdvd.Result[cdvd.ResultP-1];
|
ret = cdvd.Result[cdvd.ResultP-1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CDR_LOG("cdvdRead18(SDataOut) %x (ResultC=%d, ResultP=%d)\n", ret, cdvd.ResultC, cdvd.ResultP);
|
CDR_LOG("cdvdRead18(SDataOut) %x (ResultC=%d, ResultP=%d)", ret, cdvd.ResultC, cdvd.ResultP);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead20(void) {
|
u8 cdvdRead20(void) {
|
||||||
CDR_LOG("cdvdRead20(Key0) %x\n", cdvd.Key[0]);
|
CDR_LOG("cdvdRead20(Key0) %x", cdvd.Key[0]);
|
||||||
|
|
||||||
return cdvd.Key[0];
|
return cdvd.Key[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead21(void) {
|
u8 cdvdRead21(void) {
|
||||||
CDR_LOG("cdvdRead21(Key1) %x\n", cdvd.Key[1]);
|
CDR_LOG("cdvdRead21(Key1) %x", cdvd.Key[1]);
|
||||||
|
|
||||||
return cdvd.Key[1];
|
return cdvd.Key[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead22(void) {
|
u8 cdvdRead22(void) {
|
||||||
CDR_LOG("cdvdRead22(Key2) %x\n", cdvd.Key[2]);
|
CDR_LOG("cdvdRead22(Key2) %x", cdvd.Key[2]);
|
||||||
|
|
||||||
return cdvd.Key[2];
|
return cdvd.Key[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead23(void) {
|
u8 cdvdRead23(void) {
|
||||||
CDR_LOG("cdvdRead23(Key3) %x\n", cdvd.Key[3]);
|
CDR_LOG("cdvdRead23(Key3) %x", cdvd.Key[3]);
|
||||||
|
|
||||||
return cdvd.Key[3];
|
return cdvd.Key[3];
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead24(void) {
|
u8 cdvdRead24(void) {
|
||||||
CDR_LOG("cdvdRead24(Key4) %x\n", cdvd.Key[4]);
|
CDR_LOG("cdvdRead24(Key4) %x", cdvd.Key[4]);
|
||||||
|
|
||||||
return cdvd.Key[4];
|
return cdvd.Key[4];
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead28(void) {
|
u8 cdvdRead28(void) {
|
||||||
CDR_LOG("cdvdRead28(Key5) %x\n", cdvd.Key[5]);
|
CDR_LOG("cdvdRead28(Key5) %x", cdvd.Key[5]);
|
||||||
|
|
||||||
return cdvd.Key[5];
|
return cdvd.Key[5];
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead29(void) {
|
u8 cdvdRead29(void) {
|
||||||
CDR_LOG("cdvdRead29(Key6) %x\n", cdvd.Key[6]);
|
CDR_LOG("cdvdRead29(Key6) %x", cdvd.Key[6]);
|
||||||
|
|
||||||
return cdvd.Key[6];
|
return cdvd.Key[6];
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead2A(void) {
|
u8 cdvdRead2A(void) {
|
||||||
CDR_LOG("cdvdRead2A(Key7) %x\n", cdvd.Key[7]);
|
CDR_LOG("cdvdRead2A(Key7) %x", cdvd.Key[7]);
|
||||||
|
|
||||||
return cdvd.Key[7];
|
return cdvd.Key[7];
|
||||||
}
|
}
|
||||||
|
@ -1228,55 +1227,55 @@ u8 cdvdRead2B(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead2C(void) {
|
u8 cdvdRead2C(void) {
|
||||||
CDR_LOG("cdvdRead2C(Key9) %x\n", cdvd.Key[9]);
|
CDR_LOG("cdvdRead2C(Key9) %x", cdvd.Key[9]);
|
||||||
|
|
||||||
return cdvd.Key[9];
|
return cdvd.Key[9];
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead30(void) {
|
u8 cdvdRead30(void) {
|
||||||
CDR_LOG("cdvdRead30(Key10) %x\n", cdvd.Key[10]);
|
CDR_LOG("cdvdRead30(Key10) %x", cdvd.Key[10]);
|
||||||
|
|
||||||
return cdvd.Key[10];
|
return cdvd.Key[10];
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead31(void) {
|
u8 cdvdRead31(void) {
|
||||||
CDR_LOG("cdvdRead31(Key11) %x\n", cdvd.Key[11]);
|
CDR_LOG("cdvdRead31(Key11) %x", cdvd.Key[11]);
|
||||||
|
|
||||||
return cdvd.Key[11];
|
return cdvd.Key[11];
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead32(void) {
|
u8 cdvdRead32(void) {
|
||||||
CDR_LOG("cdvdRead32(Key12) %x\n", cdvd.Key[12]);
|
CDR_LOG("cdvdRead32(Key12) %x", cdvd.Key[12]);
|
||||||
|
|
||||||
return cdvd.Key[12];
|
return cdvd.Key[12];
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead33(void) {
|
u8 cdvdRead33(void) {
|
||||||
CDR_LOG("cdvdRead33(Key13) %x\n", cdvd.Key[13]);
|
CDR_LOG("cdvdRead33(Key13) %x", cdvd.Key[13]);
|
||||||
|
|
||||||
return cdvd.Key[13];
|
return cdvd.Key[13];
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead34(void) {
|
u8 cdvdRead34(void) {
|
||||||
CDR_LOG("cdvdRead34(Key14) %x\n", cdvd.Key[14]);
|
CDR_LOG("cdvdRead34(Key14) %x", cdvd.Key[14]);
|
||||||
|
|
||||||
return cdvd.Key[14];
|
return cdvd.Key[14];
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead38(void) { // valid parts of key data (first and last are valid)
|
u8 cdvdRead38(void) { // valid parts of key data (first and last are valid)
|
||||||
CDR_LOG("cdvdRead38(KeysValid) %x\n", cdvd.Key[15]);
|
CDR_LOG("cdvdRead38(KeysValid) %x", cdvd.Key[15]);
|
||||||
|
|
||||||
return cdvd.Key[15];
|
return cdvd.Key[15];
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead39(void) { // KEY-XOR
|
u8 cdvdRead39(void) { // KEY-XOR
|
||||||
CDR_LOG("cdvdRead39(KeyXor) %x\n", cdvd.KeyXor);
|
CDR_LOG("cdvdRead39(KeyXor) %x", cdvd.KeyXor);
|
||||||
|
|
||||||
return cdvd.KeyXor;
|
return cdvd.KeyXor;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 cdvdRead3A(void) { // DEC_SET
|
u8 cdvdRead3A(void) { // DEC_SET
|
||||||
CDR_LOG("cdvdRead3A(DecSet) %x\n", cdvd.decSet);
|
CDR_LOG("cdvdRead3A(DecSet) %x", cdvd.decSet);
|
||||||
|
|
||||||
Console::WriteLn("DecSet Read: %02X", params cdvd.decSet);
|
Console::WriteLn("DecSet Read: %02X", params cdvd.decSet);
|
||||||
return cdvd.decSet;
|
return cdvd.decSet;
|
||||||
|
@ -1298,7 +1297,7 @@ static uint cdvdStartSeek( uint newsector, CDVD_MODE_TYPE mode )
|
||||||
|
|
||||||
if( !cdvd.Spinning )
|
if( !cdvd.Spinning )
|
||||||
{
|
{
|
||||||
CDR_LOG( "CdSpinUp > Simulating CdRom Spinup Time, and seek to sector %d\n", cdvd.SeekToSector );
|
CDR_LOG( "CdSpinUp > Simulating CdRom Spinup Time, and seek to sector %d", cdvd.SeekToSector );
|
||||||
seektime = PSXCLK / 3; // 333ms delay
|
seektime = PSXCLK / 3; // 333ms delay
|
||||||
cdvd.Spinning = true;
|
cdvd.Spinning = true;
|
||||||
}
|
}
|
||||||
|
@ -1309,18 +1308,18 @@ static uint cdvdStartSeek( uint newsector, CDVD_MODE_TYPE mode )
|
||||||
if( delta >= tbl_FastSeekDelta[mode] )
|
if( delta >= tbl_FastSeekDelta[mode] )
|
||||||
{
|
{
|
||||||
// Full Seek
|
// Full Seek
|
||||||
CDR_LOG( "CdSeek Begin > to sector %d, from %d - delta=%d [FULL]\n", cdvd.SeekToSector, cdvd.Sector, delta );
|
CDR_LOG( "CdSeek Begin > to sector %d, from %d - delta=%d [FULL]", cdvd.SeekToSector, cdvd.Sector, delta );
|
||||||
seektime = Cdvd_FullSeek_Cycles;
|
seektime = Cdvd_FullSeek_Cycles;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CDR_LOG( "CdSeek Begin > to sector %d, from %d - delta=%d [FAST]\n", cdvd.SeekToSector, cdvd.Sector, delta );
|
CDR_LOG( "CdSeek Begin > to sector %d, from %d - delta=%d [FAST]", cdvd.SeekToSector, cdvd.Sector, delta );
|
||||||
seektime = Cdvd_FastSeek_Cycles;
|
seektime = Cdvd_FastSeek_Cycles;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CDR_LOG( "CdSeek Begin > Contiguous block without seek - delta=%d sectors\n", delta );
|
CDR_LOG( "CdSeek Begin > Contiguous block without seek - delta=%d sectors", delta );
|
||||||
|
|
||||||
// seektime is the time it takes to read to the destination block:
|
// seektime is the time it takes to read to the destination block:
|
||||||
seektime = delta * cdvd.ReadTime;
|
seektime = delta * cdvd.ReadTime;
|
||||||
|
@ -1342,7 +1341,7 @@ static uint cdvdStartSeek( uint newsector, CDVD_MODE_TYPE mode )
|
||||||
}
|
}
|
||||||
|
|
||||||
void cdvdWrite04(u8 rt) { // NCOMMAND
|
void cdvdWrite04(u8 rt) { // NCOMMAND
|
||||||
CDR_LOG("cdvdWrite04: NCMD %s (%x) (ParamP = %x)\n", nCmdName[rt], rt, cdvd.ParamP);
|
CDR_LOG("cdvdWrite04: NCMD %s (%x) (ParamP = %x)", nCmdName[rt], rt, cdvd.ParamP);
|
||||||
|
|
||||||
cdvd.nCommand = rt;
|
cdvd.nCommand = rt;
|
||||||
cdvd.Status = CDVD_STATUS_NONE;
|
cdvd.Status = CDVD_STATUS_NONE;
|
||||||
|
@ -1394,7 +1393,7 @@ void cdvdWrite04(u8 rt) { // NCOMMAND
|
||||||
case 0: default: cdvd.ReadMode = CDVD_MODE_2048; cdvd.BlockSize = 2048; break;
|
case 0: default: cdvd.ReadMode = CDVD_MODE_2048; cdvd.BlockSize = 2048; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
CDR_LOG( "CdRead > startSector=%d, nSectors=%d, RetryCnt=%x, Speed=%x(%x), ReadMode=%x(%x) (1074=%x)\n",
|
CDR_LOG( "CdRead > startSector=%d, nSectors=%d, RetryCnt=%x, Speed=%x(%x), ReadMode=%x(%x) (1074=%x)",
|
||||||
cdvd.Sector, cdvd.nSectors, cdvd.RetryCnt, cdvd.Speed, cdvd.Param[9], cdvd.ReadMode, cdvd.Param[10], psxHu32(0x1074));
|
cdvd.Sector, cdvd.nSectors, cdvd.RetryCnt, cdvd.Speed, cdvd.Param[9], cdvd.ReadMode, cdvd.Param[10], psxHu32(0x1074));
|
||||||
|
|
||||||
if( Config.cdvdPrint )
|
if( Config.cdvdPrint )
|
||||||
|
@ -1435,7 +1434,7 @@ void cdvdWrite04(u8 rt) { // NCOMMAND
|
||||||
case 0: cdvd.ReadMode = CDVD_MODE_2352; cdvd.BlockSize = 2352; break;
|
case 0: cdvd.ReadMode = CDVD_MODE_2352; cdvd.BlockSize = 2352; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
CDR_LOG( "CdReadCDDA > startSector=%d, nSectors=%d, RetryCnt=%x, Speed=%xx(%x), ReadMode=%x(%x) (1074=%x)\n",
|
CDR_LOG( "CdReadCDDA > startSector=%d, nSectors=%d, RetryCnt=%x, Speed=%xx(%x), ReadMode=%x(%x) (1074=%x)",
|
||||||
cdvd.Sector, cdvd.nSectors, cdvd.RetryCnt, cdvd.Speed, cdvd.Param[9], cdvd.ReadMode, cdvd.Param[10], psxHu32(0x1074));
|
cdvd.Sector, cdvd.nSectors, cdvd.RetryCnt, cdvd.Speed, cdvd.Param[9], cdvd.ReadMode, cdvd.Param[10], psxHu32(0x1074));
|
||||||
|
|
||||||
if( Config.cdvdPrint )
|
if( Config.cdvdPrint )
|
||||||
|
@ -1466,7 +1465,7 @@ void cdvdWrite04(u8 rt) { // NCOMMAND
|
||||||
cdvd.ReadMode = CDVD_MODE_2048;
|
cdvd.ReadMode = CDVD_MODE_2048;
|
||||||
cdvd.BlockSize = 2064; // Why oh why was it 2064
|
cdvd.BlockSize = 2064; // Why oh why was it 2064
|
||||||
|
|
||||||
CDR_LOG( "DvdRead > startSector=%d, nSectors=%d, RetryCnt=%x, Speed=%x(%x), ReadMode=%x(%x) (1074=%x)\n",
|
CDR_LOG( "DvdRead > startSector=%d, nSectors=%d, RetryCnt=%x, Speed=%x(%x), ReadMode=%x(%x) (1074=%x)",
|
||||||
cdvd.Sector, cdvd.nSectors, cdvd.RetryCnt, cdvd.Speed, cdvd.Param[9], cdvd.ReadMode, cdvd.Param[10], psxHu32(0x1074));
|
cdvd.Sector, cdvd.nSectors, cdvd.RetryCnt, cdvd.Speed, cdvd.Param[9], cdvd.ReadMode, cdvd.Param[10], psxHu32(0x1074));
|
||||||
|
|
||||||
if( Config.cdvdPrint )
|
if( Config.cdvdPrint )
|
||||||
|
@ -1505,7 +1504,7 @@ void cdvdWrite04(u8 rt) { // NCOMMAND
|
||||||
u8 arg0 = cdvd.Param[0];
|
u8 arg0 = cdvd.Param[0];
|
||||||
u16 arg1 = cdvd.Param[1] | (cdvd.Param[2]<<8);
|
u16 arg1 = cdvd.Param[1] | (cdvd.Param[2]<<8);
|
||||||
u32 arg2 = cdvd.Param[3] | (cdvd.Param[4]<<8) | (cdvd.Param[5]<<16) | (cdvd.Param[6]<<24);
|
u32 arg2 = cdvd.Param[3] | (cdvd.Param[4]<<8) | (cdvd.Param[5]<<16) | (cdvd.Param[6]<<24);
|
||||||
DevCon::WriteLn("cdvdReadKey(%d, %d, %d)\n", params arg0, arg1, arg2);
|
DevCon::WriteLn("cdvdReadKey(%d, %d, %d)", params arg0, arg1, arg2);
|
||||||
cdvdReadKey(arg0, arg1, arg2, cdvd.Key);
|
cdvdReadKey(arg0, arg1, arg2, cdvd.Key);
|
||||||
cdvd.KeyXor = 0x00;
|
cdvd.KeyXor = 0x00;
|
||||||
cdvdSetIrq();
|
cdvdSetIrq();
|
||||||
|
@ -1527,7 +1526,7 @@ void cdvdWrite04(u8 rt) { // NCOMMAND
|
||||||
}
|
}
|
||||||
|
|
||||||
void cdvdWrite05(u8 rt) { // NDATAIN
|
void cdvdWrite05(u8 rt) { // NDATAIN
|
||||||
CDR_LOG("cdvdWrite05(NDataIn) %x\n", rt);
|
CDR_LOG("cdvdWrite05(NDataIn) %x", rt);
|
||||||
|
|
||||||
if (cdvd.ParamP < 32) {
|
if (cdvd.ParamP < 32) {
|
||||||
cdvd.Param[cdvd.ParamP++] = rt;
|
cdvd.Param[cdvd.ParamP++] = rt;
|
||||||
|
@ -1536,13 +1535,13 @@ void cdvdWrite05(u8 rt) { // NDATAIN
|
||||||
}
|
}
|
||||||
|
|
||||||
void cdvdWrite06(u8 rt) { // HOWTO
|
void cdvdWrite06(u8 rt) { // HOWTO
|
||||||
CDR_LOG("cdvdWrite06(HowTo) %x\n", rt);
|
CDR_LOG("cdvdWrite06(HowTo) %x", rt);
|
||||||
cdvd.HowTo = rt;
|
cdvd.HowTo = rt;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cdvdWrite07(u8 rt) // BREAK
|
void cdvdWrite07(u8 rt) // BREAK
|
||||||
{
|
{
|
||||||
CDR_LOG("cdvdWrite07(Break) %x\n", rt);
|
CDR_LOG("cdvdWrite07(Break) %x", rt);
|
||||||
|
|
||||||
// If we're already in a Ready state or already Breaking, then do nothing:
|
// If we're already in a Ready state or already Breaking, then do nothing:
|
||||||
if( cdvd.Ready != 0 || cdvd.Action == cdvdAction_Break )
|
if( cdvd.Ready != 0 || cdvd.Action == cdvdAction_Break )
|
||||||
|
@ -1566,24 +1565,24 @@ void cdvdWrite07(u8 rt) // BREAK
|
||||||
}
|
}
|
||||||
|
|
||||||
void cdvdWrite08(u8 rt) { // INTR_STAT
|
void cdvdWrite08(u8 rt) { // INTR_STAT
|
||||||
CDR_LOG("cdvdWrite08(IntrReason) = ACK(%x)\n", rt);
|
CDR_LOG("cdvdWrite08(IntrReason) = ACK(%x)", rt);
|
||||||
cdvd.PwOff &= ~rt;
|
cdvd.PwOff &= ~rt;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cdvdWrite0A(u8 rt) { // STATUS
|
void cdvdWrite0A(u8 rt) { // STATUS
|
||||||
CDR_LOG("cdvdWrite0A(Status) %x\n", rt);
|
CDR_LOG("cdvdWrite0A(Status) %x", rt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cdvdWrite0F(u8 rt) { // TYPE
|
void cdvdWrite0F(u8 rt) { // TYPE
|
||||||
CDR_LOG("cdvdWrite0F(Type) %x\n", rt);
|
CDR_LOG("cdvdWrite0F(Type) %x", rt);
|
||||||
DevCon::WriteLn("*PCSX2*: CDVD TYPE %x\n", params rt);
|
DevCon::WriteLn("*PCSX2*: CDVD TYPE %x", params rt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cdvdWrite14(u8 rt) { // PS1 MODE??
|
void cdvdWrite14(u8 rt) { // PS1 MODE??
|
||||||
u32 cycle = psxRegs.cycle;
|
u32 cycle = psxRegs.cycle;
|
||||||
|
|
||||||
if (rt == 0xFE) Console::Notice("*PCSX2*: go PS1 mode DISC SPEED = FAST\n");
|
if (rt == 0xFE) Console::Notice("*PCSX2*: go PS1 mode DISC SPEED = FAST");
|
||||||
else Console::Notice("*PCSX2*: go PS1 mode DISC SPEED = %dX\n", params rt);
|
else Console::Notice("*PCSX2*: go PS1 mode DISC SPEED = %dX", params rt);
|
||||||
|
|
||||||
psxReset();
|
psxReset();
|
||||||
psxHu32(0x1f801450) = 0x8;
|
psxHu32(0x1f801450) = 0x8;
|
||||||
|
@ -1599,7 +1598,7 @@ void cdvdWrite16(u8 rt) // SCOMMAND
|
||||||
int address;
|
int address;
|
||||||
u8 tmp;
|
u8 tmp;
|
||||||
|
|
||||||
CDR_LOG("cdvdWrite16: SCMD %s (%x) (ParamP = %x)\n", sCmdName[rt], rt, cdvd.ParamP);
|
CDR_LOG("cdvdWrite16: SCMD %s (%x) (ParamP = %x)", sCmdName[rt], rt, cdvd.ParamP);
|
||||||
|
|
||||||
cdvd.sCommand = rt;
|
cdvd.sCommand = rt;
|
||||||
switch (rt) {
|
switch (rt) {
|
||||||
|
@ -2153,7 +2152,7 @@ fail_pol_cal:
|
||||||
}
|
}
|
||||||
|
|
||||||
void cdvdWrite17(u8 rt) { // SDATAIN
|
void cdvdWrite17(u8 rt) { // SDATAIN
|
||||||
CDR_LOG("cdvdWrite17(SDataIn) %x\n", rt);
|
CDR_LOG("cdvdWrite17(SDataIn) %x", rt);
|
||||||
|
|
||||||
if (cdvd.ParamP < 32) {
|
if (cdvd.ParamP < 32) {
|
||||||
cdvd.Param[cdvd.ParamP++] = rt;
|
cdvd.Param[cdvd.ParamP++] = rt;
|
||||||
|
@ -2162,12 +2161,12 @@ void cdvdWrite17(u8 rt) { // SDATAIN
|
||||||
}
|
}
|
||||||
|
|
||||||
void cdvdWrite18(u8 rt) { // SDATAOUT
|
void cdvdWrite18(u8 rt) { // SDATAOUT
|
||||||
CDR_LOG("cdvdWrite18(SDataOut) %x\n", rt);
|
CDR_LOG("cdvdWrite18(SDataOut) %x", rt);
|
||||||
Console::WriteLn("*PCSX2* SDATAOUT");
|
Console::WriteLn("*PCSX2* SDATAOUT");
|
||||||
}
|
}
|
||||||
|
|
||||||
void cdvdWrite3A(u8 rt) { // DEC-SET
|
void cdvdWrite3A(u8 rt) { // DEC-SET
|
||||||
CDR_LOG("cdvdWrite3A(DecSet) %x\n", rt);
|
CDR_LOG("cdvdWrite3A(DecSet) %x", rt);
|
||||||
cdvd.decSet = rt;
|
cdvd.decSet = rt;
|
||||||
Console::WriteLn("DecSet Write: %02X", params cdvd.decSet);
|
Console::WriteLn("DecSet Write: %02X", params cdvd.decSet);
|
||||||
}
|
}
|
|
@ -295,13 +295,13 @@ int CDVD_findfile(const char* fname, TocEntry* tocEntry){
|
||||||
|
|
||||||
// Find the TOC for a specific directory
|
// Find the TOC for a specific directory
|
||||||
if (CDVD_GetVolumeDescriptor() != TRUE){
|
if (CDVD_GetVolumeDescriptor() != TRUE){
|
||||||
RPC_LOG("Could not get CD Volume Descriptor\n");
|
RPC_LOG("Could not get CD Volume Descriptor");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read the TOC of the root directory
|
// Read the TOC of the root directory
|
||||||
if (CdRead(CDVolDesc.rootToc.tocLBA,1,toc,&cdReadMode) != TRUE){
|
if (CdRead(CDVolDesc.rootToc.tocLBA,1,toc,&cdReadMode) != TRUE){
|
||||||
RPC_LOG("Couldn't Read from CD !\n");
|
RPC_LOG("Couldn't Read from CD !");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
//CdSync(0x00);
|
//CdSync(0x00);
|
||||||
|
@ -422,7 +422,7 @@ int CDVD_findfile(const char* fname, TocEntry* tocEntry){
|
||||||
tocEntryPointer = (dirTocEntry*)((char*)tocEntryPointer + tocEntryPointer->length);
|
tocEntryPointer = (dirTocEntry*)((char*)tocEntryPointer + tocEntryPointer->length);
|
||||||
}
|
}
|
||||||
|
|
||||||
RPC_LOG("[RPC:cdvd] findfile: found dir, now looking for file\n");
|
RPC_LOG("[RPC:cdvd] findfile: found dir, now looking for file");
|
||||||
|
|
||||||
tocEntryPointer = (dirTocEntry*)toc;
|
tocEntryPointer = (dirTocEntry*)toc;
|
||||||
|
|
||||||
|
@ -502,15 +502,15 @@ int CDVD_GetDir_RPC_request(char* pathname, char* extensions, unsigned int inc_d
|
||||||
|
|
||||||
// Find the TOC for a specific directory
|
// Find the TOC for a specific directory
|
||||||
if (CDVD_GetVolumeDescriptor() != TRUE){
|
if (CDVD_GetVolumeDescriptor() != TRUE){
|
||||||
RPC_LOG("[RPC:cdvd] Could not get CD Volume Descriptor\n");
|
RPC_LOG("[RPC:cdvd] Could not get CD Volume Descriptor");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
RPC_LOG("[RPC:cdvd] Getting Directory Listing for: \"%s\"\n", pathname);
|
RPC_LOG("[RPC:cdvd] Getting Directory Listing for: \"%s\"", pathname);
|
||||||
|
|
||||||
// Read the TOC of the root directory
|
// Read the TOC of the root directory
|
||||||
if (CdRead(CDVolDesc.rootToc.tocLBA,1,toc,&cdReadMode) != TRUE){
|
if (CdRead(CDVolDesc.rootToc.tocLBA,1,toc,&cdReadMode) != TRUE){
|
||||||
RPC_LOG("[RPC: ] Couldn't Read from CD !\n");
|
RPC_LOG("[RPC: ] Couldn't Read from CD !");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
//CdSync(0x00);
|
//CdSync(0x00);
|
||||||
|
@ -551,7 +551,7 @@ int CDVD_GetDir_RPC_request(char* pathname, char* extensions, unsigned int inc_d
|
||||||
|
|
||||||
current_sector++;
|
current_sector++;
|
||||||
if (CdRead(current_sector,1,toc,&cdReadMode) != TRUE){
|
if (CdRead(current_sector,1,toc,&cdReadMode) != TRUE){
|
||||||
RPC_LOG("[RPC: ] Couldn't Read from CD !\n");
|
RPC_LOG("[RPC: ] Couldn't Read from CD !");
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -573,8 +573,8 @@ int CDVD_GetDir_RPC_request(char* pathname, char* extensions, unsigned int inc_d
|
||||||
if (strcmp(dirname,localTocEntry.filename) == 0){
|
if (strcmp(dirname,localTocEntry.filename) == 0){
|
||||||
// if the name matches then we've found the directory
|
// if the name matches then we've found the directory
|
||||||
found_dir = TRUE;
|
found_dir = TRUE;
|
||||||
RPC_LOG("[RPC: ] Found directory %s in subdir at sector %d\n",dirname,current_sector);
|
RPC_LOG("[RPC: ] Found directory %s in subdir at sector %d",dirname,current_sector);
|
||||||
RPC_LOG("[RPC: ] LBA of found subdirectory = %d\n",localTocEntry.fileLBA);
|
RPC_LOG("[RPC: ] LBA of found subdirectory = %d",localTocEntry.fileLBA);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -593,7 +593,7 @@ int CDVD_GetDir_RPC_request(char* pathname, char* extensions, unsigned int inc_d
|
||||||
|
|
||||||
// Read the TOC of the found subdirectory
|
// Read the TOC of the found subdirectory
|
||||||
if (CdRead(localTocEntry.fileLBA,1,toc,&cdReadMode) != TRUE){
|
if (CdRead(localTocEntry.fileLBA,1,toc,&cdReadMode) != TRUE){
|
||||||
RPC_LOG("[RPC: ] Couldn't Read from CD !\n");
|
RPC_LOG("[RPC: ] Couldn't Read from CD !");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
//CdSync(0x00);
|
//CdSync(0x00);
|
||||||
|
@ -645,7 +645,7 @@ int CDVD_GetDir_RPC_request(char* pathname, char* extensions, unsigned int inc_d
|
||||||
getDirTocData.current_sector++;
|
getDirTocData.current_sector++;
|
||||||
|
|
||||||
if (CdRead(getDirTocData.current_sector,1,toc,&cdReadMode) != TRUE){
|
if (CdRead(getDirTocData.current_sector,1,toc,&cdReadMode) != TRUE){
|
||||||
RPC_LOG("[RPC: ] Couldn't Read from CD !\n");
|
RPC_LOG("[RPC: ] Couldn't Read from CD !");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
//CdSync(0x00);
|
//CdSync(0x00);
|
||||||
|
@ -710,7 +710,7 @@ int CDVD_GetDir_RPC_get_entries(TocEntry tocEntry[], int req_entries){
|
||||||
dirTocEntry* tocEntryPointer;
|
dirTocEntry* tocEntryPointer;
|
||||||
|
|
||||||
if (CdRead(getDirTocData.current_sector,1,toc,&cdReadMode) != TRUE){
|
if (CdRead(getDirTocData.current_sector,1,toc,&cdReadMode) != TRUE){
|
||||||
RPC_LOG("[RPC:cdvd] Couldn't Read from CD !\n");
|
RPC_LOG("[RPC:cdvd] Couldn't Read from CD !");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
//CdSync(0x00);
|
//CdSync(0x00);
|
||||||
|
@ -741,7 +741,7 @@ int CDVD_GetDir_RPC_get_entries(TocEntry tocEntry[], int req_entries){
|
||||||
getDirTocData.current_sector++;
|
getDirTocData.current_sector++;
|
||||||
|
|
||||||
if (CdRead(getDirTocData.current_sector,1,toc,&cdReadMode) != TRUE){
|
if (CdRead(getDirTocData.current_sector,1,toc,&cdReadMode) != TRUE){
|
||||||
RPC_LOG("[RPC:cdvd] Couldn't Read from CD !\n");
|
RPC_LOG("[RPC:cdvd] Couldn't Read from CD !");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
//CdSync(0x00);
|
//CdSync(0x00);
|
||||||
|
|
|
@ -52,9 +52,9 @@ void CDVDFS_init(){
|
||||||
|
|
||||||
if (inited) return;//might change in the future as a param; forceInit/Reset
|
if (inited) return;//might change in the future as a param; forceInit/Reset
|
||||||
|
|
||||||
RPC_LOG("[CDVDisodrv:init] CDVD Filesystem v1.00\n");
|
RPC_LOG("[CDVDisodrv:init] CDVD Filesystem v1.00");
|
||||||
RPC_LOG("[CDVDisodrv ] \tby A.Lee (aka Hiryu) & Nicholas Van Veen (aka Sjeep)\n");
|
RPC_LOG("[CDVDisodrv ] \tby A.Lee (aka Hiryu) & Nicholas Van Veen (aka Sjeep)");
|
||||||
RPC_LOG("[CDVDisodrv ] Initializing '%s' file driver.\n", "cdfs");
|
RPC_LOG("[CDVDisodrv ] Initializing '%s' file driver.", "cdfs");
|
||||||
|
|
||||||
//CdInit(0); already called by plugin loading system ;)
|
//CdInit(0); already called by plugin loading system ;)
|
||||||
|
|
||||||
|
@ -92,13 +92,13 @@ int CDVDFS_open(const char *name, int mode){
|
||||||
fd_used[j] = 1;
|
fd_used[j] = 1;
|
||||||
files_open++;
|
files_open++;
|
||||||
|
|
||||||
RPC_LOG("[CDVDisodrv:open] internal fd=%d\n", j);
|
RPC_LOG("[CDVDisodrv:open] internal fd=%d", j);
|
||||||
|
|
||||||
fd_table[j].fileSize = tocEntry.fileSize;
|
fd_table[j].fileSize = tocEntry.fileSize;
|
||||||
fd_table[j].LBA = tocEntry.fileLBA;
|
fd_table[j].LBA = tocEntry.fileLBA;
|
||||||
fd_table[j].filePos = 0;
|
fd_table[j].filePos = 0;
|
||||||
|
|
||||||
RPC_LOG("[CDVDisodrv ] tocEntry.fileSize = %d\n",tocEntry.fileSize);
|
RPC_LOG("[CDVDisodrv ] tocEntry.fileSize = %d",tocEntry.fileSize);
|
||||||
return j;
|
return j;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ int CDVDFS_open(const char *name, int mode){
|
||||||
int CDVDFS_lseek(int fd, int offset, int whence){
|
int CDVDFS_lseek(int fd, int offset, int whence){
|
||||||
|
|
||||||
if ((fd >= 16) || (fd_used[fd]==0)){
|
if ((fd >= 16) || (fd_used[fd]==0)){
|
||||||
RPC_LOG("[CDVDisodrv:lseek] ERROR: File does not appear to be open!\n");
|
RPC_LOG("[CDVDisodrv:lseek] ERROR: File does not appear to be open!");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,7 +155,7 @@ int CDVDFS_read( int fd, char *buffer, int size ){
|
||||||
int ssize=0, asize, esize;
|
int ssize=0, asize, esize;
|
||||||
|
|
||||||
if ((fd >= 16) || (fd_used[fd]==0)){
|
if ((fd >= 16) || (fd_used[fd]==0)){
|
||||||
RPC_LOG("[CDVDisodrv:read] ERROR: File does not appear to be open!\n");
|
RPC_LOG("[CDVDisodrv:read] ERROR: File does not appear to be open!");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -181,22 +181,22 @@ int CDVDFS_read( int fd, char *buffer, int size ){
|
||||||
esector=asector + (asize >> 11);
|
esector=asector + (asize >> 11);
|
||||||
size += ssize;
|
size += ssize;
|
||||||
|
|
||||||
RPC_LOG("[CDVDisodrv:read] read sectors 0x%08X to 0x%08X\n", ssector, esector-(esize==0));
|
RPC_LOG("[CDVDisodrv:read] read sectors 0x%08X to 0x%08X", ssector, esector-(esize==0));
|
||||||
|
|
||||||
if (ssize){
|
if (ssize){
|
||||||
if (CdRead(ssector, 1, lb, &cdReadMode) != TRUE){
|
if (CdRead(ssector, 1, lb, &cdReadMode) != TRUE){
|
||||||
RPC_LOG("[CDVDisodrv: ] Couldn't Read from file for some reason\n");
|
RPC_LOG("[CDVDisodrv: ] Couldn't Read from file for some reason");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
memcpy_fast(buffer, lb + off_sector, ssize);
|
memcpy_fast(buffer, lb + off_sector, ssize);
|
||||||
}
|
}
|
||||||
if (asize) if (CdRead(asector, asize >> 11, buffer+ssize, &cdReadMode) != TRUE){
|
if (asize) if (CdRead(asector, asize >> 11, buffer+ssize, &cdReadMode) != TRUE){
|
||||||
RPC_LOG("[CDVDisodrv: ] Couldn't Read from file for some reason\n");
|
RPC_LOG("[CDVDisodrv: ] Couldn't Read from file for some reason");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (esize){
|
if (esize){
|
||||||
if (CdRead(esector, 1, lb, &cdReadMode) != TRUE){
|
if (CdRead(esector, 1, lb, &cdReadMode) != TRUE){
|
||||||
RPC_LOG("[CDVDisodrv: ] Couldn't Read from file for some reason\n");
|
RPC_LOG("[CDVDisodrv: ] Couldn't Read from file for some reason");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
memcpy_fast(buffer+ssize+asize, lb, esize);
|
memcpy_fast(buffer+ssize+asize, lb, esize);
|
||||||
|
@ -207,13 +207,13 @@ int CDVDFS_read( int fd, char *buffer, int size ){
|
||||||
off_sector = (fd_table[fd].filePos & 0x7FF);
|
off_sector = (fd_table[fd].filePos & 0x7FF);
|
||||||
num_sectors = ((off_sector + size) >> 11) + 1;
|
num_sectors = ((off_sector + size) >> 11) + 1;
|
||||||
|
|
||||||
RPC_LOG("[CDVDisodrv:read] read sectors 0x%08X to 0x%08X\n",start_sector,start_sector+num_sectors);
|
RPC_LOG("[CDVDisodrv:read] read sectors 0x%08X to 0x%08X",start_sector,start_sector+num_sectors);
|
||||||
|
|
||||||
// Read the data (we only ever get 16KB max request at once)
|
// Read the data (we only ever get 16KB max request at once)
|
||||||
if (CdRead(start_sector, num_sectors, local_buffer, &cdReadMode) != TRUE){
|
if (CdRead(start_sector, num_sectors, local_buffer, &cdReadMode) != TRUE){
|
||||||
|
|
||||||
//RPC_LOG("sector = %d, start sector = %d\n",sector,start_sector);
|
//RPC_LOG("sector = %d, start sector = %d",sector,start_sector);
|
||||||
RPC_LOG("[CDVDisodrv: ] Couldn't Read from file for some reason\n");
|
RPC_LOG("[CDVDisodrv: ] Couldn't Read from file for some reason");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
//CdSync(0); hm, a wait function maybe...
|
//CdSync(0); hm, a wait function maybe...
|
||||||
|
@ -242,10 +242,10 @@ int CDVDFS_write( int fd, char * buffer, int size ){
|
||||||
int CDVDFS_close( int fd){
|
int CDVDFS_close( int fd){
|
||||||
|
|
||||||
if ((fd >= 16) || (fd_used[fd]==0)){
|
if ((fd >= 16) || (fd_used[fd]==0)){
|
||||||
RPC_LOG("[CDVDisodrv:close] ERROR: File does not appear to be open!\n");
|
RPC_LOG("[CDVDisodrv:close] ERROR: File does not appear to be open!");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
RPC_LOG("[CDVDisodrv:close] internal fd %d\n", fd);
|
RPC_LOG("[CDVDisodrv:close] internal fd %d", fd);
|
||||||
fd_used[fd] = 0;
|
fd_used[fd] = 0;
|
||||||
files_open--;
|
files_open--;
|
||||||
|
|
||||||
|
|
|
@ -306,7 +306,7 @@ void MFC0()
|
||||||
{
|
{
|
||||||
// Note on _Rd_ Condition 9: CP0.Count should be updated even if _Rt_ is 0.
|
// Note on _Rd_ Condition 9: CP0.Count should be updated even if _Rt_ is 0.
|
||||||
if( (_Rd_ != 9) && !_Rt_ ) return;
|
if( (_Rd_ != 9) && !_Rt_ ) return;
|
||||||
if(_Rd_ != 9) { COP0_LOG("%s\n", disR5900Current.getCString() ); }
|
if(_Rd_ != 9) { COP0_LOG("%s", disR5900Current.getCString() ); }
|
||||||
|
|
||||||
//if(bExecBIOS == FALSE && _Rd_ == 25) Console::WriteLn("MFC0 _Rd_ %x = %x", params _Rd_, cpuRegs.CP0.r[_Rd_]);
|
//if(bExecBIOS == FALSE && _Rd_ == 25) Console::WriteLn("MFC0 _Rd_ %x = %x", params _Rd_, cpuRegs.CP0.r[_Rd_]);
|
||||||
switch (_Rd_)
|
switch (_Rd_)
|
||||||
|
@ -416,12 +416,12 @@ int CPCOND0() {
|
||||||
|
|
||||||
void BC0F() {
|
void BC0F() {
|
||||||
BC0(== 0);
|
BC0(== 0);
|
||||||
COP0_LOG( "COP0 > BC0F\n" );
|
COP0_LOG( "COP0 > BC0F" );
|
||||||
}
|
}
|
||||||
|
|
||||||
void BC0T() {
|
void BC0T() {
|
||||||
BC0(== 1);
|
BC0(== 1);
|
||||||
COP0_LOG( "COP0 > BC0T\n" );
|
COP0_LOG( "COP0 > BC0T" );
|
||||||
}
|
}
|
||||||
|
|
||||||
#define BC0L(cond) \
|
#define BC0L(cond) \
|
||||||
|
@ -431,12 +431,12 @@ void BC0T() {
|
||||||
|
|
||||||
void BC0FL() {
|
void BC0FL() {
|
||||||
BC0L(== 0);
|
BC0L(== 0);
|
||||||
COP0_LOG( "COP0 > BC0FL\n" );
|
COP0_LOG( "COP0 > BC0FL" );
|
||||||
}
|
}
|
||||||
|
|
||||||
void BC0TL() {
|
void BC0TL() {
|
||||||
BC0L(== 1);
|
BC0L(== 1);
|
||||||
COP0_LOG( "COP0 > BCOTL\n" );
|
COP0_LOG( "COP0 > BCOTL" );
|
||||||
}
|
}
|
||||||
|
|
||||||
void TLBR() {
|
void TLBR() {
|
||||||
|
@ -446,7 +446,7 @@ void TLBR() {
|
||||||
|
|
||||||
int i = cpuRegs.CP0.n.Index&0x1f;
|
int i = cpuRegs.CP0.n.Index&0x1f;
|
||||||
|
|
||||||
COP0_LOG("COP0 > TLBR\n");
|
COP0_LOG("COP0 > TLBR");
|
||||||
cpuRegs.CP0.n.PageMask = tlb[i].PageMask;
|
cpuRegs.CP0.n.PageMask = tlb[i].PageMask;
|
||||||
cpuRegs.CP0.n.EntryHi = tlb[i].EntryHi&~(tlb[i].PageMask|0x1f00);
|
cpuRegs.CP0.n.EntryHi = tlb[i].EntryHi&~(tlb[i].PageMask|0x1f00);
|
||||||
cpuRegs.CP0.n.EntryLo0 = (tlb[i].EntryLo0&~1)|((tlb[i].EntryHi>>12)&1);
|
cpuRegs.CP0.n.EntryLo0 = (tlb[i].EntryLo0&~1)|((tlb[i].EntryHi>>12)&1);
|
||||||
|
|
|
@ -101,7 +101,7 @@ void writeCache8(u32 mem, u8 value) {
|
||||||
int i, number;
|
int i, number;
|
||||||
|
|
||||||
i = getFreeCache(mem,1,&number);
|
i = getFreeCache(mem,1,&number);
|
||||||
// CACHE_LOG("writeCache8 %8.8x adding to %d, way %d, value %x\n", mem, i,number,value);
|
// CACHE_LOG("writeCache8 %8.8x adding to %d, way %d, value %x", mem, i,number,value);
|
||||||
|
|
||||||
pCache[i].data[number][(mem>>4) & 0x3].b8._8[(mem&0xf)] = value;
|
pCache[i].data[number][(mem>>4) & 0x3].b8._8[(mem&0xf)] = value;
|
||||||
}
|
}
|
||||||
|
@ -110,7 +110,7 @@ void writeCache16(u32 mem, u16 value) {
|
||||||
int i, number;
|
int i, number;
|
||||||
|
|
||||||
i = getFreeCache(mem,1,&number);
|
i = getFreeCache(mem,1,&number);
|
||||||
// CACHE_LOG("writeCache16 %8.8x adding to %d, way %d, value %x\n", mem, i,number,value);
|
// CACHE_LOG("writeCache16 %8.8x adding to %d, way %d, value %x", mem, i,number,value);
|
||||||
|
|
||||||
*(u16*)(&pCache[i].data[number][(mem>>4) & 0x3].b8._8[(mem&0xf)]) = value;
|
*(u16*)(&pCache[i].data[number][(mem>>4) & 0x3].b8._8[(mem&0xf)]) = value;
|
||||||
}
|
}
|
||||||
|
@ -119,7 +119,7 @@ void writeCache32(u32 mem, u32 value) {
|
||||||
int i, number;
|
int i, number;
|
||||||
|
|
||||||
i = getFreeCache(mem,1,&number);
|
i = getFreeCache(mem,1,&number);
|
||||||
// CACHE_LOG("writeCache32 %8.8x adding to %d, way %d, value %x\n", mem, i,number,value);
|
// CACHE_LOG("writeCache32 %8.8x adding to %d, way %d, value %x", mem, i,number,value);
|
||||||
*(u32*)(&pCache[i].data[number][(mem>>4) & 0x3].b8._8[(mem&0xf)]) = value;
|
*(u32*)(&pCache[i].data[number][(mem>>4) & 0x3].b8._8[(mem&0xf)]) = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,7 +127,7 @@ void writeCache64(u32 mem, u64 value) {
|
||||||
int i, number;
|
int i, number;
|
||||||
|
|
||||||
i = getFreeCache(mem,1,&number);
|
i = getFreeCache(mem,1,&number);
|
||||||
// CACHE_LOG("writeCache64 %8.8x adding to %d, way %d, value %x\n", mem, i,number,value);
|
// CACHE_LOG("writeCache64 %8.8x adding to %d, way %d, value %x", mem, i,number,value);
|
||||||
*(u64*)(&pCache[i].data[number][(mem>>4) & 0x3].b8._8[(mem&0xf)]) = value;
|
*(u64*)(&pCache[i].data[number][(mem>>4) & 0x3].b8._8[(mem&0xf)]) = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ void writeCache128(u32 mem, u64 *value) {
|
||||||
int i, number;
|
int i, number;
|
||||||
|
|
||||||
i = getFreeCache(mem,1,&number);
|
i = getFreeCache(mem,1,&number);
|
||||||
// CACHE_LOG("writeCache128 %8.8x adding to %d\n", mem, i);
|
// CACHE_LOG("writeCache128 %8.8x adding to %d", mem, i);
|
||||||
((u64*)pCache[i].data[number][(mem>>4) & 0x3].b8._8)[0] = value[0];
|
((u64*)pCache[i].data[number][(mem>>4) & 0x3].b8._8)[0] = value[0];
|
||||||
((u64*)pCache[i].data[number][(mem>>4) & 0x3].b8._8)[1] = value[1];
|
((u64*)pCache[i].data[number][(mem>>4) & 0x3].b8._8)[1] = value[1];
|
||||||
}
|
}
|
||||||
|
@ -144,7 +144,7 @@ u8 *readCache(u32 mem) {
|
||||||
int i, number;
|
int i, number;
|
||||||
|
|
||||||
i = getFreeCache(mem,0,&number);
|
i = getFreeCache(mem,0,&number);
|
||||||
// CACHE_LOG("readCache %8.8x from %d, way %d\n", mem, i,number);
|
// CACHE_LOG("readCache %8.8x from %d, way %d", mem, i,number);
|
||||||
|
|
||||||
return pCache[i].data[number][(mem>>4) & 0x3].b8._8;
|
return pCache[i].data[number][(mem>>4) & 0x3].b8._8;
|
||||||
}
|
}
|
||||||
|
@ -180,7 +180,7 @@ void CACHE() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
CACHE_LOG("CACHE DHIN addr %x, index %d, way %d, Flags %x\n",addr,index,way,pCache[index].tag[way] & 0x78);
|
CACHE_LOG("CACHE DHIN addr %x, index %d, way %d, Flags %x",addr,index,way,pCache[index].tag[way] & 0x78);
|
||||||
|
|
||||||
pCache[index].tag[way] &= ~(0x6F);
|
pCache[index].tag[way] &= ~(0x6F);
|
||||||
((u64*)pCache[index].data[way][0].b8._8)[0] = 0;
|
((u64*)pCache[index].data[way][0].b8._8)[0] = 0;
|
||||||
|
@ -216,7 +216,7 @@ void CACHE() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
CACHE_LOG("CACHE DHWBIN addr %x, index %d, way %d, Flags %x\n",addr,index,way,pCache[index].tag[way] & 0x78);
|
CACHE_LOG("CACHE DHWBIN addr %x, index %d, way %d, Flags %x",addr,index,way,pCache[index].tag[way] & 0x78);
|
||||||
|
|
||||||
if(pCache[index].tag[way] & 0x60) // Valid Dirty
|
if(pCache[index].tag[way] & 0x60) // Valid Dirty
|
||||||
{
|
{
|
||||||
|
@ -266,7 +266,7 @@ void CACHE() {
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CACHE_LOG("CACHE DHWOIN addr %x, index %d, way %d, Flags %x\n",addr,index,way,pCache[index].tag[way] & 0x78);
|
CACHE_LOG("CACHE DHWOIN addr %x, index %d, way %d, Flags %x",addr,index,way,pCache[index].tag[way] & 0x78);
|
||||||
|
|
||||||
if(pCache[index].tag[way] & 0x60) // Valid Dirty
|
if(pCache[index].tag[way] & 0x60) // Valid Dirty
|
||||||
{
|
{
|
||||||
|
@ -311,7 +311,7 @@ void CACHE() {
|
||||||
u8 * out = pCache[index].data[way][(addr>>4) & 0x3].b8._8;
|
u8 * out = pCache[index].data[way][(addr>>4) & 0x3].b8._8;
|
||||||
cpuRegs.CP0.r[28] = *(u32 *)(out+(addr&0xf));
|
cpuRegs.CP0.r[28] = *(u32 *)(out+(addr&0xf));
|
||||||
|
|
||||||
CACHE_LOG("CACHE DXLDT addr %x, index %d, way %d, DATA %x\n",addr,index,way,cpuRegs.CP0.r[28]);
|
CACHE_LOG("CACHE DXLDT addr %x, index %d, way %d, DATA %x",addr,index,way,cpuRegs.CP0.r[28]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -323,7 +323,7 @@ void CACHE() {
|
||||||
cpuRegs.CP0.r[28] = 0;
|
cpuRegs.CP0.r[28] = 0;
|
||||||
cpuRegs.CP0.r[28] = pCache[index].tag[way];
|
cpuRegs.CP0.r[28] = pCache[index].tag[way];
|
||||||
|
|
||||||
CACHE_LOG("CACHE DXLTG addr %x, index %d, way %d, DATA %x\n",addr,index,way,cpuRegs.CP0.r[28]);
|
CACHE_LOG("CACHE DXLTG addr %x, index %d, way %d, DATA %x",addr,index,way,cpuRegs.CP0.r[28]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -334,7 +334,7 @@ void CACHE() {
|
||||||
//u8 * out = pCache[index].data[way][(addr>>4) & 0x3].b8._8;
|
//u8 * out = pCache[index].data[way][(addr>>4) & 0x3].b8._8;
|
||||||
*(u32*)(&pCache[index].data[way][(addr>>4) & 0x3].b8._8[(addr&0xf)]) = cpuRegs.CP0.r[28];
|
*(u32*)(&pCache[index].data[way][(addr>>4) & 0x3].b8._8[(addr&0xf)]) = cpuRegs.CP0.r[28];
|
||||||
|
|
||||||
CACHE_LOG("CACHE DXSDT addr %x, index %d, way %d, DATA %x\n",addr,index,way,cpuRegs.CP0.r[28]);
|
CACHE_LOG("CACHE DXSDT addr %x, index %d, way %d, DATA %x",addr,index,way,cpuRegs.CP0.r[28]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -344,7 +344,7 @@ void CACHE() {
|
||||||
int way = addr & 0x1;
|
int way = addr & 0x1;
|
||||||
pCache[index].tag[way] = cpuRegs.CP0.r[28];
|
pCache[index].tag[way] = cpuRegs.CP0.r[28];
|
||||||
|
|
||||||
CACHE_LOG("CACHE DXSTG addr %x, index %d, way %d, DATA %x\n",addr,index,way,cpuRegs.CP0.r[28] & 0x6F);
|
CACHE_LOG("CACHE DXSTG addr %x, index %d, way %d, DATA %x",addr,index,way,cpuRegs.CP0.r[28] & 0x6F);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -356,7 +356,7 @@ void CACHE() {
|
||||||
int way = addr & 0x1;
|
int way = addr & 0x1;
|
||||||
|
|
||||||
|
|
||||||
CACHE_LOG("CACHE DXWBIN addr %x, index %d, way %d, Flags %x\n",addr,index,way,pCache[index].tag[way] & 0x78);
|
CACHE_LOG("CACHE DXWBIN addr %x, index %d, way %d, Flags %x",addr,index,way,pCache[index].tag[way] & 0x78);
|
||||||
|
|
||||||
if(pCache[index].tag[way] & 0x60) // Dirty
|
if(pCache[index].tag[way] & 0x60) // Dirty
|
||||||
{
|
{
|
||||||
|
|
|
@ -140,7 +140,7 @@ void ReadTrack() {
|
||||||
cdr.Prev[1] = itob(cdr.SetSector[1]);
|
cdr.Prev[1] = itob(cdr.SetSector[1]);
|
||||||
cdr.Prev[2] = itob(cdr.SetSector[2]);
|
cdr.Prev[2] = itob(cdr.SetSector[2]);
|
||||||
|
|
||||||
CDR_LOG("KEY *** %x:%x:%x\n", cdr.Prev[0], cdr.Prev[1], cdr.Prev[2]);
|
CDR_LOG("KEY *** %x:%x:%x", cdr.Prev[0], cdr.Prev[1], cdr.Prev[2]);
|
||||||
cdr.RErr = CDVDreadTrack(MSFtoLSN(cdr.SetSector), CDVD_MODE_2352);
|
cdr.RErr = CDVDreadTrack(MSFtoLSN(cdr.SetSector), CDVD_MODE_2352);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -529,7 +529,7 @@ void cdrReadInterrupt() {
|
||||||
memcpy_fast(cdr.Transfer, buf+12, 2340);
|
memcpy_fast(cdr.Transfer, buf+12, 2340);
|
||||||
cdr.Stat = DataReady;
|
cdr.Stat = DataReady;
|
||||||
|
|
||||||
CDR_LOG(" %x:%x:%x\n", cdr.Transfer[0], cdr.Transfer[1], cdr.Transfer[2]);
|
CDR_LOG(" %x:%x:%x", cdr.Transfer[0], cdr.Transfer[1], cdr.Transfer[2]);
|
||||||
|
|
||||||
cdr.SetSector[2]++;
|
cdr.SetSector[2]++;
|
||||||
|
|
||||||
|
@ -545,7 +545,7 @@ void cdrReadInterrupt() {
|
||||||
cdr.Readed = 0;
|
cdr.Readed = 0;
|
||||||
|
|
||||||
if ((cdr.Transfer[4+2] & 0x80) && (cdr.Mode & 0x2)) { // EOF
|
if ((cdr.Transfer[4+2] & 0x80) && (cdr.Mode & 0x2)) { // EOF
|
||||||
CDR_LOG("AutoPausing Read\n");
|
CDR_LOG("AutoPausing Read");
|
||||||
AddIrqQueue(CdlPause, 0x800);
|
AddIrqQueue(CdlPause, 0x800);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -583,7 +583,7 @@ u8 cdrRead0(void) {
|
||||||
// what means the 0x10 and the 0x08 bits? i only saw it used by the bios
|
// what means the 0x10 and the 0x08 bits? i only saw it used by the bios
|
||||||
cdr.Ctrl|=0x18;
|
cdr.Ctrl|=0x18;
|
||||||
|
|
||||||
CDR_LOG("CD0 Read: %x\n", cdr.Ctrl);
|
CDR_LOG("CD0 Read: %x", cdr.Ctrl);
|
||||||
return psxHu8(0x1800) = cdr.Ctrl;
|
return psxHu8(0x1800) = cdr.Ctrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -593,7 +593,7 @@ cdrWrite0:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void cdrWrite0(u8 rt) {
|
void cdrWrite0(u8 rt) {
|
||||||
CDR_LOG("CD0 write: %x\n", rt);
|
CDR_LOG("CD0 write: %x", rt);
|
||||||
|
|
||||||
cdr.Ctrl = rt | (cdr.Ctrl & ~0x3);
|
cdr.Ctrl = rt | (cdr.Ctrl & ~0x3);
|
||||||
|
|
||||||
|
@ -612,14 +612,14 @@ u8 cdrRead1(void) {
|
||||||
else
|
else
|
||||||
psxHu8(0x1801) = 0;
|
psxHu8(0x1801) = 0;
|
||||||
|
|
||||||
CDR_LOG("CD1 Read: %x\n", psxHu8(0x1801));
|
CDR_LOG("CD1 Read: %x", psxHu8(0x1801));
|
||||||
return psxHu8(0x1801);
|
return psxHu8(0x1801);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cdrWrite1(u8 rt) {
|
void cdrWrite1(u8 rt) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
CDR_LOG("CD1 write: %x (%s)\n", rt, CmdName[rt]);
|
CDR_LOG("CD1 write: %x (%s)", rt, CmdName[rt]);
|
||||||
cdr.Cmd = rt;
|
cdr.Cmd = rt;
|
||||||
cdr.OCUP = 0;
|
cdr.OCUP = 0;
|
||||||
|
|
||||||
|
@ -744,7 +744,7 @@ void cdrWrite1(u8 rt) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CdlSetmode:
|
case CdlSetmode:
|
||||||
CDR_LOG("Setmode %x\n", cdr.Param[0]);
|
CDR_LOG("Setmode %x", cdr.Param[0]);
|
||||||
|
|
||||||
cdr.Mode = cdr.Param[0];
|
cdr.Mode = cdr.Param[0];
|
||||||
cdr.Ctrl|= 0x80;
|
cdr.Ctrl|= 0x80;
|
||||||
|
@ -839,12 +839,12 @@ u8 cdrRead2(void) {
|
||||||
ret = *cdr.pTransfer++;
|
ret = *cdr.pTransfer++;
|
||||||
}
|
}
|
||||||
|
|
||||||
CDR_LOG("CD2 Read: %x\n", ret);
|
CDR_LOG("CD2 Read: %x", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cdrWrite2(u8 rt) {
|
void cdrWrite2(u8 rt) {
|
||||||
CDR_LOG("CD2 write: %x\n", rt);
|
CDR_LOG("CD2 write: %x", rt);
|
||||||
|
|
||||||
if (cdr.Ctrl & 0x1) {
|
if (cdr.Ctrl & 0x1) {
|
||||||
switch (rt) {
|
switch (rt) {
|
||||||
|
@ -877,12 +877,12 @@ u8 cdrRead3(void) {
|
||||||
psxHu8(0x1803) = 0xff;
|
psxHu8(0x1803) = 0xff;
|
||||||
} else psxHu8(0x1803) = 0;
|
} else psxHu8(0x1803) = 0;
|
||||||
|
|
||||||
CDR_LOG("CD3 Read: %x\n", psxHu8(0x1803));
|
CDR_LOG("CD3 Read: %x", psxHu8(0x1803));
|
||||||
return psxHu8(0x1803);
|
return psxHu8(0x1803);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cdrWrite3(u8 rt) {
|
void cdrWrite3(u8 rt) {
|
||||||
CDR_LOG("CD3 write: %x\n", rt);
|
CDR_LOG("CD3 write: %x", rt);
|
||||||
|
|
||||||
if (rt == 0x07 && cdr.Ctrl & 0x1) {
|
if (rt == 0x07 && cdr.Ctrl & 0x1) {
|
||||||
cdr.Stat = 0;
|
cdr.Stat = 0;
|
||||||
|
@ -909,13 +909,13 @@ void cdrWrite3(u8 rt) {
|
||||||
void psxDma3(u32 madr, u32 bcr, u32 chcr) {
|
void psxDma3(u32 madr, u32 bcr, u32 chcr) {
|
||||||
u32 cdsize;
|
u32 cdsize;
|
||||||
|
|
||||||
CDR_LOG("*** DMA 3 *** %lx addr = %lx size = %lx\n", chcr, madr, bcr);
|
CDR_LOG("*** DMA 3 *** %lx addr = %lx size = %lx", chcr, madr, bcr);
|
||||||
|
|
||||||
switch (chcr) {
|
switch (chcr) {
|
||||||
case 0x11000000:
|
case 0x11000000:
|
||||||
case 0x11400100:
|
case 0x11400100:
|
||||||
if (cdr.Readed == 0) {
|
if (cdr.Readed == 0) {
|
||||||
CDR_LOG("*** DMA 3 *** NOT READY\n");
|
CDR_LOG("*** DMA 3 *** NOT READY");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -930,7 +930,7 @@ void psxDma3(u32 madr, u32 bcr, u32 chcr) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
CDR_LOG("Unknown cddma %lx\n", chcr);
|
CDR_LOG("Unknown cddma %lx", chcr);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
HW_DMA3_CHCR &= ~0x01000000;
|
HW_DMA3_CHCR &= ~0x01000000;
|
||||||
|
|
|
@ -327,7 +327,7 @@ static __forceinline void frameLimit()
|
||||||
|
|
||||||
static __forceinline void VSyncStart(u32 sCycle)
|
static __forceinline void VSyncStart(u32 sCycle)
|
||||||
{
|
{
|
||||||
EECNT_LOG( "///////// EE COUNTER VSYNC START \\\\\\\\\\\\\\\\\\\\ (frame: %d)\n", iFrame );
|
EECNT_LOG( "///////// EE COUNTER VSYNC START \\\\\\\\\\\\\\\\\\\\ (frame: %d)", iFrame );
|
||||||
vSyncDebugStuff( iFrame ); // EE Profiling and Debug code
|
vSyncDebugStuff( iFrame ); // EE Profiling and Debug code
|
||||||
|
|
||||||
if ((CSRw & 0x8)) GSCSRr|= 0x8;
|
if ((CSRw & 0x8)) GSCSRr|= 0x8;
|
||||||
|
@ -361,7 +361,7 @@ static __forceinline void VSyncStart(u32 sCycle)
|
||||||
|
|
||||||
static __forceinline void VSyncEnd(u32 sCycle)
|
static __forceinline void VSyncEnd(u32 sCycle)
|
||||||
{
|
{
|
||||||
EECNT_LOG( "///////// EE COUNTER VSYNC END \\\\\\\\\\\\\\\\\\\\ (frame: %d)\n", iFrame );
|
EECNT_LOG( "///////// EE COUNTER VSYNC END \\\\\\\\\\\\\\\\\\\\ (frame: %d)", iFrame );
|
||||||
|
|
||||||
iFrame++;
|
iFrame++;
|
||||||
|
|
||||||
|
@ -471,7 +471,7 @@ static __forceinline void __fastcall _cpuTestTarget( int i )
|
||||||
|
|
||||||
if(counters[i].mode.TargetInterrupt) {
|
if(counters[i].mode.TargetInterrupt) {
|
||||||
|
|
||||||
EECNT_LOG("EE Counter[%d] TARGET reached - mode=%x, count=%x, target=%x\n", i, counters[i].mode, counters[i].count, counters[i].target);
|
EECNT_LOG("EE Counter[%d] TARGET reached - mode=%x, count=%x, target=%x", i, counters[i].mode, counters[i].count, counters[i].target);
|
||||||
counters[i].mode.TargetReached = 1;
|
counters[i].mode.TargetReached = 1;
|
||||||
hwIntcIrq(counters[i].interrupt);
|
hwIntcIrq(counters[i].interrupt);
|
||||||
|
|
||||||
|
@ -489,7 +489,7 @@ static __forceinline void _cpuTestOverflow( int i )
|
||||||
if (counters[i].count <= 0xffff) return;
|
if (counters[i].count <= 0xffff) return;
|
||||||
|
|
||||||
if (counters[i].mode.OverflowInterrupt) {
|
if (counters[i].mode.OverflowInterrupt) {
|
||||||
EECNT_LOG("EE Counter[%d] OVERFLOW - mode=%x, count=%x\n", i, counters[i].mode, counters[i].count);
|
EECNT_LOG("EE Counter[%d] OVERFLOW - mode=%x, count=%x", i, counters[i].mode, counters[i].count);
|
||||||
counters[i].mode.OverflowReached = 1;
|
counters[i].mode.OverflowReached = 1;
|
||||||
hwIntcIrq(counters[i].interrupt);
|
hwIntcIrq(counters[i].interrupt);
|
||||||
}
|
}
|
||||||
|
@ -547,7 +547,7 @@ static void _rcntSetGate( int index )
|
||||||
|
|
||||||
if( !(counters[index].mode.GateSource == 0 && counters[index].mode.ClockSource == 3) )
|
if( !(counters[index].mode.GateSource == 0 && counters[index].mode.ClockSource == 3) )
|
||||||
{
|
{
|
||||||
EECNT_LOG( "EE Counter[%d] Using Gate! Source=%s, Mode=%d.\n",
|
EECNT_LOG( "EE Counter[%d] Using Gate! Source=%s, Mode=%d.",
|
||||||
index, counters[index].mode.GateSource ? "vblank" : "hblank", counters[index].mode.GateMode );
|
index, counters[index].mode.GateSource ? "vblank" : "hblank", counters[index].mode.GateMode );
|
||||||
|
|
||||||
gates |= (1<<index);
|
gates |= (1<<index);
|
||||||
|
@ -556,7 +556,7 @@ static void _rcntSetGate( int index )
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
EECNT_LOG( "EE Counter[%d] GATE DISABLED because of hblank source.\n", index );
|
EECNT_LOG( "EE Counter[%d] GATE DISABLED because of hblank source.", index );
|
||||||
}
|
}
|
||||||
|
|
||||||
gates &= ~(1<<index);
|
gates &= ~(1<<index);
|
||||||
|
@ -595,7 +595,7 @@ void __fastcall rcntStartGate(bool isVblank, u32 sCycle)
|
||||||
|
|
||||||
counters[i].mode.IsCounting = 1;
|
counters[i].mode.IsCounting = 1;
|
||||||
counters[i].sCycleT = sCycle;
|
counters[i].sCycleT = sCycle;
|
||||||
EECNT_LOG("EE Counter[%d] %s StartGate Type0, count = %x\n",
|
EECNT_LOG("EE Counter[%d] %s StartGate Type0, count = %x",
|
||||||
isVblank ? "vblank" : "hblank", i, counters[i].count );
|
isVblank ? "vblank" : "hblank", i, counters[i].count );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -609,7 +609,7 @@ void __fastcall rcntStartGate(bool isVblank, u32 sCycle)
|
||||||
counters[i].count = 0;
|
counters[i].count = 0;
|
||||||
counters[i].target &= 0xffff;
|
counters[i].target &= 0xffff;
|
||||||
counters[i].sCycleT = sCycle;
|
counters[i].sCycleT = sCycle;
|
||||||
EECNT_LOG("EE Counter[%d] %s StartGate Type%d, count = %x\n",
|
EECNT_LOG("EE Counter[%d] %s StartGate Type%d, count = %x",
|
||||||
isVblank ? "vblank" : "hblank", i, counters[i].mode.GateMode, counters[i].count );
|
isVblank ? "vblank" : "hblank", i, counters[i].mode.GateMode, counters[i].count );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -642,7 +642,7 @@ void __fastcall rcntEndGate(bool isVblank , u32 sCycle)
|
||||||
counters[i].count = rcntRcount(i);
|
counters[i].count = rcntRcount(i);
|
||||||
counters[i].mode.IsCounting = 0;
|
counters[i].mode.IsCounting = 0;
|
||||||
counters[i].sCycleT = sCycle;
|
counters[i].sCycleT = sCycle;
|
||||||
EECNT_LOG("EE Counter[%d] %s EndGate Type0, count = %x\n",
|
EECNT_LOG("EE Counter[%d] %s EndGate Type0, count = %x",
|
||||||
isVblank ? "vblank" : "hblank", i, counters[i].count );
|
isVblank ? "vblank" : "hblank", i, counters[i].count );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -656,7 +656,7 @@ void __fastcall rcntEndGate(bool isVblank , u32 sCycle)
|
||||||
counters[i].count = 0;
|
counters[i].count = 0;
|
||||||
counters[i].target &= 0xffff;
|
counters[i].target &= 0xffff;
|
||||||
counters[i].sCycleT = sCycle;
|
counters[i].sCycleT = sCycle;
|
||||||
EECNT_LOG("EE Counter[%d] %s EndGate Type%d, count = %x\n",
|
EECNT_LOG("EE Counter[%d] %s EndGate Type%d, count = %x",
|
||||||
isVblank ? "vblank" : "hblank", i, counters[i].mode.GateMode, counters[i].count );
|
isVblank ? "vblank" : "hblank", i, counters[i].mode.GateMode, counters[i].count );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -683,7 +683,7 @@ void __fastcall rcntWmode(int index, u32 value)
|
||||||
|
|
||||||
counters[index].modeval &= ~(value & 0xc00); //Clear status flags, the ps2 only clears what is given in the value
|
counters[index].modeval &= ~(value & 0xc00); //Clear status flags, the ps2 only clears what is given in the value
|
||||||
counters[index].modeval = (counters[index].modeval & 0xc00) | (value & 0x3ff);
|
counters[index].modeval = (counters[index].modeval & 0xc00) | (value & 0x3ff);
|
||||||
EECNT_LOG("EE Counter[%d] writeMode = %x passed value=%x\n", index, counters[index].modeval, value );
|
EECNT_LOG("EE Counter[%d] writeMode = %x passed value=%x", index, counters[index].modeval, value );
|
||||||
|
|
||||||
switch (counters[index].mode.ClockSource) { //Clock rate divisers *2, they use BUSCLK speed not PS2CLK
|
switch (counters[index].mode.ClockSource) { //Clock rate divisers *2, they use BUSCLK speed not PS2CLK
|
||||||
case 0: counters[index].rate = 2; break;
|
case 0: counters[index].rate = 2; break;
|
||||||
|
@ -698,7 +698,7 @@ void __fastcall rcntWmode(int index, u32 value)
|
||||||
|
|
||||||
void __fastcall rcntWcount(int index, u32 value)
|
void __fastcall rcntWcount(int index, u32 value)
|
||||||
{
|
{
|
||||||
EECNT_LOG("EE Counter[%d] writeCount = %x, oldcount=%x, target=%x\n", index, value, counters[index].count, counters[index].target );
|
EECNT_LOG("EE Counter[%d] writeCount = %x, oldcount=%x, target=%x", index, value, counters[index].count, counters[index].target );
|
||||||
|
|
||||||
counters[index].count = value & 0xffff;
|
counters[index].count = value & 0xffff;
|
||||||
|
|
||||||
|
@ -724,7 +724,7 @@ void __fastcall rcntWcount(int index, u32 value)
|
||||||
|
|
||||||
void __fastcall rcntWtarget(int index, u32 value)
|
void __fastcall rcntWtarget(int index, u32 value)
|
||||||
{
|
{
|
||||||
EECNT_LOG("EE Counter[%d] writeTarget = %x\n", index, value);
|
EECNT_LOG("EE Counter[%d] writeTarget = %x", index, value);
|
||||||
|
|
||||||
counters[index].target = value & 0xffff;
|
counters[index].target = value & 0xffff;
|
||||||
|
|
||||||
|
@ -740,7 +740,7 @@ void __fastcall rcntWtarget(int index, u32 value)
|
||||||
|
|
||||||
void __fastcall rcntWhold(int index, u32 value)
|
void __fastcall rcntWhold(int index, u32 value)
|
||||||
{
|
{
|
||||||
EECNT_LOG("EE Counter[%d] Hold Write = %x\n", index, value);
|
EECNT_LOG("EE Counter[%d] Hold Write = %x", index, value);
|
||||||
counters[index].hold = value;
|
counters[index].hold = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -754,7 +754,8 @@ u32 __fastcall rcntRcount(int index)
|
||||||
else
|
else
|
||||||
ret = counters[index].count;
|
ret = counters[index].count;
|
||||||
|
|
||||||
EECNT_LOG("EE Counter[%d] readCount32 = %x\n", index, ret);
|
// Spams the Console.
|
||||||
|
EECNT_LOG("EE Counter[%d] readCount32 = %x", index, ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -278,17 +278,17 @@ struct ElfObject
|
||||||
}
|
}
|
||||||
|
|
||||||
ELF_LOG("\n");
|
ELF_LOG("\n");
|
||||||
ELF_LOG("version: %d\n",header.e_version);
|
ELF_LOG("version: %d",header.e_version);
|
||||||
ELF_LOG("entry: %08x\n",header.e_entry);
|
ELF_LOG("entry: %08x",header.e_entry);
|
||||||
ELF_LOG("flags: %08x\n",header.e_flags);
|
ELF_LOG("flags: %08x",header.e_flags);
|
||||||
ELF_LOG("eh size: %08x\n",header.e_ehsize);
|
ELF_LOG("eh size: %08x",header.e_ehsize);
|
||||||
ELF_LOG("ph off: %08x\n",header.e_phoff);
|
ELF_LOG("ph off: %08x",header.e_phoff);
|
||||||
ELF_LOG("ph entsiz: %08x\n",header.e_phentsize);
|
ELF_LOG("ph entsiz: %08x",header.e_phentsize);
|
||||||
ELF_LOG("ph num: %08x\n",header.e_phnum);
|
ELF_LOG("ph num: %08x",header.e_phnum);
|
||||||
ELF_LOG("sh off: %08x\n",header.e_shoff);
|
ELF_LOG("sh off: %08x",header.e_shoff);
|
||||||
ELF_LOG("sh entsiz: %08x\n",header.e_shentsize);
|
ELF_LOG("sh entsiz: %08x",header.e_shentsize);
|
||||||
ELF_LOG("sh num: %08x\n",header.e_shnum);
|
ELF_LOG("sh num: %08x",header.e_shnum);
|
||||||
ELF_LOG("sh strndx: %08x\n",header.e_shstrndx);
|
ELF_LOG("sh strndx: %08x",header.e_shstrndx);
|
||||||
|
|
||||||
ELF_LOG("\n");
|
ELF_LOG("\n");
|
||||||
}
|
}
|
||||||
|
@ -341,7 +341,7 @@ struct ElfObject
|
||||||
|
|
||||||
for( int i = 0 ; i < header.e_phnum ; i++ )
|
for( int i = 0 ; i < header.e_phnum ; i++ )
|
||||||
{
|
{
|
||||||
ELF_LOG( "Elf32 Program Header\n" );
|
ELF_LOG( "Elf32 Program Header" );
|
||||||
ELF_LOG( "type: " );
|
ELF_LOG( "type: " );
|
||||||
|
|
||||||
switch ( proghead[ i ].p_type ) {
|
switch ( proghead[ i ].p_type ) {
|
||||||
|
@ -379,13 +379,13 @@ struct ElfObject
|
||||||
}
|
}
|
||||||
|
|
||||||
ELF_LOG("\n");
|
ELF_LOG("\n");
|
||||||
ELF_LOG("offset: %08x\n",(int)proghead[i].p_offset);
|
ELF_LOG("offset: %08x",(int)proghead[i].p_offset);
|
||||||
ELF_LOG("vaddr: %08x\n",(int)proghead[i].p_vaddr);
|
ELF_LOG("vaddr: %08x",(int)proghead[i].p_vaddr);
|
||||||
ELF_LOG("paddr: %08x\n",proghead[i].p_paddr);
|
ELF_LOG("paddr: %08x",proghead[i].p_paddr);
|
||||||
ELF_LOG("file size: %08x\n",proghead[i].p_filesz);
|
ELF_LOG("file size: %08x",proghead[i].p_filesz);
|
||||||
ELF_LOG("mem size: %08x\n",proghead[i].p_memsz);
|
ELF_LOG("mem size: %08x",proghead[i].p_memsz);
|
||||||
ELF_LOG("flags: %08x\n",proghead[i].p_flags);
|
ELF_LOG("flags: %08x",proghead[i].p_flags);
|
||||||
ELF_LOG("palign: %08x\n",proghead[i].p_align);
|
ELF_LOG("palign: %08x",proghead[i].p_align);
|
||||||
ELF_LOG("\n");
|
ELF_LOG("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -424,14 +424,14 @@ struct ElfObject
|
||||||
}
|
}
|
||||||
|
|
||||||
ELF_LOG("\n");
|
ELF_LOG("\n");
|
||||||
ELF_LOG("flags: %08x\n", secthead[i].sh_flags);
|
ELF_LOG("flags: %08x", secthead[i].sh_flags);
|
||||||
ELF_LOG("addr: %08x\n", secthead[i].sh_addr);
|
ELF_LOG("addr: %08x", secthead[i].sh_addr);
|
||||||
ELF_LOG("offset: %08x\n", secthead[i].sh_offset);
|
ELF_LOG("offset: %08x", secthead[i].sh_offset);
|
||||||
ELF_LOG("size: %08x\n", secthead[i].sh_size);
|
ELF_LOG("size: %08x", secthead[i].sh_size);
|
||||||
ELF_LOG("link: %08x\n", secthead[i].sh_link);
|
ELF_LOG("link: %08x", secthead[i].sh_link);
|
||||||
ELF_LOG("info: %08x\n", secthead[i].sh_info);
|
ELF_LOG("info: %08x", secthead[i].sh_info);
|
||||||
ELF_LOG("addralign: %08x\n", secthead[i].sh_addralign);
|
ELF_LOG("addralign: %08x", secthead[i].sh_addralign);
|
||||||
ELF_LOG("entsize: %08x\n", secthead[i].sh_entsize);
|
ELF_LOG("entsize: %08x", secthead[i].sh_entsize);
|
||||||
// dump symbol table
|
// dump symbol table
|
||||||
|
|
||||||
if( secthead[ i ].sh_type == 0x02 )
|
if( secthead[ i ].sh_type == 0x02 )
|
||||||
|
@ -548,7 +548,7 @@ int loadElfFile(const char *filename)
|
||||||
elfobj.loadSectionHeaders();
|
elfobj.loadSectionHeaders();
|
||||||
|
|
||||||
cpuRegs.pc = elfobj.header.e_entry; //set pc to proper place
|
cpuRegs.pc = elfobj.header.e_entry; //set pc to proper place
|
||||||
ELF_LOG( "PC set to: %8.8lx\n", cpuRegs.pc );
|
ELF_LOG( "PC set to: %8.8lx", cpuRegs.pc );
|
||||||
|
|
||||||
cpuRegs.GPR.n.sp.UL[0] = 0x81f00000;
|
cpuRegs.GPR.n.sp.UL[0] = 0x81f00000;
|
||||||
cpuRegs.GPR.n.gp.UL[0] = 0x81f80000; // might not be 100% ok
|
cpuRegs.GPR.n.gp.UL[0] = 0x81f80000; // might not be 100% ok
|
||||||
|
@ -562,7 +562,7 @@ int loadElfFile(const char *filename)
|
||||||
}
|
}
|
||||||
|
|
||||||
ElfCRC = elfobj.GetCRC();
|
ElfCRC = elfobj.GetCRC();
|
||||||
Console::Status( "loadElfFile: %s; CRC = %8.8X\n", params filename, ElfCRC);
|
Console::Status( "loadElfFile: %s; CRC = %8.8X", params filename, ElfCRC);
|
||||||
|
|
||||||
ElfApplyPatches();
|
ElfApplyPatches();
|
||||||
LoadGameSpecificSettings();
|
LoadGameSpecificSettings();
|
||||||
|
|
|
@ -55,7 +55,7 @@ void __fastcall ReadFIFO_page_4(u32 mem, u64 *out)
|
||||||
{
|
{
|
||||||
jASSUME( (mem >= 0x10004000) && (mem < 0x10005000) );
|
jASSUME( (mem >= 0x10004000) && (mem < 0x10005000) );
|
||||||
|
|
||||||
VIF_LOG("ReadFIFO/VIF0 0x%08X\n", mem);
|
VIF_LOG("ReadFIFO/VIF0 0x%08X", mem);
|
||||||
//out[0] = psHu64(mem );
|
//out[0] = psHu64(mem );
|
||||||
//out[1] = psHu64(mem+8);
|
//out[1] = psHu64(mem+8);
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ void __fastcall ReadFIFO_page_5(u32 mem, u64 *out)
|
||||||
{
|
{
|
||||||
jASSUME( (mem >= 0x10005000) && (mem < 0x10006000) );
|
jASSUME( (mem >= 0x10005000) && (mem < 0x10006000) );
|
||||||
|
|
||||||
VIF_LOG("ReadFIFO/VIF1, addr=0x%08X\n", mem);
|
VIF_LOG("ReadFIFO/VIF1, addr=0x%08X", mem);
|
||||||
|
|
||||||
if( vif1Regs->stat & (VIF1_STAT_INT|VIF1_STAT_VSS|VIF1_STAT_VIS|VIF1_STAT_VFS) )
|
if( vif1Regs->stat & (VIF1_STAT_INT|VIF1_STAT_VSS|VIF1_STAT_VIS|VIF1_STAT_VFS) )
|
||||||
DevCon::Notice( "Reading from vif1 fifo when stalled" );
|
DevCon::Notice( "Reading from vif1 fifo when stalled" );
|
||||||
|
@ -127,7 +127,7 @@ void __fastcall WriteFIFO_page_4(u32 mem, const mem128_t *value)
|
||||||
{
|
{
|
||||||
jASSUME( (mem >= 0x10004000) && (mem < 0x10005000) );
|
jASSUME( (mem >= 0x10004000) && (mem < 0x10005000) );
|
||||||
|
|
||||||
VIF_LOG("WriteFIFO/VIF0, addr=0x%08X\n", mem);
|
VIF_LOG("WriteFIFO/VIF0, addr=0x%08X", mem);
|
||||||
|
|
||||||
//psHu64(mem ) = value[0];
|
//psHu64(mem ) = value[0];
|
||||||
//psHu64(mem+8) = value[1];
|
//psHu64(mem+8) = value[1];
|
||||||
|
@ -144,7 +144,7 @@ void __fastcall WriteFIFO_page_5(u32 mem, const mem128_t *value)
|
||||||
{
|
{
|
||||||
jASSUME( (mem >= 0x10005000) && (mem < 0x10006000) );
|
jASSUME( (mem >= 0x10005000) && (mem < 0x10006000) );
|
||||||
|
|
||||||
VIF_LOG("WriteFIFO/VIF1, addr=0x%08X\n", mem);
|
VIF_LOG("WriteFIFO/VIF1, addr=0x%08X", mem);
|
||||||
|
|
||||||
//psHu64(mem ) = value[0];
|
//psHu64(mem ) = value[0];
|
||||||
//psHu64(mem+8) = value[1];
|
//psHu64(mem+8) = value[1];
|
||||||
|
@ -165,7 +165,7 @@ void __fastcall WriteFIFO_page_5(u32 mem, const mem128_t *value)
|
||||||
void __fastcall WriteFIFO_page_6(u32 mem, const mem128_t *value)
|
void __fastcall WriteFIFO_page_6(u32 mem, const mem128_t *value)
|
||||||
{
|
{
|
||||||
jASSUME( (mem >= 0x10006000) && (mem < 0x10007000) );
|
jASSUME( (mem >= 0x10006000) && (mem < 0x10007000) );
|
||||||
GIF_LOG("WriteFIFO/GIF, addr=0x%08X\n", mem);
|
GIF_LOG("WriteFIFO/GIF, addr=0x%08X", mem);
|
||||||
|
|
||||||
//psHu64(mem ) = value[0];
|
//psHu64(mem ) = value[0];
|
||||||
//psHu64(mem+8) = value[1];
|
//psHu64(mem+8) = value[1];
|
||||||
|
@ -197,7 +197,7 @@ void __fastcall WriteFIFO_page_7(u32 mem, const mem128_t *value)
|
||||||
// All addresses in this page map to 0x7000 and 0x7010:
|
// All addresses in this page map to 0x7000 and 0x7010:
|
||||||
mem &= 0x10;
|
mem &= 0x10;
|
||||||
|
|
||||||
IPU_LOG( "WriteFIFO/IPU, addr=0x%x\n", params mem );
|
IPU_LOG( "WriteFIFO/IPU, addr=0x%x", params mem );
|
||||||
|
|
||||||
if( mem == 0 )
|
if( mem == 0 )
|
||||||
{
|
{
|
||||||
|
@ -206,7 +206,7 @@ void __fastcall WriteFIFO_page_7(u32 mem, const mem128_t *value)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
IPU_LOG("WriteFIFO IPU_in[%d] <- %8.8X_%8.8X_%8.8X_%8.8X\n",
|
IPU_LOG("WriteFIFO IPU_in[%d] <- %8.8X_%8.8X_%8.8X_%8.8X",
|
||||||
mem/16, ((u32*)value)[3], ((u32*)value)[2], ((u32*)value)[1], ((u32*)value)[0]);
|
mem/16, ((u32*)value)[3], ((u32*)value)[2], ((u32*)value)[1], ((u32*)value)[0]);
|
||||||
|
|
||||||
//committing every 16 bytes
|
//committing every 16 bytes
|
||||||
|
|
20
pcsx2/GS.cpp
20
pcsx2/GS.cpp
|
@ -366,7 +366,7 @@ __forceinline void gsWrite8(u32 mem, u8 value)
|
||||||
if( mtgsThread != NULL )
|
if( mtgsThread != NULL )
|
||||||
mtgsThread->SendSimplePacket(GS_RINGTYPE_MEMWRITE8, mem&0x13ff, value, 0);
|
mtgsThread->SendSimplePacket(GS_RINGTYPE_MEMWRITE8, mem&0x13ff, value, 0);
|
||||||
}
|
}
|
||||||
GIF_LOG("GS write 8 at %8.8lx with data %8.8lx\n", mem, value);
|
GIF_LOG("GS write 8 at %8.8lx with data %8.8lx", mem, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
__forceinline void _gsSMODEwrite( u32 mem, u32 value )
|
__forceinline void _gsSMODEwrite( u32 mem, u32 value )
|
||||||
|
@ -391,7 +391,7 @@ __forceinline void _gsSMODEwrite( u32 mem, u32 value )
|
||||||
|
|
||||||
__forceinline void gsWrite16(u32 mem, u16 value)
|
__forceinline void gsWrite16(u32 mem, u16 value)
|
||||||
{
|
{
|
||||||
GIF_LOG("GS write 16 at %8.8lx with data %8.8lx\n", mem, value);
|
GIF_LOG("GS write 16 at %8.8lx with data %8.8lx", mem, value);
|
||||||
|
|
||||||
_gsSMODEwrite( mem, value );
|
_gsSMODEwrite( mem, value );
|
||||||
|
|
||||||
|
@ -422,7 +422,7 @@ __forceinline void gsWrite16(u32 mem, u16 value)
|
||||||
__forceinline void gsWrite32(u32 mem, u32 value)
|
__forceinline void gsWrite32(u32 mem, u32 value)
|
||||||
{
|
{
|
||||||
jASSUME( (mem & 3) == 0 );
|
jASSUME( (mem & 3) == 0 );
|
||||||
GIF_LOG("GS write 32 at %8.8lx with data %8.8lx\n", mem, value);
|
GIF_LOG("GS write 32 at %8.8lx with data %8.8lx", mem, value);
|
||||||
|
|
||||||
_gsSMODEwrite( mem, value );
|
_gsSMODEwrite( mem, value );
|
||||||
|
|
||||||
|
@ -471,7 +471,7 @@ void __fastcall gsWrite64_page_01( u32 mem, const mem64_t* value )
|
||||||
void __fastcall gsWrite64_generic( u32 mem, const mem64_t* value )
|
void __fastcall gsWrite64_generic( u32 mem, const mem64_t* value )
|
||||||
{
|
{
|
||||||
const u32* const srcval32 = (u32*)value;
|
const u32* const srcval32 = (u32*)value;
|
||||||
GIF_LOG("GS Write64 at %8.8lx with data %8.8x_%8.8x\n", mem, srcval32[1], srcval32[0]);
|
GIF_LOG("GS Write64 at %8.8lx with data %8.8x_%8.8x", mem, srcval32[1], srcval32[0]);
|
||||||
|
|
||||||
*(u64*)PS2GS_BASE(mem) = *value;
|
*(u64*)PS2GS_BASE(mem) = *value;
|
||||||
|
|
||||||
|
@ -508,7 +508,7 @@ void __fastcall gsWrite128_generic( u32 mem, const mem128_t* value )
|
||||||
{
|
{
|
||||||
const u32* const srcval32 = (u32*)value;
|
const u32* const srcval32 = (u32*)value;
|
||||||
|
|
||||||
GIF_LOG("GS Write128 at %8.8lx with data %8.8x_%8.8x_%8.8x_%8.8x \n", mem,
|
GIF_LOG("GS Write128 at %8.8lx with data %8.8x_%8.8x_%8.8x_%8.8x", mem,
|
||||||
srcval32[3], srcval32[2], srcval32[1], srcval32[0]);
|
srcval32[3], srcval32[2], srcval32[1], srcval32[0]);
|
||||||
|
|
||||||
const uint masked_mem = mem & 0x13ff;
|
const uint masked_mem = mem & 0x13ff;
|
||||||
|
@ -528,7 +528,7 @@ void __fastcall gsWrite128_generic( u32 mem, const mem128_t* value )
|
||||||
// This function is left in for now for debugging/reference purposes.
|
// This function is left in for now for debugging/reference purposes.
|
||||||
__forceinline void gsWrite64(u32 mem, u64 value)
|
__forceinline void gsWrite64(u32 mem, u64 value)
|
||||||
{
|
{
|
||||||
GIF_LOG("GS write 64 at %8.8lx with data %8.8lx_%8.8lx\n", mem, ((u32*)&value)[1], (u32)value);
|
GIF_LOG("GS write 64 at %8.8lx with data %8.8lx_%8.8lx", mem, ((u32*)&value)[1], (u32)value);
|
||||||
|
|
||||||
switch (mem)
|
switch (mem)
|
||||||
{
|
{
|
||||||
|
@ -559,26 +559,26 @@ __forceinline void gsWrite64(u32 mem, u64 value)
|
||||||
|
|
||||||
__forceinline u8 gsRead8(u32 mem)
|
__forceinline u8 gsRead8(u32 mem)
|
||||||
{
|
{
|
||||||
GIF_LOG("GS read 8 from %8.8lx value: %8.8lx\n", mem, *(u8*)PS2GS_BASE(mem));
|
GIF_LOG("GS read 8 from %8.8lx value: %8.8lx", mem, *(u8*)PS2GS_BASE(mem));
|
||||||
return *(u8*)PS2GS_BASE(mem);
|
return *(u8*)PS2GS_BASE(mem);
|
||||||
}
|
}
|
||||||
|
|
||||||
__forceinline u16 gsRead16(u32 mem)
|
__forceinline u16 gsRead16(u32 mem)
|
||||||
{
|
{
|
||||||
GIF_LOG("GS read 16 from %8.8lx value: %8.8lx\n", mem, *(u16*)PS2GS_BASE(mem));
|
GIF_LOG("GS read 16 from %8.8lx value: %8.8lx", mem, *(u16*)PS2GS_BASE(mem));
|
||||||
return *(u16*)PS2GS_BASE(mem);
|
return *(u16*)PS2GS_BASE(mem);
|
||||||
}
|
}
|
||||||
|
|
||||||
__forceinline u32 gsRead32(u32 mem)
|
__forceinline u32 gsRead32(u32 mem)
|
||||||
{
|
{
|
||||||
GIF_LOG("GS read 32 from %8.8lx value: %8.8lx\n", mem, *(u32*)PS2GS_BASE(mem));
|
GIF_LOG("GS read 32 from %8.8lx value: %8.8lx", mem, *(u32*)PS2GS_BASE(mem));
|
||||||
return *(u32*)PS2GS_BASE(mem);
|
return *(u32*)PS2GS_BASE(mem);
|
||||||
}
|
}
|
||||||
|
|
||||||
__forceinline u64 gsRead64(u32 mem)
|
__forceinline u64 gsRead64(u32 mem)
|
||||||
{
|
{
|
||||||
// fixme - PS2GS_BASE(mem+4) = (g_RealGSMem+(mem + 4 & 0x13ff))
|
// fixme - PS2GS_BASE(mem+4) = (g_RealGSMem+(mem + 4 & 0x13ff))
|
||||||
GIF_LOG("GS read 64 from %8.8lx value: %8.8lx_%8.8lx\n", mem, *(u32*)PS2GS_BASE(mem+4), *(u32*)PS2GS_BASE(mem) );
|
GIF_LOG("GS read 64 from %8.8lx value: %8.8lx_%8.8lx", mem, *(u32*)PS2GS_BASE(mem+4), *(u32*)PS2GS_BASE(mem) );
|
||||||
return *(u64*)PS2GS_BASE(mem);
|
return *(u64*)PS2GS_BASE(mem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ static int gspath3done=0;
|
||||||
static int gscycles = 0;
|
static int gscycles = 0;
|
||||||
|
|
||||||
__forceinline void gsInterrupt() {
|
__forceinline void gsInterrupt() {
|
||||||
GIF_LOG("gsInterrupt: %8.8x\n", cpuRegs.cycle);
|
GIF_LOG("gsInterrupt: %8.8x", cpuRegs.cycle);
|
||||||
|
|
||||||
if((gif->chcr & 0x100) == 0){
|
if((gif->chcr & 0x100) == 0){
|
||||||
//Console::WriteLn("Eh? why are you still interrupting! chcr %x, qwc %x, done = %x", params gif->chcr, gif->qwc, done);
|
//Console::WriteLn("Eh? why are you still interrupting! chcr %x, qwc %x, done = %x", params gif->chcr, gif->qwc, done);
|
||||||
|
@ -161,7 +161,7 @@ void GIFdma()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GIF_LOG("dmaGIFstart chcr = %lx, madr = %lx, qwc = %lx\n tadr = %lx, asr0 = %lx, asr1 = %lx\n", gif->chcr, gif->madr, gif->qwc, gif->tadr, gif->asr0, gif->asr1);
|
GIF_LOG("dmaGIFstart chcr = %lx, madr = %lx, qwc = %lx\n tadr = %lx, asr0 = %lx, asr1 = %lx", gif->chcr, gif->madr, gif->qwc, gif->tadr, gif->asr0, gif->asr1);
|
||||||
|
|
||||||
#ifndef GSPATH3FIX
|
#ifndef GSPATH3FIX
|
||||||
if ( !(psHu32(GIF_MODE) & 0x4) ) {
|
if ( !(psHu32(GIF_MODE) & 0x4) ) {
|
||||||
|
@ -207,10 +207,10 @@ void GIFdma()
|
||||||
gif->qwc = (u16)ptag[0]; //QWC set to lower 16bits of the tag
|
gif->qwc = (u16)ptag[0]; //QWC set to lower 16bits of the tag
|
||||||
gif->madr = ptag[1]; //MADR = ADDR field
|
gif->madr = ptag[1]; //MADR = ADDR field
|
||||||
gspath3done = hwDmacSrcChainWithStack(gif, id);
|
gspath3done = hwDmacSrcChainWithStack(gif, id);
|
||||||
GIF_LOG("PTH3 MASK gifdmaChain %8.8x_%8.8x size=%d, id=%d, addr=%lx\n", ptag[1], ptag[0], gif->qwc, id, gif->madr);
|
GIF_LOG("PTH3 MASK gifdmaChain %8.8x_%8.8x size=%d, id=%d, addr=%lx", ptag[1], ptag[0], gif->qwc, id, gif->madr);
|
||||||
|
|
||||||
if ((gif->chcr & 0x80) && ptag[0] >> 31) { //Check TIE bit of CHCR and IRQ bit of tag
|
if ((gif->chcr & 0x80) && ptag[0] >> 31) { //Check TIE bit of CHCR and IRQ bit of tag
|
||||||
GIF_LOG("PATH3 MSK dmaIrq Set\n");
|
GIF_LOG("PATH3 MSK dmaIrq Set");
|
||||||
Console::WriteLn("GIF TIE");
|
Console::WriteLn("GIF TIE");
|
||||||
gspath3done |= 1;
|
gspath3done |= 1;
|
||||||
}
|
}
|
||||||
|
@ -285,7 +285,7 @@ void GIFdma()
|
||||||
gif->madr = ptag[1]; //MADR = ADDR field
|
gif->madr = ptag[1]; //MADR = ADDR field
|
||||||
|
|
||||||
gspath3done = hwDmacSrcChainWithStack(gif, id);
|
gspath3done = hwDmacSrcChainWithStack(gif, id);
|
||||||
GIF_LOG("gifdmaChain %8.8x_%8.8x size=%d, id=%d, addr=%lx\n", ptag[1], ptag[0], gif->qwc, id, gif->madr);
|
GIF_LOG("gifdmaChain %8.8x_%8.8x size=%d, id=%d, addr=%lx", ptag[1], ptag[0], gif->qwc, id, gif->madr);
|
||||||
|
|
||||||
if ((psHu32(DMAC_CTRL) & 0xC0) == 0x80) { // STD == GIF
|
if ((psHu32(DMAC_CTRL) & 0xC0) == 0x80) { // STD == GIF
|
||||||
// there are still bugs, need to also check if gif->madr +16*qwc >= stadr, if not, stall
|
// there are still bugs, need to also check if gif->madr +16*qwc >= stadr, if not, stall
|
||||||
|
@ -305,7 +305,7 @@ void GIFdma()
|
||||||
FreezeRegs(0);
|
FreezeRegs(0);
|
||||||
|
|
||||||
if ((gif->chcr & 0x80) && ptag[0] >> 31) { //Check TIE bit of CHCR and IRQ bit of tag
|
if ((gif->chcr & 0x80) && ptag[0] >> 31) { //Check TIE bit of CHCR and IRQ bit of tag
|
||||||
GIF_LOG("dmaIrq Set\n");
|
GIF_LOG("dmaIrq Set");
|
||||||
gspath3done = 1;
|
gspath3done = 1;
|
||||||
//gif->qwc = 0;
|
//gif->qwc = 0;
|
||||||
}
|
}
|
||||||
|
@ -500,7 +500,7 @@ void mfifoGIFtransfer(int qwc) {
|
||||||
if(!(gif->chcr & 0x100))return;
|
if(!(gif->chcr & 0x100))return;
|
||||||
if(gifstate == GIF_STATE_STALL) return;
|
if(gifstate == GIF_STATE_STALL) return;
|
||||||
}
|
}
|
||||||
SPR_LOG("mfifoGIFtransfer %x madr %x, tadr %x\n", gif->chcr, gif->madr, gif->tadr);
|
SPR_LOG("mfifoGIFtransfer %x madr %x, tadr %x", gif->chcr, gif->madr, gif->tadr);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -523,7 +523,7 @@ void mfifoGIFtransfer(int qwc) {
|
||||||
mfifocycles += 2;
|
mfifocycles += 2;
|
||||||
|
|
||||||
gif->chcr = ( gif->chcr & 0xFFFF ) | ( (*ptag) & 0xFFFF0000 );
|
gif->chcr = ( gif->chcr & 0xFFFF ) | ( (*ptag) & 0xFFFF0000 );
|
||||||
SPR_LOG("dmaChain %8.8x_%8.8x size=%d, id=%d, madr=%lx, tadr=%lx mfifo qwc = %x spr0 madr = %x\n",
|
SPR_LOG("dmaChain %8.8x_%8.8x size=%d, id=%d, madr=%lx, tadr=%lx mfifo qwc = %x spr0 madr = %x",
|
||||||
ptag[1], ptag[0], gif->qwc, id, gif->madr, gif->tadr, gifqwc, spr0->madr);
|
ptag[1], ptag[0], gif->qwc, id, gif->madr, gif->tadr, gifqwc, spr0->madr);
|
||||||
|
|
||||||
gifqwc--;
|
gifqwc--;
|
||||||
|
@ -559,14 +559,14 @@ void mfifoGIFtransfer(int qwc) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ((gif->chcr & 0x80) && (ptag[0] >> 31)) {
|
if ((gif->chcr & 0x80) && (ptag[0] >> 31)) {
|
||||||
SPR_LOG("dmaIrq Set\n");
|
SPR_LOG("dmaIrq Set");
|
||||||
gifstate = GIF_STATE_DONE;
|
gifstate = GIF_STATE_DONE;
|
||||||
gifmfifoirq = 1;
|
gifmfifoirq = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FreezeRegs(1);
|
FreezeRegs(1);
|
||||||
if (mfifoGIFchain() == -1) {
|
if (mfifoGIFchain() == -1) {
|
||||||
Console::WriteLn("GIF dmaChain error size=%d, madr=%lx, tadr=%lx\n", params
|
Console::WriteLn("GIF dmaChain error size=%d, madr=%lx, tadr=%lx", params
|
||||||
gif->qwc, gif->madr, gif->tadr);
|
gif->qwc, gif->madr, gif->tadr);
|
||||||
gifstate = GIF_STATE_STALL;
|
gifstate = GIF_STATE_STALL;
|
||||||
}
|
}
|
||||||
|
@ -575,7 +575,7 @@ void mfifoGIFtransfer(int qwc) {
|
||||||
if(gif->qwc == 0 && gifstate == GIF_STATE_DONE) gifstate = GIF_STATE_STALL;
|
if(gif->qwc == 0 && gifstate == GIF_STATE_DONE) gifstate = GIF_STATE_STALL;
|
||||||
CPU_INT(11,mfifocycles);
|
CPU_INT(11,mfifocycles);
|
||||||
|
|
||||||
SPR_LOG("mfifoGIFtransfer end %x madr %x, tadr %x\n", gif->chcr, gif->madr, gif->tadr);
|
SPR_LOG("mfifoGIFtransfer end %x madr %x, tadr %x", gif->chcr, gif->madr, gif->tadr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gifMFIFOInterrupt()
|
void gifMFIFOInterrupt()
|
||||||
|
|
104
pcsx2/Hw.cpp
104
pcsx2/Hw.cpp
|
@ -81,7 +81,7 @@ __forceinline void intcInterrupt()
|
||||||
}
|
}
|
||||||
if ((psHu32(INTC_STAT) & psHu32(INTC_MASK)) == 0) return;
|
if ((psHu32(INTC_STAT) & psHu32(INTC_MASK)) == 0) return;
|
||||||
|
|
||||||
HW_LOG("intcInterrupt %x\n", psHu32(INTC_STAT) & psHu32(INTC_MASK));
|
HW_LOG("intcInterrupt %x", psHu32(INTC_STAT) & psHu32(INTC_MASK));
|
||||||
if(psHu32(INTC_STAT) & 0x2){
|
if(psHu32(INTC_STAT) & 0x2){
|
||||||
counters[0].hold = rcntRcount(0);
|
counters[0].hold = rcntRcount(0);
|
||||||
counters[1].hold = rcntRcount(1);
|
counters[1].hold = rcntRcount(1);
|
||||||
|
@ -99,7 +99,7 @@ __forceinline void dmacInterrupt()
|
||||||
|
|
||||||
if((psHu32(DMAC_CTRL) & 0x1) == 0) return;
|
if((psHu32(DMAC_CTRL) & 0x1) == 0) return;
|
||||||
|
|
||||||
HW_LOG("dmacInterrupt %x\n", (psHu16(0xe012) & psHu16(0xe010) ||
|
HW_LOG("dmacInterrupt %x", (psHu16(0xe012) & psHu16(0xe010) ||
|
||||||
psHu16(0xe010) & 0x8000));
|
psHu16(0xe010) & 0x8000));
|
||||||
|
|
||||||
cpuException(0x800, cpuRegs.branch);
|
cpuException(0x800, cpuRegs.branch);
|
||||||
|
@ -402,20 +402,20 @@ mem32_t __fastcall hwRead32(u32 mem)
|
||||||
case D2_SADR: regName = "DMA2_SADDR"; break;
|
case D2_SADR: regName = "DMA2_SADDR"; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
HW_LOG( "Hardware Read32 at 0x%x (%s), value=0x%x\n", mem, regName, psHu32(mem) );
|
HW_LOG( "Hardware Read32 at 0x%x (%s), value=0x%x", mem, regName, psHu32(mem) );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x0b:
|
case 0x0b:
|
||||||
if( mem == D4_CHCR )
|
if( mem == D4_CHCR )
|
||||||
HW_LOG("Hardware Read32 at 0x%x (IPU1:DMA4_CHCR), value=0x%x\n", mem, psHu32(mem));
|
HW_LOG("Hardware Read32 at 0x%x (IPU1:DMA4_CHCR), value=0x%x", mem, psHu32(mem));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x0c:
|
case 0x0c:
|
||||||
case 0x0d:
|
case 0x0d:
|
||||||
case 0x0e:
|
case 0x0e:
|
||||||
if( mem == DMAC_STAT )
|
if( mem == DMAC_STAT )
|
||||||
HW_LOG("DMAC_STAT Read32, value=0x%x\n", psHu32(DMAC_STAT));
|
HW_LOG("DMAC_STAT Read32, value=0x%x", psHu32(DMAC_STAT));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
jNO_DEFAULT;
|
jNO_DEFAULT;
|
||||||
|
@ -486,163 +486,163 @@ __forceinline void __fastcall hwWrite32(u32 mem, u32 value)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case 0x10008000: // dma0 - vif0
|
case 0x10008000: // dma0 - vif0
|
||||||
DMA_LOG("VIF0dma %lx\n", value);
|
DMA_LOG("VIF0dma %lx", value);
|
||||||
DmaExec(dmaVIF0, mem, value);
|
DmaExec(dmaVIF0, mem, value);
|
||||||
break;
|
break;
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case 0x10009000: // dma1 - vif1 - chcr
|
case 0x10009000: // dma1 - vif1 - chcr
|
||||||
DMA_LOG("VIF1dma CHCR %lx\n", value);
|
DMA_LOG("VIF1dma CHCR %lx", value);
|
||||||
DmaExec(dmaVIF1, mem, value);
|
DmaExec(dmaVIF1, mem, value);
|
||||||
break;
|
break;
|
||||||
#ifdef PCSX2_DEVBUILD
|
#ifdef PCSX2_DEVBUILD
|
||||||
case 0x10009010: // dma1 - vif1 - madr
|
case 0x10009010: // dma1 - vif1 - madr
|
||||||
HW_LOG("VIF1dma Madr %lx\n", value);
|
HW_LOG("VIF1dma Madr %lx", value);
|
||||||
psHu32(mem) = value;//dma1 madr
|
psHu32(mem) = value;//dma1 madr
|
||||||
break;
|
break;
|
||||||
case 0x10009020: // dma1 - vif1 - qwc
|
case 0x10009020: // dma1 - vif1 - qwc
|
||||||
HW_LOG("VIF1dma QWC %lx\n", value);
|
HW_LOG("VIF1dma QWC %lx", value);
|
||||||
psHu32(mem) = value;//dma1 qwc
|
psHu32(mem) = value;//dma1 qwc
|
||||||
break;
|
break;
|
||||||
case 0x10009030: // dma1 - vif1 - tadr
|
case 0x10009030: // dma1 - vif1 - tadr
|
||||||
HW_LOG("VIF1dma TADR %lx\n", value);
|
HW_LOG("VIF1dma TADR %lx", value);
|
||||||
psHu32(mem) = value;//dma1 tadr
|
psHu32(mem) = value;//dma1 tadr
|
||||||
break;
|
break;
|
||||||
case 0x10009040: // dma1 - vif1 - asr0
|
case 0x10009040: // dma1 - vif1 - asr0
|
||||||
HW_LOG("VIF1dma ASR0 %lx\n", value);
|
HW_LOG("VIF1dma ASR0 %lx", value);
|
||||||
psHu32(mem) = value;//dma1 asr0
|
psHu32(mem) = value;//dma1 asr0
|
||||||
break;
|
break;
|
||||||
case 0x10009050: // dma1 - vif1 - asr1
|
case 0x10009050: // dma1 - vif1 - asr1
|
||||||
HW_LOG("VIF1dma ASR1 %lx\n", value);
|
HW_LOG("VIF1dma ASR1 %lx", value);
|
||||||
psHu32(mem) = value;//dma1 asr1
|
psHu32(mem) = value;//dma1 asr1
|
||||||
break;
|
break;
|
||||||
case 0x10009080: // dma1 - vif1 - sadr
|
case 0x10009080: // dma1 - vif1 - sadr
|
||||||
HW_LOG("VIF1dma SADR %lx\n", value);
|
HW_LOG("VIF1dma SADR %lx", value);
|
||||||
psHu32(mem) = value;//dma1 sadr
|
psHu32(mem) = value;//dma1 sadr
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case 0x1000a000: // dma2 - gif
|
case 0x1000a000: // dma2 - gif
|
||||||
DMA_LOG("0x%8.8x hwWrite32: GSdma %lx\n", cpuRegs.cycle, value);
|
DMA_LOG("0x%8.8x hwWrite32: GSdma %lx", cpuRegs.cycle, value);
|
||||||
DmaExec(dmaGIF, mem, value);
|
DmaExec(dmaGIF, mem, value);
|
||||||
break;
|
break;
|
||||||
#ifdef PCSX2_DEVBUILD
|
#ifdef PCSX2_DEVBUILD
|
||||||
case 0x1000a010:
|
case 0x1000a010:
|
||||||
psHu32(mem) = value;//dma2 madr
|
psHu32(mem) = value;//dma2 madr
|
||||||
HW_LOG("Hardware write DMA2_MADR 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write DMA2_MADR 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000a020:
|
case 0x1000a020:
|
||||||
psHu32(mem) = value;//dma2 qwc
|
psHu32(mem) = value;//dma2 qwc
|
||||||
HW_LOG("Hardware write DMA2_QWC 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write DMA2_QWC 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000a030:
|
case 0x1000a030:
|
||||||
psHu32(mem) = value;//dma2 taddr
|
psHu32(mem) = value;//dma2 taddr
|
||||||
HW_LOG("Hardware write DMA2_TADDR 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write DMA2_TADDR 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000a040:
|
case 0x1000a040:
|
||||||
psHu32(mem) = value;//dma2 asr0
|
psHu32(mem) = value;//dma2 asr0
|
||||||
HW_LOG("Hardware write DMA2_ASR0 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write DMA2_ASR0 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000a050:
|
case 0x1000a050:
|
||||||
psHu32(mem) = value;//dma2 asr1
|
psHu32(mem) = value;//dma2 asr1
|
||||||
HW_LOG("Hardware write DMA2_ASR1 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write DMA2_ASR1 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000a080:
|
case 0x1000a080:
|
||||||
psHu32(mem) = value;//dma2 saddr
|
psHu32(mem) = value;//dma2 saddr
|
||||||
HW_LOG("Hardware write DMA2_SADDR 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write DMA2_SADDR 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case 0x1000b000: // dma3 - fromIPU
|
case 0x1000b000: // dma3 - fromIPU
|
||||||
DMA_LOG("IPU0dma %lx\n", value);
|
DMA_LOG("IPU0dma %lx", value);
|
||||||
DmaExec(dmaIPU0, mem, value);
|
DmaExec(dmaIPU0, mem, value);
|
||||||
break;
|
break;
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
#ifdef PCSX2_DEVBUILD
|
#ifdef PCSX2_DEVBUILD
|
||||||
case 0x1000b010:
|
case 0x1000b010:
|
||||||
psHu32(mem) = value;//dma2 madr
|
psHu32(mem) = value;//dma2 madr
|
||||||
HW_LOG("Hardware write IPU0DMA_MADR 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write IPU0DMA_MADR 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000b020:
|
case 0x1000b020:
|
||||||
psHu32(mem) = value;//dma2 madr
|
psHu32(mem) = value;//dma2 madr
|
||||||
HW_LOG("Hardware write IPU0DMA_QWC 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write IPU0DMA_QWC 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000b030:
|
case 0x1000b030:
|
||||||
psHu32(mem) = value;//dma2 tadr
|
psHu32(mem) = value;//dma2 tadr
|
||||||
HW_LOG("Hardware write IPU0DMA_TADR 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write IPU0DMA_TADR 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000b080:
|
case 0x1000b080:
|
||||||
psHu32(mem) = value;//dma2 saddr
|
psHu32(mem) = value;//dma2 saddr
|
||||||
HW_LOG("Hardware write IPU0DMA_SADDR 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write IPU0DMA_SADDR 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case 0x1000b400: // dma4 - toIPU
|
case 0x1000b400: // dma4 - toIPU
|
||||||
DMA_LOG("IPU1dma %lx\n", value);
|
DMA_LOG("IPU1dma %lx", value);
|
||||||
DmaExec(dmaIPU1, mem, value);
|
DmaExec(dmaIPU1, mem, value);
|
||||||
break;
|
break;
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
#ifdef PCSX2_DEVBUILD
|
#ifdef PCSX2_DEVBUILD
|
||||||
case 0x1000b410:
|
case 0x1000b410:
|
||||||
psHu32(mem) = value;//dma2 madr
|
psHu32(mem) = value;//dma2 madr
|
||||||
HW_LOG("Hardware write IPU1DMA_MADR 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write IPU1DMA_MADR 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000b420:
|
case 0x1000b420:
|
||||||
psHu32(mem) = value;//dma2 madr
|
psHu32(mem) = value;//dma2 madr
|
||||||
HW_LOG("Hardware write IPU1DMA_QWC 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write IPU1DMA_QWC 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000b430:
|
case 0x1000b430:
|
||||||
psHu32(mem) = value;//dma2 tadr
|
psHu32(mem) = value;//dma2 tadr
|
||||||
HW_LOG("Hardware write IPU1DMA_TADR 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write IPU1DMA_TADR 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000b480:
|
case 0x1000b480:
|
||||||
psHu32(mem) = value;//dma2 saddr
|
psHu32(mem) = value;//dma2 saddr
|
||||||
HW_LOG("Hardware write IPU1DMA_SADDR 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write IPU1DMA_SADDR 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case 0x1000c000: // dma5 - sif0
|
case 0x1000c000: // dma5 - sif0
|
||||||
DMA_LOG("SIF0dma %lx\n", value);
|
DMA_LOG("SIF0dma %lx", value);
|
||||||
//if (value == 0) psxSu32(0x30) = 0x40000;
|
//if (value == 0) psxSu32(0x30) = 0x40000;
|
||||||
DmaExec(dmaSIF0, mem, value);
|
DmaExec(dmaSIF0, mem, value);
|
||||||
break;
|
break;
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case 0x1000c400: // dma6 - sif1
|
case 0x1000c400: // dma6 - sif1
|
||||||
DMA_LOG("SIF1dma %lx\n", value);
|
DMA_LOG("SIF1dma %lx", value);
|
||||||
DmaExec(dmaSIF1, mem, value);
|
DmaExec(dmaSIF1, mem, value);
|
||||||
break;
|
break;
|
||||||
#ifdef PCSX2_DEVBUILD
|
#ifdef PCSX2_DEVBUILD
|
||||||
case 0x1000c420: // dma6 - sif1 - qwc
|
case 0x1000c420: // dma6 - sif1 - qwc
|
||||||
HW_LOG("SIF1dma QWC = %lx\n", value);
|
HW_LOG("SIF1dma QWC = %lx", value);
|
||||||
psHu32(mem) = value;
|
psHu32(mem) = value;
|
||||||
break;
|
break;
|
||||||
case 0x1000c430: // dma6 - sif1 - tadr
|
case 0x1000c430: // dma6 - sif1 - tadr
|
||||||
HW_LOG("SIF1dma TADR = %lx\n", value);
|
HW_LOG("SIF1dma TADR = %lx", value);
|
||||||
psHu32(mem) = value;
|
psHu32(mem) = value;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case 0x1000c800: // dma7 - sif2
|
case 0x1000c800: // dma7 - sif2
|
||||||
DMA_LOG("SIF2dma %lx\n", value);
|
DMA_LOG("SIF2dma %lx", value);
|
||||||
DmaExec(dmaSIF2, mem, value);
|
DmaExec(dmaSIF2, mem, value);
|
||||||
break;
|
break;
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case 0x1000d000: // dma8 - fromSPR
|
case 0x1000d000: // dma8 - fromSPR
|
||||||
DMA_LOG("fromSPRdma %lx\n", value);
|
DMA_LOG("fromSPRdma %lx", value);
|
||||||
DmaExec(dmaSPR0, mem, value);
|
DmaExec(dmaSPR0, mem, value);
|
||||||
break;
|
break;
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case 0x1000d400: // dma9 - toSPR
|
case 0x1000d400: // dma9 - toSPR
|
||||||
DMA_LOG("toSPRdma %lx\n", value);
|
DMA_LOG("toSPRdma %lx", value);
|
||||||
DmaExec(dmaSPR1, mem, value);
|
DmaExec(dmaSPR1, mem, value);
|
||||||
break;
|
break;
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case 0x1000e000: // DMAC_CTRL
|
case 0x1000e000: // DMAC_CTRL
|
||||||
HW_LOG("DMAC_CTRL Write 32bit %x\n", value);
|
HW_LOG("DMAC_CTRL Write 32bit %x", value);
|
||||||
psHu32(0xe000) = value;
|
psHu32(0xe000) = value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1000e010: // DMAC_STAT
|
case 0x1000e010: // DMAC_STAT
|
||||||
HW_LOG("DMAC_STAT Write 32bit %x\n", value);
|
HW_LOG("DMAC_STAT Write 32bit %x", value);
|
||||||
psHu16(0xe010)&= ~(value & 0xffff); // clear on 1
|
psHu16(0xe010)&= ~(value & 0xffff); // clear on 1
|
||||||
psHu16(0xe012) ^= (u16)(value >> 16);
|
psHu16(0xe012) ^= (u16)(value >> 16);
|
||||||
|
|
||||||
|
@ -650,13 +650,13 @@ __forceinline void __fastcall hwWrite32(u32 mem, u32 value)
|
||||||
break;
|
break;
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case 0x1000f000: // INTC_STAT
|
case 0x1000f000: // INTC_STAT
|
||||||
HW_LOG("INTC_STAT Write 32bit %x\n", value);
|
HW_LOG("INTC_STAT Write 32bit %x", value);
|
||||||
psHu32(0xf000)&=~value;
|
psHu32(0xf000)&=~value;
|
||||||
//cpuTestINTCInts();
|
//cpuTestINTCInts();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1000f010: // INTC_MASK
|
case 0x1000f010: // INTC_MASK
|
||||||
HW_LOG("INTC_MASK Write 32bit %x\n", value);
|
HW_LOG("INTC_MASK Write 32bit %x", value);
|
||||||
psHu32(0xf010) ^= (u16)value;
|
psHu32(0xf010) ^= (u16)value;
|
||||||
cpuTestINTCInts();
|
cpuTestINTCInts();
|
||||||
break;
|
break;
|
||||||
|
@ -672,7 +672,7 @@ __forceinline void __fastcall hwWrite32(u32 mem, u32 value)
|
||||||
break;
|
break;
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case 0x1000f590: // DMAC_ENABLEW
|
case 0x1000f590: // DMAC_ENABLEW
|
||||||
HW_LOG("DMAC_ENABLEW Write 32bit %lx\n", value);
|
HW_LOG("DMAC_ENABLEW Write 32bit %lx", value);
|
||||||
psHu32(0xf590) = value;
|
psHu32(0xf590) = value;
|
||||||
psHu32(0xf520) = value;
|
psHu32(0xf520) = value;
|
||||||
return;
|
return;
|
||||||
|
@ -698,12 +698,12 @@ __forceinline void __fastcall hwWrite32(u32 mem, u32 value)
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case 0x1000f130:
|
case 0x1000f130:
|
||||||
case 0x1000f410:
|
case 0x1000f410:
|
||||||
HW_LOG("Unknown Hardware write 32 at %x with value %x (%x)\n", mem, value, cpuRegs.CP0.n.Status.val);
|
HW_LOG("Unknown Hardware write 32 at %x with value %x (%x)", mem, value, cpuRegs.CP0.n.Status.val);
|
||||||
break;
|
break;
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
default:
|
default:
|
||||||
psHu32(mem) = value;
|
psHu32(mem) = value;
|
||||||
HW_LOG("Unknown Hardware write 32 at %x with value %x (%x)\n", mem, value, cpuRegs.CP0.n.Status.val);
|
HW_LOG("Unknown Hardware write 32 at %x with value %x (%x)", mem, value, cpuRegs.CP0.n.Status.val);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -745,7 +745,7 @@ __forceinline void hwWrite64(u32 mem, u64 value)
|
||||||
|
|
||||||
case GIF_MODE:
|
case GIF_MODE:
|
||||||
#ifdef GSPATH3FIX
|
#ifdef GSPATH3FIX
|
||||||
Console::Status("GIFMODE64 %x\n", params value);
|
Console::Status("GIFMODE64 %x", params value);
|
||||||
#endif
|
#endif
|
||||||
psHu64(GIF_MODE) = value;
|
psHu64(GIF_MODE) = value;
|
||||||
if (value & 0x1) psHu32(GIF_STAT)|= 0x1;
|
if (value & 0x1) psHu32(GIF_STAT)|= 0x1;
|
||||||
|
@ -758,17 +758,17 @@ __forceinline void hwWrite64(u32 mem, u64 value)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case 0x1000a000: // dma2 - gif
|
case 0x1000a000: // dma2 - gif
|
||||||
DMA_LOG("0x%8.8x hwWrite64: GSdma %lx\n", cpuRegs.cycle, value);
|
DMA_LOG("0x%8.8x hwWrite64: GSdma %lx", cpuRegs.cycle, value);
|
||||||
DmaExec(dmaGIF, mem, value);
|
DmaExec(dmaGIF, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1000e000: // DMAC_CTRL
|
case 0x1000e000: // DMAC_CTRL
|
||||||
HW_LOG("DMAC_CTRL Write 64bit %x\n", value);
|
HW_LOG("DMAC_CTRL Write 64bit %x", value);
|
||||||
psHu64(mem) = value;
|
psHu64(mem) = value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1000e010: // DMAC_STAT
|
case 0x1000e010: // DMAC_STAT
|
||||||
HW_LOG("DMAC_STAT Write 64bit %x\n", value);
|
HW_LOG("DMAC_STAT Write 64bit %x", value);
|
||||||
val32 = (u32)value;
|
val32 = (u32)value;
|
||||||
psHu16(0xe010)&= ~(val32 & 0xffff); // clear on 1
|
psHu16(0xe010)&= ~(val32 & 0xffff); // clear on 1
|
||||||
val32 = val32 >> 16;
|
val32 = val32 >> 16;
|
||||||
|
@ -789,13 +789,13 @@ __forceinline void hwWrite64(u32 mem, u64 value)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1000f000: // INTC_STAT
|
case 0x1000f000: // INTC_STAT
|
||||||
HW_LOG("INTC_STAT Write 64bit %x\n", value);
|
HW_LOG("INTC_STAT Write 64bit %x", value);
|
||||||
psHu32(INTC_STAT)&=~value;
|
psHu32(INTC_STAT)&=~value;
|
||||||
cpuTestINTCInts();
|
cpuTestINTCInts();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1000f010: // INTC_MASK
|
case 0x1000f010: // INTC_MASK
|
||||||
HW_LOG("INTC_MASK Write 32bit %x\n", value);
|
HW_LOG("INTC_MASK Write 32bit %x", value);
|
||||||
for (i=0; i<16; i++) { // reverse on 1
|
for (i=0; i<16; i++) { // reverse on 1
|
||||||
const int s = (1<<i);
|
const int s = (1<<i);
|
||||||
if (value & s) {
|
if (value & s) {
|
||||||
|
@ -816,7 +816,7 @@ __forceinline void hwWrite64(u32 mem, u64 value)
|
||||||
default:
|
default:
|
||||||
psHu64(mem) = value;
|
psHu64(mem) = value;
|
||||||
|
|
||||||
HW_LOG("Unknown Hardware write 64 at %x with value %x (status=%x)\n",mem,value, cpuRegs.CP0.n.Status.val);
|
HW_LOG("Unknown Hardware write 64 at %x with value %x (status=%x)",mem,value, cpuRegs.CP0.n.Status.val);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -842,7 +842,7 @@ __forceinline void hwWrite128(u32 mem, const u64 *value)
|
||||||
psHu64(mem ) = value[0];
|
psHu64(mem ) = value[0];
|
||||||
psHu64(mem+8) = value[1];
|
psHu64(mem+8) = value[1];
|
||||||
|
|
||||||
HW_LOG("Unknown Hardware write 128 at %x with value %x_%x (status=%x)\n", mem, value[1], value[0], cpuRegs.CP0.n.Status.val);
|
HW_LOG("Unknown Hardware write 128 at %x with value %x_%x (status=%x)", mem, value[1], value[0], cpuRegs.CP0.n.Status.val);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -347,7 +347,7 @@ static __forceinline u8* dmaGetAddr(u32 mem)
|
||||||
static __forceinline void *dmaGetAddr(u32 addr) {
|
static __forceinline void *dmaGetAddr(u32 addr) {
|
||||||
u8 *ptr;
|
u8 *ptr;
|
||||||
|
|
||||||
// if (addr & 0xf) { DMA_LOG("*PCSX2*: DMA address not 128bit aligned: %8.8x\n", addr); }
|
// if (addr & 0xf) { DMA_LOG("*PCSX2*: DMA address not 128bit aligned: %8.8x", addr); }
|
||||||
|
|
||||||
if (addr & 0x80000000) { // teh sux why the f00k 0xE0000000
|
if (addr & 0x80000000) { // teh sux why the f00k 0xE0000000
|
||||||
return (void*)&psS[addr & 0x3ff0];
|
return (void*)&psS[addr & 0x3ff0];
|
||||||
|
|
|
@ -106,7 +106,7 @@ __forceinline u8 hwRead8(u32 mem)
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = psHu8(mem);
|
ret = psHu8(mem);
|
||||||
HW_LOG("Unknown Hardware Read 8 from 0x%x = 0x%x\n", mem, ret);
|
HW_LOG("Unknown Hardware Read 8 from 0x%x = 0x%x", mem, ret);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,7 +156,7 @@ __forceinline u16 hwRead16(u32 mem)
|
||||||
return (u16)ret;
|
return (u16)ret;
|
||||||
}
|
}
|
||||||
ret = psHu16(mem);
|
ret = psHu16(mem);
|
||||||
HW_LOG("Hardware Read16 at 0x%x, value= 0x%x\n", ret, mem);
|
HW_LOG("Hardware Read16 at 0x%x, value= 0x%x", ret, mem);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -217,11 +217,11 @@ static __forceinline mem32_t __hwRead32_page_0F( u32 mem, bool intchack )
|
||||||
case 0xf000:
|
case 0xf000:
|
||||||
if( intchack ) IntCHackCheck();
|
if( intchack ) IntCHackCheck();
|
||||||
// This one is checked alot, so leave it commented out unless you love 600 meg logfiles.
|
// This one is checked alot, so leave it commented out unless you love 600 meg logfiles.
|
||||||
//HW_LOG("INTC_STAT Read 32bit %x\n", psHu32(0xf010));
|
//HW_LOG("INTC_STAT Read 32bit %x", psHu32(0xf010));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0xf010:
|
case 0xf010:
|
||||||
HW_LOG("INTC_MASK Read32, value=0x%x\n", psHu32(INTC_MASK));
|
HW_LOG("INTC_MASK Read32, value=0x%x", psHu32(INTC_MASK));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0xf130: // 0x1000f130
|
case 0xf130: // 0x1000f130
|
||||||
|
@ -314,19 +314,19 @@ mem32_t __fastcall hwRead32_generic(u32 mem)
|
||||||
case D2_SADR: regName = "DMA2_SADDR"; break;
|
case D2_SADR: regName = "DMA2_SADDR"; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
HW_LOG( "Hardware Read32 at 0x%x (%s), value=0x%x\n", mem, regName, psHu32(mem) );
|
HW_LOG( "Hardware Read32 at 0x%x (%s), value=0x%x", mem, regName, psHu32(mem) );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x0b:
|
case 0x0b:
|
||||||
if( mem == D4_CHCR )
|
if( mem == D4_CHCR )
|
||||||
HW_LOG("Hardware Read32 at 0x%x (IPU1:DMA4_CHCR), value=0x%x\n", mem, psHu32(mem));
|
HW_LOG("Hardware Read32 at 0x%x (IPU1:DMA4_CHCR), value=0x%x", mem, psHu32(mem));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x0c:
|
case 0x0c:
|
||||||
case 0x0e:
|
case 0x0e:
|
||||||
if( mem == DMAC_STAT)
|
if( mem == DMAC_STAT)
|
||||||
HW_LOG("DMAC_STAT Read32, value=0x%x\n", psHu32(DMAC_STAT));
|
HW_LOG("DMAC_STAT Read32, value=0x%x", psHu32(DMAC_STAT));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
jNO_DEFAULT;
|
jNO_DEFAULT;
|
||||||
|
@ -358,13 +358,13 @@ void __fastcall hwRead64_generic_INTC_HACK(u32 mem, mem64_t* result )
|
||||||
if( mem == INTC_STAT ) IntCHackCheck();
|
if( mem == INTC_STAT ) IntCHackCheck();
|
||||||
|
|
||||||
*result = psHu64(mem);
|
*result = psHu64(mem);
|
||||||
HW_LOG("Unknown Hardware Read 64 at %x\n",mem);
|
HW_LOG("Unknown Hardware Read 64 at %x",mem);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __fastcall hwRead64_generic(u32 mem, mem64_t* result )
|
void __fastcall hwRead64_generic(u32 mem, mem64_t* result )
|
||||||
{
|
{
|
||||||
*result = psHu64(mem);
|
*result = psHu64(mem);
|
||||||
HW_LOG("Unknown Hardware Read 64 at %x\n",mem);
|
HW_LOG("Unknown Hardware Read 64 at %x",mem);
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -385,7 +385,7 @@ void __fastcall hwRead128_page_01(u32 mem, mem128_t* result )
|
||||||
void __fastcall hwRead128_page_02(u32 mem, mem128_t* result )
|
void __fastcall hwRead128_page_02(u32 mem, mem128_t* result )
|
||||||
{
|
{
|
||||||
// IPU is currently unhandled in 128 bit mode.
|
// IPU is currently unhandled in 128 bit mode.
|
||||||
HW_LOG("Unknown Hardware Read 128 at %x (IPU)\n",mem);
|
HW_LOG("Unknown Hardware Read 128 at %x (IPU)",mem);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __fastcall hwRead128_generic(u32 mem, mem128_t* out)
|
void __fastcall hwRead128_generic(u32 mem, mem128_t* out)
|
||||||
|
@ -393,5 +393,5 @@ void __fastcall hwRead128_generic(u32 mem, mem128_t* out)
|
||||||
out[0] = psHu64(mem);
|
out[0] = psHu64(mem);
|
||||||
out[1] = psHu64(mem+8);
|
out[1] = psHu64(mem+8);
|
||||||
|
|
||||||
HW_LOG("Unknown Hardware Read 128 at %x\n",mem);
|
HW_LOG("Unknown Hardware Read 128 at %x",mem);
|
||||||
}
|
}
|
||||||
|
|
|
@ -151,54 +151,54 @@ void hwWrite8(u32 mem, u8 value) {
|
||||||
// vif1Write32(mem & ~0x2, value << 16);
|
// vif1Write32(mem & ~0x2, value << 16);
|
||||||
// break;
|
// break;
|
||||||
case 0x10008001: // dma0 - vif0
|
case 0x10008001: // dma0 - vif0
|
||||||
DMA_LOG("VIF0dma EXECUTE, value=0x%x\n", value);
|
DMA_LOG("VIF0dma EXECUTE, value=0x%x", value);
|
||||||
DmaExec8(dmaVIF0, mem, value);
|
DmaExec8(dmaVIF0, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x10009001: // dma1 - vif1
|
case 0x10009001: // dma1 - vif1
|
||||||
DMA_LOG("VIF1dma EXECUTE, value=0x%x\n", value);
|
DMA_LOG("VIF1dma EXECUTE, value=0x%x", value);
|
||||||
if(value & 0x1) vif1.done = 0; //This must be done here! some games (ala Crash of the Titans) pause the dma to start MFIFO
|
if(value & 0x1) vif1.done = 0; //This must be done here! some games (ala Crash of the Titans) pause the dma to start MFIFO
|
||||||
DmaExec8(dmaVIF1, mem, value);
|
DmaExec8(dmaVIF1, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1000a001: // dma2 - gif
|
case 0x1000a001: // dma2 - gif
|
||||||
DMA_LOG("GSdma EXECUTE, value=0x%x\n", value);
|
DMA_LOG("GSdma EXECUTE, value=0x%x", value);
|
||||||
DmaExec8(dmaGIF, mem, value);
|
DmaExec8(dmaGIF, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1000b001: // dma3 - fromIPU
|
case 0x1000b001: // dma3 - fromIPU
|
||||||
DMA_LOG("IPU0dma EXECUTE, value=0x%x\n", value);
|
DMA_LOG("IPU0dma EXECUTE, value=0x%x", value);
|
||||||
DmaExec8(dmaIPU0, mem, value);
|
DmaExec8(dmaIPU0, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1000b401: // dma4 - toIPU
|
case 0x1000b401: // dma4 - toIPU
|
||||||
DMA_LOG("IPU1dma EXECUTE, value=0x%x\n", value);
|
DMA_LOG("IPU1dma EXECUTE, value=0x%x", value);
|
||||||
DmaExec8(dmaIPU1, mem, value);
|
DmaExec8(dmaIPU1, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1000c001: // dma5 - sif0
|
case 0x1000c001: // dma5 - sif0
|
||||||
DMA_LOG("SIF0dma EXECUTE, value=0x%x\n", value);
|
DMA_LOG("SIF0dma EXECUTE, value=0x%x", value);
|
||||||
// if (value == 0) psxSu32(0x30) = 0x40000;
|
// if (value == 0) psxSu32(0x30) = 0x40000;
|
||||||
DmaExec8(dmaSIF0, mem, value);
|
DmaExec8(dmaSIF0, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1000c401: // dma6 - sif1
|
case 0x1000c401: // dma6 - sif1
|
||||||
DMA_LOG("SIF1dma EXECUTE, value=0x%x\n", value);
|
DMA_LOG("SIF1dma EXECUTE, value=0x%x", value);
|
||||||
DmaExec8(dmaSIF1, mem, value);
|
DmaExec8(dmaSIF1, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1000c801: // dma7 - sif2
|
case 0x1000c801: // dma7 - sif2
|
||||||
DMA_LOG("SIF2dma EXECUTE, value=0x%x\n", value);
|
DMA_LOG("SIF2dma EXECUTE, value=0x%x", value);
|
||||||
DmaExec8(dmaSIF2, mem, value);
|
DmaExec8(dmaSIF2, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1000d001: // dma8 - fromSPR
|
case 0x1000d001: // dma8 - fromSPR
|
||||||
DMA_LOG("fromSPRdma8 EXECUTE, value=0x%x\n", value);
|
DMA_LOG("fromSPRdma8 EXECUTE, value=0x%x", value);
|
||||||
DmaExec8(dmaSPR0, mem, value);
|
DmaExec8(dmaSPR0, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1000d401: // dma9 - toSPR
|
case 0x1000d401: // dma9 - toSPR
|
||||||
DMA_LOG("toSPRdma8 EXECUTE, value=0x%x\n", value);
|
DMA_LOG("toSPRdma8 EXECUTE, value=0x%x", value);
|
||||||
DmaExec8(dmaSPR1, mem, value);
|
DmaExec8(dmaSPR1, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -227,7 +227,7 @@ void hwWrite8(u32 mem, u8 value) {
|
||||||
default:
|
default:
|
||||||
psHu8(mem) = value;
|
psHu8(mem) = value;
|
||||||
}
|
}
|
||||||
HW_LOG("Unknown Hardware write 8 at %x with value %x\n", mem, value);
|
HW_LOG("Unknown Hardware write 8 at %x with value %x", mem, value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -258,125 +258,125 @@ __forceinline void hwWrite16(u32 mem, u16 value)
|
||||||
case 0x10001820: rcntWtarget(3, value); break;
|
case 0x10001820: rcntWtarget(3, value); break;
|
||||||
|
|
||||||
case 0x10008000: // dma0 - vif0
|
case 0x10008000: // dma0 - vif0
|
||||||
DMA_LOG("VIF0dma %lx\n", value);
|
DMA_LOG("VIF0dma %lx", value);
|
||||||
DmaExec16(dmaVIF0, mem, value);
|
DmaExec16(dmaVIF0, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x10009000: // dma1 - vif1 - chcr
|
case 0x10009000: // dma1 - vif1 - chcr
|
||||||
DMA_LOG("VIF1dma CHCR %lx\n", value);
|
DMA_LOG("VIF1dma CHCR %lx", value);
|
||||||
if(value & 0x100) vif1.done = 0; //This must be done here! some games (ala Crash of the Titans) pause the dma to start MFIFO
|
if(value & 0x100) vif1.done = 0; //This must be done here! some games (ala Crash of the Titans) pause the dma to start MFIFO
|
||||||
DmaExec16(dmaVIF1, mem, value);
|
DmaExec16(dmaVIF1, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef PCSX2_DEVBUILD
|
#ifdef PCSX2_DEVBUILD
|
||||||
case 0x10009010: // dma1 - vif1 - madr
|
case 0x10009010: // dma1 - vif1 - madr
|
||||||
HW_LOG("VIF1dma Madr %lx\n", value);
|
HW_LOG("VIF1dma Madr %lx", value);
|
||||||
psHu16(mem) = value;//dma1 madr
|
psHu16(mem) = value;//dma1 madr
|
||||||
break;
|
break;
|
||||||
case 0x10009020: // dma1 - vif1 - qwc
|
case 0x10009020: // dma1 - vif1 - qwc
|
||||||
HW_LOG("VIF1dma QWC %lx\n", value);
|
HW_LOG("VIF1dma QWC %lx", value);
|
||||||
psHu16(mem) = value;//dma1 qwc
|
psHu16(mem) = value;//dma1 qwc
|
||||||
break;
|
break;
|
||||||
case 0x10009030: // dma1 - vif1 - tadr
|
case 0x10009030: // dma1 - vif1 - tadr
|
||||||
HW_LOG("VIF1dma TADR %lx\n", value);
|
HW_LOG("VIF1dma TADR %lx", value);
|
||||||
psHu16(mem) = value;//dma1 tadr
|
psHu16(mem) = value;//dma1 tadr
|
||||||
break;
|
break;
|
||||||
case 0x10009040: // dma1 - vif1 - asr0
|
case 0x10009040: // dma1 - vif1 - asr0
|
||||||
HW_LOG("VIF1dma ASR0 %lx\n", value);
|
HW_LOG("VIF1dma ASR0 %lx", value);
|
||||||
psHu16(mem) = value;//dma1 asr0
|
psHu16(mem) = value;//dma1 asr0
|
||||||
break;
|
break;
|
||||||
case 0x10009050: // dma1 - vif1 - asr1
|
case 0x10009050: // dma1 - vif1 - asr1
|
||||||
HW_LOG("VIF1dma ASR1 %lx\n", value);
|
HW_LOG("VIF1dma ASR1 %lx", value);
|
||||||
psHu16(mem) = value;//dma1 asr1
|
psHu16(mem) = value;//dma1 asr1
|
||||||
break;
|
break;
|
||||||
case 0x10009080: // dma1 - vif1 - sadr
|
case 0x10009080: // dma1 - vif1 - sadr
|
||||||
HW_LOG("VIF1dma SADR %lx\n", value);
|
HW_LOG("VIF1dma SADR %lx", value);
|
||||||
psHu16(mem) = value;//dma1 sadr
|
psHu16(mem) = value;//dma1 sadr
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
// ---------------------------------------------------
|
// ---------------------------------------------------
|
||||||
|
|
||||||
case 0x1000a000: // dma2 - gif
|
case 0x1000a000: // dma2 - gif
|
||||||
DMA_LOG("0x%8.8x hwWrite32: GSdma %lx\n", cpuRegs.cycle, value);
|
DMA_LOG("0x%8.8x hwWrite32: GSdma %lx", cpuRegs.cycle, value);
|
||||||
DmaExec16(dmaGIF, mem, value);
|
DmaExec16(dmaGIF, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef PCSX2_DEVBUILD
|
#ifdef PCSX2_DEVBUILD
|
||||||
case 0x1000a010:
|
case 0x1000a010:
|
||||||
psHu16(mem) = value;//dma2 madr
|
psHu16(mem) = value;//dma2 madr
|
||||||
HW_LOG("Hardware write DMA2_MADR 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write DMA2_MADR 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000a020:
|
case 0x1000a020:
|
||||||
psHu16(mem) = value;//dma2 qwc
|
psHu16(mem) = value;//dma2 qwc
|
||||||
HW_LOG("Hardware write DMA2_QWC 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write DMA2_QWC 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000a030:
|
case 0x1000a030:
|
||||||
psHu16(mem) = value;//dma2 taddr
|
psHu16(mem) = value;//dma2 taddr
|
||||||
HW_LOG("Hardware write DMA2_TADDR 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write DMA2_TADDR 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000a040:
|
case 0x1000a040:
|
||||||
psHu16(mem) = value;//dma2 asr0
|
psHu16(mem) = value;//dma2 asr0
|
||||||
HW_LOG("Hardware write DMA2_ASR0 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write DMA2_ASR0 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000a050:
|
case 0x1000a050:
|
||||||
psHu16(mem) = value;//dma2 asr1
|
psHu16(mem) = value;//dma2 asr1
|
||||||
HW_LOG("Hardware write DMA2_ASR1 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write DMA2_ASR1 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000a080:
|
case 0x1000a080:
|
||||||
psHu16(mem) = value;//dma2 saddr
|
psHu16(mem) = value;//dma2 saddr
|
||||||
HW_LOG("Hardware write DMA2_SADDR 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write DMA2_SADDR 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case 0x1000b000: // dma3 - fromIPU
|
case 0x1000b000: // dma3 - fromIPU
|
||||||
DMA_LOG("IPU0dma %lx\n", value);
|
DMA_LOG("IPU0dma %lx", value);
|
||||||
DmaExec16(dmaIPU0, mem, value);
|
DmaExec16(dmaIPU0, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef PCSX2_DEVBUILD
|
#ifdef PCSX2_DEVBUILD
|
||||||
case 0x1000b010:
|
case 0x1000b010:
|
||||||
psHu16(mem) = value;//dma2 madr
|
psHu16(mem) = value;//dma2 madr
|
||||||
HW_LOG("Hardware write IPU0DMA_MADR 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write IPU0DMA_MADR 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000b020:
|
case 0x1000b020:
|
||||||
psHu16(mem) = value;//dma2 madr
|
psHu16(mem) = value;//dma2 madr
|
||||||
HW_LOG("Hardware write IPU0DMA_QWC 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write IPU0DMA_QWC 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000b030:
|
case 0x1000b030:
|
||||||
psHu16(mem) = value;//dma2 tadr
|
psHu16(mem) = value;//dma2 tadr
|
||||||
HW_LOG("Hardware write IPU0DMA_TADR 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write IPU0DMA_TADR 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000b080:
|
case 0x1000b080:
|
||||||
psHu16(mem) = value;//dma2 saddr
|
psHu16(mem) = value;//dma2 saddr
|
||||||
HW_LOG("Hardware write IPU0DMA_SADDR 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write IPU0DMA_SADDR 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case 0x1000b400: // dma4 - toIPU
|
case 0x1000b400: // dma4 - toIPU
|
||||||
DMA_LOG("IPU1dma %lx\n", value);
|
DMA_LOG("IPU1dma %lx", value);
|
||||||
DmaExec16(dmaIPU1, mem, value);
|
DmaExec16(dmaIPU1, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef PCSX2_DEVBUILD
|
#ifdef PCSX2_DEVBUILD
|
||||||
case 0x1000b410:
|
case 0x1000b410:
|
||||||
psHu16(mem) = value;//dma2 madr
|
psHu16(mem) = value;//dma2 madr
|
||||||
HW_LOG("Hardware write IPU1DMA_MADR 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write IPU1DMA_MADR 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000b420:
|
case 0x1000b420:
|
||||||
psHu16(mem) = value;//dma2 madr
|
psHu16(mem) = value;//dma2 madr
|
||||||
HW_LOG("Hardware write IPU1DMA_QWC 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write IPU1DMA_QWC 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000b430:
|
case 0x1000b430:
|
||||||
psHu16(mem) = value;//dma2 tadr
|
psHu16(mem) = value;//dma2 tadr
|
||||||
HW_LOG("Hardware write IPU1DMA_TADR 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write IPU1DMA_TADR 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
case 0x1000b480:
|
case 0x1000b480:
|
||||||
psHu16(mem) = value;//dma2 saddr
|
psHu16(mem) = value;//dma2 saddr
|
||||||
HW_LOG("Hardware write IPU1DMA_SADDR 32bit at %x with value %x\n",mem,value);
|
HW_LOG("Hardware write IPU1DMA_SADDR 32bit at %x with value %x",mem,value);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case 0x1000c000: // dma5 - sif0
|
case 0x1000c000: // dma5 - sif0
|
||||||
DMA_LOG("SIF0dma %lx\n", value);
|
DMA_LOG("SIF0dma %lx", value);
|
||||||
// if (value == 0) psxSu32(0x30) = 0x40000;
|
// if (value == 0) psxSu32(0x30) = 0x40000;
|
||||||
DmaExec16(dmaSIF0, mem, value);
|
DmaExec16(dmaSIF0, mem, value);
|
||||||
break;
|
break;
|
||||||
|
@ -385,36 +385,36 @@ __forceinline void hwWrite16(u32 mem, u16 value)
|
||||||
//?
|
//?
|
||||||
break;
|
break;
|
||||||
case 0x1000c400: // dma6 - sif1
|
case 0x1000c400: // dma6 - sif1
|
||||||
DMA_LOG("SIF1dma %lx\n", value);
|
DMA_LOG("SIF1dma %lx", value);
|
||||||
DmaExec16(dmaSIF1, mem, value);
|
DmaExec16(dmaSIF1, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef PCSX2_DEVBUILD
|
#ifdef PCSX2_DEVBUILD
|
||||||
case 0x1000c420: // dma6 - sif1 - qwc
|
case 0x1000c420: // dma6 - sif1 - qwc
|
||||||
HW_LOG("SIF1dma QWC = %lx\n", value);
|
HW_LOG("SIF1dma QWC = %lx", value);
|
||||||
psHu16(mem) = value;
|
psHu16(mem) = value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1000c430: // dma6 - sif1 - tadr
|
case 0x1000c430: // dma6 - sif1 - tadr
|
||||||
HW_LOG("SIF1dma TADR = %lx\n", value);
|
HW_LOG("SIF1dma TADR = %lx", value);
|
||||||
psHu16(mem) = value;
|
psHu16(mem) = value;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case 0x1000c800: // dma7 - sif2
|
case 0x1000c800: // dma7 - sif2
|
||||||
DMA_LOG("SIF2dma %lx\n", value);
|
DMA_LOG("SIF2dma %lx", value);
|
||||||
DmaExec16(dmaSIF2, mem, value);
|
DmaExec16(dmaSIF2, mem, value);
|
||||||
break;
|
break;
|
||||||
case 0x1000c802:
|
case 0x1000c802:
|
||||||
//?
|
//?
|
||||||
break;
|
break;
|
||||||
case 0x1000d000: // dma8 - fromSPR
|
case 0x1000d000: // dma8 - fromSPR
|
||||||
DMA_LOG("fromSPRdma %lx\n", value);
|
DMA_LOG("fromSPRdma %lx", value);
|
||||||
DmaExec16(dmaSPR0, mem, value);
|
DmaExec16(dmaSPR0, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1000d400: // dma9 - toSPR
|
case 0x1000d400: // dma9 - toSPR
|
||||||
DMA_LOG("toSPRdma %lx\n", value);
|
DMA_LOG("toSPRdma %lx", value);
|
||||||
DmaExec16(dmaSPR1, mem, value);
|
DmaExec16(dmaSPR1, mem, value);
|
||||||
break;
|
break;
|
||||||
case 0x1000f592: // DMAC_ENABLEW
|
case 0x1000f592: // DMAC_ENABLEW
|
||||||
|
@ -451,7 +451,7 @@ __forceinline void hwWrite16(u32 mem, u16 value)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
psHu16(mem) = value;
|
psHu16(mem) = value;
|
||||||
HW_LOG("Unknown Hardware write 16 at %x with value %x\n",mem,value);
|
HW_LOG("Unknown Hardware write 16 at %x with value %x",mem,value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -574,7 +574,7 @@ void __fastcall hwWrite32_page_0B( u32 mem, u32 value )
|
||||||
case D4_SADR: regName = "IPU1DMA_SADDR"; break;
|
case D4_SADR: regName = "IPU1DMA_SADDR"; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
HW_LOG( "Hardware Write32 at 0x%x (%s), value=0x%x\n", mem, regName, value );
|
HW_LOG( "Hardware Write32 at 0x%x (%s), value=0x%x", mem, regName, value );
|
||||||
psHu32(mem) = value;
|
psHu32(mem) = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -582,11 +582,11 @@ void __fastcall hwWrite32_page_0E( u32 mem, u32 value )
|
||||||
{
|
{
|
||||||
if( mem == DMAC_CTRL )
|
if( mem == DMAC_CTRL )
|
||||||
{
|
{
|
||||||
HW_LOG("DMAC_CTRL Write 32bit %x\n", value);
|
HW_LOG("DMAC_CTRL Write 32bit %x", value);
|
||||||
}
|
}
|
||||||
else if( mem == DMAC_STAT )
|
else if( mem == DMAC_STAT )
|
||||||
{
|
{
|
||||||
HW_LOG("DMAC_STAT Write 32bit %x\n", value);
|
HW_LOG("DMAC_STAT Write 32bit %x", value);
|
||||||
|
|
||||||
// lower 16 bits: clear on 1
|
// lower 16 bits: clear on 1
|
||||||
// upper 16 bits: reverse on 1
|
// upper 16 bits: reverse on 1
|
||||||
|
@ -611,13 +611,13 @@ void __fastcall hwWrite32_page_0F( u32 mem, u32 value )
|
||||||
switch( HELPSWITCH(mem) )
|
switch( HELPSWITCH(mem) )
|
||||||
{
|
{
|
||||||
case HELPSWITCH(INTC_STAT):
|
case HELPSWITCH(INTC_STAT):
|
||||||
HW_LOG("INTC_STAT Write 32bit %x\n", value);
|
HW_LOG("INTC_STAT Write 32bit %x", value);
|
||||||
psHu32(INTC_STAT) &= ~value;
|
psHu32(INTC_STAT) &= ~value;
|
||||||
//cpuTestINTCInts();
|
//cpuTestINTCInts();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HELPSWITCH(INTC_MASK):
|
case HELPSWITCH(INTC_MASK):
|
||||||
HW_LOG("INTC_MASK Write 32bit %x\n", value);
|
HW_LOG("INTC_MASK Write 32bit %x", value);
|
||||||
psHu32(INTC_MASK) ^= (u16)value;
|
psHu32(INTC_MASK) ^= (u16)value;
|
||||||
cpuTestINTCInts();
|
cpuTestINTCInts();
|
||||||
break;
|
break;
|
||||||
|
@ -653,7 +653,7 @@ void __fastcall hwWrite32_page_0F( u32 mem, u32 value )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HELPSWITCH(0x1000f590): // DMAC_ENABLEW
|
case HELPSWITCH(0x1000f590): // DMAC_ENABLEW
|
||||||
HW_LOG("DMAC_ENABLEW Write 32bit %lx\n", value);
|
HW_LOG("DMAC_ENABLEW Write 32bit %lx", value);
|
||||||
psHu32(0xf590) = value;
|
psHu32(0xf590) = value;
|
||||||
psHu32(0xf520) = value;
|
psHu32(0xf520) = value;
|
||||||
break;
|
break;
|
||||||
|
@ -661,7 +661,7 @@ void __fastcall hwWrite32_page_0F( u32 mem, u32 value )
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case HELPSWITCH(0x1000f130):
|
case HELPSWITCH(0x1000f130):
|
||||||
case HELPSWITCH(0x1000f410):
|
case HELPSWITCH(0x1000f410):
|
||||||
HW_LOG("Unknown Hardware write 32 at %x with value %x (%x)\n", mem, value, cpuRegs.CP0.n.Status.val);
|
HW_LOG("Unknown Hardware write 32 at %x with value %x (%x)", mem, value, cpuRegs.CP0.n.Status.val);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -677,13 +677,13 @@ void __fastcall hwWrite32_generic( u32 mem, u32 value )
|
||||||
switch (mem)
|
switch (mem)
|
||||||
{
|
{
|
||||||
case D0_CHCR: // dma0 - vif0
|
case D0_CHCR: // dma0 - vif0
|
||||||
DMA_LOG("VIF0dma EXECUTE, value=0x%x\n", value);
|
DMA_LOG("VIF0dma EXECUTE, value=0x%x", value);
|
||||||
DmaExec(dmaVIF0, mem, value);
|
DmaExec(dmaVIF0, mem, value);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case D1_CHCR: // dma1 - vif1 - chcr
|
case D1_CHCR: // dma1 - vif1 - chcr
|
||||||
DMA_LOG("VIF1dma EXECUTE, value=0x%x\n", value);
|
DMA_LOG("VIF1dma EXECUTE, value=0x%x", value);
|
||||||
if(value & 0x100)
|
if(value & 0x100)
|
||||||
{
|
{
|
||||||
vif1.done = 0; //This must be done here! some games (ala Crash of the Titans) pause the dma to start MFIFO
|
vif1.done = 0; //This must be done here! some games (ala Crash of the Titans) pause the dma to start MFIFO
|
||||||
|
@ -713,13 +713,13 @@ void __fastcall hwWrite32_generic( u32 mem, u32 value )
|
||||||
|
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case 0x1000c000: // dma5 - sif0
|
case 0x1000c000: // dma5 - sif0
|
||||||
DMA_LOG("SIF0dma EXECUTE, value=0x%x\n", value);
|
DMA_LOG("SIF0dma EXECUTE, value=0x%x", value);
|
||||||
//if (value == 0) psxSu32(0x30) = 0x40000;
|
//if (value == 0) psxSu32(0x30) = 0x40000;
|
||||||
DmaExec(dmaSIF0, mem, value);
|
DmaExec(dmaSIF0, mem, value);
|
||||||
return;
|
return;
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case 0x1000c400: // dma6 - sif1
|
case 0x1000c400: // dma6 - sif1
|
||||||
DMA_LOG("SIF1dma EXECUTE, value=0x%x\n", value);
|
DMA_LOG("SIF1dma EXECUTE, value=0x%x", value);
|
||||||
DmaExec(dmaSIF1, mem, value);
|
DmaExec(dmaSIF1, mem, value);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -728,21 +728,21 @@ void __fastcall hwWrite32_generic( u32 mem, u32 value )
|
||||||
|
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case 0x1000c800: // dma7 - sif2
|
case 0x1000c800: // dma7 - sif2
|
||||||
DMA_LOG("SIF2dma EXECUTE, value=0x%x\n", value);
|
DMA_LOG("SIF2dma EXECUTE, value=0x%x", value);
|
||||||
DmaExec(dmaSIF2, mem, value);
|
DmaExec(dmaSIF2, mem, value);
|
||||||
return;
|
return;
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case 0x1000d000: // dma8 - fromSPR
|
case 0x1000d000: // dma8 - fromSPR
|
||||||
DMA_LOG("SPR0dma EXECUTE (fromSPR), value=0x%x\n", value);
|
DMA_LOG("SPR0dma EXECUTE (fromSPR), value=0x%x", value);
|
||||||
DmaExec(dmaSPR0, mem, value);
|
DmaExec(dmaSPR0, mem, value);
|
||||||
return;
|
return;
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
case 0x1000d400: // dma9 - toSPR
|
case 0x1000d400: // dma9 - toSPR
|
||||||
DMA_LOG("SPR1dma EXECUTE (toSPR), value=0x%x\n", value);
|
DMA_LOG("SPR1dma EXECUTE (toSPR), value=0x%x", value);
|
||||||
DmaExec(dmaSPR1, mem, value);
|
DmaExec(dmaSPR1, mem, value);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
HW_LOG( "Hardware Write32 at 0x%x (%s), value=0x%x\n", mem, regName, value );
|
HW_LOG( "Hardware Write32 at 0x%x (%s), value=0x%x", mem, regName, value );
|
||||||
psHu32(mem) = value;
|
psHu32(mem) = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -789,7 +789,7 @@ void __fastcall hwWrite64_page_03( u32 mem, const mem64_t* srcval )
|
||||||
case GIF_MODE:
|
case GIF_MODE:
|
||||||
{
|
{
|
||||||
#ifdef GSPATH3FIX
|
#ifdef GSPATH3FIX
|
||||||
Console::Status("GIFMODE64 %x\n", params value);
|
Console::Status("GIFMODE64 %x", params value);
|
||||||
#endif
|
#endif
|
||||||
psHu64(GIF_MODE) = value;
|
psHu64(GIF_MODE) = value;
|
||||||
|
|
||||||
|
@ -812,11 +812,11 @@ void __fastcall hwWrite64_page_0E( u32 mem, const mem64_t* srcval )
|
||||||
|
|
||||||
if( mem == DMAC_CTRL )
|
if( mem == DMAC_CTRL )
|
||||||
{
|
{
|
||||||
HW_LOG("DMAC_CTRL Write 64bit %x\n", value);
|
HW_LOG("DMAC_CTRL Write 64bit %x", value);
|
||||||
}
|
}
|
||||||
else if( mem == DMAC_STAT )
|
else if( mem == DMAC_STAT )
|
||||||
{
|
{
|
||||||
HW_LOG("DMAC_STAT Write 64bit %x\n", value);
|
HW_LOG("DMAC_STAT Write 64bit %x", value);
|
||||||
|
|
||||||
// lower 16 bits: clear on 1
|
// lower 16 bits: clear on 1
|
||||||
// upper 16 bits: reverse on 1
|
// upper 16 bits: reverse on 1
|
||||||
|
@ -840,18 +840,18 @@ void __fastcall hwWrite64_generic( u32 mem, const mem64_t* srcval )
|
||||||
switch (mem)
|
switch (mem)
|
||||||
{
|
{
|
||||||
case 0x1000a000: // dma2 - gif
|
case 0x1000a000: // dma2 - gif
|
||||||
DMA_LOG("0x%8.8x hwWrite64: GSdma %x\n", cpuRegs.cycle, value);
|
DMA_LOG("0x%8.8x hwWrite64: GSdma %x", cpuRegs.cycle, value);
|
||||||
DmaExec(dmaGIF, mem, value);
|
DmaExec(dmaGIF, mem, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case INTC_STAT:
|
case INTC_STAT:
|
||||||
HW_LOG("INTC_STAT Write 64bit %x\n", (u32)value);
|
HW_LOG("INTC_STAT Write 64bit %x", (u32)value);
|
||||||
psHu32(INTC_STAT) &= ~value;
|
psHu32(INTC_STAT) &= ~value;
|
||||||
//cpuTestINTCInts();
|
//cpuTestINTCInts();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case INTC_MASK:
|
case INTC_MASK:
|
||||||
HW_LOG("INTC_MASK Write 64bit %x\n", (u32)value);
|
HW_LOG("INTC_MASK Write 64bit %x", (u32)value);
|
||||||
psHu32(INTC_MASK) ^= (u16)value;
|
psHu32(INTC_MASK) ^= (u16)value;
|
||||||
cpuTestINTCInts();
|
cpuTestINTCInts();
|
||||||
break;
|
break;
|
||||||
|
@ -868,7 +868,7 @@ void __fastcall hwWrite64_generic( u32 mem, const mem64_t* srcval )
|
||||||
|
|
||||||
default:
|
default:
|
||||||
psHu64(mem) = value;
|
psHu64(mem) = value;
|
||||||
HW_LOG("Unknown Hardware write 64 at %x with value %x (status=%x)\n",mem,value, cpuRegs.CP0.n.Status.val);
|
HW_LOG("Unknown Hardware write 64 at %x with value %x (status=%x)",mem,value, cpuRegs.CP0.n.Status.val);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -883,13 +883,13 @@ void __fastcall hwWrite128_generic(u32 mem, const mem128_t *srcval)
|
||||||
switch (mem)
|
switch (mem)
|
||||||
{
|
{
|
||||||
case INTC_STAT:
|
case INTC_STAT:
|
||||||
HW_LOG("INTC_STAT Write 64bit %x\n", (u32)srcval[0]);
|
HW_LOG("INTC_STAT Write 64bit %x", (u32)srcval[0]);
|
||||||
psHu32(INTC_STAT) &= ~srcval[0];
|
psHu32(INTC_STAT) &= ~srcval[0];
|
||||||
//cpuTestINTCInts();
|
//cpuTestINTCInts();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case INTC_MASK:
|
case INTC_MASK:
|
||||||
HW_LOG("INTC_MASK Write 64bit %x\n", (u32)srcval[0]);
|
HW_LOG("INTC_MASK Write 64bit %x", (u32)srcval[0]);
|
||||||
psHu32(INTC_MASK) ^= (u16)srcval[0];
|
psHu32(INTC_MASK) ^= (u16)srcval[0];
|
||||||
cpuTestINTCInts();
|
cpuTestINTCInts();
|
||||||
break;
|
break;
|
||||||
|
@ -908,7 +908,7 @@ void __fastcall hwWrite128_generic(u32 mem, const mem128_t *srcval)
|
||||||
psHu64(mem ) = srcval[0];
|
psHu64(mem ) = srcval[0];
|
||||||
psHu64(mem+8) = srcval[1];
|
psHu64(mem+8) = srcval[1];
|
||||||
|
|
||||||
HW_LOG("Unknown Hardware write 128 at %x with value %x_%x (status=%x)\n", mem, srcval[1], srcval[0], cpuRegs.CP0.n.Status.val);
|
HW_LOG("Unknown Hardware write 128 at %x with value %x_%x (status=%x)", mem, srcval[1], srcval[0], cpuRegs.CP0.n.Status.val);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -248,7 +248,7 @@ __forceinline u32 ipuRead32(u32 mem)
|
||||||
ipuRegs->ctrl.CBP = coded_block_pattern;
|
ipuRegs->ctrl.CBP = coded_block_pattern;
|
||||||
|
|
||||||
if( !ipuRegs->ctrl.BUSY )
|
if( !ipuRegs->ctrl.BUSY )
|
||||||
IPU_LOG("Ipu read32: IPU_CTRL=0x%08X %x\n", ipuRegs->ctrl._u32, cpuRegs.pc);
|
IPU_LOG("Ipu read32: IPU_CTRL=0x%08X %x", ipuRegs->ctrl._u32, cpuRegs.pc);
|
||||||
|
|
||||||
return ipuRegs->ctrl._u32;
|
return ipuRegs->ctrl._u32;
|
||||||
|
|
||||||
|
@ -258,7 +258,7 @@ __forceinline u32 ipuRead32(u32 mem)
|
||||||
ipuRegs->ipubp |= g_BP.IFC<<8;
|
ipuRegs->ipubp |= g_BP.IFC<<8;
|
||||||
ipuRegs->ipubp |= (g_BP.FP+g_BP.bufferhasnew) << 16;
|
ipuRegs->ipubp |= (g_BP.FP+g_BP.bufferhasnew) << 16;
|
||||||
|
|
||||||
IPU_LOG("Ipu read32: IPU_BP=0x%08X\n", *(u32*)&g_BP);
|
IPU_LOG("Ipu read32: IPU_BP=0x%08X", *(u32*)&g_BP);
|
||||||
return ipuRegs->ipubp;
|
return ipuRegs->ipubp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -281,7 +281,7 @@ __forceinline u64 ipuRead64(u32 mem)
|
||||||
|
|
||||||
//if(!ipuRegs->cmd.BUSY){
|
//if(!ipuRegs->cmd.BUSY){
|
||||||
if( ipuRegs->cmd.DATA&0xffffff )
|
if( ipuRegs->cmd.DATA&0xffffff )
|
||||||
IPU_LOG("Ipu read64: IPU_CMD=BUSY=%x, DATA=%08X\n", ipuRegs->cmd.BUSY?1:0,ipuRegs->cmd.DATA);
|
IPU_LOG("Ipu read64: IPU_CMD=BUSY=%x, DATA=%08X", ipuRegs->cmd.BUSY?1:0,ipuRegs->cmd.DATA);
|
||||||
//return *(u64*)&ipuRegs->cmd;
|
//return *(u64*)&ipuRegs->cmd;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -294,13 +294,13 @@ __forceinline u64 ipuRead64(u32 mem)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x30: // IPU_TOP
|
case 0x30: // IPU_TOP
|
||||||
IPU_LOG("Ipu read64: IPU_TOP=%x, bp = %d\n",ipuRegs->top,g_BP.BP);
|
IPU_LOG("Ipu read64: IPU_TOP=%x, bp = %d",ipuRegs->top,g_BP.BP);
|
||||||
|
|
||||||
//return *(u64*)&ipuRegs->top;
|
//return *(u64*)&ipuRegs->top;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
IPU_LOG("Ipu read64: Unknown=%x\n", mem);
|
IPU_LOG("Ipu read64: Unknown=%x", mem);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return *(u64*)(((u8*)ipuRegs)+mem);
|
return *(u64*)(((u8*)ipuRegs)+mem);
|
||||||
|
@ -351,7 +351,7 @@ __forceinline void ipuWrite32(u32 mem, u32 value)
|
||||||
|
|
||||||
switch (mem){
|
switch (mem){
|
||||||
case 0x00: // IPU_CMD
|
case 0x00: // IPU_CMD
|
||||||
IPU_LOG("Ipu write32: IPU_CMD=0x%08X\n",value);
|
IPU_LOG("Ipu write32: IPU_CMD=0x%08X",value);
|
||||||
IPUCMD_WRITE(value);
|
IPUCMD_WRITE(value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -365,11 +365,11 @@ __forceinline void ipuWrite32(u32 mem, u32 value)
|
||||||
ipuSoftReset();
|
ipuSoftReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
IPU_LOG("Ipu write32: IPU_CTRL=0x%08X\n",value);
|
IPU_LOG("Ipu write32: IPU_CTRL=0x%08X",value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
IPU_LOG("Ipu write32: Unknown=%x\n", mem);
|
IPU_LOG("Ipu write32: Unknown=%x", mem);
|
||||||
*(u32*)((u8*)ipuRegs + mem) = value;
|
*(u32*)((u8*)ipuRegs + mem) = value;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -388,12 +388,12 @@ __forceinline void ipuWrite64(u32 mem, u64 value)
|
||||||
switch( mem )
|
switch( mem )
|
||||||
{
|
{
|
||||||
case 0x10:
|
case 0x10:
|
||||||
IPU_LOG("Ipu write64: IPU_CMD=0x%08X\n",value);
|
IPU_LOG("Ipu write64: IPU_CMD=0x%08X",value);
|
||||||
IPUCMD_WRITE((u32)value);
|
IPUCMD_WRITE((u32)value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
IPU_LOG("Ipu write64: Unknown=%x\n", mem);
|
IPU_LOG("Ipu write64: Unknown=%x", mem);
|
||||||
*(u64*)((u8*)ipuRegs + mem) = value;
|
*(u64*)((u8*)ipuRegs + mem) = value;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -412,7 +412,7 @@ static void ipuBCLR(u32 val) {
|
||||||
ipuRegs->ctrl.BUSY = 0;
|
ipuRegs->ctrl.BUSY = 0;
|
||||||
ipuRegs->cmd.BUSY = 0;
|
ipuRegs->cmd.BUSY = 0;
|
||||||
memzero_ptr<80>(readbits);
|
memzero_ptr<80>(readbits);
|
||||||
IPU_LOG("Clear IPU input FIFO. Set Bit offset=0x%X\n", g_BP.BP);
|
IPU_LOG("Clear IPU input FIFO. Set Bit offset=0x%X", g_BP.BP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static __forceinline BOOL ipuIDEC(u32 val)
|
static __forceinline BOOL ipuIDEC(u32 val)
|
||||||
|
@ -420,7 +420,7 @@ static __forceinline BOOL ipuIDEC(u32 val)
|
||||||
tIPU_CMD_IDEC idec( val );
|
tIPU_CMD_IDEC idec( val );
|
||||||
|
|
||||||
|
|
||||||
IPU_LOG("IPU IDEC command.\n");
|
IPU_LOG("IPU IDEC command.");
|
||||||
if (idec.FB){ IPU_LOG(" Skip %d bits.",idec.FB);}
|
if (idec.FB){ IPU_LOG(" Skip %d bits.",idec.FB);}
|
||||||
IPU_LOG(" Quantizer step code=0x%X.",idec.QSC);
|
IPU_LOG(" Quantizer step code=0x%X.",idec.QSC);
|
||||||
if (idec.DTD==0){ IPU_LOG(" Does not decode DT.");
|
if (idec.DTD==0){ IPU_LOG(" Does not decode DT.");
|
||||||
|
@ -430,7 +430,7 @@ static __forceinline BOOL ipuIDEC(u32 val)
|
||||||
if (idec.DTE==1){ IPU_LOG(" Dither Enabled.");}
|
if (idec.DTE==1){ IPU_LOG(" Dither Enabled.");}
|
||||||
if (idec.OFM==0){ IPU_LOG(" Output format is RGB32.");
|
if (idec.OFM==0){ IPU_LOG(" Output format is RGB32.");
|
||||||
}else{ IPU_LOG(" Output format is RGB16.");}
|
}else{ IPU_LOG(" Output format is RGB16.");}
|
||||||
IPU_LOG("\n");
|
IPU_LOG("");
|
||||||
|
|
||||||
g_BP.BP+= idec.FB;//skip FB bits
|
g_BP.BP+= idec.FB;//skip FB bits
|
||||||
//from IPU_CTRL
|
//from IPU_CTRL
|
||||||
|
@ -469,7 +469,7 @@ static __forceinline BOOL ipuBDEC(u32 val)
|
||||||
{
|
{
|
||||||
tIPU_CMD_BDEC bdec( val );
|
tIPU_CMD_BDEC bdec( val );
|
||||||
|
|
||||||
IPU_LOG("IPU BDEC(macroblock decode) command %x, num: 0x%x\n",cpuRegs.pc, s_bdec);
|
IPU_LOG("IPU BDEC(macroblock decode) command %x, num: 0x%x",cpuRegs.pc, s_bdec);
|
||||||
if (bdec.FB){ IPU_LOG(" Skip 0x%X bits.", bdec.FB);}
|
if (bdec.FB){ IPU_LOG(" Skip 0x%X bits.", bdec.FB);}
|
||||||
if (bdec.MBI){ IPU_LOG(" Intra MB.");}
|
if (bdec.MBI){ IPU_LOG(" Intra MB.");}
|
||||||
else{ IPU_LOG(" Non-intra MB.");}
|
else{ IPU_LOG(" Non-intra MB.");}
|
||||||
|
@ -477,7 +477,7 @@ static __forceinline BOOL ipuBDEC(u32 val)
|
||||||
else{ IPU_LOG(" Doesn't reset DC prediction value.");}
|
else{ IPU_LOG(" Doesn't reset DC prediction value.");}
|
||||||
if (bdec.DT){ IPU_LOG(" Use field DCT.");}
|
if (bdec.DT){ IPU_LOG(" Use field DCT.");}
|
||||||
else{ IPU_LOG(" Use frame DCT.");}
|
else{ IPU_LOG(" Use frame DCT.");}
|
||||||
IPU_LOG(" Quantizer step=0x%X\n",bdec.QSC);
|
IPU_LOG(" Quantizer step=0x%X",bdec.QSC);
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
s_bdec++;
|
s_bdec++;
|
||||||
#endif
|
#endif
|
||||||
|
@ -555,7 +555,7 @@ static BOOL __fastcall ipuVDEC(u32 val) {
|
||||||
|
|
||||||
BigEndian(ipuRegs->top, ipuRegs->top);
|
BigEndian(ipuRegs->top, ipuRegs->top);
|
||||||
|
|
||||||
IPU_LOG("IPU VDEC command data 0x%x(0x%x). Skip 0x%X bits/Table=%d (%s), pct %d\n",
|
IPU_LOG("IPU VDEC command data 0x%x(0x%x). Skip 0x%X bits/Table=%d (%s), pct %d",
|
||||||
ipuRegs->cmd.DATA,ipuRegs->cmd.DATA >> 16,val & 0x3f, (val >> 26) & 3, (val >> 26) & 1 ?
|
ipuRegs->cmd.DATA,ipuRegs->cmd.DATA >> 16,val & 0x3f, (val >> 26) & 3, (val >> 26) & 1 ?
|
||||||
((val >> 26) & 2 ? "DMV" : "MBT") : (((val >> 26) & 2 ? "MC" : "MBAI")),ipuRegs->ctrl.PCT);
|
((val >> 26) & 2 ? "DMV" : "MBT") : (((val >> 26) & 2 ? "MC" : "MBAI")),ipuRegs->ctrl.PCT);
|
||||||
|
|
||||||
|
@ -575,7 +575,7 @@ static BOOL ipuFDEC(u32 val)
|
||||||
BigEndian(ipuRegs->cmd.DATA, ipuRegs->cmd.DATA);
|
BigEndian(ipuRegs->cmd.DATA, ipuRegs->cmd.DATA);
|
||||||
ipuRegs->top = ipuRegs->cmd.DATA;
|
ipuRegs->top = ipuRegs->cmd.DATA;
|
||||||
|
|
||||||
IPU_LOG("FDEC read: 0x%8.8x\n", ipuRegs->top);
|
IPU_LOG("FDEC read: 0x%8.8x", ipuRegs->top);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -587,17 +587,17 @@ static __forceinline BOOL ipuSETIQ(u32 val)
|
||||||
if ((val >> 27) & 1){
|
if ((val >> 27) & 1){
|
||||||
g_nCmdPos[0] += getBits((u8*)niq + g_nCmdPos[0], 512-8*g_nCmdPos[0], 1); // 8*8*8
|
g_nCmdPos[0] += getBits((u8*)niq + g_nCmdPos[0], 512-8*g_nCmdPos[0], 1); // 8*8*8
|
||||||
|
|
||||||
IPU_LOG("Read non-intra quantization matrix from IPU FIFO.\n");
|
IPU_LOG("Read non-intra quantization matrix from IPU FIFO.");
|
||||||
for (i=0; i<8; i++){
|
for (i=0; i<8; i++){
|
||||||
IPU_LOG("%02X %02X %02X %02X %02X %02X %02X %02X\n",
|
IPU_LOG("%02X %02X %02X %02X %02X %02X %02X %02X",
|
||||||
niq[i*8+0], niq[i*8+1], niq[i*8+2], niq[i*8+3],
|
niq[i*8+0], niq[i*8+1], niq[i*8+2], niq[i*8+3],
|
||||||
niq[i*8+4], niq[i*8+5], niq[i*8+6], niq[i*8+7]);
|
niq[i*8+4], niq[i*8+5], niq[i*8+6], niq[i*8+7]);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
g_nCmdPos[0] += getBits((u8*)iq+8*g_nCmdPos[0], 512-8*g_nCmdPos[0], 1);
|
g_nCmdPos[0] += getBits((u8*)iq+8*g_nCmdPos[0], 512-8*g_nCmdPos[0], 1);
|
||||||
IPU_LOG("Read intra quantization matrix from IPU FIFO.\n");
|
IPU_LOG("Read intra quantization matrix from IPU FIFO.");
|
||||||
for (i=0; i<8; i++){
|
for (i=0; i<8; i++){
|
||||||
IPU_LOG("%02X %02X %02X %02X %02X %02X %02X %02X\n",
|
IPU_LOG("%02X %02X %02X %02X %02X %02X %02X %02X",
|
||||||
iq[i*8+0], iq[i*8+1], iq[i*8+2], iq[i*8+3],
|
iq[i*8+0], iq[i*8+1], iq[i*8+2], iq[i*8+3],
|
||||||
iq[i*8+4], iq[i*8+5], iq[i*8+6], iq[i*8+7]);
|
iq[i*8+4], iq[i*8+5], iq[i*8+6], iq[i*8+7]);
|
||||||
}
|
}
|
||||||
|
@ -612,12 +612,12 @@ static __forceinline BOOL ipuSETVQ(u32 val)
|
||||||
|
|
||||||
if( g_nCmdPos[0] == 32 )
|
if( g_nCmdPos[0] == 32 )
|
||||||
{
|
{
|
||||||
IPU_LOG("IPU SETVQ command.\nRead VQCLUT table from IPU FIFO.\n");
|
IPU_LOG("IPU SETVQ command.\nRead VQCLUT table from IPU FIFO.");
|
||||||
IPU_LOG(
|
IPU_LOG(
|
||||||
"%02d:%02d:%02d %02d:%02d:%02d %02d:%02d:%02d %02d:%02d:%02d "
|
"%02d:%02d:%02d %02d:%02d:%02d %02d:%02d:%02d %02d:%02d:%02d "
|
||||||
"%02d:%02d:%02d %02d:%02d:%02d %02d:%02d:%02d %02d:%02d:%02d\n"
|
"%02d:%02d:%02d %02d:%02d:%02d %02d:%02d:%02d %02d:%02d:%02d"
|
||||||
"%02d:%02d:%02d %02d:%02d:%02d %02d:%02d:%02d %02d:%02d:%02d "
|
"%02d:%02d:%02d %02d:%02d:%02d %02d:%02d:%02d %02d:%02d:%02d "
|
||||||
"%02d:%02d:%02d %02d:%02d:%02d %02d:%02d:%02d %02d:%02d:%02d\n",
|
"%02d:%02d:%02d %02d:%02d:%02d %02d:%02d:%02d %02d:%02d:%02d",
|
||||||
vqclut[0] >> 10, (vqclut[0] >> 5) & 0x1F, vqclut[0] & 0x1F,
|
vqclut[0] >> 10, (vqclut[0] >> 5) & 0x1F, vqclut[0] & 0x1F,
|
||||||
vqclut[1] >> 10, (vqclut[1] >> 5) & 0x1F, vqclut[1] & 0x1F,
|
vqclut[1] >> 10, (vqclut[1] >> 5) & 0x1F, vqclut[1] & 0x1F,
|
||||||
vqclut[2] >> 10, (vqclut[2] >> 5) & 0x1F, vqclut[2] & 0x1F,
|
vqclut[2] >> 10, (vqclut[2] >> 5) & 0x1F, vqclut[2] & 0x1F,
|
||||||
|
@ -644,7 +644,7 @@ static BOOL __fastcall ipuCSC(u32 val)
|
||||||
{
|
{
|
||||||
tIPU_CMD_CSC csc( val );
|
tIPU_CMD_CSC csc( val );
|
||||||
|
|
||||||
IPU_LOG("IPU CSC(Colorspace conversion from YCbCr) command (%d).\n",csc.MBC);
|
IPU_LOG("IPU CSC(Colorspace conversion from YCbCr) command (%d).",csc.MBC);
|
||||||
if (csc.OFM)
|
if (csc.OFM)
|
||||||
IPU_LOG("Output format is RGB16. ");
|
IPU_LOG("Output format is RGB16. ");
|
||||||
else
|
else
|
||||||
|
@ -698,11 +698,11 @@ static BOOL ipuPACK(u32 val)
|
||||||
{
|
{
|
||||||
tIPU_CMD_CSC csc( val );
|
tIPU_CMD_CSC csc( val );
|
||||||
|
|
||||||
IPU_LOG("IPU PACK (Colorspace conversion from RGB32) command.\n");
|
IPU_LOG("IPU PACK (Colorspace conversion from RGB32) command.");
|
||||||
if (csc.OFM){ IPU_LOG("Output format is RGB16. ");}
|
if (csc.OFM){ IPU_LOG("Output format is RGB16. ");}
|
||||||
else{ IPU_LOG("Output format is INDX4. ");}
|
else{ IPU_LOG("Output format is INDX4. ");}
|
||||||
if (csc.DTE){ IPU_LOG("Dithering enabled."); }
|
if (csc.DTE){ IPU_LOG("Dithering enabled."); }
|
||||||
IPU_LOG("Number of macroblocks to be converted: %d\n", csc.MBC);
|
IPU_LOG("Number of macroblocks to be converted: %d", csc.MBC);
|
||||||
|
|
||||||
for (;g_nCmdIndex<(int)csc.MBC; g_nCmdIndex++){
|
for (;g_nCmdIndex<(int)csc.MBC; g_nCmdIndex++){
|
||||||
|
|
||||||
|
@ -742,7 +742,7 @@ static BOOL ipuPACK(u32 val)
|
||||||
static void ipuSETTH(u32 val) {
|
static void ipuSETTH(u32 val) {
|
||||||
s_thresh[0] = (val & 0xff);
|
s_thresh[0] = (val & 0xff);
|
||||||
s_thresh[1] = ((val>>16) & 0xff);
|
s_thresh[1] = ((val>>16) & 0xff);
|
||||||
IPU_LOG("IPU SETTH (Set threshold value)command %x.\n", val&0xff00ff);
|
IPU_LOG("IPU SETTH (Set threshold value)command %x.", val&0xff00ff);
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////
|
///////////////////////
|
||||||
|
@ -786,7 +786,7 @@ void IPUCMD_WRITE(u32 val) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SCE_IPU_FDEC:
|
case SCE_IPU_FDEC:
|
||||||
IPU_LOG("IPU FDEC command. Skip 0x%X bits, FIFO 0x%X qwords, BP 0x%X, FP %d, CHCR 0x%x, %x\n",
|
IPU_LOG("IPU FDEC command. Skip 0x%X bits, FIFO 0x%X qwords, BP 0x%X, FP %d, CHCR 0x%x, %x",
|
||||||
val & 0x3f,g_BP.IFC,(int)g_BP.BP,g_BP.FP,((DMACh*)&PS2MEM_HW[0xb400])->chcr,cpuRegs.pc);
|
val & 0x3f,g_BP.IFC,(int)g_BP.BP,g_BP.FP,((DMACh*)&PS2MEM_HW[0xb400])->chcr,cpuRegs.pc);
|
||||||
|
|
||||||
g_BP.BP+= val & 0x3F;
|
g_BP.BP+= val & 0x3F;
|
||||||
|
@ -806,10 +806,10 @@ void IPUCMD_WRITE(u32 val) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case SCE_IPU_SETIQ:
|
case SCE_IPU_SETIQ:
|
||||||
IPU_LOG("IPU SETIQ command.\n");
|
IPU_LOG("IPU SETIQ command.");
|
||||||
|
|
||||||
if (val & 0x3f)
|
if (val & 0x3f)
|
||||||
IPU_LOG("Skip %d bits.\n", val & 0x3f);
|
IPU_LOG("Skip %d bits.", val & 0x3f);
|
||||||
|
|
||||||
g_BP.BP+= val & 0x3F;
|
g_BP.BP+= val & 0x3F;
|
||||||
|
|
||||||
|
@ -1466,7 +1466,7 @@ int IPU1dma()
|
||||||
}
|
}
|
||||||
|
|
||||||
ipu1dma->chcr = (ipu1dma->chcr & 0xFFFF) | ( (*ptag) & 0xFFFF0000 );
|
ipu1dma->chcr = (ipu1dma->chcr & 0xFFFF) | ( (*ptag) & 0xFFFF0000 );
|
||||||
IPU_LOG("IPU dmaIrq Set\n");
|
IPU_LOG("IPU dmaIrq Set");
|
||||||
IPU_INT_TO(totalqwc*BIAS);
|
IPU_INT_TO(totalqwc*BIAS);
|
||||||
g_nDMATransfer |= IPU_DMA_TIE1;
|
g_nDMATransfer |= IPU_DMA_TIE1;
|
||||||
return totalqwc;
|
return totalqwc;
|
||||||
|
@ -1495,7 +1495,7 @@ int IPU1dma()
|
||||||
// Transfer Dn_QWC from Dn_MADR to GIF
|
// Transfer Dn_QWC from Dn_MADR to GIF
|
||||||
|
|
||||||
if ((ipu1dma->chcr & 0xc) == 0 || ipu1dma->qwc > 0) { // Normal Mode
|
if ((ipu1dma->chcr & 0xc) == 0 || ipu1dma->qwc > 0) { // Normal Mode
|
||||||
IPU_LOG("dmaIPU1 Normal size=%d, addr=%lx, fifosize=%x\n",
|
IPU_LOG("dmaIPU1 Normal size=%d, addr=%lx, fifosize=%x",
|
||||||
ipu1dma->qwc, ipu1dma->madr, 8 - g_BP.IFC);
|
ipu1dma->qwc, ipu1dma->madr, 8 - g_BP.IFC);
|
||||||
IPU1chain();
|
IPU1chain();
|
||||||
IPU_INT_TO((ipu1cycles+totalqwc)*BIAS);
|
IPU_INT_TO((ipu1cycles+totalqwc)*BIAS);
|
||||||
|
@ -1549,11 +1549,11 @@ int IPU1dma()
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Console::Error("IPU ERROR: different transfer mode!, Please report to PCSX2 Team\n");
|
Console::Error("IPU ERROR: different transfer mode!, Please report to PCSX2 Team");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
IPU_LOG("dmaIPU1 dmaChain %8.8x_%8.8x size=%d, addr=%lx, fifosize=%x\n",
|
IPU_LOG("dmaIPU1 dmaChain %8.8x_%8.8x size=%d, addr=%lx, fifosize=%x",
|
||||||
ptag[1], ptag[0], ipu1dma->qwc, ipu1dma->madr, 8 - g_BP.IFC);
|
ptag[1], ptag[0], ipu1dma->qwc, ipu1dma->madr, 8 - g_BP.IFC);
|
||||||
|
|
||||||
if( (ipu1dma->chcr & 0x80) && ptag[0] & 0x80000000 )
|
if( (ipu1dma->chcr & 0x80) && ptag[0] & 0x80000000 )
|
||||||
|
@ -1685,7 +1685,7 @@ int IPU0dma()
|
||||||
|
|
||||||
assert( !(ipu0dma->chcr&0x40) );
|
assert( !(ipu0dma->chcr&0x40) );
|
||||||
|
|
||||||
IPU_LOG("dmaIPU0 chcr = %lx, madr = %lx, qwc = %lx\n",
|
IPU_LOG("dmaIPU0 chcr = %lx, madr = %lx, qwc = %lx",
|
||||||
ipu0dma->chcr, ipu0dma->madr, ipu0dma->qwc);
|
ipu0dma->chcr, ipu0dma->madr, ipu0dma->qwc);
|
||||||
|
|
||||||
assert((ipu0dma->chcr & 0xC) == 0 );
|
assert((ipu0dma->chcr & 0xC) == 0 );
|
||||||
|
@ -1729,7 +1729,7 @@ void dmaIPU1() // toIPU
|
||||||
extern void GIFdma();
|
extern void GIFdma();
|
||||||
|
|
||||||
void ipu0Interrupt() {
|
void ipu0Interrupt() {
|
||||||
IPU_LOG("ipu0Interrupt: %x\n", cpuRegs.cycle);
|
IPU_LOG("ipu0Interrupt: %x", cpuRegs.cycle);
|
||||||
|
|
||||||
if( g_nDMATransfer & IPU_DMA_FIREINT0 ) {
|
if( g_nDMATransfer & IPU_DMA_FIREINT0 ) {
|
||||||
hwIntcIrq(INTC_IPU);
|
hwIntcIrq(INTC_IPU);
|
||||||
|
@ -1758,7 +1758,7 @@ void ipu0Interrupt() {
|
||||||
}
|
}
|
||||||
|
|
||||||
IPU_FORCEINLINE void ipu1Interrupt() {
|
IPU_FORCEINLINE void ipu1Interrupt() {
|
||||||
IPU_LOG("ipu1Interrupt %x:\n", cpuRegs.cycle);
|
IPU_LOG("ipu1Interrupt %x:", cpuRegs.cycle);
|
||||||
|
|
||||||
if( g_nDMATransfer & IPU_DMA_FIREINT1 ) {
|
if( g_nDMATransfer & IPU_DMA_FIREINT1 ) {
|
||||||
hwIntcIrq(INTC_IPU);
|
hwIntcIrq(INTC_IPU);
|
||||||
|
|
|
@ -60,7 +60,7 @@ static void execI()
|
||||||
// Another method of instruction dumping:
|
// Another method of instruction dumping:
|
||||||
/*if( cpuRegs.cycle > 0x4f24d714 )
|
/*if( cpuRegs.cycle > 0x4f24d714 )
|
||||||
{
|
{
|
||||||
//CPU_LOG( "%s\n", disR5900Current.getCString());
|
//CPU_LOG( "%s", disR5900Current.getCString());
|
||||||
disOut.clear();
|
disOut.clear();
|
||||||
opcode.disasm( disOut );
|
opcode.disasm( disOut );
|
||||||
disOut += '\n';
|
disOut += '\n';
|
||||||
|
|
|
@ -182,7 +182,7 @@ void bios_write() { // 0x35/0x03
|
||||||
}
|
}
|
||||||
pc0 = ra; return;
|
pc0 = ra; return;
|
||||||
}
|
}
|
||||||
PSXBIOS_LOG("bios_%s: %x,%x,%x\n", biosB0n[0x35], a0, a1, a2);
|
PSXBIOS_LOG("bios_%s: %x,%x,%x", biosB0n[0x35], a0, a1, a2);
|
||||||
|
|
||||||
v0 = -1;
|
v0 = -1;
|
||||||
pc0 = ra;
|
pc0 = ra;
|
||||||
|
|
|
@ -154,7 +154,7 @@ static void __fastcall _rcntTestTarget( int i )
|
||||||
{
|
{
|
||||||
if( psxCounters[i].count < psxCounters[i].target ) return;
|
if( psxCounters[i].count < psxCounters[i].target ) return;
|
||||||
|
|
||||||
PSXCNT_LOG("IOP Counter[%d] target 0x%I64x >= 0x%I64x (mode: %x)\n",
|
PSXCNT_LOG("IOP Counter[%d] target 0x%I64x >= 0x%I64x (mode: %x)",
|
||||||
i, psxCounters[i].count, psxCounters[i].target, psxCounters[i].mode);
|
i, psxCounters[i].count, psxCounters[i].target, psxCounters[i].mode);
|
||||||
|
|
||||||
if (psxCounters[i].mode & IOPCNT_INT_TARGET)
|
if (psxCounters[i].mode & IOPCNT_INT_TARGET)
|
||||||
|
@ -186,7 +186,7 @@ static __forceinline void _rcntTestOverflow( int i )
|
||||||
u64 maxTarget = ( i < 3 ) ? 0xffff : 0xfffffffful;
|
u64 maxTarget = ( i < 3 ) ? 0xffff : 0xfffffffful;
|
||||||
if( psxCounters[i].count <= maxTarget ) return;
|
if( psxCounters[i].count <= maxTarget ) return;
|
||||||
|
|
||||||
PSXCNT_LOG("IOP Counter[%d] overflow 0x%I64x >= 0x%I64x (mode: %x)\n",
|
PSXCNT_LOG("IOP Counter[%d] overflow 0x%I64x >= 0x%I64x (mode: %x)",
|
||||||
i, psxCounters[i].count, maxTarget, psxCounters[i].mode );
|
i, psxCounters[i].count, maxTarget, psxCounters[i].mode );
|
||||||
|
|
||||||
if(psxCounters[i].mode & IOPCNT_INT_OVERFLOW)
|
if(psxCounters[i].mode & IOPCNT_INT_OVERFLOW)
|
||||||
|
@ -461,7 +461,7 @@ void psxRcntWcount16(int index, u32 value)
|
||||||
u32 change;
|
u32 change;
|
||||||
|
|
||||||
assert( index < 3 );
|
assert( index < 3 );
|
||||||
PSXCNT_LOG("IOP Counter[%d] writeCount16 = %x\n", index, value);
|
PSXCNT_LOG("IOP Counter[%d] writeCount16 = %x", index, value);
|
||||||
|
|
||||||
if(psxCounters[index].rate != PSXHBLANK)
|
if(psxCounters[index].rate != PSXHBLANK)
|
||||||
{
|
{
|
||||||
|
@ -482,7 +482,7 @@ void psxRcntWcount32(int index, u32 value)
|
||||||
u32 change;
|
u32 change;
|
||||||
|
|
||||||
assert( index >= 3 && index < 6 );
|
assert( index >= 3 && index < 6 );
|
||||||
PSXCNT_LOG("IOP Counter[%d] writeCount32 = %x\n", index, value);
|
PSXCNT_LOG("IOP Counter[%d] writeCount32 = %x", index, value);
|
||||||
|
|
||||||
if(psxCounters[index].rate != PSXHBLANK)
|
if(psxCounters[index].rate != PSXHBLANK)
|
||||||
{
|
{
|
||||||
|
@ -500,7 +500,7 @@ void psxRcntWcount32(int index, u32 value)
|
||||||
|
|
||||||
void psxRcnt0Wmode(u32 value)
|
void psxRcnt0Wmode(u32 value)
|
||||||
{
|
{
|
||||||
PSXCNT_LOG("IOP Counter[0] writeMode = %lx\n", value);
|
PSXCNT_LOG("IOP Counter[0] writeMode = %lx", value);
|
||||||
|
|
||||||
psxCounters[0].mode = value;
|
psxCounters[0].mode = value;
|
||||||
psxCounters[0].mode|= 0x0400;
|
psxCounters[0].mode|= 0x0400;
|
||||||
|
@ -512,7 +512,7 @@ void psxRcnt0Wmode(u32 value)
|
||||||
if(psxCounters[0].mode & IOPCNT_ENABLE_GATE)
|
if(psxCounters[0].mode & IOPCNT_ENABLE_GATE)
|
||||||
{
|
{
|
||||||
// gated counters are added up as per the h/vblank timers.
|
// gated counters are added up as per the h/vblank timers.
|
||||||
PSXCNT_LOG("IOP Counter[0] Gate Check set, value = %x\n", value);
|
PSXCNT_LOG("IOP Counter[0] Gate Check set, value = %x", value);
|
||||||
psxhblankgate |= 1;
|
psxhblankgate |= 1;
|
||||||
}
|
}
|
||||||
else psxhblankgate &= ~1;
|
else psxhblankgate &= ~1;
|
||||||
|
@ -526,7 +526,7 @@ void psxRcnt0Wmode(u32 value)
|
||||||
|
|
||||||
void psxRcnt1Wmode(u32 value)
|
void psxRcnt1Wmode(u32 value)
|
||||||
{
|
{
|
||||||
PSXCNT_LOG("IOP Counter[0] writeMode = %lx\n", value);
|
PSXCNT_LOG("IOP Counter[0] writeMode = %lx", value);
|
||||||
|
|
||||||
psxCounters[1].mode = value;
|
psxCounters[1].mode = value;
|
||||||
psxCounters[1].mode|= 0x0400;
|
psxCounters[1].mode|= 0x0400;
|
||||||
|
@ -537,7 +537,7 @@ void psxRcnt1Wmode(u32 value)
|
||||||
|
|
||||||
if(psxCounters[1].mode & IOPCNT_ENABLE_GATE)
|
if(psxCounters[1].mode & IOPCNT_ENABLE_GATE)
|
||||||
{
|
{
|
||||||
PSXCNT_LOG("IOP Counter[1] Gate Check set, value = %x\n", value);
|
PSXCNT_LOG("IOP Counter[1] Gate Check set, value = %x", value);
|
||||||
psxvblankgate |= 1<<1;
|
psxvblankgate |= 1<<1;
|
||||||
}
|
}
|
||||||
else psxvblankgate &= ~(1<<1);
|
else psxvblankgate &= ~(1<<1);
|
||||||
|
@ -550,7 +550,7 @@ void psxRcnt1Wmode(u32 value)
|
||||||
|
|
||||||
void psxRcnt2Wmode(u32 value)
|
void psxRcnt2Wmode(u32 value)
|
||||||
{
|
{
|
||||||
PSXCNT_LOG("IOP Counter[0] writeMode = %lx\n", value);
|
PSXCNT_LOG("IOP Counter[0] writeMode = %lx", value);
|
||||||
|
|
||||||
psxCounters[2].mode = value;
|
psxCounters[2].mode = value;
|
||||||
psxCounters[2].mode|= 0x0400;
|
psxCounters[2].mode|= 0x0400;
|
||||||
|
@ -575,7 +575,7 @@ void psxRcnt2Wmode(u32 value)
|
||||||
|
|
||||||
void psxRcnt3Wmode(u32 value)
|
void psxRcnt3Wmode(u32 value)
|
||||||
{
|
{
|
||||||
PSXCNT_LOG("IOP Counter[3] writeMode = %lx\n", value);
|
PSXCNT_LOG("IOP Counter[3] writeMode = %lx", value);
|
||||||
|
|
||||||
psxCounters[3].mode = value;
|
psxCounters[3].mode = value;
|
||||||
psxCounters[3].rate = 1;
|
psxCounters[3].rate = 1;
|
||||||
|
@ -586,7 +586,7 @@ void psxRcnt3Wmode(u32 value)
|
||||||
|
|
||||||
if(psxCounters[3].mode & IOPCNT_ENABLE_GATE)
|
if(psxCounters[3].mode & IOPCNT_ENABLE_GATE)
|
||||||
{
|
{
|
||||||
PSXCNT_LOG("IOP Counter[3] Gate Check set, value = %x\n", value);
|
PSXCNT_LOG("IOP Counter[3] Gate Check set, value = %x", value);
|
||||||
psxvblankgate |= 1<<3;
|
psxvblankgate |= 1<<3;
|
||||||
}
|
}
|
||||||
else psxvblankgate &= ~(1<<3);
|
else psxvblankgate &= ~(1<<3);
|
||||||
|
@ -599,7 +599,7 @@ void psxRcnt3Wmode(u32 value)
|
||||||
|
|
||||||
void psxRcnt4Wmode(u32 value)
|
void psxRcnt4Wmode(u32 value)
|
||||||
{
|
{
|
||||||
PSXCNT_LOG("IOP Counter[4] writeMode = %lx\n", value);
|
PSXCNT_LOG("IOP Counter[4] writeMode = %lx", value);
|
||||||
|
|
||||||
psxCounters[4].mode = value;
|
psxCounters[4].mode = value;
|
||||||
psxCounters[4].mode|= 0x0400;
|
psxCounters[4].mode|= 0x0400;
|
||||||
|
@ -626,7 +626,7 @@ void psxRcnt4Wmode(u32 value)
|
||||||
|
|
||||||
void psxRcnt5Wmode(u32 value)
|
void psxRcnt5Wmode(u32 value)
|
||||||
{
|
{
|
||||||
PSXCNT_LOG("IOP Counter[5] writeMode = %lx\n", value);
|
PSXCNT_LOG("IOP Counter[5] writeMode = %lx", value);
|
||||||
|
|
||||||
psxCounters[5].mode = value;
|
psxCounters[5].mode = value;
|
||||||
psxCounters[5].mode|= 0x0400;
|
psxCounters[5].mode|= 0x0400;
|
||||||
|
@ -654,7 +654,7 @@ void psxRcnt5Wmode(u32 value)
|
||||||
void psxRcntWtarget16(int index, u32 value)
|
void psxRcntWtarget16(int index, u32 value)
|
||||||
{
|
{
|
||||||
assert( index < 3 );
|
assert( index < 3 );
|
||||||
PSXCNT_LOG("IOP Counter[%d] writeTarget16 = %lx\n", index, value);
|
PSXCNT_LOG("IOP Counter[%d] writeTarget16 = %lx", index, value);
|
||||||
psxCounters[index].target = value & 0xffff;
|
psxCounters[index].target = value & 0xffff;
|
||||||
|
|
||||||
// protect the target from an early arrival.
|
// protect the target from an early arrival.
|
||||||
|
@ -670,7 +670,7 @@ void psxRcntWtarget16(int index, u32 value)
|
||||||
void psxRcntWtarget32(int index, u32 value)
|
void psxRcntWtarget32(int index, u32 value)
|
||||||
{
|
{
|
||||||
assert( index >= 3 && index < 6);
|
assert( index >= 3 && index < 6);
|
||||||
PSXCNT_LOG("IOP Counter[%d] writeTarget32 = %lx\n", index, value);
|
PSXCNT_LOG("IOP Counter[%d] writeTarget32 = %lx", index, value);
|
||||||
|
|
||||||
psxCounters[index].target = value;
|
psxCounters[index].target = value;
|
||||||
|
|
||||||
|
@ -690,7 +690,7 @@ u16 psxRcntRcount16(int index)
|
||||||
|
|
||||||
assert( index < 3 );
|
assert( index < 3 );
|
||||||
|
|
||||||
PSXCNT_LOG("IOP Counter[%d] readCount16 = %lx\n", index, (u16)retval );
|
PSXCNT_LOG("IOP Counter[%d] readCount16 = %lx", index, (u16)retval );
|
||||||
|
|
||||||
// Don't count HBLANK timers
|
// Don't count HBLANK timers
|
||||||
// Don't count stopped gates either.
|
// Don't count stopped gates either.
|
||||||
|
@ -700,7 +700,7 @@ u16 psxRcntRcount16(int index)
|
||||||
{
|
{
|
||||||
u32 delta = (u32)((psxRegs.cycle - psxCounters[index].sCycleT) / psxCounters[index].rate);
|
u32 delta = (u32)((psxRegs.cycle - psxCounters[index].sCycleT) / psxCounters[index].rate);
|
||||||
retval += delta;
|
retval += delta;
|
||||||
PSXCNT_LOG(" (delta = %lx)\n", delta );
|
PSXCNT_LOG(" (delta = %lx)", delta );
|
||||||
}
|
}
|
||||||
|
|
||||||
return (u16)retval;
|
return (u16)retval;
|
||||||
|
@ -712,14 +712,14 @@ u32 psxRcntRcount32(int index)
|
||||||
|
|
||||||
assert( index >= 3 && index < 6 );
|
assert( index >= 3 && index < 6 );
|
||||||
|
|
||||||
PSXCNT_LOG("IOP Counter[%d] readCount32 = %lx\n", index, retval );
|
PSXCNT_LOG("IOP Counter[%d] readCount32 = %lx", index, retval );
|
||||||
|
|
||||||
if( !( psxCounters[index].mode & IOPCNT_STOPPED ) &&
|
if( !( psxCounters[index].mode & IOPCNT_STOPPED ) &&
|
||||||
( psxCounters[index].rate != PSXHBLANK ) )
|
( psxCounters[index].rate != PSXHBLANK ) )
|
||||||
{
|
{
|
||||||
u32 delta = (u32)((psxRegs.cycle - psxCounters[index].sCycleT) / psxCounters[index].rate);
|
u32 delta = (u32)((psxRegs.cycle - psxCounters[index].sCycleT) / psxCounters[index].rate);
|
||||||
retval += delta;
|
retval += delta;
|
||||||
PSXCNT_LOG(" (delta = %lx)\n", delta );
|
PSXCNT_LOG(" (delta = %lx)", delta );
|
||||||
}
|
}
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
|
|
|
@ -58,18 +58,18 @@ static void __fastcall psxDmaGeneric(u32 madr, u32 bcr, u32 chcr, u32 spuCore, _
|
||||||
switch (chcr)
|
switch (chcr)
|
||||||
{
|
{
|
||||||
case 0x01000201: //cpu to spu2 transfer
|
case 0x01000201: //cpu to spu2 transfer
|
||||||
PSXDMA_LOG("*** DMA %c - mem2spu *** %x addr = %x size = %x\n", dmaNum, chcr, madr, bcr);
|
PSXDMA_LOG("*** DMA %c - mem2spu *** %x addr = %x size = %x", dmaNum, chcr, madr, bcr);
|
||||||
spu2WriteFunc((u16 *)iopPhysMem(madr), size*2);
|
spu2WriteFunc((u16 *)iopPhysMem(madr), size*2);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x01000200: //spu2 to cpu transfer
|
case 0x01000200: //spu2 to cpu transfer
|
||||||
PSXDMA_LOG("*** DMA %c - spu2mem *** %x addr = %x size = %x\n", dmaNum, chcr, madr, bcr);
|
PSXDMA_LOG("*** DMA %c - spu2mem *** %x addr = %x size = %x", dmaNum, chcr, madr, bcr);
|
||||||
spu2ReadFunc((u16 *)iopPhysMem(madr), size*2);
|
spu2ReadFunc((u16 *)iopPhysMem(madr), size*2);
|
||||||
psxCpu->Clear(spuCore ? HW_DMA7_MADR : HW_DMA4_MADR, size);
|
psxCpu->Clear(spuCore ? HW_DMA7_MADR : HW_DMA4_MADR, size);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Console::Error("*** DMA %c - SPU unknown *** %x addr = %x size = %x\n", params dmaNum, chcr, madr, bcr);
|
Console::Error("*** DMA %c - SPU unknown *** %x addr = %x size = %x", params dmaNum, chcr, madr, bcr);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -97,7 +97,7 @@ void psxDma6(u32 madr, u32 bcr, u32 chcr)
|
||||||
{
|
{
|
||||||
u32 *mem = (u32 *)iopPhysMem(madr);
|
u32 *mem = (u32 *)iopPhysMem(madr);
|
||||||
|
|
||||||
PSXDMA_LOG("*** DMA 6 - OT *** %lx addr = %lx size = %lx\n", chcr, madr, bcr);
|
PSXDMA_LOG("*** DMA 6 - OT *** %lx addr = %lx size = %lx", chcr, madr, bcr);
|
||||||
|
|
||||||
if (chcr == 0x11000002) {
|
if (chcr == 0x11000002) {
|
||||||
while (bcr--) {
|
while (bcr--) {
|
||||||
|
@ -107,7 +107,7 @@ void psxDma6(u32 madr, u32 bcr, u32 chcr)
|
||||||
mem++; *mem = 0xffffff;
|
mem++; *mem = 0xffffff;
|
||||||
} else {
|
} else {
|
||||||
// Unknown option
|
// Unknown option
|
||||||
PSXDMA_LOG("*** DMA 6 - OT unknown *** %lx addr = %lx size = %lx\n", chcr, madr, bcr);
|
PSXDMA_LOG("*** DMA 6 - OT unknown *** %lx addr = %lx size = %lx", chcr, madr, bcr);
|
||||||
}
|
}
|
||||||
HW_DMA6_CHCR &= ~0x01000000;
|
HW_DMA6_CHCR &= ~0x01000000;
|
||||||
psxDmaInterrupt(6);
|
psxDmaInterrupt(6);
|
||||||
|
@ -129,7 +129,7 @@ int psxDma7Interrupt()
|
||||||
extern int eesifbusy[2];
|
extern int eesifbusy[2];
|
||||||
void psxDma9(u32 madr, u32 bcr, u32 chcr)
|
void psxDma9(u32 madr, u32 bcr, u32 chcr)
|
||||||
{
|
{
|
||||||
SIF_LOG("IOP: dmaSIF0 chcr = %lx, madr = %lx, bcr = %lx, tadr = %lx\n", chcr, madr, bcr, HW_DMA9_TADR);
|
SIF_LOG("IOP: dmaSIF0 chcr = %lx, madr = %lx, bcr = %lx, tadr = %lx", chcr, madr, bcr, HW_DMA9_TADR);
|
||||||
|
|
||||||
iopsifbusy[0] = 1;
|
iopsifbusy[0] = 1;
|
||||||
psHu32(0x1000F240) |= 0x2000;
|
psHu32(0x1000F240) |= 0x2000;
|
||||||
|
@ -142,7 +142,7 @@ void psxDma9(u32 madr, u32 bcr, u32 chcr)
|
||||||
}
|
}
|
||||||
|
|
||||||
void psxDma10(u32 madr, u32 bcr, u32 chcr) {
|
void psxDma10(u32 madr, u32 bcr, u32 chcr) {
|
||||||
SIF_LOG("IOP: dmaSIF1 chcr = %lx, madr = %lx, bcr = %lx\n", chcr, madr, bcr);
|
SIF_LOG("IOP: dmaSIF1 chcr = %lx, madr = %lx, bcr = %lx", chcr, madr, bcr);
|
||||||
|
|
||||||
iopsifbusy[1] = 1;
|
iopsifbusy[1] = 1;
|
||||||
psHu32(0x1000F240) |= 0x4000;
|
psHu32(0x1000F240) |= 0x4000;
|
||||||
|
@ -163,17 +163,17 @@ void psxDma8(u32 madr, u32 bcr, u32 chcr) {
|
||||||
|
|
||||||
switch (chcr & 0x01000201) {
|
switch (chcr & 0x01000201) {
|
||||||
case 0x01000201: //cpu to dev9 transfer
|
case 0x01000201: //cpu to dev9 transfer
|
||||||
PSXDMA_LOG("*** DMA 8 - DEV9 mem2dev9 *** %lx addr = %lx size = %lx\n", chcr, madr, bcr);
|
PSXDMA_LOG("*** DMA 8 - DEV9 mem2dev9 *** %lx addr = %lx size = %lx", chcr, madr, bcr);
|
||||||
DEV9writeDMA8Mem((u32*)iopPhysMem(madr), size);
|
DEV9writeDMA8Mem((u32*)iopPhysMem(madr), size);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x01000200: //dev9 to cpu transfer
|
case 0x01000200: //dev9 to cpu transfer
|
||||||
PSXDMA_LOG("*** DMA 8 - DEV9 dev9mem *** %lx addr = %lx size = %lx\n", chcr, madr, bcr);
|
PSXDMA_LOG("*** DMA 8 - DEV9 dev9mem *** %lx addr = %lx size = %lx", chcr, madr, bcr);
|
||||||
DEV9readDMA8Mem((u32*)iopPhysMem(madr), size);
|
DEV9readDMA8Mem((u32*)iopPhysMem(madr), size);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
PSXDMA_LOG("*** DMA 8 - DEV9 unknown *** %lx addr = %lx size = %lx\n", chcr, madr, bcr);
|
PSXDMA_LOG("*** DMA 8 - DEV9 unknown *** %lx addr = %lx size = %lx", chcr, madr, bcr);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
HW_DMA8_CHCR &= ~0x01000000;
|
HW_DMA8_CHCR &= ~0x01000000;
|
||||||
|
|
492
pcsx2/IopHw.cpp
492
pcsx2/IopHw.cpp
File diff suppressed because it is too large
Load Diff
|
@ -156,7 +156,7 @@ u8 iopMemRead8(u32 mem)
|
||||||
{
|
{
|
||||||
if (t == 0x1000)
|
if (t == 0x1000)
|
||||||
return DEV9read8(mem);
|
return DEV9read8(mem);
|
||||||
PSXMEM_LOG("err lb %8.8lx\n", mem);
|
PSXMEM_LOG("err lb %8.8lx", mem);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -200,7 +200,7 @@ u16 iopMemRead16(u32 mem)
|
||||||
ret = psxHu16(mem);
|
ret = psxHu16(mem);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
SIF_LOG("Sif reg read %x value %x\n", mem, ret);
|
SIF_LOG("Sif reg read %x value %x", mem, ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
return *(const u16 *)(p + (mem & 0xffff));
|
return *(const u16 *)(p + (mem & 0xffff));
|
||||||
|
@ -211,7 +211,7 @@ u16 iopMemRead16(u32 mem)
|
||||||
return SPU2read(mem);
|
return SPU2read(mem);
|
||||||
if (t == 0x1000)
|
if (t == 0x1000)
|
||||||
return DEV9read16(mem);
|
return DEV9read16(mem);
|
||||||
PSXMEM_LOG("err lh %8.8lx\n", mem);
|
PSXMEM_LOG("err lh %8.8lx", mem);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -261,7 +261,7 @@ u32 iopMemRead32(u32 mem)
|
||||||
ret = psxHu32(mem);
|
ret = psxHu32(mem);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
SIF_LOG("Sif reg read %x value %x\n", mem, ret);
|
SIF_LOG("Sif reg read %x value %x", mem, ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
return *(const u32 *)(p + (mem & 0xffff));
|
return *(const u32 *)(p + (mem & 0xffff));
|
||||||
|
@ -311,7 +311,7 @@ void iopMemWrite8(u32 mem, u8 value)
|
||||||
{
|
{
|
||||||
DEV9write8(mem, value); return;
|
DEV9write8(mem, value); return;
|
||||||
}
|
}
|
||||||
PSXMEM_LOG("err sb %8.8lx = %x\n", mem, value);
|
PSXMEM_LOG("err sb %8.8lx = %x", mem, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -374,7 +374,7 @@ void iopMemWrite16(u32 mem, u16 value)
|
||||||
if (t == 0x1000) {
|
if (t == 0x1000) {
|
||||||
DEV9write16(mem, value); return;
|
DEV9write16(mem, value); return;
|
||||||
}
|
}
|
||||||
PSXMEM_LOG("err sh %8.8lx = %x\n", mem, value);
|
PSXMEM_LOG("err sh %8.8lx = %x", mem, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -403,7 +403,7 @@ void iopMemWrite32(u32 mem, u32 value)
|
||||||
{
|
{
|
||||||
if (t == 0x1d00)
|
if (t == 0x1d00)
|
||||||
{
|
{
|
||||||
MEM_LOG("iop Sif reg write %x value %x\n", mem, value);
|
MEM_LOG("iop Sif reg write %x value %x", mem, value);
|
||||||
switch (mem & 0xf0)
|
switch (mem & 0xf0)
|
||||||
{
|
{
|
||||||
case 0x00: // EE write path (EE/IOP readable)
|
case 0x00: // EE write path (EE/IOP readable)
|
||||||
|
|
|
@ -60,13 +60,13 @@ void sio2Reset() {
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 sio2_getRecv1() {
|
u32 sio2_getRecv1() {
|
||||||
PAD_LOG("Reading Recv1 = %x\n",sio2.packet.recvVal1);
|
PAD_LOG("Reading Recv1 = %x",sio2.packet.recvVal1);
|
||||||
|
|
||||||
return sio2.packet.recvVal1;
|
return sio2.packet.recvVal1;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 sio2_getRecv2() {
|
u32 sio2_getRecv2() {
|
||||||
PAD_LOG("Reading Recv2 = %x\n",0xF);
|
PAD_LOG("Reading Recv2 = %x",0xF);
|
||||||
|
|
||||||
return 0xf;
|
return 0xf;
|
||||||
}//0, 0x10, 0x20, 0x10 | 0x20; bits 4 & 5
|
}//0, 0x10, 0x20, 0x10 | 0x20; bits 4 & 5
|
||||||
|
@ -75,7 +75,7 @@ u32 sio2_getRecv3() {
|
||||||
if(sio2.packet.recvVal3 == 0x8C || sio2.packet.recvVal3 == 0x8b ||
|
if(sio2.packet.recvVal3 == 0x8C || sio2.packet.recvVal3 == 0x8b ||
|
||||||
sio2.packet.recvVal3 == 0x83)
|
sio2.packet.recvVal3 == 0x83)
|
||||||
{
|
{
|
||||||
PAD_LOG("Reading Recv3 = %x\n",sio2.packet.recvVal3);
|
PAD_LOG("Reading Recv3 = %x",sio2.packet.recvVal3);
|
||||||
|
|
||||||
sio.packetsize = sio2.packet.recvVal3;
|
sio.packetsize = sio2.packet.recvVal3;
|
||||||
sio2.packet.recvVal3 = 0; // Reset
|
sio2.packet.recvVal3 = 0; // Reset
|
||||||
|
@ -83,7 +83,7 @@ u32 sio2_getRecv3() {
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PAD_LOG("Reading Recv3 = %x\n",sio.packetsize << 16);
|
PAD_LOG("Reading Recv3 = %x",sio.packetsize << 16);
|
||||||
|
|
||||||
return sio.packetsize << 16;
|
return sio.packetsize << 16;
|
||||||
}
|
}
|
||||||
|
@ -103,7 +103,7 @@ void sio2_setSend3(u32 index, u32 value)
|
||||||
// for (i=0; i<4; i++){PAD_LOG("0x%08X ", sio2.packet.sendArray2[i]);}PAD_LOG("\n");
|
// for (i=0; i<4; i++){PAD_LOG("0x%08X ", sio2.packet.sendArray2[i]);}PAD_LOG("\n");
|
||||||
// for (i=0; i<8; i++){PAD_LOG("0x%08X ", sio2.packet.sendArray3[i]);}PAD_LOG("\n");
|
// for (i=0; i<8; i++){PAD_LOG("0x%08X ", sio2.packet.sendArray3[i]);}PAD_LOG("\n");
|
||||||
// for ( ; i<16; i++){PAD_LOG("0x%08X ", sio2.packet.sendArray3[i]);}PAD_LOG("\n");
|
// for ( ; i<16; i++){PAD_LOG("0x%08X ", sio2.packet.sendArray3[i]);}PAD_LOG("\n");
|
||||||
PAD_LOG("[%d] : 0x%08X\n", index,sio2.packet.sendArray3[index]);
|
PAD_LOG("[%d] : 0x%08X", index,sio2.packet.sendArray3[index]);
|
||||||
// }
|
// }
|
||||||
} //0->15
|
} //0->15
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ void sio2_serialIn(u8 value){
|
||||||
ctrl |= (sio2.packet.sendArray3[sio2.cmdport] & 1) << 13;
|
ctrl |= (sio2.packet.sendArray3[sio2.cmdport] & 1) << 13;
|
||||||
//sioWriteCtrl16(SIO_RESET);
|
//sioWriteCtrl16(SIO_RESET);
|
||||||
sioWriteCtrl16(ctrl);
|
sioWriteCtrl16(ctrl);
|
||||||
PSXDMA_LOG("sio2_fifoIn: ctrl = %x, cmdlength = %x, cmdport = %d (%x)\n", ctrl, sio2.cmdlength, sio2.cmdport, sio2.packet.sendArray3[sio2.cmdport]);
|
PSXDMA_LOG("sio2_fifoIn: ctrl = %x, cmdlength = %x, cmdport = %d (%x)", ctrl, sio2.cmdlength, sio2.cmdport, sio2.packet.sendArray3[sio2.cmdport]);
|
||||||
|
|
||||||
sio2.cmdport++;
|
sio2.cmdport++;
|
||||||
}
|
}
|
||||||
|
@ -175,7 +175,7 @@ void sio2_fifoIn(u8 value){
|
||||||
ctrl |= (sio2.packet.sendArray3[sio2.cmdport] & 1) << 13;
|
ctrl |= (sio2.packet.sendArray3[sio2.cmdport] & 1) << 13;
|
||||||
//sioWriteCtrl16(SIO_RESET);
|
//sioWriteCtrl16(SIO_RESET);
|
||||||
sioWriteCtrl16(ctrl);
|
sioWriteCtrl16(ctrl);
|
||||||
PSXDMA_LOG("sio2_fifoIn: ctrl = %x, cmdlength = %x, cmdport = %d (%x)\n", ctrl, sio2.cmdlength, sio2.cmdport, sio2.packet.sendArray3[sio2.cmdport]);
|
PSXDMA_LOG("sio2_fifoIn: ctrl = %x, cmdlength = %x, cmdport = %d (%x)", ctrl, sio2.cmdlength, sio2.cmdport, sio2.packet.sendArray3[sio2.cmdport]);
|
||||||
|
|
||||||
sio2.cmdport++;
|
sio2.cmdport++;
|
||||||
}
|
}
|
||||||
|
@ -214,7 +214,7 @@ void SaveState::sio2Freeze()
|
||||||
void psxDma11(u32 madr, u32 bcr, u32 chcr) {
|
void psxDma11(u32 madr, u32 bcr, u32 chcr) {
|
||||||
unsigned int i, j;
|
unsigned int i, j;
|
||||||
int size = (bcr >> 16) * (bcr & 0xffff);
|
int size = (bcr >> 16) * (bcr & 0xffff);
|
||||||
PSXDMA_LOG("*** DMA 11 - SIO2 in *** %lx addr = %lx size = %lx\n", chcr, madr, bcr);
|
PSXDMA_LOG("*** DMA 11 - SIO2 in *** %lx addr = %lx size = %lx", chcr, madr, bcr);
|
||||||
|
|
||||||
if (chcr != 0x01000201) return;
|
if (chcr != 0x01000201) return;
|
||||||
|
|
||||||
|
@ -243,7 +243,7 @@ void psxDMA11Interrupt()
|
||||||
|
|
||||||
void psxDma12(u32 madr, u32 bcr, u32 chcr) {
|
void psxDma12(u32 madr, u32 bcr, u32 chcr) {
|
||||||
int size = ((bcr >> 16) * (bcr & 0xFFFF)) * 4;
|
int size = ((bcr >> 16) * (bcr & 0xFFFF)) * 4;
|
||||||
PSXDMA_LOG("*** DMA 12 - SIO2 out *** %lx addr = %lx size = %lx\n", chcr, madr, size);
|
PSXDMA_LOG("*** DMA 12 - SIO2 out *** %lx addr = %lx size = %lx", chcr, madr, size);
|
||||||
|
|
||||||
if (chcr != 0x41000200) return;
|
if (chcr != 0x41000200) return;
|
||||||
|
|
||||||
|
|
|
@ -156,7 +156,7 @@ void mdecInit(void) {
|
||||||
|
|
||||||
|
|
||||||
void mdecWrite0(u32 data) {
|
void mdecWrite0(u32 data) {
|
||||||
CDR_LOG("mdec0 write %lx\n", data);
|
CDR_LOG("mdec0 write %lx", data);
|
||||||
|
|
||||||
mdec.command = data;
|
mdec.command = data;
|
||||||
if ((data&0xf5ff0000)==0x30000000) {
|
if ((data&0xf5ff0000)==0x30000000) {
|
||||||
|
@ -165,7 +165,7 @@ void mdecWrite0(u32 data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void mdecWrite1(u32 data) {
|
void mdecWrite1(u32 data) {
|
||||||
CDR_LOG("mdec1 write %lx\n", data);
|
CDR_LOG("mdec1 write %lx", data);
|
||||||
|
|
||||||
if (data&0x80000000) { // mdec reset
|
if (data&0x80000000) { // mdec reset
|
||||||
round_init();
|
round_init();
|
||||||
|
@ -174,14 +174,14 @@ void mdecWrite1(u32 data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 mdecRead0(void) {
|
u32 mdecRead0(void) {
|
||||||
CDR_LOG("mdec0 read %lx\n", mdec.command);
|
CDR_LOG("mdec0 read %lx", mdec.command);
|
||||||
|
|
||||||
return mdec.command;
|
return mdec.command;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 mdecRead1(void) {
|
u32 mdecRead1(void) {
|
||||||
#ifdef CDR_LOG
|
#ifdef CDR_LOG
|
||||||
CDR_LOG("mdec1 read %lx\n", mdec.status);
|
CDR_LOG("mdec1 read %lx", mdec.status);
|
||||||
#endif
|
#endif
|
||||||
return mdec.status;
|
return mdec.status;
|
||||||
}
|
}
|
||||||
|
@ -190,7 +190,7 @@ void psxDma0(u32 adr, u32 bcr, u32 chcr) {
|
||||||
int cmd = mdec.command;
|
int cmd = mdec.command;
|
||||||
int size;
|
int size;
|
||||||
|
|
||||||
CDR_LOG("DMA0 %lx %lx %lx\n", adr, bcr, chcr);
|
CDR_LOG("DMA0 %lx %lx %lx", adr, bcr, chcr);
|
||||||
|
|
||||||
if (chcr!=0x01000201) return;
|
if (chcr!=0x01000201) return;
|
||||||
|
|
||||||
|
@ -214,7 +214,7 @@ void psxDma1(u32 adr, u32 bcr, u32 chcr) {
|
||||||
unsigned short *image;
|
unsigned short *image;
|
||||||
int size;
|
int size;
|
||||||
|
|
||||||
CDR_LOG("DMA1 %lx %lx %lx (cmd = %lx)\n", adr, bcr, chcr, mdec.command);
|
CDR_LOG("DMA1 %lx %lx %lx (cmd = %lx)", adr, bcr, chcr, mdec.command);
|
||||||
|
|
||||||
if (chcr!=0x01000200) return;
|
if (chcr!=0x01000200) return;
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,7 @@ void memSetUserMode() {
|
||||||
|
|
||||||
u16 ba0R16(u32 mem)
|
u16 ba0R16(u32 mem)
|
||||||
{
|
{
|
||||||
//MEM_LOG("ba00000 Memory read16 address %x\n", mem);
|
//MEM_LOG("ba00000 Memory read16 address %x", mem);
|
||||||
|
|
||||||
if (mem == 0x1a000006) {
|
if (mem == 0x1a000006) {
|
||||||
static int ba6;
|
static int ba6;
|
||||||
|
@ -259,7 +259,7 @@ mem8_t __fastcall _ext_memRead8 (u32 mem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MEM_LOG("Unknown Memory Read8 from address %8.8x\n", mem);
|
MEM_LOG("Unknown Memory Read8 from address %8.8x", mem);
|
||||||
cpuTlbMissR(mem, cpuRegs.branch);
|
cpuTlbMissR(mem, cpuRegs.branch);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -274,7 +274,7 @@ mem16_t __fastcall _ext_memRead16(u32 mem)
|
||||||
case 2: // psh
|
case 2: // psh
|
||||||
return psxHwRead16(mem);
|
return psxHwRead16(mem);
|
||||||
case 4: // b80
|
case 4: // b80
|
||||||
MEM_LOG("b800000 Memory read16 address %x\n", mem);
|
MEM_LOG("b800000 Memory read16 address %x", mem);
|
||||||
return 0;
|
return 0;
|
||||||
case 5: // ba0
|
case 5: // ba0
|
||||||
return ba0R16(mem);
|
return ba0R16(mem);
|
||||||
|
@ -291,7 +291,7 @@ mem16_t __fastcall _ext_memRead16(u32 mem)
|
||||||
case 8: // spu2
|
case 8: // spu2
|
||||||
return SPU2read(mem);
|
return SPU2read(mem);
|
||||||
}
|
}
|
||||||
MEM_LOG("Unknown Memory read16 from address %8.8x\n", mem);
|
MEM_LOG("Unknown Memory read16 from address %8.8x", mem);
|
||||||
cpuTlbMissR(mem, cpuRegs.branch);
|
cpuTlbMissR(mem, cpuRegs.branch);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -313,7 +313,7 @@ mem32_t __fastcall _ext_memRead32(u32 mem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MEM_LOG("Unknown Memory read32 from address %8.8x (Status=%8.8x)\n", mem, cpuRegs.CP0.n.Status.val);
|
MEM_LOG("Unknown Memory read32 from address %8.8x (Status=%8.8x)", mem, cpuRegs.CP0.n.Status.val);
|
||||||
cpuTlbMissR(mem, cpuRegs.branch);
|
cpuTlbMissR(mem, cpuRegs.branch);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -327,7 +327,7 @@ void __fastcall _ext_memRead64(u32 mem, mem64_t *out)
|
||||||
*out = gsRead64(mem); return;
|
*out = gsRead64(mem); return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MEM_LOG("Unknown Memory read64 from address %8.8x\n", mem);
|
MEM_LOG("Unknown Memory read64 from address %8.8x", mem);
|
||||||
cpuTlbMissR(mem, cpuRegs.branch);
|
cpuTlbMissR(mem, cpuRegs.branch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -343,7 +343,7 @@ void __fastcall _ext_memRead128(u32 mem, mem128_t *out)
|
||||||
out[1] = gsRead64(mem+8); return;
|
out[1] = gsRead64(mem+8); return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MEM_LOG("Unknown Memory read128 from address %8.8x\n", mem);
|
MEM_LOG("Unknown Memory read128 from address %8.8x", mem);
|
||||||
cpuTlbMissR(mem, cpuRegs.branch);
|
cpuTlbMissR(mem, cpuRegs.branch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -366,7 +366,7 @@ void __fastcall _ext_memWrite8 (u32 mem, u8 value)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MEM_LOG("Unknown Memory write8 to address %x with data %2.2x\n", mem, value);
|
MEM_LOG("Unknown Memory write8 to address %x with data %2.2x", mem, value);
|
||||||
cpuTlbMissW(mem, cpuRegs.branch);
|
cpuTlbMissW(mem, cpuRegs.branch);
|
||||||
}
|
}
|
||||||
template<int p>
|
template<int p>
|
||||||
|
@ -379,7 +379,7 @@ void __fastcall _ext_memWrite16(u32 mem, u16 value)
|
||||||
case 2: // psh
|
case 2: // psh
|
||||||
psxHwWrite16(mem, value); return;
|
psxHwWrite16(mem, value); return;
|
||||||
case 5: // ba0
|
case 5: // ba0
|
||||||
MEM_LOG("ba00000 Memory write16 to address %x with data %x\n", mem, value);
|
MEM_LOG("ba00000 Memory write16 to address %x with data %x", mem, value);
|
||||||
return;
|
return;
|
||||||
case 6: // gsm
|
case 6: // gsm
|
||||||
gsWrite16(mem, value); return;
|
gsWrite16(mem, value); return;
|
||||||
|
@ -390,7 +390,7 @@ void __fastcall _ext_memWrite16(u32 mem, u16 value)
|
||||||
case 8: // spu2
|
case 8: // spu2
|
||||||
SPU2write(mem, value); return;
|
SPU2write(mem, value); return;
|
||||||
}
|
}
|
||||||
MEM_LOG("Unknown Memory write16 to address %x with data %4.4x\n", mem, value);
|
MEM_LOG("Unknown Memory write16 to address %x with data %4.4x", mem, value);
|
||||||
cpuTlbMissW(mem, cpuRegs.branch);
|
cpuTlbMissW(mem, cpuRegs.branch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -407,7 +407,7 @@ void __fastcall _ext_memWrite32(u32 mem, u32 value)
|
||||||
Console::WriteLn("DEV9 write32 %8.8lx: %8.8lx", params mem & ~0xa4000000, value);
|
Console::WriteLn("DEV9 write32 %8.8lx: %8.8lx", params mem & ~0xa4000000, value);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
MEM_LOG("Unknown Memory write32 to address %x with data %8.8x\n", mem, value);
|
MEM_LOG("Unknown Memory write32 to address %x with data %8.8x", mem, value);
|
||||||
cpuTlbMissW(mem, cpuRegs.branch);
|
cpuTlbMissW(mem, cpuRegs.branch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -423,7 +423,7 @@ void __fastcall _ext_memWrite64(u32 mem, const u64* value)
|
||||||
// gsWrite64(mem & ~0xa0000000, *value); return;
|
// gsWrite64(mem & ~0xa0000000, *value); return;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
MEM_LOG("Unknown Memory write64 to address %x with data %8.8x_%8.8x\n", mem, (u32)(*value>>32), (u32)*value);
|
MEM_LOG("Unknown Memory write64 to address %x with data %8.8x_%8.8x", mem, (u32)(*value>>32), (u32)*value);
|
||||||
cpuTlbMissW(mem, cpuRegs.branch);
|
cpuTlbMissW(mem, cpuRegs.branch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -440,7 +440,7 @@ void __fastcall _ext_memWrite128(u32 mem, const u64 *value)
|
||||||
// gsWrite64(mem+8, value[1]); return;
|
// gsWrite64(mem+8, value[1]); return;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
MEM_LOG("Unknown Memory write128 to address %x with data %8.8x_%8.8x_%8.8x_%8.8x\n", mem, ((u32*)value)[3], ((u32*)value)[2], ((u32*)value)[1], ((u32*)value)[0]);
|
MEM_LOG("Unknown Memory write128 to address %x with data %8.8x_%8.8x_%8.8x_%8.8x", mem, ((u32*)value)[3], ((u32*)value)[2], ((u32*)value)[1], ((u32*)value)[0]);
|
||||||
cpuTlbMissW(mem, cpuRegs.branch);
|
cpuTlbMissW(mem, cpuRegs.branch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,7 @@ void psxShutdown() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void psxException(u32 code, u32 bd) {
|
void psxException(u32 code, u32 bd) {
|
||||||
// PSXCPU_LOG("psxException %x: %x, %x\n", code, psxHu32(0x1070), psxHu32(0x1074));
|
// PSXCPU_LOG("psxException %x: %x, %x", code, psxHu32(0x1070), psxHu32(0x1074));
|
||||||
//Console::WriteLn("!! psxException %x: %x, %x", params code, psxHu32(0x1070), psxHu32(0x1074));
|
//Console::WriteLn("!! psxException %x: %x, %x", params code, psxHu32(0x1070), psxHu32(0x1074));
|
||||||
// Set the Cause
|
// Set the Cause
|
||||||
psxRegs.CP0.n.Cause &= ~0x7f;
|
psxRegs.CP0.n.Cause &= ~0x7f;
|
||||||
|
@ -84,7 +84,7 @@ void psxException(u32 code, u32 bd) {
|
||||||
// Set the EPC & PC
|
// Set the EPC & PC
|
||||||
if (bd)
|
if (bd)
|
||||||
{
|
{
|
||||||
PSXCPU_LOG("bd set\n");
|
PSXCPU_LOG("bd set");
|
||||||
psxRegs.CP0.n.Cause|= 0x80000000;
|
psxRegs.CP0.n.Cause|= 0x80000000;
|
||||||
psxRegs.CP0.n.EPC = (psxRegs.pc - 4);
|
psxRegs.CP0.n.EPC = (psxRegs.pc - 4);
|
||||||
}
|
}
|
||||||
|
@ -111,7 +111,7 @@ void psxException(u32 code, u32 bd) {
|
||||||
case 0xa0:
|
case 0xa0:
|
||||||
|
|
||||||
if (call != 0x28 && call != 0xe)
|
if (call != 0x28 && call != 0xe)
|
||||||
PSXBIOS_LOG("Bios call a0: %s (%x) %x,%x,%x,%x\n", biosA0n[call], call, psxRegs.GPR.n.a0, psxRegs.GPR.n.a1, psxRegs.GPR.n.a2, psxRegs.GPR.n.a3);
|
PSXBIOS_LOG("Bios call a0: %s (%x) %x,%x,%x,%x", biosA0n[call], call, psxRegs.GPR.n.a0, psxRegs.GPR.n.a1, psxRegs.GPR.n.a2, psxRegs.GPR.n.a3);
|
||||||
|
|
||||||
if (biosA0[call])
|
if (biosA0[call])
|
||||||
biosA0[call]();
|
biosA0[call]();
|
||||||
|
@ -119,14 +119,14 @@ void psxException(u32 code, u32 bd) {
|
||||||
|
|
||||||
case 0xb0:
|
case 0xb0:
|
||||||
if (call != 0x17 && call != 0xb)
|
if (call != 0x17 && call != 0xb)
|
||||||
PSXBIOS_LOG("Bios call b0: %s (%x) %x,%x,%x,%x\n", biosB0n[call], call, psxRegs.GPR.n.a0, psxRegs.GPR.n.a1, psxRegs.GPR.n.a2, psxRegs.GPR.n.a3);
|
PSXBIOS_LOG("Bios call b0: %s (%x) %x,%x,%x,%x", biosB0n[call], call, psxRegs.GPR.n.a0, psxRegs.GPR.n.a1, psxRegs.GPR.n.a2, psxRegs.GPR.n.a3);
|
||||||
|
|
||||||
if (biosB0[call])
|
if (biosB0[call])
|
||||||
biosB0[call]();
|
biosB0[call]();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0xc0:
|
case 0xc0:
|
||||||
PSXBIOS_LOG("Bios call c0: %s (%x) %x,%x,%x,%x\n", biosC0n[call], call, psxRegs.GPR.n.a0, psxRegs.GPR.n.a1, psxRegs.GPR.n.a2, psxRegs.GPR.n.a3);
|
PSXBIOS_LOG("Bios call c0: %s (%x) %x,%x,%x,%x", biosC0n[call], call, psxRegs.GPR.n.a0, psxRegs.GPR.n.a1, psxRegs.GPR.n.a2, psxRegs.GPR.n.a3);
|
||||||
|
|
||||||
if (biosC0[call])
|
if (biosC0[call])
|
||||||
biosC0[call]();
|
biosC0[call]();
|
||||||
|
@ -248,7 +248,7 @@ void psxBranchTest()
|
||||||
|
|
||||||
if ((psxRegs.CP0.n.Status & 0xFE01) >= 0x401)
|
if ((psxRegs.CP0.n.Status & 0xFE01) >= 0x401)
|
||||||
{
|
{
|
||||||
PSXCPU_LOG("Interrupt: %x %x\n", psxHu32(0x1070), psxHu32(0x1074));
|
PSXCPU_LOG("Interrupt: %x %x", psxHu32(0x1070), psxHu32(0x1074));
|
||||||
psxException(0, 0);
|
psxException(0, 0);
|
||||||
iopBranchAction = true;
|
iopBranchAction = true;
|
||||||
}
|
}
|
||||||
|
@ -278,6 +278,6 @@ void iopTestIntc()
|
||||||
void psxExecuteBios() {
|
void psxExecuteBios() {
|
||||||
/* while (psxRegs.pc != 0x80030000)
|
/* while (psxRegs.pc != 0x80030000)
|
||||||
psxCpu->ExecuteBlock();
|
psxCpu->ExecuteBlock();
|
||||||
PSX_LOG("*BIOS END*\n");
|
PSX_LOG("*BIOS END*");
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
|
@ -291,7 +291,7 @@ void zeroEx()
|
||||||
pc = psxRegs.GPR.n.ra;
|
pc = psxRegs.GPR.n.ra;
|
||||||
while (psxRegs.pc != pc) psxCpu->ExecuteBlock();
|
while (psxRegs.pc != pc) psxCpu->ExecuteBlock();
|
||||||
|
|
||||||
PSXBIOS_LOG("%s: %s (%x) END\n", lib, fname == NULL ? "unknown" : fname, code);*/
|
PSXBIOS_LOG("%s: %s (%x) END", lib, fname == NULL ? "unknown" : fname, code);*/
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -305,7 +305,7 @@ char* getName(char *file, u32 addr){
|
||||||
name[0]=0;
|
name[0]=0;
|
||||||
else{
|
else{
|
||||||
while (!feof(f)){
|
while (!feof(f)){
|
||||||
fscanf(f, "%08X %s\n", &a, name);
|
fscanf(f, "%08X %s", &a, name);
|
||||||
if (a==addr)break;
|
if (a==addr)break;
|
||||||
}
|
}
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
@ -324,13 +324,13 @@ void spyFunctions(){
|
||||||
if (strncmp("__push_params", name, 13)==0){
|
if (strncmp("__push_params", name, 13)==0){
|
||||||
PAD_LOG(PSXM(psxRegs.GPR.n.a0), psxRegs.GPR.n.a1, psxRegs.GPR.n.a2, psxRegs.GPR.n.a3);
|
PAD_LOG(PSXM(psxRegs.GPR.n.a0), psxRegs.GPR.n.a1, psxRegs.GPR.n.a2, psxRegs.GPR.n.a3);
|
||||||
}else{
|
}else{
|
||||||
PAD_LOG("secrman: %s (ra=%06X cycle=%d)\n", name, psxRegs.GPR.n.ra-iii->vaddr, psxRegs.cycle);}}else
|
PAD_LOG("secrman: %s (ra=%06X cycle=%d)", name, psxRegs.GPR.n.ra-iii->vaddr, psxRegs.cycle);}}else
|
||||||
if (strcmp("mcman", PSXM(iii->name))==0){
|
if (strcmp("mcman", PSXM(iii->name))==0){
|
||||||
PAD_LOG("mcman: %s (ra=%06X cycle=%d)\n", getName("mcman.fun", psxRegs.pc-iii->vaddr), psxRegs.GPR.n.ra-iii->vaddr, psxRegs.cycle);}else
|
PAD_LOG("mcman: %s (ra=%06X cycle=%d)", getName("mcman.fun", psxRegs.pc-iii->vaddr), psxRegs.GPR.n.ra-iii->vaddr, psxRegs.cycle);}else
|
||||||
if (strcmp("padman", PSXM(iii->name))==0){
|
if (strcmp("padman", PSXM(iii->name))==0){
|
||||||
PAD_LOG("padman: %s (ra=%06X cycle=%d)\n", getName("padman.fun", psxRegs.pc-iii->vaddr), psxRegs.GPR.n.ra-iii->vaddr, psxRegs.cycle);}else
|
PAD_LOG("padman: %s (ra=%06X cycle=%d)", getName("padman.fun", psxRegs.pc-iii->vaddr), psxRegs.GPR.n.ra-iii->vaddr, psxRegs.cycle);}else
|
||||||
if (strcmp("sio2man", PSXM(iii->name))==0){
|
if (strcmp("sio2man", PSXM(iii->name))==0){
|
||||||
PAD_LOG("sio2man: %s (ra=%06X cycle=%d)\n", getName("sio2man.fun", psxRegs.pc-iii->vaddr), psxRegs.GPR.n.ra-iii->vaddr, psxRegs.cycle);}
|
PAD_LOG("sio2man: %s (ra=%06X cycle=%d)", getName("sio2man.fun", psxRegs.pc-iii->vaddr), psxRegs.GPR.n.ra-iii->vaddr, psxRegs.cycle);}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -381,7 +381,7 @@ static __forceinline void execI()
|
||||||
psxRegs.code = iopMemRead32(psxRegs.pc);
|
psxRegs.code = iopMemRead32(psxRegs.pc);
|
||||||
|
|
||||||
//if( (psxRegs.pc >= 0x1200 && psxRegs.pc <= 0x1400) || (psxRegs.pc >= 0x0b40 && psxRegs.pc <= 0x1000))
|
//if( (psxRegs.pc >= 0x1200 && psxRegs.pc <= 0x1400) || (psxRegs.pc >= 0x0b40 && psxRegs.pc <= 0x1000))
|
||||||
PSXCPU_LOG("%s\n", disR3000AF(psxRegs.code, psxRegs.pc));
|
PSXCPU_LOG("%s", disR3000AF(psxRegs.code, psxRegs.pc));
|
||||||
|
|
||||||
psxRegs.pc+= 4;
|
psxRegs.pc+= 4;
|
||||||
psxRegs.cycle++;
|
psxRegs.cycle++;
|
||||||
|
|
|
@ -130,12 +130,12 @@ void COP2()
|
||||||
//std::string disOut;
|
//std::string disOut;
|
||||||
//disR5900Fasm(disOut, cpuRegs.code, cpuRegs.pc);
|
//disR5900Fasm(disOut, cpuRegs.code, cpuRegs.pc);
|
||||||
|
|
||||||
//VU0_LOG("%s\n", disOut.c_str());
|
//VU0_LOG("%s", disOut.c_str());
|
||||||
Int_COP2PrintTable[_Rs_]();
|
Int_COP2PrintTable[_Rs_]();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unknown() {
|
void Unknown() {
|
||||||
CPU_LOG("%8.8lx: Unknown opcode called\n", cpuRegs.pc);
|
CPU_LOG("%8.8lx: Unknown opcode called", cpuRegs.pc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MMI_Unknown() { Console::Notice("Unknown MMI opcode called"); }
|
void MMI_Unknown() { Console::Notice("Unknown MMI opcode called"); }
|
||||||
|
@ -758,7 +758,7 @@ int __Deci2Call(int call, u32 *addr)
|
||||||
if( addr != NULL )
|
if( addr != NULL )
|
||||||
{
|
{
|
||||||
deci2addr = (u32*)PSM(addr[1]);
|
deci2addr = (u32*)PSM(addr[1]);
|
||||||
BIOS_LOG("deci2open: %x,%x,%x,%x\n",
|
BIOS_LOG("deci2open: %x,%x,%x,%x",
|
||||||
addr[3], addr[2], addr[1], addr[0]);
|
addr[3], addr[2], addr[1], addr[0]);
|
||||||
deci2handler = addr[2];
|
deci2handler = addr[2];
|
||||||
}
|
}
|
||||||
|
@ -778,7 +778,7 @@ int __Deci2Call(int call, u32 *addr)
|
||||||
if( addr != NULL )
|
if( addr != NULL )
|
||||||
sprintf( reqaddr, "%x %x %x %x", addr[3], addr[2], addr[1], addr[0] );
|
sprintf( reqaddr, "%x %x %x %x", addr[3], addr[2], addr[1], addr[0] );
|
||||||
|
|
||||||
BIOS_LOG("deci2reqsend: %s: deci2addr: %x,%x,%x,buf=%x %x,%x,len=%x,%x\n",
|
BIOS_LOG("deci2reqsend: %s: deci2addr: %x,%x,%x,buf=%x %x,%x,len=%x,%x",
|
||||||
(( addr == NULL ) ? "NULL" : reqaddr),
|
(( addr == NULL ) ? "NULL" : reqaddr),
|
||||||
deci2addr[7], deci2addr[6], deci2addr[5], deci2addr[4],
|
deci2addr[7], deci2addr[6], deci2addr[5], deci2addr[4],
|
||||||
deci2addr[3], deci2addr[2], deci2addr[1], deci2addr[0]);
|
deci2addr[3], deci2addr[2], deci2addr[1], deci2addr[0]);
|
||||||
|
@ -830,7 +830,7 @@ void SYSCALL()
|
||||||
else
|
else
|
||||||
call = cpuRegs.GPR.n.v1.UC[0];
|
call = cpuRegs.GPR.n.v1.UC[0];
|
||||||
|
|
||||||
BIOS_LOG("Bios call: %s (%x)\n", bios[call], call);
|
BIOS_LOG("Bios call: %s (%x)", bios[call], call);
|
||||||
|
|
||||||
if (call == 0x7c)
|
if (call == 0x7c)
|
||||||
{
|
{
|
||||||
|
@ -856,7 +856,7 @@ void SYSCALL()
|
||||||
addr = cpuRegs.GPR.n.a0.UL[0] + n_transfer * sizeof(t_sif_dma_transfer);
|
addr = cpuRegs.GPR.n.a0.UL[0] + n_transfer * sizeof(t_sif_dma_transfer);
|
||||||
dmat = (t_sif_dma_transfer*)PSM(addr);
|
dmat = (t_sif_dma_transfer*)PSM(addr);
|
||||||
|
|
||||||
BIOS_LOG("bios_%s: n_transfer=%d, size=%x, attr=%x, dest=%x, src=%x\n",
|
BIOS_LOG("bios_%s: n_transfer=%d, size=%x, attr=%x, dest=%x, src=%x",
|
||||||
bios[cpuRegs.GPR.n.v1.UC[0]], n_transfer,
|
bios[cpuRegs.GPR.n.v1.UC[0]], n_transfer,
|
||||||
dmat->size, dmat->attr,
|
dmat->size, dmat->attr,
|
||||||
dmat->dest, dmat->src);
|
dmat->dest, dmat->src);
|
||||||
|
|
|
@ -35,7 +35,7 @@ void sprInit() {
|
||||||
|
|
||||||
//__forceinline static void SPR0transfer(u32 *data, int size) {
|
//__forceinline static void SPR0transfer(u32 *data, int size) {
|
||||||
///* while (size > 0) {
|
///* while (size > 0) {
|
||||||
// SPR_LOG("SPR1transfer: %x\n", *data);
|
// SPR_LOG("SPR1transfer: %x", *data);
|
||||||
// data++; size--;
|
// data++; size--;
|
||||||
// }*/
|
// }*/
|
||||||
// size <<= 2;
|
// size <<= 2;
|
||||||
|
@ -54,11 +54,11 @@ static void TestClearVUs(u32 madr, u32 size)
|
||||||
{
|
{
|
||||||
if( madr >= 0x11000000 ) {
|
if( madr >= 0x11000000 ) {
|
||||||
if( madr < 0x11004000 ) {
|
if( madr < 0x11004000 ) {
|
||||||
DbgCon::Notice("scratch pad clearing vu0\n");
|
DbgCon::Notice("scratch pad clearing vu0");
|
||||||
CpuVU0.Clear(madr&0xfff, size);
|
CpuVU0.Clear(madr&0xfff, size);
|
||||||
}
|
}
|
||||||
else if( madr >= 0x11008000 && madr < 0x1100c000 ) {
|
else if( madr >= 0x11008000 && madr < 0x1100c000 ) {
|
||||||
DbgCon::Notice("scratch pad clearing vu1\n");
|
DbgCon::Notice("scratch pad clearing vu1");
|
||||||
CpuVU1.Clear(madr&0x3fff, size);
|
CpuVU1.Clear(madr&0x3fff, size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -106,7 +106,7 @@ void _SPR0interleave() {
|
||||||
u32 *pMem;
|
u32 *pMem;
|
||||||
if(tqwc == 0) tqwc = qwc;
|
if(tqwc == 0) tqwc = qwc;
|
||||||
//Console::WriteLn("dmaSPR0 interleave");
|
//Console::WriteLn("dmaSPR0 interleave");
|
||||||
SPR_LOG("SPR0 interleave size=%d, tqwc=%d, sqwc=%d, addr=%lx sadr=%lx\n",
|
SPR_LOG("SPR0 interleave size=%d, tqwc=%d, sqwc=%d, addr=%lx sadr=%lx",
|
||||||
spr0->qwc, tqwc, sqwc, spr0->madr, spr0->sadr);
|
spr0->qwc, tqwc, sqwc, spr0->madr, spr0->sadr);
|
||||||
|
|
||||||
while (qwc > 0) {
|
while (qwc > 0) {
|
||||||
|
@ -173,7 +173,7 @@ static __forceinline void _dmaSPR0() {
|
||||||
spr0->qwc = (u16)ptag[0]; //QWC set to lower 16bits of the tag
|
spr0->qwc = (u16)ptag[0]; //QWC set to lower 16bits of the tag
|
||||||
spr0->madr = ptag[1]; //MADR = ADDR field
|
spr0->madr = ptag[1]; //MADR = ADDR field
|
||||||
|
|
||||||
SPR_LOG("spr0 dmaChain %8.8x_%8.8x size=%d, id=%d, addr=%lx spr=%lx\n",
|
SPR_LOG("spr0 dmaChain %8.8x_%8.8x size=%d, id=%d, addr=%lx spr=%lx",
|
||||||
ptag[1], ptag[0], spr0->qwc, id, spr0->madr, spr0->sadr);
|
ptag[1], ptag[0], spr0->qwc, id, spr0->madr, spr0->sadr);
|
||||||
|
|
||||||
if ((psHu32(DMAC_CTRL) & 0x30) == 0x20) { // STS == fromSPR
|
if ((psHu32(DMAC_CTRL) & 0x30) == 0x20) { // STS == fromSPR
|
||||||
|
@ -217,7 +217,7 @@ static __forceinline void _dmaSPR0() {
|
||||||
spr0->qwc = 0;
|
spr0->qwc = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
SPR_LOG("spr0 dmaChain complete %8.8x_%8.8x size=%d, id=%d, addr=%lx spr=%lx\n",
|
SPR_LOG("spr0 dmaChain complete %8.8x_%8.8x size=%d, id=%d, addr=%lx spr=%lx",
|
||||||
ptag[1], ptag[0], spr0->qwc, id, spr0->madr);
|
ptag[1], ptag[0], spr0->qwc, id, spr0->madr);
|
||||||
//CPU_INT(8, cycles);
|
//CPU_INT(8, cycles);
|
||||||
} else { // Interleave Mode
|
} else { // Interleave Mode
|
||||||
|
@ -261,7 +261,7 @@ void SPRFROMinterrupt()
|
||||||
void dmaSPR0() { // fromSPR
|
void dmaSPR0() { // fromSPR
|
||||||
|
|
||||||
|
|
||||||
SPR_LOG("dmaSPR0 chcr = %lx, madr = %lx, qwc = %lx, sadr = %lx\n",
|
SPR_LOG("dmaSPR0 chcr = %lx, madr = %lx, qwc = %lx, sadr = %lx",
|
||||||
spr0->chcr, spr0->madr, spr0->qwc, spr0->sadr);
|
spr0->chcr, spr0->madr, spr0->qwc, spr0->sadr);
|
||||||
|
|
||||||
if ((spr0->chcr & 0xc) == 0x4 && spr0->qwc == 0){
|
if ((spr0->chcr & 0xc) == 0x4 && spr0->qwc == 0){
|
||||||
|
@ -316,7 +316,7 @@ void _SPR1interleave() {
|
||||||
int cycles = 0;
|
int cycles = 0;
|
||||||
u32 *pMem;
|
u32 *pMem;
|
||||||
if(tqwc == 0) tqwc = qwc;
|
if(tqwc == 0) tqwc = qwc;
|
||||||
SPR_LOG("SPR1 interleave size=%d, tqwc=%d, sqwc=%d, addr=%lx sadr=%lx\n",
|
SPR_LOG("SPR1 interleave size=%d, tqwc=%d, sqwc=%d, addr=%lx sadr=%lx",
|
||||||
spr1->qwc, tqwc, sqwc, spr1->madr, spr1->sadr);
|
spr1->qwc, tqwc, sqwc, spr1->madr, spr1->sadr);
|
||||||
|
|
||||||
while (qwc > 0) {
|
while (qwc > 0) {
|
||||||
|
@ -380,14 +380,14 @@ void _dmaSPR1() { // toSPR work function
|
||||||
SPR1transfer(ptag, 4); //Transfer Tag
|
SPR1transfer(ptag, 4); //Transfer Tag
|
||||||
}
|
}
|
||||||
|
|
||||||
SPR_LOG("spr1 dmaChain %8.8x_%8.8x size=%d, id=%d, addr=%lx\n",
|
SPR_LOG("spr1 dmaChain %8.8x_%8.8x size=%d, id=%d, addr=%lx",
|
||||||
ptag[1], ptag[0], spr1->qwc, id, spr1->madr);
|
ptag[1], ptag[0], spr1->qwc, id, spr1->madr);
|
||||||
|
|
||||||
done = hwDmacSrcChain(spr1, id);
|
done = hwDmacSrcChain(spr1, id);
|
||||||
SPR1chain(); //Transfers the data set by the switch
|
SPR1chain(); //Transfers the data set by the switch
|
||||||
|
|
||||||
if (spr1->chcr & 0x80 && ptag[0] >> 31) { //Check TIE bit of CHCR and IRQ bit of tag
|
if (spr1->chcr & 0x80 && ptag[0] >> 31) { //Check TIE bit of CHCR and IRQ bit of tag
|
||||||
SPR_LOG("dmaIrq Set\n");
|
SPR_LOG("dmaIrq Set");
|
||||||
|
|
||||||
//Console::WriteLn("SPR1 TIE");
|
//Console::WriteLn("SPR1 TIE");
|
||||||
spr1->qwc = 0;
|
spr1->qwc = 0;
|
||||||
|
@ -410,7 +410,7 @@ void _dmaSPR1() { // toSPR work function
|
||||||
void dmaSPR1() { // toSPR
|
void dmaSPR1() { // toSPR
|
||||||
|
|
||||||
SPR_LOG("dmaSPR1 chcr = 0x%x, madr = 0x%x, qwc = 0x%x\n"
|
SPR_LOG("dmaSPR1 chcr = 0x%x, madr = 0x%x, qwc = 0x%x\n"
|
||||||
" tadr = 0x%x, sadr = 0x%x\n",
|
" tadr = 0x%x, sadr = 0x%x",
|
||||||
spr1->chcr, spr1->madr, spr1->qwc,
|
spr1->chcr, spr1->madr, spr1->qwc,
|
||||||
spr1->tadr, spr1->sadr);
|
spr1->tadr, spr1->sadr);
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,7 @@ static __forceinline void SIF0write(u32 *from, int words)
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
sif0.fifoSize += words;
|
sif0.fifoSize += words;
|
||||||
SIF_LOG(" SIF0 + %d = %d (pos=%d)\n", words, sif0.fifoSize, sif0.fifoWritePos);
|
SIF_LOG(" SIF0 + %d = %d (pos=%d)", words, sif0.fifoSize, sif0.fifoWritePos);
|
||||||
}
|
}
|
||||||
|
|
||||||
static __forceinline void SIF0read(u32 *to, int words)
|
static __forceinline void SIF0read(u32 *to, int words)
|
||||||
|
@ -115,7 +115,7 @@ static __forceinline void SIF0read(u32 *to, int words)
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
sif0.fifoSize -= words;
|
sif0.fifoSize -= words;
|
||||||
SIF_LOG(" SIF0 - %d = %d (pos=%d)\n", words, sif0.fifoSize, sif0.fifoReadPos);
|
SIF_LOG(" SIF0 - %d = %d (pos=%d)", words, sif0.fifoSize, sif0.fifoReadPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
__forceinline void SIF1write(u32 *from, int words)
|
__forceinline void SIF1write(u32 *from, int words)
|
||||||
|
@ -137,7 +137,7 @@ __forceinline void SIF1write(u32 *from, int words)
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
sif1.fifoSize += words;
|
sif1.fifoSize += words;
|
||||||
SIF_LOG(" SIF1 + %d = %d (pos=%d)\n", words, sif1.fifoSize, sif1.fifoWritePos);
|
SIF_LOG(" SIF1 + %d = %d (pos=%d)", words, sif1.fifoSize, sif1.fifoWritePos);
|
||||||
}
|
}
|
||||||
|
|
||||||
static __forceinline void SIF1read(u32 *to, int words)
|
static __forceinline void SIF1read(u32 *to, int words)
|
||||||
|
@ -159,7 +159,7 @@ static __forceinline void SIF1read(u32 *to, int words)
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
sif1.fifoSize -= words;
|
sif1.fifoSize -= words;
|
||||||
SIF_LOG(" SIF1 - %d = %d (pos=%d)\n", words, sif1.fifoSize, sif1.fifoReadPos);
|
SIF_LOG(" SIF1 - %d = %d (pos=%d)", words, sif1.fifoSize, sif1.fifoReadPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
__forceinline void SIF0Dma()
|
__forceinline void SIF0Dma()
|
||||||
|
@ -168,7 +168,7 @@ __forceinline void SIF0Dma()
|
||||||
int notDone = 1;
|
int notDone = 1;
|
||||||
int cycles = 0, psxCycles = 0;
|
int cycles = 0, psxCycles = 0;
|
||||||
|
|
||||||
SIF_LOG("SIF0 DMA start...\n");
|
SIF_LOG("SIF0 DMA start...");
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -185,7 +185,7 @@ __forceinline void SIF0Dma()
|
||||||
// Note.. add normal mode here
|
// Note.. add normal mode here
|
||||||
if (sif0.sifData.data & 0xC0000000) // If NORMAL mode or end of CHAIN, or interrupt then stop DMA
|
if (sif0.sifData.data & 0xC0000000) // If NORMAL mode or end of CHAIN, or interrupt then stop DMA
|
||||||
{
|
{
|
||||||
SIF_LOG(" IOP SIF Stopped\n");
|
SIF_LOG(" IOP SIF Stopped");
|
||||||
|
|
||||||
// Stop & signal interrupts on IOP
|
// Stop & signal interrupts on IOP
|
||||||
//HW_DMA9_CHCR &= ~0x01000000; //reset TR flag
|
//HW_DMA9_CHCR &= ~0x01000000; //reset TR flag
|
||||||
|
@ -217,18 +217,18 @@ __forceinline void SIF0Dma()
|
||||||
sif0.counter = sif0.sifData.words & 0xFFFFFF;
|
sif0.counter = sif0.sifData.words & 0xFFFFFF;
|
||||||
notDone = 1;
|
notDone = 1;
|
||||||
|
|
||||||
SIF_LOG(" SIF0 Tag: madr=%lx, tadr=%lx, counter=%lx (%08X_%08X)\n", HW_DMA9_MADR, HW_DMA9_TADR, sif0.counter, sif0.sifData.words, sif0.sifData.data);
|
SIF_LOG(" SIF0 Tag: madr=%lx, tadr=%lx, counter=%lx (%08X_%08X)", HW_DMA9_MADR, HW_DMA9_TADR, sif0.counter, sif0.sifData.words, sif0.sifData.data);
|
||||||
if(sif0.sifData.data & 0x40000000)
|
if(sif0.sifData.data & 0x40000000)
|
||||||
SIF_LOG(" END\n");
|
SIF_LOG(" END");
|
||||||
else
|
else
|
||||||
SIF_LOG(" CNT %08X, %08X\n", sif0.sifData.data, sif0.sifData.words);
|
SIF_LOG(" CNT %08X, %08X", sif0.sifData.data, sif0.sifData.words);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // There's some data ready to transfer into the fifo..
|
else // There's some data ready to transfer into the fifo..
|
||||||
{
|
{
|
||||||
int wTransfer = min(sif0.counter, FIFO_SIF0_W-sif0.fifoSize); // HW_DMA9_BCR >> 16;
|
int wTransfer = min(sif0.counter, FIFO_SIF0_W-sif0.fifoSize); // HW_DMA9_BCR >> 16;
|
||||||
|
|
||||||
SIF_LOG("+++++++++++ %lX of %lX\n", wTransfer, sif0.counter /*(HW_DMA9_BCR >> 16)*/ );
|
SIF_LOG("+++++++++++ %lX of %lX", wTransfer, sif0.counter /*(HW_DMA9_BCR >> 16)*/ );
|
||||||
|
|
||||||
SIF0write((u32*)iopPhysMem(HW_DMA9_MADR), wTransfer);
|
SIF0write((u32*)iopPhysMem(HW_DMA9_MADR), wTransfer);
|
||||||
HW_DMA9_MADR += wTransfer << 2;
|
HW_DMA9_MADR += wTransfer << 2;
|
||||||
|
@ -245,7 +245,7 @@ __forceinline void SIF0Dma()
|
||||||
{
|
{
|
||||||
int size = sif0dma->qwc;
|
int size = sif0dma->qwc;
|
||||||
if ((psHu32(DMAC_CTRL) & 0x30) == 0x10) { // STS == fromSIF0
|
if ((psHu32(DMAC_CTRL) & 0x30) == 0x10) { // STS == fromSIF0
|
||||||
SIF_LOG("SIF0 stall control\n");
|
SIF_LOG("SIF0 stall control");
|
||||||
}
|
}
|
||||||
if(size > 0) // If we're reading something continue to do so
|
if(size > 0) // If we're reading something continue to do so
|
||||||
{
|
{
|
||||||
|
@ -253,8 +253,8 @@ __forceinline void SIF0Dma()
|
||||||
{*/
|
{*/
|
||||||
int readSize = min(size, (sif0.fifoSize>>2));
|
int readSize = min(size, (sif0.fifoSize>>2));
|
||||||
|
|
||||||
//SIF_LOG(" EE SIF doing transfer %04Xqw to %08X\n", readSize, sif0dma->madr);
|
//SIF_LOG(" EE SIF doing transfer %04Xqw to %08X", readSize, sif0dma->madr);
|
||||||
SIF_LOG("----------- %lX of %lX\n", readSize << 2, size << 2 );
|
SIF_LOG("----------- %lX of %lX", readSize << 2, size << 2 );
|
||||||
|
|
||||||
_dmaGetAddr(sif0dma, ptag, sif0dma->madr, 5);
|
_dmaGetAddr(sif0dma, ptag, sif0dma->madr, 5);
|
||||||
|
|
||||||
|
@ -262,7 +262,7 @@ __forceinline void SIF0Dma()
|
||||||
// {
|
// {
|
||||||
// int i;
|
// int i;
|
||||||
// for(i = 0; i < readSize; ++i) {
|
// for(i = 0; i < readSize; ++i) {
|
||||||
// SIF_LOG("EE SIF0 read madr: %x %x %x %x\n", ((u32*)ptag)[4*i+0], ((u32*)ptag)[4*i+1], ((u32*)ptag)[4*i+2], ((u32*)ptag)[4*i+3]);
|
// SIF_LOG("EE SIF0 read madr: %x %x %x %x", ((u32*)ptag)[4*i+0], ((u32*)ptag)[4*i+1], ((u32*)ptag)[4*i+2], ((u32*)ptag)[4*i+3]);
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
@ -282,7 +282,7 @@ __forceinline void SIF0Dma()
|
||||||
if((sif0dma->chcr & 0x80000080) == 0x80000080) // Stop on tag IRQ
|
if((sif0dma->chcr & 0x80000080) == 0x80000080) // Stop on tag IRQ
|
||||||
{
|
{
|
||||||
// Tag interrupt
|
// Tag interrupt
|
||||||
SIF_LOG(" EE SIF interrupt\n");
|
SIF_LOG(" EE SIF interrupt");
|
||||||
|
|
||||||
//sif0dma->chcr &= ~0x100;
|
//sif0dma->chcr &= ~0x100;
|
||||||
eesifbusy[0] = 0;
|
eesifbusy[0] = 0;
|
||||||
|
@ -293,7 +293,7 @@ __forceinline void SIF0Dma()
|
||||||
else if(sif0.end) // Stop on tag END
|
else if(sif0.end) // Stop on tag END
|
||||||
{
|
{
|
||||||
// End tag.
|
// End tag.
|
||||||
SIF_LOG(" EE SIF end\n");
|
SIF_LOG(" EE SIF end");
|
||||||
|
|
||||||
//sif0dma->chcr &= ~0x100;
|
//sif0dma->chcr &= ~0x100;
|
||||||
//hwDmacIrq(5);
|
//hwDmacIrq(5);
|
||||||
|
@ -305,7 +305,7 @@ __forceinline void SIF0Dma()
|
||||||
{
|
{
|
||||||
static PCSX2_ALIGNED16(u32 tag[4]);
|
static PCSX2_ALIGNED16(u32 tag[4]);
|
||||||
SIF0read((u32*)&tag[0], 4); // Tag
|
SIF0read((u32*)&tag[0], 4); // Tag
|
||||||
SIF_LOG(" EE SIF read tag: %x %x %x %x\n", tag[0], tag[1], tag[2], tag[3]);
|
SIF_LOG(" EE SIF read tag: %x %x %x %x", tag[0], tag[1], tag[2], tag[3]);
|
||||||
|
|
||||||
sif0dma->qwc = (u16)tag[0];
|
sif0dma->qwc = (u16)tag[0];
|
||||||
sif0dma->madr = tag[1];
|
sif0dma->madr = tag[1];
|
||||||
|
@ -314,7 +314,7 @@ __forceinline void SIF0Dma()
|
||||||
/*if ((sif0dma->chcr & 0x80) && (tag[0] >> 31)) {
|
/*if ((sif0dma->chcr & 0x80) && (tag[0] >> 31)) {
|
||||||
Console::WriteLn("SIF0 TIE");
|
Console::WriteLn("SIF0 TIE");
|
||||||
}*/
|
}*/
|
||||||
SIF_LOG(" EE SIF dest chain tag madr:%08X qwc:%04X id:%X irq:%d(%08X_%08X)\n", sif0dma->madr, sif0dma->qwc, (tag[0]>>28)&3, (tag[0]>>31)&1, tag[1], tag[0]);
|
SIF_LOG(" EE SIF dest chain tag madr:%08X qwc:%04X id:%X irq:%d(%08X_%08X)", sif0dma->madr, sif0dma->qwc, (tag[0]>>28)&3, (tag[0]>>31)&1, tag[1], tag[0]);
|
||||||
|
|
||||||
if ((psHu32(DMAC_CTRL) & 0x30) != 0 && ((tag[0]>>28)&3) == 0)
|
if ((psHu32(DMAC_CTRL) & 0x30) != 0 && ((tag[0]>>28)&3) == 0)
|
||||||
psHu32(DMAC_STADR) = sif0dma->madr + (sif0dma->qwc * 16);
|
psHu32(DMAC_STADR) = sif0dma->madr + (sif0dma->qwc * 16);
|
||||||
|
@ -342,7 +342,7 @@ __forceinline void SIF1Dma()
|
||||||
{
|
{
|
||||||
|
|
||||||
if ((psHu32(DMAC_CTRL) & 0xC0) == 0xC0)
|
if ((psHu32(DMAC_CTRL) & 0xC0) == 0xC0)
|
||||||
SIF_LOG("SIF1 stall control\n"); // STS == fromSIF1
|
SIF_LOG("SIF1 stall control"); // STS == fromSIF1
|
||||||
|
|
||||||
if(sif1dma->qwc == 0) // If there's no more to transfer
|
if(sif1dma->qwc == 0) // If there's no more to transfer
|
||||||
{
|
{
|
||||||
|
@ -351,7 +351,7 @@ __forceinline void SIF1Dma()
|
||||||
// Stop & signal interrupts on EE
|
// Stop & signal interrupts on EE
|
||||||
//sif1dma->chcr &= ~0x100;
|
//sif1dma->chcr &= ~0x100;
|
||||||
//hwDmacIrq(6);
|
//hwDmacIrq(6);
|
||||||
SIF_LOG("EE SIF1 End %x\n", sif1.end);
|
SIF_LOG("EE SIF1 End %x", sif1.end);
|
||||||
eesifbusy[1] = 0;
|
eesifbusy[1] = 0;
|
||||||
notDone = 0;
|
notDone = 0;
|
||||||
CPU_INT(6, cycles*BIAS);
|
CPU_INT(6, cycles*BIAS);
|
||||||
|
@ -377,33 +377,33 @@ __forceinline void SIF1Dma()
|
||||||
switch(id)
|
switch(id)
|
||||||
{
|
{
|
||||||
case 0: // refe
|
case 0: // refe
|
||||||
SIF_LOG(" REFE %08X\n", ptag[1]);
|
SIF_LOG(" REFE %08X", ptag[1]);
|
||||||
sif1.end = 1;
|
sif1.end = 1;
|
||||||
sif1dma->madr = ptag[1];
|
sif1dma->madr = ptag[1];
|
||||||
sif1dma->tadr += 16;
|
sif1dma->tadr += 16;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1: // cnt
|
case 1: // cnt
|
||||||
SIF_LOG(" CNT\n");
|
SIF_LOG(" CNT");
|
||||||
sif1dma->madr = sif1dma->tadr + 16;
|
sif1dma->madr = sif1dma->tadr + 16;
|
||||||
sif1dma->tadr = sif1dma->madr + (sif1dma->qwc << 4);
|
sif1dma->tadr = sif1dma->madr + (sif1dma->qwc << 4);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2: // next
|
case 2: // next
|
||||||
SIF_LOG(" NEXT %08X\n", ptag[1]);
|
SIF_LOG(" NEXT %08X", ptag[1]);
|
||||||
sif1dma->madr = sif1dma->tadr + 16;
|
sif1dma->madr = sif1dma->tadr + 16;
|
||||||
sif1dma->tadr = ptag[1];
|
sif1dma->tadr = ptag[1];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3: // ref
|
case 3: // ref
|
||||||
case 4: // refs
|
case 4: // refs
|
||||||
SIF_LOG(" REF %08X\n", ptag[1]);
|
SIF_LOG(" REF %08X", ptag[1]);
|
||||||
sif1dma->madr = ptag[1];
|
sif1dma->madr = ptag[1];
|
||||||
sif1dma->tadr += 16;
|
sif1dma->tadr += 16;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7: // end
|
case 7: // end
|
||||||
SIF_LOG(" END\n");
|
SIF_LOG(" END");
|
||||||
sif1.end = 1;
|
sif1.end = 1;
|
||||||
sif1dma->madr = sif1dma->tadr + 16;
|
sif1dma->madr = sif1dma->tadr + 16;
|
||||||
sif1dma->tadr = sif1dma->madr + (sif1dma->qwc << 4);
|
sif1dma->tadr = sif1dma->madr + (sif1dma->qwc << 4);
|
||||||
|
@ -450,7 +450,7 @@ __forceinline void SIF1Dma()
|
||||||
|
|
||||||
if(readSize > sif1.fifoSize) readSize = sif1.fifoSize;
|
if(readSize > sif1.fifoSize) readSize = sif1.fifoSize;
|
||||||
|
|
||||||
SIF_LOG(" IOP SIF doing transfer %04X to %08X\n", readSize, HW_DMA10_MADR);
|
SIF_LOG(" IOP SIF doing transfer %04X to %08X", readSize, HW_DMA10_MADR);
|
||||||
|
|
||||||
SIF1read((u32*)iopPhysMem(HW_DMA10_MADR), readSize);
|
SIF1read((u32*)iopPhysMem(HW_DMA10_MADR), readSize);
|
||||||
psxCpu->Clear(HW_DMA10_MADR, readSize);
|
psxCpu->Clear(HW_DMA10_MADR, readSize);
|
||||||
|
@ -466,7 +466,7 @@ __forceinline void SIF1Dma()
|
||||||
if(sif1.tagMode & 0x80) // Stop on tag IRQ
|
if(sif1.tagMode & 0x80) // Stop on tag IRQ
|
||||||
{
|
{
|
||||||
// Tag interrupt
|
// Tag interrupt
|
||||||
SIF_LOG(" IOP SIF interrupt\n");
|
SIF_LOG(" IOP SIF interrupt");
|
||||||
//HW_DMA10_CHCR &= ~0x01000000; //reset TR flag
|
//HW_DMA10_CHCR &= ~0x01000000; //reset TR flag
|
||||||
//psxDmaInterrupt2(3);
|
//psxDmaInterrupt2(3);
|
||||||
iopsifbusy[1] = 0;
|
iopsifbusy[1] = 0;
|
||||||
|
@ -478,7 +478,7 @@ __forceinline void SIF1Dma()
|
||||||
else if(sif1.tagMode & 0x40) // Stop on tag END
|
else if(sif1.tagMode & 0x40) // Stop on tag END
|
||||||
{
|
{
|
||||||
// End tag.
|
// End tag.
|
||||||
SIF_LOG(" IOP SIF end\n");
|
SIF_LOG(" IOP SIF end");
|
||||||
//HW_DMA10_CHCR &= ~0x01000000; //reset TR flag
|
//HW_DMA10_CHCR &= ~0x01000000; //reset TR flag
|
||||||
//psxDmaInterrupt2(3);
|
//psxDmaInterrupt2(3);
|
||||||
iopsifbusy[1] = 0;
|
iopsifbusy[1] = 0;
|
||||||
|
@ -491,7 +491,7 @@ __forceinline void SIF1Dma()
|
||||||
{
|
{
|
||||||
struct sifData d;
|
struct sifData d;
|
||||||
SIF1read((u32*)&d, 4);
|
SIF1read((u32*)&d, 4);
|
||||||
SIF_LOG(" IOP SIF dest chain tag madr:%08X wc:%04X id:%X irq:%d\n", d.data & 0xffffff, d.words, (d.data>>28)&7, (d.data>>31)&1);
|
SIF_LOG(" IOP SIF dest chain tag madr:%08X wc:%04X id:%X irq:%d", d.data & 0xffffff, d.words, (d.data>>28)&7, (d.data>>31)&1);
|
||||||
HW_DMA10_MADR = d.data & 0xffffff;
|
HW_DMA10_MADR = d.data & 0xffffff;
|
||||||
sif1.counter = d.words;
|
sif1.counter = d.words;
|
||||||
sif1.tagMode = (d.data >> 24) & 0xFF;
|
sif1.tagMode = (d.data >> 24) & 0xFF;
|
||||||
|
@ -527,11 +527,11 @@ __forceinline void EEsif1Interrupt() {
|
||||||
}
|
}
|
||||||
|
|
||||||
__forceinline void dmaSIF0() {
|
__forceinline void dmaSIF0() {
|
||||||
SIF_LOG("EE: dmaSIF0 chcr = %lx, madr = %lx, qwc = %lx, tadr = %lx\n",
|
SIF_LOG("EE: dmaSIF0 chcr = %lx, madr = %lx, qwc = %lx, tadr = %lx",
|
||||||
sif0dma->chcr, sif0dma->madr, sif0dma->qwc, sif0dma->tadr);
|
sif0dma->chcr, sif0dma->madr, sif0dma->qwc, sif0dma->tadr);
|
||||||
|
|
||||||
if (sif0.fifoReadPos != sif0.fifoWritePos) {
|
if (sif0.fifoReadPos != sif0.fifoWritePos) {
|
||||||
SIF_LOG("warning, sif0.fifoReadPos != sif0.fifoWritePos\n");
|
SIF_LOG("warning, sif0.fifoReadPos != sif0.fifoWritePos");
|
||||||
}
|
}
|
||||||
// if(sif0dma->qwc > 0 & (sif0dma->chcr & 0x4) == 0x4) {
|
// if(sif0dma->qwc > 0 & (sif0dma->chcr & 0x4) == 0x4) {
|
||||||
// sif0dma->chcr &= ~4; //Halflife sets a QWC amount in chain mode, no tadr set.
|
// sif0dma->chcr &= ~4; //Halflife sets a QWC amount in chain mode, no tadr set.
|
||||||
|
@ -551,11 +551,11 @@ __forceinline void dmaSIF0() {
|
||||||
}
|
}
|
||||||
|
|
||||||
__forceinline void dmaSIF1() {
|
__forceinline void dmaSIF1() {
|
||||||
SIF_LOG("EE: dmaSIF1 chcr = %lx, madr = %lx, qwc = %lx, tadr = %lx\n",
|
SIF_LOG("EE: dmaSIF1 chcr = %lx, madr = %lx, qwc = %lx, tadr = %lx",
|
||||||
sif1dma->chcr, sif1dma->madr, sif1dma->qwc, sif1dma->tadr);
|
sif1dma->chcr, sif1dma->madr, sif1dma->qwc, sif1dma->tadr);
|
||||||
|
|
||||||
if (sif1.fifoReadPos != sif1.fifoWritePos) {
|
if (sif1.fifoReadPos != sif1.fifoWritePos) {
|
||||||
SIF_LOG("warning, sif1.fifoReadPos != sif1.fifoWritePos\n");
|
SIF_LOG("warning, sif1.fifoReadPos != sif1.fifoWritePos");
|
||||||
}
|
}
|
||||||
|
|
||||||
// if(sif1dma->qwc > 0 & (sif1dma->chcr & 0x4) == 0x4) {
|
// if(sif1dma->qwc > 0 & (sif1dma->chcr & 0x4) == 0x4) {
|
||||||
|
@ -577,7 +577,7 @@ __forceinline void dmaSIF1() {
|
||||||
}
|
}
|
||||||
|
|
||||||
__forceinline void dmaSIF2() {
|
__forceinline void dmaSIF2() {
|
||||||
SIF_LOG("dmaSIF2 chcr = %lx, madr = %lx, qwc = %lx\n",
|
SIF_LOG("dmaSIF2 chcr = %lx, madr = %lx, qwc = %lx",
|
||||||
sif2dma->chcr, sif2dma->madr, sif2dma->qwc);
|
sif2dma->chcr, sif2dma->madr, sif2dma->qwc);
|
||||||
|
|
||||||
sif2dma->chcr&= ~0x100;
|
sif2dma->chcr&= ~0x100;
|
||||||
|
|
|
@ -99,12 +99,12 @@ u8 sioRead8() {
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//PAD_LOG("sio read8 ;ret = %x\n", ret);
|
//PAD_LOG("sio read8 ;ret = %x", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SIO_CommandWrite(u8 value,int way) {
|
void SIO_CommandWrite(u8 value,int way) {
|
||||||
PAD_LOG("sio write8 %x\n", value);
|
PAD_LOG("sio write8 %x", value);
|
||||||
|
|
||||||
// PAD COMMANDS
|
// PAD COMMANDS
|
||||||
switch (sio.padst) {
|
switch (sio.padst) {
|
||||||
|
@ -149,7 +149,7 @@ void SIO_CommandWrite(u8 value,int way) {
|
||||||
sio.parp = 1;
|
sio.parp = 1;
|
||||||
switch (value) {
|
switch (value) {
|
||||||
case 0x11: // RESET
|
case 0x11: // RESET
|
||||||
PAD_LOG("RESET MEMORY CARD\n");
|
PAD_LOG("RESET MEMORY CARD");
|
||||||
|
|
||||||
sio.bufcount = 8;
|
sio.bufcount = 8;
|
||||||
memset8_obj<0xff>(sio.buf);
|
memset8_obj<0xff>(sio.buf);
|
||||||
|
@ -166,7 +166,7 @@ void SIO_CommandWrite(u8 value,int way) {
|
||||||
sio.mcdst = 99;
|
sio.mcdst = 99;
|
||||||
|
|
||||||
sio2.packet.recvVal3 = 0x8c;
|
sio2.packet.recvVal3 = 0x8c;
|
||||||
MEMCARDS_LOG("MC(%d) command 0x%02X\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("MC(%d) command 0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
break;
|
break;
|
||||||
case 0x81: // COMMIT
|
case 0x81: // COMMIT
|
||||||
sio.bufcount = 8;
|
sio.bufcount = 8;
|
||||||
|
@ -180,7 +180,7 @@ void SIO_CommandWrite(u8 value,int way) {
|
||||||
sio2.packet.recvVal1 = 0x1600; // Writing
|
sio2.packet.recvVal1 = 0x1600; // Writing
|
||||||
else if(sio.mc_command==0x43) sio2.packet.recvVal1 = 0x1700; // Reading
|
else if(sio.mc_command==0x43) sio2.packet.recvVal1 = 0x1700; // Reading
|
||||||
}
|
}
|
||||||
MEMCARDS_LOG("MC(%d) command 0x%02X\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("MC(%d) command 0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
break;
|
break;
|
||||||
case 0x21:
|
case 0x21:
|
||||||
case 0x22:
|
case 0x22:
|
||||||
|
@ -190,20 +190,20 @@ void SIO_CommandWrite(u8 value,int way) {
|
||||||
sio2.packet.recvVal3 = 0x8c;
|
sio2.packet.recvVal3 = 0x8c;
|
||||||
sio.buf[8]=sio.terminator;
|
sio.buf[8]=sio.terminator;
|
||||||
sio.buf[7]='+';
|
sio.buf[7]='+';
|
||||||
MEMCARDS_LOG("MC(%d) command 0x%02X\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("MC(%d) command 0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
break;
|
break;
|
||||||
case 0x24:
|
case 0x24:
|
||||||
MEMCARDS_LOG("MC(%d) command 0x%02X\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("MC(%d) command 0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
break;
|
break;
|
||||||
case 0x25:
|
case 0x25:
|
||||||
MEMCARDS_LOG("MC(%d) command 0x%02X\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("MC(%d) command 0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
break;
|
break;
|
||||||
case 0x26:
|
case 0x26:
|
||||||
sio.bufcount = 12; sio.mcdst = 99; sio2.packet.recvVal3 = 0x83;
|
sio.bufcount = 12; sio.mcdst = 99; sio2.packet.recvVal3 = 0x83;
|
||||||
memset8_obj<0xff>(sio.buf);
|
memset8_obj<0xff>(sio.buf);
|
||||||
memcpy(&sio.buf[2], &mc_command_0x26, sizeof(mc_command_0x26));
|
memcpy(&sio.buf[2], &mc_command_0x26, sizeof(mc_command_0x26));
|
||||||
sio.buf[12]=sio.terminator;
|
sio.buf[12]=sio.terminator;
|
||||||
MEMCARDS_LOG("MC(%d) command 0x%02X\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("MC(%d) command 0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
break;
|
break;
|
||||||
case 0x27:
|
case 0x27:
|
||||||
case 0x28:
|
case 0x28:
|
||||||
|
@ -212,7 +212,7 @@ void SIO_CommandWrite(u8 value,int way) {
|
||||||
memset8_obj<0xff>(sio.buf);
|
memset8_obj<0xff>(sio.buf);
|
||||||
sio.buf[4]=sio.terminator;
|
sio.buf[4]=sio.terminator;
|
||||||
sio.buf[3]='+';
|
sio.buf[3]='+';
|
||||||
MEMCARDS_LOG("MC(%d) command 0x%02X\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("MC(%d) command 0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
break;
|
break;
|
||||||
case 0x42: // WRITE
|
case 0x42: // WRITE
|
||||||
case 0x43: // READ
|
case 0x43: // READ
|
||||||
|
@ -225,13 +225,13 @@ void SIO_CommandWrite(u8 value,int way) {
|
||||||
memset8_obj<0xff>(sio.buf);
|
memset8_obj<0xff>(sio.buf);
|
||||||
sio.buf[133]=sio.terminator;
|
sio.buf[133]=sio.terminator;
|
||||||
sio.buf[132]='+';
|
sio.buf[132]='+';
|
||||||
MEMCARDS_LOG("MC(%d) command 0x%02X\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("MC(%d) command 0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
break;
|
break;
|
||||||
case 0xf0:
|
case 0xf0:
|
||||||
case 0xf1:
|
case 0xf1:
|
||||||
case 0xf2:
|
case 0xf2:
|
||||||
sio.mcdst = 99;
|
sio.mcdst = 99;
|
||||||
MEMCARDS_LOG("MC(%d) command 0x%02X\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("MC(%d) command 0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
break;
|
break;
|
||||||
case 0xf3:
|
case 0xf3:
|
||||||
case 0xf7:
|
case 0xf7:
|
||||||
|
@ -239,23 +239,23 @@ void SIO_CommandWrite(u8 value,int way) {
|
||||||
memset8_obj<0xff>(sio.buf);
|
memset8_obj<0xff>(sio.buf);
|
||||||
sio.buf[4]=sio.terminator;
|
sio.buf[4]=sio.terminator;
|
||||||
sio.buf[3]='+';
|
sio.buf[3]='+';
|
||||||
MEMCARDS_LOG("MC(%d) command 0x%02X\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("MC(%d) command 0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
break;
|
break;
|
||||||
case 0x52:
|
case 0x52:
|
||||||
sio.rdwr = 1; memset8_obj<0xff>(sio.buf);
|
sio.rdwr = 1; memset8_obj<0xff>(sio.buf);
|
||||||
sio.buf[sio.bufcount]=sio.terminator; sio.buf[sio.bufcount-1]='+';
|
sio.buf[sio.bufcount]=sio.terminator; sio.buf[sio.bufcount-1]='+';
|
||||||
MEMCARDS_LOG("MC(%d) command 0x%02X\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("MC(%d) command 0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
break;
|
break;
|
||||||
case 0x57:
|
case 0x57:
|
||||||
sio.rdwr = 2; memset8_obj<0xff>(sio.buf);
|
sio.rdwr = 2; memset8_obj<0xff>(sio.buf);
|
||||||
sio.buf[sio.bufcount]=sio.terminator; sio.buf[sio.bufcount-1]='+';
|
sio.buf[sio.bufcount]=sio.terminator; sio.buf[sio.bufcount-1]='+';
|
||||||
MEMCARDS_LOG("MC(%d) command 0x%02X\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("MC(%d) command 0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
sio.mcdst = 0;
|
sio.mcdst = 0;
|
||||||
memset8_obj<0xff>(sio.buf);
|
memset8_obj<0xff>(sio.buf);
|
||||||
sio.buf[sio.bufcount]=sio.terminator; sio.buf[sio.bufcount-1]='+';
|
sio.buf[sio.bufcount]=sio.terminator; sio.buf[sio.bufcount-1]='+';
|
||||||
MEMCARDS_LOG("Unknown MC(%d) command 0x%02X\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("Unknown MC(%d) command 0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
}
|
}
|
||||||
sio.mc_command=value;
|
sio.mc_command=value;
|
||||||
return;
|
return;
|
||||||
|
@ -278,10 +278,10 @@ void SIO_CommandWrite(u8 value,int way) {
|
||||||
if (sio.parp==6)
|
if (sio.parp==6)
|
||||||
{
|
{
|
||||||
if (sio_xor((u8 *)&sio.sector, 4) == value)
|
if (sio_xor((u8 *)&sio.sector, 4) == value)
|
||||||
MEMCARDS_LOG("MC(%d) SET PAGE sio.sector 0x%04X\n",
|
MEMCARDS_LOG("MC(%d) SET PAGE sio.sector 0x%04X",
|
||||||
sio.GetMemcardIndex()+1, sio.sector);
|
sio.GetMemcardIndex()+1, sio.sector);
|
||||||
else
|
else
|
||||||
MEMCARDS_LOG("MC(%d) SET PAGE XOR value ERROR 0x%02X != ^0x%02X\n",
|
MEMCARDS_LOG("MC(%d) SET PAGE XOR value ERROR 0x%02X != ^0x%02X",
|
||||||
sio.GetMemcardIndex()+1, value, sio_xor((u8 *)&sio.sector, 4));
|
sio.GetMemcardIndex()+1, value, sio_xor((u8 *)&sio.sector, 4));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -291,7 +291,7 @@ void SIO_CommandWrite(u8 value,int way) {
|
||||||
if(sio.parp==2) {
|
if(sio.parp==2) {
|
||||||
sio.terminator = value;
|
sio.terminator = value;
|
||||||
sio.buf[4] = value;
|
sio.buf[4] = value;
|
||||||
MEMCARDS_LOG("MC(%d) SET TERMINATOR command 0x%02X\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("MC(%d) SET TERMINATOR command 0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -305,7 +305,7 @@ void SIO_CommandWrite(u8 value,int way) {
|
||||||
|
|
||||||
//if(value == 0) sio.buf[4] = 0xFF;
|
//if(value == 0) sio.buf[4] = 0xFF;
|
||||||
sio.buf[4] = 0x55;
|
sio.buf[4] = 0x55;
|
||||||
MEMCARDS_LOG("MC(%d) GET TERMINATOR command 0x%02X\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("MC(%d) GET TERMINATOR command 0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// WRITE DATA
|
// WRITE DATA
|
||||||
|
@ -315,12 +315,12 @@ void SIO_CommandWrite(u8 value,int way) {
|
||||||
memset8_obj<0xff>(sio.buf);
|
memset8_obj<0xff>(sio.buf);
|
||||||
sio.buf[sio.bufcount-1]='+';
|
sio.buf[sio.bufcount-1]='+';
|
||||||
sio.buf[sio.bufcount]=sio.terminator;
|
sio.buf[sio.bufcount]=sio.terminator;
|
||||||
MEMCARDS_LOG("MC(%d) WRITE command 0x%02X\n\n\n\n\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("MC(%d) WRITE command 0x%02X\n\n\n\n", sio.GetMemcardIndex()+1, value);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if ((sio.parp>2) && (sio.parp<sio.bufcount-2)) {
|
if ((sio.parp>2) && (sio.parp<sio.bufcount-2)) {
|
||||||
sio.buf[sio.parp]=value;
|
sio.buf[sio.parp]=value;
|
||||||
//MEMCARDS_LOG("MC(%d) WRITING 0x%02X\n", sio.GetMemcardIndex()+1, value);
|
//MEMCARDS_LOG("MC(%d) WRITING 0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
} else
|
} else
|
||||||
if (sio.parp==sio.bufcount-2) {
|
if (sio.parp==sio.bufcount-2) {
|
||||||
if (sio_xor(&sio.buf[3], sio.bufcount-5)==value) {
|
if (sio_xor(&sio.buf[3], sio.bufcount-5)==value) {
|
||||||
|
@ -328,7 +328,7 @@ void SIO_CommandWrite(u8 value,int way) {
|
||||||
sio.buf[sio.bufcount-1]=value;
|
sio.buf[sio.bufcount-1]=value;
|
||||||
sio.k+=sio.bufcount-5;
|
sio.k+=sio.bufcount-5;
|
||||||
}else {
|
}else {
|
||||||
MEMCARDS_LOG("MC(%d) write XOR value error 0x%02X != ^0x%02X\n",
|
MEMCARDS_LOG("MC(%d) write XOR value error 0x%02X != ^0x%02X",
|
||||||
sio.GetMemcardIndex()+1, value, sio_xor(&sio.buf[3], sio.bufcount-5));
|
sio.GetMemcardIndex()+1, value, sio_xor(&sio.buf[3], sio.bufcount-5));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -339,7 +339,7 @@ void SIO_CommandWrite(u8 value,int way) {
|
||||||
//int i;
|
//int i;
|
||||||
sio.bufcount=value+5;
|
sio.bufcount=value+5;
|
||||||
sio.buf[3]='+';
|
sio.buf[3]='+';
|
||||||
MEMCARDS_LOG("MC(%d) READ command 0x%02X\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("MC(%d) READ command 0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
_ReadMcd(&sio.buf[4], (512+16)*sio.sector+sio.k, value);
|
_ReadMcd(&sio.buf[4], (512+16)*sio.sector+sio.k, value);
|
||||||
/*if(sio.mode==2)
|
/*if(sio.mode==2)
|
||||||
{
|
{
|
||||||
|
@ -370,14 +370,14 @@ void SIO_CommandWrite(u8 value,int way) {
|
||||||
sio.buf[2]='+';
|
sio.buf[2]='+';
|
||||||
sio.buf[3]=sio.terminator;*/
|
sio.buf[3]=sio.terminator;*/
|
||||||
//sio.buf[sio.bufcount] = sio.terminator;
|
//sio.buf[sio.bufcount] = sio.terminator;
|
||||||
MEMCARDS_LOG("MC(%d) INTERNAL ERASE command 0x%02X\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("MC(%d) INTERNAL ERASE command 0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// CARD AUTHENTICATION CHECKS
|
// CARD AUTHENTICATION CHECKS
|
||||||
case 0xF0:
|
case 0xF0:
|
||||||
if (sio.parp==2)
|
if (sio.parp==2)
|
||||||
{
|
{
|
||||||
MEMCARDS_LOG("MC(%d) CARD AUTH :0x%02X\n", sio.GetMemcardIndex()+1, value);
|
MEMCARDS_LOG("MC(%d) CARD AUTH :0x%02X", sio.GetMemcardIndex()+1, value);
|
||||||
switch(value){
|
switch(value){
|
||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
|
@ -506,12 +506,12 @@ void InitializeSIO(u8 value)
|
||||||
{
|
{
|
||||||
m_PostSavestateCards[mcidx]--;
|
m_PostSavestateCards[mcidx]--;
|
||||||
sio2.packet.recvVal1 = 0x1D100;
|
sio2.packet.recvVal1 = 0x1D100;
|
||||||
PAD_LOG( "START MEMCARD[%d] - post-savestate ejection - reported as missing!\n", sio.GetMemcardIndex() );
|
PAD_LOG( "START MEMCARD[%d] - post-savestate ejection - reported as missing!", sio.GetMemcardIndex() );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sio2.packet.recvVal1 = MemoryCard::IsPresent( sio.GetMemcardIndex() ) ? 0x1100 : 0x1D100;
|
sio2.packet.recvVal1 = MemoryCard::IsPresent( sio.GetMemcardIndex() ) ? 0x1100 : 0x1D100;
|
||||||
PAD_LOG("START MEMCARD [%d] - %s\n",
|
PAD_LOG("START MEMCARD [%d] - %s",
|
||||||
sio.GetMemcardIndex(), MemoryCard::IsPresent( sio.GetMemcardIndex() ) ? "Present" : "Missing" );
|
sio.GetMemcardIndex(), MemoryCard::IsPresent( sio.GetMemcardIndex() ) ? "Present" : "Missing" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -543,7 +543,7 @@ void sioWriteCtrl16(u16 value) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void SIO_FORCEINLINE sioInterrupt() {
|
void SIO_FORCEINLINE sioInterrupt() {
|
||||||
PAD_LOG("Sio Interrupt\n");
|
PAD_LOG("Sio Interrupt");
|
||||||
sio.StatReg|= IRQ;
|
sio.StatReg|= IRQ;
|
||||||
psxHu32(0x1070)|=0x80;
|
psxHu32(0x1070)|=0x80;
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ void COP2_SPECIAL2() {
|
||||||
|
|
||||||
void COP2_Unknown()
|
void COP2_Unknown()
|
||||||
{
|
{
|
||||||
CPU_LOG("Unknown COP2 opcode called\n");
|
CPU_LOG("Unknown COP2 opcode called");
|
||||||
}
|
}
|
||||||
|
|
||||||
//****************************************************************************
|
//****************************************************************************
|
||||||
|
|
|
@ -73,7 +73,7 @@ void VU0MI_XTOP() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void vu0ExecMicro(u32 addr) {
|
void vu0ExecMicro(u32 addr) {
|
||||||
VUM_LOG("vu0ExecMicro %x\n", addr);
|
VUM_LOG("vu0ExecMicro %x", addr);
|
||||||
|
|
||||||
if(VU0.VI[REG_VPU_STAT].UL & 0x1) {
|
if(VU0.VI[REG_VPU_STAT].UL & 0x1) {
|
||||||
DevCon::Notice("vu0ExecMicro > Stalling for previous microprogram to finish");
|
DevCon::Notice("vu0ExecMicro > Stalling for previous microprogram to finish");
|
||||||
|
@ -95,13 +95,13 @@ void vu0ExecMicro(u32 addr) {
|
||||||
void VU0unknown() {
|
void VU0unknown() {
|
||||||
assert(0);
|
assert(0);
|
||||||
|
|
||||||
CPU_LOG("Unknown VU micromode opcode called\n");
|
CPU_LOG("Unknown VU micromode opcode called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void VU0regsunknown(_VURegsNum *VUregsn) {
|
void VU0regsunknown(_VURegsNum *VUregsn) {
|
||||||
assert(0);
|
assert(0);
|
||||||
|
|
||||||
CPU_LOG("Unknown VU micromode opcode called\n");
|
CPU_LOG("Unknown VU micromode opcode called");
|
||||||
}
|
}
|
||||||
|
|
||||||
_vuRegsTables(VU0, VU0regs);
|
_vuRegsTables(VU0, VU0regs);
|
||||||
|
|
|
@ -77,8 +77,8 @@ void vu1ExecMicro(u32 addr)
|
||||||
CpuVU1.ExecuteBlock();
|
CpuVU1.ExecuteBlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
VUM_LOG("vu1ExecMicro %x\n", addr);
|
VUM_LOG("vu1ExecMicro %x", addr);
|
||||||
VUM_LOG("vu1ExecMicro %x (count=%d)\n", addr, count++);
|
VUM_LOG("vu1ExecMicro %x (count=%d)", addr, count++);
|
||||||
|
|
||||||
VU0.VI[REG_VPU_STAT].UL|= 0x100;
|
VU0.VI[REG_VPU_STAT].UL|= 0x100;
|
||||||
VU0.VI[REG_VPU_STAT].UL&= ~0x7E000;
|
VU0.VI[REG_VPU_STAT].UL&= ~0x7E000;
|
||||||
|
@ -93,12 +93,12 @@ _vuRegsTables(VU1, VU1regs);
|
||||||
|
|
||||||
void VU1unknown() {
|
void VU1unknown() {
|
||||||
//assert(0);
|
//assert(0);
|
||||||
CPU_LOG("Unknown VU micromode opcode called\n");
|
CPU_LOG("Unknown VU micromode opcode called");
|
||||||
}
|
}
|
||||||
|
|
||||||
void VU1regsunknown(_VURegsNum *VUregsn) {
|
void VU1regsunknown(_VURegsNum *VUregsn) {
|
||||||
//assert(0);
|
//assert(0);
|
||||||
CPU_LOG("Unknown VU micromode opcode called\n");
|
CPU_LOG("Unknown VU micromode opcode called");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@ static void _vu1Exec(VURegs* VU)
|
||||||
int discard=0;
|
int discard=0;
|
||||||
|
|
||||||
if(VU->VI[REG_TPC].UL >= VU->maxmicro){
|
if(VU->VI[REG_TPC].UL >= VU->maxmicro){
|
||||||
CPU_LOG("VU1 memory overflow!!: %x\n", VU->VI[REG_TPC].UL);
|
CPU_LOG("VU1 memory overflow!!: %x", VU->VI[REG_TPC].UL);
|
||||||
VU->VI[REG_TPC].UL &= 0x3FFF;
|
VU->VI[REG_TPC].UL &= 0x3FFF;
|
||||||
/*VU0.VI[REG_VPU_STAT].UL&= ~0x100;
|
/*VU0.VI[REG_VPU_STAT].UL&= ~0x100;
|
||||||
VU->cycle++;
|
VU->cycle++;
|
||||||
|
@ -79,7 +79,7 @@ static void _vu1Exec(VURegs* VU)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
VUM_LOG("VU->cycle = %d (flags st=%x;mac=%x;clip=%x,q=%f)\n", VU->cycle, VU->statusflag, VU->macflag, VU->clipflag, VU->q.F);
|
VUM_LOG("VU->cycle = %d (flags st=%x;mac=%x;clip=%x,q=%f)", VU->cycle, VU->statusflag, VU->macflag, VU->clipflag, VU->q.F);
|
||||||
|
|
||||||
VU->code = ptr[1];
|
VU->code = ptr[1];
|
||||||
VU1regs_UPPER_OPCODE[VU->code & 0x3f](&uregs);
|
VU1regs_UPPER_OPCODE[VU->code & 0x3f](&uregs);
|
||||||
|
|
|
@ -1290,9 +1290,9 @@ void (*PREFIX##_LOWER_OPCODE[128])(_VURegsNum *VUregsn) = { \
|
||||||
#ifdef VUM_LOG
|
#ifdef VUM_LOG
|
||||||
|
|
||||||
#define IdebugUPPER(VU) \
|
#define IdebugUPPER(VU) \
|
||||||
VUM_LOG("%s\n", dis##VU##MicroUF(VU.code, VU.VI[REG_TPC].UL));
|
VUM_LOG("%s", dis##VU##MicroUF(VU.code, VU.VI[REG_TPC].UL));
|
||||||
#define IdebugLOWER(VU) \
|
#define IdebugLOWER(VU) \
|
||||||
VUM_LOG("%s\n", dis##VU##MicroLF(VU.code, VU.VI[REG_TPC].UL));
|
VUM_LOG("%s", dis##VU##MicroLF(VU.code, VU.VI[REG_TPC].UL));
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
@ -1303,7 +1303,7 @@ void (*PREFIX##_LOWER_OPCODE[128])(_VURegsNum *VUregsn) = { \
|
||||||
|
|
||||||
#ifdef VUM_LOG
|
#ifdef VUM_LOG
|
||||||
#define _vuExecMicroDebug(VU) \
|
#define _vuExecMicroDebug(VU) \
|
||||||
VUM_LOG("_vuExecMicro: %8.8x\n", VU.VI[REG_TPC].UL);
|
VUM_LOG("_vuExecMicro: %8.8x", VU.VI[REG_TPC].UL);
|
||||||
#else
|
#else
|
||||||
#define _vuExecMicroDebug(VU)
|
#define _vuExecMicroDebug(VU)
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -54,7 +54,7 @@ void _vuFMACflush(VURegs * VU) {
|
||||||
if (VU->fmac[i].enable == 0) continue;
|
if (VU->fmac[i].enable == 0) continue;
|
||||||
|
|
||||||
if ((VU->cycle - VU->fmac[i].sCycle) >= VU->fmac[i].Cycle) {
|
if ((VU->cycle - VU->fmac[i].sCycle) >= VU->fmac[i].Cycle) {
|
||||||
VUM_LOG("flushing FMAC pipe[%d] (macflag=%x)\n", i, VU->fmac[i].macflag);
|
VUM_LOG("flushing FMAC pipe[%d] (macflag=%x)", i, VU->fmac[i].macflag);
|
||||||
|
|
||||||
VU->fmac[i].enable = 0;
|
VU->fmac[i].enable = 0;
|
||||||
VU->VI[REG_MAC_FLAG].UL = VU->fmac[i].macflag;
|
VU->VI[REG_MAC_FLAG].UL = VU->fmac[i].macflag;
|
||||||
|
@ -68,7 +68,7 @@ void _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) {
|
||||||
VUM_LOG("flushing FDIV pipe\n");
|
VUM_LOG("flushing FDIV pipe");
|
||||||
|
|
||||||
VU->fdiv.enable = 0;
|
VU->fdiv.enable = 0;
|
||||||
VU->VI[REG_Q].UL = VU->fdiv.reg.UL;
|
VU->VI[REG_Q].UL = VU->fdiv.reg.UL;
|
||||||
|
@ -80,7 +80,7 @@ void _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) {
|
||||||
// VUM_LOG("flushing EFU pipe\n");
|
// VUM_LOG("flushing EFU pipe");
|
||||||
|
|
||||||
VU->efu.enable = 0;
|
VU->efu.enable = 0;
|
||||||
VU->VI[REG_P].UL = VU->efu.reg.UL;
|
VU->VI[REG_P].UL = VU->efu.reg.UL;
|
||||||
|
@ -101,7 +101,7 @@ void _vuFlushAll(VURegs* VU)
|
||||||
nRepeat = 1;
|
nRepeat = 1;
|
||||||
|
|
||||||
if ((VU->cycle - VU->fmac[i].sCycle) >= VU->fmac[i].Cycle) {
|
if ((VU->cycle - VU->fmac[i].sCycle) >= VU->fmac[i].Cycle) {
|
||||||
VUM_LOG("flushing FMAC pipe[%d] (macflag=%x)\n", i, VU->fmac[i].macflag);
|
VUM_LOG("flushing FMAC pipe[%d] (macflag=%x)", i, VU->fmac[i].macflag);
|
||||||
|
|
||||||
VU->fmac[i].enable = 0;
|
VU->fmac[i].enable = 0;
|
||||||
VU->VI[REG_MAC_FLAG].UL = VU->fmac[i].macflag;
|
VU->VI[REG_MAC_FLAG].UL = VU->fmac[i].macflag;
|
||||||
|
@ -115,7 +115,7 @@ void _vuFlushAll(VURegs* VU)
|
||||||
nRepeat = 1;
|
nRepeat = 1;
|
||||||
|
|
||||||
if ((VU->cycle - VU->fdiv.sCycle) >= VU->fdiv.Cycle) {
|
if ((VU->cycle - VU->fdiv.sCycle) >= VU->fdiv.Cycle) {
|
||||||
VUM_LOG("flushing FDIV pipe\n");
|
VUM_LOG("flushing FDIV pipe");
|
||||||
|
|
||||||
nRepeat = 1;
|
nRepeat = 1;
|
||||||
VU->fdiv.enable = 0;
|
VU->fdiv.enable = 0;
|
||||||
|
@ -129,7 +129,7 @@ void _vuFlushAll(VURegs* VU)
|
||||||
nRepeat = 1;
|
nRepeat = 1;
|
||||||
|
|
||||||
if ((VU->cycle - VU->efu.sCycle) >= VU->efu.Cycle) {
|
if ((VU->cycle - VU->efu.sCycle) >= VU->efu.Cycle) {
|
||||||
// VUM_LOG("flushing EFU pipe\n");
|
// VUM_LOG("flushing EFU pipe");
|
||||||
|
|
||||||
nRepeat = 1;
|
nRepeat = 1;
|
||||||
VU->efu.enable = 0;
|
VU->efu.enable = 0;
|
||||||
|
@ -165,7 +165,7 @@ void _vuFMACTestStall(VURegs * VU, int reg, int xyzw) {
|
||||||
VU->VI[REG_MAC_FLAG].UL = VU->fmac[i].macflag;
|
VU->VI[REG_MAC_FLAG].UL = VU->fmac[i].macflag;
|
||||||
VU->VI[REG_STATUS_FLAG].UL = VU->fmac[i].statusflag;
|
VU->VI[REG_STATUS_FLAG].UL = VU->fmac[i].statusflag;
|
||||||
VU->VI[REG_CLIP_FLAG].UL = VU->fmac[i].clipflag;
|
VU->VI[REG_CLIP_FLAG].UL = VU->fmac[i].clipflag;
|
||||||
VUM_LOG("FMAC[%d] stall %d\n", i, cycle);
|
VUM_LOG("FMAC[%d] stall %d", i, cycle);
|
||||||
|
|
||||||
VU->cycle+= cycle;
|
VU->cycle+= cycle;
|
||||||
_vuTestPipes(VU);
|
_vuTestPipes(VU);
|
||||||
|
@ -182,7 +182,7 @@ void _vuFMACAdd(VURegs * VU, int reg, int xyzw) {
|
||||||
//if (i==8) Console::Error("*PCSX2*: error , out of fmacs %d", params VU->cycle);
|
//if (i==8) Console::Error("*PCSX2*: error , out of fmacs %d", params VU->cycle);
|
||||||
|
|
||||||
|
|
||||||
VUM_LOG("adding FMAC pipe[%d]; xyzw=%x\n", i, xyzw);
|
VUM_LOG("adding FMAC pipe[%d]; xyzw=%x", i, xyzw);
|
||||||
|
|
||||||
VU->fmac[i].enable = 1;
|
VU->fmac[i].enable = 1;
|
||||||
VU->fmac[i].sCycle = VU->cycle;
|
VU->fmac[i].sCycle = VU->cycle;
|
||||||
|
@ -195,7 +195,7 @@ void _vuFMACAdd(VURegs * VU, int reg, int xyzw) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void _vuFDIVAdd(VURegs * VU, int cycles) {
|
void _vuFDIVAdd(VURegs * VU, int cycles) {
|
||||||
VUM_LOG("adding FDIV pipe\n");
|
VUM_LOG("adding FDIV pipe");
|
||||||
|
|
||||||
VU->fdiv.enable = 1;
|
VU->fdiv.enable = 1;
|
||||||
VU->fdiv.sCycle = VU->cycle;
|
VU->fdiv.sCycle = VU->cycle;
|
||||||
|
@ -219,7 +219,7 @@ void _vuFlushFDIV(VURegs * VU) {
|
||||||
if (VU->fdiv.enable == 0) return;
|
if (VU->fdiv.enable == 0) return;
|
||||||
|
|
||||||
cycle = VU->fdiv.Cycle - (VU->cycle - VU->fdiv.sCycle);
|
cycle = VU->fdiv.Cycle - (VU->cycle - VU->fdiv.sCycle);
|
||||||
VUM_LOG("waiting FDIV pipe %d\n", cycle);
|
VUM_LOG("waiting FDIV pipe %d", cycle);
|
||||||
|
|
||||||
VU->fdiv.enable = 0;
|
VU->fdiv.enable = 0;
|
||||||
VU->cycle+= cycle;
|
VU->cycle+= cycle;
|
||||||
|
@ -233,7 +233,7 @@ void _vuFlushEFU(VURegs * VU) {
|
||||||
if (VU->efu.enable == 0) return;
|
if (VU->efu.enable == 0) return;
|
||||||
|
|
||||||
cycle = VU->efu.Cycle - (VU->cycle - VU->efu.sCycle);
|
cycle = VU->efu.Cycle - (VU->cycle - VU->efu.sCycle);
|
||||||
// VUM_LOG("waiting EFU pipe %d\n", cycle);
|
// VUM_LOG("waiting EFU pipe %d", cycle);
|
||||||
|
|
||||||
VU->efu.enable = 0;
|
VU->efu.enable = 0;
|
||||||
VU->cycle+= cycle;
|
VU->cycle+= cycle;
|
||||||
|
|
|
@ -93,7 +93,7 @@ static __releaseinline void writeX( u32 *dest, u32 data ) {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// VIF_LOG("writeX %8.8x : Mode %d, r0 = %x, data %8.8x\n", *dest,_vifRegs->mode,_vifRegs->r0,data);
|
// VIF_LOG("writeX %8.8x : Mode %d, r0 = %x, data %8.8x", *dest,_vifRegs->mode,_vifRegs->r0,data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static __releaseinline void writeY( u32 *dest, u32 data ) {
|
static __releaseinline void writeY( u32 *dest, u32 data ) {
|
||||||
|
@ -132,7 +132,7 @@ static __releaseinline void writeY( u32 *dest, u32 data ) {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// VIF_LOG("writeY %8.8x : Mode %d, r1 = %x, data %8.8x\n", *dest,_vifRegs->mode,_vifRegs->r1,data);
|
// VIF_LOG("writeY %8.8x : Mode %d, r1 = %x, data %8.8x", *dest,_vifRegs->mode,_vifRegs->r1,data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static __releaseinline void writeZ( u32 *dest, u32 data ) {
|
static __releaseinline void writeZ( u32 *dest, u32 data ) {
|
||||||
|
@ -171,7 +171,7 @@ static __releaseinline void writeZ( u32 *dest, u32 data ) {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// VIF_LOG("writeZ %8.8x : Mode %d, r2 = %x, data %8.8x\n", *dest,_vifRegs->mode,_vifRegs->r2,data);
|
// VIF_LOG("writeZ %8.8x : Mode %d, r2 = %x, data %8.8x", *dest,_vifRegs->mode,_vifRegs->r2,data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static __releaseinline void writeW( u32 *dest, u32 data ) {
|
static __releaseinline void writeW( u32 *dest, u32 data ) {
|
||||||
|
@ -210,7 +210,7 @@ static __releaseinline void writeW( u32 *dest, u32 data ) {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// VIF_LOG("writeW %8.8x : Mode %d, r3 = %x, data %8.8x\n", *dest,_vifRegs->mode,_vifRegs->r3,data);
|
// VIF_LOG("writeW %8.8x : Mode %d, r3 = %x, data %8.8x", *dest,_vifRegs->mode,_vifRegs->r3,data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __fastcall UNPACK_S_32(u32 *dest, u32 *data, int size) {
|
void __fastcall UNPACK_S_32(u32 *dest, u32 *data, int size) {
|
||||||
|
@ -412,7 +412,7 @@ static __forceinline int mfifoVIF1rbTransfer() {
|
||||||
if ((vif1ch->madr+(mfifoqwc << 4)) > (msize)) {
|
if ((vif1ch->madr+(mfifoqwc << 4)) > (msize)) {
|
||||||
int s1 = ((msize) - vif1ch->madr) >> 2;
|
int s1 = ((msize) - vif1ch->madr) >> 2;
|
||||||
|
|
||||||
SPR_LOG("Split MFIFO\n");
|
SPR_LOG("Split MFIFO");
|
||||||
|
|
||||||
/* it does, so first copy 's1' bytes from 'addr' to 'data' */
|
/* it does, so first copy 's1' bytes from 'addr' to 'data' */
|
||||||
src = (u32*)PSM(vif1ch->madr);
|
src = (u32*)PSM(vif1ch->madr);
|
||||||
|
@ -432,7 +432,7 @@ static __forceinline int mfifoVIF1rbTransfer() {
|
||||||
ret = VIF1transfer(src, ((mfifoqwc << 2) - s1), 0);
|
ret = VIF1transfer(src, ((mfifoqwc << 2) - s1), 0);
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
SPR_LOG("Direct MFIFO\n");
|
SPR_LOG("Direct MFIFO");
|
||||||
|
|
||||||
/* it doesn't, so just transfer 'qwc*4' words */
|
/* it doesn't, so just transfer 'qwc*4' words */
|
||||||
src = (u32*)PSM(vif1ch->madr);
|
src = (u32*)PSM(vif1ch->madr);
|
||||||
|
@ -465,7 +465,7 @@ static __forceinline int mfifoVIF1chain() {
|
||||||
vifqwc -= startqwc - vif1ch->qwc;
|
vifqwc -= startqwc - vif1ch->qwc;
|
||||||
} else {
|
} else {
|
||||||
u32 *pMem = (u32*)dmaGetAddr(vif1ch->madr);
|
u32 *pMem = (u32*)dmaGetAddr(vif1ch->madr);
|
||||||
SPR_LOG("Non-MFIFO Location\n");
|
SPR_LOG("Non-MFIFO Location");
|
||||||
|
|
||||||
if (pMem == NULL) return -1;
|
if (pMem == NULL) return -1;
|
||||||
if(vif1.vifstalled == 1){
|
if(vif1.vifstalled == 1){
|
||||||
|
@ -504,7 +504,7 @@ void mfifoVIF1transfer(int qwc) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
vif1.inprogress &= ~0x10;
|
vif1.inprogress &= ~0x10;
|
||||||
SPR_LOG("Added %x qw to mfifo, total now %x - Vif CHCR %x Stalled %x done %x\n", qwc, vifqwc, vif1ch->chcr, vif1.vifstalled, vif1.done);
|
SPR_LOG("Added %x qw to mfifo, total now %x - Vif CHCR %x Stalled %x done %x", qwc, vifqwc, vif1ch->chcr, vif1.vifstalled, vif1.done);
|
||||||
|
|
||||||
/*if((vif1ch->chcr & 0x100) == 0 || vif1.vifstalled == 1 || vif1.done == 1 || vif1.inprogress == 1)*/ return;
|
/*if((vif1ch->chcr & 0x100) == 0 || vif1.vifstalled == 1 || vif1.done == 1 || vif1.inprogress == 1)*/ return;
|
||||||
}
|
}
|
||||||
|
@ -519,7 +519,7 @@ void mfifoVIF1transfer(int qwc) {
|
||||||
if( vif1.stallontag == 1) ret = VIF1transfer(ptag+(2+vif1.irqoffset), 2-vif1.irqoffset, 1); //Transfer Tag on Stall
|
if( vif1.stallontag == 1) ret = VIF1transfer(ptag+(2+vif1.irqoffset), 2-vif1.irqoffset, 1); //Transfer Tag on Stall
|
||||||
else ret = VIF1transfer(ptag+2, 2, 1); //Transfer Tag
|
else ret = VIF1transfer(ptag+2, 2, 1); //Transfer Tag
|
||||||
if (ret == -2) {
|
if (ret == -2) {
|
||||||
VIF_LOG("MFIFO Stallon tag\n");
|
VIF_LOG("MFIFO Stallon tag");
|
||||||
|
|
||||||
vif1.stallontag = 1;
|
vif1.stallontag = 1;
|
||||||
//CPU_INT(10,cycles+g_vifCycles);
|
//CPU_INT(10,cycles+g_vifCycles);
|
||||||
|
@ -534,7 +534,7 @@ void mfifoVIF1transfer(int qwc) {
|
||||||
|
|
||||||
vif1ch->chcr = ( vif1ch->chcr & 0xFFFF ) | ( (*ptag) & 0xFFFF0000 );
|
vif1ch->chcr = ( vif1ch->chcr & 0xFFFF ) | ( (*ptag) & 0xFFFF0000 );
|
||||||
|
|
||||||
SPR_LOG("dmaChain %8.8x_%8.8x size=%d, id=%d, madr=%lx, tadr=%lx mfifo qwc = %x spr0 madr = %x\n",
|
SPR_LOG("dmaChain %8.8x_%8.8x size=%d, id=%d, madr=%lx, tadr=%lx mfifo qwc = %x spr0 madr = %x",
|
||||||
ptag[1], ptag[0], vif1ch->qwc, id, vif1ch->madr, vif1ch->tadr, vifqwc, spr0->madr);
|
ptag[1], ptag[0], vif1ch->qwc, id, vif1ch->madr, vif1ch->tadr, vifqwc, spr0->madr);
|
||||||
vifqwc--;
|
vifqwc--;
|
||||||
|
|
||||||
|
@ -573,7 +573,7 @@ void mfifoVIF1transfer(int qwc) {
|
||||||
|
|
||||||
if ((vif1ch->chcr & 0x80) && (ptag[0] >> 31))
|
if ((vif1ch->chcr & 0x80) && (ptag[0] >> 31))
|
||||||
{
|
{
|
||||||
VIF_LOG("dmaIrq Set\n");
|
VIF_LOG("dmaIrq Set");
|
||||||
vif1.done = 1;
|
vif1.done = 1;
|
||||||
mfifodmairq = 1; //Let the handler know we have prematurely ended MFIFO
|
mfifodmairq = 1; //Let the handler know we have prematurely ended MFIFO
|
||||||
}
|
}
|
||||||
|
@ -587,14 +587,14 @@ void mfifoVIF1transfer(int qwc) {
|
||||||
//CPU_INT(10,g_vifCycles);
|
//CPU_INT(10,g_vifCycles);
|
||||||
}
|
}
|
||||||
if(ret == -2){
|
if(ret == -2){
|
||||||
VIF_LOG("MFIFO Stall\n");
|
VIF_LOG("MFIFO Stall");
|
||||||
//CPU_INT(10,g_vifCycles);
|
//CPU_INT(10,g_vifCycles);
|
||||||
return;
|
return;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
//if(vif1.done == 2 && vif1ch->qwc == 0) vif1.done = 1;
|
//if(vif1.done == 2 && vif1ch->qwc == 0) vif1.done = 1;
|
||||||
//CPU_INT(10,g_vifCycles);
|
//CPU_INT(10,g_vifCycles);
|
||||||
SPR_LOG("mfifoVIF1transfer end %x madr %x, tadr %x vifqwc %x\n", vif1ch->chcr, vif1ch->madr, vif1ch->tadr, vifqwc);
|
SPR_LOG("mfifoVIF1transfer end %x madr %x, tadr %x vifqwc %x", vif1ch->chcr, vif1ch->madr, vif1ch->tadr, vifqwc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void vifMFIFOInterrupt()
|
void vifMFIFOInterrupt()
|
||||||
|
@ -655,7 +655,7 @@ void vifMFIFOInterrupt()
|
||||||
g_vifCycles = 0;
|
g_vifCycles = 0;
|
||||||
vif1ch->chcr &= ~0x100;
|
vif1ch->chcr &= ~0x100;
|
||||||
hwDmacIrq(DMAC_VIF1);
|
hwDmacIrq(DMAC_VIF1);
|
||||||
VIF_LOG("vif mfifo dma end\n");
|
VIF_LOG("vif mfifo dma end");
|
||||||
|
|
||||||
vif1Regs->stat&= ~0x1F000000; // FQC=0
|
vif1Regs->stat&= ~0x1F000000; // FQC=0
|
||||||
|
|
||||||
|
|
108
pcsx2/VifDma.cpp
108
pcsx2/VifDma.cpp
|
@ -254,55 +254,55 @@ static void ProcessMemSkip(int size, unsigned int unpackType, const unsigned int
|
||||||
switch(unpackType){
|
switch(unpackType){
|
||||||
case 0x0:
|
case 0x0:
|
||||||
vif->tag.addr += size*4;
|
vif->tag.addr += size*4;
|
||||||
VIFUNPACK_LOG("Processing S-32 skip, size = %d\n", size);
|
VIFUNPACK_LOG("Processing S-32 skip, size = %d", size);
|
||||||
break;
|
break;
|
||||||
case 0x1:
|
case 0x1:
|
||||||
vif->tag.addr += size*8;
|
vif->tag.addr += size*8;
|
||||||
VIFUNPACK_LOG("Processing S-16 skip, size = %d\n", size);
|
VIFUNPACK_LOG("Processing S-16 skip, size = %d", size);
|
||||||
break;
|
break;
|
||||||
case 0x2:
|
case 0x2:
|
||||||
vif->tag.addr += size*16;
|
vif->tag.addr += size*16;
|
||||||
VIFUNPACK_LOG("Processing S-8 skip, size = %d\n", size);
|
VIFUNPACK_LOG("Processing S-8 skip, size = %d", size);
|
||||||
break;
|
break;
|
||||||
case 0x4:
|
case 0x4:
|
||||||
vif->tag.addr += size + ((size / unpack->gsize) * 8);
|
vif->tag.addr += size + ((size / unpack->gsize) * 8);
|
||||||
VIFUNPACK_LOG("Processing V2-32 skip, size = %d\n", size);
|
VIFUNPACK_LOG("Processing V2-32 skip, size = %d", size);
|
||||||
break;
|
break;
|
||||||
case 0x5:
|
case 0x5:
|
||||||
vif->tag.addr += (size * 2) + ((size / unpack->gsize) * 8);
|
vif->tag.addr += (size * 2) + ((size / unpack->gsize) * 8);
|
||||||
VIFUNPACK_LOG("Processing V2-16 skip, size = %d\n", size);
|
VIFUNPACK_LOG("Processing V2-16 skip, size = %d", size);
|
||||||
break;
|
break;
|
||||||
case 0x6:
|
case 0x6:
|
||||||
vif->tag.addr += (size * 4) + ((size / unpack->gsize) * 8);
|
vif->tag.addr += (size * 4) + ((size / unpack->gsize) * 8);
|
||||||
VIFUNPACK_LOG("Processing V2-8 skip, size = %d\n", size);
|
VIFUNPACK_LOG("Processing V2-8 skip, size = %d", size);
|
||||||
break;
|
break;
|
||||||
case 0x8:
|
case 0x8:
|
||||||
vif->tag.addr += size + ((size / unpack->gsize) * 4);
|
vif->tag.addr += size + ((size / unpack->gsize) * 4);
|
||||||
VIFUNPACK_LOG("Processing V3-32 skip, size = %d\n", size);
|
VIFUNPACK_LOG("Processing V3-32 skip, size = %d", size);
|
||||||
break;
|
break;
|
||||||
case 0x9:
|
case 0x9:
|
||||||
vif->tag.addr += (size * 2) + ((size / unpack->gsize) * 4);
|
vif->tag.addr += (size * 2) + ((size / unpack->gsize) * 4);
|
||||||
VIFUNPACK_LOG("Processing V3-16 skip, size = %d\n", size);
|
VIFUNPACK_LOG("Processing V3-16 skip, size = %d", size);
|
||||||
break;
|
break;
|
||||||
case 0xA:
|
case 0xA:
|
||||||
vif->tag.addr += (size * 4) + ((size / unpack->gsize) * 4);
|
vif->tag.addr += (size * 4) + ((size / unpack->gsize) * 4);
|
||||||
VIFUNPACK_LOG("Processing V3-8 skip, size = %d\n", size);
|
VIFUNPACK_LOG("Processing V3-8 skip, size = %d", size);
|
||||||
break;
|
break;
|
||||||
case 0xC:
|
case 0xC:
|
||||||
vif->tag.addr += size;
|
vif->tag.addr += size;
|
||||||
VIFUNPACK_LOG("Processing V4-32 skip, size = %d, CL = %d, WL = %d\n", size, vif1Regs->cycle.cl, vif1Regs->cycle.wl);
|
VIFUNPACK_LOG("Processing V4-32 skip, size = %d, CL = %d, WL = %d", size, vif1Regs->cycle.cl, vif1Regs->cycle.wl);
|
||||||
break;
|
break;
|
||||||
case 0xD:
|
case 0xD:
|
||||||
vif->tag.addr += size * 2;
|
vif->tag.addr += size * 2;
|
||||||
VIFUNPACK_LOG("Processing V4-16 skip, size = %d\n", size);
|
VIFUNPACK_LOG("Processing V4-16 skip, size = %d", size);
|
||||||
break;
|
break;
|
||||||
case 0xE:
|
case 0xE:
|
||||||
vif->tag.addr += size * 4;
|
vif->tag.addr += size * 4;
|
||||||
VIFUNPACK_LOG("Processing V4-8 skip, size = %d\n", size);
|
VIFUNPACK_LOG("Processing V4-8 skip, size = %d", size);
|
||||||
break;
|
break;
|
||||||
case 0xF:
|
case 0xF:
|
||||||
vif->tag.addr += size * 8;
|
vif->tag.addr += size * 8;
|
||||||
VIFUNPACK_LOG("Processing V4-5 skip, size = %d\n", size);
|
VIFUNPACK_LOG("Processing V4-5 skip, size = %d", size);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Console::WriteLn("Invalid unpack type %x", params unpackType);
|
Console::WriteLn("Invalid unpack type %x", params unpackType);
|
||||||
|
@ -361,16 +361,16 @@ static void VIFunpack(u32 *data, vifCode *v, int size, const unsigned int VIFdma
|
||||||
|
|
||||||
dest = (u32*)(VU->Mem + v->addr);
|
dest = (u32*)(VU->Mem + v->addr);
|
||||||
|
|
||||||
VIF_LOG("VIF%d UNPACK: Mode=%x, v->size=%d, size=%d, v->addr=%x\n",
|
VIF_LOG("VIF%d UNPACK: Mode=%x, v->size=%d, size=%d, v->addr=%x",
|
||||||
VIFdmanum, v->cmd & 0xf, v->size, size, v->addr );
|
VIFdmanum, v->cmd & 0xf, v->size, size, v->addr );
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
if (v->size != size) {
|
if (v->size != size) {
|
||||||
VIF_LOG("*PCSX2*: warning v->size != size\n");
|
VIF_LOG("*PCSX2*: warning v->size != size");
|
||||||
}
|
}
|
||||||
if ((v->addr+size*4) > memsize) {
|
if ((v->addr+size*4) > memsize) {
|
||||||
Console::Notice("*PCSX2*: fixme unpack overflow\n");
|
Console::Notice("*PCSX2*: fixme unpack overflow");
|
||||||
Console::WriteLn( "VIF%d UNPACK: Mode=%x, v->size=%d, size=%d, v->addr=%x\n",
|
Console::WriteLn( "VIF%d UNPACK: Mode=%x, v->size=%d, size=%d, v->addr=%x",
|
||||||
params VIFdmanum, v->cmd & 0xf, v->size, size, v->addr );
|
params VIFdmanum, v->cmd & 0xf, v->size, size, v->addr );
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -378,7 +378,7 @@ static void VIFunpack(u32 *data, vifCode *v, int size, const unsigned int VIFdma
|
||||||
unpackType = v->cmd & 0xf;
|
unpackType = v->cmd & 0xf;
|
||||||
|
|
||||||
if (size == 0) {
|
if (size == 0) {
|
||||||
VIFUNPACK_LOG("*PCSX2*: Unpack %x with size 0!! v->size = %d cl = %d, wl = %d, mode %d mask %x\n", v->cmd, v->size, vifRegs->cycle.cl, vifRegs->cycle.wl, vifRegs->mode, vifRegs->mask);
|
VIFUNPACK_LOG("*PCSX2*: Unpack %x with size 0!! v->size = %d cl = %d, wl = %d, mode %d mask %x", v->cmd, v->size, vifRegs->cycle.cl, vifRegs->cycle.wl, vifRegs->mode, vifRegs->mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
//#ifdef _MSC_VER
|
//#ifdef _MSC_VER
|
||||||
|
@ -399,7 +399,7 @@ static void VIFunpack(u32 *data, vifCode *v, int size, const unsigned int VIFdma
|
||||||
{
|
{
|
||||||
int destinc, unpacksize;
|
int destinc, unpacksize;
|
||||||
|
|
||||||
VIFUNPACK_LOG("aligning packet size = %d offset %d addr %x\n", size, vifRegs->offset, vif->tag.addr);
|
VIFUNPACK_LOG("aligning packet size = %d offset %d addr %x", size, vifRegs->offset, vif->tag.addr);
|
||||||
|
|
||||||
// SSE doesn't handle such small data
|
// SSE doesn't handle such small data
|
||||||
if (v->size != (size>>2))
|
if (v->size != (size>>2))
|
||||||
|
@ -437,7 +437,7 @@ static void VIFunpack(u32 *data, vifCode *v, int size, const unsigned int VIFdma
|
||||||
else {
|
else {
|
||||||
dest += destinc;
|
dest += destinc;
|
||||||
}
|
}
|
||||||
VIFUNPACK_LOG("aligning packet done size = %d offset %d addr %x\n", size, vifRegs->offset, vif->tag.addr);
|
VIFUNPACK_LOG("aligning packet done size = %d offset %d addr %x", size, vifRegs->offset, vif->tag.addr);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (v->size != (size>>2))
|
else if (v->size != (size>>2))
|
||||||
|
@ -616,20 +616,20 @@ static void VIFunpack(u32 *data, vifCode *v, int size, const unsigned int VIFdma
|
||||||
// s_count++;
|
// s_count++;
|
||||||
|
|
||||||
if( size >= ft->dsize && vifRegs->num > 0) {
|
if( size >= ft->dsize && vifRegs->num > 0) {
|
||||||
//VIF_LOG("warning, end with size = %d\n", size);
|
//VIF_LOG("warning, end with size = %d", size);
|
||||||
|
|
||||||
/* unpack one qword */
|
/* unpack one qword */
|
||||||
func(dest, (u32*)cdata, size / ft->dsize);
|
func(dest, (u32*)cdata, size / ft->dsize);
|
||||||
size = 0;
|
size = 0;
|
||||||
|
|
||||||
VIFUNPACK_LOG("leftover done, size %d, vifnum %d, addr %x\n", size, vifRegs->num, vif->tag.addr);
|
VIFUNPACK_LOG("leftover done, size %d, vifnum %d, addr %x", size, vifRegs->num, vif->tag.addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else { /* filling write */
|
else { /* filling write */
|
||||||
VIF_LOG("VIFunpack - filling write\n");
|
VIF_LOG("VIFunpack - filling write");
|
||||||
|
|
||||||
VIFUNPACK_LOG("filling write %d cl %d, wl %d mask %x mode %x unpacktype %x\n", vifRegs->num, vifRegs->cycle.cl, vifRegs->cycle.wl, vifRegs->mask, vifRegs->mode, unpackType);
|
VIFUNPACK_LOG("filling write %d cl %d, wl %d mask %x mode %x unpacktype %x", vifRegs->num, vifRegs->cycle.cl, vifRegs->cycle.wl, vifRegs->mask, vifRegs->mode, unpackType);
|
||||||
while (size >= ft->gsize || vifRegs->num > 0) {
|
while (size >= ft->gsize || vifRegs->num > 0) {
|
||||||
if (vif->cl == vifRegs->cycle.wl) {
|
if (vif->cl == vifRegs->cycle.wl) {
|
||||||
vif->cl = 0;
|
vif->cl = 0;
|
||||||
|
@ -784,7 +784,7 @@ static int __fastcall Vif0TransNull(u32 *data){ // Shouldnt go here
|
||||||
static int __fastcall Vif0TransSTMask(u32 *data){ // STMASK
|
static int __fastcall Vif0TransSTMask(u32 *data){ // STMASK
|
||||||
SetNewMask(g_vif0Masks, g_vif0HasMask3, data[0], vif0Regs->mask);
|
SetNewMask(g_vif0Masks, g_vif0HasMask3, data[0], vif0Regs->mask);
|
||||||
vif0Regs->mask = data[0];
|
vif0Regs->mask = data[0];
|
||||||
VIF_LOG("STMASK == %x\n", vif0Regs->mask);
|
VIF_LOG("STMASK == %x", vif0Regs->mask);
|
||||||
|
|
||||||
vif0.tag.size = 0;
|
vif0.tag.size = 0;
|
||||||
vif0.cmd = 0;
|
vif0.cmd = 0;
|
||||||
|
@ -951,7 +951,7 @@ static void Vif0CMDNull(){ // invalid opcode
|
||||||
int VIF0transfer(u32 *data, int size, int istag) {
|
int VIF0transfer(u32 *data, int size, int istag) {
|
||||||
int ret;
|
int ret;
|
||||||
int transferred=vif0.vifstalled ? vif0.irqoffset : 0; // irqoffset necessary to add up the right qws, or else will spin (spiderman)
|
int transferred=vif0.vifstalled ? vif0.irqoffset : 0; // irqoffset necessary to add up the right qws, or else will spin (spiderman)
|
||||||
VIF_LOG( "VIF0transfer: size %x (vif0.cmd %x)\n", size, vif0.cmd );
|
VIF_LOG( "VIF0transfer: size %x (vif0.cmd %x)", size, vif0.cmd );
|
||||||
|
|
||||||
vif0.stallontag = 0;
|
vif0.stallontag = 0;
|
||||||
vif0.vifstalled = 0;
|
vif0.vifstalled = 0;
|
||||||
|
@ -984,7 +984,7 @@ int VIF0transfer(u32 *data, int size, int istag) {
|
||||||
if ((vif0.cmd & 0x60) == 0x60) {
|
if ((vif0.cmd & 0x60) == 0x60) {
|
||||||
vif0UNPACK(data);
|
vif0UNPACK(data);
|
||||||
} else {
|
} else {
|
||||||
VIF_LOG( "VIFtransfer: cmd %x, num %x, imm %x, size %x\n", vif0.cmd, (data[0] >> 16) & 0xff, data[0] & 0xffff, size );
|
VIF_LOG( "VIFtransfer: cmd %x, num %x, imm %x, size %x", vif0.cmd, (data[0] >> 16) & 0xff, data[0] & 0xffff, size );
|
||||||
|
|
||||||
if((vif0.cmd & 0x7f) > 0x4A){
|
if((vif0.cmd & 0x7f) > 0x4A){
|
||||||
if ((vif0Regs->err & 0x4) == 0) { //Ignore vifcode and tag mismatch error
|
if ((vif0Regs->err & 0x4) == 0) { //Ignore vifcode and tag mismatch error
|
||||||
|
@ -1004,7 +1004,7 @@ int VIF0transfer(u32 *data, int size, int istag) {
|
||||||
|
|
||||||
if(!(vif0Regs->err & 0x1)) //i bit on vifcode and not masked by VIF0_ERR
|
if(!(vif0Regs->err & 0x1)) //i bit on vifcode and not masked by VIF0_ERR
|
||||||
{
|
{
|
||||||
VIF_LOG( "Interrupt on VIFcmd: %x (INTC_MASK = %x)\n", vif0.cmd, psHu32(INTC_MASK) );
|
VIF_LOG( "Interrupt on VIFcmd: %x (INTC_MASK = %x)", vif0.cmd, psHu32(INTC_MASK) );
|
||||||
|
|
||||||
++vif0.irq;
|
++vif0.irq;
|
||||||
|
|
||||||
|
@ -1062,12 +1062,10 @@ int _VIF0chain() {
|
||||||
if (pMem == NULL)
|
if (pMem == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if( vif0.vifstalled ) {
|
if( vif0.vifstalled )
|
||||||
ret = VIF0transfer(pMem+vif0.irqoffset, vif0ch->qwc*4-vif0.irqoffset, 0);
|
ret = VIF0transfer(pMem+vif0.irqoffset, vif0ch->qwc*4-vif0.irqoffset, 0);
|
||||||
}
|
else
|
||||||
else {
|
|
||||||
ret = VIF0transfer(pMem, vif0ch->qwc*4, 0);
|
ret = VIF0transfer(pMem, vif0ch->qwc*4, 0);
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -1091,7 +1089,7 @@ int _chainVIF0() {
|
||||||
vif0ch->qwc = (u16)vif0ptag[0]; //QWC set to lower 16bits of the tag
|
vif0ch->qwc = (u16)vif0ptag[0]; //QWC set to lower 16bits of the tag
|
||||||
vif0ch->madr = vif0ptag[1]; //MADR = ADDR field
|
vif0ch->madr = vif0ptag[1]; //MADR = ADDR field
|
||||||
g_vifCycles+=1; // Add 1 g_vifCycles from the QW read for the tag
|
g_vifCycles+=1; // Add 1 g_vifCycles from the QW read for the tag
|
||||||
VIF_LOG("dmaChain %8.8x_%8.8x size=%d, id=%d, madr=%lx, tadr=%lx\n",
|
VIF_LOG("dmaChain %8.8x_%8.8x size=%d, id=%d, madr=%lx, tadr=%lx",
|
||||||
vif0ptag[1], vif0ptag[0], vif0ch->qwc, id, vif0ch->madr, vif0ch->tadr);
|
vif0ptag[1], vif0ptag[0], vif0ch->qwc, id, vif0ch->madr, vif0ch->tadr);
|
||||||
|
|
||||||
vif0ch->chcr = ( vif0ch->chcr & 0xFFFF ) | ( (*vif0ptag) & 0xFFFF0000 ); //Transfer upper part of tag to CHCR bits 31-15
|
vif0ch->chcr = ( vif0ch->chcr & 0xFFFF ) | ( (*vif0ptag) & 0xFFFF0000 ); //Transfer upper part of tag to CHCR bits 31-15
|
||||||
|
@ -1101,14 +1099,12 @@ int _chainVIF0() {
|
||||||
if(vif0.vifstalled == 1) ret = VIF0transfer(vif0ptag+(2+vif0.irqoffset), 2-vif0.irqoffset, 1); //Transfer Tag on stall
|
if(vif0.vifstalled == 1) ret = VIF0transfer(vif0ptag+(2+vif0.irqoffset), 2-vif0.irqoffset, 1); //Transfer Tag on stall
|
||||||
else ret = VIF0transfer(vif0ptag+2, 2, 1); //Transfer Tag
|
else ret = VIF0transfer(vif0ptag+2, 2, 1); //Transfer Tag
|
||||||
if (ret == -1) return -1; //There has been an error
|
if (ret == -1) return -1; //There has been an error
|
||||||
if (ret == -2) {
|
if (ret == -2) return -2; //IRQ set by VIFTransfer
|
||||||
return -2; //IRQ set by VIFTransfer
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vif0.done |= hwDmacSrcChainWithStack(vif0ch, id);
|
vif0.done |= hwDmacSrcChainWithStack(vif0ch, id);
|
||||||
|
|
||||||
VIF_LOG("dmaChain %8.8x_%8.8x size=%d, id=%d, madr=%lx, tadr=%lx\n",
|
VIF_LOG("dmaChain %8.8x_%8.8x size=%d, id=%d, madr=%lx, tadr=%lx",
|
||||||
vif0ptag[1], vif0ptag[0], vif0ch->qwc, id, vif0ch->madr, vif0ch->tadr);
|
vif0ptag[1], vif0ptag[0], vif0ch->qwc, id, vif0ch->madr, vif0ch->tadr);
|
||||||
|
|
||||||
|
|
||||||
|
@ -1127,7 +1123,7 @@ int _chainVIF0() {
|
||||||
void vif0Interrupt() {
|
void vif0Interrupt() {
|
||||||
// int ret;
|
// int ret;
|
||||||
g_vifCycles = 0; //Reset the cycle count, Wouldnt reset on stall if put lower down.
|
g_vifCycles = 0; //Reset the cycle count, Wouldnt reset on stall if put lower down.
|
||||||
VIF_LOG("vif0Interrupt: %8.8x\n", cpuRegs.cycle);
|
VIF_LOG("vif0Interrupt: %8.8x", cpuRegs.cycle);
|
||||||
|
|
||||||
|
|
||||||
if(vif0.irq && vif0.tag.size == 0) {
|
if(vif0.irq && vif0.tag.size == 0) {
|
||||||
|
@ -1158,7 +1154,7 @@ void vif0Interrupt() {
|
||||||
if (vif0ch->chcr & 0x4 && vif0.done == 0 && vif0.vifstalled == 0) {
|
if (vif0ch->chcr & 0x4 && vif0.done == 0 && vif0.vifstalled == 0) {
|
||||||
|
|
||||||
if( !(psHu32(DMAC_CTRL) & 0x1) ) {
|
if( !(psHu32(DMAC_CTRL) & 0x1) ) {
|
||||||
Console::WriteLn("vif0 dma masked\n");
|
Console::WriteLn("vif0 dma masked");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1244,7 +1240,7 @@ void dmaVIF0() {
|
||||||
void vif0Write32(u32 mem, u32 value) {
|
void vif0Write32(u32 mem, u32 value) {
|
||||||
if (mem == 0x10003830) // MARK
|
if (mem == 0x10003830) // MARK
|
||||||
{
|
{
|
||||||
VIF_LOG("VIF0_MARK write32 0x%8.8x\n", value);
|
VIF_LOG("VIF0_MARK write32 0x%8.8x", value);
|
||||||
|
|
||||||
/* Clear mark flag in VIF0_STAT and set mark with 'value' */
|
/* Clear mark flag in VIF0_STAT and set mark with 'value' */
|
||||||
vif0Regs->stat&= ~VIF0_STAT_MRK;
|
vif0Regs->stat&= ~VIF0_STAT_MRK;
|
||||||
|
@ -1252,7 +1248,7 @@ void vif0Write32(u32 mem, u32 value) {
|
||||||
}
|
}
|
||||||
else if (mem == 0x10003810) // FBRST
|
else if (mem == 0x10003810) // FBRST
|
||||||
{
|
{
|
||||||
VIF_LOG("VIF0_FBRST write32 0x%8.8x\n", value);
|
VIF_LOG("VIF0_FBRST write32 0x%8.8x", value);
|
||||||
|
|
||||||
if (value & 0x1)
|
if (value & 0x1)
|
||||||
{
|
{
|
||||||
|
@ -1319,7 +1315,7 @@ void vif0Write32(u32 mem, u32 value) {
|
||||||
}
|
}
|
||||||
else if (mem == 0x10003820)
|
else if (mem == 0x10003820)
|
||||||
{ // ERR
|
{ // ERR
|
||||||
VIF_LOG("VIF0_ERR write32 0x%8.8x\n", value);
|
VIF_LOG("VIF0_ERR write32 0x%8.8x", value);
|
||||||
|
|
||||||
/* Set VIF0_ERR with 'value' */
|
/* Set VIF0_ERR with 'value' */
|
||||||
vif0Regs->err = value;
|
vif0Regs->err = value;
|
||||||
|
@ -1458,7 +1454,7 @@ static int __fastcall Vif1TransNull(u32 *data){ // Shouldnt go here
|
||||||
static int __fastcall Vif1TransSTMask(u32 *data){ // STMASK
|
static int __fastcall Vif1TransSTMask(u32 *data){ // STMASK
|
||||||
SetNewMask(g_vif1Masks, g_vif1HasMask3, data[0], vif1Regs->mask);
|
SetNewMask(g_vif1Masks, g_vif1HasMask3, data[0], vif1Regs->mask);
|
||||||
vif1Regs->mask = data[0];
|
vif1Regs->mask = data[0];
|
||||||
VIF_LOG("STMASK == %x\n", vif1Regs->mask);
|
VIF_LOG("STMASK == %x", vif1Regs->mask);
|
||||||
|
|
||||||
vif1.tag.size = 0;
|
vif1.tag.size = 0;
|
||||||
vif1.cmd = 0;
|
vif1.cmd = 0;
|
||||||
|
@ -1820,7 +1816,7 @@ int VIF1transfer(u32 *data, int size, int istag) {
|
||||||
int ret;
|
int ret;
|
||||||
transferred=vif1.vifstalled ? vif1.irqoffset : 0; // irqoffset necessary to add up the right qws, or else will spin (spiderman)
|
transferred=vif1.vifstalled ? vif1.irqoffset : 0; // irqoffset necessary to add up the right qws, or else will spin (spiderman)
|
||||||
|
|
||||||
VIF_LOG( "VIF1transfer: size %x (vif1.cmd %x)\n", size, vif1.cmd );
|
VIF_LOG( "VIF1transfer: size %x (vif1.cmd %x)", size, vif1.cmd );
|
||||||
|
|
||||||
vif1.irqoffset = 0;
|
vif1.irqoffset = 0;
|
||||||
vif1.vifstalled = 0;
|
vif1.vifstalled = 0;
|
||||||
|
@ -1840,7 +1836,7 @@ int VIF1transfer(u32 *data, int size, int istag) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(vif1.tag.size != 0) DevCon::Error("no vif1 cmd but tag size is left last cmd read %x\n", params vif1Regs->code);
|
if(vif1.tag.size != 0) DevCon::Error("no vif1 cmd but tag size is left last cmd read %x", params vif1Regs->code);
|
||||||
|
|
||||||
if(vif1.irq) break;
|
if(vif1.irq) break;
|
||||||
|
|
||||||
|
@ -1853,11 +1849,11 @@ int VIF1transfer(u32 *data, int size, int istag) {
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
VIF_LOG( "VIFtransfer: cmd %x, num %x, imm %x, size %x\n", vif1.cmd, (data[0] >> 16) & 0xff, data[0] & 0xffff, vif1.vifpacketsize );
|
VIF_LOG( "VIFtransfer: cmd %x, num %x, imm %x, size %x", vif1.cmd, (data[0] >> 16) & 0xff, data[0] & 0xffff, vif1.vifpacketsize );
|
||||||
|
|
||||||
if((vif1.cmd & 0x7f) > 0x51){
|
if((vif1.cmd & 0x7f) > 0x51){
|
||||||
if ((vif1Regs->err & 0x4) == 0) { //Ignore vifcode and tag mismatch error
|
if ((vif1Regs->err & 0x4) == 0) { //Ignore vifcode and tag mismatch error
|
||||||
Console::WriteLn( "UNKNOWN VifCmd: %x\n", params vif1.cmd );
|
Console::WriteLn( "UNKNOWN VifCmd: %x", params vif1.cmd );
|
||||||
vif1Regs->stat |= 1 << 13;
|
vif1Regs->stat |= 1 << 13;
|
||||||
vif1.irq++;
|
vif1.irq++;
|
||||||
}
|
}
|
||||||
|
@ -1875,7 +1871,7 @@ int VIF1transfer(u32 *data, int size, int istag) {
|
||||||
|
|
||||||
if(!(vif1Regs->err & 0x1)) //i bit on vifcode and not masked by VIF1_ERR
|
if(!(vif1Regs->err & 0x1)) //i bit on vifcode and not masked by VIF1_ERR
|
||||||
{
|
{
|
||||||
VIF_LOG( "Interrupt on VIFcmd: %x (INTC_MASK = %x)\n", vif1.cmd, psHu32(INTC_MASK) );
|
VIF_LOG( "Interrupt on VIFcmd: %x (INTC_MASK = %x)", vif1.cmd, psHu32(INTC_MASK) );
|
||||||
|
|
||||||
++vif1.irq;
|
++vif1.irq;
|
||||||
|
|
||||||
|
@ -1991,7 +1987,7 @@ int _VIF1chain() {
|
||||||
if (pMem == NULL)
|
if (pMem == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
VIF_LOG("VIF1chain size=%d, madr=%lx, tadr=%lx\n",
|
VIF_LOG("VIF1chain size=%d, madr=%lx, tadr=%lx",
|
||||||
vif1ch->qwc, vif1ch->madr, vif1ch->tadr);
|
vif1ch->qwc, vif1ch->madr, vif1ch->tadr);
|
||||||
|
|
||||||
if( vif1.vifstalled )
|
if( vif1.vifstalled )
|
||||||
|
@ -2072,7 +2068,7 @@ __forceinline void vif1SetupTransfer() {
|
||||||
vif1.done |= hwDmacSrcChainWithStack(vif1ch, id);
|
vif1.done |= hwDmacSrcChainWithStack(vif1ch, id);
|
||||||
|
|
||||||
if ((vif1ch->chcr & 0x80) && (vif1ptag[0] >> 31)) { //Check TIE bit of CHCR and IRQ bit of tag
|
if ((vif1ch->chcr & 0x80) && (vif1ptag[0] >> 31)) { //Check TIE bit of CHCR and IRQ bit of tag
|
||||||
VIF_LOG( "dmaIrq Set\n" );
|
VIF_LOG( "dmaIrq Set" );
|
||||||
|
|
||||||
vif1.done = 1;
|
vif1.done = 1;
|
||||||
return; //End Transfer
|
return; //End Transfer
|
||||||
|
@ -2081,7 +2077,7 @@ __forceinline void vif1SetupTransfer() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
__forceinline void vif1Interrupt() {
|
__forceinline void vif1Interrupt() {
|
||||||
VIF_LOG("vif1Interrupt: %8.8x\n", cpuRegs.cycle);
|
VIF_LOG("vif1Interrupt: %8.8x", cpuRegs.cycle);
|
||||||
|
|
||||||
g_vifCycles = 0;
|
g_vifCycles = 0;
|
||||||
|
|
||||||
|
@ -2142,7 +2138,7 @@ void dmaVIF1()
|
||||||
{
|
{
|
||||||
|
|
||||||
VIF_LOG("dmaVIF1 chcr = %lx, madr = %lx, qwc = %lx\n"
|
VIF_LOG("dmaVIF1 chcr = %lx, madr = %lx, qwc = %lx\n"
|
||||||
" tadr = %lx, asr0 = %lx, asr1 = %lx\n",
|
" tadr = %lx, asr0 = %lx, asr1 = %lx",
|
||||||
vif1ch->chcr, vif1ch->madr, vif1ch->qwc,
|
vif1ch->chcr, vif1ch->madr, vif1ch->qwc,
|
||||||
vif1ch->tadr, vif1ch->asr0, vif1ch->asr1 );
|
vif1ch->tadr, vif1ch->asr0, vif1ch->asr1 );
|
||||||
|
|
||||||
|
@ -2245,14 +2241,14 @@ void dmaVIF1()
|
||||||
|
|
||||||
void vif1Write32(u32 mem, u32 value) {
|
void vif1Write32(u32 mem, u32 value) {
|
||||||
if (mem == 0x10003c30) { // MARK
|
if (mem == 0x10003c30) { // MARK
|
||||||
VIF_LOG("VIF1_MARK write32 0x%8.8x\n", value);
|
VIF_LOG("VIF1_MARK write32 0x%8.8x", value);
|
||||||
|
|
||||||
/* Clear mark flag in VIF1_STAT and set mark with 'value' */
|
/* Clear mark flag in VIF1_STAT and set mark with 'value' */
|
||||||
vif1Regs->stat&= ~VIF1_STAT_MRK;
|
vif1Regs->stat&= ~VIF1_STAT_MRK;
|
||||||
vif1Regs->mark = value;
|
vif1Regs->mark = value;
|
||||||
}
|
}
|
||||||
else if (mem == 0x10003c10) { // FBRST
|
else if (mem == 0x10003c10) { // FBRST
|
||||||
VIF_LOG("VIF1_FBRST write32 0x%8.8x\n", value);
|
VIF_LOG("VIF1_FBRST write32 0x%8.8x", value);
|
||||||
|
|
||||||
if (value & 0x1) {
|
if (value & 0x1) {
|
||||||
/* Reset VIF */
|
/* Reset VIF */
|
||||||
|
@ -2322,13 +2318,13 @@ void vif1Write32(u32 mem, u32 value) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (mem == 0x10003c20) { // ERR
|
else if (mem == 0x10003c20) { // ERR
|
||||||
VIF_LOG("VIF1_ERR write32 0x%8.8x\n", value);
|
VIF_LOG("VIF1_ERR write32 0x%8.8x", value);
|
||||||
|
|
||||||
/* Set VIF1_ERR with 'value' */
|
/* Set VIF1_ERR with 'value' */
|
||||||
vif1Regs->err = value;
|
vif1Regs->err = value;
|
||||||
}
|
}
|
||||||
else if (mem == 0x10003c00) { // STAT
|
else if (mem == 0x10003c00) { // STAT
|
||||||
VIF_LOG("VIF1_STAT write32 0x%8.8x\n", value);
|
VIF_LOG("VIF1_STAT write32 0x%8.8x", value);
|
||||||
|
|
||||||
#ifdef PCSX2_DEVBUILD
|
#ifdef PCSX2_DEVBUILD
|
||||||
/* Only FDR bit is writable, so mask the rest */
|
/* Only FDR bit is writable, so mask the rest */
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
AC_INIT(pcsx2,0.9.5,zerofrog@gmail.com)
|
AC_INIT(pcsx2,0.9.6,zerofrog@gmail.com)
|
||||||
AM_INIT_AUTOMAKE(pcsx2,0.9.5)
|
AM_INIT_AUTOMAKE(pcsx2,0.9.6)
|
||||||
|
|
||||||
AC_PROG_CC([gcc g++ cl KCC CC cxx cc++ xlC aCC c++])
|
AC_PROG_CC([gcc g++ cl KCC CC cxx cc++ xlC aCC c++])
|
||||||
AC_PROG_CXX([gcc g++ cl KCC CC cxx cc++ xlC aCC c++])
|
AC_PROG_CXX([gcc g++ cl KCC CC cxx cc++ xlC aCC c++])
|
||||||
|
|
|
@ -1167,39 +1167,39 @@ void iDumpRegisters(u32 startpc, u32 temp)
|
||||||
psymb = disR5900GetSym(startpc);
|
psymb = disR5900GetSym(startpc);
|
||||||
|
|
||||||
if( psymb != NULL )
|
if( psymb != NULL )
|
||||||
__Log("%sreg(%s): %x %x c:%x\n", pstr, psymb, startpc, cpuRegs.interrupt, cpuRegs.cycle);
|
__Log("%sreg(%s): %x %x c:%x", pstr, psymb, startpc, cpuRegs.interrupt, cpuRegs.cycle);
|
||||||
else
|
else
|
||||||
__Log("%sreg: %x %x c:%x\n", pstr, startpc, cpuRegs.interrupt, cpuRegs.cycle);
|
__Log("%sreg: %x %x c:%x", pstr, startpc, cpuRegs.interrupt, cpuRegs.cycle);
|
||||||
for(i = 1; i < 32; ++i) __Log("%s: %x_%x_%x_%x\n", disRNameGPR[i], cpuRegs.GPR.r[i].UL[3], cpuRegs.GPR.r[i].UL[2], cpuRegs.GPR.r[i].UL[1], cpuRegs.GPR.r[i].UL[0]);
|
for(i = 1; i < 32; ++i) __Log("%s: %x_%x_%x_%x", disRNameGPR[i], cpuRegs.GPR.r[i].UL[3], cpuRegs.GPR.r[i].UL[2], cpuRegs.GPR.r[i].UL[1], cpuRegs.GPR.r[i].UL[0]);
|
||||||
//for(i = 0; i < 32; i+=4) __Log("cp%d: %x_%x_%x_%x\n", i, cpuRegs.CP0.r[i], cpuRegs.CP0.r[i+1], cpuRegs.CP0.r[i+2], cpuRegs.CP0.r[i+3]);
|
//for(i = 0; i < 32; i+=4) __Log("cp%d: %x_%x_%x_%x", i, cpuRegs.CP0.r[i], cpuRegs.CP0.r[i+1], cpuRegs.CP0.r[i+2], cpuRegs.CP0.r[i+3]);
|
||||||
//for(i = 0; i < 32; ++i) __Log("%sf%d: %f %x\n", pstr, i, fpuRegs.fpr[i].f, fpuRegs.fprc[i]);
|
//for(i = 0; i < 32; ++i) __Log("%sf%d: %f %x", pstr, i, fpuRegs.fpr[i].f, fpuRegs.fprc[i]);
|
||||||
//for(i = 1; i < 32; ++i) __Log("%svf%d: %f %f %f %f, vi: %x\n", pstr, i, VU0.VF[i].F[3], VU0.VF[i].F[2], VU0.VF[i].F[1], VU0.VF[i].F[0], VU0.VI[i].UL);
|
//for(i = 1; i < 32; ++i) __Log("%svf%d: %f %f %f %f, vi: %x", pstr, i, VU0.VF[i].F[3], VU0.VF[i].F[2], VU0.VF[i].F[1], VU0.VF[i].F[0], VU0.VI[i].UL);
|
||||||
for(i = 0; i < 32; ++i) __Log("%sf%d: %x %x\n", pstr, i, fpuRegs.fpr[i].UL, fpuRegs.fprc[i]);
|
for(i = 0; i < 32; ++i) __Log("%sf%d: %x %x", pstr, i, fpuRegs.fpr[i].UL, fpuRegs.fprc[i]);
|
||||||
for(i = 1; i < 32; ++i) __Log("%svf%d: %x %x %x %x, vi: %x\n", pstr, i, VU0.VF[i].UL[3], VU0.VF[i].UL[2], VU0.VF[i].UL[1], VU0.VF[i].UL[0], VU0.VI[i].UL);
|
for(i = 1; i < 32; ++i) __Log("%svf%d: %x %x %x %x, vi: %x", pstr, i, VU0.VF[i].UL[3], VU0.VF[i].UL[2], VU0.VF[i].UL[1], VU0.VF[i].UL[0], VU0.VI[i].UL);
|
||||||
__Log("%svfACC: %x %x %x %x\n", pstr, VU0.ACC.UL[3], VU0.ACC.UL[2], VU0.ACC.UL[1], VU0.ACC.UL[0]);
|
__Log("%svfACC: %x %x %x %x", pstr, VU0.ACC.UL[3], VU0.ACC.UL[2], VU0.ACC.UL[1], VU0.ACC.UL[0]);
|
||||||
__Log("%sLO: %x_%x_%x_%x, HI: %x_%x_%x_%x\n", pstr, cpuRegs.LO.UL[3], cpuRegs.LO.UL[2], cpuRegs.LO.UL[1], cpuRegs.LO.UL[0],
|
__Log("%sLO: %x_%x_%x_%x, HI: %x_%x_%x_%x", pstr, cpuRegs.LO.UL[3], cpuRegs.LO.UL[2], cpuRegs.LO.UL[1], cpuRegs.LO.UL[0],
|
||||||
cpuRegs.HI.UL[3], cpuRegs.HI.UL[2], cpuRegs.HI.UL[1], cpuRegs.HI.UL[0]);
|
cpuRegs.HI.UL[3], cpuRegs.HI.UL[2], cpuRegs.HI.UL[1], cpuRegs.HI.UL[0]);
|
||||||
__Log("%sCycle: %x %x, Count: %x\n", pstr, cpuRegs.cycle, g_nextBranchCycle, cpuRegs.CP0.n.Count);
|
__Log("%sCycle: %x %x, Count: %x", pstr, cpuRegs.cycle, g_nextBranchCycle, cpuRegs.CP0.n.Count);
|
||||||
iDumpPsxRegisters(psxRegs.pc, temp);
|
iDumpPsxRegisters(psxRegs.pc, temp);
|
||||||
|
|
||||||
__Log("f410,30,40: %x %x %x, %d %d\n", psHu32(0xf410), psHu32(0xf430), psHu32(0xf440), rdram_sdevid, rdram_devices);
|
__Log("f410,30,40: %x %x %x, %d %d", psHu32(0xf410), psHu32(0xf430), psHu32(0xf440), rdram_sdevid, rdram_devices);
|
||||||
__Log("cyc11: %x %x; vu0: %x, vu1: %x\n", cpuRegs.sCycle[1], cpuRegs.eCycle[1], VU0.cycle, VU1.cycle);
|
__Log("cyc11: %x %x; vu0: %x, vu1: %x", cpuRegs.sCycle[1], cpuRegs.eCycle[1], VU0.cycle, VU1.cycle);
|
||||||
|
|
||||||
__Log("%scounters: %x %x; psx: %x %x\n", pstr, nextsCounter, nextCounter, psxNextsCounter, psxNextCounter);
|
__Log("%scounters: %x %x; psx: %x %x", pstr, nextsCounter, nextCounter, psxNextsCounter, psxNextCounter);
|
||||||
for(i = 0; i < 4; ++i) {
|
for(i = 0; i < 4; ++i) {
|
||||||
__Log("eetimer%d: count: %x mode: %x target: %x %x; %x %x; %x %x %x %x\n", i,
|
__Log("eetimer%d: count: %x mode: %x target: %x %x; %x %x; %x %x %x %x", i,
|
||||||
counters[i].count, counters[i].mode, counters[i].target, counters[i].hold, counters[i].rate,
|
counters[i].count, counters[i].mode, counters[i].target, counters[i].hold, counters[i].rate,
|
||||||
counters[i].interrupt, counters[i].Cycle, counters[i].sCycle, counters[i].CycleT, counters[i].sCycleT);
|
counters[i].interrupt, counters[i].Cycle, counters[i].sCycle, counters[i].CycleT, counters[i].sCycleT);
|
||||||
}
|
}
|
||||||
__Log("VIF0_STAT = %x, VIF1_STAT = %x\n", psHu32(0x3800), psHu32(0x3C00));
|
__Log("VIF0_STAT = %x, VIF1_STAT = %x", psHu32(0x3800), psHu32(0x3C00));
|
||||||
__Log("ipu %x %x %x %x; bp: %x %x %x %x\n", psHu32(0x2000), psHu32(0x2010), psHu32(0x2020), psHu32(0x2030), g_BP.BP, g_BP.bufferhasnew, g_BP.FP, g_BP.IFC);
|
__Log("ipu %x %x %x %x; bp: %x %x %x %x", psHu32(0x2000), psHu32(0x2010), psHu32(0x2020), psHu32(0x2030), g_BP.BP, g_BP.bufferhasnew, g_BP.FP, g_BP.IFC);
|
||||||
__Log("gif: %x %x %x\n", psHu32(0x3000), psHu32(0x3010), psHu32(0x3020));
|
__Log("gif: %x %x %x", psHu32(0x3000), psHu32(0x3010), psHu32(0x3020));
|
||||||
for(i = 0; i < ARRAYSIZE(dmacs); ++i) {
|
for(i = 0; i < ARRAYSIZE(dmacs); ++i) {
|
||||||
DMACh* p = (DMACh*)(PS2MEM_HW+dmacs[i]);
|
DMACh* p = (DMACh*)(PS2MEM_HW+dmacs[i]);
|
||||||
__Log("dma%d c%x m%x q%x t%x s%x\n", i, p->chcr, p->madr, p->qwc, p->tadr, p->sadr);
|
__Log("dma%d c%x m%x q%x t%x s%x", i, p->chcr, p->madr, p->qwc, p->tadr, p->sadr);
|
||||||
}
|
}
|
||||||
__Log("dmac %x %x %x %x\n", psHu32(DMAC_CTRL), psHu32(DMAC_STAT), psHu32(DMAC_RBSR), psHu32(DMAC_RBOR));
|
__Log("dmac %x %x %x %x", psHu32(DMAC_CTRL), psHu32(DMAC_STAT), psHu32(DMAC_RBSR), psHu32(DMAC_RBOR));
|
||||||
__Log("intc %x %x\n", psHu32(INTC_STAT), psHu32(INTC_MASK));
|
__Log("intc %x %x", psHu32(INTC_STAT), psHu32(INTC_MASK));
|
||||||
__Log("sif: %x %x %x %x %x\n", psHu32(0xf200), psHu32(0xf220), psHu32(0xf230), psHu32(0xf240), psHu32(0xf260));
|
__Log("sif: %x %x %x %x %x", psHu32(0xf200), psHu32(0xf220), psHu32(0xf230), psHu32(0xf240), psHu32(0xf260));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -940,23 +940,23 @@ void iDumpPsxRegisters(u32 startpc, u32 temp)
|
||||||
int i;
|
int i;
|
||||||
const char* pstr = temp ? "t" : "";
|
const char* pstr = temp ? "t" : "";
|
||||||
|
|
||||||
__Log("%spsxreg: %x %x ra:%x k0: %x %x\n", pstr, startpc, psxRegs.cycle, psxRegs.GPR.n.ra, psxRegs.GPR.n.k0, *(int*)PSXM(0x13c128));
|
__Log("%spsxreg: %x %x ra:%x k0: %x %x", pstr, startpc, psxRegs.cycle, psxRegs.GPR.n.ra, psxRegs.GPR.n.k0, *(int*)PSXM(0x13c128));
|
||||||
for(i = 0; i < 34; i+=2) __Log("%spsx%s: %x %x\n", pstr, disRNameGPR[i], psxRegs.GPR.r[i], psxRegs.GPR.r[i+1]);
|
for(i = 0; i < 34; i+=2) __Log("%spsx%s: %x %x", pstr, disRNameGPR[i], psxRegs.GPR.r[i], psxRegs.GPR.r[i+1]);
|
||||||
__Log("%scycle: %x %x %x; counters %x %x\n", pstr, psxRegs.cycle, g_psxNextBranchCycle, EEsCycle,
|
__Log("%scycle: %x %x %x; counters %x %x", pstr, psxRegs.cycle, g_psxNextBranchCycle, EEsCycle,
|
||||||
psxNextsCounter, psxNextCounter);
|
psxNextsCounter, psxNextCounter);
|
||||||
|
|
||||||
__Log("psxdma%d c%x b%x m%x t%x\n", 2, HW_DMA2_CHCR, HW_DMA2_BCR, HW_DMA2_MADR, HW_DMA2_TADR);
|
__Log("psxdma%d c%x b%x m%x t%x", 2, HW_DMA2_CHCR, HW_DMA2_BCR, HW_DMA2_MADR, HW_DMA2_TADR);
|
||||||
__Log("psxdma%d c%x b%x m%x\n", 3, HW_DMA3_CHCR, HW_DMA3_BCR, HW_DMA3_MADR);
|
__Log("psxdma%d c%x b%x m%x", 3, HW_DMA3_CHCR, HW_DMA3_BCR, HW_DMA3_MADR);
|
||||||
__Log("psxdma%d c%x b%x m%x t%x\n", 4, HW_DMA4_CHCR, HW_DMA4_BCR, HW_DMA4_MADR, HW_DMA4_TADR);
|
__Log("psxdma%d c%x b%x m%x t%x", 4, HW_DMA4_CHCR, HW_DMA4_BCR, HW_DMA4_MADR, HW_DMA4_TADR);
|
||||||
__Log("psxdma%d c%x b%x m%x\n", 6, HW_DMA6_CHCR, HW_DMA6_BCR, HW_DMA6_MADR);
|
__Log("psxdma%d c%x b%x m%x", 6, HW_DMA6_CHCR, HW_DMA6_BCR, HW_DMA6_MADR);
|
||||||
__Log("psxdma%d c%x b%x m%x\n", 7, HW_DMA7_CHCR, HW_DMA7_BCR, HW_DMA7_MADR);
|
__Log("psxdma%d c%x b%x m%x", 7, HW_DMA7_CHCR, HW_DMA7_BCR, HW_DMA7_MADR);
|
||||||
__Log("psxdma%d c%x b%x m%x\n", 8, HW_DMA8_CHCR, HW_DMA8_BCR, HW_DMA8_MADR);
|
__Log("psxdma%d c%x b%x m%x", 8, HW_DMA8_CHCR, HW_DMA8_BCR, HW_DMA8_MADR);
|
||||||
__Log("psxdma%d c%x b%x m%x t%x\n", 9, HW_DMA9_CHCR, HW_DMA9_BCR, HW_DMA9_MADR, HW_DMA9_TADR);
|
__Log("psxdma%d c%x b%x m%x t%x", 9, HW_DMA9_CHCR, HW_DMA9_BCR, HW_DMA9_MADR, HW_DMA9_TADR);
|
||||||
__Log("psxdma%d c%x b%x m%x\n", 10, HW_DMA10_CHCR, HW_DMA10_BCR, HW_DMA10_MADR);
|
__Log("psxdma%d c%x b%x m%x", 10, HW_DMA10_CHCR, HW_DMA10_BCR, HW_DMA10_MADR);
|
||||||
__Log("psxdma%d c%x b%x m%x\n", 11, HW_DMA11_CHCR, HW_DMA11_BCR, HW_DMA11_MADR);
|
__Log("psxdma%d c%x b%x m%x", 11, HW_DMA11_CHCR, HW_DMA11_BCR, HW_DMA11_MADR);
|
||||||
__Log("psxdma%d c%x b%x m%x\n", 12, HW_DMA12_CHCR, HW_DMA12_BCR, HW_DMA12_MADR);
|
__Log("psxdma%d c%x b%x m%x", 12, HW_DMA12_CHCR, HW_DMA12_BCR, HW_DMA12_MADR);
|
||||||
for(i = 0; i < 7; ++i)
|
for(i = 0; i < 7; ++i)
|
||||||
__Log("%scounter%d: mode %x count %I64x rate %x scycle %x target %I64x\n", pstr, i, psxCounters[i].mode, psxCounters[i].count, psxCounters[i].rate, psxCounters[i].sCycleT, psxCounters[i].target);
|
__Log("%scounter%d: mode %x count %I64x rate %x scycle %x target %I64x", pstr, i, psxCounters[i].mode, psxCounters[i].count, psxCounters[i].rate, psxCounters[i].sCycleT, psxCounters[i].target);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -97,7 +97,7 @@ namespace VU1micro
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
static u32 vuprogcount = 0;
|
static u32 vuprogcount = 0;
|
||||||
vuprogcount++;
|
vuprogcount++;
|
||||||
if( vudump & 8 ) __Log("start vu1: %x %x\n", VU1.VI[ REG_TPC ].UL, vuprogcount);
|
if( vudump & 8 ) __Log("start vu1: %x %x", VU1.VI[ REG_TPC ].UL, vuprogcount);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if((VU0.VI[REG_VPU_STAT].UL & 0x100) == 0){
|
if((VU0.VI[REG_VPU_STAT].UL & 0x100) == 0){
|
||||||
|
|
|
@ -144,13 +144,13 @@ void _recvuFMACflush(VURegs * VU, bool intermediate) {
|
||||||
|
|
||||||
if( intermediate ) {
|
if( intermediate ) {
|
||||||
if ((vucycle - VU->fmac[i].sCycle) > VU->fmac[i].Cycle) {
|
if ((vucycle - VU->fmac[i].sCycle) > VU->fmac[i].Cycle) {
|
||||||
// VUM_LOG("flushing FMAC pipe[%d]\n", i);
|
// VUM_LOG("flushing FMAC pipe[%d]", i);
|
||||||
VU->fmac[i].enable = 0;
|
VU->fmac[i].enable = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if ((vucycle - VU->fmac[i].sCycle) >= VU->fmac[i].Cycle) {
|
if ((vucycle - VU->fmac[i].sCycle) >= VU->fmac[i].Cycle) {
|
||||||
// VUM_LOG("flushing FMAC pipe[%d]\n", i);
|
// VUM_LOG("flushing FMAC pipe[%d]", i);
|
||||||
VU->fmac[i].enable = 0;
|
VU->fmac[i].enable = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -199,13 +199,13 @@ void _recvuIALUflush(VURegs * VU, bool intermediate) {
|
||||||
|
|
||||||
if( intermediate ) {
|
if( intermediate ) {
|
||||||
if ((vucycle - VU->ialu[i].sCycle) > VU->ialu[i].Cycle) {
|
if ((vucycle - VU->ialu[i].sCycle) > VU->ialu[i].Cycle) {
|
||||||
// VUM_LOG("flushing IALU pipe[%d]\n", i);
|
// VUM_LOG("flushing IALU pipe[%d]", i);
|
||||||
VU->ialu[i].enable = 0;
|
VU->ialu[i].enable = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if ((vucycle - VU->ialu[i].sCycle) >= VU->ialu[i].Cycle) {
|
if ((vucycle - VU->ialu[i].sCycle) >= VU->ialu[i].Cycle) {
|
||||||
// VUM_LOG("flushing IALU pipe[%d]\n", i);
|
// VUM_LOG("flushing IALU pipe[%d]", i);
|
||||||
VU->ialu[i].enable = 0;
|
VU->ialu[i].enable = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -292,7 +292,7 @@ void _recvuFMACAdd(VURegs * VU, int reg, int xyzw) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i==8) Console::Error("*PCSX2*: error , out of fmacs");
|
if (i==8) Console::Error("*PCSX2*: error , out of fmacs");
|
||||||
// VUM_LOG("adding FMAC pipe[%d]; reg %d\n", i, reg);
|
// VUM_LOG("adding FMAC pipe[%d]; reg %d", i, reg);
|
||||||
|
|
||||||
VU->fmac[i].enable = 1;
|
VU->fmac[i].enable = 1;
|
||||||
VU->fmac[i].sCycle = vucycle;
|
VU->fmac[i].sCycle = vucycle;
|
||||||
|
|
|
@ -111,6 +111,16 @@ static __forceinline const char *error_name(int err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define GL_ERROR_LOG() \
|
||||||
|
{ \
|
||||||
|
GLenum myGLerror = glGetError(); \
|
||||||
|
\
|
||||||
|
if( myGLerror != GL_NO_ERROR ) \
|
||||||
|
{ \
|
||||||
|
ERROR_LOG("%s:%d: gl error %s\n", __FILE__, (int)__LINE__, error_name(myGLerror)); \
|
||||||
|
} \
|
||||||
|
}\
|
||||||
|
|
||||||
#define GL_REPORT_ERROR() \
|
#define GL_REPORT_ERROR() \
|
||||||
{ \
|
{ \
|
||||||
err = glGetError(); \
|
err = glGetError(); \
|
||||||
|
|
Loading…
Reference in New Issue