diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 66f144dac6e..92ef9c7a8b3 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -41164,6 +41164,9 @@ jwildb52a // (c) 199? Sigma jwildb52h // (c) 199? Sigma s8waysfc // (c) 1989 Sigma +@source:sigma/sigmab88.cpp +cool104 + @source:sigma/sigmab98.cpp animalc // (c) 2000 Sammy b3rinsya // b9805 (c) 1997 Sigma diff --git a/src/mame/sigma/sigmab88.cpp b/src/mame/sigma/sigmab88.cpp new file mode 100644 index 00000000000..457afbeea95 --- /dev/null +++ b/src/mame/sigma/sigmab88.cpp @@ -0,0 +1,90 @@ +// license:BSD-3-Clause +// copyright-holders:David Haywood + +// HD641016 + HD63484 + YM3812 +// seems very much like B52, but reworked to use a newer CPU so the skeleton hookups are copy+pasted from there + +#include "emu.h" + +#include "cpu/h16/hd641016.h" +#include "sound/ymopl.h" +#include "video/hd63484.h" + +#include "emupal.h" +#include "screen.h" +#include "speaker.h" + +namespace { + +class sigmab88_state : public driver_device +{ +public: + sigmab88_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_palette(*this, "palette") + { + } + + void sigmab88(machine_config &config); + +private: + void h16_map(address_map &map); + void hd63484_map(address_map &map); + + required_device m_maincpu; + required_device m_palette; +}; + + +void sigmab88_state::h16_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom().region("maincpu", 0); + map(0xc00000, 0xc7ffff).rom().region("maincpu", 0); +} + +void sigmab88_state::hd63484_map(address_map &map) +{ + map(0x00000, 0x1ffff).ram(); +} + +static INPUT_PORTS_START(sigmab88) +INPUT_PORTS_END + +void sigmab88_state::sigmab88(machine_config &config) +{ + HD641016(config, m_maincpu, XTAL(20'000'000)/2); + m_maincpu->set_addrmap(AS_PROGRAM, &sigmab88_state::h16_map); + + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(1024, 1024); + screen.set_visarea(0, 544-1, 0, 436-1); + screen.set_screen_update("hd63484", FUNC(hd63484_device::update_screen)); + screen.set_palette(m_palette); + + HD63484(config, "hd63484", XTAL(8'000'000)).set_addrmap(0, &sigmab88_state::hd63484_map); + + PALETTE(config, m_palette).set_entries(16); + + YM3812(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0); + + SPEAKER(config, "mono").front_center(); +} + +ROM_START( cool104 ) + ROM_REGION(0x80000, "maincpu", 0) + ROM_LOAD16_BYTE("wwp2080-7213-1.bin", 0x00000, 0x40000, CRC(95b4b518) SHA1(1ac64131508999a5206a5b3e3efbc965419eb247)) + ROM_LOAD16_BYTE("wwp2080-7213-2.bin", 0x00001, 0x40000, CRC(3489277d) SHA1(c51e165d6382f9b709f4b0070a5a43aa519cb0d6)) + + ROM_REGION(0x100000, "data", 0) // does this map to CPU space? + ROM_LOAD16_BYTE("grp0301-010-1.bin", 0x00000, 0x80000, CRC(fc00a817) SHA1(30f9d6ce9091e35e341cc6e57765f97453aa863f)) + ROM_LOAD16_BYTE("grp0301-010-2.bin", 0x00001, 0x80000, CRC(a5b19862) SHA1(6552bcd481ba807c66c1b20f6809dbd4d886183a)) + + // should this have a colour PROM like b52? +ROM_END + +} // anonymous namespace + +GAME( 199?, cool104, 0, sigmab88, sigmab88, sigmab88_state, empty_init, ROT0, "Sigma", "Cool 104", MACHINE_IS_SKELETON )