Updated playmark, othunder, psikyo4, pntnpuzl, and pirates to eepromdev.

This commit is contained in:
Aaron Giles 2009-12-27 18:11:51 +00:00
parent 9fc457fa31
commit 21b6fb843c
5 changed files with 70 additions and 142 deletions

View File

@ -234,7 +234,7 @@ TODO:
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "includes/taitoipt.h" #include "includes/taitoipt.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "machine/eeprom.h" #include "machine/eepromdev.h"
#include "video/taitoic.h" #include "video/taitoic.h"
#include "audio/taitosnd.h" #include "audio/taitosnd.h"
#include "sound/2610intf.h" #include "sound/2610intf.h"
@ -322,29 +322,9 @@ static const eeprom_interface eeprom_intf =
"0100111111" /* unlock command */ "0100111111" /* unlock command */
}; };
static NVRAM_HANDLER( othunder )
{
if (read_or_write)
eeprom_save(file);
else
{
eeprom_init(machine, &eeprom_intf);
if (file)
eeprom_load(file);
else
eeprom_set_data(default_eeprom,128); /* Default the gun setup values */
}
}
static int eeprom_r(void)
{
return (eeprom_read_bit() & 0x01)<<7;
}
static WRITE16_HANDLER( othunder_TC0220IOC_w ) static WRITE16_HANDLER( othunder_TC0220IOC_w )
{ {
const device_config *device;
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
switch (offset) switch (offset)
@ -366,9 +346,10 @@ static WRITE16_HANDLER( othunder_TC0220IOC_w )
if (data & 4) if (data & 4)
popmessage("OBPRI SET!"); popmessage("OBPRI SET!");
eeprom_write_bit(data & 0x40); device = devtag_get_device(space->machine, "eeprom");
eeprom_set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); eepromdev_write_bit(device, data & 0x40);
eeprom_set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE); eepromdev_set_clock_line(device, (data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
eepromdev_set_cs_line(device, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
break; break;
default: default:
@ -384,10 +365,12 @@ if (data & 4)
static READ16_HANDLER( othunder_TC0220IOC_r ) static READ16_HANDLER( othunder_TC0220IOC_r )
{ {
const device_config *device;
switch (offset) switch (offset)
{ {
case 0x03: case 0x03:
return eeprom_r(); device = devtag_get_device(space->machine, "eeprom");
return (eepromdev_read_bit(device) & 1) << 7;
default: default:
return TC0220IOC_r( space, offset ); return TC0220IOC_r( space, offset );
@ -698,7 +681,8 @@ static MACHINE_DRIVER_START( othunder )
MDRV_CPU_ADD("audiocpu", Z80,16000000/4 ) /* 4 MHz */ MDRV_CPU_ADD("audiocpu", Z80,16000000/4 ) /* 4 MHz */
MDRV_CPU_PROGRAM_MAP(z80_sound_map) MDRV_CPU_PROGRAM_MAP(z80_sound_map)
MDRV_NVRAM_HANDLER(othunder) MDRV_EEPROM_ADD("eeprom", eeprom_intf)
MDRV_MACHINE_START(othunder) MDRV_MACHINE_START(othunder)
MDRV_MACHINE_RESET(othunder) MDRV_MACHINE_RESET(othunder)
@ -782,6 +766,9 @@ ROM_START( othunder )
ROM_LOAD( "pal16l8a-b67-11.ic36", 0x0200, 0x0104, CRC(3177fb06) SHA1(c128277fe03342d9ec8da3c6e08a404a3f010547) ) ROM_LOAD( "pal16l8a-b67-11.ic36", 0x0200, 0x0104, CRC(3177fb06) SHA1(c128277fe03342d9ec8da3c6e08a404a3f010547) )
ROM_LOAD( "pal20l8b-b67-12.ic37", 0x0400, 0x0144, CRC(a47c2798) SHA1(8c963efd416b3f6586cb12afb9417dc95c2bc574) ) ROM_LOAD( "pal20l8b-b67-12.ic37", 0x0400, 0x0144, CRC(a47c2798) SHA1(8c963efd416b3f6586cb12afb9417dc95c2bc574) )
ROM_LOAD( "pal20l8b-b67-10.ic33", 0x0600, 0x0144, CRC(4ced09c7) SHA1(519e6152cc5e4cb3ec24c4dc09101dddf22988aa) ) ROM_LOAD( "pal20l8b-b67-10.ic33", 0x0600, 0x0144, CRC(4ced09c7) SHA1(519e6152cc5e4cb3ec24c4dc09101dddf22988aa) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-othunder.bin", 0x0000, 0x0080, CRC(3729b844) SHA1(f6bb41d293d1e47214f8b2d147991404f3278ebf) )
ROM_END ROM_END
ROM_START( othunderu ) ROM_START( othunderu )
@ -818,6 +805,9 @@ ROM_START( othunderu )
ROM_LOAD( "pal16l8a-b67-11.ic36", 0x0200, 0x0104, CRC(3177fb06) SHA1(c128277fe03342d9ec8da3c6e08a404a3f010547) ) ROM_LOAD( "pal16l8a-b67-11.ic36", 0x0200, 0x0104, CRC(3177fb06) SHA1(c128277fe03342d9ec8da3c6e08a404a3f010547) )
ROM_LOAD( "pal20l8b-b67-12.ic37", 0x0400, 0x0144, CRC(a47c2798) SHA1(8c963efd416b3f6586cb12afb9417dc95c2bc574) ) ROM_LOAD( "pal20l8b-b67-12.ic37", 0x0400, 0x0144, CRC(a47c2798) SHA1(8c963efd416b3f6586cb12afb9417dc95c2bc574) )
ROM_LOAD( "pal20l8b-b67-10.ic33", 0x0600, 0x0144, CRC(4ced09c7) SHA1(519e6152cc5e4cb3ec24c4dc09101dddf22988aa) ) ROM_LOAD( "pal20l8b-b67-10.ic33", 0x0600, 0x0144, CRC(4ced09c7) SHA1(519e6152cc5e4cb3ec24c4dc09101dddf22988aa) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-othunder.bin", 0x0000, 0x0080, CRC(3729b844) SHA1(f6bb41d293d1e47214f8b2d147991404f3278ebf) )
ROM_END ROM_END
ROM_START( othunderuo ) ROM_START( othunderuo )
@ -854,6 +844,9 @@ ROM_START( othunderuo )
ROM_LOAD( "pal16l8a-b67-11.ic36", 0x0200, 0x0104, CRC(3177fb06) SHA1(c128277fe03342d9ec8da3c6e08a404a3f010547) ) ROM_LOAD( "pal16l8a-b67-11.ic36", 0x0200, 0x0104, CRC(3177fb06) SHA1(c128277fe03342d9ec8da3c6e08a404a3f010547) )
ROM_LOAD( "pal20l8b-b67-12.ic37", 0x0400, 0x0144, CRC(a47c2798) SHA1(8c963efd416b3f6586cb12afb9417dc95c2bc574) ) ROM_LOAD( "pal20l8b-b67-12.ic37", 0x0400, 0x0144, CRC(a47c2798) SHA1(8c963efd416b3f6586cb12afb9417dc95c2bc574) )
ROM_LOAD( "pal20l8b-b67-10.ic33", 0x0600, 0x0144, CRC(4ced09c7) SHA1(519e6152cc5e4cb3ec24c4dc09101dddf22988aa) ) ROM_LOAD( "pal20l8b-b67-10.ic33", 0x0600, 0x0144, CRC(4ced09c7) SHA1(519e6152cc5e4cb3ec24c4dc09101dddf22988aa) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-othunder.bin", 0x0000, 0x0080, CRC(3729b844) SHA1(f6bb41d293d1e47214f8b2d147991404f3278ebf) )
ROM_END ROM_END
ROM_START( othunderj ) ROM_START( othunderj )
@ -890,6 +883,9 @@ ROM_START( othunderj )
ROM_LOAD( "pal16l8a-b67-11.ic36", 0x0200, 0x0104, CRC(3177fb06) SHA1(c128277fe03342d9ec8da3c6e08a404a3f010547) ) ROM_LOAD( "pal16l8a-b67-11.ic36", 0x0200, 0x0104, CRC(3177fb06) SHA1(c128277fe03342d9ec8da3c6e08a404a3f010547) )
ROM_LOAD( "pal20l8b-b67-12.ic37", 0x0400, 0x0144, CRC(a47c2798) SHA1(8c963efd416b3f6586cb12afb9417dc95c2bc574) ) ROM_LOAD( "pal20l8b-b67-12.ic37", 0x0400, 0x0144, CRC(a47c2798) SHA1(8c963efd416b3f6586cb12afb9417dc95c2bc574) )
ROM_LOAD( "pal20l8b-b67-10.ic33", 0x0600, 0x0144, CRC(4ced09c7) SHA1(519e6152cc5e4cb3ec24c4dc09101dddf22988aa) ) ROM_LOAD( "pal20l8b-b67-10.ic33", 0x0600, 0x0144, CRC(4ced09c7) SHA1(519e6152cc5e4cb3ec24c4dc09101dddf22988aa) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-othunder.bin", 0x0000, 0x0080, CRC(3729b844) SHA1(f6bb41d293d1e47214f8b2d147991404f3278ebf) )
ROM_END ROM_END

View File

@ -89,7 +89,7 @@ Notes:
#include "driver.h" #include "driver.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "machine/eeprom.h" #include "machine/eepromdev.h"
#include "sound/okim6295.h" #include "sound/okim6295.h"
extern UINT16 *pirates_tx_tileram, *pirates_spriteram; extern UINT16 *pirates_tx_tileram, *pirates_spriteram;
@ -115,24 +115,16 @@ static const eeprom_interface eeprom_intf =
"*10011xxxx" /* unlock command */ "*10011xxxx" /* unlock command */
}; };
static NVRAM_HANDLER( pirates )
{
if (read_or_write) eeprom_save(file);
else
{
eeprom_init(machine, &eeprom_intf);
if (file) eeprom_load(file);
}
}
static WRITE16_HANDLER( pirates_out_w ) static WRITE16_HANDLER( pirates_out_w )
{ {
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
const device_config *eeprom = devtag_get_device(space->machine, "eeprom");
/* bits 0-2 control EEPROM */ /* bits 0-2 control EEPROM */
eeprom_write_bit(data & 0x04); eepromdev_write_bit(eeprom, data & 0x04);
eeprom_set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE); eepromdev_set_cs_line(eeprom, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
eeprom_set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE); eepromdev_set_clock_line(eeprom, (data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
/* bit 6 selects oki bank */ /* bit 6 selects oki bank */
okim6295_set_bank_base(devtag_get_device(space->machine, "oki"), (data & 0x40) ? 0x40000 : 0x00000); okim6295_set_bank_base(devtag_get_device(space->machine, "oki"), (data & 0x40) ? 0x40000 : 0x00000);
@ -226,7 +218,7 @@ static INPUT_PORTS_START( pirates )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW ) PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW )
PORT_BIT( 0x0010, IP_ACTIVE_HIGH,IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL) // EEPROM data PORT_BIT( 0x0010, IP_ACTIVE_HIGH,IPT_SPECIAL ) PORT_READ_LINE_DEVICE("eeprom", eepromdev_read_bit) // EEPROM data
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // seems checked in "test mode" PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // seems checked in "test mode"
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // seems checked in "test mode" PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // seems checked in "test mode"
PORT_BIT( 0x0080, IP_ACTIVE_HIGH,IPT_SPECIAL ) PORT_CUSTOM(prot_r, NULL) // protection PORT_BIT( 0x0080, IP_ACTIVE_HIGH,IPT_SPECIAL ) PORT_CUSTOM(prot_r, NULL) // protection
@ -282,7 +274,7 @@ static MACHINE_DRIVER_START( pirates )
MDRV_CPU_PROGRAM_MAP(pirates_map) MDRV_CPU_PROGRAM_MAP(pirates_map)
MDRV_CPU_VBLANK_INT("screen", irq1_line_hold) MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)
MDRV_NVRAM_HANDLER(pirates) MDRV_EEPROM_ADD("eeprom", eeprom_intf)
MDRV_GFXDECODE(pirates) MDRV_GFXDECODE(pirates)

View File

@ -41,7 +41,7 @@ TODO:
#include "driver.h" #include "driver.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "machine/eeprom.h" #include "machine/eepromdev.h"
#include "cpu/pic16c5x/pic16c5x.h" #include "cpu/pic16c5x/pic16c5x.h"
#include "sound/okim6295.h" #include "sound/okim6295.h"
#include "includes/playmark.h" #include "includes/playmark.h"
@ -84,31 +84,12 @@ static const eeprom_interface eeprom_intf =
5 /* reset_delay (otherwise wbeachvl will hang when saving settings) */ 5 /* reset_delay (otherwise wbeachvl will hang when saving settings) */
}; };
static NVRAM_HANDLER( wbeachvl )
{
if (read_or_write)
{
eeprom_save(file);
}
else
{
eeprom_init(machine, &eeprom_intf);
if (file)
eeprom_load(file);
else
{
UINT8 init[128];
memset(init,0,128);
eeprom_set_data(init,128);
}
}
}
static WRITE16_HANDLER( wbeachvl_coin_eeprom_w ) static WRITE16_HANDLER( wbeachvl_coin_eeprom_w )
{ {
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
const device_config *eeprom = devtag_get_device(space->machine, "eeprom");
/* bits 0-3 are coin counters? (only 0 used?) */ /* bits 0-3 are coin counters? (only 0 used?) */
coin_counter_w(space->machine, 0,data & 0x01); coin_counter_w(space->machine, 0,data & 0x01);
coin_counter_w(space->machine, 1,data & 0x02); coin_counter_w(space->machine, 1,data & 0x02);
@ -116,9 +97,9 @@ static WRITE16_HANDLER( wbeachvl_coin_eeprom_w )
coin_counter_w(space->machine, 3,data & 0x08); coin_counter_w(space->machine, 3,data & 0x08);
/* bits 5-7 control EEPROM */ /* bits 5-7 control EEPROM */
eeprom_set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE); eepromdev_set_cs_line(eeprom, (data & 0x20) ? CLEAR_LINE : ASSERT_LINE);
eeprom_write_bit(data & 0x80); eepromdev_write_bit(eeprom, data & 0x80);
eeprom_set_clock_line((data & 0x40) ? CLEAR_LINE : ASSERT_LINE); eepromdev_set_clock_line(eeprom, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
} }
} }
@ -126,11 +107,12 @@ static WRITE16_HANDLER( hotmind_coin_eeprom_w )
{ {
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
const device_config *eeprom = devtag_get_device(space->machine, "eeprom");
coin_counter_w(space->machine, 0,data & 0x20); coin_counter_w(space->machine, 0,data & 0x20);
eeprom_set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE); eepromdev_set_cs_line(eeprom, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
eeprom_write_bit(data & 4); eepromdev_write_bit(eeprom, data & 4);
eeprom_set_clock_line((data & 2) ? ASSERT_LINE : CLEAR_LINE ); eepromdev_set_clock_line(eeprom, (data & 2) ? ASSERT_LINE : CLEAR_LINE );
} }
} }
@ -457,7 +439,7 @@ static INPUT_PORTS_START( wbeachvl )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SERVICE1 )
PORT_SERVICE_NO_TOGGLE(0x20, IP_ACTIVE_LOW) PORT_SERVICE_NO_TOGGLE(0x20, IP_ACTIVE_LOW)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* ?? see code at 746a. sound status? */ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* ?? see code at 746a. sound status? */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL) /* EEPROM data */ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("eeprom", eepromdev_read_bit) /* EEPROM data */
PORT_START("P1") PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
@ -623,7 +605,7 @@ static INPUT_PORTS_START( hotmind )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_VBLANK ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_VBLANK )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL) /* EEPROM data */ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("eeprom", eepromdev_read_bit) /* EEPROM data */
PORT_START("DSW1") PORT_START("DSW1")
PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) )
@ -962,7 +944,8 @@ static MACHINE_DRIVER_START( wbeachvl )
/* Program and Data Maps are internal to the MCU */ /* Program and Data Maps are internal to the MCU */
// MDRV_CPU_IO_MAP(playmark_sound_io_map) // MDRV_CPU_IO_MAP(playmark_sound_io_map)
MDRV_NVRAM_HANDLER(wbeachvl) MDRV_EEPROM_ADD("eeprom", eeprom_intf)
MDRV_EEPROM_DEFAULT_VALUE(0)
/* video hardware */ /* video hardware */
MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_ADD("screen", RASTER)
@ -1030,7 +1013,8 @@ static MACHINE_DRIVER_START( hotmind )
/* Program and Data Maps are internal to the MCU */ /* Program and Data Maps are internal to the MCU */
MDRV_CPU_IO_MAP(playmark_sound_io_map) MDRV_CPU_IO_MAP(playmark_sound_io_map)
MDRV_NVRAM_HANDLER(wbeachvl) MDRV_EEPROM_ADD("eeprom", eeprom_intf)
MDRV_EEPROM_DEFAULT_VALUE(0)
/* video hardware */ /* video hardware */
MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_ADD("screen", RASTER)

