mirror of
https://github.com/RetroDECK/Supermodel.git
synced 2025-03-06 14:27:44 +00:00
- Added sound ROMs to Daytona 2 (BOTE and PE).
- Implemented bank switching for sample ROMs. It is probably incorrect because there is still 2MB of unaccounted-for space. - Added a few important TO-DO notes.
This commit is contained in:
parent
325f9ab2e8
commit
004339e601
|
@ -38,8 +38,9 @@ const struct GameInfo Model3GameList[] =
|
|||
1998,
|
||||
0x21,
|
||||
0x800000, // 8 MB of fixed CROM
|
||||
FALSE, // 96 MB of banked CROM (Do not Mirror)
|
||||
FALSE, // 96 MB of banked CROM (Do not Mirror)
|
||||
0x4000000, // 64 MB of VROM
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_JOYSTICK1|GAME_INPUT_FIGHTING,
|
||||
|
||||
{
|
||||
|
@ -111,6 +112,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x800000, // 8 MB of fixed CROM
|
||||
TRUE, // 80 MB of banked CROM
|
||||
0x4000000, // 64 MB of VROM
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_VEHICLE,
|
||||
|
||||
{
|
||||
|
@ -181,6 +183,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x800000, // 8 MB of fixed CROM
|
||||
TRUE, // 32 MB of banked CROM
|
||||
0x4000000, // 64 MB of VROM
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_VEHICLE,
|
||||
|
||||
{
|
||||
|
@ -234,6 +237,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x200000, // 2 MB of fixed CROM
|
||||
TRUE, // 64 MB of banked CROM
|
||||
0x2000000, // 32 MB of VROM
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_JOYSTICK1,
|
||||
|
||||
{
|
||||
|
@ -298,6 +302,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x800000, // 8 MB of fixed CROM
|
||||
TRUE, // 40 MB of banked CROM
|
||||
0x4000000, // 64 MB of VROM
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_VEHICLE,
|
||||
|
||||
{
|
||||
|
@ -357,6 +362,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x200000, // 2 MB of fixed CROM
|
||||
TRUE, // 64 MB of banked CROM (needs to be mirrored)
|
||||
0x2000000, // 32 MB of VROM (will need to be mirrored)
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_JOYSTICK1|GAME_INPUT_JOYSTICK2|GAME_INPUT_FIGHTING,
|
||||
|
||||
{
|
||||
|
@ -427,6 +433,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x200000, // 2 MB of fixed CROM
|
||||
TRUE, // 64 MB of banked CROM (needs to be mirrored)
|
||||
0x2000000, // 32 MB of VROM (will need to be mirrored)
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_VEHICLE|GAME_INPUT_VR|GAME_INPUT_SHIFT4, // for now, Shift Up/Down mapped to Shift 3/4
|
||||
|
||||
{
|
||||
|
@ -491,6 +498,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x200000, // 2 MB of fixed CROM
|
||||
TRUE, // 64 MB of banked CROM (needs to be mirrored)
|
||||
0x2000000, // 32 MB of VROM (will need to be mirrored)
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_VEHICLE|GAME_INPUT_VR|GAME_INPUT_SHIFT4,
|
||||
|
||||
{
|
||||
|
@ -555,6 +563,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x200000, // 2 MB of fixed CROM
|
||||
TRUE, // 64 MB of banked CROM (needs to be mirrored)
|
||||
0x2000000, // 32 MB of VROM (will need to be mirrored)
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_VEHICLE|GAME_INPUT_VR|GAME_INPUT_SHIFT4,
|
||||
|
||||
{
|
||||
|
@ -625,6 +634,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x200000, // 2 MB of fixed CROM
|
||||
TRUE, // 64 MB of banked CROM (needs to be mirrored)
|
||||
0x2000000, // 32 MB of VROM
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_GUN1|GAME_INPUT_GUN2,
|
||||
|
||||
{
|
||||
|
@ -695,6 +705,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x800000, // 8 MB of fixed CROM
|
||||
TRUE, // 64 MB of banked CROM (needs to be mirrored)
|
||||
0x4000000, // 64 MB of VROM
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_TWIN_JOYSTICKS,
|
||||
|
||||
{
|
||||
|
@ -760,6 +771,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x400000, // 2 MB of fixed CROM
|
||||
TRUE, // 64 MB of banked CROM (needs to be mirrored)
|
||||
0x2000000, // 32 MB of VROM
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_JOYSTICK1|GAME_INPUT_JOYSTICK2|GAME_INPUT_SOCCER,
|
||||
|
||||
{
|
||||
|
@ -830,6 +842,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x800000, // 8 MB of fixed CROM
|
||||
TRUE, // 64 MB of banked CROM (needs to be mirrored)
|
||||
0x4000000, // 64 MB of VROM
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_VEHICLE|GAME_INPUT_RALLY|GAME_INPUT_SHIFT4,
|
||||
|
||||
{
|
||||
|
@ -894,6 +907,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x800000, // 8 MB of fixed CROM
|
||||
FALSE, // 96 MB of banked CROM (do not mirror)
|
||||
0x4000000, // 64 MB of VROM
|
||||
0x1000000, // 16 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_VEHICLE|GAME_INPUT_VR|GAME_INPUT_SHIFT4,
|
||||
|
||||
{
|
||||
|
@ -945,6 +959,13 @@ const struct GameInfo Model3GameList[] =
|
|||
{ "VROM", "mpr-20884.40", 0x63C4639A, 0x400000, 2, 28, 32, FALSE },
|
||||
{ "VROM", "mpr-20885.41", 0x61C292CA, 0x400000, 2, 30, 32, FALSE },
|
||||
|
||||
// Sound ROMs
|
||||
{ "SndProg","epr-20865.21", 0xB70C2699, 0x20000, 2, 0, 2, TRUE },
|
||||
{ "Samples","mpr-20866.22", 0x91F40C1C, 0x400000, 2, 0x000000, 2, FALSE },
|
||||
{ "Samples","mpr-20868.24", 0xFA0C7EC0, 0x400000, 2, 0x400000, 2, FALSE },
|
||||
{ "Samples","mpr-20867.23", 0xA579C884, 0x400000, 2, 0x800000, 2, FALSE },
|
||||
{ "Samples","mpr-20869.25", 0x1F338832, 0x400000, 2, 0xC00000, 2, FALSE },
|
||||
|
||||
{ NULL, NULL, 0, 0, 0, 0, 0, FALSE }
|
||||
}
|
||||
},
|
||||
|
@ -959,6 +980,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x800000, // 8 MB of fixed CROM
|
||||
FALSE, // do not mirror banked CROM
|
||||
0x4000000, // 64 MB of VROM
|
||||
0x1000000, // 16 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_VEHICLE|GAME_INPUT_VR|GAME_INPUT_SHIFT4,
|
||||
|
||||
{
|
||||
|
@ -1010,6 +1032,13 @@ const struct GameInfo Model3GameList[] =
|
|||
{ "VROM", "mpr-21212.40", 0x6F8A75E0, 0x400000, 2, 28, 32, FALSE },
|
||||
{ "VROM", "mpr-21213.41", 0xDE75BEC6, 0x400000, 2, 30, 32, FALSE },
|
||||
|
||||
// Sound ROMs
|
||||
{ "SndProg","epr-21325.21", 0x004AD6AD, 0x20000, 2, 0, 2, TRUE },
|
||||
{ "Samples","mpr-21285.22", 0x7CDCA6AC, 0x400000, 2, 0x000000, 2, FALSE },
|
||||
{ "Samples","mpr-21287.24", 0x06B66F17, 0x400000, 2, 0x400000, 2, FALSE },
|
||||
{ "Samples","mpr-21286.23", 0x749DFEF0, 0x400000, 2, 0x800000, 2, FALSE },
|
||||
{ "Samples","mpr-21288.25", 0x14BEE38E, 0x400000, 2, 0xC00000, 2, FALSE },
|
||||
|
||||
{ NULL, NULL, 0, 0, 0, 0, 0, FALSE }
|
||||
}
|
||||
},
|
||||
|
@ -1022,9 +1051,9 @@ const struct GameInfo Model3GameList[] =
|
|||
1998,
|
||||
0x20,
|
||||
0x800000, // 8 MB of fixed CROM
|
||||
TRUE,
|
||||
//0x6000000, // 64 MB of banked CROM
|
||||
TRUE, // 64 MB of banked CROM (must be mirrored)
|
||||
0x4000000, // 64 MB of VROM
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_JOYSTICK1|GAME_INPUT_JOYSTICK2|GAME_INPUT_FIGHTING,
|
||||
|
||||
{
|
||||
|
@ -1090,6 +1119,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x800000, // 8 MB of fixed CROM
|
||||
TRUE, // 40 MB of banked CROM
|
||||
0x4000000, // 64 MB of VROM
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_VEHICLE,
|
||||
|
||||
{
|
||||
|
@ -1149,6 +1179,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x800000, // 8 MB of fixed CROM
|
||||
TRUE, // 48 MB of banked CROM (mirror)
|
||||
0x4000000, // 64 MB of VROM
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_ANALOG_JOYSTICK,
|
||||
|
||||
{
|
||||
|
@ -1208,6 +1239,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x800000, // 8 MB of fixed CROM
|
||||
FALSE, // 96 MB of banked CROM (do not mirror)
|
||||
0x4000000, // 64 MB of VROM (will need to be mirrored)
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_ANALOG_JOYSTICK,
|
||||
|
||||
{
|
||||
|
@ -1267,6 +1299,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x800000, // 8 MB of fixed CROM
|
||||
TRUE, // 48 MB of banked CROM (mirror)
|
||||
0x4000000, // 64 MB of VROM
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_ANALOG_JOYSTICK,
|
||||
|
||||
{
|
||||
|
@ -1331,6 +1364,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0x800000, // 8 MB of fixed CROM
|
||||
TRUE, // 48 MB of banked CROM (mirror)
|
||||
0x4000000, // 64 MB of VROM
|
||||
0x800000, // 8 MB of sample ROMs
|
||||
GAME_INPUT_COMMON|GAME_INPUT_VEHICLE,
|
||||
|
||||
{
|
||||
|
@ -1392,6 +1426,7 @@ const struct GameInfo Model3GameList[] =
|
|||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
|
||||
{
|
||||
{ NULL, NULL, 0, 0, 0, 0, FALSE },
|
||||
|
|
|
@ -71,11 +71,12 @@ struct GameInfo
|
|||
int step; // Model 3 hardware stepping: 0x10 = 1.0, 0x15 = 1.5, 0x20 = 2.0, 0x21 = 2.1
|
||||
unsigned cromSize; // size of fixed CROM (up to 8 MB)
|
||||
BOOL mirrorLow64MB; // mirror low 64 MB of banked CROM space to upper 64 MB
|
||||
unsigned vromSize; // size of video ROMs (32 or 64 MB; if the latter, will have to be mirrored)
|
||||
unsigned vromSize; // size of video ROMs (32 or 64 MB; if 32 MB, will have to be mirrored)
|
||||
unsigned sampleSize; // size of sample ROMS (8 or 16 MB; if 8 MB, will have to be mirrored)
|
||||
unsigned inputFlags; // game input types
|
||||
|
||||
// ROM files
|
||||
struct ROMInfo ROM[40];
|
||||
struct ROMInfo ROM[42];
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
//TODO: Update save state file format (must output) MIDI control port; will no longer be compatible with 0.1a save states
|
||||
//TODO: should sample roms be byteswapped? They currently are. This could also be done in the game list with the byteswap flag...
|
||||
/**
|
||||
** Supermodel
|
||||
** A Sega Model 3 Arcade Emulator.
|
||||
|
@ -1881,7 +1882,7 @@ void CModel3::RunFrame(void)
|
|||
ppc_execute(200);
|
||||
|
||||
++irqCount;
|
||||
if (irqCount > (128*3))
|
||||
if (irqCount > (128))
|
||||
{
|
||||
printf("MIDI TIMEOUT!\n");
|
||||
break;
|
||||
|
@ -2157,8 +2158,8 @@ static void Dump(const char *file, UINT8 *buf, unsigned size, BOOL reverse32, BO
|
|||
#define OFFSET_BACKUPRAM 0xD000000 // 128 KB
|
||||
#define OFFSET_SECURITYRAM 0xD020000 // 128 KB
|
||||
#define OFFSET_SOUNDROM 0xD040000 // 512 KB
|
||||
#define OFFSET_SAMPLEROM 0xD0C0000 // 8 MB
|
||||
#define MEMORY_POOL_SIZE (0x800000+0x800000+0x8000000+0x4000000+0x20000+0x20000+0x80000+0x800000)
|
||||
#define OFFSET_SAMPLEROM 0xD0C0000 // 16 MB
|
||||
#define MEMORY_POOL_SIZE (0x800000+0x800000+0x8000000+0x4000000+0x20000+0x20000+0x80000+0x1000000)
|
||||
|
||||
const struct GameInfo * CModel3::GetGameInfo(void)
|
||||
{
|
||||
|
@ -2185,19 +2186,21 @@ BOOL CModel3::LoadROMSet(const struct GameInfo *GameList, const char *zipFile)
|
|||
return ErrorLog("Failed to load ROM set.");
|
||||
|
||||
// Perform mirroring as necessary
|
||||
if (Game->vromSize < 0x4000000) // VROM is actually 64 MB
|
||||
if (Game->vromSize < 0x4000000) // VROM is actually 64 MB
|
||||
CopyRegion(vrom, Game->vromSize, 0x4000000, vrom, Game->vromSize);
|
||||
if (Game->cromSize < 0x800000) // low part of fixed CROM region contains CROM0
|
||||
if (Game->cromSize < 0x800000) // low part of fixed CROM region contains CROM0
|
||||
CopyRegion(crom, 0, 0x800000-Game->cromSize, &crom[0x800000], 0x800000);
|
||||
if (Game->mirrorLow64MB) // for games w/ 64 MB or less banked CROM, mirror to upper 128 MB
|
||||
if (Game->mirrorLow64MB) // for games w/ 64 MB or less banked CROM, mirror to upper 128 MB
|
||||
CopyRegion(&crom[0x800000], 0x4000000, 0x8000000, &crom[0x800000], 0x4000000);
|
||||
if (Game->sampleSize < 0x1000000) // if less than 16 MB of sample ROMs, mirror
|
||||
CopyRegion(sampleROM, 0x800000, 0x1000000, sampleROM, 0x800000);
|
||||
|
||||
// Byte reverse the PowerPC ROMs (convert to little endian words)
|
||||
Reverse32(crom, 0x800000+0x8000000);
|
||||
|
||||
// Byte swap 68K ROMs
|
||||
Reverse16(soundROM, 0x80000);
|
||||
Reverse16(sampleROM, 0x800000); // is this correct?
|
||||
Reverse16(sampleROM, 0x1000000); // is this correct?
|
||||
|
||||
// Initialize CPU and configure hardware (CPU speed is set in Init())
|
||||
if (Game->step >= 0x20) // Step 2.0+
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
//TODO: clean up M68K interface. pass a bus pointer (SoundBoard should be derived from it), so that M68K handlers have access to CSoundBoard
|
||||
//TODO: must store actual value of bank register so we can save it to save states
|
||||
/**
|
||||
** Supermodel
|
||||
** A Sega Model 3 Arcade Emulator.
|
||||
|
@ -25,6 +27,37 @@
|
|||
* Model 3 sound board. Implementation of the CSoundBoard class. This class can
|
||||
* only be instantiated once because it relies on global variables (the non-OOP
|
||||
* 68K core).
|
||||
*
|
||||
* TO-DO List
|
||||
* ----------
|
||||
* - Optimize memory handlers (jump table).
|
||||
*
|
||||
* Bank Switching
|
||||
* --------------
|
||||
* Banking is not fully understood yet. It is presumed that the low 2MB of the
|
||||
* sample ROMs are not banked (MAME), but this is not guaranteed. Below are
|
||||
* examples of known situations where banking helps (sound names are as they
|
||||
* appear in the sound test menu).
|
||||
*
|
||||
* sound name
|
||||
* ROM Offsets -> Address
|
||||
*
|
||||
* dayto2pe
|
||||
* --------
|
||||
* let's hope he does better
|
||||
* A... -> A... (400001=3E)
|
||||
* doing good i'd say you have a ..
|
||||
* E... -> E... (400001=3D)
|
||||
*
|
||||
* From the above, it appears that when (400001)&10, then:
|
||||
*
|
||||
* ROM A00000-DFFFFF -> A00000-DFFFFF
|
||||
* ROM E00000-FFFFFF -> E00000-FFFFFF
|
||||
*
|
||||
* And when that bit is clear (just use default mapping, upper 6MB of ROM):
|
||||
*
|
||||
* ROM 200000-5FFFFF -> A00000-DFFFFF
|
||||
* ROM 600000-7FFFFF -> E00000-FFFFFF
|
||||
*/
|
||||
|
||||
#include "Supermodel.h"
|
||||
|
@ -39,7 +72,7 @@ static FILE *soundFP;
|
|||
|
||||
// Memory regions passed out of CSoundBoard object for global access handlers
|
||||
static UINT8 *sbRAM1, *sbRAM2;
|
||||
static const UINT8 *sbSoundROM, *sbSampleROM;
|
||||
static const UINT8 *sbSoundROM, *sbSampleROM, *sbSampleBankLo, *sbSampleBankHi;
|
||||
|
||||
static UINT8 Read8(UINT32 a)
|
||||
{
|
||||
|
@ -61,11 +94,11 @@ static UINT8 Read8(UINT32 a)
|
|||
|
||||
// Sample ROM (bank)
|
||||
else if ((a >= 0xA00000) && (a <= 0xDFFFFF))
|
||||
return sbSampleROM[(a-0x800000)^1];
|
||||
return sbSampleBankLo[(a-0xA00000)^1];
|
||||
|
||||
// Sample ROM (bank)
|
||||
else if ((a >= 0xE00000) && (a <= 0xFFFFFF))
|
||||
return sbSampleROM[(a-0x800000)^1];
|
||||
return sbSampleBankHi[(a-0xE00000)^1];
|
||||
|
||||
// SCSP (Master)
|
||||
else if ((a >= 0x100000) && (a <= 0x10FFFF))
|
||||
|
@ -103,11 +136,11 @@ static UINT16 Read16(UINT32 a)
|
|||
|
||||
// Sample ROM (bank)
|
||||
else if ((a >= 0xA00000) && (a <= 0xDFFFFF))
|
||||
return *(UINT16 *) &sbSampleROM[(a-0x800000)];
|
||||
return *(UINT16 *) &sbSampleBankLo[(a-0xA00000)];
|
||||
|
||||
// Sample ROM (bank)
|
||||
else if ((a >= 0xE00000) && (a <= 0xFFFFFF))
|
||||
return *(UINT16 *) &sbSampleROM[(a-0x800000)];
|
||||
return *(UINT16 *) &sbSampleBankHi[(a-0xE00000)];
|
||||
|
||||
// SCSP (Master)
|
||||
else if ((a >= 0x100000) && (a <= 0x10FFFF))
|
||||
|
@ -167,7 +200,7 @@ static UINT32 Read32(UINT32 a)
|
|||
}
|
||||
}
|
||||
|
||||
static void Write8 (unsigned int a,unsigned char d)
|
||||
static void Write8(unsigned int a,unsigned char d)
|
||||
{
|
||||
|
||||
// SCSP RAM 1
|
||||
|
@ -186,6 +219,21 @@ static void Write8 (unsigned int a,unsigned char d)
|
|||
else if ((a >= 0x300000) && (a <= 0x30FFFF))
|
||||
SCSP_Slave_w8(a,d);
|
||||
|
||||
// Bank register
|
||||
else if (a == 0x400001)
|
||||
{
|
||||
if ((d&0x10))
|
||||
{
|
||||
sbSampleBankLo = &sbSampleROM[0xA00000];
|
||||
sbSampleBankHi = &sbSampleROM[0xE00000];
|
||||
}
|
||||
else
|
||||
{
|
||||
sbSampleBankLo = &sbSampleROM[0x200000];
|
||||
sbSampleBankHi = &sbSampleROM[0x600000];
|
||||
}
|
||||
}
|
||||
|
||||
// Unknown
|
||||
else
|
||||
printf("68K: Unknown write8 %06X=%02X\n", a, d);
|
||||
|
@ -313,7 +361,10 @@ void CSoundBoard::RunFrame(void)
|
|||
|
||||
void CSoundBoard::Reset(void)
|
||||
{
|
||||
memcpy(ram1, soundROM, 16); // copy 68K vector table
|
||||
// lets hope he does better... ->
|
||||
memcpy(ram1, soundROM, 16); // copy 68K vector table
|
||||
sbSampleBankLo = &sampleROM[0x200000]; // default banks
|
||||
sbSampleBankHi = &sampleROM[0x600000];
|
||||
M68KReset();
|
||||
DebugLog("Sound Board Reset\n");
|
||||
}
|
||||
|
@ -324,8 +375,8 @@ void CSoundBoard::Reset(void)
|
|||
******************************************************************************/
|
||||
|
||||
// Offsets of memory regions within sound board's pool
|
||||
#define OFFSETsbRAM1 0 // 1 MB SCSP1 RAM
|
||||
#define OFFSETsbRAM2 0x100000 // 1 MB SCSP2 RAM
|
||||
#define OFFSET_RAM1 0 // 1 MB SCSP1 RAM
|
||||
#define OFFSET_RAM2 0x100000 // 1 MB SCSP2 RAM
|
||||
#define MEMORY_POOL_SIZE (0x100000+0x100000)
|
||||
|
||||
BOOL CSoundBoard::Init(const UINT8 *soundROMPtr, const UINT8 *sampleROMPtr, CIRQ *ppcIRQObjectPtr, unsigned soundIRQBit)
|
||||
|
@ -347,14 +398,16 @@ BOOL CSoundBoard::Init(const UINT8 *soundROMPtr, const UINT8 *sampleROMPtr, CIRQ
|
|||
memset(memoryPool, 0, MEMORY_POOL_SIZE);
|
||||
|
||||
// Set up memory pointers
|
||||
ram1 = &memoryPool[OFFSETsbRAM1];
|
||||
ram2 = &memoryPool[OFFSETsbRAM2];
|
||||
ram1 = &memoryPool[OFFSET_RAM1];
|
||||
ram2 = &memoryPool[OFFSET_RAM2];
|
||||
|
||||
// Make global copies of memory pointers for 68K access handlers
|
||||
sbRAM1 = ram1;
|
||||
sbRAM2 = ram2;
|
||||
sbSoundROM = soundROM;
|
||||
sbSampleROM = sampleROM;
|
||||
sbSampleBankLo = &sampleROM[0x200000];
|
||||
sbSampleBankHi = &sampleROM[0x600000];
|
||||
|
||||
// Initialize 68K core
|
||||
M68KInit();
|
||||
|
|
Loading…
Reference in a new issue