0.9.39-2 COMPLETE

This commit is contained in:
zeromus 2020-04-05 23:59:09 -04:00
parent 792f9ca0c4
commit de1e368a46
4 changed files with 35 additions and 11 deletions

View File

@ -115,4 +115,9 @@
[NO] drivers/main : nothing useful
[NO] mednafen : nothing useful
[OK] psx/cdc : loadstate, type change
[OK] psx/cpu : type change, loadstate tweak. ATTN: note about GTE_StateAction
[OK] psx/cpu : type change, loadstate tweak. ATTN: note about GTE_StateAction
[OK] psx/gpu : big update to loadstate, maybe missing things before
[NO] psx/input/* : loadstate buffer sanity, not used for us
[OK] psx/mdec : PixelBufferReadOffset fixes
[OK] psx/psx : event_time initial value
[OK] psx/spu : loadstate sanity, decided to accept it here

View File

@ -217,6 +217,10 @@ template<bool isReader> void MDEC_SyncState(EW::NewState *ns)
NSS(RAMOffsetCounter);
NSS(RAMOffsetWWS);
if(isReader)
{
PixelBufferCount32 %= (sizeof(PixelBuffer.pix32) / sizeof(PixelBuffer.pix32[0])) + 1;
}
}
void MDEC_SyncState(bool isReader, EW::NewState *ns)
@ -677,7 +681,7 @@ void MDEC_Run(int32 clocks)
MDEC_EAT_CLOCKS(need_eat);
PixelBufferReadOffset = 0;
while(PixelBufferReadOffset != PixelBufferCount32)
while(PixelBufferReadOffset < PixelBufferCount32)
{
MDEC_WRITE_FIFO(MDFN_de32lsb<true>(&PixelBuffer.pix32[PixelBufferReadOffset++]));
}

View File

@ -257,7 +257,7 @@ static void EventReset(void)
events[i].which = i;
if(i == PSX_EVENT__SYNFIRST)
events[i].event_time = 0;
events[i].event_time = (int32)0x80000000;
else if(i == PSX_EVENT__SYNLAST)
events[i].event_time = 0x7FFFFFFF;
else

View File

@ -1239,15 +1239,30 @@ SYNCFUNC(PS_SPU)
NSS(SPURAM);
//if(isReader)
//{
//there was more weird crap here about controlling the range of variables. just sanity checks, I guess? to prevent crashes? no thanks, id rather have crashes alert me to nondeterminisms.
//and another thing like this, which I think makes no sense. I really need to test these.
if(isReader)
{
for(unsigned i = 0; i < 24; i++)
{
Voices[i].DecodeReadPos &= 0x1F;
Voices[i].DecodeWritePos &= 0x1F;
Voices[i].CurAddr &= 0x3FFFF;
Voices[i].StartAddr &= 0x3FFFF;
Voices[i].LoopAddr &= 0x3FFFF;
}
if(clock_divider <= 0 || clock_divider > 768)
clock_divider = 768;
RWAddr &= 0x3FFFF;
CWA &= 0x1FF;
ReverbWA &= 0x3FFFF;
ReverbCur &= 0x3FFFF;
RvbResPos &= 0x3F;
IRQ_Assert(IRQ_SPU, IRQAsserted);
//}
//sanity check this
//RvbResPos &= 0x3F;
}
}
uint16 PS_SPU::PeekSPURAM(uint32 address)