View File

@ -122,7 +122,7 @@ CN1 standard DB15 VGA connector (15KHz)
#include "driver.h" #include "driver.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "machine/eeprom.h" #include "machine/eepromdev.h"
static const eeprom_interface eeprom_intf = static const eeprom_interface eeprom_intf =
@ -136,36 +136,15 @@ static const eeprom_interface eeprom_intf =
"*10011xxxx" /* unlock command */ "*10011xxxx" /* unlock command */
}; };
static NVRAM_HANDLER( pntnpuzl )
{
if (read_or_write)
eeprom_save(file);
else
{
eeprom_init(machine, &eeprom_intf);
if (file)
eeprom_load(file);
else
{
UINT32 length, size;
UINT8 *dat;
dat = (UINT8 *)eeprom_get_data_pointer(&length, &size);
memset(dat, 0, length * size);
}
}
}
static UINT16 pntnpuzl_eeprom; static UINT16 pntnpuzl_eeprom;
static READ16_HANDLER( pntnpuzl_eeprom_r ) static READ16_DEVICE_HANDLER( pntnpuzl_eeprom_r )
{ {
/* bit 11 is EEPROM data */ /* bit 11 is EEPROM data */
return (pntnpuzl_eeprom & 0xf4ff) | (eeprom_read_bit()<<11) | (input_port_read(space->machine, "IN1") & 0x0300); return (pntnpuzl_eeprom & 0xf4ff) | (eepromdev_read_bit(device)<<11) | (input_port_read(device->machine, "IN1") & 0x0300);
} }
static WRITE16_HANDLER( pntnpuzl_eeprom_w ) static WRITE16_DEVICE_HANDLER( pntnpuzl_eeprom_w )
{ {
pntnpuzl_eeprom = data; pntnpuzl_eeprom = data;
@ -173,9 +152,9 @@ static WRITE16_HANDLER( pntnpuzl_eeprom_w )
/* bit 13 is clock (active high) */ /* bit 13 is clock (active high) */
/* bit 14 is cs (active high) */ /* bit 14 is cs (active high) */
eeprom_write_bit(data & 0x1000); eepromdev_write_bit(device, data & 0x1000);
eeprom_set_cs_line((data & 0x4000) ? CLEAR_LINE : ASSERT_LINE); eepromdev_set_cs_line(device, (data & 0x4000) ? CLEAR_LINE : ASSERT_LINE);
eeprom_set_clock_line((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE); eepromdev_set_clock_line(device, (data & 0x2000) ? ASSERT_LINE : CLEAR_LINE);
} }
@ -388,9 +367,9 @@ static ADDRESS_MAP_START( pntnpuzl_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x100000, 0x100001) AM_READNOP //| irq lines clear AM_RANGE(0x100000, 0x100001) AM_READNOP //| irq lines clear
AM_RANGE(0x180000, 0x180001) AM_READNOP //| AM_RANGE(0x180000, 0x180001) AM_READNOP //|
AM_RANGE(0x200000, 0x200001) AM_WRITE(pntnpuzl_200000_w) AM_RANGE(0x200000, 0x200001) AM_WRITE(pntnpuzl_200000_w)
AM_RANGE(0x280000, 0x280001) AM_READ(pntnpuzl_eeprom_r) AM_RANGE(0x280000, 0x280001) AM_DEVREAD("eeprom", pntnpuzl_eeprom_r)
AM_RANGE(0x280002, 0x280003) AM_READ_PORT("IN2") AM_RANGE(0x280002, 0x280003) AM_READ_PORT("IN2")
AM_RANGE(0x280000, 0x280001) AM_WRITE(pntnpuzl_eeprom_w) AM_RANGE(0x280000, 0x280001) AM_DEVWRITE("eeprom", pntnpuzl_eeprom_w)
AM_RANGE(0x280008, 0x280009) AM_WRITENOP AM_RANGE(0x280008, 0x280009) AM_WRITENOP
AM_RANGE(0x28000a, 0x28000b) AM_WRITENOP AM_RANGE(0x28000a, 0x28000b) AM_WRITENOP
AM_RANGE(0x280010, 0x280011) AM_WRITENOP AM_RANGE(0x280010, 0x280011) AM_WRITENOP
@ -458,7 +437,7 @@ static MACHINE_DRIVER_START( pntnpuzl )
MDRV_CPU_PROGRAM_MAP(pntnpuzl_map) MDRV_CPU_PROGRAM_MAP(pntnpuzl_map)
MDRV_CPU_VBLANK_INT("screen", pntnpuzl_irq) // irq1 = coin irq2 = service irq4 = coin MDRV_CPU_VBLANK_INT("screen", pntnpuzl_irq) // irq1 = coin irq2 = service irq4 = coin
MDRV_NVRAM_HANDLER(pntnpuzl) MDRV_EEPROM_ADD("eeprom", eeprom_intf)
MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_ADD("screen", RASTER)

View File

@ -129,7 +129,7 @@ ROMs -
#include "driver.h" #include "driver.h"
#include "cpu/sh2/sh2.h" #include "cpu/sh2/sh2.h"
#include "machine/eeprom.h" #include "machine/eepromdev.h"
#include "sound/ymf278b.h" #include "sound/ymf278b.h"
#include "rendlay.h" #include "rendlay.h"
#include "includes/psikyo4.h" #include "includes/psikyo4.h"
@ -165,37 +165,13 @@ static const eeprom_interface eeprom_interface_93C56 =
// "*10010xxxx" // erase all 1 00 10xxxx // "*10010xxxx" // erase all 1 00 10xxxx
}; };
static NVRAM_HANDLER(93C56) static WRITE32_DEVICE_HANDLER( ps4_eeprom_w )
{
if (read_or_write)
{
eeprom_save(file);
}
else
{
eeprom_init(machine, &eeprom_interface_93C56);
if (file)
{
eeprom_load(file);
}
else // these games want the eeprom all zeros by default
{
UINT32 length, size;
UINT8 *dat;
dat = (UINT8 *)eeprom_get_data_pointer(&length, &size);
memset(dat, 0, length * size);
}
}
}
static WRITE32_HANDLER( ps4_eeprom_w )
{ {
if (ACCESSING_BITS_16_31) if (ACCESSING_BITS_16_31)
{ {
eeprom_write_bit((data & 0x00200000) ? 1 : 0); eepromdev_write_bit(device, (data & 0x00200000) ? 1 : 0);
eeprom_set_cs_line((data & 0x00800000) ? CLEAR_LINE : ASSERT_LINE); eepromdev_set_cs_line(device, (data & 0x00800000) ? CLEAR_LINE : ASSERT_LINE);
eeprom_set_clock_line((data & 0x00400000) ? ASSERT_LINE : CLEAR_LINE); eepromdev_set_clock_line(device, (data & 0x00400000) ? ASSERT_LINE : CLEAR_LINE);
return; return;
} }
@ -203,11 +179,11 @@ static WRITE32_HANDLER( ps4_eeprom_w )
logerror("Unk EEPROM write %x mask %x\n", data, mem_mask); logerror("Unk EEPROM write %x mask %x\n", data, mem_mask);
} }
static READ32_HANDLER( ps4_eeprom_r ) static READ32_DEVICE_HANDLER( ps4_eeprom_r )
{ {
if (ACCESSING_BITS_16_31) if (ACCESSING_BITS_16_31)
{ {
return input_port_read(space->machine, "JP4"); return input_port_read(device->machine, "JP4");
} }
// logerror("Unk EEPROM read mask %x\n", mem_mask); // logerror("Unk EEPROM read mask %x\n", mem_mask);
@ -402,7 +378,7 @@ static ADDRESS_MAP_START( ps4_map, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x00000000, 0x000fffff) AM_ROM // program ROM (1 meg) AM_RANGE(0x00000000, 0x000fffff) AM_ROM // program ROM (1 meg)
AM_RANGE(0x02000000, 0x021fffff) AM_ROMBANK("bank1") // data ROM AM_RANGE(0x02000000, 0x021fffff) AM_ROMBANK("bank1") // data ROM
AM_RANGE(0x03000000, 0x030037ff) AM_RAM AM_BASE_SIZE_MEMBER(psikyo4_state, spriteram, spriteram_size) AM_RANGE(0x03000000, 0x030037ff) AM_RAM AM_BASE_SIZE_MEMBER(psikyo4_state, spriteram, spriteram_size)
AM_RANGE(0x03003fe0, 0x03003fe3) AM_READWRITE(ps4_eeprom_r,ps4_eeprom_w) AM_RANGE(0x03003fe0, 0x03003fe3) AM_DEVREADWRITE("eeprom", ps4_eeprom_r,ps4_eeprom_w)
AM_RANGE(0x03003fe4, 0x03003fe7) AM_READNOP // also writes to this address - might be vblank? AM_RANGE(0x03003fe4, 0x03003fe7) AM_READNOP // also writes to this address - might be vblank?
// AM_RANGE(0x03003fe4, 0x03003fe7) AM_WRITENOP // might be vblank? // AM_RANGE(0x03003fe4, 0x03003fe7) AM_WRITENOP // might be vblank?
AM_RANGE(0x03003fe4, 0x03003fef) AM_RAM_WRITE(ps4_vidregs_w) AM_BASE_MEMBER(psikyo4_state, vidregs) // vid regs? AM_RANGE(0x03003fe4, 0x03003fef) AM_RAM_WRITE(ps4_vidregs_w) AM_BASE_MEMBER(psikyo4_state, vidregs) // vid regs?
@ -439,7 +415,7 @@ static INPUT_PORTS_START( hotgmck )
PORT_START("JP4")/* jumper pads 'JP4' on the PCB */ PORT_START("JP4")/* jumper pads 'JP4' on the PCB */
/* EEPROM is read here */ /* EEPROM is read here */
PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL) PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("eeprom", eepromdev_read_bit)
PORT_START("SYSTEM") /* system inputs */ PORT_START("SYSTEM") /* system inputs */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) // Screen 1 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) // Screen 1
@ -622,7 +598,7 @@ static INPUT_PORTS_START( loderndf )
PORT_DIPSETTING( 0x00000000, "Japan (Shows Version Number)" ) PORT_DIPSETTING( 0x00000000, "Japan (Shows Version Number)" )
PORT_DIPSETTING( 0x00010000, "World (Does Not Show Version Number)" ) PORT_DIPSETTING( 0x00010000, "World (Does Not Show Version Number)" )
/* EEPROM is read here */ /* EEPROM is read here */
PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL) PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("eeprom", eepromdev_read_bit)
INPUT_PORTS_END INPUT_PORTS_END
/* unused inputs also act as duplicate buttons */ /* unused inputs also act as duplicate buttons */
@ -705,7 +681,7 @@ static INPUT_PORTS_START( hotdebut )
PORT_START("JP4")/* jumper pads 'JP4' on the PCB */ PORT_START("JP4")/* jumper pads 'JP4' on the PCB */
/* EEPROM is read here */ /* EEPROM is read here */
PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL) PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("eeprom", eepromdev_read_bit)
INPUT_PORTS_END INPUT_PORTS_END
@ -760,7 +736,8 @@ static MACHINE_DRIVER_START( ps4big )
MDRV_MACHINE_START(psikyo4) MDRV_MACHINE_START(psikyo4)
MDRV_MACHINE_RESET(psikyo4) MDRV_MACHINE_RESET(psikyo4)
MDRV_NVRAM_HANDLER(93C56) MDRV_EEPROM_ADD("eeprom", eeprom_interface_93C56)
MDRV_EEPROM_DEFAULT_VALUE(0)
/* video hardware */ /* video hardware */
MDRV_GFXDECODE(ps4) MDRV_GFXDECODE(ps4)