diff --git a/src/mame/drivers/gunbustr.c b/src/mame/drivers/gunbustr.c index 2248de3f19c..281f42ba791 100644 --- a/src/mame/drivers/gunbustr.c +++ b/src/mame/drivers/gunbustr.c @@ -48,7 +48,7 @@ #include "cpu/m68000/m68000.h" #include "video/taitoic.h" #include "audio/taitosnd.h" -#include "machine/eeprom.h" +#include "machine/eepromdev.h" #include "sound/es5506.h" #include "includes/taito_f3.h" #include "audio/taito_en.h" @@ -115,9 +115,10 @@ popmessage(t); if (ACCESSING_BITS_0_7) { - eeprom_set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); - eeprom_write_bit(data & 0x40); - eeprom_set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE); + const device_config *device = devtag_get_device(space->machine, "eeprom"); + eepromdev_set_clock_line(device, (data & 0x20) ? ASSERT_LINE : CLEAR_LINE); + eepromdev_write_bit(device, data & 0x40); + eepromdev_set_cs_line(device, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE); return; } return; @@ -203,7 +204,7 @@ static INPUT_PORTS_START( gunbustr ) PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL) + PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("eeprom", eepromdev_read_bit) PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) @@ -324,19 +325,6 @@ static const eeprom_interface gunbustr_eeprom_interface = "0100110000", /* lock command */ }; -static NVRAM_HANDLER( gunbustr ) -{ - if (read_or_write) - eeprom_save(file); - else { - eeprom_init(machine, &gunbustr_eeprom_interface); - if (file) - eeprom_load(file); - else - eeprom_set_data(default_eeprom,128); /* Default the gun setup values */ - } -} - static MACHINE_DRIVER_START( gunbustr ) /* basic machine hardware */ @@ -344,7 +332,7 @@ static MACHINE_DRIVER_START( gunbustr ) MDRV_CPU_PROGRAM_MAP(gunbustr_map) MDRV_CPU_VBLANK_INT("screen", gunbustr_interrupt) /* VBL */ - MDRV_NVRAM_HANDLER(gunbustr) + MDRV_EEPROM_ADD("eeprom", gunbustr_eeprom_interface) /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) @@ -395,6 +383,9 @@ ROM_START( gunbustr ) ROM_RELOAD(0x400000,0x100000) ROM_LOAD16_BYTE( "d27-09.bin", 0x200000, 0x100000, CRC(3e060304) SHA1(c4da4a94c168c3a454409d758c3ed45babbab170) ) // CA, CB ROM_LOAD16_BYTE( "d27-10.bin", 0x600000, 0x100000, CRC(ed894fe1) SHA1(5bf2fb6abdcf25bc525a2c3b29dbf7aca0b18fea) ) // -std- + + ROM_REGION16_BE( 0x80, "eeprom", 0 ) + ROM_LOAD16_WORD( "eeprom-gunbustr.bin", 0x0000, 0x0080, CRC(af7dc017) SHA1(5ff106cccd2679025cdd81fbc133d32148e2818c) ) ROM_END static READ32_HANDLER( main_cycle_r ) diff --git a/src/mame/drivers/metro.c b/src/mame/drivers/metro.c index f19f5f53dc1..be22c423758 100644 --- a/src/mame/drivers/metro.c +++ b/src/mame/drivers/metro.c @@ -86,7 +86,7 @@ driver modified by Eisuke Watanabe #include "cpu/m68000/m68000.h" #include "cpu/h83002/h8.h" #include "cpu/upd7810/upd7810.h" -#include "machine/eeprom.h" +#include "machine/eepromdev.h" #include "video/konicdev.h" #include "sound/2610intf.h" #include "sound/2151intf.h" @@ -1269,23 +1269,23 @@ static READ16_HANDLER( gakusai_input_r ) return 0xffff; } -static READ16_HANDLER( gakusai_eeprom_r ) +static READ16_DEVICE_HANDLER( gakusai_eeprom_r ) { - return eeprom_read_bit() & 1; + return eepromdev_read_bit(device) & 1; } -static WRITE16_HANDLER( gakusai_eeprom_w ) +static WRITE16_DEVICE_HANDLER( gakusai_eeprom_w ) { if (ACCESSING_BITS_0_7) { // latch the bit - eeprom_write_bit(data & 0x01); + eepromdev_write_bit(device, data & 0x01); // reset line asserted: reset. - eeprom_set_cs_line((data & 0x04) ? CLEAR_LINE : ASSERT_LINE ); + eepromdev_set_cs_line(device, (data & 0x04) ? CLEAR_LINE : ASSERT_LINE ); // clock line asserted: write latch or select next bit to read - eeprom_set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE ); + eepromdev_set_clock_line(device, (data & 0x02) ? ASSERT_LINE : CLEAR_LINE ); } } @@ -1317,7 +1317,7 @@ static ADDRESS_MAP_START( gakusai_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x500000, 0x500001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w) // Sound AM_RANGE(0x600000, 0x600003) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff) AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff) // Sound - AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(gakusai_eeprom_r,gakusai_eeprom_w) // EEPROM + AM_RANGE(0xc00000, 0xc00001) AM_DEVREADWRITE("eeprom", gakusai_eeprom_r,gakusai_eeprom_w) // EEPROM AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE("oki", gakusai_oki_bank_hi_w) ADDRESS_MAP_END @@ -1356,7 +1356,7 @@ static ADDRESS_MAP_START( gakusai2_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("oki", gakusai_oki_bank_hi_w) AM_RANGE(0xb00000, 0xb00001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff) // Sound AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff) - AM_RANGE(0xe00000, 0xe00001) AM_READWRITE(gakusai_eeprom_r,gakusai_eeprom_w) // EEPROM + AM_RANGE(0xe00000, 0xe00001) AM_DEVREADWRITE("eeprom", gakusai_eeprom_r,gakusai_eeprom_w) // EEPROM ADDRESS_MAP_END @@ -1364,34 +1364,34 @@ ADDRESS_MAP_END Mahjong Doukyuusei Special ***************************************************************************/ -static READ16_HANDLER( dokyusp_eeprom_r ) +static READ16_DEVICE_HANDLER( dokyusp_eeprom_r ) { // clock line asserted: write latch or select next bit to read - eeprom_set_clock_line(CLEAR_LINE); - eeprom_set_clock_line(ASSERT_LINE); + eepromdev_set_clock_line(device, CLEAR_LINE); + eepromdev_set_clock_line(device, ASSERT_LINE); - return eeprom_read_bit() & 1; + return eepromdev_read_bit(device) & 1; } -static WRITE16_HANDLER( dokyusp_eeprom_bit_w ) +static WRITE16_DEVICE_HANDLER( dokyusp_eeprom_bit_w ) { if (ACCESSING_BITS_0_7) { // latch the bit - eeprom_write_bit(data & 0x01); + eepromdev_write_bit(device, data & 0x01); // clock line asserted: write latch or select next bit to read - eeprom_set_clock_line(CLEAR_LINE); - eeprom_set_clock_line(ASSERT_LINE); + eepromdev_set_clock_line(device, CLEAR_LINE); + eepromdev_set_clock_line(device, ASSERT_LINE); } } -static WRITE16_HANDLER( dokyusp_eeprom_reset_w ) +static WRITE16_DEVICE_HANDLER( dokyusp_eeprom_reset_w ) { if (ACCESSING_BITS_0_7) { // reset line asserted: reset. - eeprom_set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE); + eepromdev_set_cs_line(device, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE); } } @@ -1423,8 +1423,8 @@ static ADDRESS_MAP_START( dokyusp_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x500000, 0x500001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w) // Sound AM_RANGE(0x600000, 0x600003) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff) AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff) // Sound - AM_RANGE(0xc00000, 0xc00001) AM_WRITE(dokyusp_eeprom_reset_w) // EEPROM - AM_RANGE(0xd00000, 0xd00001) AM_READWRITE(dokyusp_eeprom_r,dokyusp_eeprom_bit_w) // EEPROM + AM_RANGE(0xc00000, 0xc00001) AM_DEVWRITE("eeprom", dokyusp_eeprom_reset_w) // EEPROM + AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE("eeprom", dokyusp_eeprom_r,dokyusp_eeprom_bit_w) // EEPROM ADDRESS_MAP_END @@ -3847,20 +3847,6 @@ static MACHINE_DRIVER_START( dokyusei ) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.90) MACHINE_DRIVER_END -static NVRAM_HANDLER( dokyusp ) -{ - static const UINT8 def_data[] = {0x00,0xe0}; - - if (read_or_write) - eeprom_save(file); - else - { - eeprom_init(machine, &eeprom_interface_93C46); - if (file) eeprom_load(file); - else eeprom_set_data(def_data,sizeof(def_data)/sizeof(def_data[0])); - } -} - static MACHINE_DRIVER_START( dokyusp ) /* basic machine hardware */ @@ -3869,7 +3855,7 @@ static MACHINE_DRIVER_START( dokyusp ) MDRV_CPU_VBLANK_INT("screen", gakusai_interrupt) MDRV_MACHINE_RESET(metro) - MDRV_NVRAM_HANDLER(dokyusp) + MDRV_EEPROM_93C46_ADD("eeprom") /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) @@ -3907,7 +3893,7 @@ static MACHINE_DRIVER_START( gakusai ) MDRV_CPU_VBLANK_INT("screen", gakusai_interrupt) MDRV_MACHINE_RESET(metro) - MDRV_NVRAM_HANDLER(93C46) + MDRV_EEPROM_93C46_ADD("eeprom") /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) @@ -3945,7 +3931,7 @@ static MACHINE_DRIVER_START( gakusai2 ) MDRV_CPU_VBLANK_INT("screen", gakusai_interrupt) MDRV_MACHINE_RESET(metro) - MDRV_NVRAM_HANDLER(93C46) + MDRV_EEPROM_93C46_ADD("eeprom") /* video hardware */ MDRV_SCREEN_ADD("screen", RASTER) @@ -5331,6 +5317,9 @@ ROM_START( dokyusp ) ROM_REGION( 0x200000, "oki", 0 ) /* Samples */ ROM_LOAD( "7.bin", 0x000000, 0x200000, CRC(763985e1) SHA1(395d925b79922de5060a3f59de99fbcc9bd40fad) ) + + ROM_REGION16_BE( 0x80, "eeprom", 0 ) + ROM_LOAD16_WORD( "eeprom-dokyusp.bin", 0x0000, 0x0080, CRC(cf159485) SHA1(f8e9c89e1b7c8bcd77ae5f55e334f79285f602a8) ) ROM_END diff --git a/src/mame/drivers/model3.c b/src/mame/drivers/model3.c index eb07facbf9b..f428cbde040 100644 --- a/src/mame/drivers/model3.c +++ b/src/mame/drivers/model3.c @@ -601,7 +601,7 @@ ALL VROM ROMs are 16M MASK #include "cpu/m68000/m68000.h" #include "deprecat.h" #include "cpu/powerpc/ppc.h" -#include "machine/eeprom.h" +#include "machine/eepromdev.h" #include "machine/53c810.h" #include "sound/scsp.h" #include "includes/model3.h" @@ -1164,33 +1164,8 @@ static const eeprom_interface eeprom_intf = 5 /* reset_delay (Lost World needs this, very similar to wbeachvl in playmark.c) */ }; -static void eeprom_handler(running_machine *machine, mame_file *file, int read_or_write) -{ - if (read_or_write) - eeprom_save(file); - else - { - eeprom_init(machine, &eeprom_intf); - if (file) eeprom_load(file); - } -} - static NVRAM_HANDLER( model3 ) { - const char *name = machine->gamedrv->name; - if( mame_stricmp(name, "lostwsga") == 0 || - mame_stricmp(name, "dirtdvls") == 0 || - mame_stricmp(name, "dirtdvlsa") == 0 || - mame_stricmp(name, "lemans24") == 0 || - mame_stricmp(name, "magtruck") == 0 || - mame_stricmp(name, "von2") == 0 || - mame_stricmp(name, "von254g") == 0) - { - eeprom_handler(machine, file, read_or_write); - } else { - NVRAM_HANDLER_CALL(93C46); - } - if (read_or_write) { mame_fwrite(file, model3_backup, 0x1ffff); @@ -1394,10 +1369,11 @@ static WRITE64_HANDLER( model3_ctrl_w ) case 0: if (ACCESSING_BITS_56_63) { + const device_config *device = devtag_get_device(space->machine, "eeprom"); int reg = (data >> 56) & 0xff; - eeprom_write_bit((reg & 0x20) ? 1 : 0); - eeprom_set_clock_line((reg & 0x80) ? ASSERT_LINE : CLEAR_LINE); - eeprom_set_cs_line((reg & 0x40) ? CLEAR_LINE : ASSERT_LINE); + eepromdev_write_bit(device, (reg & 0x20) ? 1 : 0); + eepromdev_set_clock_line(device, (reg & 0x80) ? ASSERT_LINE : CLEAR_LINE); + eepromdev_set_cs_line(device, (reg & 0x40) ? CLEAR_LINE : ASSERT_LINE); model3_controls_bank = reg & 0xff; } return; @@ -1851,7 +1827,7 @@ static INPUT_PORTS_START( common ) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN1") - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("eeprom", eepromdev_read_bit) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Button B") PORT_CODE(KEYCODE_8) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Button B") PORT_CODE(KEYCODE_7) PORT_BIT( 0x1f, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -2086,7 +2062,7 @@ static INPUT_PORTS_START( skichamp ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) /* Select 2 */ PORT_START("IN1") - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("eeprom", eepromdev_read_bit) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Button B") PORT_CODE(KEYCODE_8) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Button B") PORT_CODE(KEYCODE_7) PORT_BIT( 0x1f, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -4744,6 +4720,8 @@ static MACHINE_DRIVER_START( model3_10 ) MDRV_MACHINE_START(model3_10) MDRV_MACHINE_RESET(model3_10) + + MDRV_EEPROM_ADD("eeprom", eeprom_intf) MDRV_NVRAM_HANDLER(model3) @@ -4782,6 +4760,8 @@ static MACHINE_DRIVER_START( model3_15 ) MDRV_MACHINE_START(model3_15) MDRV_MACHINE_RESET(model3_15) + + MDRV_EEPROM_ADD("eeprom", eeprom_intf) MDRV_NVRAM_HANDLER(model3) @@ -4820,6 +4800,8 @@ static MACHINE_DRIVER_START( model3_20 ) MDRV_MACHINE_START(model3_20) MDRV_MACHINE_RESET(model3_20) + + MDRV_EEPROM_ADD("eeprom", eeprom_intf) MDRV_NVRAM_HANDLER(model3) @@ -4858,6 +4840,8 @@ static MACHINE_DRIVER_START( model3_21 ) MDRV_MACHINE_START(model3_21) MDRV_MACHINE_RESET(model3_21) + + MDRV_EEPROM_ADD("eeprom", eeprom_intf) MDRV_NVRAM_HANDLER(model3)