- Added Spikeout Final Edition.

- Minor change to DSB save state loading: only loopEnd is checked before using MPEG_SetLoop().
This commit is contained in:
Bart Trzynadlowski 2011-08-28 20:56:36 +00:00
parent 87dc5b4181
commit b647cd5a4b
4 changed files with 26 additions and 21 deletions

View file

@ -1490,10 +1490,10 @@ const struct GameInfo g_Model3GameList[] =
"spikeofe",
"Spikeout Final Edition",
"Sega",
1998,
1999,
0x21,
0x800000, // 8 MB of fixed CROM
FALSE, // 96 MB of banked CROM (do not mirror)
FALSE, // 112 MB of banked CROM (do not mirror)
0x4000000, // 64 MB of VROM
0x1000000, // 16 MB of sample ROMs
GAME_INPUT_COMMON|GAME_INPUT_JOYSTICK1|GAME_INPUT_SPIKEOUT,
@ -1507,24 +1507,24 @@ const struct GameInfo g_Model3GameList[] =
{ "CROM", "epr21653.17", 0xF4BD9C3C, 0x200000, 2, 0x0000006, 8, TRUE },
// Banked CROM0
{ "CROMxx", "mpr21616.4", 0x5240FC3A, 0x800000, 2, 0x0000000, 8, TRUE },
{ "CROMxx", "mpr21615.3", 0x58293076, 0x800000, 2, 0x0000002, 8, TRUE },
{ "CROMxx", "mpr21614.2", 0x9EC89AE6, 0x800000, 2, 0x0000004, 8, TRUE },
{ "CROMxx", "mpr21613.1", 0x1738C350, 0x800000, 2, 0x0000006, 8, TRUE },
{ "CROMxx", "mpr21616.4", 0x2900BDD8, 0x800000, 2, 0x0000000, 8, TRUE },
{ "CROMxx", "mpr21615.3", 0x7727A6FC, 0x800000, 2, 0x0000002, 8, TRUE },
{ "CROMxx", "mpr21614.2", 0xE21D619B, 0x800000, 2, 0x0000004, 8, TRUE },
{ "CROMxx", "mpr21613.1", 0xD039E608, 0x800000, 2, 0x0000006, 8, TRUE },
// Banked CROM1
{ "CROMxx", "mpr21620.8", 0x1CFE931A, 0x800000, 2, 0x2000000, 8, TRUE },
{ "CROMxx", "mpr21619.7", 0xE6D69E72, 0x800000, 2, 0x2000002, 8, TRUE },
{ "CROMxx", "mpr21618.6", 0x222F1829, 0x800000, 2, 0x2000004, 8, TRUE },
{ "CROMxx", "mpr21617.5", 0x6C874B78, 0x800000, 2, 0x2000006, 8, TRUE },
{ "CROMxx", "mpr21620.8", 0x476F027F, 0x800000, 2, 0x2000000, 8, TRUE },
{ "CROMxx", "mpr21619.7", 0xE1076F47, 0x800000, 2, 0x2000002, 8, TRUE },
{ "CROMxx", "mpr21618.6", 0x633530FA, 0x800000, 2, 0x2000004, 8, TRUE },
{ "CROMxx", "mpr21617.5", 0xA08C6790, 0x800000, 2, 0x2000006, 8, TRUE },
// Banked CROM2
{ "CROMxx", "mpr21624.12", 0x56994CC6, 0x400000, 2, 0x4000000, 8, TRUE },
{ "CROMxx", "mpr21623.11", 0x8D37D83E, 0x400000, 2, 0x4000002, 8, TRUE },
{ "CROMxx", "mpr21622.10", 0x8483A0D0, 0x400000, 2, 0x4000004, 8, TRUE },
{ "CROMxx", "mpr21621.9", 0xEAA96639, 0x400000, 2, 0x4000006, 8, TRUE },
{ "CROMxx", "mpr21624.12", 0xA158B7DA, 0x800000, 2, 0x4000000, 8, TRUE },
{ "CROMxx", "mpr21623.11", 0xD9301674, 0x800000, 2, 0x4000002, 8, TRUE },
{ "CROMxx", "mpr21622.10", 0x5F5A1563, 0x800000, 2, 0x4000004, 8, TRUE },
{ "CROMxx", "mpr21621.9", 0x551A444D, 0x800000, 2, 0x4000006, 8, TRUE },
// Banked CROM3 (note: appears at offset 0x6000000 rather than 0x5000000 as expected)
// Banked CROM3
{ "CROMxx", "mpr21628.16", 0xDE3866EA, 0x400000, 2, 0x6000000, 8, TRUE },
{ "CROMxx", "mpr21627.15", 0xEFE94608, 0x400000, 2, 0x6000002, 8, TRUE },
{ "CROMxx", "mpr21626.14", 0x1861652E, 0x400000, 2, 0x6000004, 8, TRUE },
@ -1535,7 +1535,7 @@ const struct GameInfo g_Model3GameList[] =
{ "VROM", "mpr21634.27", 0x876E6788, 0x400000, 2, 2, 32, FALSE },
{ "VROM", "mpr21635.28", 0x093534A8, 0x400000, 2, 4, 32, FALSE },
{ "VROM", "mpr21636.29", 0x2433F21C, 0x400000, 2, 6, 32, FALSE },
/*{ "VROM", "mpr21637.30", 0x093534A8, 0x400000, 2, 8, 32, FALSE },*/
{ "VROM", "mpr21637.30", 0xEDB8F2B8, 0x400000, 2, 8, 32, FALSE },
{ "VROM", "mpr21638.31", 0x3773A215, 0x400000, 2, 10, 32, FALSE },
{ "VROM", "mpr21639.32", 0x313D1872, 0x400000, 2, 12, 32, FALSE },
{ "VROM", "mpr21640.33", 0x271366BE, 0x400000, 2, 14, 32, FALSE },

