diff --git a/scripts/src/machine.lua b/scripts/src/machine.lua index 93946cfb50b..613501ae30b 100644 --- a/scripts/src/machine.lua +++ b/scripts/src/machine.lua @@ -3311,18 +3311,6 @@ if (MACHINES["SENSORBOARD"]~=null) then } end ---------------------------------------------------- --- ---@src/devices/machine/serflash.h,MACHINES["SERFLASH"] = true ---------------------------------------------------- - -if (MACHINES["SERFLASH"]~=null) then - files { - MAME_DIR .. "src/devices/machine/serflash.cpp", - MAME_DIR .. "src/devices/machine/serflash.h", - } -end - --------------------------------------------------- -- --@src/devices/machine/smc91c9x.h,MACHINES["SMC91C9X"] = true diff --git a/src/devices/machine/nandflash.cpp b/src/devices/machine/nandflash.cpp index 8fdc309a392..6c0c43cfc3c 100644 --- a/src/devices/machine/nandflash.cpp +++ b/src/devices/machine/nandflash.cpp @@ -25,7 +25,9 @@ DEFINE_DEVICE_TYPE(SAMSUNG_K9F5608U0DJ, samsung_k9f5608u0dj_device, "samsung_k9f DEFINE_DEVICE_TYPE(SAMSUNG_K9F5608U0B, samsung_k9f5608u0b_device, "samsung_k9f5608u0b", "Samsung K9F5608U0B") DEFINE_DEVICE_TYPE(SAMSUNG_K9F2808U0B, samsung_k9f2808u0b_device, "samsung_k9f2808u0b", "Samsung K9F2808U0B") DEFINE_DEVICE_TYPE(SAMSUNG_K9F1G08U0B, samsung_k9f1g08u0b_device, "samsung_k9f1g08u0b", "Samsung K9F1G08U0B") +DEFINE_DEVICE_TYPE(SAMSUNG_K9F1G08U0M, samsung_k9f1g08u0m_device, "samsung_k9f1g08u0m", "Samsung K9F1G08U0M") DEFINE_DEVICE_TYPE(SAMSUNG_K9LAG08U0M, samsung_k9lag08u0m_device, "samsung_k9lag08u0m", "Samsung K9LAG08U0M") +DEFINE_DEVICE_TYPE(SAMSUNG_K9F2G08U0M, samsung_k9f2g08u0m_device, "samsung_k9f2g08u0m", "Samsung K9F2G08U0M") nand_device::nand_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : nand_device(mconfig, NAND, tag, owner, clock) @@ -128,6 +130,23 @@ samsung_k9f1g08u0b_device::samsung_k9f1g08u0b_device(const machine_config &mconf m_sequential_row_read = 0; } +samsung_k9f1g08u0m_device::samsung_k9f1g08u0m_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : nand_device(mconfig, SAMSUNG_K9F1G08U0M, tag, owner, clock) +{ + m_id_len = 4; + m_id[0] = 0xec; + m_id[1] = 0xf1; + m_id[2] = 0x00; + m_id[3] = 0x15; + m_page_data_size = 2048; + m_page_total_size = 2048 + 64; + m_log2_pages_per_block = compute_log2(64); + m_num_pages = 64 * 1024; + m_col_address_cycles = 2; + m_row_address_cycles = 2; + m_sequential_row_read = 0; +} + samsung_k9lag08u0m_device::samsung_k9lag08u0m_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : nand_device(mconfig, SAMSUNG_K9LAG08U0M, tag, owner, clock) { @@ -146,6 +165,23 @@ samsung_k9lag08u0m_device::samsung_k9lag08u0m_device(const machine_config &mconf m_sequential_row_read = 0; } +samsung_k9f2g08u0m_device::samsung_k9f2g08u0m_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : nand_device(mconfig, SAMSUNG_K9F2G08U0M, tag, owner, clock) +{ + m_id_len = 4; + m_id[0] = 0xec; + m_id[1] = 0xda; + m_id[2] = 0x00; + m_id[3] = 0x15; + m_page_data_size = 2048; + m_page_total_size = 2048 + 64; + m_log2_pages_per_block = compute_log2(64); + m_num_pages = 128 * 1024; + m_col_address_cycles = 2; + m_row_address_cycles = 3; + m_sequential_row_read = 0; +} + void nand_device::device_start() { m_data_uid_ptr = nullptr; // smartmed cruft @@ -242,7 +278,6 @@ void nand_device::command_w(uint8_t data) case 0x00: // Read (1st cycle) m_mode = SM_M_READ; m_pointer_mode = SM_PM_A; - m_page_addr = 0; m_addr_load_ptr = 0; break; case 0x01: @@ -255,7 +290,6 @@ void nand_device::command_w(uint8_t data) { m_mode = SM_M_READ; m_pointer_mode = SM_PM_B; - m_page_addr = 0; m_addr_load_ptr = 0; } break; @@ -269,13 +303,11 @@ void nand_device::command_w(uint8_t data) { m_mode = SM_M_READ; m_pointer_mode = SM_PM_C; - m_page_addr = 0; m_addr_load_ptr = 0; } break; case 0x80: // Page Program (1st cycle) m_mode = SM_M_PROGRAM; - m_page_addr = 0; m_addr_load_ptr = 0; m_program_byte_count = 0; memset(m_pagereg.get(), 0xff, m_page_total_size); @@ -432,6 +464,10 @@ void nand_device::address_w(uint8_t data) break; case SM_M_READ: case SM_M_PROGRAM: + if (m_addr_load_ptr == 0) + { + m_page_addr = 0; + } if ((m_addr_load_ptr == 0) && (m_col_address_cycles == 1)) { switch (m_pointer_mode) diff --git a/src/devices/machine/nandflash.h b/src/devices/machine/nandflash.h index ea98e62a3bc..0c5a9be8277 100644 --- a/src/devices/machine/nandflash.h +++ b/src/devices/machine/nandflash.h @@ -130,12 +130,24 @@ public: samsung_k9f1g08u0b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); }; +class samsung_k9f1g08u0m_device : public nand_device +{ +public: + samsung_k9f1g08u0m_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); +}; + class samsung_k9lag08u0m_device : public nand_device { public: samsung_k9lag08u0m_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); }; +class samsung_k9f2g08u0m_device : public nand_device +{ +public: + samsung_k9f2g08u0m_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); +}; + // device type definition DECLARE_DEVICE_TYPE(NAND, nand_device) DECLARE_DEVICE_TYPE(SAMSUNG_K9F5608U0D, samsung_k9f5608u0d_device) @@ -143,6 +155,8 @@ DECLARE_DEVICE_TYPE(SAMSUNG_K9F5608U0DJ, samsung_k9f5608u0dj_device) DECLARE_DEVICE_TYPE(SAMSUNG_K9F5608U0B, samsung_k9f5608u0b_device) DECLARE_DEVICE_TYPE(SAMSUNG_K9F2808U0B, samsung_k9f2808u0b_device) DECLARE_DEVICE_TYPE(SAMSUNG_K9F1G08U0B, samsung_k9f1g08u0b_device) +DECLARE_DEVICE_TYPE(SAMSUNG_K9F1G08U0M, samsung_k9f1g08u0m_device) DECLARE_DEVICE_TYPE(SAMSUNG_K9LAG08U0M, samsung_k9lag08u0m_device) +DECLARE_DEVICE_TYPE(SAMSUNG_K9F2G08U0M, samsung_k9f2g08u0m_device) #endif // MAME_MACHINE_NANDFLASH_H diff --git a/src/devices/machine/serflash.cpp b/src/devices/machine/serflash.cpp deleted file mode 100644 index c7589e6f58e..00000000000 --- a/src/devices/machine/serflash.cpp +++ /dev/null @@ -1,482 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:David Haywood, Luca Elia -/* Serial Flash Device */ - -/* todo: cleanup, refactor etc. */ -/* ghosteo.c is similar? */ - -#include "emu.h" -#include "machine/serflash.h" - -#include - -ALLOW_SAVE_TYPE(serflash_device::flash_state_t); - -//************************************************************************** -// LIVE DEVICE -//************************************************************************** - -// device type definition -DEFINE_DEVICE_TYPE(SERFLASH, serflash_device, "serflash", "Serial Flash") - -//------------------------------------------------- -// serflash_device - constructor -//------------------------------------------------- - -serflash_device::serflash_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, SERFLASH, tag, owner, clock) - , device_nvram_interface(mconfig, *this) - , m_length(0) - , m_region(nullptr) - , m_row_num(0) - , m_flash_page_size(2048+64) - , m_flash_state() - , m_flash_enab(0) - , m_flash_cmd_seq(0), m_flash_cmd_prev(0), m_flash_addr_seq(0), m_flash_read_seq(0) - , m_flash_row(0), m_flash_col(0), m_flash_page_addr(0), m_flash_page_index(0), m_last_flash_cmd(0), m_flash_addr(0) -{ -} - - - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void serflash_device::device_start() -{ - m_length = machine().root_device().memregion(tag())->bytes(); - m_region = machine().root_device().memregion(tag())->base(); - - m_row_num = m_length / m_flash_page_size; - - m_flashwritemap.resize(m_row_num); - std::fill(m_flashwritemap.begin(), m_flashwritemap.end(), 0); - - m_flash_page_data.resize(m_flash_page_size); - - save_item(NAME(m_flash_state)); - save_item(NAME(m_flash_enab)); - save_item(NAME(m_flash_cmd_seq)); - save_item(NAME(m_flash_cmd_prev)); - save_item(NAME(m_flash_addr_seq)); - save_item(NAME(m_flash_read_seq)); - save_item(NAME(m_flash_row)); - save_item(NAME(m_flash_col)); - save_item(NAME(m_flash_page_addr)); - save_item(NAME(m_flash_page_index)); - save_item(NAME(m_flashwritemap)); - save_item(NAME(m_last_flash_cmd)); - save_item(NAME(m_flash_addr)); - save_item(NAME(m_flash_page_data)); -} - -void serflash_device::device_reset() -{ - m_flash_enab = 0; - flash_hard_reset(); - - m_last_flash_cmd = 0x00; - m_flash_addr_seq = 0; - m_flash_addr = 0; - - m_flash_page_addr = 0; -} - -//------------------------------------------------- -// serflash_default - called to initialize SERFLASH to -// its default state -//------------------------------------------------- - -void serflash_device::nvram_default() -{ -} - - -//------------------------------------------------- -// nvram_read - called to read SERFLASH from the -// .nv file -//------------------------------------------------- - -bool serflash_device::nvram_read(util::read_stream &file) -{ - if (m_length % m_flash_page_size) return false; // region size must be multiple of flash page size - int size = m_length / m_flash_page_size; - - { - uint32_t page; - size_t actual; - if (file.read(&page, 4, actual) || actual != 4) - return false; - while (page < size) - { - m_flashwritemap[page] = 1; - if (file.read(m_region + page * m_flash_page_size, m_flash_page_size, actual) || actual != m_flash_page_size) - return false; - if (file.read(&page, 4, actual) || actual != 4) - return false; - } - } - - return true; -} - - -//------------------------------------------------- -// nvram_write - called to write SERFLASH to the -// .nv file -//------------------------------------------------- - -bool serflash_device::nvram_write(util::write_stream &file) -{ - if (m_length % m_flash_page_size) return false; // region size must be multiple of flash page size - int size = m_length / m_flash_page_size; - - uint32_t page = 0; - size_t actual; - while (page < size) - { - if (m_flashwritemap[page]) - { - if (file.write(&page, 4, actual) || actual != 4) - return false; - if (file.write(m_region + page * m_flash_page_size, m_flash_page_size, actual) || actual != m_flash_page_size) - return false; - } - page++; - } - if (file.write(&page, 4, actual) || actual != 4) - return false; - - return true; -} - -void serflash_device::flash_hard_reset() -{ -// logerror("%08x FLASH: RESET\n", cpuexec_describe_context(machine)); - - m_flash_state = flash_state_t::READ; - - m_flash_cmd_prev = -1; - m_flash_cmd_seq = 0; - - m_flash_addr_seq = 0; - m_flash_read_seq = 0; - - m_flash_row = 0; - m_flash_col = 0; - - std::fill(m_flash_page_data.begin(), m_flash_page_data.end(), 0); - m_flash_page_addr = 0; - m_flash_page_index = 0; -} - -void serflash_device::flash_enab_w(uint8_t data) -{ - //logerror("%08x FLASH: enab = %02X\n", m_maincpu->pc(), data); - m_flash_enab = data; -} - -void serflash_device::flash_change_state(flash_state_t state) -{ - m_flash_state = state; - - m_flash_cmd_prev = -1; - m_flash_cmd_seq = 0; - - m_flash_read_seq = 0; - m_flash_addr_seq = 0; - - //logerror("flash_change_state - FLASH: state = %s\n", m_flash_state_name[state]); -} - -void serflash_device::flash_cmd_w(uint8_t data) -{ - if (!m_flash_enab) - return; - - //logerror("%08x FLASH: cmd = %02X (prev = %02X)\n", m_maincpu->pc(), data, m_flash_cmd_prev); - - if (m_flash_cmd_prev == -1) - { - m_flash_cmd_prev = data; - - switch (data) - { - case 0x00: // READ - m_flash_addr_seq = 0; - break; - - case 0x60: // BLOCK ERASE - m_flash_addr_seq = 2; // row address only - break; - - case 0x70: // READ STATUS - flash_change_state( flash_state_t::READ_STATUS ); - break; - - case 0x80: // PAGE / CACHE PROGRAM - m_flash_addr_seq = 0; - // this actually seems to be set with the next 2 writes? - m_flash_page_addr = 0; - break; - - case 0x90: // READ ID - flash_change_state( flash_state_t::READ_ID ); - break; - - case 0xff: // RESET - flash_change_state( flash_state_t::IDLE ); - break; - - default: - { - //logerror("%s FLASH: unknown cmd1 = %02X\n", machine().describe_context(), data); - } - } - } - else - { - switch (m_flash_cmd_prev) - { - case 0x00: // READ - if (data == 0x30) - { - if (m_flash_row < m_row_num) - { - std::copy_n(&m_region[m_flash_row * m_flash_page_size], m_flash_page_size, m_flash_page_data.begin()); - m_flash_page_addr = m_flash_col; - m_flash_page_index = m_flash_row; - } - flash_change_state( flash_state_t::READ ); - - //logerror("%08x FLASH: caching page = %04X\n", m_maincpu->pc(), m_flash_row); - } - break; - - case 0x60: // BLOCK ERASE - if (data==0xd0) - { - flash_change_state( flash_state_t::BLOCK_ERASE ); - if (m_flash_row < m_row_num) - { - m_flashwritemap[m_flash_row] |= 1; - std::fill_n(&m_region[m_flash_row * m_flash_page_size], m_flash_page_size, 0xff); - } - //logerror("erased block %04x (%08x - %08x)\n", m_flash_col, m_flash_col * m_flash_page_size, ((m_flash_col+1) * m_flash_page_size)-1); - } - else - { - //logerror("unexpected 2nd command after BLOCK ERASE\n"); - } - break; - case 0x80: - if (data==0x10) - { - flash_change_state( flash_state_t::PAGE_PROGRAM ); - if (m_flash_row < m_row_num) - { - m_flashwritemap[m_flash_row] |= (memcmp(m_region + m_flash_row * m_flash_page_size, &m_flash_page_data[0], m_flash_page_size) != 0); - std::copy_n(m_flash_page_data.begin(), m_flash_page_size, &m_region[m_flash_row * m_flash_page_size]); - } - //logerror("re-written block %04x (%08x - %08x)\n", m_flash_row, m_flash_row * m_flash_page_size, ((m_flash_row+1) * m_flash_page_size)-1); - } - else - { - //logerror("unexpected 2nd command after SPAGE PROGRAM\n"); - } - break; - - - default: - { - //logerror("%08x FLASH: unknown cmd2 = %02X (cmd1 = %02X)\n", m_maincpu->pc(), data, m_flash_cmd_prev); - } - } - } -} - -void serflash_device::flash_data_w(uint8_t data) -{ - if (!m_flash_enab) - return; - - //logerror("flash data write %04x\n", m_flash_page_addr); - if (m_flash_page_addr < m_flash_page_size) - { - m_flash_page_data[m_flash_page_addr] = data; - } - m_flash_page_addr++; -} - -void serflash_device::flash_addr_w(uint8_t data) -{ - if (!m_flash_enab) - return; - - //logerror("%08x FLASH: addr = %02X (seq = %02X)\n", m_maincpu->pc(), data, m_flash_addr_seq); - - switch( m_flash_addr_seq++ ) - { - case 0: - m_flash_col = (m_flash_col & 0xff00) | data; - break; - case 1: - m_flash_col = (m_flash_col & 0x00ff) | (data << 8); - break; - case 2: - m_flash_row = (m_flash_row & 0xffff00) | data; - if (m_row_num <= 256) - { - m_flash_addr_seq = 0; - } - break; - case 3: - m_flash_row = (m_flash_row & 0xff00ff) | (data << 8); - if (m_row_num <= 65536) - { - m_flash_addr_seq = 0; - } - break; - case 4: - m_flash_row = (m_flash_row & 0x00ffff) | (data << 16); - m_flash_addr_seq = 0; - break; - } -} - -uint8_t serflash_device::flash_io_r() -{ - uint8_t data = 0x00; -// uint32_t old; - - if (!m_flash_enab) - return 0xff; - - switch (m_flash_state) - { - case flash_state_t::READ_ID: - //old = m_flash_read_seq; - - switch( m_flash_read_seq++ ) - { - case 0: - data = 0xEC; // Manufacturer - break; - case 1: - data = 0xF1; // Device - break; - case 2: - data = 0x00; // XX - break; - case 3: - data = 0x15; // Flags - m_flash_read_seq = 0; - break; - } - - //logerror("%08x FLASH: read %02X from id(%02X)\n", m_maincpu->pc(), data, old); - break; - - case flash_state_t::READ: - if (m_flash_page_addr > m_flash_page_size-1) - m_flash_page_addr = m_flash_page_size-1; - - //old = m_flash_page_addr; - - data = m_flash_page_data[m_flash_page_addr++]; - - //logerror("%08x FLASH: read data %02X from addr %03X (page %04X)\n", m_maincpu->pc(), data, old, m_flash_page_index); - break; - - case flash_state_t::READ_STATUS: - // bit 7 = writeable, bit 6 = ready, bit 5 = ready/true ready, bit 1 = fail(N-1), bit 0 = fail - data = 0xe0; - //logerror("%08x FLASH: read status %02X\n", m_maincpu->pc(), data); - break; - - default: - { - // logerror("%08x FLASH: unknown read in state %s\n",0x00/*m_maincpu->pc()*/, m_flash_state_name[m_flash_state]); - } - } - - return data; -} - -uint8_t serflash_device::flash_ready_r() -{ - return 1; -} - - - -uint8_t serflash_device::n3d_flash_r(offs_t offset) -{ - if (m_last_flash_cmd==0x70) return 0xe0; - - if (m_last_flash_cmd==0x00) - { - uint8_t retdat = m_flash_page_data[m_flash_page_addr]; - - //logerror("n3d_flash_r %02x %04x\n", offset, m_flash_page_addr); - - m_flash_page_addr++; - return retdat; - } - - - logerror("n3d_flash_r %02x\n", offset); - return 0x00; - -} - - -void serflash_device::n3d_flash_cmd_w(offs_t offset, uint8_t data) -{ - logerror("n3d_flash_cmd_w %02x %02x\n", offset, data); - m_last_flash_cmd = data; - - if (data==0x00) - { - if (m_flash_addr < m_row_num) - { - std::copy_n(&m_region[m_flash_addr * m_flash_page_size], m_flash_page_size, m_flash_page_data.begin()); - } - } -} - -void serflash_device::n3d_flash_addr_w(offs_t offset, uint8_t data) -{ -// logerror("n3d_flash_addr_w %02x %02x\n", offset, data); - - m_flash_addr_seq++; - - if (m_flash_addr_seq==3) - { - m_flash_addr = (m_flash_addr & 0xffff00) | data; - if (m_row_num <= 256) - { - m_flash_addr_seq = 0; - m_flash_page_addr = 0; - logerror("set flash block to %08x\n", m_flash_addr); - } - } - if (m_flash_addr_seq==4) - { - m_flash_addr = (m_flash_addr & 0xff00ff) | data << 8; - if (m_row_num <= 65536) - { - m_flash_addr_seq = 0; - m_flash_page_addr = 0; - logerror("set flash block to %08x\n", m_flash_addr); - } - } - if (m_flash_addr_seq==5) - { - m_flash_addr = (m_flash_addr & 0x00ffff) | data << 16; - m_flash_addr_seq = 0; - m_flash_page_addr = 0; - logerror("set flash block to %08x\n", m_flash_addr); - } -} diff --git a/src/devices/machine/serflash.h b/src/devices/machine/serflash.h deleted file mode 100644 index 1c9e5ab7afc..00000000000 --- a/src/devices/machine/serflash.h +++ /dev/null @@ -1,91 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:David Haywood, Luca Elia -/* Serial Flash */ - -#ifndef MAME_MACHINE_SERFLASH_H -#define MAME_MACHINE_SERFLASH_H - -#pragma once - -//************************************************************************** -// TYPE DEFINITIONS -//************************************************************************** - - -// ======================> serflash_device - -class serflash_device : public device_t, public device_nvram_interface -{ -public: - // custom initialization for default state - typedef device_delegate init_delegate; - - // construction/destruction - serflash_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - // configuration - void set_flash_page_size(uint16_t size) { m_flash_page_size = size; } - - uint8_t flash_ready_r(); - uint8_t flash_io_r(); - void flash_addr_w(uint8_t data); - void flash_data_w(uint8_t data); - void flash_cmd_w(uint8_t data); - void flash_enab_w(uint8_t data); - void flash_hard_reset(); - - uint8_t n3d_flash_r(offs_t offset); - void n3d_flash_cmd_w(offs_t offset, uint8_t data); - void n3d_flash_addr_w(offs_t offset, uint8_t data); - -protected: - enum class flash_state_t : u8 { IDLE = 0, READ, READ_ID, READ_STATUS, BLOCK_ERASE, PAGE_PROGRAM }; - - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - - // device_nvram_interface overrides - virtual void nvram_default() override; - virtual bool nvram_read(util::read_stream &file) override; - virtual bool nvram_write(util::write_stream &file) override; - - void flash_change_state(flash_state_t state); - - // runtime state - size_t m_length; - uint8_t* m_region; - - uint32_t m_row_num; - uint16_t m_flash_page_size; - - flash_state_t m_flash_state; - - uint8_t m_flash_enab; - - uint8_t m_flash_cmd_seq; - uint32_t m_flash_cmd_prev; - - uint8_t m_flash_addr_seq; - uint8_t m_flash_read_seq; - - uint32_t m_flash_row; - uint16_t m_flash_col; - int m_flash_page_addr; - uint32_t m_flash_page_index; - - - std::vector m_flashwritemap; - - uint8_t m_last_flash_cmd; - - uint32_t m_flash_addr; - - std::vector m_flash_page_data; -}; - - -// device type definition -DECLARE_DEVICE_TYPE(SERFLASH, serflash_device) - -#endif // MAME_MACHINE_SERFLASH_H diff --git a/src/mame/misc/cv1k.cpp b/src/mame/misc/cv1k.cpp index b4beefffd46..e6b20f31874 100644 --- a/src/mame/misc/cv1k.cpp +++ b/src/mame/misc/cv1k.cpp @@ -192,8 +192,8 @@ Timing #include "cpu/sh/sh3comn.h" #include "cpu/sh/sh4.h" +#include "machine/nandflash.h" #include "machine/rtc9701.h" -#include "machine/serflash.h" #include "sound/ymz770.h" #include "video/epic12.h" @@ -210,7 +210,7 @@ public: driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_blitter(*this, "blitter"), - m_serflash(*this, "game"), + m_nand(*this, "nand"), m_eeprom(*this, "eeprom"), m_ram(*this, "mainram"), m_rombase(*this, "maincpu"), @@ -236,7 +236,7 @@ protected: private: required_device m_maincpu; required_device m_blitter; - required_device m_serflash; + required_device m_nand; required_device m_eeprom; required_shared_ptr m_ram; @@ -277,7 +277,7 @@ uint32_t cv1k_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, uint64_t cv1k_state::flash_port_e_r() { - return ((m_serflash->flash_ready_r() ? 0x20 : 0x00)) | 0xdf; + return ((!m_nand->is_busy() ? 0x20 : 0x00)) | 0xdf; } @@ -297,7 +297,7 @@ uint8_t cv1k_state::flash_io_r(offs_t offset) return 0xff; case 0x00: - return m_serflash->flash_io_r(); + return m_nand->data_r(); } } @@ -311,15 +311,15 @@ void cv1k_state::flash_io_w(offs_t offset, uint8_t data) break; case 0x00: - m_serflash->flash_data_w( data); + m_nand->data_w(data); break; case 0x01: - m_serflash->flash_cmd_w(data); + m_nand->command_w(data); break; case 0x2: - m_serflash->flash_addr_w(data); + m_nand->address_w(data); break; } } @@ -347,7 +347,8 @@ void cv1k_state::serial_rtc_eeprom_w(offs_t offset, uint8_t data) m_eepromout->write(data, 0xff); break; case 0x03: - m_serflash->flash_enab_w(data); + // Set CE pin of NAND to !(data & 0x01). Unlikely to matter for emulation, since it's just hardware + // handling of who accesses the shared data bus. break; default: @@ -481,7 +482,7 @@ void cv1k_state::cv1k(machine_config &config) m_maincpu->set_vblank_int("screen", FUNC(cv1k_state::irq2_line_hold)); // irq2 actually asserted at V-sync pulse, not at V-blank RTC9701(config, m_eeprom); - SERFLASH(config, m_serflash, 0); + SAMSUNG_K9F1G08U0M(config, m_nand, 0); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -543,7 +544,7 @@ ROM_START( mushisam ) ROM_LOAD16_WORD_SWAP("mushisam_u4", 0x000000, 0x200000, CRC(15321b30) SHA1(d2cd714ff2299eeab6f9a7c219dfb559c8f98b45) ) // (2004/10/12.MASTER VER.) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD("mushisam_u2", 0x000000, 0x8400000, CRC(4f0a842a) SHA1(33f3550ec676a7088b6348cd72c16cc6594afb84) ) // (2004/10/12.MASTER VER.) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -556,7 +557,7 @@ ROM_START( mushisama ) ROM_LOAD16_WORD_SWAP("mushisama_u4", 0x000000, 0x200000, CRC(0b5b30b2) SHA1(35fd1bb1561c30b311b4325bc8f4628f2fccd20b) ) // (2004/10/12 MASTER VER.) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD("mushisam_u2", 0x000000, 0x8400000, CRC(4f0a842a) SHA1(33f3550ec676a7088b6348cd72c16cc6594afb84) ) // (2004/10/12.MASTER VER.) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -569,7 +570,7 @@ ROM_START( mushisamb ) ROM_LOAD16_WORD_SWAP("mushisamb_u4", 0x000000, 0x200000, CRC(9f1c7f51) SHA1(f82ae72ec03687904ca7516887080be92365a5f3) ) // (2004/10/12 MASTER VER) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD("mushisam_u2", 0x000000, 0x8400000, CRC(4f0a842a) SHA1(33f3550ec676a7088b6348cd72c16cc6594afb84) ) // (2004/10/12.MASTER VER.) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -582,7 +583,7 @@ ROM_START( espgal2 ) ROM_LOAD16_WORD_SWAP( "espgal2_u4", 0x000000, 0x200000, CRC(2cb37c03) SHA1(da438efc497f72aa345d2cdb0143d269e51576d3) ) // (2005/11/14.MASTER VER.) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(222f58c7) SHA1(d47a5085a1debd9cb8c61d88cd39e4f5036d1797) ) // (2005/11/14 MASTER VER) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -595,7 +596,7 @@ ROM_START( espgal2a ) // newer CV1000-B PCB revision, updated FPGA firmware, no ROM_LOAD16_WORD_SWAP( "espgal2a_u4", 0x000000, 0x200000, CRC(843608b8) SHA1(2f5fcd38e76df531a923cd9956104cef5185aaa9) ) // (2005/11/14 MASTER VER) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(222f58c7) SHA1(d47a5085a1debd9cb8c61d88cd39e4f5036d1797) ) // (2005/11/14 MASTER VER) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -608,7 +609,7 @@ ROM_START( espgal2b ) ROM_LOAD16_WORD_SWAP( "espgal2b_u4", 0x000000, 0x200000, CRC(09c908bb) SHA1(7d6031fd3542b3e1d296ff218feb40502fd78694) ) // (2005/11/14 MASTER VER) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(222f58c7) SHA1(d47a5085a1debd9cb8c61d88cd39e4f5036d1797) ) // (2005/11/14 MASTER VER) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -621,7 +622,7 @@ ROM_START( mushitam ) ROM_LOAD16_WORD_SWAP("mushitam_u4", 0x000000, 0x200000, CRC(c49eb6b1) SHA1(c40ee5de89e3f1cb49ac19687657dd2b42a88d81) ) // (2005/09/09.MASTER VER) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD("mushitam_u2", 0x000000, 0x8400000, CRC(8ba498ab) SHA1(459c0b4ab831bbe019bdd5b0ac56955948b9e3a6) ) // (2005/09/09.MASTER VER) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -634,7 +635,7 @@ ROM_START( mushitama ) ROM_LOAD16_WORD_SWAP("mushitama_u4", 0x000000, 0x200000, CRC(4a23e6c8) SHA1(d44c287bb88e6d413a8d35d75bc1b4928ad52cdf) ) // (2005/09/09 MASTER VER) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) // ROM_LOAD("mushitama_u2", 0x000000, 0x8400000, CRC(3f93ff82) SHA1(6f6c250aa7134016ffb288d056bc937ea311f538) ) // recycled ROM - only unused areas differ ROM_LOAD("mushitam_u2", 0x000000, 0x8400000, CRC(8ba498ab) SHA1(459c0b4ab831bbe019bdd5b0ac56955948b9e3a6) ) // (2005/09/09.MASTER VER) @@ -648,7 +649,7 @@ ROM_START( futari15 ) ROM_LOAD16_WORD_SWAP("futari15_u4", 0x000000, 0x200000, CRC(e8c5f128) SHA1(45fb8066fdbecb83fdc2e14555c460d0c652cd5f) ) // (2006/12/8.MAST VER. 1.54.) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD("futari15_u2", 0x000000, 0x8400000, CRC(b9eae1fc) SHA1(410f8e7cfcbfd271b41fb4f8d049a13a3191a1f9) ) // (2006/12/8.MAST VER. 1.54.) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -661,7 +662,7 @@ ROM_START( futari15a ) ROM_LOAD16_WORD_SWAP("futari15a_u4", 0x000000, 0x200000, CRC(a609cf89) SHA1(56752fae9f42fa852af8ee2eae79e25ec7f17953) ) // (2006/12/8 MAST VER 1.54) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) // ROM_LOAD("futari15a_u2", 0x000000, 0x8400000, CRC(b9d815f9) SHA1(6b6f668b0bbb087ffac65e4f0d8bd9d5b28eeb28) ) // recycled ROM - only unused areas differ ROM_LOAD("futari15_u2", 0x000000, 0x8400000, CRC(b9eae1fc) SHA1(410f8e7cfcbfd271b41fb4f8d049a13a3191a1f9) ) // (2006/12/8.MAST VER. 1.54.) @@ -675,7 +676,7 @@ ROM_START( futari10 ) ROM_LOAD16_WORD_SWAP( "futari10_u4", 0x000000, 0x200000, CRC(b127dca7) SHA1(e1f518bc72fc1cdf69aefa89eafa4edaf4e84778) ) // (2006/10/23 MASTER VER.) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "futari10_u2", 0x000000, 0x8400000, CRC(78ffcd0c) SHA1(0e2937edec15ce3f5741b72ebd3bbaaefffb556e) ) // (2006/10/23 MASTER VER.) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -688,7 +689,7 @@ ROM_START( futaribl ) // Title screen shows (c) 2007 despite the 2009 "master" d ROM_LOAD16_WORD_SWAP( "futaribli_u4", 0x000000, 0x200000, CRC(1971dd16) SHA1(e75993f2978cbaaf925b4b8bb33d094a5a7cebf0) ) // (2009/11/27 INTERNATIONAL BL) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "futariblk_u2", 0x000000, 0x8400000, CRC(08c6fd62) SHA1(e1fc386b2b0e41906c724287cbf82304297e0150) ) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -701,7 +702,7 @@ ROM_START( futariblj ) ROM_LOAD16_WORD_SWAP( "futariblk_u4", 0x000000, 0x200000, CRC(b9467b6d) SHA1(64782807fe69acb4ae028e36c5c689d8bd9b7857) ) // (2007/12/11 BLACK LABEL VER) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "futariblk_u2", 0x000000, 0x8400000, CRC(08c6fd62) SHA1(e1fc386b2b0e41906c724287cbf82304297e0150) ) // (2007/12/11 BLACK LABEL VER) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -715,7 +716,7 @@ ROM_START( ibara ) ROM_LOAD16_WORD_SWAP( "ibara_u4", 0x000000, 0x200000, CRC(d5fb6657) SHA1(4b2c9057cc765054232f520ee1c93495bc6b301e) ) // '06. 3. 7 ver. shown at service menu in special mode, still same as ibarao (2005/03/22 MASTER VER..) text at normal boot ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(55840976) SHA1(4982bdce84f9603adfed7a618f18bc80359ab81e) ) // (2005/03/22 MASTER VER..) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -729,7 +730,7 @@ ROM_START( ibarao ) ROM_LOAD16_WORD_SWAP( "ibarao_u4", 0x000000, 0x200000, CRC(8e6c155d) SHA1(38ac2107dc7824836e2b4e04c7180d5ae43c9b79) ) // (2005/03/22 MASTER VER..) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(55840976) SHA1(4982bdce84f9603adfed7a618f18bc80359ab81e) ) // (2005/03/22 MASTER VER..) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -742,7 +743,7 @@ ROM_START( ibarablk ) // Title screen shows (c) 2005 despite the 2006 "master" d ROM_LOAD16_WORD_SWAP( "ibarablk_u4", 0x000000, 0x200000, CRC(ee1f1f77) SHA1(ac276f3955aa4dde2544af4912819a7ae6bcf8dd) ) // (2006/02/06. MASTER VER.) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "ibarablk_u2", 0x000000, 0x8400000, CRC(5e46be44) SHA1(bed5f1bf452f2cac58747ecabec3c4392566a3a7) ) // (2006/02/06. MASTER VER.) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -755,7 +756,7 @@ ROM_START( ibarablka ) // Title screen shows (c) 2005 despite the 2006 "master" ROM_LOAD16_WORD_SWAP( "ibarablka_u4", 0x000000, 0x200000, CRC(a9d43839) SHA1(507696e616608c05893c7ac2814b3365e9cb0720) ) // (2006/02/06 MASTER VER.) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "ibarablka_u2", 0x000000, 0x8400000, CRC(33400d96) SHA1(09c22b5431ac3726bf88c56efd970f56793f825a) ) // (2006/02/06 MASTER VER.) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -768,7 +769,7 @@ ROM_START( deathsml ) ROM_LOAD16_WORD_SWAP( "u4", 0x000000, 0x200000, CRC(1a7b98bf) SHA1(07798a4a846e5802756396b34df47d106895c1f1) ) // (2007/10/09 MASTER VER) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(59ef5d78) SHA1(426e506b6d88948aa55aec71c0db6e91da3d490d) ) // (2007/10/09 MASTER VER) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -781,7 +782,7 @@ ROM_START( mmpork ) ROM_LOAD16_WORD_SWAP( "u4", 0x000000, 0x200000, CRC(d06cfa42) SHA1(5707feb4b3e5265daf5926f38c38612b24106f1f) ) // (2007/ 4/17 MASTER VER.) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(1ee961b8) SHA1(81a2eba704ac1cf7fc44fa7c6a3f50e3570c104f) ) // (2007/ 4/17 MASTER VER.) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -794,7 +795,7 @@ ROM_START( mmmbanc ) ROM_LOAD16_WORD_SWAP( "u4", 0x0000, 0x200000, CRC(5589d8c6) SHA1(43fbdb0effe2bc0e7135698757b6ee50200aecde) ) // (2007/06/05 MASTER VER.) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(2e38965a) SHA1(2b58d1cd1a3dbc261d4a46805d2ea015fe22c444) ) // (2007/06/05 MASTER VER.) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -807,7 +808,7 @@ ROM_START( pinkswts ) ROM_LOAD16_WORD_SWAP( "pinkswts_u4", 0x0000, 0x200000, CRC(5d812c9e) SHA1(db821ec3892fd150513749d64a8b60bf147f3275) ) // (2006/04/06 MASTER VER....) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "pinkswts_u2", 0x000000, 0x8400000, CRC(a2fa5363) SHA1(5be327534840871592df523ac82ee1927bd79d67) ) // (2006/04/06 MASTER VER....) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -820,7 +821,7 @@ ROM_START( pinkswtsa ) ROM_LOAD16_WORD_SWAP( "pnkswtsa_u4", 0x0000, 0x200000, CRC(ee3339b2) SHA1(995988d370731a7074b49ce8752525dadf06a954) ) // (2006/04/06 MASTER VER...) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "pnkswtsa_u2", 0x000000, 0x8400000, CRC(829a862e) SHA1(8c0ee2a0eb33b68869252fd68aed74820a904287) ) // (2006/04/06 MASTER VER...) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -833,7 +834,7 @@ ROM_START( pinkswtsb ) ROM_LOAD16_WORD_SWAP( "pnkswtsb_u4", 0x0000, 0x200000, CRC(68bcc009) SHA1(2fef544b93c61161a37365f868b431d8262e4b21) ) // (2006/04/06 MASTER VER.) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) // ROM_LOAD( "pnkswtsb_u2", 0x000000, 0x8400000, BAD_DUMP CRC(a5666ed9) SHA1(682e06c84990225bc6bb0c9f38b5f46c4e36b430) ) // (2006/04/06 MASTER VER.) ROM_LOAD( "pnkswtsx_u2", 0x000000, 0x8400000, CRC(91e4deb2) SHA1(893cb10d6f805df7cb4a1bb709a3ea6de147b7e9) ) // (2006/xx/xx MASTER VER.) and (2006/04/06 MASTER VER.) @@ -847,7 +848,7 @@ ROM_START( pinkswtsx ) ROM_LOAD16_WORD_SWAP( "pnkswtsx_u4", 0x0000, 0x200000, CRC(8fe05bf0) SHA1(5cd45ac0e74690787c83d3fb383a65ed7cd47104) ) // (2006/xx/xx MASTER VER.) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "pnkswtsx_u2", 0x000000, 0x8400000, CRC(91e4deb2) SHA1(893cb10d6f805df7cb4a1bb709a3ea6de147b7e9) ) // (2006/xx/xx MASTER VER.) and (2006/04/06 MASTER VER.) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -862,7 +863,7 @@ ROM_START( pinkswtssc ) ROM_LOAD16_WORD_SWAP( "suicideclub.u4", 0x0000, 0x200000, CRC(5e03662f) SHA1(b974204b8dcd55fc1b7775f7c1806150919caff3) ) // (2017/10/31 SUICIDECLUB VER.) ROM_RELOAD(0x200000,0x200000) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "suicideclub.u2", 0x000000, 0x8400000, CRC(32324608) SHA1(cec1416c943520cb3f91eb295e2ba864a0db7d45) ) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -874,7 +875,7 @@ ROM_START( ddpdfk ) ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD16_WORD_SWAP( "ddpdfk_u4", 0x0000, 0x400000, CRC(9976d699) SHA1(9dfe9d1daf6f638cafce8cdc5230209e2bcb7522) ) // (2008/06/23 MASTER VER 1.5) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "ddpdfk_u2", 0x000000, 0x8400000, CRC(84a51a4f) SHA1(291a6279c0746d2eb8630e7d6d886043f0cfdd94) ) // (2008/06/23 MASTER VER 1.5) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -886,7 +887,7 @@ ROM_START( ddpdfk10 ) ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD16_WORD_SWAP( "ddpdfk10_u4", 0x0000, 0x400000, CRC(a3d650b2) SHA1(46a7551760e18c2cecd372c3f4be16f6600efc2c) ) // (2008/05/16 MASTER VER) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "ddpdfk10_u2", 0x000000, 0x8400000, CRC(d349cb2a) SHA1(c364c36b69b93f8f62390f185d044f51056669ff) ) // (2008/05/16 MASTER VER) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -898,7 +899,7 @@ ROM_START( dsmbl ) ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD16_WORD_SWAP( "u4", 0x000000, 0x400000, CRC(77fc5ad1) SHA1(afe044fc16e9494143c876879b033caccd08cf22) ) // (2008/10/06 MEGABLACK LABEL VER) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(d6b85b7a) SHA1(4674f6ad07f6a03904ca3d05060816b8fe061add) ) // (2008/10/06 MEGABLACK LABEL VER) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -910,7 +911,7 @@ ROM_START( dfkbl ) ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) ROM_LOAD16_WORD_SWAP( "u4", 0x000000, 0x400000, CRC(8092ca9d) SHA1(75e16cd7c8d0f9c715115ce12da5c245fbcd2416) ) // (2010/1/18 BLACK LABEL) - ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) + ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(29f9d73a) SHA1(ed978ab5e3ad8c05e7778a91bfb5aaa17b0f72d9) ) ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -922,7 +923,7 @@ ROM_END // ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF) // ROM_LOAD16_WORD_SWAP( "u4", 0x000000, 0x400000, CRC(613fd380) SHA1(6e28480eef3b483d00b42d811a9d2c7fa1097924) ) // (2010/ 8/13 MASTER VER.) -// ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) +// ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) // ROM_LOAD( "u2", 0x000000, 0x8400000, CRC(89a2e1a5) SHA1(e6f4ec974406283665697fdd52bd606d0337dd11) ) // ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) @@ -935,7 +936,7 @@ ROM_END // ROM_LOAD16_WORD_SWAP("u4", 0x000000, 0x400000, CRC(e2a4411c) SHA1(f8b2b6326dd8eeae99b8b1ab2bd5a3f0b9c7f027) ) // ROM_IGNORE( 0x000100 ) // Flash extra bytes -// ROM_REGION( 0x8400000, "game", ROMREGION_ERASEFF) +// ROM_REGION( 0x8400000, "nand", ROMREGION_ERASEFF) // ROM_LOAD("u2", 0x000000, 0x8400000, CRC(668e4cd6) SHA1(da0b10865df3a3e46cf8a109ca88a551faba4483) ) // ROM_REGION( 0x800000, "ymz770", ROMREGION_ERASEFF) diff --git a/src/mame/misc/nexus3d.cpp b/src/mame/misc/nexus3d.cpp index 4ccfd542c02..c53c7b30286 100644 --- a/src/mame/misc/nexus3d.cpp +++ b/src/mame/misc/nexus3d.cpp @@ -16,7 +16,7 @@ #include "emu.h" #include "cpu/arm7/arm7.h" #include "cpu/arm7/arm7core.h" -#include "machine/serflash.h" +#include "machine/nandflash.h" #include "emupal.h" #include "screen.h" #include "debugger.h" @@ -34,7 +34,7 @@ public: m_maincpu(*this, "maincpu"), m_mainram(*this, "mainram"), m_fbram(*this, "fbram"), - m_serflash(*this, "flash"), + m_nand(*this, "nand"), m_screen(*this, "screen"), m_palette(*this, "palette") { } @@ -48,7 +48,7 @@ private: required_device m_maincpu; required_shared_ptr m_mainram; required_shared_ptr m_fbram; - required_device m_serflash; + required_device m_nand; required_device m_screen; required_device m_palette; @@ -243,9 +243,9 @@ void nexus3d_state::nexus3d_map(address_map &map) map(0x8d000000, 0x8d000003).portr("IN2"); // flash - map(0x9C000000, 0x9C000003).r(m_serflash, FUNC(serflash_device::n3d_flash_r)); - map(0x9C000010, 0x9C000013).w(m_serflash, FUNC(serflash_device::n3d_flash_cmd_w)); - map(0x9C000018, 0x9C00001b).w(m_serflash, FUNC(serflash_device::n3d_flash_addr_w)); + map(0x9C000000, 0x9C000003).r(m_nand, FUNC(nand_device::data_r)); + map(0x9C000010, 0x9C000013).w(m_nand, FUNC(nand_device::command_w)); + map(0x9C000018, 0x9C00001b).w(m_nand, FUNC(nand_device::address_w)); // read on irq 9 service, unknown purpose map(0xc0000200, 0xc00002bf).nopr(); @@ -298,7 +298,7 @@ void nexus3d_state::machine_start() void nexus3d_state::machine_reset() { // the first part of the flash ROM automatically gets copied to RAM - memcpy(m_mainram, memregion("flash")->base(), 4 * 1024); + memcpy(m_mainram, memregion("nand")->base(), 4 * 1024); } void nexus3d_state::screen_vblank(int state) @@ -326,13 +326,13 @@ void nexus3d_state::nexus3d(machine_config &config) PALETTE(config, "palette", palette_device::RGB_565); - SERFLASH(config, m_serflash, 0); + SAMSUNG_K9F2G08U0M(config, m_nand, 0); } ROM_START( acheart ) - ROM_REGION( 0x10800898, "flash", 0 ) /* ARM 32 bit code */ + ROM_REGION( 0x10800898, "nand", 0 ) /* ARM 32 bit code */ ROM_LOAD( "arcanaheart.u1", 0x000000, 0x10800898, CRC(109bf439) SHA1(33fd39355923ef384d5eaeec8ae3f296509bde93) ) ROM_REGION( 0x200000, "user2", 0 ) // QDSP stuff @@ -348,7 +348,7 @@ ROM_END ROM_START( acheartf ) - ROM_REGION( 0x10800898, "flash", 0 ) /* ARM 32 bit code */ + ROM_REGION( 0x10800898, "nand", 0 ) /* ARM 32 bit code */ ROM_LOAD( "arcanaheartfull.u1", 0x000000, 0x10800898, CRC(54b57a9d) SHA1(dee5a43b3aea854d2b98869dca74c57b66fb06eb)) ROM_REGION( 0x200000, "user2", 0 ) // QDSP stuff