Converted powerbal, 39in1, and cave.c to eeprom device.

This commit is contained in:
Aaron Giles 2009-12-25 10:40:32 +00:00
parent cbf044e6eb
commit 4ca41c800c
3 changed files with 175 additions and 231 deletions

View File

@ -24,7 +24,7 @@
#include "video/generic.h"
#include "cpu/arm7/arm7.h"
#include "cpu/arm7/arm7core.h"
#include "machine/eeprom.h"
#include "machine/eepromdev.h"
#include "machine/pxa255.h"
#include "sound/dmadac.h"
@ -748,7 +748,7 @@ static READ32_HANDLER( pxa255_gpio_r )
{
case PXA255_GPLR0:
verboselog( space->machine, 3, "pxa255_gpio_r: GPIO Pin-Level Register 0: %08x & %08x\n", gpio_regs.gplr0 | (1 << 1), mem_mask );
return gpio_regs.gplr0 | (1 << 1) | (eeprom_read_bit() << 5); // Must be on. Probably a DIP switch.
return gpio_regs.gplr0 | (1 << 1) | (eepromdev_read_bit(devtag_get_device(space->machine, "eeprom")) << 5); // Must be on. Probably a DIP switch.
case PXA255_GPLR1:
verboselog( space->machine, 3, "pxa255_gpio_r: *Not Yet Implemented* GPIO Pin-Level Register 1: %08x & %08x\n", gpio_regs.gplr1, mem_mask );
return 0xff9fffff;
@ -839,6 +839,7 @@ static READ32_HANDLER( pxa255_gpio_r )
static WRITE32_HANDLER( pxa255_gpio_w )
{
const device_config *device;
switch(PXA255_GPIO_BASE_ADDR | (offset << 2))
{
case PXA255_GPLR0:
@ -865,17 +866,18 @@ static WRITE32_HANDLER( pxa255_gpio_w )
case PXA255_GPSR0:
verboselog( space->machine, 3, "pxa255_gpio_w: GPIO Pin Output Set Register 0: %08x & %08x\n", data, mem_mask );
gpio_regs.gpsr0 |= data & gpio_regs.gpdr0;
device = devtag_get_device(space->machine, "eeprom");
if(data & 0x00000004)
{
eeprom_set_cs_line(CLEAR_LINE);
eepromdev_set_cs_line(device, CLEAR_LINE);
}
if(data & 0x00000008)
{
eeprom_set_clock_line(ASSERT_LINE);
eepromdev_set_clock_line(device, ASSERT_LINE);
}
if(data & 0x00000010)
{
eeprom_write_bit(1);
eepromdev_write_bit(device, 1);
}
break;
case PXA255_GPSR1:
@ -889,17 +891,18 @@ static WRITE32_HANDLER( pxa255_gpio_w )
case PXA255_GPCR0:
verboselog( space->machine, 3, "pxa255_gpio_w: GPIO Pin Output Clear Register 0: %08x & %08x\n", data, mem_mask );
gpio_regs.gpsr0 &= ~(data & gpio_regs.gpdr0);
device = devtag_get_device(space->machine, "eeprom");
if(data & 0x00000004)
{
eeprom_set_cs_line(ASSERT_LINE);
eepromdev_set_cs_line(device, ASSERT_LINE);
}
if(data & 0x00000008)
{
eeprom_set_clock_line(CLEAR_LINE);
eepromdev_set_clock_line(device, CLEAR_LINE);
}
if(data & 0x00000010)
{
eeprom_write_bit(0);
eepromdev_write_bit(device, 0);
}
break;
case PXA255_GPCR1:
@ -1479,30 +1482,6 @@ static MACHINE_START(39in1)
pxa255_start(machine);
}
static NVRAM_HANDLER( 39in1 )
{
if(read_or_write)
{
//printf( "Saving\n" );
eeprom_save(file);
}
else
{
//printf( "Initting\n" );
eeprom_init(machine, &eeprom_interface_93C66B);
if(file)
{
//printf( "Loading from file\n" );
eeprom_load(file);
}
else
{
//printf( "Calling eeprom_set_data\n" );
eeprom_set_data(memory_region(machine, "eeprom"),0x200);
}
}
}
static MACHINE_DRIVER_START( 39in1 )
MDRV_CPU_ADD("maincpu", PXA255, 200000000)
MDRV_CPU_PROGRAM_MAP(39in1_map)
@ -1519,7 +1498,7 @@ static MACHINE_DRIVER_START( 39in1 )
MDRV_PALETTE_LENGTH(256)
MDRV_MACHINE_START(39in1)
MDRV_NVRAM_HANDLER(39in1)
MDRV_EEPROM_93C66B_ADD("eeprom")
MDRV_VIDEO_UPDATE(39in1)
@ -1541,7 +1520,7 @@ ROM_START( 39in1 )
ROM_LOAD( "16mflash.bin", 0x000000, 0x200000, CRC(a089f0f8) SHA1(e975eadd9176a8b9e416229589dfe3158cba22cb) )
// EEPROM - contains security data
ROM_REGION( 0x200, "eeprom", 0 )
ROM_REGION16_BE( 0x200, "eeprom", 0 )
ROM_LOAD16_WORD_SWAP( "93c66_eeprom.bin", 0x000, 0x200, CRC(a423a969) SHA1(4c68654c81e70367209b9f6c712564aae89a3122) )
ROM_END
@ -1555,7 +1534,7 @@ ROM_START( 48in1 )
ROM_LOAD( "16mflash.bin", 0x000000, 0x200000, CRC(a089f0f8) SHA1(e975eadd9176a8b9e416229589dfe3158cba22cb) )
// EEPROM - contains security data
ROM_REGION( 0x200, "eeprom", 0 )
ROM_REGION16_BE( 0x200, "eeprom", 0 )
ROM_LOAD16_WORD_SWAP( "93c66_eeprom.bin", 0x000, 0x200, NO_DUMP )
ROM_END
@ -1569,7 +1548,7 @@ ROM_START( 48in1a )
ROM_LOAD( "16mflash.bin", 0x000000, 0x200000, CRC(a089f0f8) SHA1(e975eadd9176a8b9e416229589dfe3158cba22cb) )
// EEPROM - contains security data
ROM_REGION( 0x200, "eeprom", 0 )
ROM_REGION16_BE( 0x200, "eeprom", 0 )
ROM_LOAD16_WORD_SWAP( "93c66_eeprom.bin", 0x000, 0x200, NO_DUMP )
ROM_END

View File

@ -70,7 +70,7 @@ Versions known to exist but not dumped:
#include "driver.h"
#include "cpu/m68000/m68000.h"
#include "machine/eeprom.h"
#include "machine/eepromdev.h"
#include "machine/nmk112.h"
#include "cpu/z80/z80.h"
#include "includes/cave.h"
@ -277,86 +277,72 @@ static WRITE8_HANDLER( soundlatch_ack_w )
***************************************************************************/
static const UINT8 cave_default_eeprom_type1[16] = {0x00,0x0C,0x11,0x0D,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x11,0x11,0xFF,0xFF,0xFF,0xFF}; /* DFeveron, Guwange */
static const UINT8 cave_default_eeprom_type1feversos[18] = {0x00,0x0C,0x16,0x27,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x11,0x11,0xFF,0xFF,0xFF,0xFF,0x05,0x19}; /* Fever SOS (code checks for the 0x0519 or it won't boot) */
static const UINT8 cave_default_eeprom_type2[16] = {0x00,0x0C,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; /* Esprade, DonPachi, DDonPachi */
static const UINT8 cave_default_eeprom_type3[16] = {0x00,0x03,0x08,0x00,0xFF,0xFF,0xFF,0xFF,0x08,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF}; /* UoPoko */
static const UINT8 cave_default_eeprom_type4[16] = {0xF3,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; /* Hotdog Storm */
static const UINT8 cave_default_eeprom_type5[16] = {0xED,0xFF,0x00,0x00,0x12,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; /* Mazinger Z (6th byte is country code) */
static const UINT8 cave_default_eeprom_type6[18] = {0xa5,0x00,0xa5,0x00,0xa5,0x00,0xa5,0x00,0xa5,0x01,0xa5,0x01,0xa5,0x04,0xa5,0x01,0xa5,0x02}; /* Sailor Moon (last byte is country code) */
// Air Gallet. Byte 1f is the country code (0==JAPAN,U.S.A,EUROPE,HONGKONG,TAIWAN,KOREA)
static const UINT8 cave_default_eeprom_type7[48] = {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff};
static const UINT8 *cave_default_eeprom;
static int cave_default_eeprom_length;
static int cave_region_byte;
static WRITE16_HANDLER( cave_eeprom_msb_w )
static WRITE16_DEVICE_HANDLER( cave_eeprom_msb_w )
{
if (data & ~0xfe00)
logerror("CPU #0 PC: %06X - Unknown EEPROM bit written %04X\n",cpu_get_pc(space->cpu),data);
logerror("%s: Unknown EEPROM bit written %04X\n",cpuexec_describe_context(device->machine),data);
if ( ACCESSING_BITS_8_15 ) // even address
{
coin_lockout_w(space->machine, 1,~data & 0x8000);
coin_lockout_w(space->machine, 0,~data & 0x4000);
coin_counter_w(space->machine, 1, data & 0x2000);
coin_counter_w(space->machine, 0, data & 0x1000);
coin_lockout_w(device->machine, 1,~data & 0x8000);
coin_lockout_w(device->machine, 0,~data & 0x4000);
coin_counter_w(device->machine, 1, data & 0x2000);
coin_counter_w(device->machine, 0, data & 0x1000);
// latch the bit
eeprom_write_bit(data & 0x0800);
eepromdev_write_bit(device, data & 0x0800);
// reset line asserted: reset.
eeprom_set_cs_line((data & 0x0200) ? CLEAR_LINE : ASSERT_LINE );
eepromdev_set_cs_line(device, (data & 0x0200) ? CLEAR_LINE : ASSERT_LINE );
// clock line asserted: write latch or select next bit to read
eeprom_set_clock_line((data & 0x0400) ? ASSERT_LINE : CLEAR_LINE );
eepromdev_set_clock_line(device, (data & 0x0400) ? ASSERT_LINE : CLEAR_LINE );
}
}
static WRITE16_HANDLER( sailormn_eeprom_msb_w )
static WRITE16_DEVICE_HANDLER( sailormn_eeprom_msb_w )
{
sailormn_tilebank_w ( data & 0x0100 );
cave_eeprom_msb_w(space,offset,data & ~0x0100,mem_mask);
cave_eeprom_msb_w(device,offset,data & ~0x0100,mem_mask);
}
static WRITE16_HANDLER( hotdogst_eeprom_msb_w )
static WRITE16_DEVICE_HANDLER( hotdogst_eeprom_msb_w )
{
if ( ACCESSING_BITS_8_15 ) // even address
{
// latch the bit
eeprom_write_bit(data & 0x0800);
eepromdev_write_bit(device, data & 0x0800);
// reset line asserted: reset.
eeprom_set_cs_line((data & 0x0200) ? CLEAR_LINE : ASSERT_LINE );
eepromdev_set_cs_line(device, (data & 0x0200) ? CLEAR_LINE : ASSERT_LINE );
// clock line asserted: write latch or select next bit to read
eeprom_set_clock_line((data & 0x0400) ? CLEAR_LINE: ASSERT_LINE );
eepromdev_set_clock_line(device, (data & 0x0400) ? CLEAR_LINE: ASSERT_LINE );
}
}
static WRITE16_HANDLER( cave_eeprom_lsb_w )
static WRITE16_DEVICE_HANDLER( cave_eeprom_lsb_w )
{
if (data & ~0x00ef)
logerror("CPU #0 PC: %06X - Unknown EEPROM bit written %04X\n",cpu_get_pc(space->cpu),data);
logerror("%s: Unknown EEPROM bit written %04X\n",cpuexec_describe_context(device->machine),data);
if ( ACCESSING_BITS_0_7 ) // odd address
{
coin_lockout_w(space->machine, 1,~data & 0x0008);
coin_lockout_w(space->machine, 0,~data & 0x0004);
coin_counter_w(space->machine, 1, data & 0x0002);
coin_counter_w(space->machine, 0, data & 0x0001);
coin_lockout_w(device->machine, 1,~data & 0x0008);
coin_lockout_w(device->machine, 0,~data & 0x0004);
coin_counter_w(device->machine, 1, data & 0x0002);
coin_counter_w(device->machine, 0, data & 0x0001);
// latch the bit
eeprom_write_bit(data & 0x80);
eepromdev_write_bit(device, data & 0x80);
// reset line asserted: reset.
eeprom_set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE );
eepromdev_set_cs_line(device, (data & 0x20) ? CLEAR_LINE : ASSERT_LINE );
// clock line asserted: write latch or select next bit to read
eeprom_set_clock_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE );
eepromdev_set_clock_line(device, (data & 0x40) ? ASSERT_LINE : CLEAR_LINE );
}
}
@ -372,43 +358,26 @@ static WRITE16_HANDLER( gaia_coin_lsb_w )
/* - No coin lockouts
- Writing 0xcf00 shouldn't send a 1 bit to the eeprom */
static WRITE16_HANDLER( metmqstr_eeprom_msb_w )
static WRITE16_DEVICE_HANDLER( metmqstr_eeprom_msb_w )
{
if (data & ~0xff00)
logerror("CPU #0 PC: %06X - Unknown EEPROM bit written %04X\n",cpu_get_pc(space->cpu),data);
logerror("%s: Unknown EEPROM bit written %04X\n",cpuexec_describe_context(device->machine),data);
if ( ACCESSING_BITS_8_15 ) // even address
{
coin_counter_w(space->machine, 1, data & 0x2000);
coin_counter_w(space->machine, 0, data & 0x1000);
coin_counter_w(device->machine, 1, data & 0x2000);
coin_counter_w(device->machine, 0, data & 0x1000);
if (~data & 0x0100)
{
// latch the bit
eeprom_write_bit(data & 0x0800);
eepromdev_write_bit(device, data & 0x0800);
// reset line asserted: reset.
eeprom_set_cs_line((data & 0x0200) ? CLEAR_LINE : ASSERT_LINE );
eepromdev_set_cs_line(device, (data & 0x0200) ? CLEAR_LINE : ASSERT_LINE );
// clock line asserted: write latch or select next bit to read
eeprom_set_clock_line((data & 0x0400) ? ASSERT_LINE : CLEAR_LINE );
}
}
}
static NVRAM_HANDLER( cave )
{
if (read_or_write)
eeprom_save(file);
else
{
eeprom_init(machine, &eeprom_interface_93C46);
if (file) eeprom_load(file);
else
{
if (cave_default_eeprom) /* Set the EEPROM to Factory Defaults */
eeprom_set_data(cave_default_eeprom,cave_default_eeprom_length);
eepromdev_set_clock_line(device, (data & 0x0400) ? ASSERT_LINE : CLEAR_LINE );
}
}
}
@ -427,23 +396,6 @@ static const eeprom_interface eeprom_interface_93C46_8bit =
// "*10010xxxx" // erase all 1 00 10xxxx
};
static NVRAM_HANDLER( korokoro )
{
if (read_or_write)
eeprom_save(file);
else
{
eeprom_init(machine, &eeprom_interface_93C46_8bit);
if (file) eeprom_load(file);
else
{
if (cave_default_eeprom) /* Set the EEPROM to Factory Defaults */
eeprom_set_data(cave_default_eeprom,cave_default_eeprom_length);
}
}
}
/***************************************************************************
@ -479,7 +431,7 @@ static ADDRESS_MAP_START( dfeveron_map, ADDRESS_SPACE_PROGRAM, 16 )
/**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE(&cave_vctrl_1) // Layer 1 Control
AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("IN0") // Inputs
AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("IN1") // Inputs + EEPROM
AM_RANGE(0xc00000, 0xc00001) AM_WRITE(cave_eeprom_msb_w) // EEPROM
AM_RANGE(0xc00000, 0xc00001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM
ADDRESS_MAP_END
@ -504,7 +456,7 @@ static ADDRESS_MAP_START( ddonpach_map, ADDRESS_SPACE_PROGRAM, 16 )
/**/AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_BASE_GENERIC(paletteram) AM_SIZE(&cave_paletteram_size) // Palette
AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0" ) // Inputs
AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1" ) // Inputs + EEPROM
AM_RANGE(0xe00000, 0xe00001) AM_WRITE(cave_eeprom_msb_w) // EEPROM
AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM
ADDRESS_MAP_END
@ -555,7 +507,7 @@ static ADDRESS_MAP_START( donpachi_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0xb00020, 0xb0002f) AM_WRITE(NMK112_okibank_lsb_w) //
AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") // Inputs
AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // Inputs + EEPROM
AM_RANGE(0xd00000, 0xd00001) AM_WRITE(cave_eeprom_msb_w) // EEPROM
AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM
ADDRESS_MAP_END
@ -580,7 +532,7 @@ static ADDRESS_MAP_START( esprade_map, ADDRESS_SPACE_PROGRAM, 16 )
/**/AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_BASE_GENERIC(paletteram) AM_SIZE(&cave_paletteram_size) // Palette
AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0" ) // Inputs
AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1" ) // Inputs + EEPROM
AM_RANGE(0xe00000, 0xe00001) AM_WRITE(cave_eeprom_msb_w ) // EEPROM
AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM
ADDRESS_MAP_END
@ -634,7 +586,7 @@ static ADDRESS_MAP_START( guwange_map, ADDRESS_SPACE_PROGRAM, 16 )
/**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE(&cave_vctrl_2) // Layer 2 Control
/**/AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_BASE_GENERIC(paletteram) AM_SIZE(&cave_paletteram_size) // Palette
AM_RANGE(0xd00010, 0xd00011) AM_READ_PORT("IN0") // Inputs
AM_RANGE(0xd00010, 0xd00011) AM_WRITE(cave_eeprom_lsb_w) // EEPROM
AM_RANGE(0xd00010, 0xd00011) AM_DEVWRITE("eeprom", cave_eeprom_lsb_w) // EEPROM
AM_RANGE(0xd00012, 0xd00013) AM_READ_PORT("IN1") // Inputs + EEPROM
// AM_RANGE(0xd00012, 0xd00013) AM_WRITENOP // ?
// AM_RANGE(0xd00014, 0xd00015) AM_WRITENOP // ? $800068 in dfeveron ? probably Watchdog
@ -661,7 +613,7 @@ static ADDRESS_MAP_START( hotdogst_map, ADDRESS_SPACE_PROGRAM, 16 )
/**/AM_RANGE(0xc00000, 0xc00005) AM_RAM AM_BASE(&cave_vctrl_2) // Layer 2 Control
AM_RANGE(0xc80000, 0xc80001) AM_READ_PORT("IN0") // Inputs
AM_RANGE(0xc80002, 0xc80003) AM_READ_PORT("IN1") // Inputs + EEPROM
AM_RANGE(0xd00000, 0xd00001) AM_WRITE(hotdogst_eeprom_msb_w) // EEPROM
AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE("eeprom", hotdogst_eeprom_msb_w) // EEPROM
AM_RANGE(0xd00002, 0xd00003) AM_WRITENOP // ???
/**/AM_RANGE(0xf00000, 0xf07fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites
/**/AM_RANGE(0xf08000, 0xf0ffff) AM_RAM AM_BASE(&cave_spriteram16_2) // Sprites?
@ -706,11 +658,11 @@ static WRITE16_HANDLER( korokoro_leds_w )
static int hopper;
static WRITE16_HANDLER( korokoro_eeprom_msb_w )
static WRITE16_DEVICE_HANDLER( korokoro_eeprom_msb_w )
{
if (data & ~0x7000)
{
logerror("CPU #0 PC: %06X - Unknown EEPROM bit written %04X\n",cpu_get_pc(space->cpu),data);
logerror("%s: Unknown EEPROM bit written %04X\n",cpuexec_describe_context(device->machine),data);
COMBINE_DATA( &leds[1] );
show_leds();
}
@ -720,13 +672,13 @@ static WRITE16_HANDLER( korokoro_eeprom_msb_w )
hopper = data & 0x0100; // ???
// latch the bit
eeprom_write_bit(data & 0x4000);
eepromdev_write_bit(device, data & 0x4000);
// reset line asserted: reset.
eeprom_set_cs_line((data & 0x1000) ? CLEAR_LINE : ASSERT_LINE );
eepromdev_set_cs_line(device, (data & 0x1000) ? CLEAR_LINE : ASSERT_LINE );
// clock line asserted: write latch or select next bit to read
eeprom_set_clock_line((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE );
eepromdev_set_clock_line(device, (data & 0x2000) ? ASSERT_LINE : CLEAR_LINE );
}
}
@ -752,7 +704,7 @@ static ADDRESS_MAP_START( korokoro_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x280000, 0x280001) AM_READ_PORT("IN0") // Inputs + ???
AM_RANGE(0x280002, 0x280003) AM_READ_PORT("IN1") // Inputs + EEPROM
AM_RANGE(0x280008, 0x280009) AM_WRITE(korokoro_leds_w)
AM_RANGE(0x28000a, 0x28000b) AM_WRITE(korokoro_eeprom_msb_w) // EEPROM
AM_RANGE(0x28000a, 0x28000b) AM_DEVWRITE("eeprom", korokoro_eeprom_msb_w) // EEPROM
AM_RANGE(0x28000c, 0x28000d) AM_WRITENOP // 0 (watchdog?)
AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM
ADDRESS_MAP_END
@ -777,7 +729,7 @@ static ADDRESS_MAP_START( mazinger_map, ADDRESS_SPACE_PROGRAM, 16 )
/**/AM_RANGE(0x700000, 0x700005) AM_RAM AM_BASE(&cave_vctrl_0) // Layer 0 Control
AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") // Inputs
AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1") // Inputs + EEPROM
AM_RANGE(0x900000, 0x900001) AM_WRITE(cave_eeprom_msb_w) // EEPROM
AM_RANGE(0x900000, 0x900001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM
/**/AM_RANGE(0xc08000, 0xc0ffff) AM_RAM AM_BASE_GENERIC(paletteram) AM_SIZE(&cave_paletteram_size) // Palette
AM_RANGE(0xd00000, 0xd7ffff) AM_ROMBANK("bank1") // ROM
ADDRESS_MAP_END
@ -809,7 +761,7 @@ static ADDRESS_MAP_START( metmqstr_map, ADDRESS_SPACE_PROGRAM, 16 )
/**/AM_RANGE(0xc00000, 0xc00005) AM_RAM AM_BASE(&cave_vctrl_0) // Layer 0 Control
AM_RANGE(0xc80000, 0xc80001) AM_READ_PORT("IN0") // Inputs
AM_RANGE(0xc80002, 0xc80003) AM_READ_PORT("IN1") // Inputs + EEPROM
AM_RANGE(0xd00000, 0xd00001) AM_WRITE(metmqstr_eeprom_msb_w) // EEPROM
AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE("eeprom", metmqstr_eeprom_msb_w) // EEPROM
AM_RANGE(0xf00000, 0xf07fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) // Sprites
AM_RANGE(0xf08000, 0xf0ffff) AM_RAM AM_BASE(&cave_spriteram16_2) // RAM
ADDRESS_MAP_END
@ -819,9 +771,9 @@ ADDRESS_MAP_END
Power Instinct 2
***************************************************************************/
static READ16_HANDLER( pwrinst2_eeprom_r )
static READ16_DEVICE_HANDLER( pwrinst2_eeprom_r )
{
return ~8 + ((eeprom_read_bit() & 1) ? 8 : 0);
return ~8 + ((eepromdev_read_bit(device) & 1) ? 8 : 0);
}
INLINE void vctrl_w(UINT16 *VCTRL, ATTR_UNUSED offs_t offset, ATTR_UNUSED UINT16 data, ATTR_UNUSED UINT16 mem_mask)
@ -850,7 +802,7 @@ static ADDRESS_MAP_START( pwrinst2_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0") // Inputs
AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN1") //
AM_RANGE(0x600000, 0x6fffff) AM_ROM AM_REGION("user1", 0) // extra data ROM space
AM_RANGE(0x700000, 0x700001) AM_WRITE(cave_eeprom_msb_w) // EEPROM
AM_RANGE(0x700000, 0x700001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM
AM_RANGE(0x800000, 0x807fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE(&cave_vram_2) // Layer 2
AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0) // Layer 0
AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1) // Layer 1
@ -865,7 +817,7 @@ static ADDRESS_MAP_START( pwrinst2_map, ADDRESS_SPACE_PROGRAM, 16 )
/**/AM_RANGE(0xc80000, 0xc80005) AM_RAM_WRITE(pwrinst2_vctrl_3_w) AM_BASE(&cave_vctrl_3) // Layer 3 Control
AM_RANGE(0xd80000, 0xd80001) AM_READ(soundlatch_ack_r) // ? From Sound CPU
AM_RANGE(0xe00000, 0xe00001) AM_WRITE(sound_cmd_w) // To Sound CPU
AM_RANGE(0xe80000, 0xe80001) AM_READ(pwrinst2_eeprom_r) // EEPROM
AM_RANGE(0xe80000, 0xe80001) AM_DEVREAD("eeprom", pwrinst2_eeprom_r) // EEPROM
AM_RANGE(0xf00000, 0xf04fff) AM_RAM AM_BASE_GENERIC(paletteram) AM_SIZE(&cave_paletteram_size) // Palette
ADDRESS_MAP_END
@ -908,7 +860,7 @@ static ADDRESS_MAP_START( sailormn_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x510000, 0x510001) AM_RAM // (agallet)
AM_RANGE(0x600000, 0x600001) AM_READ(sailormn_input0_r) // Inputs + Watchdog!
AM_RANGE(0x600002, 0x600003) AM_READ_PORT("IN1") // Inputs + EEPROM
AM_RANGE(0x700000, 0x700001) AM_WRITE(sailormn_eeprom_msb_w) // EEPROM
AM_RANGE(0x700000, 0x700001) AM_DEVWRITE("eeprom", sailormn_eeprom_msb_w) // EEPROM
AM_RANGE(0x800000, 0x807fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0) // Layer 0
AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1) // Layer 1
AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE(&cave_vram_2) // Layer 2
@ -941,7 +893,7 @@ static ADDRESS_MAP_START( uopoko_map, ADDRESS_SPACE_PROGRAM, 16 )
/**/AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_BASE_GENERIC(paletteram) AM_SIZE(&cave_paletteram_size) // Palette
AM_RANGE(0x900000, 0x900001) AM_READ_PORT("IN0") // Inputs
AM_RANGE(0x900002, 0x900003) AM_READ_PORT("IN1") // Inputs + EEPROM
AM_RANGE(0xa00000, 0xa00001) AM_WRITE(cave_eeprom_msb_w) // EEPROM
AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("eeprom", cave_eeprom_msb_w) // EEPROM
ADDRESS_MAP_END
@ -1219,7 +1171,7 @@ static INPUT_PORTS_START( cave )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(6)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL)
PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("eeprom", eepromdev_read_bit)
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -1395,7 +1347,7 @@ static INPUT_PORTS_START( guwange )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL)
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("eeprom", eepromdev_read_bit)
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -1439,7 +1391,7 @@ static INPUT_PORTS_START( korokoro )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL)
PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("eeprom", eepromdev_read_bit)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -1671,7 +1623,7 @@ static MACHINE_RESET( cave )
/* modify the eeprom on a reset with the desired region for the games that have the
region factory set in eeprom */
if (cave_region_byte >= 0)
((UINT8 *)eeprom_get_data_pointer(NULL,NULL))[cave_region_byte] = input_port_read(machine, "EEPROM");
((UINT8 *)eepromdev_get_data_pointer(devtag_get_device(machine, "eeprom"),NULL,NULL))[cave_region_byte] = input_port_read(machine, "EEPROM");
}
static const ymz280b_interface ymz280b_intf =
@ -1712,7 +1664,7 @@ static MACHINE_DRIVER_START( dfeveron )
MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
MDRV_MACHINE_RESET(cave)
MDRV_NVRAM_HANDLER(cave)
MDRV_EEPROM_93C46_ADD("eeprom")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@ -1751,7 +1703,7 @@ static MACHINE_DRIVER_START( ddonpach )
MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
MDRV_MACHINE_RESET(cave)
MDRV_NVRAM_HANDLER(cave)
MDRV_EEPROM_93C46_ADD("eeprom")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@ -1790,7 +1742,7 @@ static MACHINE_DRIVER_START( donpachi )
MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
MDRV_MACHINE_RESET(cave)
MDRV_NVRAM_HANDLER(cave)
MDRV_EEPROM_93C46_ADD("eeprom")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@ -1834,7 +1786,7 @@ static MACHINE_DRIVER_START( esprade )
MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
MDRV_MACHINE_RESET(cave)
MDRV_NVRAM_HANDLER(cave)
MDRV_EEPROM_93C46_ADD("eeprom")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@ -1911,7 +1863,7 @@ static MACHINE_DRIVER_START( guwange )
MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
MDRV_MACHINE_RESET(cave)
MDRV_NVRAM_HANDLER(cave)
MDRV_EEPROM_93C46_ADD("eeprom")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@ -1953,7 +1905,7 @@ static MACHINE_DRIVER_START( hotdogst )
MDRV_CPU_IO_MAP(hotdogst_sound_portmap)
MDRV_MACHINE_RESET(cave)
MDRV_NVRAM_HANDLER(cave)
MDRV_EEPROM_93C46_ADD("eeprom")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@ -2003,7 +1955,7 @@ static MACHINE_DRIVER_START( korokoro )
MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
MDRV_MACHINE_RESET(cave)
MDRV_NVRAM_HANDLER(korokoro)
MDRV_EEPROM_ADD("eeprom", eeprom_interface_93C46_8bit)
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@ -2048,7 +2000,7 @@ static MACHINE_DRIVER_START( mazinger )
MDRV_WATCHDOG_TIME_INIT(SEC(3)) /* a guess, and certainly wrong */
MDRV_MACHINE_RESET(cave)
MDRV_NVRAM_HANDLER(cave)
MDRV_EEPROM_93C46_ADD("eeprom")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@ -2104,7 +2056,7 @@ static MACHINE_DRIVER_START( metmqstr )
MDRV_WATCHDOG_TIME_INIT(SEC(3)) /* a guess, and certainly wrong */
MDRV_MACHINE_RESET(cave) /* start with the watchdog armed */
MDRV_NVRAM_HANDLER(cave)
MDRV_EEPROM_93C46_ADD("eeprom")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@ -2159,7 +2111,7 @@ static MACHINE_DRIVER_START( pwrinst2 )
MDRV_CPU_IO_MAP(pwrinst2_sound_portmap)
MDRV_MACHINE_RESET(cave)
MDRV_NVRAM_HANDLER(cave)
MDRV_EEPROM_93C46_ADD("eeprom")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@ -2220,7 +2172,7 @@ static MACHINE_DRIVER_START( sailormn )
// MDRV_QUANTUM_TIME(HZ(600))
MDRV_MACHINE_RESET(cave)
MDRV_NVRAM_HANDLER(cave)
MDRV_EEPROM_93C46_ADD("eeprom")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@ -2267,7 +2219,7 @@ static MACHINE_DRIVER_START( uopoko )
MDRV_CPU_PROGRAM_MAP(uopoko_map)
MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
MDRV_NVRAM_HANDLER(cave)
MDRV_EEPROM_93C46_ADD("eeprom")
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@ -2437,6 +2389,9 @@ ROM_START( agallet ) /* PCB showed "Taiwan Only" on the copyright notice screen.
ROM_REGION( 0x240000, "oki2", 0 ) /* OKIM6295 #1 Samples */
/* Leave the 0x40000 bytes addressable by the chip empty */
ROM_LOAD( "bp962a.u47", 0x040000, 0x200000, CRC(6d4e9737) SHA1(81c7ecdfc2d38d0b35e26745866f6672f566f936) ) // 16 x $20000, FIRST AND SECOND HALF IDENTICAL
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-agallet.bin", 0x0000, 0x0080, CRC(ec38bf65) SHA1(cb8d9eacc0cf55a0c6b187e6673e3354554314b5) )
ROM_END
@ -2466,6 +2421,9 @@ ROM_START( dfeveron )
ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */
ROM_LOAD( "cv01-u19.bin", 0x000000, 0x400000, CRC(5f5514da) SHA1(53f27364aee544572a82649c9ff29bacc642b732) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-dfeveron.bin", 0x0000, 0x0080, CRC(c3174959) SHA1(29b5c94722756481e4f84bfd75dee15fdb5c8cf7) )
ROM_END
/*
@ -2569,6 +2527,9 @@ ROM_START( feversos )
ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */
ROM_LOAD( "cv01-u19.bin", 0x000000, 0x400000, CRC(5f5514da) SHA1(53f27364aee544572a82649c9ff29bacc642b732) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-feversos.bin", 0x0000, 0x0080, CRC(d80303aa) SHA1(8580f7c2223c72614516d800a98465e362c333ef) )
ROM_END
/***************************************************************************
@ -2607,6 +2568,9 @@ ROM_START( ddonpach )
ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */
ROM_LOAD( "u6.bin", 0x000000, 0x200000, CRC(9dfdafaf) SHA1(f5cb450cdc78a20c3a74c6dac05c9ac3cba08327) )
ROM_LOAD( "u7.bin", 0x200000, 0x200000, CRC(795b17d5) SHA1(cbfc29f1df9600c82e0fdae00edd00da5b73e14c) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-ddonpach.bin", 0x0000, 0x0080, CRC(315fb546) SHA1(7f597107d1610fc286413e0e93c794c80c0c554f) )
ROM_END
@ -2633,6 +2597,9 @@ ROM_START( ddonpachj )
ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */
ROM_LOAD( "u6.bin", 0x000000, 0x200000, CRC(9dfdafaf) SHA1(f5cb450cdc78a20c3a74c6dac05c9ac3cba08327) )
ROM_LOAD( "u7.bin", 0x200000, 0x200000, CRC(795b17d5) SHA1(cbfc29f1df9600c82e0fdae00edd00da5b73e14c) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-ddonpach.bin", 0x0000, 0x0080, CRC(315fb546) SHA1(7f597107d1610fc286413e0e93c794c80c0c554f) )
ROM_END
@ -2700,6 +2667,9 @@ ROM_START( donpachi )
/* Leave the 0x40000 bytes addressable by the chip empty */
ROM_LOAD( "atdp.u32", 0x040000, 0x100000, CRC(0d89fcca) SHA1(e16ed15fa5e72537822f7b37e83ccfed0fa87338) )
ROM_LOAD( "atdp.u33", 0x140000, 0x200000, CRC(d749de00) SHA1(64a0acc23eb2515e7d0459f0289919e083c63afc) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-donpachi.bin", 0x0000, 0x0080, CRC(315fb546) SHA1(7f597107d1610fc286413e0e93c794c80c0c554f) )
ROM_END
ROM_START( donpachij )
@ -2727,6 +2697,9 @@ ROM_START( donpachij )
/* Leave the 0x40000 bytes addressable by the chip empty */
ROM_LOAD( "atdp.u32", 0x040000, 0x100000, CRC(0d89fcca) SHA1(e16ed15fa5e72537822f7b37e83ccfed0fa87338) )
ROM_LOAD( "atdp.u33", 0x140000, 0x200000, CRC(d749de00) SHA1(64a0acc23eb2515e7d0459f0289919e083c63afc) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-donpachi.bin", 0x0000, 0x0080, CRC(315fb546) SHA1(7f597107d1610fc286413e0e93c794c80c0c554f) )
ROM_END
ROM_START( donpachikr )
@ -2754,6 +2727,9 @@ ROM_START( donpachikr )
/* Leave the 0x40000 bytes addressable by the chip empty */
ROM_LOAD( "atdp.u32", 0x040000, 0x100000, CRC(0d89fcca) SHA1(e16ed15fa5e72537822f7b37e83ccfed0fa87338) )
ROM_LOAD( "atdp.u33", 0x140000, 0x200000, CRC(d749de00) SHA1(64a0acc23eb2515e7d0459f0289919e083c63afc) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-donpachi.bin", 0x0000, 0x0080, CRC(315fb546) SHA1(7f597107d1610fc286413e0e93c794c80c0c554f) )
ROM_END
ROM_START( donpachihk )
@ -2781,6 +2757,9 @@ ROM_START( donpachihk )
/* Leave the 0x40000 bytes addressable by the chip empty */
ROM_LOAD( "atdp.u32", 0x040000, 0x100000, CRC(0d89fcca) SHA1(e16ed15fa5e72537822f7b37e83ccfed0fa87338) )
ROM_LOAD( "atdp.u33", 0x140000, 0x200000, CRC(d749de00) SHA1(64a0acc23eb2515e7d0459f0289919e083c63afc) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-donpachi.bin", 0x0000, 0x0080, CRC(315fb546) SHA1(7f597107d1610fc286413e0e93c794c80c0c554f) )
ROM_END
@ -2817,6 +2796,9 @@ ROM_START( esprade )
ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */
ROM_LOAD( "u19.bin", 0x000000, 0x400000, CRC(f54b1cab) SHA1(34d70bb5798de85d892c062001d9ac1d6604fd9f) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-esprade.bin", 0x0000, 0x0080, CRC(315fb546) SHA1(7f597107d1610fc286413e0e93c794c80c0c554f) )
ROM_END
ROM_START( espradej )
@ -2843,6 +2825,9 @@ ROM_START( espradej )
ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */
ROM_LOAD( "u19.bin", 0x000000, 0x400000, CRC(f54b1cab) SHA1(34d70bb5798de85d892c062001d9ac1d6604fd9f) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-esprade.bin", 0x0000, 0x0080, CRC(315fb546) SHA1(7f597107d1610fc286413e0e93c794c80c0c554f) )
ROM_END
ROM_START( espradejo )
@ -2869,6 +2854,9 @@ ROM_START( espradejo )
ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */
ROM_LOAD( "u19.bin", 0x000000, 0x400000, CRC(f54b1cab) SHA1(34d70bb5798de85d892c062001d9ac1d6604fd9f) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-esprade.bin", 0x0000, 0x0080, CRC(315fb546) SHA1(7f597107d1610fc286413e0e93c794c80c0c554f) )
ROM_END
@ -3044,6 +3032,9 @@ ROM_START( guwange )
ROM_LOAD( "u0259.bin", 0x0000, 0x0001, NO_DUMP ) /* XC9536-15PC44C Located at U0249. (Chip label different then label silk screened onto the board.) */
ROM_LOAD( "u108.bin", 0x0000, 0x0001, NO_DUMP ) /* XC9536-15PC44C Located at U108. */
ROM_LOAD( "u084.bin", 0x0000, 0x0001, NO_DUMP ) /* XC9536-15PC44C Located at U084. */
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-guwange.bin", 0x0000, 0x0080, CRC(c3174959) SHA1(29b5c94722756481e4f84bfd75dee15fdb5c8cf7) )
ROM_END
@ -3093,6 +3084,9 @@ ROM_START( hotdogst )
ROM_REGION( 0xc0000, "oki", 0 ) /* Samples */
/* Leave the 0x40000 bytes addressable by the chip empty */
ROM_LOAD( "mp1u65", 0x40000, 0x80000, CRC(4868be1b) SHA1(32b8234b19fdbe07fa5057fa7965e36807e35e77) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF, 4 x 0x20000
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-hotdogst.bin", 0x0000, 0x0080, CRC(12b4f934) SHA1(5b28d8fbd78869db78ce49e541a9d65558841966) )
ROM_END
@ -3207,6 +3201,9 @@ ROM_START( mazinger )
ROM_REGION( 0x0c0000, "oki", 0 ) /* Samples */
/* Leave the 0x40000 bytes addressable by the chip empty */
ROM_LOAD( "bp943a-4.u64", 0x040000, 0x080000, CRC(3fc7f29a) SHA1(feb21b918243c0a03dfa4a80cc80b86be4f62680) ) // 4 x $20000
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-mazinger.bin", 0x0000, 0x0080, CRC(4f6225c6) SHA1(ed8e1c3ca9b961778cd317deb0dd8a0143eaab4f) )
ROM_END
@ -3681,6 +3678,9 @@ ROM_START( sailormn )
ROM_RELOAD( 0x0c0000, 0x080000 )
ROM_RELOAD( 0x140000, 0x080000 )
ROM_RELOAD( 0x1c0000, 0x080000 )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-sailormn.bin", 0x0000, 0x0080, CRC(59a7dc50) SHA1(6b116bdfbde42192b01678cb0b9bab0f2e56fd28) )
ROM_END
ROM_START( sailormno )
@ -3725,6 +3725,9 @@ ROM_START( sailormno )
ROM_RELOAD( 0x0c0000, 0x080000 )
ROM_RELOAD( 0x140000, 0x080000 )
ROM_RELOAD( 0x1c0000, 0x080000 )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-sailormn.bin", 0x0000, 0x0080, CRC(59a7dc50) SHA1(6b116bdfbde42192b01678cb0b9bab0f2e56fd28) )
ROM_END
@ -3749,6 +3752,9 @@ ROM_START( uopoko )
ROM_REGION( 0x200000, "ymz", 0 ) /* Samples */
ROM_LOAD( "u4.bin", 0x000000, 0x200000, CRC(a2d0d755) SHA1(f8493ef7f367f3dc2a229ba785ac67bc5c2c54c0) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-uopoko.bin", 0x0000, 0x0080, CRC(f4a24b95) SHA1(4043f0ffed24e38b4f7dbe1a5a4a9e79bdde7dfd) )
ROM_END
ROM_START( uopokoj )
@ -3764,6 +3770,9 @@ ROM_START( uopokoj )
ROM_REGION( 0x200000, "ymz", 0 ) /* Samples */
ROM_LOAD( "u4.bin", 0x000000, 0x200000, CRC(a2d0d755) SHA1(f8493ef7f367f3dc2a229ba785ac67bc5c2c54c0) )
ROM_REGION16_BE( 0x80, "eeprom", 0 )
ROM_LOAD16_WORD( "eeprom-uopoko.bin", 0x0000, 0x0080, CRC(f4a24b95) SHA1(4043f0ffed24e38b4f7dbe1a5a4a9e79bdde7dfd) )
ROM_END
@ -3802,8 +3811,6 @@ static void sailormn_unpack_tiles( running_machine *machine, const char *region
static void init_cave(running_machine *machine)
{
cave_default_eeprom = 0;
cave_default_eeprom_length = 0;
cave_region_byte = -1;
cave_spritetype = 0; // Normal sprites
@ -3821,8 +3828,6 @@ static DRIVER_INIT( agallet )
sailormn_unpack_tiles( machine, "gfx4" );
cave_default_eeprom = cave_default_eeprom_type7;
cave_default_eeprom_length = sizeof(cave_default_eeprom_type7);
cave_region_byte = 0x1f;
unpack_sprites(machine);
@ -3835,8 +3840,6 @@ static DRIVER_INIT( dfeveron )
{
init_cave(machine);
cave_default_eeprom = cave_default_eeprom_type1;
cave_default_eeprom_length = sizeof(cave_default_eeprom_type1);
cave_region_byte = -1;
unpack_sprites(machine);
@ -3847,8 +3850,6 @@ static DRIVER_INIT( feversos )
{
init_cave(machine);
cave_default_eeprom = cave_default_eeprom_type1feversos;
cave_default_eeprom_length = sizeof(cave_default_eeprom_type1feversos);
cave_region_byte = -1;
unpack_sprites(machine);
@ -3859,8 +3860,6 @@ static DRIVER_INIT( ddonpach )
{
init_cave(machine);
cave_default_eeprom = cave_default_eeprom_type2;
cave_default_eeprom_length = sizeof(cave_default_eeprom_type2);
cave_region_byte = -1;
ddonpach_unpack_sprites(machine);
@ -3872,8 +3871,6 @@ static DRIVER_INIT( donpachi )
{
init_cave(machine);
cave_default_eeprom = cave_default_eeprom_type2;
cave_default_eeprom_length = sizeof(cave_default_eeprom_type2);
cave_region_byte = -1;
ddonpach_unpack_sprites(machine);
@ -3887,8 +3884,6 @@ static DRIVER_INIT( esprade )
{
init_cave(machine);
cave_default_eeprom = cave_default_eeprom_type2;
cave_default_eeprom_length = sizeof(cave_default_eeprom_type2);
cave_region_byte = -1;
esprade_unpack_sprites(machine);
@ -3917,8 +3912,6 @@ static DRIVER_INIT( guwange )
{
init_cave(machine);
cave_default_eeprom = cave_default_eeprom_type1;
cave_default_eeprom_length = sizeof(cave_default_eeprom_type1);
cave_region_byte = -1;
esprade_unpack_sprites(machine);
@ -3929,8 +3922,6 @@ static DRIVER_INIT( hotdogst )
{
init_cave(machine);
cave_default_eeprom = cave_default_eeprom_type4;
cave_default_eeprom_length = sizeof(cave_default_eeprom_type4);
cave_region_byte = -1;
unpack_sprites(machine);
@ -3956,8 +3947,6 @@ static DRIVER_INIT( mazinger )
free(buffer);
}
cave_default_eeprom = cave_default_eeprom_type5;
cave_default_eeprom_length = sizeof(cave_default_eeprom_type5);
cave_region_byte = 0x05;
unpack_sprites(machine);
@ -4047,8 +4036,6 @@ static DRIVER_INIT( sailormn )
sailormn_unpack_tiles( machine, "gfx4" );
cave_default_eeprom = cave_default_eeprom_type6;
cave_default_eeprom_length = sizeof(cave_default_eeprom_type6);
cave_region_byte = 0x11;
unpack_sprites(machine);
@ -4061,8 +4048,6 @@ static DRIVER_INIT( uopoko )
{
init_cave(machine);
cave_default_eeprom = cave_default_eeprom_type3;
cave_default_eeprom_length = sizeof(cave_default_eeprom_type4);
cave_region_byte = -1;
unpack_sprites(machine);
@ -4088,32 +4073,32 @@ static DRIVER_INIT( korokoro )
***************************************************************************/
GAME( 1994, pwrinst2, 0, pwrinst2, metmqstr, pwrinst2, ROT0, "Atlus/Cave", "Power Instinct 2 (US, Ver. 94/04/08)" , 0 )
GAME( 1994, pwrinst2j,pwrinst2, pwrinst2, metmqstr, pwrins2j, ROT0, "Atlus/Cave", "Gouketsuji Ichizoku 2 (Japan, Ver. 94/04/08)" , 0 )
GAME( 1994, mazinger, 0, mazinger, mazinger, mazinger, ROT90, "Banpresto/Dynamic Pl. Toei Animation", "Mazinger Z (International/Japan)" , 0 ) // region in eeprom
GAME( 1994, pwrinst2, 0, pwrinst2, metmqstr, pwrinst2, ROT0, "Atlus/Cave", "Power Instinct 2 (US, Ver. 94/04/08)" , 0 )
GAME( 1994, pwrinst2j, pwrinst2, pwrinst2, metmqstr, pwrins2j, ROT0, "Atlus/Cave", "Gouketsuji Ichizoku 2 (Japan, Ver. 94/04/08)" , 0 )
GAME( 1994, mazinger, 0, mazinger, mazinger, mazinger, ROT90, "Banpresto/Dynamic Pl. Toei Animation", "Mazinger Z (International/Japan)" , 0 ) // region in eeprom
GAME( 1995, donpachi, 0, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (US)" , 0 )
GAME( 1995, donpachij, donpachi, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (Japan)" , 0 )
GAME( 1995, donpachikr, donpachi, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (Korea)" , 0 )
GAME( 1995, donpachihk, donpachi, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (Hong Kong)" , 0 )
GAME( 1995, metmqstr, 0, metmqstr, metmqstr, metmqstr, ROT0, "Banpresto/Pandorabox", "Metamoqester (International)" , 0 )
GAME( 1995, nmaster, metmqstr, metmqstr, metmqstr, metmqstr, ROT0, "Banpresto/Pandorabox", "Oni - The Ninja Master (Japan)" , 0 )
GAME( 1995, plegends, 0, pwrinst2, metmqstr, pwrins2j, ROT0, "Atlus/Cave", "Power Instinct Legends (US, Ver. 95/06/20)" , 0 )
GAME( 1995, plegendsj,plegends, pwrinst2, metmqstr, pwrins2j, ROT0, "Atlus/Cave", "Gouketsuji Ichizoku Saikyou Densetsu (Japan, Ver. 95/06/20)", 0 )
GAME( 1995, sailormn, 0, sailormn, sailormn, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (JUEHTK, Ver. 95/03/22B)" , 0 ) // region in eeprom
GAME( 1995, sailormno,sailormn, sailormn, sailormn, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (JUEHTK, Ver. 95/03/22)" , 0 ) // region in eeprom
GAME( 1996, agallet, 0, sailormn, sailormn, agallet, ROT270, "Banpresto / Gazelle", "Air Gallet (JUEHTK)" , 0 ) // board was taiwan, region in eeprom
GAME( 1996, hotdogst, 0, hotdogst, cave, hotdogst, ROT90, "Marble", "Hotdog Storm (International)" , 0 )
GAME( 1997, ddonpach, 0, ddonpach, cave, ddonpach, ROT270, "Atlus/Cave", "DoDonPachi (International, Master Ver. 97/02/05)" , 0 )
GAME( 1997, ddonpachj,ddonpach, ddonpach, cave, ddonpach, ROT270, "Atlus/Cave", "DoDonPachi (Japan, Master Ver. 97/02/05)" , 0 )
GAME( 1998, dfeveron, feversos, dfeveron, cave, dfeveron, ROT270, "Cave (Nihon System license)", "Dangun Feveron (Japan, Ver. 98/09/17)" , 0 )
GAME( 1998, feversos, 0, dfeveron, cave, feversos, ROT270, "Cave (Nihon System license)", "Fever SOS (International, Ver. 98/09/25)" , 0 )
GAME( 1998, esprade, 0, esprade, cave, esprade, ROT270, "Atlus/Cave", "ESP Ra.De. (International, Ver. 98/04/22)" , 0 )
GAME( 1998, espradej, esprade, esprade, cave, esprade, ROT270, "Atlus/Cave", "ESP Ra.De. (Japan, Ver. 98/04/21)" , 0 )
GAME( 1998, espradejo,esprade, esprade, cave, esprade, ROT270, "Atlus/Cave", "ESP Ra.De. (Japan, Ver. 98/04/14)" , 0 )
GAME( 1998, uopoko, 0, uopoko, cave, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (International)" , 0 )
GAME( 1998, uopokoj, uopoko, uopoko, cave, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (Japan)" , 0 )
GAME( 1999, guwange, 0, guwange, guwange, guwange, ROT270, "Atlus/Cave", "Guwange (Japan, Master Ver. 99/06/24)" , 0 )
GAME( 1999, gaia, 0, gaia, gaia, gaia, ROT0, "Noise Factory", "Gaia Crusaders", GAME_IMPERFECT_SOUND ) // cuts out occasionally
GAME( 2001, theroes, 0, gaia, theroes, gaia, ROT0, "Primetek Investments", "Thunder Heroes", GAME_IMPERFECT_SOUND ) // cuts out occasionally
GAME( 1995, metmqstr, 0, metmqstr, metmqstr, metmqstr, ROT0, "Banpresto/Pandorabox", "Metamoqester (International)" , 0 )
GAME( 1995, nmaster, metmqstr, metmqstr, metmqstr, metmqstr, ROT0, "Banpresto/Pandorabox", "Oni - The Ninja Master (Japan)" , 0 )
GAME( 1995, plegends, 0, pwrinst2, metmqstr, pwrins2j, ROT0, "Atlus/Cave", "Power Instinct Legends (US, Ver. 95/06/20)" , 0 )
GAME( 1995, plegendsj, plegends, pwrinst2, metmqstr, pwrins2j, ROT0, "Atlus/Cave", "Gouketsuji Ichizoku Saikyou Densetsu (Japan, Ver. 95/06/20)", 0 )
GAME( 1995, sailormn, 0, sailormn, sailormn, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (JUEHTK, Ver. 95/03/22B)" , 0 ) // region in eeprom
GAME( 1995, sailormno, sailormn, sailormn, sailormn, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (JUEHTK, Ver. 95/03/22)" , 0 ) // region in eeprom
GAME( 1996, agallet, 0, sailormn, sailormn, agallet, ROT270, "Banpresto / Gazelle", "Air Gallet (JUEHTK)" , 0 ) // board was taiwan, region in eeprom
GAME( 1996, hotdogst, 0, hotdogst, cave, hotdogst, ROT90, "Marble", "Hotdog Storm (International)" , 0 )
GAME( 1997, ddonpach, 0, ddonpach, cave, ddonpach, ROT270, "Atlus/Cave", "DoDonPachi (International, Master Ver. 97/02/05)" , 0 )
GAME( 1997, ddonpachj, ddonpach, ddonpach, cave, ddonpach, ROT270, "Atlus/Cave", "DoDonPachi (Japan, Master Ver. 97/02/05)" , 0 )
GAME( 1998, dfeveron, feversos, dfeveron, cave, dfeveron, ROT270, "Cave (Nihon System license)", "Dangun Feveron (Japan, Ver. 98/09/17)" , 0 )
GAME( 1998, feversos, 0, dfeveron, cave, feversos, ROT270, "Cave (Nihon System license)", "Fever SOS (International, Ver. 98/09/25)" , 0 )
GAME( 1998, esprade, 0, esprade, cave, esprade, ROT270, "Atlus/Cave", "ESP Ra.De. (International, Ver. 98/04/22)" , 0 )
GAME( 1998, espradej, esprade, esprade, cave, esprade, ROT270, "Atlus/Cave", "ESP Ra.De. (Japan, Ver. 98/04/21)" , 0 )
GAME( 1998, espradejo, esprade, esprade, cave, esprade, ROT270, "Atlus/Cave", "ESP Ra.De. (Japan, Ver. 98/04/14)" , 0 )
GAME( 1998, uopoko, 0, uopoko, cave, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (International)" , 0 )
GAME( 1998, uopokoj, uopoko, uopoko, cave, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (Japan)" , 0 )
GAME( 1999, guwange, 0, guwange, guwange, guwange, ROT270, "Atlus/Cave", "Guwange (Japan, Master Ver. 99/06/24)" , 0 )
GAME( 1999, gaia, 0, gaia, gaia, gaia, ROT0, "Noise Factory", "Gaia Crusaders", GAME_IMPERFECT_SOUND ) // cuts out occasionally
GAME( 2001, theroes, 0, gaia, theroes, gaia, ROT0, "Primetek Investments", "Thunder Heroes", GAME_IMPERFECT_SOUND ) // cuts out occasionally
GAME( 1999, korokoro, 0, korokoro, korokoro, korokoro, ROT0, "Takumi", "Koro Koro Quest (Japan)" , 0 )
GAME( 1999, korokoro, 0, korokoro, korokoro, korokoro, ROT0, "Takumi", "Koro Koro Quest (Japan)" , 0 )

View File

@ -15,7 +15,7 @@ Magic Sticks:
#include "driver.h"
#include "cpu/m68000/m68000.h"
#include "machine/eeprom.h"
#include "machine/eepromdev.h"
#include "sound/okim6295.h"
#include "includes/playmark.h"
@ -40,36 +40,15 @@ static const eeprom_interface eeprom_intf =
5 /* reset_delay (otherwise wbeachvl will hang when saving settings) */
};
static NVRAM_HANDLER( magicstk )
{
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( magicstk_coin_eeprom_w )
static WRITE16_DEVICE_HANDLER( magicstk_coin_eeprom_w )
{
if (ACCESSING_BITS_0_7)
{
coin_counter_w(space->machine, 0,data & 0x20);
coin_counter_w(device->machine, 0,data & 0x20);
eeprom_set_cs_line((data & 8) ? CLEAR_LINE : ASSERT_LINE);
eeprom_write_bit(data & 2);
eeprom_set_clock_line((data & 4) ? CLEAR_LINE : ASSERT_LINE);
eepromdev_set_cs_line(device, (data & 8) ? CLEAR_LINE : ASSERT_LINE);
eepromdev_write_bit(device, data & 2);
eepromdev_set_clock_line(device, (data & 4) ? CLEAR_LINE : ASSERT_LINE);
}
}
@ -108,7 +87,7 @@ static ADDRESS_MAP_START( magicstk_main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x098180, 0x09917f) AM_RAM_WRITE(magicstk_bgvideoram_w) AM_BASE(&magicstk_videoram)
AM_RANGE(0x0c2010, 0x0c2011) AM_READ_PORT("IN0")
AM_RANGE(0x0c2012, 0x0c2013) AM_READ_PORT("IN1")
AM_RANGE(0x0c2014, 0x0c2015) AM_READ_PORT("IN2") AM_WRITE(magicstk_coin_eeprom_w)
AM_RANGE(0x0c2014, 0x0c2015) AM_READ_PORT("IN2") AM_DEVWRITE("eeprom", magicstk_coin_eeprom_w)
AM_RANGE(0x0c2016, 0x0c2017) AM_READ_PORT("DSW1")
AM_RANGE(0x0c2018, 0x0c2019) AM_READ_PORT("DSW2")
AM_RANGE(0x0c201c, 0x0c201d) AM_DEVWRITE("oki", oki_banking)
@ -245,7 +224,7 @@ static INPUT_PORTS_START( magicstk )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN2")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL) /* EEPROM data */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("eeprom", eepromdev_read_bit) /* EEPROM data */
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -342,7 +321,7 @@ static INPUT_PORTS_START( hotminda )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN2")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL) /* EEPROM data */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("eeprom", eepromdev_read_bit) /* EEPROM data */
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -518,7 +497,8 @@ static MACHINE_DRIVER_START( magicstk )
MDRV_CPU_PROGRAM_MAP(magicstk_main_map)
MDRV_CPU_VBLANK_INT("screen", irq2_line_hold)
MDRV_NVRAM_HANDLER(magicstk)
MDRV_EEPROM_ADD("eeprom", eeprom_intf)
MDRV_EEPROM_DEFAULT_VALUE(0)
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)