From fad04ad03e95a487570542ab8bffa3c9b307d116 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Thu, 29 Jun 2023 15:46:59 +1000 Subject: machine/atastorage.cpp: Made the CF Card behave more like a CF card. * machine/ataflash.cpp: Derive from CF card base rather than hard disk base. * konami/konamigs.cpp: Use ATA CF card device (true IDE mode 4). --- src/devices/machine/ataflash.cpp | 9 ++------ src/devices/machine/ataflash.h | 5 +---- src/devices/machine/atastorage.cpp | 9 ++++++++ src/devices/machine/atastorage.h | 15 +++++-------- src/mame/konami/konamigs.cpp | 8 ++++--- src/mame/sega/segasp.cpp | 42 +++++++++++++++++++++++++++++++++-- src/mame/sega/segasp.h | 45 -------------------------------------- 7 files changed, 62 insertions(+), 71 deletions(-) delete mode 100644 src/mame/sega/segasp.h diff --git a/src/devices/machine/ataflash.cpp b/src/devices/machine/ataflash.cpp index 7846ce9a888..54e7c841ace 100644 --- a/src/devices/machine/ataflash.cpp +++ b/src/devices/machine/ataflash.cpp @@ -11,14 +11,14 @@ ata_flash_pccard_device::ata_flash_pccard_device(const machine_config &mconfig, } ata_flash_pccard_device::ata_flash_pccard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) - : ide_hdd_device_base(mconfig, type, tag, owner, clock) + : cf_device_base(mconfig, type, tag, owner, clock) , device_pccard_interface(mconfig, *this) { } void ata_flash_pccard_device::device_reset() { - ide_hdd_device_base::device_reset(); + cf_device_base::device_reset(); if (m_image->exists()) { @@ -110,11 +110,6 @@ void ata_flash_pccard_device::write_reg(offs_t offset, uint16_t data, uint16_t m } } -attotime ata_flash_pccard_device::seek_time() -{ - return attotime::zero; -} - DEFINE_DEVICE_TYPE(TAITO_PCCARD1, taito_pccard1_device, "taito_pccard1", "Taito PC Card (Type 1)") diff --git a/src/devices/machine/ataflash.h b/src/devices/machine/ataflash.h index acf37a283d5..036c76b7909 100644 --- a/src/devices/machine/ataflash.h +++ b/src/devices/machine/ataflash.h @@ -10,7 +10,7 @@ DECLARE_DEVICE_TYPE(ATA_FLASH_PCCARD, ata_flash_pccard_device) -class ata_flash_pccard_device : public ide_hdd_device_base, public device_pccard_interface +class ata_flash_pccard_device : public cf_device_base, public device_pccard_interface { public: ata_flash_pccard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -26,9 +26,6 @@ protected: // device_t implementation virtual void device_reset() override; - virtual attotime seek_time() override; - uint8_t calculate_status() override { return ata_hle_device_base::calculate_status(); } - private: // ata_hle_device_base implementation virtual void set_irq_out(int state) override { } diff --git a/src/devices/machine/atastorage.cpp b/src/devices/machine/atastorage.cpp index b869f50ceea..8e46086691e 100644 --- a/src/devices/machine/atastorage.cpp +++ b/src/devices/machine/atastorage.cpp @@ -940,3 +940,12 @@ void cf_device_base::ide_build_identify_device() m_identify_buffer[160] = 0x00; /* 160: Power requirement description*/ m_identify_buffer[161] = 0x00; /* 161-255: reserved */ } + +//------------------------------------------------- +// seek_time +//------------------------------------------------- + +attotime cf_device_base::seek_time() +{ + return attotime::zero; +} diff --git a/src/devices/machine/atastorage.h b/src/devices/machine/atastorage.h index cb1212ccece..c3dc9aec416 100644 --- a/src/devices/machine/atastorage.h +++ b/src/devices/machine/atastorage.h @@ -96,26 +96,19 @@ protected: // construction/destruction ide_hdd_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); - // device-level overrides + // device_t implementation virtual void device_start() override; virtual void device_reset() override; - - // optional information overrides virtual void device_add_mconfig(machine_config &config) override; virtual int read_sector(uint32_t lba, void *buffer) override { return !m_image->exists() ? 0 : m_image->read(lba, buffer); } virtual int write_sector(uint32_t lba, const void *buffer) override { return !m_image->exists() ? 0 : m_image->write(lba, buffer); } virtual uint8_t calculate_status() override; - enum - { - TID_NULL = TID_BUSY + 1 - }; - required_device m_image; private: - emu_timer * m_last_status_timer; + emu_timer *m_last_status_timer; }; @@ -127,10 +120,12 @@ protected: // construction/destruction cf_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); - // optional information overrides + // device_t implementation virtual void device_add_mconfig(machine_config &config) override; virtual void ide_build_identify_device() override; + virtual attotime seek_time() override; + virtual uint8_t calculate_status() override { return ata_hle_device_base::calculate_status(); } }; #endif // MAME_MACHINE_ATASTORAGE_H diff --git a/src/mame/konami/konamigs.cpp b/src/mame/konami/konamigs.cpp index c6c0704791b..49ce4bafb0f 100644 --- a/src/mame/konami/konamigs.cpp +++ b/src/mame/konami/konamigs.cpp @@ -38,13 +38,15 @@ **************************************************************************/ #include "emu.h" + +#include "bus/ata/ataintf.h" +#include "bus/ata/hdd.h" #include "cpu/sh/sh3comn.h" #include "cpu/sh/sh4.h" -#include "bus/ata/ataintf.h" -#include "machine/ataflash.h" #include "machine/s3520cf.h" #include "machine/ticket.h" #include "sound/ymz280b.h" + #include "speaker.h" #include "screen.h" @@ -1030,7 +1032,7 @@ void gsan_state::machine_reset() static void gsan_devices(device_slot_interface &device) { - device.option_add("cfcard", ATA_FLASH_PCCARD); + device.option_add("cfcard", ATA_CF); } void gsan_state::gsan(machine_config &config) diff --git a/src/mame/sega/segasp.cpp b/src/mame/sega/segasp.cpp index 966103c7404..3055a9ae63e 100644 --- a/src/mame/sega/segasp.cpp +++ b/src/mame/sega/segasp.cpp @@ -101,10 +101,46 @@ G 171-8278G 315-6416 2x 512Mbit RMI */ #include "emu.h" + +#include "naomi.h" +#include "naomim4.h" + #include "cpu/sh/sh4.h" + #include "debugger.h" -#include "segasp.h" -#include "naomim4.h" + + +namespace { + +class segasp_state : public naomi_state +{ +public: + segasp_state(const machine_config &mconfig, device_type type, const char *tag) : + naomi_state(mconfig, type, tag), + m_sp_eeprom(*this, "sp_eeprom") + { + } + + void segasp(machine_config &config); + + void init_segasp(); + +private: + required_device m_sp_eeprom; + + uint64_t sp_eeprom_r(offs_t offset, uint64_t mem_mask = ~0); + void sp_eeprom_w(offs_t offset, uint64_t data, uint64_t mem_mask = ~0); + uint64_t sp_rombdflg_r(); + uint64_t sp_io_r(offs_t offset, uint64_t mem_mask = ~0); + uint64_t sn_93c46a_r(); + void sn_93c46a_w(uint64_t data); + uint64_t sp_bank_r(offs_t offset, uint64_t mem_mask = ~0); + void sp_bank_w(offs_t offset, uint64_t data, uint64_t mem_mask = ~0); + uint16_t m_sp_bank = 0; + + void onchip_port(address_map &map); + void segasp_map(address_map &map); +}; uint64_t segasp_state::sp_bank_r(offs_t offset, uint64_t mem_mask) { @@ -917,6 +953,8 @@ ROM_START( tetgiano ) ROM_LOAD( "317-0604-com.ic15", 0, 0x800, CRC(a46dfd47) SHA1(9e24739ecaaf85ef3b862485064450db6c607189) ) ROM_END +} // anonymous namespace + #define GAME_FLAGS (MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND) diff --git a/src/mame/sega/segasp.h b/src/mame/sega/segasp.h deleted file mode 100644 index 18747ea058c..00000000000 --- a/src/mame/sega/segasp.h +++ /dev/null @@ -1,45 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:David Haywood -/* Sega SP (Spider) - - Naomi derived platform - -*/ - -#ifndef MAME_SEGA_SEGASP_H -#define MAME_SEGA_SEGASP_H - -#pragma once - -#include "naomi.h" - -class segasp_state : public naomi_state -{ -public: - segasp_state(const machine_config &mconfig, device_type type, const char *tag) - : naomi_state(mconfig, type, tag), - m_sp_eeprom(*this, "sp_eeprom") - { } - - void segasp(machine_config &config); - - void init_segasp(); - -private: - required_device m_sp_eeprom; - - uint64_t sp_eeprom_r(offs_t offset, uint64_t mem_mask = ~0); - void sp_eeprom_w(offs_t offset, uint64_t data, uint64_t mem_mask = ~0); - uint64_t sp_rombdflg_r(); - uint64_t sp_io_r(offs_t offset, uint64_t mem_mask = ~0); - uint64_t sn_93c46a_r(); - void sn_93c46a_w(uint64_t data); - uint64_t sp_bank_r(offs_t offset, uint64_t mem_mask = ~0); - void sp_bank_w(offs_t offset, uint64_t data, uint64_t mem_mask = ~0); - uint16_t m_sp_bank = 0; - - void onchip_port(address_map &map); - void segasp_map(address_map &map); -}; - -#endif // MAME_SEGA_SEGASP_H -- cgit v1.2.3