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