added basic support for FLASH_AMD_29LV200T

This commit is contained in:
Michaël Banaan Ananas 2014-02-24 02:55:18 +00:00
parent 04cca4aa91
commit 49f492c4a8
3 changed files with 43 additions and 17 deletions

View file

@ -82,6 +82,7 @@ const device_type ATMEL_29C010 = &device_creator<atmel_29c010_device>;
const device_type AMD_29F010 = &device_creator<amd_29f010_device>; const device_type AMD_29F010 = &device_creator<amd_29f010_device>;
const device_type AMD_29F040 = &device_creator<amd_29f040_device>; const device_type AMD_29F040 = &device_creator<amd_29f040_device>;
const device_type AMD_29F080 = &device_creator<amd_29f080_device>; const device_type AMD_29F080 = &device_creator<amd_29f080_device>;
const device_type AMD_29LV200T = &device_creator<amd_29lv200t_device>;
const device_type FUJITSU_29F016A = &device_creator<fujitsu_29f016a_device>; const device_type FUJITSU_29F016A = &device_creator<fujitsu_29f016a_device>;
const device_type FUJITSU_29DL16X = &device_creator<fujitsu_29dl16x_device>; const device_type FUJITSU_29DL16X = &device_creator<fujitsu_29dl16x_device>;
const device_type INTEL_E28F400B = &device_creator<intel_e28f400b_device>; const device_type INTEL_E28F400B = &device_creator<intel_e28f400b_device>;
@ -210,6 +211,13 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
m_device_id = 0xd5; m_device_id = 0xd5;
map = ADDRESS_MAP_NAME( memory_map8_8Mb ); map = ADDRESS_MAP_NAME( memory_map8_8Mb );
break; break;
case FLASH_AMD_29LV200T:
m_bits = 8;
m_size = 0x40000;
m_maker_id = MFG_AMD;
m_device_id = 0x3b;
map = ADDRESS_MAP_NAME( memory_map8_2Mb );
break;
case FLASH_INTEL_28F320J3D: case FLASH_INTEL_28F320J3D:
m_bits = 16; m_bits = 16;
m_size = 0x400000; m_size = 0x400000;
@ -362,6 +370,9 @@ amd_29f040_device::amd_29f040_device(const machine_config &mconfig, const char *
amd_29f080_device::amd_29f080_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) amd_29f080_device::amd_29f080_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: intelfsh8_device(mconfig, AMD_29F080, "AMD 29F080 Flash", tag, owner, clock, FLASH_AMD_29F080, "amd_29f080", __FILE__) { } : intelfsh8_device(mconfig, AMD_29F080, "AMD 29F080 Flash", tag, owner, clock, FLASH_AMD_29F080, "amd_29f080", __FILE__) { }
amd_29lv200t_device::amd_29lv200t_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: intelfsh8_device(mconfig, AMD_29LV200T, "AMD 29LV200T Flash", tag, owner, clock, FLASH_AMD_29LV200T, "amd_29lv200t", __FILE__) { }
intel_e28f008sa_device::intel_e28f008sa_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) intel_e28f008sa_device::intel_e28f008sa_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: intelfsh8_device(mconfig, INTEL_E28F008SA, "Intel E28F008SA Flash", tag, owner, clock, FLASH_INTEL_E28F008SA, "intel_e28f008sa", __FILE__) { } : intelfsh8_device(mconfig, INTEL_E28F008SA, "Intel E28F008SA Flash", tag, owner, clock, FLASH_INTEL_E28F008SA, "intel_e28f008sa", __FILE__) { }
@ -539,9 +550,10 @@ UINT32 intelfsh_device::read_full(UINT32 address)
data = m_status; data = m_status;
break; break;
case FM_READAMDID3: case FM_READAMDID3:
if (m_maker_id == MFG_FUJITSU && m_device_id == 0x35) if ((m_maker_id == MFG_FUJITSU && m_device_id == 0x35) || (m_maker_id == MFG_AMD && m_device_id == 0x3b))
{ {
//used in Fujitsu 29DL16X 8bits mode // used in Fujitsu 29DL16X 8bits mode
// used in AMD 29LV200 8bits mode
switch (address) switch (address)
{ {
case 0: data = m_maker_id; break; case 0: data = m_maker_id; break;

View file

@ -28,6 +28,9 @@
#define MCFG_AMD_29F080_ADD(_tag) \ #define MCFG_AMD_29F080_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, AMD_29F080, 0) MCFG_DEVICE_ADD(_tag, AMD_29F080, 0)
#define MCFG_AMD_29LV200T_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, AMD_29LV200T, 0)
#define MCFG_FUJITSU_29F016A_ADD(_tag) \ #define MCFG_FUJITSU_29F016A_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, FUJITSU_29F016A, 0) MCFG_DEVICE_ADD(_tag, FUJITSU_29F016A, 0)
@ -97,6 +100,7 @@ public:
FLASH_AMD_29F010, FLASH_AMD_29F010,
FLASH_AMD_29F040, FLASH_AMD_29F040,
FLASH_AMD_29F080, FLASH_AMD_29F080,
FLASH_AMD_29LV200T,
FLASH_SHARP_LH28F016S, FLASH_SHARP_LH28F016S,
FLASH_INTEL_E28F008SA, FLASH_INTEL_E28F008SA,
FLASH_MACRONIX_29L001MC, FLASH_MACRONIX_29L001MC,
@ -243,6 +247,12 @@ public:
amd_29f080_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); amd_29f080_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
}; };
class amd_29lv200t_device : public intelfsh8_device
{
public:
amd_29lv200t_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
};
class sharp_lh28f016s_device : public intelfsh8_device class sharp_lh28f016s_device : public intelfsh8_device
{ {
public: public:
@ -336,6 +346,7 @@ extern const device_type ATMEL_29C010;
extern const device_type AMD_29F010; extern const device_type AMD_29F010;
extern const device_type AMD_29F040; extern const device_type AMD_29F040;
extern const device_type AMD_29F080; extern const device_type AMD_29F080;
extern const device_type AMD_29LV200T;
extern const device_type FUJITSU_29F016A; extern const device_type FUJITSU_29F016A;
extern const device_type FUJITSU_29DL16X; extern const device_type FUJITSU_29DL16X;
extern const device_type INTEL_E28F400B; extern const device_type INTEL_E28F400B;

View file

@ -206,21 +206,22 @@ WRITE8_MEMBER(_20pacgal_state::sprite_lookup_w)
// likewise the sound table.. is it being uploaded in a different format at 0x0c000? // likewise the sound table.. is it being uploaded in a different format at 0x0c000?
// we also need the palette data because there is only a single rom on this pcb? // we also need the palette data because there is only a single rom on this pcb?
static ADDRESS_MAP_START( 25pacman_map, AS_PROGRAM, 8, _25pacman_state ) static ADDRESS_MAP_START( 25pacman_map, AS_PROGRAM, 8, _25pacman_state )
AM_RANGE(0x00000, 0x3ffff) AM_ROM AM_REGION("flash", 0)
AM_RANGE(0x08000, 0x09fff) AM_READ_BANK("bank1") AM_WRITE(ram_48000_w)
AM_RANGE(0x04000, 0x047ff) AM_RAM AM_SHARE("video_ram") AM_RANGE(0x04000, 0x047ff) AM_RAM AM_SHARE("video_ram")
AM_RANGE(0x04800, 0x05fff) AM_RAM AM_RANGE(0x04800, 0x05fff) AM_RAM
AM_RANGE(0x06000, 0x06fff) AM_WRITEONLY AM_SHARE("char_gfx_ram") AM_RANGE(0x06000, 0x06fff) AM_WRITEONLY AM_SHARE("char_gfx_ram")
AM_RANGE(0x0a000, 0x0bfff) AM_WRITE(sprite_gfx_w)
// AM_RANGE(0x0fffe, 0x0ffff) AM_WRITENOP
// AM_RANGE(0x0c000, 0x0dfff) // is this the sound waveforms in a different format?
AM_RANGE(0x07000, 0x0717f) AM_WRITE(sprite_ram_w) AM_RANGE(0x07000, 0x0717f) AM_WRITE(sprite_ram_w)
// AM_RANGE(0x08000, 0x09fff) AM_READ_BANK("bank1") AM_WRITE(ram_48000_w)
AM_RANGE(0x08000, 0x09fff) AM_WRITENOP
AM_RANGE(0x0a000, 0x0bfff) AM_WRITE(sprite_gfx_w)
// AM_RANGE(0x00000, 0x3ffff) AM_DEVREADWRITE("flash", sst_39vf020_device, read, write ) // (always fall through if nothing else is mapped?) AM_RANGE(0x0c000, 0x0dfff) AM_WRITENOP // is this the sound waveforms in a different format?
AM_RANGE(0x0e000, 0x0ffff) AM_WRITENOP
AM_RANGE(0x1c000, 0x1ffff) AM_WRITENOP
AM_RANGE(0x00000, 0x3ffff) AM_DEVREADWRITE("flash", amd_29lv200t_device, read, write ) // (always fall through if nothing else is mapped?)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -236,7 +237,7 @@ static ADDRESS_MAP_START( 20pacgal_map, AS_PROGRAM, 8, _20pacgal_state )
AM_RANGE(0x45f00, 0x45fff) AM_DEVWRITE("namco", namco_cus30_device, namcos1_cus30_w) AM_RANGE(0x45f00, 0x45fff) AM_DEVWRITE("namco", namco_cus30_device, namcos1_cus30_w)
AM_RANGE(0x46000, 0x46fff) AM_WRITEONLY AM_SHARE("char_gfx_ram") AM_RANGE(0x46000, 0x46fff) AM_WRITEONLY AM_SHARE("char_gfx_ram")
AM_RANGE(0x47100, 0x47100) AM_RAM /* leftover from original Galaga code */ AM_RANGE(0x47100, 0x47100) AM_RAM /* leftover from original Galaga code */
AM_RANGE(0x48000, 0x49fff) AM_READ_BANK("bank1") AM_WRITE(ram_48000_w) /* this should be a mirror of 08000-09ffff */ AM_RANGE(0x48000, 0x49fff) AM_READ_BANK("bank1") AM_WRITE(ram_48000_w) /* this should be a mirror of 08000-09fff */
AM_RANGE(0x4c000, 0x4dfff) AM_WRITE(sprite_gfx_w) AM_RANGE(0x4c000, 0x4dfff) AM_WRITE(sprite_gfx_w)
AM_RANGE(0x4e000, 0x4e17f) AM_WRITE(sprite_ram_w) AM_RANGE(0x4e000, 0x4e17f) AM_WRITE(sprite_ram_w)
AM_RANGE(0x4e180, 0x4feff) AM_WRITENOP AM_RANGE(0x4e180, 0x4feff) AM_WRITENOP
@ -268,10 +269,12 @@ READ8_MEMBER( _25pacman_state::_25pacman_io_87_r )
// AM_RANGE(0x84, 0x84) AM_NOP /* ?? */ // AM_RANGE(0x84, 0x84) AM_NOP /* ?? */
AM_RANGE(0x85, 0x86) AM_WRITEONLY AM_SHARE("stars_seed") /* stars: rng seed (lo/hi) */ AM_RANGE(0x85, 0x86) AM_WRITEONLY AM_SHARE("stars_seed") /* stars: rng seed (lo/hi) */
AM_RANGE(0x87, 0x87) AM_READ( _25pacman_io_87_r ) // not eeprom on this AM_RANGE(0x87, 0x87) AM_READ( _25pacman_io_87_r ) // not eeprom on this
AM_RANGE(0x88, 0x88) AM_WRITE(ram_bank_select_w) AM_RANGE(0x87, 0x87) AM_WRITENOP
// AM_RANGE(0x88, 0x88) AM_WRITE(ram_bank_select_w)
AM_RANGE(0x89, 0x89) AM_DEVWRITE("dac", dac_device, write_signed8) AM_RANGE(0x89, 0x89) AM_DEVWRITE("dac", dac_device, write_signed8)
AM_RANGE(0x8a, 0x8a) AM_WRITEONLY AM_SHARE("stars_ctrl") /* stars: bits 3-4 = active set; bit 5 = enable */ AM_RANGE(0x8a, 0x8a) AM_WRITEONLY AM_SHARE("stars_ctrl") /* stars: bits 3-4 = active set; bit 5 = enable */
AM_RANGE(0x8b, 0x8b) AM_WRITEONLY AM_SHARE("flip") AM_RANGE(0x8b, 0x8b) AM_WRITEONLY AM_SHARE("flip")
AM_RANGE(0x8c, 0x8c) AM_WRITENOP
AM_RANGE(0x8f, 0x8f) AM_WRITE(_20pacgal_coin_counter_w) AM_RANGE(0x8f, 0x8f) AM_WRITE(_20pacgal_coin_counter_w)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -420,7 +423,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( 25pacman, 20pacgal, _25pacman_state )
MCFG_CPU_PROGRAM_MAP(25pacman_map) MCFG_CPU_PROGRAM_MAP(25pacman_map)
MCFG_CPU_IO_MAP(25pacman_io_map) MCFG_CPU_IO_MAP(25pacman_io_map)
MCFG_SST_39VF020_ADD("flash") // wrong type, should be AM29LV200 MCFG_AMD_29LV200T_ADD("flash")
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -530,8 +533,8 @@ DRIVER_INIT_MEMBER(_20pacgal_state,25pacman)
* *
*************************************/ *************************************/
GAME( 2006, 25pacman, 0, 25pacman, 25pacman, _20pacgal_state, 25pacman, ROT90, "Namco", "Pac-Man - 25th Anniversary Edition (Rev 3.00)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE | GAME_NOT_WORKING ) GAME( 2006, 25pacman, 0, 25pacman, 25pacman, _20pacgal_state, 25pacman, ROT90, "Namco / Cosmodog", "Pac-Man - 25th Anniversary Edition (Rev 3.00)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
GAME( 2005, 25pacmano, 25pacman, 20pacgal, 25pacman, _20pacgal_state, 25pacman, ROT90, "Namco", "Pac-Man - 25th Anniversary Edition (Rev 2.00)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE) GAME( 2005, 25pacmano, 25pacman, 20pacgal, 25pacman, _20pacgal_state, 25pacman, ROT90, "Namco / Cosmodog", "Pac-Man - 25th Anniversary Edition (Rev 2.00)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)
GAME( 2000, 20pacgal, 0, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.08)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE) GAME( 2000, 20pacgal, 0, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.08)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)
GAME( 2000, 20pacgalr4, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.04)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE) GAME( 2000, 20pacgalr4, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.04)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)