From b29b84dd779070e753d8e5eff6f2f548e616ef6a Mon Sep 17 00:00:00 2001 From: Robbbert Date: Tue, 25 Sep 2012 12:10:15 +0000 Subject: [PATCH] SPECTRA - wip --- src/mame/drivers/spectra.c | 70 +++++++++++++++++++++++++++++++++----- 1 file changed, 61 insertions(+), 9 deletions(-) diff --git a/src/mame/drivers/spectra.c b/src/mame/drivers/spectra.c index 9428a1034f9..694d2b08463 100644 --- a/src/mame/drivers/spectra.c +++ b/src/mame/drivers/spectra.c @@ -1,26 +1,40 @@ /****************************************************************************************** - Pinball - Valley Spectra IV - ----------------- - Rotating game, like Midway's "Rotation VIII". + Pinball + Valley Spectra IV + + Rotating game, like Midway's "Rotation VIII". + + Schematic and PinMAME used as references. + + *******************************************************************************************/ -#include "emu.h" +#include "machine/genpin.h" #include "cpu/m6502/m6502.h" +#include "machine/6532riot.h" +#include "machine/nvram.h" +//#include "spectra.lh" + class spectra_state : public driver_device { public: spectra_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu") + m_maincpu(*this, "maincpu"), + m_samples(*this, "samples") { } + DECLARE_READ8_MEMBER(porta_r); + DECLARE_READ8_MEMBER(portb_r); + DECLARE_WRITE8_MEMBER(porta_w); + DECLARE_WRITE8_MEMBER(portb_w); protected: // devices required_device m_maincpu; + required_device m_samples; // driver_device overrides virtual void machine_reset(); @@ -32,8 +46,9 @@ public: static ADDRESS_MAP_START( spectra_map, AS_PROGRAM, 8, spectra_state ) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0xfff) - AM_RANGE(0x0000, 0x017f) AM_RAM - //AM_RANGE(0x0180, 0x019f) riot device + AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("nvram") // battery backed, 2x 5101L + AM_RANGE(0x0100, 0x017f) AM_RAM // RIOT RAM + AM_RANGE(0x0180, 0x019f) AM_DEVREADWRITE_LEGACY("riot", riot6532_r, riot6532_w) AM_RANGE(0x0400, 0x0fff) AM_ROM ADDRESS_MAP_END @@ -48,10 +63,46 @@ DRIVER_INIT_MEMBER(spectra_state,spectra) { } +READ8_MEMBER( spectra_state::porta_r ) +{printf("ReadA "); + return 0; +} + +READ8_MEMBER( spectra_state::portb_r ) +{printf("ReadB "); + return 0; +} + +WRITE8_MEMBER( spectra_state::porta_w ) +{printf("A=%X ",data); +} + +WRITE8_MEMBER( spectra_state::portb_w ) +{printf("B=%X ",data); +} + + +static const riot6532_interface riot6532_intf = +{ + DEVCB_DRIVER_MEMBER(spectra_state, porta_r), // port a in + DEVCB_DRIVER_MEMBER(spectra_state, portb_r), // port b in + DEVCB_DRIVER_MEMBER(spectra_state, porta_w), // port a out + DEVCB_DRIVER_MEMBER(spectra_state, portb_w), // port b in + DEVCB_CPU_INPUT_LINE("maincpu", M6502_IRQ_LINE) // interrupt +}; + static MACHINE_CONFIG_START( spectra, spectra_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", M6502, 3579545/4) + MCFG_CPU_ADD("maincpu", M6502, 3579545/4) // actually a 6503 MCFG_CPU_PROGRAM_MAP(spectra_map) + MCFG_RIOT6532_ADD("riot", 3579545/4, riot6532_intf) // R6532 + MCFG_NVRAM_ADD_0FILL("nvram") + + /* Video */ + //MCFG_DEFAULT_LAYOUT(layout_spectra) + + /* Sound */ + MCFG_FRAGMENT_ADD( genpin_audio ) MACHINE_CONFIG_END /*-------------------------------- @@ -60,6 +111,7 @@ MACHINE_CONFIG_END ROM_START(spectra) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("spect_u5.dat", 0x0400, 0x0400, CRC(49e0759f) SHA1(c3badc90ff834cbc92d8c519780069310c2b1507)) + // pinmame has a different u4 rom: CRC(b58f1205) SHA1(9578fd89485f3f560789cb0f24c7116e4bc1d0da) ROM_LOAD("spect_u4.dat", 0x0800, 0x0400, BAD_DUMP CRC(e6519689) SHA1(06ef3d349ea27a072889b7c379f258d29b7217be)) ROM_LOAD("spect_u3.dat", 0x0c00, 0x0400, CRC(9ca7510f) SHA1(a87849f16903836158063d593bb4a2e90c7473c8)) ROM_END