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 }