diff --git a/.gitattributes b/.gitattributes
index 3a90ade9fda..f9177365bb4 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -146,6 +146,8 @@ hash/ql_cass.xml svneol=native#text/xml
hash/rainbow.xml svneol=native#text/xml
hash/rx78.xml svneol=native#text/xml
hash/sage2.xml svneol=native#text/xml
+hash/samcoupe_cass.xml svneol=native#text/xml
+hash/samcoupe_flop.xml svneol=native#text/xml
hash/sat_cart.xml svneol=native#text/xml
hash/saturn.xml svneol=native#text/xml
hash/scv.xml svneol=native#text/xml
@@ -160,6 +162,7 @@ hash/socrates.xml svneol=native#text/xml
hash/softwarelist.dtd svneol=native#text/plain
hash/sorcerer_cart.xml svneol=native#text/xml
hash/spectrum.xml svneol=native#text/xml
+hash/spectrum_cass.xml svneol=native#text/xml
hash/st.xml svneol=native#text/xml
hash/studio2.xml svneol=native#text/xml
hash/stv.xml svneol=native#text/xml
diff --git a/hash/samcoupe_cass.xml b/hash/samcoupe_cass.xml
new file mode 100644
index 00000000000..369604e19b1
--- /dev/null
+++ b/hash/samcoupe_cass.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+ Snare
+ 1992
+ Enigma Software Developments
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hash/samcoupe_flop.xml b/hash/samcoupe_flop.xml
new file mode 100644
index 00000000000..6c9b0f4ac08
--- /dev/null
+++ b/hash/samcoupe_flop.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+ Manic Miner (2 Level Demo)
+ 1991
+ Revelation Software / Software Projects
+
+
+
+
+
+
+
+
+
+
+
diff --git a/hash/spectrum_cass.xml b/hash/spectrum_cass.xml
new file mode 100644
index 00000000000..3740751f8cb
--- /dev/null
+++ b/hash/spectrum_cass.xml
@@ -0,0 +1,688 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Dizzy - The Ultimate Cartoon Adventure (set 1)
+ 1987
+ Codemasters
+
+
+
+
+
+
+
+
+
+ Dizzy - The Ultimate Cartoon Adventure (set 2)
+ 1987
+ Codemasters
+
+
+
+
+
+
+
+
+
+ Dizzy - The Ultimate Cartoon Adventure (Cracked, Bill Gilbert 1988, 128 Compatible)
+ 1987
+ Codemasters
+
+
+
+
+
+
+
+
+
+
+ Dizzy - The Ultimate Cartoon Adventure (set 3, hacked?)
+ 1987
+ Codemasters
+
+
+
+
+
+
+
+
+
+ Dizzy II - Treasure Island Dizzy (set 1)
+ 1988
+ Codemasters
+
+
+
+
+
+
+
+
+
+ Dizzy II - Treasure Island Dizzy (set 2)
+ 1988
+ Codemasters
+
+
+
+
+
+
+
+
+
+ Dizzy III - Fantasy World Dizzy (set 1)
+ 1989
+ Codemasters
+
+
+
+
+
+
+
+
+
+ Dizzy III - Fantasy World Dizzy (set 2)
+ 1989
+ Codemasters
+
+
+
+
+
+
+
+
+ Dizzy IV - Magicland Dizzy (set 1)
+ 1989
+ Codemasters
+
+
+
+
+
+
+
+
+ Dizzy V - Spellbound Dizzy (set 1)
+ 1991
+ Codemasters
+
+
+
+
+
+
+
+
+ Dizzy VI - Prince Of The Yolkfolk (set 1)
+ 1991
+ Codemasters
+
+
+
+
+
+
+
+
+ Dizzy VII - Crystal Kingdom Dizzy (set 1)
+ 1992
+ Codemasters
+
+
+
+
+
+
+
+
+ Dizzy VII - Crystal Kingdom Dizzy (set 2)
+ 1992
+ Codemasters
+
+
+
+
+
+
+
+
+ Dizzy VII - Crystal Kingdom Dizzy (set 3)
+ 1992
+ Codemasters
+
+
+
+
+
+
+
+
+ Dizzy VII - Crystal Kingdom Dizzy (set 4)
+ 1992
+ Codemasters
+
+
+
+
+
+
+
+
+ Fast Food Dizzy (set 1)
+ 1989
+ Codemasters
+
+
+
+
+
+
+
+
+ Fast Food Dizzy (set 2)
+ 1989
+ Codemasters
+
+
+
+
+
+
+
+
+ Fast Food Dizzy (set 3)
+ 1989
+ Codemasters
+
+
+
+
+
+
+
+
+ Fast Food Dizzy (set 4)
+ 1989
+ Codemasters
+
+
+
+
+
+
+
+
+ Kwik Snax Dizzy (set 1)
+ 1990
+ Codemasters
+
+
+
+
+
+
+
+
+ Kwik Snax Dizzy (set 2)
+ 1990
+ Codemasters
+
+
+
+
+
+
+
+
+ Kwik Snax Dizzy (set 3)
+ 1990
+ Codemasters
+
+
+
+
+
+
+
+
+ Panic Dizzy (set 1)
+ 1991
+ Codemasters
+
+
+
+
+
+
+
+
+ Panic Dizzy (set 2)
+ 1991
+ Codemasters
+
+
+
+
+
+
+
+
+ Dizzy Down The Rapids
+ 1991
+ Codemasters
+
+
+
+
+
+
+
+
+
+
+
+ Batman (set 1)
+ 1986
+ Ocean
+
+
+
+
+
+
+
+
+
+ Batman (set 2)
+ 1986
+ Ocean
+
+
+
+
+
+
+
+
+
+ Batman (set 3)
+ 1986
+ Ocean
+
+
+
+
+
+
+
+
+
+ Batman (set 4)
+ 1986
+ Ocean
+
+
+
+
+
+
+
+
+
+ Batman (set 5)
+ 1986
+ Ocean
+
+
+
+
+
+
+
+
+
+ Batman (set 6)
+ 1986
+ Ocean
+
+
+
+
+
+
+
+
+
+ Batman (set 7)
+ 1986
+ Ocean
+
+
+
+
+
+
+
+
+
+ Batman (set 8)
+ 1986
+ Ocean
+
+
+
+
+
+
+
+
+
+ Batman (set 9)
+ 1986
+ Ocean
+
+
+
+
+
+
+
+
+
+
+
+ Snare
+ 1992
+ Enigma Software Developments
+
+
+
+
+
+
+
+
+
+ Bite The Dust
+ 1990
+ Crash Magazine
+
+
+
+
+
+
+
+
+ Specventure (set 1)
+ 1986
+ Mastertronic
+
+
+
+
+
+
+
+
+ Specventure (set 2)
+ 1986
+ Mastertronic
+
+
+
+
+
+
+
+
+ Pac-Man (set 1)
+ 1983
+ Atarisoft
+
+
+
+
+
+
+
+
+ Pac-Man (set 2)
+ 1983
+ Atarisoft
+
+
+
+
+
+
+
+
+ Pac-Man (set 3)
+ 1983
+ Atarisoft
+
+
+
+
+
+
+
+
+ Ms. Pac-Man (set 1)
+ 1984
+ Atarisoft
+
+
+
+
+
+
+
+
+ Ms. Pac-Man (set 2)
+ 1984
+ Atarisoft
+
+
+
+
+
+
+
+
+
+ Bomb Fusion (set 1)
+ 1989
+ Virgin Mastertronic
+
+
+
+
+
+
+
+
+
+ Bomb Fusion (set 2, copy?)
+ 1989
+ Virgin Mastertronic
+
+
+
+
+
+
+
+
+ Bomb Fusion (set 3)
+ 1989
+ Virgin Mastertronic
+
+
+
+
+
+
+
+
+ Bomb Fusion (set 4)
+ 1989
+ Virgin Mastertronic
+
+
+
+
+
+
+
+
+ Brainstorm (Pete Cooke) (set 1)
+ 1987
+ Firebird Software
+
+
+
+
+
+
+
+
+
+ Brainstorm (Pete Cooke) (set 2)
+ 1987
+ Firebird Software
+
+
+
+
+
+
+
+
+ Brainstorm (Pete Cooke) (set 3)
+ 1987
+ Firebird Software
+
+
+
+
+
+
+
+
+ Brainstorm (Pete Cooke) (set 4)
+ 1987
+ Firebird Software
+
+
+
+
+
+
+
+
+ Brain Storm (set 1)
+ 1985
+ Bubblebus Software
+
+
+
+
+
+
+
+
+ Brain Storm (set 2)
+ 1985
+ Bubblebus Software
+
+
+
+
+
+
+
+
+ Brain Storm (Micromega, 16k)
+ 1983
+ Micromega
+
+
+
+
+
+
+
+
+
+ Earth Shaker (set 1)
+ 1990
+ Michael Batty
+
+
+
+
+
+
+
+
+ Earth Shaker (set 2)
+ 1990
+ Michael Batty
+
+
+
+
+
+
+
+
+
+ Earth Shaker (set 3) (48K)
+ 1990
+ Michael Batty
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mess/drivers/samcoupe.c b/src/mess/drivers/samcoupe.c
index d3c95e80a18..2ea693d7a4c 100644
--- a/src/mess/drivers/samcoupe.c
+++ b/src/mess/drivers/samcoupe.c
@@ -295,10 +295,10 @@ WRITE8_MEMBER(samcoupe_state::samcoupe_lpt2_strobe_w)
***************************************************************************/
static ADDRESS_MAP_START( samcoupe_mem, AS_PROGRAM, 8, samcoupe_state )
- AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1")
- AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3")
- AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4")
+ AM_RANGE(0x0000, 0x3fff) AM_RAM AM_READWRITE(sam_bank1_r, sam_bank1_w) // AM_RAMBANK("bank1")
+ AM_RANGE(0x4000, 0x7fff) AM_RAM AM_READWRITE(sam_bank2_r, sam_bank2_w) // AM_RAMBANK("bank2")
+ AM_RANGE(0x8000, 0xbfff) AM_RAM AM_READWRITE(sam_bank3_r, sam_bank3_w) // AM_RAMBANK("bank3")
+ AM_RANGE(0xc000, 0xffff) AM_RAM AM_READWRITE(sam_bank4_r, sam_bank4_w) // AM_RAMBANK("bank4")
ADDRESS_MAP_END
static ADDRESS_MAP_START( samcoupe_io, AS_IO, 8, samcoupe_state )
@@ -505,7 +505,7 @@ static const cassette_interface samcoupe_cassette_interface =
tzx_cassette_formats,
NULL,
(cassette_state)(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED),
- NULL,
+ "samcoupe_cass",
NULL
};
@@ -544,9 +544,12 @@ static MACHINE_CONFIG_START( samcoupe, samcoupe_state )
MCFG_CENTRONICS_PRINTER_ADD("lpt2", standard_centronics)
MCFG_MSM6242_ADD("sambus_clock", samcoupe_rtc_intf)
MCFG_CASSETTE_ADD(CASSETTE_TAG, samcoupe_cassette_interface)
+ MCFG_SOFTWARE_LIST_ADD("cass_list","samcoupe_cass")
+
MCFG_WD1772x_ADD("wd1772", SAMCOUPE_XTAL_X1/3)
MCFG_FLOPPY_DRIVE_ADD("fd0", samcoupe_floppies, "35dd", 0, samcoupe_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD("fd1", samcoupe_floppies, "35dd", 0, samcoupe_floppy_formats)
+ MCFG_SOFTWARE_LIST_ADD("flop_list","samcoupe_flop")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/spectrum.c b/src/mess/drivers/spectrum.c
index 73cbea395ca..5e65dd7d439 100644
--- a/src/mess/drivers/spectrum.c
+++ b/src/mess/drivers/spectrum.c
@@ -670,7 +670,7 @@ static const cassette_interface spectrum_cassette_interface =
tzx_cassette_formats,
NULL,
(cassette_state)(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED),
- NULL,
+ "spectrum_cass",
NULL
};
@@ -738,6 +738,7 @@ MACHINE_CONFIG_START( spectrum_common, spectrum_state )
MCFG_SNAPSHOT_ADD("snapshot", spectrum, "ach,frz,plusd,prg,sem,sit,sna,snp,snx,sp,z80,zx", 0)
MCFG_QUICKLOAD_ADD("quickload", spectrum, "raw,scr", 2) // The delay prevents the screen from being cleared by the RAM test at boot
MCFG_CASSETTE_ADD( CASSETTE_TAG, spectrum_cassette_interface )
+ MCFG_SOFTWARE_LIST_ADD("cass_list","spectrum_cass")
/* cartridge */
MCFG_CARTSLOT_ADD("cart")
diff --git a/src/mess/includes/samcoupe.h b/src/mess/includes/samcoupe.h
index 3fd214317e6..8b2cb1a2a7c 100644
--- a/src/mess/includes/samcoupe.h
+++ b/src/mess/includes/samcoupe.h
@@ -35,7 +35,17 @@ class samcoupe_state : public driver_device
{
public:
samcoupe_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) { }
+ : driver_device(mconfig, type, tag)
+ {
+ sam_bank_read_ptr[0] = NULL;
+ sam_bank_write_ptr[0] = NULL;
+ sam_bank_read_ptr[1] = NULL;
+ sam_bank_write_ptr[1] = NULL;
+ sam_bank_read_ptr[2] = NULL;
+ sam_bank_write_ptr[2] = NULL;
+ sam_bank_read_ptr[3] = NULL;
+ sam_bank_write_ptr[3] = NULL;
+ }
virtual void video_start();
@@ -92,6 +102,19 @@ public:
DECLARE_WRITE8_MEMBER(samcoupe_lpt2_strobe_w);
DECLARE_READ8_MEMBER(samcoupe_rtc_r);
DECLARE_WRITE8_MEMBER(samcoupe_rtc_w);
+
+ DECLARE_READ8_MEMBER(sam_bank1_r);
+ DECLARE_WRITE8_MEMBER(sam_bank1_w);
+ DECLARE_READ8_MEMBER(sam_bank2_r);
+ DECLARE_WRITE8_MEMBER(sam_bank2_w);
+ DECLARE_READ8_MEMBER(sam_bank3_r);
+ DECLARE_WRITE8_MEMBER(sam_bank3_w);
+ DECLARE_READ8_MEMBER(sam_bank4_r);
+ DECLARE_WRITE8_MEMBER(sam_bank4_w);
+
+ UINT8* sam_bank_read_ptr[4];
+ UINT8* sam_bank_write_ptr[4];
+
};
diff --git a/src/mess/machine/samcoupe.c b/src/mess/machine/samcoupe.c
index d878cee0739..162160acc63 100644
--- a/src/mess/machine/samcoupe.c
+++ b/src/mess/machine/samcoupe.c
@@ -22,11 +22,79 @@
MEMORY BANKING
***************************************************************************/
+READ8_MEMBER(samcoupe_state::sam_bank1_r)
+{
+ if (sam_bank_read_ptr[0])
+ return sam_bank_read_ptr[0][offset];
+
+ return 0xff;
+}
+
+WRITE8_MEMBER(samcoupe_state::sam_bank1_w)
+{
+ if (sam_bank_write_ptr[0])
+ sam_bank_write_ptr[0][offset] = data;
+}
+
+
+READ8_MEMBER(samcoupe_state::sam_bank2_r)
+{
+ if (sam_bank_read_ptr[1])
+ return sam_bank_read_ptr[1][offset];
+
+ return 0xff;
+}
+
+WRITE8_MEMBER(samcoupe_state::sam_bank2_w)
+{
+ if (sam_bank_write_ptr[1])
+ sam_bank_write_ptr[1][offset] = data;
+}
+
+
+READ8_MEMBER(samcoupe_state::sam_bank3_r)
+{
+ if (sam_bank_read_ptr[2])
+ return sam_bank_read_ptr[2][offset];
+
+ return 0xff;
+}
+
+WRITE8_MEMBER(samcoupe_state::sam_bank3_w)
+{
+ if (sam_bank_write_ptr[2])
+ sam_bank_write_ptr[2][offset] = data;
+}
+
+
+READ8_MEMBER(samcoupe_state::sam_bank4_r)
+{
+ if (sam_bank_read_ptr[3])
+ return sam_bank_read_ptr[3][offset];
+
+ return 0xff;
+}
+
+WRITE8_MEMBER(samcoupe_state::sam_bank4_w)
+{
+ if (sam_bank_write_ptr[3])
+ sam_bank_write_ptr[3][offset] = data;
+}
+
static void samcoupe_update_bank(address_space &space, int bank_num, UINT8 *memory, int is_readonly)
{
+ samcoupe_state *state = space.machine().driver_data();
+
+ state->sam_bank_read_ptr[bank_num-1] = memory;
+ if (!is_readonly)
+ state->sam_bank_write_ptr[bank_num-1] = memory;
+ else
+ state->sam_bank_write_ptr[bank_num-1] = NULL;
+
+ // installing banks on the fly is too slow (20% speed in Manic Miner gameplay vs 300% speed)
+#if 0
char bank[10];
sprintf(bank,"bank%d",bank_num);
- samcoupe_state *state = space.machine().driver_data();
if (memory)
{
state->membank(bank)->set_base(memory);
@@ -39,6 +107,7 @@ static void samcoupe_update_bank(address_space &space, int bank_num, UINT8 *memo
} else {
space.nop_readwrite(((bank_num-1) * 0x4000), ((bank_num-1) * 0x4000) + 0x3FFF);
}
+#endif
}