mirror of https://github.com/PCSX2/pcsx2.git
psxmode: add all the rest on core side. psx mode works now.
- include a small game exe detection so pcsx2 doesn't believe it's running the bios - cdrom.cpp has a hack to account for pcsx2's wrong iop dma timing when mixing mdec and cdrom dmas. This should be properly fixed for the benefit of all ps2 / psx software! - dmasif2 is disabled since pgpu already handles it
This commit is contained in:
parent
277b8f3503
commit
5e460c57f8
|
@ -402,6 +402,14 @@ void cdvdReloadElfInfo(wxString elfoverride)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
//Console.Error( "Playstation1 game discs are not supported by PCSX2." );
|
//Console.Error( "Playstation1 game discs are not supported by PCSX2." );
|
||||||
|
|
||||||
|
// PCSX2 currently only recognizes *.elf executables in proper PS2 format.
|
||||||
|
// To support different PSX titles in the console title and for savestates, this code bypasses all the detection,
|
||||||
|
// simply using the exe name, stripped of problematic characters.
|
||||||
|
wxString fname = elfpath.AfterLast('\\');
|
||||||
|
wxString fname2 = fname.BeforeFirst(';');
|
||||||
|
DiscSerial = fname2;
|
||||||
|
Console.SetTitle(DiscSerial);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -127,6 +127,8 @@ static void ReadTrack() {
|
||||||
cdr.Prev[2] = itob(cdr.SetSector[2]);
|
cdr.Prev[2] = itob(cdr.SetSector[2]);
|
||||||
|
|
||||||
CDVD_LOG("KEY *** %x:%x:%x", cdr.Prev[0], cdr.Prev[1], cdr.Prev[2]);
|
CDVD_LOG("KEY *** %x:%x:%x", cdr.Prev[0], cdr.Prev[1], cdr.Prev[2]);
|
||||||
|
if (EmuConfig.CdvdVerboseReads)
|
||||||
|
DevCon.WriteLn("CD Read Sector %x", msf_to_lsn(cdr.SetSector));
|
||||||
cdr.RErr = DoCDVDreadTrack(msf_to_lsn(cdr.SetSector), CDVD_MODE_2340);
|
cdr.RErr = DoCDVDreadTrack(msf_to_lsn(cdr.SetSector), CDVD_MODE_2340);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -912,7 +914,9 @@ void psxDma3(u32 madr, u32 bcr, u32 chcr) {
|
||||||
case 0x11000000:
|
case 0x11000000:
|
||||||
case 0x11400100:
|
case 0x11400100:
|
||||||
if (cdr.Readed == 0) {
|
if (cdr.Readed == 0) {
|
||||||
CDVD_LOG("*** DMA 3 *** NOT READY");
|
DevCon.Warning("*** DMA 3 *** NOT READY");
|
||||||
|
HW_DMA3_CHCR &= ~0x01000000; //hack
|
||||||
|
psxDmaInterrupt(3); //hack
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -134,11 +134,13 @@ void spu2DMA7Irq()
|
||||||
#ifndef DISABLE_PSX_GPU_DMAS
|
#ifndef DISABLE_PSX_GPU_DMAS
|
||||||
void psxDma2(u32 madr, u32 bcr, u32 chcr) // GPU
|
void psxDma2(u32 madr, u32 bcr, u32 chcr) // GPU
|
||||||
{
|
{
|
||||||
DevCon.Warning("SIF2 IOP CHCR = %x MADR = %x BCR = %x first 16bits %x", chcr, madr, bcr, iopMemRead16(madr));
|
//DevCon.Warning("SIF2 IOP CHCR = %x MADR = %x BCR = %x first 16bits %x", chcr, madr, bcr, iopMemRead16(madr));
|
||||||
sif2.iop.busy = true;
|
sif2.iop.busy = true;
|
||||||
sif2.iop.end = false;
|
sif2.iop.end = false;
|
||||||
//SIF2Dma();
|
//SIF2Dma();
|
||||||
dmaSIF2();
|
// todo: psxmode: dmaSIF2 appears to interface with PGPU but everything is already handled without it.
|
||||||
|
// it slows down psxmode if it's run.
|
||||||
|
//dmaSIF2();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -601,7 +601,7 @@ void __fastcall eeloadHook()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!g_GameStarted && disctype == 2 && elfname == discelf)
|
if (!g_GameStarted && (disctype == 2 || disctype == 1) && elfname == discelf)
|
||||||
g_GameLoading = true;
|
g_GameLoading = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue