octoshock - fix some irregularities in savestate quality. this is intended to address #2214, and at least it passes the "first 60-100 frames in tastudio integrity test" test case given, but I still can't promise it's perfect.

This commit is contained in:
zeromus 2020-10-04 00:41:00 -04:00
parent f561e79489
commit 593c01a9e0
5 changed files with 7 additions and 3 deletions

Binary file not shown.

View File

@ -26,6 +26,9 @@ NewStateExternalBuffer::NewStateExternalBuffer(char *buffer, long maxlength)
void NewStateExternalBuffer::Save(const void *ptr, size_t size, const char *name) void NewStateExternalBuffer::Save(const void *ptr, size_t size, const char *name)
{ {
if(length <= 0x30a907 && length + size > 0x30a907)
{
}
if (maxlength - length >= (long)size) if (maxlength - length >= (long)size)
{ {
std::memcpy(buffer + length, ptr, size); std::memcpy(buffer + length, ptr, size);

View File

@ -1658,7 +1658,7 @@ SYNCFUNC(PS_GPU)
if(isReader) if(isReader)
{ {
//BIZHAWK: not needed //BIZHAWK: not needed, since we can sync TexCache directly
//for(unsigned i = 0; i < 256; i++) //for(unsigned i = 0; i < 256; i++)
//{ //{
// TexCache[i].Tag = TexCache_Tag[i]; // TexCache[i].Tag = TexCache_Tag[i];

View File

@ -508,7 +508,7 @@ template<int numvertices, bool goraud, bool textured, int BlendMode, bool TexMul
static void Command_DrawPolygon(const uint32 *cb) static void Command_DrawPolygon(const uint32 *cb)
{ {
const unsigned cb0 = cb[0]; const unsigned cb0 = cb[0];
tri_vertex vertices[3]; tri_vertex vertices[3] = {0}; //zero 04-oct-2020 - zero initialize for more deterministic results (sometimes UV arent set)
unsigned sv = 0; unsigned sv = 0;
//uint32 tpage = 0; //uint32 tpage = 0;

View File

@ -1229,6 +1229,7 @@ SYNCFUNC(PS_SPU)
{ {
NSS(Voices); NSS(Voices);
NSS(NoiseDivider);
NSS(NoiseCounter); NSS(NoiseCounter);
NSS(LFSR); NSS(LFSR);