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] drivers/main : nothing useful
[NO] mednafen : nothing useful [NO] mednafen : nothing useful
[OK] psx/cdc : loadstate, type change [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(RAMOffsetCounter);
NSS(RAMOffsetWWS); NSS(RAMOffsetWWS);
if(isReader)
{
PixelBufferCount32 %= (sizeof(PixelBuffer.pix32) / sizeof(PixelBuffer.pix32[0])) + 1;
}
} }
void MDEC_SyncState(bool isReader, EW::NewState *ns) void MDEC_SyncState(bool isReader, EW::NewState *ns)
@ -677,7 +681,7 @@ void MDEC_Run(int32 clocks)
MDEC_EAT_CLOCKS(need_eat); MDEC_EAT_CLOCKS(need_eat);
PixelBufferReadOffset = 0; PixelBufferReadOffset = 0;
while(PixelBufferReadOffset != PixelBufferCount32) while(PixelBufferReadOffset < PixelBufferCount32)
{ {
MDEC_WRITE_FIFO(MDFN_de32lsb<true>(&PixelBuffer.pix32[PixelBufferReadOffset++])); MDEC_WRITE_FIFO(MDFN_de32lsb<true>(&PixelBuffer.pix32[PixelBufferReadOffset++]));
} }

View File

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

View File

@ -1239,15 +1239,30 @@ SYNCFUNC(PS_SPU)
NSS(SPURAM); NSS(SPURAM);
//if(isReader) 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. for(unsigned i = 0; i < 24; i++)
//and another thing like this, which I think makes no sense. I really need to test these. {
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); IRQ_Assert(IRQ_SPU, IRQAsserted);
//} }
//sanity check this
//RvbResPos &= 0x3F;
} }
uint16 PS_SPU::PeekSPURAM(uint32 address) uint16 PS_SPU::PeekSPURAM(uint32 address)