From 38498868fc18aae25a206e4e62ec0aa99f8a7d89 Mon Sep 17 00:00:00 2001 From: AJR Date: Thu, 13 Apr 2023 22:26:21 -0400 Subject: roland_s50.cpp: Add floppy format --- scripts/src/formats.lua | 12 ++++++++++++ src/lib/formats/all.cpp | 9 +++++++++ src/lib/formats/roland_dsk.cpp | 38 ++++++++++++++++++++++++++++++++++++++ src/lib/formats/roland_dsk.h | 27 +++++++++++++++++++++++++++ src/mame/roland/roland_s50.cpp | 20 ++++++++++++++------ 5 files changed, 100 insertions(+), 6 deletions(-) create mode 100644 src/lib/formats/roland_dsk.cpp create mode 100644 src/lib/formats/roland_dsk.h diff --git a/scripts/src/formats.lua b/scripts/src/formats.lua index 140293e97a8..a787d77343a 100644 --- a/scripts/src/formats.lua +++ b/scripts/src/formats.lua @@ -1704,6 +1704,18 @@ if opt_tool(FORMATS, "RK_CAS") then } end +-------------------------------------------------- +-- +--@src/lib/formats/roland_dsk.h,FORMATS["ROLAND_DSK"] = true +-------------------------------------------------- + +if opt_tool(FORMATS, "ROLAND_DSK") then + files { + MAME_DIR.. "src/lib/formats/roland_dsk.cpp", + MAME_DIR.. "src/lib/formats/roland_dsk.h", + } +end + -------------------------------------------------- -- --@src/lib/formats/rx50_dsk.h,FORMATS["RX50_DSK"] = true diff --git a/src/lib/formats/all.cpp b/src/lib/formats/all.cpp index d56a1ee9e6c..9519b323686 100644 --- a/src/lib/formats/all.cpp +++ b/src/lib/formats/all.cpp @@ -564,6 +564,10 @@ #include "rk_cas.h" #endif +#ifdef HAS_FORMATS_ROLAND_DSK +#include "roland_dsk.h" +#endif + #ifdef HAS_FORMATS_RX50_DSK #include "rx50_dsk.h" #endif @@ -1271,6 +1275,11 @@ void mame_formats_full_list(mame_formats_enumerator &en) en.add(FLOPPY_RC759_FORMAT); // rc759_dsk.h #endif + en.category("Roland"); +#ifdef HAS_FORMATS_ROLAND_DSK + en.add(FLOPPY_ROLAND_SDISK_FORMAT); // roland_dsk.h +#endif + en.category("DEC"); #ifdef HAS_FORMATS_RX50_DSK en.add(FLOPPY_RX50IMG_FORMAT); // rx50_dsk.h diff --git a/src/lib/formats/roland_dsk.cpp b/src/lib/formats/roland_dsk.cpp new file mode 100644 index 00000000000..4945de93536 --- /dev/null +++ b/src/lib/formats/roland_dsk.cpp @@ -0,0 +1,38 @@ +// license:BSD-3-Clause +// copyright-holders:Olivier Galibert + +#include "roland_dsk.h" + +roland_sdisk_format::roland_sdisk_format() : wd177x_format(formats) +{ +} + +const char *roland_sdisk_format::name() const +{ + return "roland_sdisk"; +} + +const char *roland_sdisk_format::description() const +{ + return "Roland S-Disk image"; +} + +const char *roland_sdisk_format::extensions() const +{ + return "out,w30"; +} + +const roland_sdisk_format::format roland_sdisk_format::formats[] = { + { + floppy_image::FF_35, floppy_image::DSDD, floppy_image::MFM, + 2000, + 9, 80, 2, + 512, {}, + 1, {}, + 80, 22, 24 + }, + // TODO: add HD format used by S-750/S-760/S-770 + {} +}; + +const roland_sdisk_format FLOPPY_ROLAND_SDISK_FORMAT; diff --git a/src/lib/formats/roland_dsk.h b/src/lib/formats/roland_dsk.h new file mode 100644 index 00000000000..f40b1dcee26 --- /dev/null +++ b/src/lib/formats/roland_dsk.h @@ -0,0 +1,27 @@ +// license:BSD-3-Clause +// copyright-holders:Olivier Galibert + +#ifndef MAME_FORMATS_ROLAND_DSK_H +#define MAME_FORMATS_ROLAND_DSK_H + +#pragma once + +#include "wd177x_dsk.h" + +class roland_sdisk_format : public wd177x_format +{ +public: + roland_sdisk_format(); + + virtual const char *name() const override; + virtual const char *description() const override; + virtual const char *extensions() const override; + +private: + static const format formats[]; +}; + + +extern const roland_sdisk_format FLOPPY_ROLAND_SDISK_FORMAT; + +#endif // MAME_FORMATS_ROLAND_DSK_H diff --git a/src/mame/roland/roland_s50.cpp b/src/mame/roland/roland_s50.cpp index d332f2ac623..a32e76c5eb6 100644 --- a/src/mame/roland/roland_s50.cpp +++ b/src/mame/roland/roland_s50.cpp @@ -11,6 +11,8 @@ #include "sa16.h" #include "mb63h149.h" +#include "formats/roland_dsk.h" + //#include "bus/midi/midi.h" #include "bus/nscsi/hd.h" #include "cpu/mcs96/i8x9x.h" @@ -410,6 +412,12 @@ static void s50_floppies(device_slot_interface &device) device.option_add("35dd", FLOPPY_35_DD); } +static void floppy_formats(format_registration &fr) +{ + fr.add_mfm_containers(); + fr.add(FLOPPY_ROLAND_SDISK_FORMAT); +} + static void scsi_devices(device_slot_interface &device) { device.option_add("harddisk", NSCSI_HARDDISK); @@ -429,8 +437,8 @@ void roland_s50_state::s50(machine_config &config) m_fdc->intrq_wr_callback().set_inputline(m_maincpu, i8x9x_device::HSI3_LINE); // Floppy unit: FDD4261A0K or FDD4251G0K - FLOPPY_CONNECTOR(config, m_floppy[0], s50_floppies, "35dd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true); - FLOPPY_CONNECTOR(config, m_floppy[1], s50_floppies, nullptr, floppy_image_device::default_mfm_floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[0], s50_floppies, "35dd", &floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[1], s50_floppies, nullptr, &floppy_formats).enable_sound(true); //UPD7538A(config, "fipcpu", 600_kHz_XTAL); @@ -499,8 +507,8 @@ void roland_w30_state::w30(machine_config &config) WD1772(config, m_fdc, 8_MHz_XTAL); // WD1772-02 // Floppy unit: FX-354 (307F1JC) - FLOPPY_CONNECTOR(config, m_floppy[0], s50_floppies, "35dd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true); - FLOPPY_CONNECTOR(config, m_floppy[1], s50_floppies, nullptr, floppy_image_device::default_mfm_floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[0], s50_floppies, "35dd", &floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[1], s50_floppies, nullptr, &floppy_formats).enable_sound(true); // SCSI controller on main board, by option (KW-30) NSCSI_BUS(config, "scsi"); @@ -531,8 +539,8 @@ void roland_w30_state::s330(machine_config &config) WD1772(config, m_fdc, 8_MHz_XTAL); // WD1772-02 // Floppy unit: ND-362S-A - FLOPPY_CONNECTOR(config, m_floppy[0], s50_floppies, "35dd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true); - FLOPPY_CONNECTOR(config, m_floppy[1], s50_floppies, nullptr, floppy_image_device::default_mfm_floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[0], s50_floppies, "35dd", &floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[1], s50_floppies, nullptr, &floppy_formats).enable_sound(true); // LCD unit: DM1620-5BL7 (MW-5F) -- cgit v1.2.3