add sinistarc, sinistarc2 & stereoeffect hookup [SynaMax]
This commit is contained in:
parent
cee265917c
commit
29d4114467
|
@ -100,6 +100,7 @@ static INT32 defender = 0;
|
||||||
static INT32 mayday = 0;
|
static INT32 mayday = 0;
|
||||||
static INT32 splat = 0;
|
static INT32 splat = 0;
|
||||||
static INT32 blaster = 0;
|
static INT32 blaster = 0;
|
||||||
|
static INT32 sinistarc = 0;
|
||||||
static INT32 playball = 0;
|
static INT32 playball = 0;
|
||||||
static INT32 spdball = 0;
|
static INT32 spdball = 0;
|
||||||
static INT32 lottofun = 0;
|
static INT32 lottofun = 0;
|
||||||
|
@ -1030,17 +1031,16 @@ static void pia0_out_b(UINT16 , UINT8 data)
|
||||||
|
|
||||||
static void pia1_out_b(UINT16 , UINT8 data)
|
static void pia1_out_b(UINT16 , UINT8 data)
|
||||||
{
|
{
|
||||||
if (!blaster) { // defender, williams HW
|
if (blaster || sinistarc) {
|
||||||
M6800Open(0);
|
// Blaster HW & Sinistar Cockpit
|
||||||
sync_sound(0);
|
|
||||||
if (!playball) data |= 0xc0;
|
|
||||||
pia_set_input_b(2, data);
|
|
||||||
pia_set_input_cb1(2, (data == 0xff) ? 0 : 1);
|
|
||||||
M6800Close();
|
|
||||||
} else { // Blaster HW
|
|
||||||
UINT8 l_data = data | 0x80;
|
UINT8 l_data = data | 0x80;
|
||||||
UINT8 r_data = (data >> 1 & 0x40) | (data & 0x3f) | 0x80;
|
UINT8 r_data = (data >> 1 & 0x40) | (data & 0x3f) | 0x80;
|
||||||
|
|
||||||
|
if (sinistarc) {
|
||||||
|
l_data = data | 0xc0;
|
||||||
|
r_data = data | 0xc0;
|
||||||
|
}
|
||||||
|
|
||||||
M6800Open(0);
|
M6800Open(0);
|
||||||
sync_sound(0);
|
sync_sound(0);
|
||||||
pia_set_input_b(2, l_data);
|
pia_set_input_b(2, l_data);
|
||||||
|
@ -1052,6 +1052,14 @@ static void pia1_out_b(UINT16 , UINT8 data)
|
||||||
pia_set_input_b(4, r_data);
|
pia_set_input_b(4, r_data);
|
||||||
pia_set_input_cb1(4, (r_data == 0xff) ? 0 : 1);
|
pia_set_input_cb1(4, (r_data == 0xff) ? 0 : 1);
|
||||||
M6800Close();
|
M6800Close();
|
||||||
|
} else {
|
||||||
|
// defender, williams HW (everything else)
|
||||||
|
M6800Open(0);
|
||||||
|
sync_sound(0);
|
||||||
|
if (!playball) data |= 0xc0;
|
||||||
|
pia_set_input_b(2, data);
|
||||||
|
pia_set_input_cb1(2, (data == 0xff) ? 0 : 1);
|
||||||
|
M6800Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1170,7 +1178,7 @@ static INT32 DrvDoReset(INT32 clear_mem)
|
||||||
M6800Reset();
|
M6800Reset();
|
||||||
M6800Close();
|
M6800Close();
|
||||||
|
|
||||||
if (blaster) {
|
if (blaster || sinistarc) {
|
||||||
M6800Open(1);
|
M6800Open(1);
|
||||||
M6800Reset();
|
M6800Reset();
|
||||||
M6800Close();
|
M6800Close();
|
||||||
|
@ -1286,6 +1294,7 @@ static INT32 DrvRomLoad(INT32 type) // 1-defender, 2-mysticm, 3-tshoot, 4-sinist
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ri.nType & 7) == 3) {
|
if ((ri.nType & 7) == 3) {
|
||||||
|
bprintf(0, _T("loading second sound rom %x\n"), ri.nLen);
|
||||||
memmove (DrvM6800ROM1, DrvM6800ROM1 + ri.nLen, 0x10000 - ri.nLen); // move back
|
memmove (DrvM6800ROM1, DrvM6800ROM1 + ri.nLen, 0x10000 - ri.nLen); // move back
|
||||||
if (BurnLoadRom(DrvM6800ROM1 + 0x10000 - ri.nLen, i, 1)) return 1;
|
if (BurnLoadRom(DrvM6800ROM1 + 0x10000 - ri.nLen, i, 1)) return 1;
|
||||||
continue;
|
continue;
|
||||||
|
@ -1452,6 +1461,7 @@ static INT32 DrvExit()
|
||||||
mayday = 0;
|
mayday = 0;
|
||||||
splat = 0;
|
splat = 0;
|
||||||
blaster = 0;
|
blaster = 0;
|
||||||
|
sinistarc = 0;
|
||||||
defender_control_hack = 0;
|
defender_control_hack = 0;
|
||||||
defender = 0;
|
defender = 0;
|
||||||
spdball = 0;
|
spdball = 0;
|
||||||
|
@ -1725,7 +1735,7 @@ static INT32 DrvFrame()
|
||||||
CPU_RUN_SYNCINT(1, M6800);
|
CPU_RUN_SYNCINT(1, M6800);
|
||||||
M6800Close();
|
M6800Close();
|
||||||
|
|
||||||
if (blaster) {
|
if (blaster || sinistarc) {
|
||||||
M6800Open(1);
|
M6800Open(1);
|
||||||
CPU_RUN_SYNCINT(2, M6800);
|
CPU_RUN_SYNCINT(2, M6800);
|
||||||
M6800Close();
|
M6800Close();
|
||||||
|
@ -1746,7 +1756,7 @@ static INT32 DrvFrame()
|
||||||
M6800Open(0);
|
M6800Open(0);
|
||||||
nExtraCycles[1] = M6800TotalCycles() - nCyclesTotal[1];
|
nExtraCycles[1] = M6800TotalCycles() - nCyclesTotal[1];
|
||||||
M6800Close();
|
M6800Close();
|
||||||
if (blaster) {
|
if (blaster || sinistarc) {
|
||||||
M6800Open(1);
|
M6800Open(1);
|
||||||
nExtraCycles[2] = M6800TotalCycles() - nCyclesTotal[2];
|
nExtraCycles[2] = M6800TotalCycles() - nCyclesTotal[2];
|
||||||
M6800Close();
|
M6800Close();
|
||||||
|
@ -3355,6 +3365,114 @@ struct BurnDriver BurnDrvSinistar = {
|
||||||
240, 292, 3, 4
|
240, 292, 3, 4
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Sinistar (revision 3, cockpit)
|
||||||
|
|
||||||
|
static struct BurnRomInfo sinistarcRomDesc[] = {
|
||||||
|
{ "sinistar_rom_10-b_16-3004-62.4c", 0x1000, 0x3d670417, 1 | BRF_PRG | BRF_ESS }, // 0 maincpu
|
||||||
|
{ "sinistar_rom_11-b_16-3004-63.4a", 0x1000, 0x3162bc50, 1 | BRF_PRG | BRF_ESS }, // 1
|
||||||
|
{ "sinistar_rom_1-b_16-3004-53.1d", 0x1000, 0xf6f3a22c, 1 | BRF_PRG | BRF_ESS }, // 2
|
||||||
|
{ "sinistar_rom_2-b_16-3004-54.1c", 0x1000, 0xcab3185c, 1 | BRF_PRG | BRF_ESS }, // 3
|
||||||
|
{ "sinistar_rom_3-b_16-3004-55.1a", 0x1000, 0x1ce1b3cc, 1 | BRF_PRG | BRF_ESS }, // 4
|
||||||
|
{ "sinistar_rom_4-b_16-3004-56.2d", 0x1000, 0x6da632ba, 1 | BRF_PRG | BRF_ESS }, // 5
|
||||||
|
{ "sinistar_rom_5-b_16-3004-57.2c", 0x1000, 0xb662e8fc, 1 | BRF_PRG | BRF_ESS }, // 6
|
||||||
|
{ "sinistar_rom_6-b_16-3004-58.2a", 0x1000, 0x2306183d, 1 | BRF_PRG | BRF_ESS }, // 7
|
||||||
|
{ "sinistar_rom_7-b_16-3004-59.3d", 0x1000, 0xe5dd918e, 1 | BRF_PRG | BRF_ESS }, // 8
|
||||||
|
{ "sinistar_rom_8-b_16-3004-60.3c", 0x1000, 0x4785a787, 1 | BRF_PRG | BRF_ESS }, // 9
|
||||||
|
{ "sinistar_rom_9-b_16-3004-61.3a", 0x1000, 0x50cb63ad, 1 | BRF_PRG | BRF_ESS }, // 10
|
||||||
|
|
||||||
|
{ "3004_speech_ic7_r1_16-3004-52.ic7", 0x1000, 0xe1019568, 2 | BRF_PRG | BRF_ESS }, // 11 soundcpu
|
||||||
|
{ "3004_speech_ic5_r1_16-3004-50.ic5", 0x1000, 0xcf3b5ffd, 2 | BRF_PRG | BRF_ESS }, // 12
|
||||||
|
{ "3004_speech_ic6_r1_16-3004-51.ic6", 0x1000, 0xff8d2645, 2 | BRF_PRG | BRF_ESS }, // 13
|
||||||
|
{ "3004_speech_ic4_r1_16-3004-49.ic4", 0x1000, 0x4b56a626, 2 | BRF_PRG | BRF_ESS }, // 14
|
||||||
|
{ "video_sound_rom_9_std.808.ic12", 0x1000, 0xb82f4ddb, 2 | BRF_PRG | BRF_ESS }, // 15
|
||||||
|
|
||||||
|
{ "video_sound_rom_10_std.ic12", 0x1000, 0xb5c70082, 3 | BRF_PRG | BRF_ESS }, // 16 soundcpu_b
|
||||||
|
|
||||||
|
{ "decoder_rom_4.3g", 0x0200, 0xe6631c23, 0 | BRF_OPT }, // 17 proms
|
||||||
|
{ "decoder_rom_6.3c", 0x0200, 0x83faf25e, 0 | BRF_OPT }, // 18
|
||||||
|
};
|
||||||
|
|
||||||
|
STD_ROM_PICK(sinistarc)
|
||||||
|
STD_ROM_FN(sinistarc)
|
||||||
|
|
||||||
|
static INT32 SinistarCockpitInit()
|
||||||
|
{
|
||||||
|
INT32 nRet = SinistarInit();
|
||||||
|
|
||||||
|
if (nRet == 0) {
|
||||||
|
M6800Init(1);
|
||||||
|
M6800Open(1);
|
||||||
|
M6800MapMemory(DrvM6800RAM1, 0x0000, 0x00ff, MAP_RAM);
|
||||||
|
M6800MapMemory(DrvM6800ROM1 + 0xb000, 0xb000, 0xffff, MAP_ROM);
|
||||||
|
M6800SetWriteHandler(blaster_sound_write);
|
||||||
|
M6800SetReadHandler(blaster_sound_read);
|
||||||
|
M6800Close();
|
||||||
|
|
||||||
|
pia_config(4, 0, &pia_4); // 2nd soundboard
|
||||||
|
|
||||||
|
DACSetRoute(0, 0.35, BURN_SND_ROUTE_LEFT);
|
||||||
|
|
||||||
|
DACInit(1, 0, 0, M6800TotalCycles, 894886);
|
||||||
|
DACSetRoute(1, 0.35, BURN_SND_ROUTE_RIGHT);
|
||||||
|
|
||||||
|
sinistarc = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return nRet;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct BurnDriver BurnDrvSinistarc = {
|
||||||
|
"sinistarc", "sinistar", NULL, NULL, "1982",
|
||||||
|
"Sinistar (revision 3, cockpit)\0", NULL, "Williams", "6809 System",
|
||||||
|
NULL, NULL, NULL, NULL,
|
||||||
|
BDF_GAME_WORKING | BDF_ORIENTATION_VERTICAL | BDF_CLONE, 2, HARDWARE_MISC_PRE90S, GBF_SHOOT, 0,
|
||||||
|
NULL, sinistarcRomInfo, sinistarcRomName, NULL, NULL, NULL, NULL, SinistarInputInfo, NULL,
|
||||||
|
SinistarCockpitInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &DrvRecalc, 0x10,
|
||||||
|
240, 292, 3, 4
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Sinistar (revision 2, cockpit)
|
||||||
|
|
||||||
|
static struct BurnRomInfo sinistarc2RomDesc[] = {
|
||||||
|
{ "sinistar_rom_10-b_16-3004-47.4c", 0x1000, 0x3d670417, 1 | BRF_PRG | BRF_ESS }, // 0 maincpu
|
||||||
|
{ "sinistar_rom_11-b_16-3004-48.4a", 0x1000, 0x792c8b00, 1 | BRF_PRG | BRF_ESS }, // 1
|
||||||
|
{ "sinistar_rom_1-b_16-3004-38.1d", 0x1000, 0xf6f3a22c, 1 | BRF_PRG | BRF_ESS }, // 2
|
||||||
|
{ "sinistar_rom_2-b_16-3004-39.1c", 0x1000, 0xcab3185c, 1 | BRF_PRG | BRF_ESS }, // 3
|
||||||
|
{ "sinistar_rom_3-b_16-3004-40.1a", 0x1000, 0x1ce1b3cc, 1 | BRF_PRG | BRF_ESS }, // 4
|
||||||
|
{ "sinistar_rom_4-b_16-3004-41.2d", 0x1000, 0x6da632ba, 1 | BRF_PRG | BRF_ESS }, // 5
|
||||||
|
{ "sinistar_rom_5-b_16-3004-42.2c", 0x1000, 0xb662e8fc, 1 | BRF_PRG | BRF_ESS }, // 6
|
||||||
|
{ "sinistar_rom_6-b_16-3004-43.2a", 0x1000, 0x2306183d, 1 | BRF_PRG | BRF_ESS }, // 7
|
||||||
|
{ "sinistar_rom_7-b_16-3004-44.3d", 0x1000, 0xe5dd918e, 1 | BRF_PRG | BRF_ESS }, // 8
|
||||||
|
{ "sinistar_rom_8-b_16-3004-45.3c", 0x1000, 0xd7ecee45, 1 | BRF_PRG | BRF_ESS }, // 9
|
||||||
|
{ "sinistar_rom_9-b_16-3004-46.3a", 0x1000, 0x50cb63ad, 1 | BRF_PRG | BRF_ESS }, // 10
|
||||||
|
|
||||||
|
{ "3004_speech_ic7_r1_16-3004-52.ic7", 0x1000, 0xe1019568, 2 | BRF_PRG | BRF_ESS }, // 11 soundcpu
|
||||||
|
{ "3004_speech_ic5_r1_16-3004-50.ic5", 0x1000, 0xcf3b5ffd, 2 | BRF_PRG | BRF_ESS }, // 12
|
||||||
|
{ "3004_speech_ic6_r1_16-3004-51.ic6", 0x1000, 0xff8d2645, 2 | BRF_PRG | BRF_ESS }, // 13
|
||||||
|
{ "3004_speech_ic4_r1_16-3004-49.ic4", 0x1000, 0x4b56a626, 2 | BRF_PRG | BRF_ESS }, // 14
|
||||||
|
{ "video_sound_rom_9_std.808.ic12", 0x1000, 0xb82f4ddb, 2 | BRF_PRG | BRF_ESS }, // 15
|
||||||
|
|
||||||
|
{ "video_sound_rom_10_std.ic12", 0x1000, 0xb5c70082, 3 | BRF_PRG | BRF_ESS }, // 16 soundcpu_b
|
||||||
|
|
||||||
|
{ "decoder_rom_4.3g", 0x0200, 0xe6631c23, 0 | BRF_OPT }, // 17 proms
|
||||||
|
{ "decoder_rom_6.3c", 0x0200, 0x83faf25e, 0 | BRF_OPT }, // 18
|
||||||
|
};
|
||||||
|
|
||||||
|
STD_ROM_PICK(sinistarc2)
|
||||||
|
STD_ROM_FN(sinistarc2)
|
||||||
|
|
||||||
|
struct BurnDriver BurnDrvSinistarc2 = {
|
||||||
|
"sinistarc2", "sinistar", NULL, NULL, "1982",
|
||||||
|
"Sinistar (revision 2, cockpit)\0", NULL, "Williams", "6809 System",
|
||||||
|
NULL, NULL, NULL, NULL,
|
||||||
|
BDF_GAME_WORKING | BDF_ORIENTATION_VERTICAL | BDF_CLONE, 2, HARDWARE_MISC_PRE90S, GBF_SHOOT, 0,
|
||||||
|
NULL, sinistarc2RomInfo, sinistarc2RomName, NULL, NULL, NULL, NULL, SinistarInputInfo, NULL,
|
||||||
|
SinistarCockpitInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &DrvRecalc, 0x10,
|
||||||
|
240, 292, 3, 4
|
||||||
|
};
|
||||||
|
|
||||||
// Sinistar (SynaMax difficulty/titlescreen hack, revision 3, upright)
|
// Sinistar (SynaMax difficulty/titlescreen hack, revision 3, upright)
|
||||||
|
|
||||||
static struct BurnRomInfo sinistarsmRomDesc[] = {
|
static struct BurnRomInfo sinistarsmRomDesc[] = {
|
||||||
|
|
Loading…
Reference in New Issue