summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2023-11-23 10:35:24 +0100
committer Olivier Galibert <galibert@pobox.com>2023-11-23 10:35:24 +0100
commit883af3f660aaa12f960064b7f7c495ac5b5e8ee1 (patch)
tree9741b022157661aae0d9852757a6ec4961f4416a /src
parent1e3785e3a123c86f135149120cc02b91ee9596ff (diff)
Added the dump of the psr540 external roms. There are (at least) two
internal roms, one in the sh2 and one in the 63b05. There may be one in the sxw00. New NOT_WORKING machines ---------------------------------- Yamaha PSR 540 [O. Galibert]
Diffstat (limited to 'src')
-rw-r--r--src/mame/mame.lst3
-rw-r--r--src/mame/yamaha/ympsr540.cpp69
2 files changed, 72 insertions, 0 deletions
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index c76dc0545e4..249ec84bf0a 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -45866,6 +45866,9 @@ psr340 // 1999 PSR-340
@source:yamaha/ympsr400.cpp
psr500 // 1991 PSR-500
+@source:yamaha/ympsr540.cpp
+psr540 // 1999 PSR-540
+
@source:yamaha/ymqy70.cpp
qy70 // 1997 QY-70
diff --git a/src/mame/yamaha/ympsr540.cpp b/src/mame/yamaha/ympsr540.cpp
new file mode 100644
index 00000000000..a6d94b202db
--- /dev/null
+++ b/src/mame/yamaha/ympsr540.cpp
@@ -0,0 +1,69 @@
+// license:BSD-3-Clause
+// copyright-holders:Olivier Galibert
+
+#include "bus/midi/midiinport.h"
+#include "bus/midi/midioutport.h"
+#include "cpu/sh/sh7014.h"
+
+#include "debugger.h"
+#include "speaker.h"
+
+class psr540_state : public driver_device {
+public:
+ psr540_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_boot(*this, "boot")
+ { }
+
+ void psr540(machine_config &config);
+
+private:
+ required_device<sh2_device> m_maincpu;
+ required_shared_ptr<u32> m_boot;
+
+ void map(address_map &map);
+
+ void machine_start() override;
+};
+
+void psr540_state::machine_start()
+{
+ m_boot[0] = 0x1000;
+ m_boot[0x400] = 0xdf03d004;
+ m_boot[0x401] = 0x400b0009;
+ m_boot[0x402] = 0xaffe0009;
+ m_boot[0x404] = 0x01400000;
+ m_boot[0x405] = 0x4d9010;
+ m_boot[0x499c/4] = 0x000b0009;
+}
+
+void psr540_state::psr540(machine_config &config)
+{
+ SH2_SH7014(config, m_maincpu, 7_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &psr540_state::map);
+
+ SPEAKER(config, "lspeaker").front_left();
+ SPEAKER(config, "rspeaker").front_right();
+}
+
+void psr540_state::map(address_map &map)
+{
+ map(0x0000000, 0x003ffff).ram().share(m_boot).unmapw();
+ map(0x0400000, 0x07fffff).rom().region("program_rom", 0);
+ map(0x1000000, 0x13fffff).ram(); // dram
+}
+
+static INPUT_PORTS_START( psr540 )
+INPUT_PORTS_END
+
+ROM_START( psr540 )
+ ROM_REGION32_BE( 0x400000, "program_rom", 0 )
+ ROM_LOAD16_WORD_SWAP( "xw25320.ic310", 0, 0x400000, CRC(e8d29e49) SHA1(079e0ccf6cf5d5bd2d2d82076b09dd702fcd1421))
+
+ ROM_REGION16_LE( 0x600000, "swx00", 0)
+ ROM_LOAD16_WORD_SWAP( "xw25320.ic310", 0, 0x400000, CRC(c7c4736d) SHA1(ff1052eb076557071ed8652e6c2fc0925144fbd5))
+ ROM_LOAD16_WORD_SWAP( "xw25320.ic310", 0, 0x200000, CRC(9ef56c4e) SHA1(f26b588f9bcfd7bdbf1c0b38e4a1ea57e2f29f10))
+ROM_END
+
+SYST( 1999, psr540, 0, 0, psr540, psr540, psr540_state, empty_init, "Yamaha", "PSR540", MACHINE_IS_SKELETON )