diff options
author | 2019-12-16 00:36:16 +0100 | |
---|---|---|
committer | 2019-12-16 00:42:46 +0100 | |
commit | 68572e2aab58e70e196cd1c32611582bf39cb114 (patch) | |
tree | fcdf07d5e0858970dc41999395f50af4c05fcb65 | |
parent | 9c03fc73456877aa21ec8aaffe62f415ef6364bf (diff) |
naomi: add a sh4 and a pic16c621a, both diabled, to the dimm board device (nw)
They are disabled, so they shouldn't slow the sytem, but they appear in
the list at start and you can look at their rom disassembly (for the sh4
set the address to 0)
-rw-r--r-- | src/devices/cpu/pic16c62x/pic16c62x.cpp | 8 | ||||
-rw-r--r-- | src/mame/machine/naomigd.cpp | 62 | ||||
-rw-r--r-- | src/mame/machine/naomigd.h | 7 |
3 files changed, 68 insertions, 9 deletions
diff --git a/src/devices/cpu/pic16c62x/pic16c62x.cpp b/src/devices/cpu/pic16c62x/pic16c62x.cpp index 93ec19349cd..d7cdb791b8b 100644 --- a/src/devices/cpu/pic16c62x/pic16c62x.cpp +++ b/src/devices/cpu/pic16c62x/pic16c62x.cpp @@ -165,6 +165,14 @@ pic16c622a_device::pic16c622a_device(const machine_config &mconfig, const char * } +device_memory_interface::space_config_vector pic16c62x_device::memory_space_config() const +{ + return space_config_vector{ + std::make_pair(AS_PROGRAM, &m_program_config), + std::make_pair(AS_DATA, &m_data_config) + }; +} + std::unique_ptr<util::disasm_interface> pic16c62x_device::create_disassembler() { return std::make_unique<pic16c62x_disassembler>(); diff --git a/src/mame/machine/naomigd.cpp b/src/mame/machine/naomigd.cpp index d9c19919873..dbaf667b04c 100644 --- a/src/mame/machine/naomigd.cpp +++ b/src/mame/machine/naomigd.cpp @@ -403,11 +403,19 @@ void naomi_gdrom_board::write_from_qword(uint8_t *region, uint64_t qword) naomi_gdrom_board::naomi_gdrom_board(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : naomi_board(mconfig, NAOMI_GDROM_BOARD, tag, owner, clock), - picdata(*this, finder_base::DUMMY_TAG) + picdata(*this, finder_base::DUMMY_TAG), + m_maincpu(*this, "dimmcpu"), + m_securitycpu(*this, "pic") { image_tag = nullptr; } +void naomi_gdrom_board::sh4_map(address_map& map) +{ + map(0x00000000, 0x001fffff).rom().region("bios", 0); + map.unmap_value_high(); +} + void naomi_gdrom_board::find_file(const char *name, const uint8_t *dir_sector, uint32_t &file_start, uint32_t &file_size) { file_start = 0; @@ -481,6 +489,9 @@ void naomi_gdrom_board::device_start() key |= picdata[0x7a0]; netpic = picdata[0x6ee]; + + // set data for security pic rom + memcpy((uint8_t*)m_securitycpu->space(AS_PROGRAM).get_read_ptr(0), picdata, 0x400); } else { // use extracted pic data // printf("This PIC key hasn't been converted to a proper PIC binary yet!\n"); @@ -607,6 +618,27 @@ void naomi_gdrom_board::board_advance(uint32_t size) dimm_cur_address %= dimm_data_size; } +#define CPU_CLOCK 200000000 // need to set the correct value here + +void naomi_gdrom_board::device_add_mconfig(machine_config& config) +{ + SH4LE(config, m_maincpu, CPU_CLOCK); + m_maincpu->set_md(0, 1); + m_maincpu->set_md(1, 0); + m_maincpu->set_md(2, 1); + m_maincpu->set_md(3, 0); + m_maincpu->set_md(4, 0); + m_maincpu->set_md(5, 1); + m_maincpu->set_md(6, 0); + m_maincpu->set_md(7, 1); + m_maincpu->set_md(8, 0); + m_maincpu->set_sh4_clock(CPU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &naomi_gdrom_board::sh4_map); + m_maincpu->set_disable(); + PIC16C621A(config, m_securitycpu, 1000000); // need to set the correct value for clock + m_securitycpu->set_disable(); +} + // DIMM firmwares: // FPR-23489C - 1.02 not VxWorks based, no network, can not be software updated to 2.xx+ // Net-DIMM firmwares: @@ -639,14 +671,26 @@ ROM_START( dimm ) ROM_LOAD("317-unknown.pic", 0x00, 0x4000, CRC(7dc07733) SHA1(b223dc44718fa71e7b420c3b44ce4ab961445461) ) // main firmwares - ROM_LOAD16_WORD_SWAP( "fpr-23489c.ic14", 0x000000, 0x200000, CRC(bc38bea1) SHA1(b36fcc6902f397d9749e9d02de1bbb7a5e29d468) ) - ROM_LOAD16_WORD_SWAP( "203_203.bin", 0x000000, 0x200000, CRC(a738ea1c) SHA1(6f55f1ae0606816a4eca6645ed36eb7f9c7ad9cf) ) - ROM_LOAD16_WORD_SWAP( "fpr23718.ic36", 0x000000, 0x200000, CRC(a738ea1c) SHA1(b7b5a55a6a4cf0aa2df1b3dff62ff67f864c55e8) ) - ROM_LOAD16_WORD_SWAP( "213_203.bin", 0x000000, 0x200000, CRC(a738ea1c) SHA1(17131f318632610b87bc095156ffad4597fed4ca) ) - ROM_LOAD16_WORD_SWAP( "217_203.bin", 0x000000, 0x200000, CRC(a738ea1c) SHA1(e5a229ae7ed48b2955cad63529fd938c6db555e5) ) - ROM_LOAD16_WORD_SWAP( "fpr23905.ic36", 0x000000, 0x200000, CRC(ffffffff) SHA1(acade4362807c7571b1c2a48ed6067e4bddd404b) ) - ROM_LOAD16_WORD_SWAP( "317_312.bin", 0x000000, 0x200000, CRC(a738ea1c) SHA1(31d698cd659446ee09a2eeedec6e4bc6a19d05e8) ) - ROM_LOAD16_WORD_SWAP( "401_203.bin", 0x000000, 0x200000, CRC(a738ea1c) SHA1(edb52597108462bcea8eb2a47c19e51e5fb60638) ) + ROM_REGION(0x200000, "bios", ROMREGION_64BIT) + ROM_SYSTEM_BIOS(0, "fpr-23489c.ic14", "Bios 0") + ROMX_LOAD( "fpr-23489c.ic14", 0x000000, 0x200000, CRC(bc38bea1) SHA1(b36fcc6902f397d9749e9d02de1bbb7a5e29d468), ROM_BIOS(0)) + ROM_SYSTEM_BIOS(1, "203_203.bin", "Bios 1") + ROMX_LOAD( "203_203.bin", 0x000000, 0x200000, CRC(a738ea1c) SHA1(6f55f1ae0606816a4eca6645ed36eb7f9c7ad9cf), ROM_BIOS(1)) + ROM_SYSTEM_BIOS(2, "fpr23718.ic36", "Bios 2") + ROMX_LOAD( "fpr23718.ic36", 0x000000, 0x200000, CRC(a738ea1c) SHA1(b7b5a55a6a4cf0aa2df1b3dff62ff67f864c55e8), ROM_BIOS(2)) + ROM_SYSTEM_BIOS(3, "213_203.bin", "Bios 3") + ROMX_LOAD( "213_203.bin", 0x000000, 0x200000, CRC(a738ea1c) SHA1(17131f318632610b87bc095156ffad4597fed4ca), ROM_BIOS(3)) + ROM_SYSTEM_BIOS(4, "217_203.bin", "Bios 4") + ROMX_LOAD( "217_203.bin", 0x000000, 0x200000, CRC(a738ea1c) SHA1(e5a229ae7ed48b2955cad63529fd938c6db555e5), ROM_BIOS(4)) + ROM_SYSTEM_BIOS(5, "fpr23905.ic36", "Bios 5") + ROMX_LOAD( "fpr23905.ic36", 0x000000, 0x200000, CRC(ffffffff) SHA1(acade4362807c7571b1c2a48ed6067e4bddd404b), ROM_BIOS(5)) + ROM_SYSTEM_BIOS(6, "317_312.bin", "Bios 6") + ROMX_LOAD( "317_312.bin", 0x000000, 0x200000, CRC(a738ea1c) SHA1(31d698cd659446ee09a2eeedec6e4bc6a19d05e8), ROM_BIOS(6)) + ROM_SYSTEM_BIOS(7, "401_203.bin", "Bios 7") + ROMX_LOAD( "401_203.bin", 0x000000, 0x200000, CRC(a738ea1c) SHA1(edb52597108462bcea8eb2a47c19e51e5fb60638), ROM_BIOS(7)) + + // dynamically filled with data + ROM_REGION(0x400, "pic", ROMREGION_ERASE00) ROM_END const tiny_rom_entry *naomi_gdrom_board::device_rom_region() const diff --git a/src/mame/machine/naomigd.h b/src/mame/machine/naomigd.h index c220e5a77eb..35cb3614f6c 100644 --- a/src/mame/machine/naomigd.h +++ b/src/mame/machine/naomigd.h @@ -6,6 +6,7 @@ #pragma once #include "machine/naomibd.h" +#include "cpu/pic16c62x/pic16c62x.h" class naomi_gdrom_board : public naomi_board @@ -30,6 +31,9 @@ public: naomi_gdrom_board(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + virtual void device_add_mconfig(machine_config &config) override; + void sh4_map(address_map &map); + void set_image_tag(const char *_image_tag) { image_tag = _image_tag; @@ -50,6 +54,9 @@ protected: private: enum { FILENAME_LENGTH=24 }; + required_device<sh4_device> m_maincpu; + required_device<pic16c621a_device> m_securitycpu; + const char *image_tag; optional_region_ptr<uint8_t> picdata; |