View file

@ -549,7 +549,7 @@ void CDSB1::LoadState(CBlockFile *StateFile)
if (isPlaying)
{
MPEG_PlayMemory((const char *) &mpegROM[usingMPEGStart], usingMPEGEnd-usingMPEGStart);
if ((usingLoopStart != 0) && (usingLoopEnd != 0))
if (usingLoopEnd != 0) // only if looping was actually enabled
MPEG_SetLoop((const char *) &mpegROM[usingLoopStart], usingLoopEnd);
MPEG_SetOffset(mpegPos);
}
@ -1103,7 +1103,7 @@ void CDSB2::LoadState(CBlockFile *StateFile)
if (isPlaying)
{
MPEG_PlayMemory((const char *) &mpegROM[usingMPEGStart], usingMPEGEnd-usingMPEGStart);
if ((usingLoopStart != 0) && (usingLoopEnd != 0))
if (usingLoopEnd != 0) // only if looping was actually enabled
MPEG_SetLoop((const char *) &mpegROM[usingLoopStart], usingLoopEnd);
MPEG_SetOffset(mpegPos);
}

View file

@ -620,7 +620,7 @@ UINT32 CModel3::ReadSecurity(unsigned reg)
return 0;
case 0x1C: // Data
if (!strcmp(Game->id, "spikeout"))
if (!strcmp(Game->id, "spikeout") || !strcmp(Game->id, "spikeofe"))
{
data = (spikeoutSecurity[securityPtr++] << 16);
securityPtr %= (sizeof(spikeoutSecurity)/sizeof(UINT16));
@ -2435,6 +2435,12 @@ void CModel3::Patch(void)
*(UINT32 *) &crom[0x600000+0x3199C] = 0x60000000;
}
else if (!strcmp(Game->id, "spikeofe"))
{
//*(UINT32 *) &crom[0x600000+0x1240C] = 0x60000000; // illegal ROM
*(UINT32 *) &crom[0x600000+0x36F2C] = 0x60000000; // decrementer loop (see Spikeout)
}
else if (!strcmp(Game->id, "skichamp"))
{
// Base address of program in CROM: 0x480000
@ -2738,7 +2744,7 @@ CModel3::~CModel3(void)
#if 0
Dump("ram", ram, 0x800000, TRUE, FALSE);
//Dump("vrom", vrom, 0x4000000, TRUE, FALSE);
Dump("crom", crom, 0x800000, TRUE, FALSE);
//Dump("crom", crom, 0x800000, TRUE, FALSE);
//Dump("bankedCrom", &crom[0x800000], 0x7000000, TRUE, FALSE);
//Dump("soundROM", soundROM, 0x80000, FALSE, TRUE);
//Dump("sampleROM", sampleROM, 0x800000, FALSE, TRUE);

View file

@ -106,7 +106,6 @@
#include "ROMLoad.h"
#include "INIFile.h"
#include "BlockFile.h"
#include "Logger.h"
#include "Graphics/Render2D.h"
#include "Graphics/Render3D.h"
#include "Graphics/Shader.h"