0.9.39-2 COMPLETE
This commit is contained in:
parent
792f9ca0c4
commit
de1e368a46
|
@ -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
|
|
@ -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++]));
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue