mirror of https://github.com/PCSX2/pcsx2.git
Ateste worked on the Time Crisis fix some more and figured out the (hopefully) right flags in the (hopefully) right places.
Thanks for helping out! :) git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4961 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
f423a9c41d
commit
278e4af235
|
@ -790,7 +790,9 @@ __fi void cdvdReadInterrupt()
|
||||||
cdvd.RetryCntP = 0;
|
cdvd.RetryCntP = 0;
|
||||||
cdvd.Reading = 1;
|
cdvd.Reading = 1;
|
||||||
cdvd.Readed = 1;
|
cdvd.Readed = 1;
|
||||||
cdvd.Status = CDVD_STATUS_PAUSE; // check (rama)
|
//cdvd.Status = CDVD_STATUS_PAUSE; // check (rama)
|
||||||
|
cdvd.Status = CDVD_STATUS_READ | CDVD_STATUS_SPIN; // Time Crisis 2
|
||||||
|
|
||||||
cdvd.Sector = cdvd.SeekToSector;
|
cdvd.Sector = cdvd.SeekToSector;
|
||||||
|
|
||||||
CDVD_LOG( "Cdvd Seek Complete > Scheduling block read interrupt at iopcycle=%8.8x.",
|
CDVD_LOG( "Cdvd Seek Complete > Scheduling block read interrupt at iopcycle=%8.8x.",
|
||||||
|
@ -861,7 +863,7 @@ __fi void cdvdReadInterrupt()
|
||||||
HW_DMA3_CHCR &= ~0x01000000;
|
HW_DMA3_CHCR &= ~0x01000000;
|
||||||
psxDmaInterrupt(3);
|
psxDmaInterrupt(3);
|
||||||
cdvd.Ready = CDVD_READY2;
|
cdvd.Ready = CDVD_READY2;
|
||||||
|
cdvd.Status = CDVD_STATUS_PAUSE; // Needed here but could be smth else than Pause (rama)
|
||||||
// All done! :D
|
// All done! :D
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -885,7 +887,8 @@ static uint cdvdStartSeek( uint newsector, CDVD_MODE_TYPE mode )
|
||||||
cdvd.Ready = CDVD_NOTREADY;
|
cdvd.Ready = CDVD_NOTREADY;
|
||||||
cdvd.Reading = 0;
|
cdvd.Reading = 0;
|
||||||
cdvd.Readed = 0;
|
cdvd.Readed = 0;
|
||||||
cdvd.Status = CDVD_STATUS_STOP;
|
//cdvd.Status = CDVD_STATUS_STOP;
|
||||||
|
cdvd.Status = CDVD_STATUS_SEEK | CDVD_STATUS_SPIN; // Time Crisis 2
|
||||||
|
|
||||||
if( !cdvd.Spinning )
|
if( !cdvd.Spinning )
|
||||||
{
|
{
|
||||||
|
@ -918,7 +921,8 @@ static uint cdvdStartSeek( uint newsector, CDVD_MODE_TYPE mode )
|
||||||
|
|
||||||
if( delta == 0 )
|
if( delta == 0 )
|
||||||
{
|
{
|
||||||
cdvd.Status = CDVD_STATUS_PAUSE;
|
//cdvd.Status = CDVD_STATUS_PAUSE;
|
||||||
|
cdvd.Status = CDVD_STATUS_READ | CDVD_STATUS_SPIN; // Time Crisis 2
|
||||||
cdvd.Readed = 1; // Note: 1, not 0, as implied by the next comment. Need to look into this. --arcum42
|
cdvd.Readed = 1; // Note: 1, not 0, as implied by the next comment. Need to look into this. --arcum42
|
||||||
cdvd.RetryCntP = 0;
|
cdvd.RetryCntP = 0;
|
||||||
|
|
||||||
|
@ -1016,33 +1020,11 @@ u8 cdvdRead(u8 key)
|
||||||
|
|
||||||
case 0x08: // STATUS
|
case 0x08: // STATUS
|
||||||
CDVD_LOG("cdvdRead08(Status) %x", cdvd.Status);
|
CDVD_LOG("cdvdRead08(Status) %x", cdvd.Status);
|
||||||
|
|
||||||
#define SPINFLAGCHECK 1
|
|
||||||
|
|
||||||
#if SPINFLAGCHECK
|
|
||||||
// Time Crisis 2, random Japanese horror game (rama) - check spin flag
|
|
||||||
// These games would also somewhat work with the fast CDVD speedhack
|
|
||||||
if( cdvd.Spinning ) {
|
|
||||||
return cdvd.Status | CDVD_STATUS_SPIN;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return cdvd.Status;
|
return cdvd.Status;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x0A: // STATUS
|
case 0x0A: // STATUS
|
||||||
CDVD_LOG("cdvdRead0A(Status) %x", cdvd.Status);
|
CDVD_LOG("cdvdRead0A(Status) %x", cdvd.Status);
|
||||||
|
|
||||||
#if SPINFLAGCHECK
|
|
||||||
// Time Crisis 2, random Japanese horror game (rama) - check spin flag
|
|
||||||
// These games would also somewhat work with the fast CDVD speedhack
|
|
||||||
if( cdvd.Spinning ) {
|
|
||||||
return cdvd.Status | CDVD_STATUS_SPIN;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return cdvd.Status;
|
return cdvd.Status;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1169,7 +1151,8 @@ static void cdvdWrite04(u8 rt) { // NCOMMAND
|
||||||
CDVD_LOG("cdvdWrite04: NCMD %s (%x) (ParamP = %x)", nCmdName[rt], rt, cdvd.ParamP);
|
CDVD_LOG("cdvdWrite04: NCMD %s (%x) (ParamP = %x)", nCmdName[rt], rt, cdvd.ParamP);
|
||||||
|
|
||||||
cdvd.nCommand = rt;
|
cdvd.nCommand = rt;
|
||||||
cdvd.Status = CDVD_STATUS_STOP; // check (rama)
|
// Why fiddle with Status and PwOff here at all? (rama)
|
||||||
|
cdvd.Status = cdvd.Spinning ? CDVD_STATUS_SPIN : CDVD_STATUS_STOP; // checkme
|
||||||
cdvd.PwOff = Irq_None; // good or bad?
|
cdvd.PwOff = Irq_None; // good or bad?
|
||||||
|
|
||||||
switch (rt) {
|
switch (rt) {
|
||||||
|
|
Loading…
Reference in New Issue