summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author yz70s <yz70s@users.noreply.github.com>2019-12-16 00:36:16 +0100
committer yz70s <yz70s@users.noreply.github.com>2019-12-16 00:42:46 +0100
commit68572e2aab58e70e196cd1c32611582bf39cb114 (patch)
treefcdf07d5e0858970dc41999395f50af4c05fcb65
parent9c03fc73456877aa21ec8aaffe62f415ef6364bf (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.cpp8
-rw-r--r--src/mame/machine/naomigd.cpp62
-rw-r--r--src/mame/machine/naomigd.h7
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;