New non-working machines

------------------------

Yamaha PSR 2000 [Matt, O. Galibert]
This commit is contained in:
Olivier Galibert 2024-03-07 23:17:16 +01:00
parent 1c40f54518
commit 798b1519c4
2 changed files with 103 additions and 0 deletions

View File

@ -46170,6 +46170,9 @@ psr500 // 1991 PSR-500
@source:yamaha/ympsr540.cpp
psr540 // 1999 PSR-540
@source:yamaha/ympsr2000.cpp
psr2000
@source:yamaha/ymqy70.cpp
qy70 // 1997 QY-70

View File

@ -0,0 +1,100 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
#include "emu.h"
#include "bus/midi/midiinport.h"
#include "bus/midi/midioutport.h"
#include "cpu/sh/sh4.h"
#include "video/sed1330.h"
#include "debugger.h"
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
class psr2000_state : public driver_device {
public:
psr2000_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_lcdc(*this, "lcdc")
{ }
void psr2000(machine_config &config);
private:
required_device<sh3be_device> m_maincpu;
required_device<sed1330_device> m_lcdc; // In reality a sed1335
void map(address_map &map);
void lcdc_map(address_map &map);
void machine_start() override;
};
void psr2000_state::machine_start()
{
}
void psr2000_state::psr2000(machine_config &config)
{
SH3BE(config, m_maincpu, 10_MHz_XTAL*4);
m_maincpu->set_addrmap(AS_PROGRAM, &psr2000_state::map);
auto &palette = PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED);
auto &screen = SCREEN(config, "screen", SCREEN_TYPE_LCD);
screen.set_refresh_hz(60);
screen.set_screen_update(m_lcdc, FUNC(sed1330_device::screen_update));
screen.set_size(320, 240);
screen.set_visarea(0, 320-1, 0, 240-1);
screen.set_palette(palette);
SED1330(config, m_lcdc, 16_MHz_XTAL / 2); // Clock provided by the fdc
m_lcdc->set_screen("screen");
m_lcdc->set_addrmap(0, &psr2000_state::lcdc_map);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
}
void psr2000_state::map(address_map &map)
{
map(0x00000000, 0x007fffff).rom().region("maincpu", 0).mirror(0xe0000000);
map(0x08000000, 0x087fffff).rom().region("style", 0).mirror(0xe0000000);
map(0x0c000000, 0x0c7fffff).ram().mirror(0xe0000000);
map(0x10000000, 0x100fffff).rom().region("data", 0).mirror(0xe0000000);
map(0x14000000, 0x1400000f); // 8bitcs -> lcdccs, fdccs
map(0x14400000, 0x14400000).rw(m_lcdc, FUNC(sed1330_device::status_r), FUNC(sed1330_device::data_w));
map(0x14400002, 0x14400002).rw(m_lcdc, FUNC(sed1330_device::data_r), FUNC(sed1330_device::command_w));
map(0x14c00000, 0x14ffffff).nopw();
map(0x18000000, 0x1800000f); // 16bitcs -> vopcs, tgccs
}
void psr2000_state::lcdc_map(address_map &map)
{
map.global_mask(0x7fff);
map(0x0000, 0x7fff).ram();
}
static INPUT_PORTS_START( psr2000 )
INPUT_PORTS_END
ROM_START( psr2000 )
ROM_REGION64_BE( 0x800000, "maincpu", 0 )
ROM_LOAD32_WORD_SWAP( "x031420.ic206", 0, 0x400000, CRC(42109711) SHA1(4b9ff95d55154fff50142134e2de0fd9b95c4e8e))
ROM_LOAD32_WORD_SWAP( "x031520.ic205", 2, 0x400000, CRC(4b0943cb) SHA1(eb2895f3957b06b991fe3a3b3030fa9aa3cc85b6))
ROM_REGION64_BE( 0x800000, "style", 0 )
ROM_LOAD16_WORD_SWAP( "x031710.ic207", 0, 0x800000, CRC(669c31ba) SHA1(d0b13ca2414ad8b476391ea53a511783f9f8d030))
ROM_REGION64_BE( 0x400000, "data", 0 ) // flash
ROM_LOAD16_WORD_SWAP( "xv685a0.ic204", 0, 0x100000, CRC(c339a386) SHA1(6ae30913d2aff7ae2056f6a5f1a2264ad3f7798c))
ROM_REGION32_BE( 0x1000000, "swp30", 0 )
ROM_LOAD32_WORD_SWAP( "x004010.ic406", 0, 0x800000, CRC(126e5f07) SHA1(db93965e4226212fdbe34df2f0f5457173f01dda))
ROM_LOAD32_WORD_SWAP( "x004110.ic407", 2, 0x800000, CRC(fae720fe) SHA1(df80a9a75308f0ab1ab33248b5e8cd6563e6aed5))
ROM_END
SYST( 2001, psr2000, 0, 0, psr2000, psr2000, psr2000_state, empty_init, "Yamaha", "PSR2000", MACHINE_IS_SKELETON )