Dumped the 68705P3 MCUs on 2 different types of sp.ACE fruit machine reel driver PCBs [TTX] (#8593)

This commit is contained in:
David Haywood 2021-09-22 03:26:09 +01:00 committed by GitHub
parent 1d819e186a
commit 47e5d8c5c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 314 additions and 64 deletions

View File

@ -4788,6 +4788,8 @@ files {
MAME_DIR .. "src/mame/drivers/acefruit.cpp",
MAME_DIR .. "src/mame/drivers/aces1.cpp",
MAME_DIR .. "src/mame/drivers/acesp.cpp",
MAME_DIR .. "src/mame/machine/ace_sp_reelctrl.cpp",
MAME_DIR .. "src/mame/machine/ace_sp_reelctrl.h",
MAME_DIR .. "src/mame/drivers/age_candy.cpp",
MAME_DIR .. "src/mame/drivers/alinvade.cpp",
MAME_DIR .. "src/mame/drivers/amaticmg.cpp",

View File

@ -4,59 +4,120 @@
sp.ACE system by ACE
based roughly on the Mach2000 hardware used by Castle
skeleton driver!
Skeleton driver!
should all games have OKI roms? are most missing?
I think it was optional, some probably just use the AY..
Some games have OKI sample ROMs, others just use the AYs,
this depends on the additional plug-in boards.
We need to verify which is which as some samples could be missing
has an undumped 'reel processor' (68705 like Mach2000?)
Some manufacturers, such as PCP, also used this hardware with
different reel controllers etc.
based on internal accesses it seems to use a 6303Y (like Mach2000)
which does NOT have the same internal map as a 6303R
some ROMsets here contain a single larger ROM instead of 2 smaller
ones, these need verifying to make sure they contain unique data
and removing if they do not.
*/
#include "emu.h"
#include "cpu/m6800/m6801.h"
#include "machine/6821pia.h"
#include "machine/timer.h"
#include "machine/ace_sp_reelctrl.h"
#include "ace_sp_dmd.lh"
class ace_sp_state : public driver_device
{
public:
ace_sp_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu")
: driver_device(mconfig, type, tag)
, m_dmdram(*this, "dmdram")
, m_sevensegram(*this, "sevensegram")
, m_dmd(*this, "dotmatrix%u", 0U)
, m_maincpu(*this, "maincpu")
, m_reelctrl(*this, "reelctrl")
{ }
void ace_sp(machine_config &config);
void ace_sp_pcp(machine_config &config);
void init_ace_sp();
void init_ace_cr();
private:
void machine_start() override;
TIMER_DEVICE_CALLBACK_MEMBER(gen_fixfreq);
void ace_sp_map(address_map &map);
void dmd_w(offs_t offset, uint8_t data);
void sevenseg_w(offs_t offset, uint8_t data);
uint8_t serial_r(offs_t offset);
void serial_w(offs_t offset, uint8_t data);
required_shared_ptr<uint8_t> m_dmdram;
required_shared_ptr<uint8_t> m_sevensegram;
output_finder<1536> m_dmd;
// devices
required_device<cpu_device> m_maincpu;
required_device<hd6303y_cpu_device> m_maincpu;
required_device<ace_sp_reelctrl_base_device> m_reelctrl;
};
void ace_sp_state::machine_start()
{
m_dmd.resolve();
}
void ace_sp_state::dmd_w(offs_t offset, uint8_t data)
{
m_dmdram[offset] = data;
for (int i = 0; i < 8; i++)
m_dmd[(offset * 8) + i] = (data >> i) & 1;
}
void ace_sp_state::sevenseg_w(offs_t offset, uint8_t data)
{
m_sevensegram[offset] = data;
}
uint8_t ace_sp_state::serial_r(offs_t offset)
{
logerror("%s: serial_r\n", machine().describe_context());
return machine().rand();
}
void ace_sp_state::serial_w(offs_t offset, uint8_t data)
{
logerror("%s: serial_w %02x\n", machine().describe_context(), data);
}
void ace_sp_state::ace_sp_map(address_map &map)
{
/**** 6303Y internal area ****/
//----- 0x0000 - 0x0027 is internal registers -----
map(0x0000, 0x0027).ram();
map(0x0000, 0x0027).m(m_maincpu, FUNC(hd6303y_cpu_device::hd6301y_io));
//----- 0x0028 - 0x003f is external access -----
// 0x30 - reels write
// 0x30 - to/from reel MCU
// 0x31 - lamp high
// 0x32 - lamp low
// 0x33 - lamp stb
// 0x34 - shift stb
// 0x35 - shift clk
// 0x36 - sio
map(0x36, 0x36).ram().rw(FUNC(ace_sp_state::serial_r), FUNC(ace_sp_state::serial_w)); // 0x36 - sio
// 0x37 - watchdog?
map(0x0038, 0x003b).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
/* 0x3c */
@ -66,9 +127,11 @@ void ace_sp_state::ace_sp_map(address_map &map)
//----- 0x0040 - 0x013f is internal RAM (256 bytes) -----
map(0x0040, 0x013f).ram();
/**** regular map ****/
map(0x0140, 0x1fff).ram();
map(0x0140, 0x1eff).ram();
map(0x1f00, 0x1fbf).ram().w(FUNC(ace_sp_state::dmd_w)).share("dmdram"); // DMD controller shares the RAM? or does this get uploaded somewhere?
map(0x1fc0, 0x1fff).ram().w(FUNC(ace_sp_state::sevenseg_w)).share("sevensegram");
map(0x2000, 0xffff).rom();
}
@ -85,19 +148,45 @@ void ace_sp_state::ace_sp_portmap(address_map &map)
static INPUT_PORTS_START( ace_sp )
INPUT_PORTS_END
TIMER_DEVICE_CALLBACK_MEMBER(ace_sp_state::gen_fixfreq)
{
// 6303Y must take vector 0xffea periodically, as amongst other things it clears a counter
// in RAM which is increased in one of the other interrupts, with a time-out check which
// will cause the game to jump back to the reset vector if it fails
//
// adding code to the core to generate it at the moment then causes a stack overflow issue
// instead, which again the code checks for, and resets if the stack grows too large
//m_maincpu->force_irq2();
}
void ace_sp_state::ace_sp(machine_config &config)
{
HD6303Y(config, m_maincpu, 1000000);
HD6303Y(config, m_maincpu, 2000000); // unknown clock
m_maincpu->set_addrmap(AS_PROGRAM, &ace_sp_state::ace_sp_map);
PIA6821(config, "pia0", 0);
// unknown frequency
TIMER(config, "fixedfreq").configure_periodic(FUNC(ace_sp_state::gen_fixfreq), attotime::from_hz(50));
ACE_SP_REELCTRL(config, m_reelctrl, 2000000); // unknown clock
config.set_default_layout(layout_ace_sp_dmd);
}
void ace_sp_state::ace_sp_pcp(machine_config &config)
{
ace_sp(config);
ACE_SP_REELCTRL_PCP(config.replace(), m_reelctrl, 2000000);
}
#define SP_CBOWL_SOUND \
ROM_REGION( 0x100000, "oki", ROMREGION_ERASE00 ) \
ROM_LOAD( "cashbowlsnd1.bin", 0x0000, 0x80000, CRC(44e67cef) SHA1(3cfe48122da527e82f9058e0c5b81b5096bf4181) ) \
ROM_LOAD( "cashbowlsnd1.bin", 0x00000, 0x80000, CRC(44e67cef) SHA1(3cfe48122da527e82f9058e0c5b81b5096bf4181) ) \
ROM_LOAD( "cashbowlsnd2.bin", 0x80000, 0x80000, CRC(a28291a2) SHA1(c07b585cee89bc35c880d24eb6124796d6df423c) )
ROM_START( sp_cbowl )
ROM_REGION( 0x80000, "maincpu", 0 )
@ -122,7 +211,7 @@ ROM_END
ROM_START( sp_cbowlc )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "cb.bin", 0x0000, 0x010000, CRC(dc454e67) SHA1(57f470fbb44fe50c9c8068bbcdc9b41c617b0d82) ) // just a merged rom?
ROM_LOAD( "cb.bin", 0x00000, 0x10000, CRC(dc454e67) SHA1(57f470fbb44fe50c9c8068bbcdc9b41c617b0d82) ) // just a merged rom?
SP_CBOWL_SOUND
ROM_END
@ -326,7 +415,7 @@ ROM_END
#define SP_EMMRD_SOUND \
ROM_REGION( 0x100000, "oki", ROMREGION_ERASE00 ) \
ROM_LOAD( "edsnd1.bin", 0x0000, 0x80000, CRC(e91382d7) SHA1(499a0606e9bbabcf207c8778323899b7b81ae372) ) \
ROM_LOAD( "edsnd1.bin", 0x00000, 0x80000, CRC(e91382d7) SHA1(499a0606e9bbabcf207c8778323899b7b81ae372) ) \
ROM_LOAD( "edsnd2.bin", 0x80000, 0x80000, CRC(0e103080) SHA1(2dcfcb35d04f34e4bc6da32f2d23bd8685654f8e) )
@ -416,13 +505,13 @@ ROM_END
ROM_START( sp_emmrdn )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "0015rp50.bin", 0x0000, 0x010000, CRC(e37fa624) SHA1(3d7e09a259ed53a88cd4c9dc2e39b1aadb7049c7) ) // just a merged rom?
ROM_LOAD( "0015rp50.bin", 0x00000, 0x10000, CRC(e37fa624) SHA1(3d7e09a259ed53a88cd4c9dc2e39b1aadb7049c7) ) // just a merged rom?
SP_EMMRD_SOUND
ROM_END
ROM_START( sp_emmrdo )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "0015rp60.bin", 0x0000, 0x010000, CRC(b27378c8) SHA1(dd8dfc587d0c051d1144f4b0205bd8d4a28ceaaf) ) // just a merged rom?
ROM_LOAD( "0015rp60.bin", 0x00000, 0x10000, CRC(b27378c8) SHA1(dd8dfc587d0c051d1144f4b0205bd8d4a28ceaaf) ) // just a merged rom?
SP_EMMRD_SOUND
ROM_END
@ -636,13 +725,13 @@ ROM_END
ROM_START( sp_zigzgl )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "0013rp50.bin", 0x0000, 0x010000, CRC(5e7ba11a) SHA1(30477ff930e9f23bf32a5bdf8573fc47ed26773d) ) // just a merged rom?
ROM_LOAD( "0013rp50.bin", 0x00000, 0x10000, CRC(5e7ba11a) SHA1(30477ff930e9f23bf32a5bdf8573fc47ed26773d) ) // just a merged rom?
SP_ZIGZAG_SOUND
ROM_END
ROM_START( sp_zigzgm )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "0013rp60.bin", 0x0000, 0x010000, CRC(fb439994) SHA1(0820cf663ed5f9600d4e0313a7b3c6f8b28db471) ) // just a merged rom?
ROM_LOAD( "0013rp60.bin", 0x00000, 0x10000, CRC(fb439994) SHA1(0820cf663ed5f9600d4e0313a7b3c6f8b28db471) ) // just a merged rom?
SP_ZIGZAG_SOUND
ROM_END
@ -860,13 +949,13 @@ ROM_END
ROM_START( sp_goldm2 )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "0017rp40.bin", 0x0000, 0x010000, CRC(6cdd6c14) SHA1(ef57586a770c0693eb16b381356a90040ab000a6) ) // merged rom?
ROM_LOAD( "0017rp40.bin", 0x00000, 0x10000, CRC(6cdd6c14) SHA1(ef57586a770c0693eb16b381356a90040ab000a6) ) // merged rom?
SP_GOLDM_SOUND
ROM_END
ROM_START( sp_goldm3 )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "0017rp50.bin", 0x0000, 0x010000, CRC(56e77a5d) SHA1(5eae450637f5e57a08e67306d394a03ad18093aa) )
ROM_LOAD( "0017rp50.bin", 0x00000, 0x10000, CRC(56e77a5d) SHA1(5eae450637f5e57a08e67306d394a03ad18093aa) )
SP_GOLDM_SOUND
ROM_END
@ -1306,7 +1395,7 @@ ROM_END
#define SP_JURAS_SOUND \
ROM_REGION( 0x100000, "oki", ROMREGION_ERASE00 ) \
ROM_LOAD( "jt8_snd1.bin", 0x0000, 0x80000, CRC(54f02e21) SHA1(1f2142e3cad828f3f07b729ad8394392c3a5ef46) ) \
ROM_LOAD( "jt8_snd1.bin", 0x00000, 0x80000, CRC(54f02e21) SHA1(1f2142e3cad828f3f07b729ad8394392c3a5ef46) ) \
ROM_LOAD( "jt8_snd2.bin", 0x80000, 0x80000, CRC(6ae75d87) SHA1(f6a73c26f7715b2a2d69b05d7729571b05b2fdaa) )
ROM_START( sp_juras )
@ -1466,15 +1555,15 @@ ROM_END
/* not used, or missing? */
ROM_START( sp_playa )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "playitagain-v1-6pound1.bin", 0x0000, 0x8000, CRC(e377e7af) SHA1(4ca7c8ddd15791f4d45bebe861fd3c193c7227e0) )
ROM_LOAD( "playitagain-v1-6pound2.bin", 0x8000, 0x8000, CRC(7bab5c33) SHA1(46bc6fe7d5cdd998fc1e4e9a4b1a6a95cd160cf0) )
ROM_LOAD( "playitagain-v1-6pound2.bin", 0x0000, 0x8000, CRC(7bab5c33) SHA1(46bc6fe7d5cdd998fc1e4e9a4b1a6a95cd160cf0) )
ROM_LOAD( "playitagain-v1-6pound1.bin", 0x8000, 0x8000, CRC(e377e7af) SHA1(4ca7c8ddd15791f4d45bebe861fd3c193c7227e0) )
SP_PLAYA_SOUND
ROM_END
ROM_START( sp_playaa )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "575 pask p3.2.bin", 0x0000, 0x8000, CRC(f7d2d40d) SHA1(83e4e83217fef8d92bcba3edf1250d09243f9f79) )
ROM_LOAD( "575 pa p3.1.bin", 0x0000, 0x8000, CRC(9e51ff86) SHA1(a2da9eee6b5f7211296e8633e5ec8eeec8ec77fd) )
ROM_LOAD( "575 pa p3.1.bin", 0x8000, 0x8000, CRC(9e51ff86) SHA1(a2da9eee6b5f7211296e8633e5ec8eeec8ec77fd) )
SP_PLAYA_SOUND
ROM_END
@ -1537,7 +1626,7 @@ ROM_END
#define SP_SPELL_SOUND \
ROM_REGION( 0x100000, "oki", ROMREGION_ERASE00 ) \
ROM_LOAD( "spellboundsnd1.bin", 0x0000, 0x80000, CRC(ab462981) SHA1(a88728eb8c5dbf114007551c7b5d4eb06cc7eb0b) ) \
ROM_LOAD( "spellboundsnd1.bin", 0x00000, 0x80000, CRC(ab462981) SHA1(a88728eb8c5dbf114007551c7b5d4eb06cc7eb0b) ) \
ROM_LOAD( "spellboundsnd2.bin", 0x80000, 0x80000, CRC(9ada4413) SHA1(2dc9b42cdd3a64b5e5d3eab0d68b109258d12eda) )
ROM_START( sp_spell )
@ -1598,13 +1687,13 @@ ROM_END
ROM_START( sp_spelli )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "0009p5.bin", 0x0000, 0x010000, CRC(5d94418e) SHA1(92a9b6deed307b99bb57193d9974a0b4d76ee569) ) // merged rom
ROM_LOAD( "0009p5.bin", 0x00000, 0x10000, CRC(5d94418e) SHA1(92a9b6deed307b99bb57193d9974a0b4d76ee569) ) // merged rom
SP_SPELL_SOUND
ROM_END
ROM_START( sp_spellj )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "0009p6.bin", 0x0000, 0x010000, CRC(1b55acee) SHA1(8364cf5b1c1d50f10e1e80031e9b8a587ec0bd39) ) // merged rom
ROM_LOAD( "0009p6.bin", 0x00000, 0x10000, CRC(1b55acee) SHA1(8364cf5b1c1d50f10e1e80031e9b8a587ec0bd39) ) // merged rom
SP_SPELL_SOUND
ROM_END
@ -1980,13 +2069,13 @@ ROM_END
ROM_START( sp_tzfet )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "0011rp40.bin", 0x0000, 0x010000, CRC(80600391) SHA1(d45e909bfe26e18047ece19bb8004f14a3388427) ) // merged rom?
ROM_LOAD( "0011rp40.bin", 0x00000, 0x10000, CRC(80600391) SHA1(d45e909bfe26e18047ece19bb8004f14a3388427) ) // merged rom?
SP_TZFE_SOUND
ROM_END
ROM_START( sp_tzfeu )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "0011rp50.bin", 0x0000, 0x010000, CRC(0ad67cf0) SHA1(b4b436f1f0f0b9a0b50013f85c21f203bf8528d0) ) // merged rom
ROM_LOAD( "0011rp50.bin", 0x00000, 0x10000, CRC(0ad67cf0) SHA1(b4b436f1f0f0b9a0b50013f85c21f203bf8528d0) ) // merged rom
SP_TZFE_SOUND
ROM_END
@ -2114,7 +2203,7 @@ ROM_END
ROM_START( sp_brkbkd )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "0008p6.bin", 0x0000, 0x010000, CRC(4fc20e58) SHA1(4530998a60731283430801028a59b7a4fbd3f1bc) ) // merged rom
ROM_LOAD( "0008p6.bin", 0x00000, 0x10000, CRC(4fc20e58) SHA1(4530998a60731283430801028a59b7a4fbd3f1bc) ) // merged rom
SP_BRKBK_SOUND
ROM_END
@ -2427,56 +2516,56 @@ ROM_END
ROM_START( sp_donky )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "dd663p2b", 0x0000, 0x8000, CRC(49c60006) SHA1(9a4964df1238f267cdf05fa063f7de8b5716da10) )
ROM_LOAD( "dd663p2a", 0x0000, 0x8000, CRC(9a477e7e) SHA1(d6206495c1a75ac2c1ce51f24ca18898916b6e11) )
ROM_LOAD( "dd663p2a", 0x8000, 0x8000, CRC(9a477e7e) SHA1(d6206495c1a75ac2c1ce51f24ca18898916b6e11) )
SP_DONKY_SOUND
ROM_END
ROM_START( sp_donkya )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "dd663p2c", 0x0000, 0x8000, CRC(c482c400) SHA1(dc5087260772807725ce08e7fd89ee5c19406fe5) )
ROM_LOAD( "dd663p2a", 0x0000, 0x8000, CRC(9a477e7e) SHA1(d6206495c1a75ac2c1ce51f24ca18898916b6e11) )
ROM_LOAD( "dd663p2a", 0x8000, 0x8000, CRC(9a477e7e) SHA1(d6206495c1a75ac2c1ce51f24ca18898916b6e11) )
SP_DONKY_SOUND
ROM_END
ROM_START( sp_donkyb )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "dd663p2d", 0x0000, 0x8000, CRC(4fd3db89) SHA1(f1233adfbfd95c87ebf7706bb242b7297947699c) )
ROM_LOAD( "dd663p2a", 0x0000, 0x8000, CRC(9a477e7e) SHA1(d6206495c1a75ac2c1ce51f24ca18898916b6e11) )
ROM_LOAD( "dd663p2a", 0x8000, 0x8000, CRC(9a477e7e) SHA1(d6206495c1a75ac2c1ce51f24ca18898916b6e11) )
SP_DONKY_SOUND
ROM_END
ROM_START( sp_donkyc )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "dd663p2e", 0x0000, 0x8000, CRC(c2971f8f) SHA1(c14db5294c397148293c496d52ac0b41067952b2) )
ROM_LOAD( "dd663p2a", 0x0000, 0x8000, CRC(9a477e7e) SHA1(d6206495c1a75ac2c1ce51f24ca18898916b6e11) )
ROM_LOAD( "dd663p2a", 0x8000, 0x8000, CRC(9a477e7e) SHA1(d6206495c1a75ac2c1ce51f24ca18898916b6e11) )
SP_DONKY_SOUND
ROM_END
ROM_START( sp_donkyd )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "dd663p2f", 0x0000, 0x8000, CRC(05e1c1df) SHA1(c00fe8553eac50229dc6bf2a5016c353fcb61c82) )
ROM_LOAD( "dd663p2a", 0x0000, 0x8000, CRC(9a477e7e) SHA1(d6206495c1a75ac2c1ce51f24ca18898916b6e11) )
ROM_LOAD( "dd663p2a", 0x8000, 0x8000, CRC(9a477e7e) SHA1(d6206495c1a75ac2c1ce51f24ca18898916b6e11) )
SP_DONKY_SOUND
ROM_END
ROM_START( sp_donkye )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "dd663p2g", 0x0000, 0x8000, CRC(88a505d9) SHA1(0d10f8e102daddde840b582cb962270f6180a399) )
ROM_LOAD( "dd663p2a", 0x0000, 0x8000, CRC(9a477e7e) SHA1(d6206495c1a75ac2c1ce51f24ca18898916b6e11) )
ROM_LOAD( "dd663p2a", 0x8000, 0x8000, CRC(9a477e7e) SHA1(d6206495c1a75ac2c1ce51f24ca18898916b6e11) )
SP_DONKY_SOUND
ROM_END
ROM_START( sp_donkyf )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "dd663p2h", 0x0000, 0x8000, CRC(03f41a50) SHA1(907a947449a7dccfff00dca2536e0bc230b5771d) )
ROM_LOAD( "dd663p2a", 0x0000, 0x8000, CRC(9a477e7e) SHA1(d6206495c1a75ac2c1ce51f24ca18898916b6e11) )
ROM_LOAD( "dd663p2a", 0x8000, 0x8000, CRC(9a477e7e) SHA1(d6206495c1a75ac2c1ce51f24ca18898916b6e11) )
SP_DONKY_SOUND
ROM_END
ROM_START( sp_donkyg )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "dd663p2i", 0x0000, 0x8000, CRC(8eb0de56) SHA1(6411e9008b09f9387622911e09d954dc7e89c6cf) )
ROM_LOAD( "dd663p2a", 0x0000, 0x8000, CRC(9a477e7e) SHA1(d6206495c1a75ac2c1ce51f24ca18898916b6e11) )
ROM_LOAD( "dd663p2a", 0x8000, 0x8000, CRC(9a477e7e) SHA1(d6206495c1a75ac2c1ce51f24ca18898916b6e11) )
SP_DONKY_SOUND
ROM_END
@ -2500,7 +2589,7 @@ ROM_END
ROM_START( sp_festi )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "0001rp10.bin", 0x0000, 0x010000, CRC(e584c26e) SHA1(dc48e27895c5c0b2004f6bc74ec0bdfa24af9613) ) // merged rom
ROM_LOAD( "0001rp10.bin", 0x00000, 0x10000, CRC(e584c26e) SHA1(dc48e27895c5c0b2004f6bc74ec0bdfa24af9613) ) // merged rom
SP_FESTI_SOUND
ROM_END
@ -2771,7 +2860,7 @@ ROM_END
/* not used, or missing? */
ROM_START( sp_gol )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "gl706p04.bin", 0x0000, 0x010000, CRC(01a48714) SHA1(0a48cfad05905450aa2a7c9dc22f937377894ff0) ) // merged rom
ROM_LOAD( "gl706p04.bin", 0x00000, 0x10000, CRC(01a48714) SHA1(0a48cfad05905450aa2a7c9dc22f937377894ff0) ) // merged rom
SP_GOL_SOUND
ROM_END
@ -2840,26 +2929,26 @@ ROM_END
ROM_START( sp_goldse )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "724p2-0b.bin", 0x0000, 0x8000, CRC(39c3a458) SHA1(6fe06283e8d942c3fa851a29c069dbcf4a9f07a5) )
ROM_LOAD( "724p2-0a.bin", 0x0000, 0x8000, CRC(26c9e283) SHA1(7b817b89ff751c068de4c76ee1ddb68183bca5c8) )
ROM_LOAD( "724p2-0a.bin", 0x8000, 0x8000, CRC(26c9e283) SHA1(7b817b89ff751c068de4c76ee1ddb68183bca5c8) )
SP_GOLDS_SOUND
ROM_END
ROM_START( sp_goldsf )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "724p2-0z.bin", 0x0000, 0x8000, CRC(1219607f) SHA1(c5b4b92a237884df5cc4ca5d5563c9b66b183fa5) )
ROM_LOAD( "724p2-0a.bin", 0x0000, 0x8000, CRC(26c9e283) SHA1(7b817b89ff751c068de4c76ee1ddb68183bca5c8) )
ROM_LOAD( "724p2-0a.bin", 0x8000, 0x8000, CRC(26c9e283) SHA1(7b817b89ff751c068de4c76ee1ddb68183bca5c8) )
SP_GOLDS_SOUND
ROM_END
ROM_START( sp_goldsg )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "0021rp30.bin", 0x0000, 0x010000, CRC(3228013a) SHA1(dcf41ddd3003804062cde928bcb5bc409fa66c75) )
ROM_LOAD( "0021rp30.bin", 0x00000, 0x10000, CRC(3228013a) SHA1(dcf41ddd3003804062cde928bcb5bc409fa66c75) )
SP_GOLDS_SOUND
ROM_END
ROM_START( sp_goldsh )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "0022rp30.bin", 0x0000, 0x010000, CRC(28b80866) SHA1(9f8af3d5cb6a03cba5ba37f2177390eef2950eb4) )
ROM_LOAD( "0022rp30.bin", 0x00000, 0x10000, CRC(28b80866) SHA1(9f8af3d5cb6a03cba5ba37f2177390eef2950eb4) )
SP_GOLDS_SOUND
ROM_END
@ -2959,7 +3048,7 @@ ROM_END
/* not used, or missing? */
ROM_START( sp_lotto )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "sp705p14.bin", 0x0000, 0x010000, CRC(46a8a503) SHA1(39d40c6d34ec1879b037d13b47e648ae09f345d8) ) // merged rom
ROM_LOAD( "sp705p14.bin", 0x00000, 0x10000, CRC(46a8a503) SHA1(39d40c6d34ec1879b037d13b47e648ae09f345d8) ) // merged rom
SP_LOTTO_SOUND
ROM_END
@ -3060,7 +3149,7 @@ ROM_END
ROM_START( sp_megmog )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "0004p6.bin", 0x0000, 0x010000, CRC(fcfa212d) SHA1(968cc358450d85e6fd4e3086347be7d34d68e012) ) // merged rom
ROM_LOAD( "0004p6.bin", 0x00000, 0x10000, CRC(fcfa212d) SHA1(968cc358450d85e6fd4e3086347be7d34d68e012) ) // merged rom
SP_MEGMO_SOUND
ROM_END
@ -3287,13 +3376,13 @@ ROM_END
ROM_START( sp_onboxm )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "0016rp40.bin", 0x0000, 0x010000, CRC(591e3e24) SHA1(b147bfc19aa46eb3237b270d771031caaf978850) ) // merged rom
ROM_LOAD( "0016rp40.bin", 0x00000, 0x10000, CRC(591e3e24) SHA1(b147bfc19aa46eb3237b270d771031caaf978850) ) // merged rom
SP_ONBOX_SOUND
ROM_END
ROM_START( sp_onboxn )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "0016rp50.bin", 0x0000, 0x010000, CRC(73c5c449) SHA1(453969ec5c4fe1ce8f118110106e31126a358cda) ) // merged rom
ROM_LOAD( "0016rp50.bin", 0x00000, 0x10000, CRC(73c5c449) SHA1(453969ec5c4fe1ce8f118110106e31126a358cda) ) // merged rom
SP_ONBOX_SOUND
ROM_END
@ -3418,7 +3507,7 @@ ROM_END
ROM_START( sp_pistep )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD( "otp10.bin", 0x0000, 0x010000, CRC(8a9e40df) SHA1(be1c8c5733d65dbdfefcaeb35050d82d59c75450) ) // merged rom
ROM_LOAD( "otp10.bin", 0x00000, 0x10000, CRC(8a9e40df) SHA1(be1c8c5733d65dbdfefcaeb35050d82d59c75450) ) // merged rom
SP_PISTE_SOUND
ROM_END
@ -3781,10 +3870,10 @@ ROM_END
ROM_REGION( 0x100000, "oki", ROMREGION_ERASE00 ) \
/* actually I think this rom is just a bad dump, there is a rom which is the same in the JPM HW set, */ \
/* but twice the size. Also this isn't an oki rom! */ \
ROM_LOAD( "atw80snd.bin", 0x0000, 0x020000, CRC(b002e11c) SHA1(f7133f4bb8c31feaad0a7b9ee88749f9b7877575) )
ROM_LOAD( "atw80snd.bin", 0x00000, 0x20000, CRC(b002e11c) SHA1(f7133f4bb8c31feaad0a7b9ee88749f9b7877575) )
ROM_START( sp_atw )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "artwld80", 0x0000, 0x010000, CRC(3ff314c3) SHA1(345df80243953b35916449b0aa6ffaf9d3501d2b) ) // pre-decrypted? bootleg?
ROM_LOAD( "artwld80", 0x00000, 0x10000, CRC(3ff314c3) SHA1(345df80243953b35916449b0aa6ffaf9d3501d2b) ) // pre-decrypted? bootleg?
SP_ATW_SOUND
ROM_END
@ -3794,13 +3883,13 @@ ROM_END
ROM_START( sp_five )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "fn19.bin", 0x0000, 0x010000, CRC(4721ccf8) SHA1(a6b7b238df7e7cf45c049b4fb16bf0c05fb95b41) )
ROM_LOAD( "fn19.bin", 0x00000, 0x10000, CRC(4721ccf8) SHA1(a6b7b238df7e7cf45c049b4fb16bf0c05fb95b41) )
SP_FIVE_SOUND
ROM_END
ROM_START( sp_fivea )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "fn19p.bin", 0x0000, 0x010000, CRC(ac2de72f) SHA1(61263944fe29b5f5c79c987989a784b32700c902) )
ROM_LOAD( "fn19p.bin", 0x00000, 0x10000, CRC(ac2de72f) SHA1(61263944fe29b5f5c79c987989a784b32700c902) )
SP_FIVE_SOUND
ROM_END
@ -3811,19 +3900,19 @@ ROM_END
ROM_START( sp_crun )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "crun411.bin", 0x0000, 0x010000, CRC(74a69327) SHA1(087d791b8e5c43a9c614f5f4344ce2524a8c445d) )
ROM_LOAD( "crun411.bin", 0x00000, 0x10000, CRC(74a69327) SHA1(087d791b8e5c43a9c614f5f4344ce2524a8c445d) )
SP_CRUN_SOUND
ROM_END
ROM_START( sp_cruna )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "em111.bin", 0x0000, 0x010000, CRC(c1e9d4ec) SHA1(49eadcf7880d68c1559e94f4389eca739a3b04d7) )
ROM_LOAD( "em111.bin", 0x00000, 0x10000, CRC(c1e9d4ec) SHA1(49eadcf7880d68c1559e94f4389eca739a3b04d7) )
SP_CRUN_SOUND
ROM_END
ROM_START( sp_crunb )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "em111p.bin", 0x0000, 0x010000, CRC(bbe90c64) SHA1(5e65c318f14f7aa160f3d0daeb1f3038df162b65) )
ROM_LOAD( "em111p.bin", 0x00000, 0x10000, CRC(bbe90c64) SHA1(5e65c318f14f7aa160f3d0daeb1f3038df162b65) )
SP_CRUN_SOUND
ROM_END
@ -3839,7 +3928,7 @@ ROM_END
ROM_START( sp_roofa )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "034p1-2i.bin", 0x000000, 0x008000, CRC(a64797fc) SHA1(7437dc2e203efc525aab251da5196d31b95d159a) )
ROM_LOAD( "034p1-2i.bin", 0x0000, 0x8000, CRC(a64797fc) SHA1(7437dc2e203efc525aab251da5196d31b95d159a) )
ROM_LOAD( "034p1-2a.bin", 0x8000, 0x8000, NO_DUMP )
SP_ROOF_SOUND
ROM_END
@ -4419,11 +4508,6 @@ GAME( 199?, sp_tkpikd, sp_tkpik, ace_sp, ace_sp, ace_sp_state, init_ace_sp, R
GAME( 199?, sp_tkpike, sp_tkpik, ace_sp, ace_sp, ace_sp_state, init_ace_sp, ROT0, "Ace", "Take Your Pick (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
GAME( 199?, sp_tkpikf, sp_tkpik, ace_sp, ace_sp, ace_sp_state, init_ace_sp, ROT0, "Ace", "Take Your Pick (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
// not sure.. looks like 6303 code to me
GAME( 199?, sp_carry, 0, ace_sp, ace_sp, ace_sp_state, init_ace_sp, ROT0,"Pcp", "Carry On (Pcp) (sp.ACE?) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
GAME( 199?, sp_carrya, sp_carry, ace_sp, ace_sp, ace_sp_state, init_ace_sp, ROT0,"Pcp", "Carry On (Pcp) (sp.ACE?) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
// not sure.. looks like 6303 code to me
GAME( 199?, sp_front, 0, ace_sp, ace_sp, ace_sp_state, init_ace_sp, ROT0, "Bwb", "Final Frontier (Bwb) (sp.ACE?)",MACHINE_IS_SKELETON_MECHANICAL )
// not sure.. looks like 6303 code to me
GAME( 199?, sp_atw, 0, ace_sp, ace_sp, ace_sp_state, init_ace_sp, ROT0, "Crystal","Around The World In Eighty Days (Crystal) (sp.ACE?)",MACHINE_IS_SKELETON_MECHANICAL )
// not sure.. looks like 6303 code to me
GAME( 199?, sp_five, 0, ace_sp, ace_sp, ace_sp_state, init_ace_cr, ROT0, "Crystal","Fiver Fever (Crystal) (sp.ACE?) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
@ -4438,3 +4522,11 @@ GAME( 199?, sp_roof, 0, ace_sp, ace_sp, ace_sp_state, init_ace_sp, R
GAME( 199?, sp_roofa, sp_roof, ace_sp, ace_sp, ace_sp_state, init_ace_sp, ROT0, "Ace", "Thru' The Roof (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
GAME( 199?, sp_cpal, 0, ace_sp, ace_sp, ace_sp_state, init_ace_sp, ROT0, "Ace", "Caesars Palace (Ace) (sp.ACE?)",MACHINE_IS_SKELETON_MECHANICAL ) // was in an IMPACT set, might be a different game but CPU seems correct for here
// these show something
GAME( 199?, sp_carry, 0, ace_sp_pcp, ace_sp, ace_sp_state, init_ace_sp, ROT0,"Pcp", "Carry On (Pcp) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
GAME( 199?, sp_carrya, sp_carry, ace_sp_pcp, ace_sp, ace_sp_state, init_ace_sp, ROT0,"Pcp", "Carry On (Pcp) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
// boots to 'Fire Crak V1' (maybe DMD wasn't visible on this machine or this is mislabaled?)
GAME( 199?, sp_front, 0, ace_sp, ace_sp, ace_sp_state, init_ace_sp, ROT0, "Bwb", "Final Frontier (Bwb) (sp.ACE)",MACHINE_IS_SKELETON_MECHANICAL )

View File

@ -0,0 +1,39 @@
<?xml version="1.0"?>
<!--
license:CC0
-->
<mamelayout version="2">
<element name="dotmatrixdot">
<rect>
<color red="0" green="0" blue="0" />
<bounds left="-0.05" top="-0.05" right="1.05" bottom="1.05" />
</rect>
<disk>
<color state="1" red="1.0" green="1.0" blue="1.0" />
<color state="0" red="0.125" green="0.125" blue="0.125" />
</disk>
</element>
<group name="dmd">
<repeat count="24">
<param name="s" start="0" increment="64" />
<param name="y" start="0" increment="1" />
<repeat count="64">
<param name="n" start="~s~" increment="1" />
<param name="x" start="0" increment="1" />
<element name="dotmatrix~n~" ref="dotmatrixdot" state="0">
<bounds x="~x~" y="~y~" width="1" height="1" />
<color red="1.0" green="0.12" blue="0.12" />
</element>
</repeat>
</repeat>
</group>
<view name="AWP Simulated Video">
<group ref="dmd">
<bounds x="0" y="0" width="520" height="168" />
</group>
</view>
</mamelayout>

View File

@ -0,0 +1,63 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
// This device handles the reel controller boards for the sp.ACE system which were based around a 68705P3 MCU
// The PCP version is a reverse engineered clone of the original ACE one, created by PCP to get their own
// games on the platform. They are not fully compatible with each other.
#include "emu.h"
#include "ace_sp_reelctrl.h"
DEFINE_DEVICE_TYPE(ACE_SP_REELCTRL, ace_sp_reelctrl_device, "ace_sp_reelctrl", "ACE sp.ACE Reel Controller PCB")
DEFINE_DEVICE_TYPE(ACE_SP_REELCTRL_PCP, ace_sp_reelctrl_pcp_device, "ace_sp_reelctrl_pcp", "ACE sp.ACE Reel Controller PCB (PCP clone)")
ace_sp_reelctrl_base_device::ace_sp_reelctrl_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
: device_t(mconfig, type, tag, owner, clock)
, m_mcu(*this, "mcu")
{
}
ace_sp_reelctrl_device::ace_sp_reelctrl_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: ace_sp_reelctrl_base_device(mconfig, ACE_SP_REELCTRL, tag, owner, clock)
{
}
ace_sp_reelctrl_pcp_device::ace_sp_reelctrl_pcp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: ace_sp_reelctrl_base_device(mconfig, ACE_SP_REELCTRL_PCP, tag, owner, clock)
{
}
void ace_sp_reelctrl_base_device::device_start()
{
}
void ace_sp_reelctrl_base_device::device_reset()
{
}
void ace_sp_reelctrl_base_device::device_add_mconfig(machine_config &config)
{
M68705P3(config, m_mcu, DERIVED_CLOCK(1, 1));
}
ROM_START( ace_sp_reelctrl )
ROM_REGION16_BE( 0x0800, "mcu", 0 )
ROM_LOAD( "ace reel mcu v9 _space_.bin", 0, 0x0800, CRC(d7b91fe0) SHA1(44f78da8138caf4f79f1e8e9a2abe53d79c0fe79) ) // MC68705P3 internal ROM
ROM_END
const tiny_rom_entry *ace_sp_reelctrl_device::device_rom_region() const
{
return ROM_NAME(ace_sp_reelctrl);
}
ROM_START( ace_sp_reelctrl_pcp )
ROM_REGION16_BE( 0x0800, "mcu", 0 )
ROM_LOAD( "pcp reel mcu fcr 1 _space_.bin", 0, 0x0800, CRC(1c8019bf) SHA1(d1d6ea68d9aace4a4ea0de212f17426bccfe5856) ) // MC68705P3 internal ROM
ROM_END
const tiny_rom_entry *ace_sp_reelctrl_pcp_device::device_rom_region() const
{
return ROM_NAME(ace_sp_reelctrl_pcp);
}

View File

@ -0,0 +1,54 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
#ifndef MAME_MACHINE_ACE_SP_REELCTRL_H
#define MAME_MACHINE_ACE_SP_REELCTRL_H
#pragma once
#include "cpu/m6805/m68705.h"
class ace_sp_reelctrl_base_device : public device_t
{
public:
protected:
ace_sp_reelctrl_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_add_mconfig(machine_config &config) override;
private:
required_device<m68705p_device> m_mcu;
};
class ace_sp_reelctrl_device : public ace_sp_reelctrl_base_device
{
public:
ace_sp_reelctrl_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual const tiny_rom_entry *device_rom_region() const override;
private:
};
class ace_sp_reelctrl_pcp_device : public ace_sp_reelctrl_base_device
{
public:
ace_sp_reelctrl_pcp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual const tiny_rom_entry *device_rom_region() const override;
private:
};
DECLARE_DEVICE_TYPE(ACE_SP_REELCTRL, ace_sp_reelctrl_device)
DECLARE_DEVICE_TYPE(ACE_SP_REELCTRL_PCP, ace_sp_reelctrl_pcp_device)
#endif // #define MAME_MACHINE_ACE_SP_REELCTRL_H