metro, model3, gunbustr converted to eepromdev.

This commit is contained in:
Aaron Giles 2009-12-27 08:18:43 +00:00
parent f98d17e45b
commit 3336a38bb8
3 changed files with 52 additions and 88 deletions

View File

@ -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 )

View File

@ -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

View File

@ -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)