summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2021-01-09 21:41:19 +0100
committer Olivier Galibert <galibert@pobox.com>2021-01-09 21:42:29 +0100
commit23af0ace46f4ac4c1b916f5dcba5ee82b7eff361 (patch)
tree9e152ea70cb0f60315ffb4d9b5a8c38ee0b58d06 /src/lib
parent31390d3f3e1fd4ad4631115b1f1a2c68f419179d (diff)
Provide the variants to the floppy formats
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/formats/acorn_dsk.cpp18
-rw-r--r--src/lib/formats/acorn_dsk.h18
-rw-r--r--src/lib/formats/afs_dsk.cpp2
-rw-r--r--src/lib/formats/afs_dsk.h2
-rw-r--r--src/lib/formats/aim_dsk.cpp4
-rw-r--r--src/lib/formats/aim_dsk.h4
-rw-r--r--src/lib/formats/ami_dsk.cpp6
-rw-r--r--src/lib/formats/ami_dsk.h6
-rw-r--r--src/lib/formats/ap2_dsk.cpp20
-rw-r--r--src/lib/formats/ap2_dsk.h20
-rw-r--r--src/lib/formats/ap_dsk35.cpp6
-rw-r--r--src/lib/formats/ap_dsk35.h6
-rw-r--r--src/lib/formats/apd_dsk.cpp4
-rw-r--r--src/lib/formats/apd_dsk.h4
-rw-r--r--src/lib/formats/apollo_dsk.cpp2
-rw-r--r--src/lib/formats/apollo_dsk.h2
-rw-r--r--src/lib/formats/apridisk.cpp6
-rw-r--r--src/lib/formats/apridisk.h6
-rw-r--r--src/lib/formats/ccvf_dsk.cpp4
-rw-r--r--src/lib/formats/ccvf_dsk.h4
-rw-r--r--src/lib/formats/concept_dsk.cpp6
-rw-r--r--src/lib/formats/concept_dsk.h6
-rw-r--r--src/lib/formats/coupedsk.cpp6
-rw-r--r--src/lib/formats/coupedsk.h6
-rw-r--r--src/lib/formats/cqm_dsk.cpp6
-rw-r--r--src/lib/formats/cqm_dsk.h6
-rw-r--r--src/lib/formats/d64_dsk.cpp6
-rw-r--r--src/lib/formats/d64_dsk.h6
-rw-r--r--src/lib/formats/d88_dsk.cpp6
-rw-r--r--src/lib/formats/d88_dsk.h6
-rw-r--r--src/lib/formats/dcp_dsk.cpp4
-rw-r--r--src/lib/formats/dcp_dsk.h4
-rw-r--r--src/lib/formats/dfi_dsk.cpp4
-rw-r--r--src/lib/formats/dfi_dsk.h6
-rw-r--r--src/lib/formats/dim_dsk.cpp6
-rw-r--r--src/lib/formats/dim_dsk.h6
-rw-r--r--src/lib/formats/dip_dsk.cpp4
-rw-r--r--src/lib/formats/dip_dsk.h4
-rw-r--r--src/lib/formats/dmk_dsk.cpp6
-rw-r--r--src/lib/formats/dmk_dsk.h6
-rw-r--r--src/lib/formats/ds9_dsk.cpp4
-rw-r--r--src/lib/formats/ds9_dsk.h4
-rw-r--r--src/lib/formats/dsk_dsk.cpp4
-rw-r--r--src/lib/formats/dsk_dsk.h4
-rw-r--r--src/lib/formats/dvk_mx_dsk.cpp4
-rw-r--r--src/lib/formats/dvk_mx_dsk.h4
-rw-r--r--src/lib/formats/esq16_dsk.cpp6
-rw-r--r--src/lib/formats/esq16_dsk.h6
-rw-r--r--src/lib/formats/esq8_dsk.cpp6
-rw-r--r--src/lib/formats/esq8_dsk.h6
-rw-r--r--src/lib/formats/fdd_dsk.cpp4
-rw-r--r--src/lib/formats/fdd_dsk.h4
-rw-r--r--src/lib/formats/flex_dsk.cpp2
-rw-r--r--src/lib/formats/flex_dsk.h2
-rw-r--r--src/lib/formats/flopimg.cpp10
-rw-r--r--src/lib/formats/flopimg.h17
-rw-r--r--src/lib/formats/fsd_dsk.cpp4
-rw-r--r--src/lib/formats/fsd_dsk.h4
-rw-r--r--src/lib/formats/g64_dsk.cpp6
-rw-r--r--src/lib/formats/g64_dsk.h6
-rw-r--r--src/lib/formats/hpi_dsk.cpp6
-rw-r--r--src/lib/formats/hpi_dsk.h6
-rw-r--r--src/lib/formats/hxchfe_dsk.cpp6
-rw-r--r--src/lib/formats/hxchfe_dsk.h6
-rw-r--r--src/lib/formats/hxcmfm_dsk.cpp6
-rw-r--r--src/lib/formats/hxcmfm_dsk.h6
-rw-r--r--src/lib/formats/ibmxdf_dsk.cpp4
-rw-r--r--src/lib/formats/ibmxdf_dsk.h4
-rw-r--r--src/lib/formats/imd_dsk.cpp6
-rw-r--r--src/lib/formats/imd_dsk.h6
-rw-r--r--src/lib/formats/img_dsk.cpp6
-rw-r--r--src/lib/formats/img_dsk.h6
-rw-r--r--src/lib/formats/ipf_dsk.cpp4
-rw-r--r--src/lib/formats/ipf_dsk.h4
-rw-r--r--src/lib/formats/jfd_dsk.cpp4
-rw-r--r--src/lib/formats/jfd_dsk.h4
-rw-r--r--src/lib/formats/jvc_dsk.cpp6
-rw-r--r--src/lib/formats/jvc_dsk.h6
-rw-r--r--src/lib/formats/m20_dsk.cpp6
-rw-r--r--src/lib/formats/m20_dsk.h6
-rw-r--r--src/lib/formats/mdos_dsk.cpp2
-rw-r--r--src/lib/formats/mdos_dsk.h2
-rw-r--r--src/lib/formats/mfi_dsk.cpp6
-rw-r--r--src/lib/formats/mfi_dsk.h6
-rw-r--r--src/lib/formats/nfd_dsk.cpp4
-rw-r--r--src/lib/formats/nfd_dsk.h4
-rw-r--r--src/lib/formats/opd_dsk.cpp2
-rw-r--r--src/lib/formats/opd_dsk.h2
-rw-r--r--src/lib/formats/oric_dsk.cpp6
-rw-r--r--src/lib/formats/oric_dsk.h6
-rw-r--r--src/lib/formats/os9_dsk.cpp2
-rw-r--r--src/lib/formats/os9_dsk.h2
-rw-r--r--src/lib/formats/pasti_dsk.cpp4
-rw-r--r--src/lib/formats/pasti_dsk.h4
-rw-r--r--src/lib/formats/pc98fdi_dsk.cpp4
-rw-r--r--src/lib/formats/pc98fdi_dsk.h4
-rw-r--r--src/lib/formats/pc_dsk.cpp4
-rw-r--r--src/lib/formats/pc_dsk.h2
-rw-r--r--src/lib/formats/poly_dsk.cpp4
-rw-r--r--src/lib/formats/poly_dsk.h4
-rw-r--r--src/lib/formats/rx50_dsk.cpp6
-rw-r--r--src/lib/formats/rx50_dsk.h6
-rw-r--r--src/lib/formats/sdf_dsk.cpp6
-rw-r--r--src/lib/formats/sdf_dsk.h6
-rw-r--r--src/lib/formats/st_dsk.cpp12
-rw-r--r--src/lib/formats/st_dsk.h12
-rw-r--r--src/lib/formats/svi_dsk.cpp6
-rw-r--r--src/lib/formats/svi_dsk.h6
-rw-r--r--src/lib/formats/td0_dsk.cpp6
-rw-r--r--src/lib/formats/td0_dsk.h6
-rw-r--r--src/lib/formats/ti99_dsk.cpp8
-rw-r--r--src/lib/formats/ti99_dsk.h8
-rw-r--r--src/lib/formats/uniflex_dsk.cpp2
-rw-r--r--src/lib/formats/uniflex_dsk.h2
-rw-r--r--src/lib/formats/upd765_dsk.cpp6
-rw-r--r--src/lib/formats/upd765_dsk.h6
-rw-r--r--src/lib/formats/vdk_dsk.cpp6
-rw-r--r--src/lib/formats/vdk_dsk.h6
-rw-r--r--src/lib/formats/victor9k_dsk.cpp6
-rw-r--r--src/lib/formats/victor9k_dsk.h6
-rw-r--r--src/lib/formats/wd177x_dsk.cpp6
-rw-r--r--src/lib/formats/wd177x_dsk.h6
122 files changed, 351 insertions, 332 deletions
diff --git a/src/lib/formats/acorn_dsk.cpp b/src/lib/formats/acorn_dsk.cpp
index 64091ed887b..2f9f5ebf7ab 100644
--- a/src/lib/formats/acorn_dsk.cpp
+++ b/src/lib/formats/acorn_dsk.cpp
@@ -93,7 +93,7 @@ int acorn_ssd_format::find_size(io_generic *io, uint32_t form_factor)
return -1;
}
-int acorn_ssd_format::identify(io_generic *io, uint32_t form_factor)
+int acorn_ssd_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int type = find_size(io, form_factor);
@@ -216,7 +216,7 @@ int acorn_dsd_format::find_size(io_generic *io, uint32_t form_factor)
return -1;
}
-int acorn_dsd_format::identify(io_generic *io, uint32_t form_factor)
+int acorn_dsd_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int type = find_size(io, form_factor);
@@ -311,7 +311,7 @@ int opus_ddos_format::find_size(io_generic *io, uint32_t form_factor)
return -1;
}
-int opus_ddos_format::identify(io_generic *io, uint32_t form_factor)
+int opus_ddos_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int type = find_size(io, form_factor);
@@ -399,7 +399,7 @@ int acorn_adfs_old_format::find_size(io_generic *io, uint32_t form_factor)
return -1;
}
-int acorn_adfs_old_format::identify(io_generic *io, uint32_t form_factor)
+int acorn_adfs_old_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int type = find_size(io, form_factor);
@@ -496,7 +496,7 @@ int acorn_adfs_new_format::find_size(io_generic *io, uint32_t form_factor)
return -1;
}
-int acorn_adfs_new_format::identify(io_generic *io, uint32_t form_factor)
+int acorn_adfs_new_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int type = find_size(io, form_factor);
@@ -567,7 +567,7 @@ int acorn_dos_format::find_size(io_generic *io, uint32_t form_factor)
return -1;
}
-int acorn_dos_format::identify(io_generic *io, uint32_t form_factor)
+int acorn_dos_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int type = find_size(io, form_factor);
@@ -618,7 +618,7 @@ bool opus_ddcpm_format::supports_save() const
return false;
}
-int opus_ddcpm_format::identify(io_generic *io, uint32_t form_factor)
+int opus_ddcpm_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t h[8];
@@ -630,7 +630,7 @@ int opus_ddcpm_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool opus_ddcpm_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool opus_ddcpm_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
// Double density discs formatted with DDCPM :
//
@@ -677,7 +677,7 @@ bool opus_ddcpm_format::load(io_generic *io, uint32_t form_factor, floppy_image
return true;
}
-bool opus_ddcpm_format::save(io_generic *io, floppy_image *image)
+bool opus_ddcpm_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
return false;
}
diff --git a/src/lib/formats/acorn_dsk.h b/src/lib/formats/acorn_dsk.h
index 043c2859232..2f3da32184a 100644
--- a/src/lib/formats/acorn_dsk.h
+++ b/src/lib/formats/acorn_dsk.h
@@ -21,7 +21,7 @@ public:
acorn_ssd_format();
virtual int find_size(io_generic *io, uint32_t form_factor) override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
virtual int get_image_offset(const format &f, int head, int track) override;
virtual const char *name() const override;
virtual const char *description() const override;
@@ -37,7 +37,7 @@ public:
acorn_dsd_format();
virtual int find_size(io_generic *io, uint32_t form_factor) override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
virtual int get_image_offset(const format &f, int head, int track) override;
virtual const char *name() const override;
virtual const char *description() const override;
@@ -53,7 +53,7 @@ public:
opus_ddos_format();
virtual int find_size(io_generic *io, uint32_t form_factor) override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
virtual int get_image_offset(const format &f, int head, int track) override;
virtual const char *name() const override;
virtual const char *description() const override;
@@ -69,7 +69,7 @@ public:
acorn_adfs_old_format();
virtual int find_size(io_generic *io, uint32_t form_factor) override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
virtual int get_image_offset(const format &f, int head, int track) override;
virtual const char *name() const override;
virtual const char *description() const override;
@@ -85,7 +85,7 @@ public:
acorn_adfs_new_format();
virtual int find_size(io_generic *io, uint32_t form_factor) override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
virtual int get_image_offset(const format &f, int head, int track) override;
virtual const char *name() const override;
virtual const char *description() const override;
@@ -101,7 +101,7 @@ public:
acorn_dos_format();
virtual int find_size(io_generic *io, uint32_t form_factor) override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
virtual int get_image_offset(const format &f, int head, int track) override;
virtual const char *name() const override;
virtual const char *description() const override;
@@ -116,9 +116,9 @@ class opus_ddcpm_format : public floppy_image_format_t
public:
opus_ddcpm_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/afs_dsk.cpp b/src/lib/formats/afs_dsk.cpp
index ee89e26a87e..b9b6cefadec 100644
--- a/src/lib/formats/afs_dsk.cpp
+++ b/src/lib/formats/afs_dsk.cpp
@@ -30,7 +30,7 @@ const char *afs_format::extensions() const
return "adl,img";
}
-int afs_format::identify(io_generic *io, uint32_t form_factor)
+int afs_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int type = find_size(io, form_factor);
diff --git a/src/lib/formats/afs_dsk.h b/src/lib/formats/afs_dsk.h
index e523d834031..1a15e54d90d 100644
--- a/src/lib/formats/afs_dsk.h
+++ b/src/lib/formats/afs_dsk.h
@@ -20,7 +20,7 @@ class afs_format : public wd177x_format
public:
afs_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
virtual int get_image_offset(const format &f, int head, int track) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/aim_dsk.cpp b/src/lib/formats/aim_dsk.cpp
index b0b109b15c9..489ec1752e4 100644
--- a/src/lib/formats/aim_dsk.cpp
+++ b/src/lib/formats/aim_dsk.cpp
@@ -40,7 +40,7 @@ const char *aim_format::extensions() const
}
-int aim_format::identify(io_generic *io, uint32_t form_factor)
+int aim_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
if (io_generic_size(io) == 2068480)
{
@@ -51,7 +51,7 @@ int aim_format::identify(io_generic *io, uint32_t form_factor)
}
-bool aim_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool aim_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
image->set_variant(floppy_image::DSQD);
diff --git a/src/lib/formats/aim_dsk.h b/src/lib/formats/aim_dsk.h
index 75229875c69..c4737efc7e6 100644
--- a/src/lib/formats/aim_dsk.h
+++ b/src/lib/formats/aim_dsk.h
@@ -20,8 +20,8 @@ class aim_format : public floppy_image_format_t
public:
aim_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/ami_dsk.cpp b/src/lib/formats/ami_dsk.cpp
index ba04067f752..d231de9e20a 100644
--- a/src/lib/formats/ami_dsk.cpp
+++ b/src/lib/formats/ami_dsk.cpp
@@ -36,7 +36,7 @@ bool adf_format::supports_save() const
return true;
}
-int adf_format::identify(io_generic *io, uint32_t form_factor)
+int adf_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint64_t size = io_generic_size(io);
if ((size == 901120) || (size == 912384) || (size == 1802240))
@@ -46,7 +46,7 @@ int adf_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool adf_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool adf_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
desc_s sectors[22];
uint8_t sectdata[512*22];
@@ -127,7 +127,7 @@ uint32_t adf_format::checksum(const uint8_t *trackbuf, int track_size, int pos,
return check & 0x55555555;
}
-bool adf_format::save(io_generic *io, floppy_image *image)
+bool adf_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t sectdata[512*22];
uint8_t trackbuf[300000/8];
diff --git a/src/lib/formats/ami_dsk.h b/src/lib/formats/ami_dsk.h
index 899e612415a..cde8d28a810 100644
--- a/src/lib/formats/ami_dsk.h
+++ b/src/lib/formats/ami_dsk.h
@@ -19,9 +19,9 @@ class adf_format : public floppy_image_format_t
public:
adf_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/ap2_dsk.cpp b/src/lib/formats/ap2_dsk.cpp
index 9e71303ece5..89776eb52f1 100644
--- a/src/lib/formats/ap2_dsk.cpp
+++ b/src/lib/formats/ap2_dsk.cpp
@@ -559,7 +559,7 @@ bool a2_16sect_format::supports_save() const
return true;
}
-int a2_16sect_format::identify(io_generic *io, uint32_t form_factor)
+int a2_16sect_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint64_t size = io_generic_size(io);
//uint32_t expected_size = 35 * 16 * 256;
@@ -604,7 +604,7 @@ const floppy_image_format_t::desc_e a2_16sect_format::mac_gcr[] = {
{ END },
};
-bool a2_16sect_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool a2_16sect_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint64_t size = io_generic_size(io);
@@ -768,7 +768,7 @@ void a2_16sect_format::update_chk(const uint8_t *data, int size, uint32_t &chk)
//#define VERBOSE_SAVE
-bool a2_16sect_format::save(io_generic *io, floppy_image *image)
+bool a2_16sect_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
int g_tracks, g_heads;
int visualgrid[16][APPLE2_TRACK_COUNT]; // visualizer grid, cleared/initialized below
@@ -1046,7 +1046,7 @@ bool a2_rwts18_format::supports_save() const
return true;
}
-int a2_rwts18_format::identify(io_generic *io, uint32_t form_factor)
+int a2_rwts18_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint64_t size = io_generic_size(io);
uint32_t expected_size = APPLE2_TRACK_COUNT * 16 * 256;
@@ -1084,7 +1084,7 @@ const floppy_image_format_t::desc_e a2_rwts18_format::mac_gcr[] = {
};
-bool a2_rwts18_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool a2_rwts18_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
/* TODO: rewrite me properly
uint8_t sector_data[(256)*16];
@@ -1133,7 +1133,7 @@ void a2_rwts18_format::update_chk(const uint8_t *data, int size, uint32_t &chk)
{
}
-bool a2_rwts18_format::save(io_generic *io, floppy_image *image)
+bool a2_rwts18_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
int g_tracks, g_heads;
int visualgrid[18][APPLE2_TRACK_COUNT]; // visualizer grid, cleared/initialized below
@@ -1562,7 +1562,7 @@ bool a2_edd_format::supports_save() const
return false;
}
-int a2_edd_format::identify(io_generic *io, uint32_t form_factor)
+int a2_edd_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
return ((io_generic_size(io) == 2244608) || (io_generic_size(io) == 2310144)) ? 50 : 0;
}
@@ -1572,7 +1572,7 @@ uint8_t a2_edd_format::pick(const uint8_t *data, int pos)
return ((data[pos>>3] << 8) | data[(pos>>3)+1]) >> (8-(pos & 7));
}
-bool a2_edd_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool a2_edd_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t *img;
uint8_t nibble[16384], stream[16384];
@@ -1686,7 +1686,7 @@ bool a2_woz_format::supports_save() const
const uint8_t a2_woz_format::signature[8] = { 0x57, 0x4f, 0x5a, 0x31, 0xff, 0x0a, 0x0d, 0x0a };
const uint8_t a2_woz_format::signature2[8] = { 0x57, 0x4f, 0x5a, 0x32, 0xff, 0x0a, 0x0d, 0x0a };
-int a2_woz_format::identify(io_generic *io, uint32_t form_factor)
+int a2_woz_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t header[8];
io_generic_read(io, header, 0, 8);
@@ -1695,7 +1695,7 @@ int a2_woz_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool a2_woz_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool a2_woz_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
std::vector<uint8_t> img(io_generic_size(io));
io_generic_read(io, &img[0], 0, img.size());
diff --git a/src/lib/formats/ap2_dsk.h b/src/lib/formats/ap2_dsk.h
index 345ca3ea6c3..1a250e5e110 100644
--- a/src/lib/formats/ap2_dsk.h
+++ b/src/lib/formats/ap2_dsk.h
@@ -41,9 +41,9 @@ class a2_16sect_format : public floppy_image_format_t
public:
a2_16sect_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
@@ -68,9 +68,9 @@ class a2_rwts18_format : public floppy_image_format_t
public:
a2_rwts18_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
@@ -92,8 +92,8 @@ class a2_edd_format : public floppy_image_format_t
public:
a2_edd_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual bool supports_save() const override;
virtual const char *name() const override;
@@ -111,8 +111,8 @@ class a2_woz_format : public floppy_image_format_t
public:
a2_woz_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual bool supports_save() const override;
virtual const char *name() const override;
diff --git a/src/lib/formats/ap_dsk35.cpp b/src/lib/formats/ap_dsk35.cpp
index 243eacaa7ad..c59d28a0a4b 100644
--- a/src/lib/formats/ap_dsk35.cpp
+++ b/src/lib/formats/ap_dsk35.cpp
@@ -1232,7 +1232,7 @@ bool dc42_format::supports_save() const
return true;
}
-int dc42_format::identify(io_generic *io, uint32_t form_factor)
+int dc42_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t h[0x54];
uint64_t size = io_generic_size(io);
@@ -1276,7 +1276,7 @@ const floppy_image_format_t::desc_e dc42_format::mac_gcr[] = {
};
-bool dc42_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool dc42_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t h[0x54];
io_generic_read(io, h, 0, 0x54);
@@ -1350,7 +1350,7 @@ void dc42_format::update_chk(const uint8_t *data, int size, uint32_t &chk)
}
}
-bool dc42_format::save(io_generic *io, floppy_image *image)
+bool dc42_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
int g_tracks, g_heads;
image->get_actual_geometry(g_tracks, g_heads);
diff --git a/src/lib/formats/ap_dsk35.h b/src/lib/formats/ap_dsk35.h
index 8b3a8bbc1d3..2f6c54d66ce 100644
--- a/src/lib/formats/ap_dsk35.h
+++ b/src/lib/formats/ap_dsk35.h
@@ -29,9 +29,9 @@ class dc42_format : public floppy_image_format_t
public:
dc42_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/apd_dsk.cpp b/src/lib/formats/apd_dsk.cpp
index 202c7e0d239..45d385a0800 100644
--- a/src/lib/formats/apd_dsk.cpp
+++ b/src/lib/formats/apd_dsk.cpp
@@ -85,7 +85,7 @@ const char *apd_format::extensions() const
return "apd";
}
-int apd_format::identify(io_generic *io, uint32_t form_factor)
+int apd_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint64_t size = io_generic_size(io);
std::vector<uint8_t> img(size);
@@ -123,7 +123,7 @@ int apd_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool apd_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool apd_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint64_t size = io_generic_size(io);
std::vector<uint8_t> img(size);
diff --git a/src/lib/formats/apd_dsk.h b/src/lib/formats/apd_dsk.h
index 343d45eb51d..bc551973c4a 100644
--- a/src/lib/formats/apd_dsk.h
+++ b/src/lib/formats/apd_dsk.h
@@ -23,8 +23,8 @@ public:
virtual const char *description() const override;
virtual const char *extensions() const override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual bool supports_save() const override;
};
diff --git a/src/lib/formats/apollo_dsk.cpp b/src/lib/formats/apollo_dsk.cpp
index 213286dd85b..75c31cfe7f8 100644
--- a/src/lib/formats/apollo_dsk.cpp
+++ b/src/lib/formats/apollo_dsk.cpp
@@ -46,7 +46,7 @@ const apollo_format::format apollo_format::formats[] = {
const floppy_format_type FLOPPY_APOLLO_FORMAT = &floppy_image_format_creator<apollo_format>;
-int apollo_format::identify(io_generic *io, uint32_t form_factor)
+int apollo_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint64_t size = io_generic_size(io);
uint32_t expected_size = 77*2*8*1024;
diff --git a/src/lib/formats/apollo_dsk.h b/src/lib/formats/apollo_dsk.h
index 048a2438cc5..6376c77b067 100644
--- a/src/lib/formats/apollo_dsk.h
+++ b/src/lib/formats/apollo_dsk.h
@@ -19,7 +19,7 @@ class apollo_format : public upd765_format
public:
apollo_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
virtual const char *name() const override;
virtual const char *description() const override;
virtual const char *extensions() const override;
diff --git a/src/lib/formats/apridisk.cpp b/src/lib/formats/apridisk.cpp
index aad688167cf..388d358f6f8 100644
--- a/src/lib/formats/apridisk.cpp
+++ b/src/lib/formats/apridisk.cpp
@@ -32,7 +32,7 @@ const char *apridisk_format::extensions() const
return "dsk";
}
-int apridisk_format::identify(io_generic *io, uint32_t form_factor)
+int apridisk_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t header[APR_HEADER_SIZE];
io_generic_read(io, header, 0, APR_HEADER_SIZE);
@@ -45,7 +45,7 @@ int apridisk_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool apridisk_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool apridisk_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
desc_pc_sector sectors[80][2][18];
std::unique_ptr<uint8_t []> sector_data(new uint8_t [MAX_SECTORS * SECTOR_SIZE]);
@@ -140,7 +140,7 @@ bool apridisk_format::load(io_generic *io, uint32_t form_factor, floppy_image *i
return true;
}
-bool apridisk_format::save(io_generic *io, floppy_image *image)
+bool apridisk_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
return false;
}
diff --git a/src/lib/formats/apridisk.h b/src/lib/formats/apridisk.h
index 957ef3aef1c..3e751f8d6ec 100644
--- a/src/lib/formats/apridisk.h
+++ b/src/lib/formats/apridisk.h
@@ -23,9 +23,9 @@ public:
virtual const char *description() const override;
virtual const char *extensions() const override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual bool supports_save() const override;
private:
diff --git a/src/lib/formats/ccvf_dsk.cpp b/src/lib/formats/ccvf_dsk.cpp
index 27aaf355871..bba52d3922a 100644
--- a/src/lib/formats/ccvf_dsk.cpp
+++ b/src/lib/formats/ccvf_dsk.cpp
@@ -46,7 +46,7 @@ const ccvf_format::format ccvf_format::file_formats[] = {
{}
};
-int ccvf_format::identify(io_generic *io, uint32_t form_factor)
+int ccvf_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
char h[36];
@@ -87,7 +87,7 @@ floppy_image_format_t::desc_e* ccvf_format::get_desc_8n1(const format &f, int &c
return desc;
}
-bool ccvf_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool ccvf_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
const format &f = formats[0];
diff --git a/src/lib/formats/ccvf_dsk.h b/src/lib/formats/ccvf_dsk.h
index d101172b5b9..5895a882550 100644
--- a/src/lib/formats/ccvf_dsk.h
+++ b/src/lib/formats/ccvf_dsk.h
@@ -39,8 +39,8 @@ public:
virtual const char *description() const override;
virtual const char *extensions() const override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual bool supports_save() const override;
protected:
diff --git a/src/lib/formats/concept_dsk.cpp b/src/lib/formats/concept_dsk.cpp
index b8c010af852..36531ac8d7f 100644
--- a/src/lib/formats/concept_dsk.cpp
+++ b/src/lib/formats/concept_dsk.cpp
@@ -89,7 +89,7 @@ void cc525dsdd_format::find_size(io_generic *io, uint8_t &track_count, uint8_t &
track_count = head_count = sector_count = 0;
}
-int cc525dsdd_format::identify(io_generic *io, uint32_t form_factor)
+int cc525dsdd_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t track_count, head_count, sector_count;
find_size(io, track_count, head_count, sector_count);
@@ -99,7 +99,7 @@ int cc525dsdd_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool cc525dsdd_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool cc525dsdd_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t track_count, head_count, sector_count;
find_size(io, track_count, head_count, sector_count);
@@ -125,7 +125,7 @@ bool cc525dsdd_format::load(io_generic *io, uint32_t form_factor, floppy_image *
return true;
}
-bool cc525dsdd_format::save(io_generic *io, floppy_image *image)
+bool cc525dsdd_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
int track_count, head_count, sector_count;
get_geometry_mfm_pc(image, 2000, track_count, head_count, sector_count);
diff --git a/src/lib/formats/concept_dsk.h b/src/lib/formats/concept_dsk.h
index ad6e8d63514..58d4e1c52b3 100644
--- a/src/lib/formats/concept_dsk.h
+++ b/src/lib/formats/concept_dsk.h
@@ -17,9 +17,9 @@ class cc525dsdd_format : public floppy_image_format_t
public:
cc525dsdd_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/coupedsk.cpp b/src/lib/formats/coupedsk.cpp
index 967896195f1..16842583855 100644
--- a/src/lib/formats/coupedsk.cpp
+++ b/src/lib/formats/coupedsk.cpp
@@ -64,7 +64,7 @@ bool mgt_format::supports_save() const
return true;
}
-int mgt_format::identify(io_generic *io, uint32_t form_factor)
+int mgt_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint64_t size = io_generic_size(io);
@@ -74,7 +74,7 @@ int mgt_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool mgt_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool mgt_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint64_t size = io_generic_size(io);
int sector_count = size == 737280 ? 9 : 10;
@@ -99,7 +99,7 @@ bool mgt_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
return true;
}
-bool mgt_format::save(io_generic *io, floppy_image *image)
+bool mgt_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
int track_count, head_count, sector_count;
get_geometry_mfm_pc(image, 2000, track_count, head_count, sector_count);
diff --git a/src/lib/formats/coupedsk.h b/src/lib/formats/coupedsk.h
index 190ec0b27b1..3700d3e9974 100644
--- a/src/lib/formats/coupedsk.h
+++ b/src/lib/formats/coupedsk.h
@@ -19,9 +19,9 @@ class mgt_format : public floppy_image_format_t
public:
mgt_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/cqm_dsk.cpp b/src/lib/formats/cqm_dsk.cpp
index 64ff22939aa..5f79a4d3694 100644
--- a/src/lib/formats/cqm_dsk.cpp
+++ b/src/lib/formats/cqm_dsk.cpp
@@ -261,7 +261,7 @@ const char *cqm_format::extensions() const
return "cqm,cqi,dsk";
}
-int cqm_format::identify(io_generic *io, uint32_t form_factor)
+int cqm_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t h[3];
io_generic_read(io, h, 0, 3);
@@ -272,7 +272,7 @@ int cqm_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool cqm_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool cqm_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
const int max_size = 4*1024*1024; // 4MB ought to be large enough for any floppy
std::vector<uint8_t> imagebuf(max_size);
@@ -369,7 +369,7 @@ bool cqm_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
return true;
}
-bool cqm_format::save(io_generic *io, floppy_image *image)
+bool cqm_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
return false;
}
diff --git a/src/lib/formats/cqm_dsk.h b/src/lib/formats/cqm_dsk.h
index b8e590d9021..183c0b83e68 100644
--- a/src/lib/formats/cqm_dsk.h
+++ b/src/lib/formats/cqm_dsk.h
@@ -19,9 +19,9 @@ class cqm_format : public floppy_image_format_t
public:
cqm_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/d64_dsk.cpp b/src/lib/formats/d64_dsk.cpp
index a0460554d8f..46090580056 100644
--- a/src/lib/formats/d64_dsk.cpp
+++ b/src/lib/formats/d64_dsk.cpp
@@ -92,7 +92,7 @@ int d64_format::find_size(io_generic *io, uint32_t form_factor) const
return -1;
}
-int d64_format::identify(io_generic *io, uint32_t form_factor)
+int d64_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int type = find_size(io, form_factor);
@@ -206,7 +206,7 @@ void d64_format::fix_end_gap(floppy_image_format_t::desc_e* desc, int remaining_
desc[22].p1 >>= remaining_size & 0x01;
}
-bool d64_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool d64_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
int type = find_size(io, form_factor);
if(type == -1)
@@ -266,7 +266,7 @@ bool d64_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
return true;
}
-bool d64_format::save(io_generic *io, floppy_image *image)
+bool d64_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
const format &f = formats[0];
diff --git a/src/lib/formats/d64_dsk.h b/src/lib/formats/d64_dsk.h
index c91f116795f..665f6489a81 100644
--- a/src/lib/formats/d64_dsk.h
+++ b/src/lib/formats/d64_dsk.h
@@ -37,9 +37,9 @@ public:
virtual const char *description() const override;
virtual const char *extensions() const override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual bool supports_save() const override { return true; }
protected:
diff --git a/src/lib/formats/d88_dsk.cpp b/src/lib/formats/d88_dsk.cpp
index 30073d1874d..7c4eaa079dc 100644
--- a/src/lib/formats/d88_dsk.cpp
+++ b/src/lib/formats/d88_dsk.cpp
@@ -414,7 +414,7 @@ const char *d88_format::extensions() const
return "d77,d88,1dd";
}
-int d88_format::identify(io_generic *io, uint32_t form_factor)
+int d88_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint64_t size = io_generic_size(io);
uint8_t h[32];
@@ -427,7 +427,7 @@ int d88_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool d88_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool d88_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t h[32];
@@ -536,7 +536,7 @@ bool d88_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
}
-bool d88_format::save(io_generic *io, floppy_image *image)
+bool d88_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
return false;
}
diff --git a/src/lib/formats/d88_dsk.h b/src/lib/formats/d88_dsk.h
index f769aa9f85e..c7c85fc1949 100644
--- a/src/lib/formats/d88_dsk.h
+++ b/src/lib/formats/d88_dsk.h
@@ -20,9 +20,9 @@ class d88_format : public floppy_image_format_t
public:
d88_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/dcp_dsk.cpp b/src/lib/formats/dcp_dsk.cpp
index c245d4ff0e3..b3beb40404f 100644
--- a/src/lib/formats/dcp_dsk.cpp
+++ b/src/lib/formats/dcp_dsk.cpp
@@ -43,7 +43,7 @@ const char *dcp_format::extensions() const
return "dcp,dcu";
}
-int dcp_format::identify(io_generic *io, uint32_t form_factor)
+int dcp_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint64_t size = io_generic_size(io);
uint8_t h[0xa2];
@@ -112,7 +112,7 @@ int dcp_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool dcp_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool dcp_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t h[0xa2];
int heads, tracks, spt, bps;
diff --git a/src/lib/formats/dcp_dsk.h b/src/lib/formats/dcp_dsk.h
index 3ecfab71f61..c06396d527e 100644
--- a/src/lib/formats/dcp_dsk.h
+++ b/src/lib/formats/dcp_dsk.h
@@ -20,8 +20,8 @@ class dcp_format : public floppy_image_format_t
public:
dcp_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/dfi_dsk.cpp b/src/lib/formats/dfi_dsk.cpp
index 23884f10b52..409797e9583 100644
--- a/src/lib/formats/dfi_dsk.cpp
+++ b/src/lib/formats/dfi_dsk.cpp
@@ -56,14 +56,14 @@ bool dfi_format::supports_save() const
return false;
}
-int dfi_format::identify(io_generic *io, uint32_t form_factor)
+int dfi_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
char sign[4];
io_generic_read(io, sign, 0, 4);
return memcmp(sign, "DFE2", 4) ? 0 : 100;
}
-bool dfi_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool dfi_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
char sign[4];
io_generic_read(io, sign, 0, 4);
diff --git a/src/lib/formats/dfi_dsk.h b/src/lib/formats/dfi_dsk.h
index 6dd56aa623c..d727f1d3c06 100644
--- a/src/lib/formats/dfi_dsk.h
+++ b/src/lib/formats/dfi_dsk.h
@@ -12,9 +12,9 @@ class dfi_format : public floppy_image_format_t
public:
dfi_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- // virtual bool save(io_generic *io, floppy_image *image);
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ // virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image);
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/dim_dsk.cpp b/src/lib/formats/dim_dsk.cpp
index ac9930e4782..964f19ce028 100644
--- a/src/lib/formats/dim_dsk.cpp
+++ b/src/lib/formats/dim_dsk.cpp
@@ -132,7 +132,7 @@ const char *dim_format::extensions() const
return "dim";
}
-int dim_format::identify(io_generic *io, uint32_t form_factor)
+int dim_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t h[16];
@@ -144,7 +144,7 @@ int dim_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool dim_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool dim_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
int offset = 0x100;
uint8_t h;
@@ -223,7 +223,7 @@ bool dim_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
}
-bool dim_format::save(io_generic *io, floppy_image *image)
+bool dim_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
return false;
}
diff --git a/src/lib/formats/dim_dsk.h b/src/lib/formats/dim_dsk.h
index b1c3d60a801..e0227e2e221 100644
--- a/src/lib/formats/dim_dsk.h
+++ b/src/lib/formats/dim_dsk.h
@@ -25,9 +25,9 @@ class dim_format : public floppy_image_format_t
public:
dim_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/dip_dsk.cpp b/src/lib/formats/dip_dsk.cpp
index 573f3768072..a33d6fe35d6 100644
--- a/src/lib/formats/dip_dsk.cpp
+++ b/src/lib/formats/dip_dsk.cpp
@@ -37,7 +37,7 @@ const char *dip_format::extensions() const
return "dip";
}
-int dip_format::identify(io_generic *io, uint32_t form_factor)
+int dip_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint64_t size = io_generic_size(io);
@@ -47,7 +47,7 @@ int dip_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool dip_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool dip_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
int heads, tracks, spt, bps;
diff --git a/src/lib/formats/dip_dsk.h b/src/lib/formats/dip_dsk.h
index b504c73fbb0..255e4e6c8a1 100644
--- a/src/lib/formats/dip_dsk.h
+++ b/src/lib/formats/dip_dsk.h
@@ -20,8 +20,8 @@ class dip_format : public floppy_image_format_t
public:
dip_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/dmk_dsk.cpp b/src/lib/formats/dmk_dsk.cpp
index 4b3336b4bcb..39c23223ec5 100644
--- a/src/lib/formats/dmk_dsk.cpp
+++ b/src/lib/formats/dmk_dsk.cpp
@@ -41,7 +41,7 @@ const char *dmk_format::extensions() const
}
-int dmk_format::identify(io_generic *io, uint32_t form_factor)
+int dmk_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
const int header_size = 16;
uint8_t header[header_size];
@@ -81,7 +81,7 @@ int dmk_format::identify(io_generic *io, uint32_t form_factor)
}
-bool dmk_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool dmk_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
const int header_size = 16;
uint8_t header[header_size];
@@ -213,7 +213,7 @@ bool dmk_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
}
-bool dmk_format::save(io_generic *io, floppy_image *image)
+bool dmk_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
return false;
}
diff --git a/src/lib/formats/dmk_dsk.h b/src/lib/formats/dmk_dsk.h
index 44993f8df32..a2e7898dece 100644
--- a/src/lib/formats/dmk_dsk.h
+++ b/src/lib/formats/dmk_dsk.h
@@ -21,9 +21,9 @@ class dmk_format : public floppy_image_format_t
public:
dmk_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/ds9_dsk.cpp b/src/lib/formats/ds9_dsk.cpp
index cd241c3a319..fdf4f5e2299 100644
--- a/src/lib/formats/ds9_dsk.cpp
+++ b/src/lib/formats/ds9_dsk.cpp
@@ -113,7 +113,7 @@ void ds9_format::find_size(io_generic *io, uint8_t &track_count, uint8_t &head_c
track_count = head_count = sector_count = 0;
}
-int ds9_format::identify(io_generic *io, uint32_t form_factor)
+int ds9_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t track_count, head_count, sector_count;
find_size(io, track_count, head_count, sector_count);
@@ -123,7 +123,7 @@ int ds9_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool ds9_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool ds9_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t track_count, head_count, sector_count;
find_size(io, track_count, head_count, sector_count);
diff --git a/src/lib/formats/ds9_dsk.h b/src/lib/formats/ds9_dsk.h
index 540c49a7ce7..317134eab87 100644
--- a/src/lib/formats/ds9_dsk.h
+++ b/src/lib/formats/ds9_dsk.h
@@ -19,8 +19,8 @@ class ds9_format : public floppy_image_format_t
public:
ds9_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/dsk_dsk.cpp b/src/lib/formats/dsk_dsk.cpp
index c208a5f8e81..dba11347887 100644
--- a/src/lib/formats/dsk_dsk.cpp
+++ b/src/lib/formats/dsk_dsk.cpp
@@ -299,7 +299,7 @@ bool dsk_format::supports_save() const
return false;
}
-int dsk_format::identify(io_generic *io, uint32_t form_factor)
+int dsk_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t header[16];
@@ -344,7 +344,7 @@ struct sector_header
#pragma pack()
-bool dsk_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool dsk_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t header[0x100];
bool extendformat = false;
diff --git a/src/lib/formats/dsk_dsk.h b/src/lib/formats/dsk_dsk.h
index e6b289a3cca..a08e3955888 100644
--- a/src/lib/formats/dsk_dsk.h
+++ b/src/lib/formats/dsk_dsk.h
@@ -19,8 +19,8 @@ class dsk_format : public floppy_image_format_t
public:
dsk_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/dvk_mx_dsk.cpp b/src/lib/formats/dvk_mx_dsk.cpp
index 37de4111948..07d7a38cf95 100644
--- a/src/lib/formats/dvk_mx_dsk.cpp
+++ b/src/lib/formats/dvk_mx_dsk.cpp
@@ -108,7 +108,7 @@ void dvk_mx_format::find_size(io_generic *io, uint8_t &track_count, uint8_t &hea
}
}
-int dvk_mx_format::identify(io_generic *io, uint32_t form_factor)
+int dvk_mx_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t track_count, head_count, sector_count;
@@ -129,7 +129,7 @@ int dvk_mx_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool dvk_mx_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool dvk_mx_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t track_count, head_count, sector_count;
diff --git a/src/lib/formats/dvk_mx_dsk.h b/src/lib/formats/dvk_mx_dsk.h
index a95b635588c..38fd895d154 100644
--- a/src/lib/formats/dvk_mx_dsk.h
+++ b/src/lib/formats/dvk_mx_dsk.h
@@ -19,8 +19,8 @@ class dvk_mx_format : public floppy_image_format_t
public:
dvk_mx_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/esq16_dsk.cpp b/src/lib/formats/esq16_dsk.cpp
index 72e27ebfad5..10802d26495 100644
--- a/src/lib/formats/esq16_dsk.cpp
+++ b/src/lib/formats/esq16_dsk.cpp
@@ -87,7 +87,7 @@ void esqimg_format::find_size(io_generic *io, uint8_t &track_count, uint8_t &hea
track_count = head_count = sector_count = 0;
}
-int esqimg_format::identify(io_generic *io, uint32_t form_factor)
+int esqimg_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t track_count, head_count, sector_count;
find_size(io, track_count, head_count, sector_count);
@@ -97,7 +97,7 @@ int esqimg_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool esqimg_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool esqimg_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t track_count, head_count, sector_count;
find_size(io, track_count, head_count, sector_count);
@@ -123,7 +123,7 @@ bool esqimg_format::load(io_generic *io, uint32_t form_factor, floppy_image *ima
return true;
}
-bool esqimg_format::save(io_generic *io, floppy_image *image)
+bool esqimg_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
int track_count, head_count, sector_count;
get_geometry_mfm_pc(image, 2000, track_count, head_count, sector_count);
diff --git a/src/lib/formats/esq16_dsk.h b/src/lib/formats/esq16_dsk.h
index 91bd03b8151..8cc49150d2c 100644
--- a/src/lib/formats/esq16_dsk.h
+++ b/src/lib/formats/esq16_dsk.h
@@ -21,9 +21,9 @@ class esqimg_format : public floppy_image_format_t
public:
esqimg_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/esq8_dsk.cpp b/src/lib/formats/esq8_dsk.cpp
index b7f69c85afc..2c93e3e3286 100644
--- a/src/lib/formats/esq8_dsk.cpp
+++ b/src/lib/formats/esq8_dsk.cpp
@@ -88,7 +88,7 @@ void esq8img_format::find_size(io_generic *io, int &track_count, int &head_count
track_count = head_count = sector_count = 0;
}
-int esq8img_format::identify(io_generic *io, uint32_t form_factor)
+int esq8img_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int track_count, head_count, sector_count;
find_size(io, track_count, head_count, sector_count);
@@ -98,7 +98,7 @@ int esq8img_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool esq8img_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool esq8img_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
int track_count, head_count, sector_count;
find_size(io, track_count, head_count, sector_count);
@@ -136,7 +136,7 @@ bool esq8img_format::load(io_generic *io, uint32_t form_factor, floppy_image *im
return true;
}
-bool esq8img_format::save(io_generic *io, floppy_image *image)
+bool esq8img_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
int track_count, head_count, sector_count;
get_geometry_mfm_pc(image, 2000, track_count, head_count, sector_count);
diff --git a/src/lib/formats/esq8_dsk.h b/src/lib/formats/esq8_dsk.h
index af0cb46eecd..c4fe5a74f1b 100644
--- a/src/lib/formats/esq8_dsk.h
+++ b/src/lib/formats/esq8_dsk.h
@@ -23,9 +23,9 @@ class esq8img_format : public floppy_image_format_t
public:
esq8img_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/fdd_dsk.cpp b/src/lib/formats/fdd_dsk.cpp
index f5eb6ea19a5..df5fd3caa8c 100644
--- a/src/lib/formats/fdd_dsk.cpp
+++ b/src/lib/formats/fdd_dsk.cpp
@@ -54,7 +54,7 @@ const char *fdd_format::extensions() const
return "fdd";
}
-int fdd_format::identify(io_generic *io, uint32_t form_factor)
+int fdd_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t h[7];
io_generic_read(io, h, 0, 7);
@@ -65,7 +65,7 @@ int fdd_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool fdd_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool fdd_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t hsec[0x0c];
diff --git a/src/lib/formats/fdd_dsk.h b/src/lib/formats/fdd_dsk.h
index 86a43d5d0ee..ec013c58571 100644
--- a/src/lib/formats/fdd_dsk.h
+++ b/src/lib/formats/fdd_dsk.h
@@ -20,8 +20,8 @@ class fdd_format : public floppy_image_format_t
public:
fdd_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/flex_dsk.cpp b/src/lib/formats/flex_dsk.cpp
index ee3750b6101..13dcbb0f367 100644
--- a/src/lib/formats/flex_dsk.cpp
+++ b/src/lib/formats/flex_dsk.cpp
@@ -71,7 +71,7 @@ const char *flex_format::extensions() const
return "dsk";
}
-int flex_format::identify(io_generic *io, uint32_t form_factor)
+int flex_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int type = find_size(io, form_factor);
diff --git a/src/lib/formats/flex_dsk.h b/src/lib/formats/flex_dsk.h
index 9df0d1b24b8..d1b55168c9c 100644
--- a/src/lib/formats/flex_dsk.h
+++ b/src/lib/formats/flex_dsk.h
@@ -21,7 +21,7 @@ public:
virtual const char *name() const override;
virtual const char *description() const override;
virtual const char *extensions() const override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
virtual int find_size(io_generic *io, uint32_t form_factor) override;
virtual const wd177x_format::format &get_track_format(const format &f, int head, int track) override;
diff --git a/src/lib/formats/flopimg.cpp b/src/lib/formats/flopimg.cpp
index 3f57ae9b19b..d6bd264906d 100644
--- a/src/lib/formats/flopimg.cpp
+++ b/src/lib/formats/flopimg.cpp
@@ -969,6 +969,14 @@ const char *floppy_image::get_variant_name(uint32_t form_factor, uint32_t varian
return "Unknown";
}
+bool floppy_image_format_t::has_variant(const std::vector<uint32_t> &variants, uint32_t variant)
+{
+ for(uint32_t v : variants)
+ if(variant == v)
+ return true;
+ return false;
+}
+
floppy_image_format_t::floppy_image_format_t()
{
next = nullptr;
@@ -986,7 +994,7 @@ void floppy_image_format_t::append(floppy_image_format_t *_next)
next = _next;
}
-bool floppy_image_format_t::save(io_generic *, floppy_image *)
+bool floppy_image_format_t::save(io_generic *, const std::vector<uint32_t> &, floppy_image *)
{
return false;
}
diff --git a/src/lib/formats/flopimg.h b/src/lib/formats/flopimg.h
index d5edd6b0315..003d5f9fec5 100644
--- a/src/lib/formats/flopimg.h
+++ b/src/lib/formats/flopimg.h
@@ -233,9 +233,10 @@ public:
@param io buffer containing the image data.
@param form_factor Physical form factor of disk, from the enum
in floppy_image
+ @param variants the variants from floppy_image the drive can handle
@return 1 if image valid, 0 otherwise.
*/
- virtual int identify(io_generic *io, uint32_t form_factor) = 0;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) = 0;
/*! @brief Load an image.
The load function opens an image file and converts it to the
@@ -243,19 +244,21 @@ public:
@param io source buffer containing the image data.
@param form_factor Physical form factor of disk, from the enum
in floppy_image
+ @param variants the variants from floppy_image the drive can handle
@param image output buffer for data in MESS internal format.
@return true on success, false otherwise.
*/
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) = 0;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) = 0;
/*! @brief Save an image.
The save function writes back an image from the MESS internal
floppy representation to the appropriate format on disk.
@param io output buffer for the data in the on-disk format.
+ @param variants the variants from floppy_image the drive can handle
@param image source buffer containing data in MESS internal format.
@return true on success, false otherwise.
*/
- virtual bool save(io_generic *io, floppy_image *image);
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image);
//! @returns string containing name of format.
virtual const char *name() const = 0;
@@ -366,6 +369,14 @@ protected:
SECTOR_INTERLEAVE_SKEW //!< Defines interleave and skew for sector counting
};
+
+ /*! @brief Test if a variant is present in the variant vector
+ @param variants the variant vector
+ @param variant the variant to test
+ @result true if variant is in variants
+ */
+ static bool has_variant(const std::vector<uint32_t> &variants, uint32_t variant);
+
//! Sector data description
struct desc_s
{
diff --git a/src/lib/formats/fsd_dsk.cpp b/src/lib/formats/fsd_dsk.cpp
index 7880c4415c6..c5ebd243875 100644
--- a/src/lib/formats/fsd_dsk.cpp
+++ b/src/lib/formats/fsd_dsk.cpp
@@ -83,7 +83,7 @@ bool fsd_format::supports_save() const
return false;
}
-int fsd_format::identify(io_generic *io, uint32_t form_factor)
+int fsd_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t h[3];
@@ -95,7 +95,7 @@ int fsd_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool fsd_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool fsd_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
const char* result[255];
result[0x00] = "OK";
diff --git a/src/lib/formats/fsd_dsk.h b/src/lib/formats/fsd_dsk.h
index 0eddbb3f5d7..ee2c4aa466c 100644
--- a/src/lib/formats/fsd_dsk.h
+++ b/src/lib/formats/fsd_dsk.h
@@ -33,8 +33,8 @@ public:
virtual const char *extensions() const override;
virtual bool supports_save() const override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
};
extern const floppy_format_type FLOPPY_FSD_FORMAT;
diff --git a/src/lib/formats/g64_dsk.cpp b/src/lib/formats/g64_dsk.cpp
index 685b16c42ca..ed97486f08d 100644
--- a/src/lib/formats/g64_dsk.cpp
+++ b/src/lib/formats/g64_dsk.cpp
@@ -27,7 +27,7 @@ const uint32_t g64_format::c1541_cell_size[] =
3250 // 16MHz/13/4
};
-int g64_format::identify(io_generic *io, uint32_t form_factor)
+int g64_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
char h[8];
@@ -38,7 +38,7 @@ int g64_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool g64_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool g64_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint64_t size = io_generic_size(io);
std::vector<uint8_t> img(size);
@@ -109,7 +109,7 @@ int g64_format::generate_bitstream(int track, int head, int speed_zone, uint8_t
return ((actual_cell_size >= cell_size-10) && (actual_cell_size <= cell_size+10)) ? speed_zone : -1;
}
-bool g64_format::save(io_generic *io, floppy_image *image)
+bool g64_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
int tracks, heads;
image->get_actual_geometry(tracks, heads);
diff --git a/src/lib/formats/g64_dsk.h b/src/lib/formats/g64_dsk.h
index 1c032a09759..533a80ee266 100644
--- a/src/lib/formats/g64_dsk.h
+++ b/src/lib/formats/g64_dsk.h
@@ -20,9 +20,9 @@ class g64_format : public floppy_image_format_t
public:
g64_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/hpi_dsk.cpp b/src/lib/formats/hpi_dsk.cpp
index 7a4f8d1903a..996ab60c941 100644
--- a/src/lib/formats/hpi_dsk.cpp
+++ b/src/lib/formats/hpi_dsk.cpp
@@ -78,7 +78,7 @@ hpi_format::hpi_format()
(void)HPI_RED_IMAGE_SIZE;
}
-int hpi_format::identify(io_generic *io, uint32_t form_factor)
+int hpi_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint64_t size = io_generic_size(io);
@@ -142,7 +142,7 @@ bool hpi_format::geometry_from_size(uint64_t image_size , unsigned& heads , unsi
}
}
-bool hpi_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool hpi_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
unsigned heads;
unsigned cylinders;
@@ -191,7 +191,7 @@ bool hpi_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
return true;
}
-bool hpi_format::save(io_generic *io, floppy_image *image)
+bool hpi_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
int tracks;
int heads;
diff --git a/src/lib/formats/hpi_dsk.h b/src/lib/formats/hpi_dsk.h
index 565a22dea58..0ce5d1e0422 100644
--- a/src/lib/formats/hpi_dsk.h
+++ b/src/lib/formats/hpi_dsk.h
@@ -28,9 +28,9 @@ class hpi_format : public floppy_image_format_t
public:
hpi_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
virtual const char *extensions() const override;
diff --git a/src/lib/formats/hxchfe_dsk.cpp b/src/lib/formats/hxchfe_dsk.cpp
index 8e51af8a825..68360f4e9bb 100644
--- a/src/lib/formats/hxchfe_dsk.cpp
+++ b/src/lib/formats/hxchfe_dsk.cpp
@@ -144,7 +144,7 @@ bool hfe_format::supports_save() const
return true;
}
-int hfe_format::identify(io_generic *io, uint32_t form_factor)
+int hfe_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t header[8];
@@ -155,7 +155,7 @@ int hfe_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool hfe_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool hfe_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t header[HEADER_LENGTH];
uint8_t track_table[TRACK_TABLE_LENGTH];
@@ -412,7 +412,7 @@ void hfe_format::generate_track_from_hfe_bitstream(int cyl, int head, int sample
image->set_write_splice_position(cyl, head, 0, 0);
}
-bool hfe_format::save(io_generic *io, floppy_image *image)
+bool hfe_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
std::vector<uint8_t> cylbuf;
diff --git a/src/lib/formats/hxchfe_dsk.h b/src/lib/formats/hxchfe_dsk.h
index 75dd4c3c371..9d2dbdeae77 100644
--- a/src/lib/formats/hxchfe_dsk.h
+++ b/src/lib/formats/hxchfe_dsk.h
@@ -47,9 +47,9 @@ public:
hfe_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/hxcmfm_dsk.cpp b/src/lib/formats/hxcmfm_dsk.cpp
index 390e07ff3f8..d7cace590e7 100644
--- a/src/lib/formats/hxcmfm_dsk.cpp
+++ b/src/lib/formats/hxcmfm_dsk.cpp
@@ -57,7 +57,7 @@ bool mfm_format::supports_save() const
return true;
}
-int mfm_format::identify(io_generic *io, uint32_t form_factor)
+int mfm_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t header[7];
@@ -68,7 +68,7 @@ int mfm_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool mfm_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool mfm_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
MFMIMG header;
MFMTRACKIMG trackdesc;
@@ -109,7 +109,7 @@ bool mfm_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
return true;
}
-bool mfm_format::save(io_generic *io, floppy_image *image)
+bool mfm_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
// TODO: HD support
MFMIMG header;
diff --git a/src/lib/formats/hxcmfm_dsk.h b/src/lib/formats/hxcmfm_dsk.h
index 6616794f1ed..a6f884ab03e 100644
--- a/src/lib/formats/hxcmfm_dsk.h
+++ b/src/lib/formats/hxcmfm_dsk.h
@@ -19,9 +19,9 @@ class mfm_format : public floppy_image_format_t
public:
mfm_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/ibmxdf_dsk.cpp b/src/lib/formats/ibmxdf_dsk.cpp
index 592f603ef30..06265ff581a 100644
--- a/src/lib/formats/ibmxdf_dsk.cpp
+++ b/src/lib/formats/ibmxdf_dsk.cpp
@@ -52,7 +52,7 @@ const char *ibmxdf_format::extensions() const
return "xdf,img";
}
-int ibmxdf_format::identify(io_generic *io, uint32_t form_factor)
+int ibmxdf_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int type = find_size(io, form_factor);
@@ -173,7 +173,7 @@ const ibmxdf_format::format ibmxdf_format::formats_head1_track0[] = {
{}
};
-bool ibmxdf_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool ibmxdf_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
int type = find_size(io, form_factor);
if(type == -1)
diff --git a/src/lib/formats/ibmxdf_dsk.h b/src/lib/formats/ibmxdf_dsk.h
index 494dbca4bfd..e22cab89c45 100644
--- a/src/lib/formats/ibmxdf_dsk.h
+++ b/src/lib/formats/ibmxdf_dsk.h
@@ -23,8 +23,8 @@ public:
virtual const char *description() const override;
virtual const char *extensions() const override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual bool supports_save() const override { return false; }
virtual int find_size(io_generic *io, uint32_t form_factor) override;
diff --git a/src/lib/formats/imd_dsk.cpp b/src/lib/formats/imd_dsk.cpp
index 80df5793489..74d414e27c2 100644
--- a/src/lib/formats/imd_dsk.cpp
+++ b/src/lib/formats/imd_dsk.cpp
@@ -409,7 +409,7 @@ void imd_format::fixnum(char *start, char *end) const
};
}
-int imd_format::identify(io_generic *io, uint32_t form_factor)
+int imd_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
char h[4];
@@ -420,7 +420,7 @@ int imd_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool imd_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool imd_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint64_t size = io_generic_size(io);
std::vector<uint8_t> img(size);
@@ -561,7 +561,7 @@ bool can_compress(const uint8_t* buffer, uint8_t ptrn, uint64_t size)
return true;
}
-bool imd_format::save(io_generic* io, floppy_image* image)
+bool imd_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint64_t pos = 0;
io_generic_write(io, &m_comment[0], pos, m_comment.size());
diff --git a/src/lib/formats/imd_dsk.h b/src/lib/formats/imd_dsk.h
index dd413ae9568..cc7b3942bca 100644
--- a/src/lib/formats/imd_dsk.h
+++ b/src/lib/formats/imd_dsk.h
@@ -17,9 +17,9 @@ class imd_format : public floppy_image_format_t
public:
imd_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic* io, floppy_image* image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image* image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/img_dsk.cpp b/src/lib/formats/img_dsk.cpp
index 5921130003f..fd31ca37e87 100644
--- a/src/lib/formats/img_dsk.cpp
+++ b/src/lib/formats/img_dsk.cpp
@@ -40,7 +40,7 @@ img_format::img_format()
{
}
-int img_format::identify(io_generic *io, uint32_t form_factor)
+int img_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint64_t size = io_generic_size(io);
@@ -52,7 +52,7 @@ int img_format::identify(io_generic *io, uint32_t form_factor)
}
}
-bool img_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool img_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint64_t size = io_generic_size(io);
if (size != IMG_IMAGE_SIZE) {
@@ -96,7 +96,7 @@ bool img_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
return true;
}
-bool img_format::save(io_generic *io, floppy_image *image)
+bool img_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
for (int cyl = 0; cyl < TRACKS; cyl++) {
uint8_t bitstream[ 21000 ];
diff --git a/src/lib/formats/img_dsk.h b/src/lib/formats/img_dsk.h
index ab2c5adc1c2..f35e9eb00c0 100644
--- a/src/lib/formats/img_dsk.h
+++ b/src/lib/formats/img_dsk.h
@@ -27,9 +27,9 @@ public:
img_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
virtual const char *extensions() const override;
diff --git a/src/lib/formats/ipf_dsk.cpp b/src/lib/formats/ipf_dsk.cpp
index fc81ffe66ce..066d9ff62a6 100644
--- a/src/lib/formats/ipf_dsk.cpp
+++ b/src/lib/formats/ipf_dsk.cpp
@@ -45,7 +45,7 @@ bool ipf_format::supports_save() const
return false;
}
-int ipf_format::identify(io_generic *io, uint32_t form_factor)
+int ipf_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
static const uint8_t refh[12] = { 0x43, 0x41, 0x50, 0x53, 0x00, 0x00, 0x00, 0x0c, 0x1c, 0xd5, 0x73, 0xba };
uint8_t h[12];
@@ -57,7 +57,7 @@ int ipf_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool ipf_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool ipf_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint64_t size = io_generic_size(io);
std::vector<uint8_t> data(size);
diff --git a/src/lib/formats/ipf_dsk.h b/src/lib/formats/ipf_dsk.h
index e026cab2c4c..a2e4bee2a79 100644
--- a/src/lib/formats/ipf_dsk.h
+++ b/src/lib/formats/ipf_dsk.h
@@ -14,8 +14,8 @@ class ipf_format : public floppy_image_format_t
public:
ipf_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/jfd_dsk.cpp b/src/lib/formats/jfd_dsk.cpp
index 7f2dc52e23b..947d6ba4022 100644
--- a/src/lib/formats/jfd_dsk.cpp
+++ b/src/lib/formats/jfd_dsk.cpp
@@ -183,7 +183,7 @@ const char *jfd_format::extensions() const
return "jfd";
}
-int jfd_format::identify(io_generic *io, uint32_t form_factor)
+int jfd_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint64_t size = io_generic_size(io);
std::vector<uint8_t> img(size);
@@ -221,7 +221,7 @@ int jfd_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool jfd_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool jfd_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint64_t size = io_generic_size(io);
std::vector<uint8_t> img(size);
diff --git a/src/lib/formats/jfd_dsk.h b/src/lib/formats/jfd_dsk.h
index 50db9f9caa5..75b9910c426 100644
--- a/src/lib/formats/jfd_dsk.h
+++ b/src/lib/formats/jfd_dsk.h
@@ -23,8 +23,8 @@ public:
virtual const char *description() const override;
virtual const char *extensions() const override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual bool supports_save() const override;
};
diff --git a/src/lib/formats/jvc_dsk.cpp b/src/lib/formats/jvc_dsk.cpp
index b9ef776ef87..42bb26899d1 100644
--- a/src/lib/formats/jvc_dsk.cpp
+++ b/src/lib/formats/jvc_dsk.cpp
@@ -168,13 +168,13 @@ bool jvc_format::parse_header(io_generic *io, int &header_size, int &tracks, int
return tracks * heads * sectors * sector_size == (size - header_size);
}
-int jvc_format::identify(io_generic *io, uint32_t form_factor)
+int jvc_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int header_size, tracks, heads, sectors, sector_size, sector_base_id;
return parse_header(io, header_size, tracks, heads, sectors, sector_size, sector_base_id) ? 50 : 0;
}
-bool jvc_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool jvc_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
int header_size, track_count, head_count, sector_count, sector_size, sector_base_id;
@@ -223,7 +223,7 @@ bool jvc_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
return true;
}
-bool jvc_format::save(io_generic *io, floppy_image *image)
+bool jvc_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t bitstream[500000/8];
uint8_t sector_data[50000];
diff --git a/src/lib/formats/jvc_dsk.h b/src/lib/formats/jvc_dsk.h
index da37856bcf6..7c744a0acb5 100644
--- a/src/lib/formats/jvc_dsk.h
+++ b/src/lib/formats/jvc_dsk.h
@@ -35,9 +35,9 @@ public:
virtual const char *description() const override;
virtual const char *extensions() const override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual bool supports_save() const override;
private:
diff --git a/src/lib/formats/m20_dsk.cpp b/src/lib/formats/m20_dsk.cpp
index cdd0e230db7..871e721b1bb 100644
--- a/src/lib/formats/m20_dsk.cpp
+++ b/src/lib/formats/m20_dsk.cpp
@@ -40,14 +40,14 @@ bool m20_format::supports_save() const
return true;
}
-int m20_format::identify(io_generic *io, uint32_t form_factor)
+int m20_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
if(io_generic_size(io) == 286720)
return 50;
return 0;
}
-bool m20_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool m20_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
for (int track = 0; track < 35; track++)
for (int head = 0; head < 2; head ++) {
@@ -76,7 +76,7 @@ bool m20_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
return true;
}
-bool m20_format::save(io_generic *io, floppy_image *image)
+bool m20_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t bitstream[500000/8];
uint8_t sector_data[50000];
diff --git a/src/lib/formats/m20_dsk.h b/src/lib/formats/m20_dsk.h
index fe06d75df22..ed8a7bc4517 100644
--- a/src/lib/formats/m20_dsk.h
+++ b/src/lib/formats/m20_dsk.h
@@ -18,9 +18,9 @@ class m20_format : public floppy_image_format_t {
public:
m20_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/mdos_dsk.cpp b/src/lib/formats/mdos_dsk.cpp
index a86558428ad..68a3b403b9d 100644
--- a/src/lib/formats/mdos_dsk.cpp
+++ b/src/lib/formats/mdos_dsk.cpp
@@ -72,7 +72,7 @@ const char *mdos_format::extensions() const
return "dsk";
}
-int mdos_format::identify(io_generic *io, uint32_t form_factor)
+int mdos_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int type = find_size(io, form_factor);
diff --git a/src/lib/formats/mdos_dsk.h b/src/lib/formats/mdos_dsk.h
index 744c9b97ed2..b6e4420f758 100644
--- a/src/lib/formats/mdos_dsk.h
+++ b/src/lib/formats/mdos_dsk.h
@@ -19,7 +19,7 @@ public:
virtual const char *name() const override;
virtual const char *description() const override;
virtual const char *extensions() const override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
virtual int find_size(io_generic *io, uint32_t form_factor) override;
virtual const wd177x_format::format &get_track_format(const format &f, int head, int track) override;
diff --git a/src/lib/formats/mfi_dsk.cpp b/src/lib/formats/mfi_dsk.cpp
index eb86d8d80da..dc6c320042f 100644
--- a/src/lib/formats/mfi_dsk.cpp
+++ b/src/lib/formats/mfi_dsk.cpp
@@ -94,7 +94,7 @@ bool mfi_format::supports_save() const
return true;
}
-int mfi_format::identify(io_generic *io, uint32_t form_factor)
+int mfi_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
header h;
@@ -108,7 +108,7 @@ int mfi_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool mfi_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool mfi_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
header h;
entry entries[84*2*4];
@@ -160,7 +160,7 @@ bool mfi_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
return true;
}
-bool mfi_format::save(io_generic *io, floppy_image *image)
+bool mfi_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
int tracks, heads;
image->get_actual_geometry(tracks, heads);
diff --git a/src/lib/formats/mfi_dsk.h b/src/lib/formats/mfi_dsk.h
index 7cb84e999f0..129a9ee599e 100644
--- a/src/lib/formats/mfi_dsk.h
+++ b/src/lib/formats/mfi_dsk.h
@@ -12,9 +12,9 @@ class mfi_format : public floppy_image_format_t
public:
mfi_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/nfd_dsk.cpp b/src/lib/formats/nfd_dsk.cpp
index e677f4ff6f5..1a0430f9af1 100644
--- a/src/lib/formats/nfd_dsk.cpp
+++ b/src/lib/formats/nfd_dsk.cpp
@@ -100,7 +100,7 @@ const char *nfd_format::extensions() const
return "nfd";
}
-int nfd_format::identify(io_generic *io, uint32_t form_factor)
+int nfd_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t h[16];
io_generic_read(io, h, 0, 16);
@@ -111,7 +111,7 @@ int nfd_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool nfd_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool nfd_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint64_t size = io_generic_size(io);
uint8_t h[0x120], hsec[0x10];
diff --git a/src/lib/formats/nfd_dsk.h b/src/lib/formats/nfd_dsk.h
index 56cf6cdb506..5eb41893c5f 100644
--- a/src/lib/formats/nfd_dsk.h
+++ b/src/lib/formats/nfd_dsk.h
@@ -20,8 +20,8 @@ class nfd_format : public floppy_image_format_t
public:
nfd_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/opd_dsk.cpp b/src/lib/formats/opd_dsk.cpp
index b45b58762ed..65c139bc6bb 100644
--- a/src/lib/formats/opd_dsk.cpp
+++ b/src/lib/formats/opd_dsk.cpp
@@ -30,7 +30,7 @@ const char *opd_format::extensions() const
return "opd,opu";
}
-int opd_format::identify(io_generic *io, uint32_t form_factor)
+int opd_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int type = find_size(io, form_factor);
diff --git a/src/lib/formats/opd_dsk.h b/src/lib/formats/opd_dsk.h
index 45e002092d6..9a4205314ec 100644
--- a/src/lib/formats/opd_dsk.h
+++ b/src/lib/formats/opd_dsk.h
@@ -21,7 +21,7 @@ class opd_format : public wd177x_format
public:
opd_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
virtual int get_image_offset(const format &f, int head, int track) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/oric_dsk.cpp b/src/lib/formats/oric_dsk.cpp
index 4e77cfab13b..f555416a21c 100644
--- a/src/lib/formats/oric_dsk.cpp
+++ b/src/lib/formats/oric_dsk.cpp
@@ -35,7 +35,7 @@ bool oric_dsk_format::supports_save() const
return true;
}
-int oric_dsk_format::identify(io_generic *io, uint32_t form_factor)
+int oric_dsk_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t h[256];
io_generic_read(io, h, 0, 256);
@@ -54,7 +54,7 @@ int oric_dsk_format::identify(io_generic *io, uint32_t form_factor)
return 100;
}
-bool oric_dsk_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool oric_dsk_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t h[256];
uint8_t t[6250+3];
@@ -103,7 +103,7 @@ bool oric_dsk_format::load(io_generic *io, uint32_t form_factor, floppy_image *i
return true;
}
-bool oric_dsk_format::save(io_generic *io, floppy_image *image)
+bool oric_dsk_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
return true;
}
diff --git a/src/lib/formats/oric_dsk.h b/src/lib/formats/oric_dsk.h
index 5104273864b..1c9e12a29d6 100644
--- a/src/lib/formats/oric_dsk.h
+++ b/src/lib/formats/oric_dsk.h
@@ -18,9 +18,9 @@ class oric_dsk_format : public floppy_image_format_t
{
public:
oric_dsk_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/os9_dsk.cpp b/src/lib/formats/os9_dsk.cpp
index 164eafeeedb..352afa63c25 100644
--- a/src/lib/formats/os9_dsk.cpp
+++ b/src/lib/formats/os9_dsk.cpp
@@ -69,7 +69,7 @@ const char *os9_format::extensions() const
return "dsk,os9";
}
-int os9_format::identify(io_generic *io, uint32_t form_factor)
+int os9_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int type = find_size(io, form_factor);
diff --git a/src/lib/formats/os9_dsk.h b/src/lib/formats/os9_dsk.h
index 338e290e07b..eb062e6bdcf 100644
--- a/src/lib/formats/os9_dsk.h
+++ b/src/lib/formats/os9_dsk.h
@@ -21,7 +21,7 @@ public:
virtual const char *name() const override;
virtual const char *description() const override;
virtual const char *extensions() const override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
virtual int find_size(io_generic *io, uint32_t form_factor) override;
virtual const wd177x_format::format &get_track_format(const format &f, int head, int track) override;
diff --git a/src/lib/formats/pasti_dsk.cpp b/src/lib/formats/pasti_dsk.cpp
index 4236c066708..0ab6dc2f064 100644
--- a/src/lib/formats/pasti_dsk.cpp
+++ b/src/lib/formats/pasti_dsk.cpp
@@ -36,7 +36,7 @@ bool pasti_format::supports_save() const
return false;
}
-int pasti_format::identify(io_generic *io, uint32_t form_factor)
+int pasti_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t h[16];
io_generic_read(io, h, 0, 16);
@@ -58,7 +58,7 @@ static void hexdump(const uint8_t *d, int s)
}
}
-bool pasti_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool pasti_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t fh[16];
io_generic_read(io, fh, 0, 16);
diff --git a/src/lib/formats/pasti_dsk.h b/src/lib/formats/pasti_dsk.h
index a98baffcb90..b3fc869da4d 100644
--- a/src/lib/formats/pasti_dsk.h
+++ b/src/lib/formats/pasti_dsk.h
@@ -12,8 +12,8 @@ class pasti_format : public floppy_image_format_t
public:
pasti_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/pc98fdi_dsk.cpp b/src/lib/formats/pc98fdi_dsk.cpp
index 37cdae18ff7..2d503acebe4 100644
--- a/src/lib/formats/pc98fdi_dsk.cpp
+++ b/src/lib/formats/pc98fdi_dsk.cpp
@@ -30,7 +30,7 @@ const char *pc98fdi_format::extensions() const
return "fdi";
}
-int pc98fdi_format::identify(io_generic *io, uint32_t form_factor)
+int pc98fdi_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint64_t size = io_generic_size(io);
uint8_t h[32];
@@ -48,7 +48,7 @@ int pc98fdi_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool pc98fdi_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool pc98fdi_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t h[32];
diff --git a/src/lib/formats/pc98fdi_dsk.h b/src/lib/formats/pc98fdi_dsk.h
index 18c2d9edc7d..1c60f059cbe 100644
--- a/src/lib/formats/pc98fdi_dsk.h
+++ b/src/lib/formats/pc98fdi_dsk.h
@@ -20,8 +20,8 @@ class pc98fdi_format : public floppy_image_format_t
public:
pc98fdi_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/pc_dsk.cpp b/src/lib/formats/pc_dsk.cpp
index c86335a0596..75e05f87654 100644
--- a/src/lib/formats/pc_dsk.cpp
+++ b/src/lib/formats/pc_dsk.cpp
@@ -159,7 +159,7 @@ const char *pc_format::extensions() const
return "dsk,ima,img,ufi,360";
}
-int pc_format::identify(io_generic *io, uint32_t form_factor)
+int pc_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint64_t size = io_generic_size(io);
@@ -178,7 +178,7 @@ int pc_format::identify(io_generic *io, uint32_t form_factor)
file_footer_skip_bytes = 0x400;
}
- return upd765_format::identify(io, form_factor);
+ return upd765_format::identify(io, form_factor, variants);
}
const pc_format::format pc_format::formats[] = {
diff --git a/src/lib/formats/pc_dsk.h b/src/lib/formats/pc_dsk.h
index b4080e1dcc7..1d049360831 100644
--- a/src/lib/formats/pc_dsk.h
+++ b/src/lib/formats/pc_dsk.h
@@ -25,7 +25,7 @@ class pc_format : public upd765_format
public:
pc_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/poly_dsk.cpp b/src/lib/formats/poly_dsk.cpp
index cf746b78624..a865729864e 100644
--- a/src/lib/formats/poly_dsk.cpp
+++ b/src/lib/formats/poly_dsk.cpp
@@ -34,7 +34,7 @@ bool poly_cpm_format::supports_save() const
return true;
}
-int poly_cpm_format::identify(io_generic *io, uint32_t form_factor)
+int poly_cpm_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t boot[16];
uint64_t size = io_generic_size(io);
@@ -52,7 +52,7 @@ int poly_cpm_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool poly_cpm_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool poly_cpm_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
int total_tracks, spt, bps, head_num;
diff --git a/src/lib/formats/poly_dsk.h b/src/lib/formats/poly_dsk.h
index 65b69c69270..8fd3c9be4a5 100644
--- a/src/lib/formats/poly_dsk.h
+++ b/src/lib/formats/poly_dsk.h
@@ -20,8 +20,8 @@ public:
virtual const char *name() const override;
virtual const char *description() const override;
virtual const char *extensions() const override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual bool supports_save() const override;
};
diff --git a/src/lib/formats/rx50_dsk.cpp b/src/lib/formats/rx50_dsk.cpp
index 18bac995146..6e076f1a5bd 100644
--- a/src/lib/formats/rx50_dsk.cpp
+++ b/src/lib/formats/rx50_dsk.cpp
@@ -124,7 +124,7 @@ void rx50img_format::find_size(io_generic *io, uint8_t &track_count, uint8_t &he
track_count = head_count = sector_count = 0;
}
-int rx50img_format::identify(io_generic *io, uint32_t form_factor)
+int rx50img_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t track_count, head_count, sector_count;
find_size(io, track_count, head_count, sector_count);
@@ -135,7 +135,7 @@ int rx50img_format::identify(io_generic *io, uint32_t form_factor)
}
// /* Sectors are numbered 1 to 10 */
-bool rx50img_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool rx50img_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t track_count, head_count, sector_count;
find_size(io, track_count, head_count, sector_count);
@@ -163,7 +163,7 @@ bool rx50img_format::load(io_generic *io, uint32_t form_factor, floppy_image *im
return true;
}
-bool rx50img_format::save(io_generic *io, floppy_image *image)
+bool rx50img_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
int track_count, head_count, sector_count;
get_geometry_mfm_pc(image, 2000, track_count, head_count, sector_count);
diff --git a/src/lib/formats/rx50_dsk.h b/src/lib/formats/rx50_dsk.h
index 318e0d02902..9cac83bd67f 100644
--- a/src/lib/formats/rx50_dsk.h
+++ b/src/lib/formats/rx50_dsk.h
@@ -23,9 +23,9 @@ class rx50img_format : public floppy_image_format_t
public:
rx50img_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/sdf_dsk.cpp b/src/lib/formats/sdf_dsk.cpp
index a1a0c921da7..223b6dc8d8a 100644
--- a/src/lib/formats/sdf_dsk.cpp
+++ b/src/lib/formats/sdf_dsk.cpp
@@ -37,7 +37,7 @@ const char *sdf_format::extensions() const
}
-int sdf_format::identify(io_generic *io, uint32_t form_factor)
+int sdf_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t header[HEADER_SIZE];
@@ -74,7 +74,7 @@ int sdf_format::identify(io_generic *io, uint32_t form_factor)
}
-bool sdf_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool sdf_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t header[HEADER_SIZE];
std::vector<uint8_t> track_data(TOTAL_TRACK_SIZE);
@@ -181,7 +181,7 @@ bool sdf_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
}
-bool sdf_format::save(io_generic *io, floppy_image *image)
+bool sdf_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
return false;
}
diff --git a/src/lib/formats/sdf_dsk.h b/src/lib/formats/sdf_dsk.h
index 46b3905d6e7..fe3f6eb7a98 100644
--- a/src/lib/formats/sdf_dsk.h
+++ b/src/lib/formats/sdf_dsk.h
@@ -22,9 +22,9 @@ class sdf_format : public floppy_image_format_t
public:
sdf_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/st_dsk.cpp b/src/lib/formats/st_dsk.cpp
index 36fe9a01970..cb363cbe3e3 100644
--- a/src/lib/formats/st_dsk.cpp
+++ b/src/lib/formats/st_dsk.cpp
@@ -47,7 +47,7 @@ void st_format::find_size(io_generic *io, uint8_t &track_count, uint8_t &head_co
track_count = head_count = sector_count = 0;
}
-int st_format::identify(io_generic *io, uint32_t form_factor)
+int st_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t track_count, head_count, sector_count;
find_size(io, track_count, head_count, sector_count);
@@ -57,7 +57,7 @@ int st_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool st_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool st_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t track_count, head_count, sector_count;
find_size(io, track_count, head_count, sector_count);
@@ -84,7 +84,7 @@ bool st_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
return true;
}
-bool st_format::save(io_generic *io, floppy_image *image)
+bool st_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
int track_count, head_count, sector_count;
get_geometry_mfm_pc(image, 2000, track_count, head_count, sector_count);
@@ -206,7 +206,7 @@ bool msa_format::compress(const uint8_t *buffer, int usize, uint8_t *dest, int &
return dst < usize;
}
-int msa_format::identify(io_generic *io, uint32_t form_factor)
+int msa_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint16_t sign, sect, head, strack, etrack;
read_header(io, sign, sect, head, strack, etrack);
@@ -220,7 +220,7 @@ int msa_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool msa_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool msa_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint16_t sign, sect, heads, strack, etrack;
read_header(io, sign, sect, heads, strack, etrack);
@@ -258,7 +258,7 @@ bool msa_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
}
-bool msa_format::save(io_generic *io, floppy_image *image)
+bool msa_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
int track_count, head_count, sector_count;
get_geometry_mfm_pc(image, 2000, track_count, head_count, sector_count);
diff --git a/src/lib/formats/st_dsk.h b/src/lib/formats/st_dsk.h
index 44a0827757a..ce501a9f516 100644
--- a/src/lib/formats/st_dsk.h
+++ b/src/lib/formats/st_dsk.h
@@ -19,9 +19,9 @@ class st_format : public floppy_image_format_t
public:
st_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
@@ -37,9 +37,9 @@ class msa_format : public floppy_image_format_t
public:
msa_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/svi_dsk.cpp b/src/lib/formats/svi_dsk.cpp
index 2fd168b1dff..c67ef0cd95d 100644
--- a/src/lib/formats/svi_dsk.cpp
+++ b/src/lib/formats/svi_dsk.cpp
@@ -29,7 +29,7 @@ const char *svi_format::extensions() const
return "dsk";
}
-int svi_format::identify(io_generic *io, uint32_t form_factor)
+int svi_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint64_t size = io_generic_size(io);
@@ -39,7 +39,7 @@ int svi_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool svi_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool svi_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint64_t size = io_generic_size(io);
int head_count;
@@ -91,7 +91,7 @@ bool svi_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
return true;
}
-bool svi_format::save(io_generic *io, floppy_image *image)
+bool svi_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t bitstream[500000/8];
uint8_t sector_data[50000];
diff --git a/src/lib/formats/svi_dsk.h b/src/lib/formats/svi_dsk.h
index c95bc241e21..57f4f89ccca 100644
--- a/src/lib/formats/svi_dsk.h
+++ b/src/lib/formats/svi_dsk.h
@@ -23,9 +23,9 @@ public:
virtual const char *description() const override;
virtual const char *extensions() const override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual bool supports_save() const override;
};
diff --git a/src/lib/formats/td0_dsk.cpp b/src/lib/formats/td0_dsk.cpp
index 20902fd011e..1ca0479669a 100644
--- a/src/lib/formats/td0_dsk.cpp
+++ b/src/lib/formats/td0_dsk.cpp
@@ -819,7 +819,7 @@ const char *td0_format::extensions() const
return "td0";
}
-int td0_format::identify(io_generic *io, uint32_t form_factor)
+int td0_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t h[7];
@@ -831,7 +831,7 @@ int td0_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool td0_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool td0_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
int track_count = 0;
int head_count = 0;
@@ -1028,7 +1028,7 @@ bool td0_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
}
-bool td0_format::save(io_generic *io, floppy_image *image)
+bool td0_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
return false;
}
diff --git a/src/lib/formats/td0_dsk.h b/src/lib/formats/td0_dsk.h
index 96007fa4314..b4656305920 100644
--- a/src/lib/formats/td0_dsk.h
+++ b/src/lib/formats/td0_dsk.h
@@ -13,9 +13,9 @@ class td0_format : public floppy_image_format_t
public:
td0_format();
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual const char *name() const override;
virtual const char *description() const override;
diff --git a/src/lib/formats/ti99_dsk.cpp b/src/lib/formats/ti99_dsk.cpp
index d8f12ea960d..00925a0feb7 100644
--- a/src/lib/formats/ti99_dsk.cpp
+++ b/src/lib/formats/ti99_dsk.cpp
@@ -80,7 +80,7 @@ int ti99_floppy_format::get_encoding(int cell_size)
/*
Load the image from disk and convert it into a sequence of flux levels.
*/
-bool ti99_floppy_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool ti99_floppy_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
int cell_size = 0;
int sector_count = 0;
@@ -211,7 +211,7 @@ bool ti99_floppy_format::load(io_generic *io, uint32_t form_factor, floppy_image
/*
Save all tracks to the image file.
*/
-bool ti99_floppy_format::save(io_generic *io, floppy_image *image)
+bool ti99_floppy_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
int act_track_size = 0;
@@ -925,7 +925,7 @@ const char *ti99_sdf_format::extensions() const
return "dsk";
}
-int ti99_sdf_format::identify(io_generic *io, uint32_t form_factor)
+int ti99_sdf_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint64_t file_size = io_generic_size(io);
int vote = 0;
@@ -1218,7 +1218,7 @@ const char *ti99_tdf_format::extensions() const
/*
Determine whether the image file can be interpreted as a track dump
*/
-int ti99_tdf_format::identify(io_generic *io, uint32_t form_factor)
+int ti99_tdf_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int vote = 0;
uint8_t fulltrack[6872];
diff --git a/src/lib/formats/ti99_dsk.h b/src/lib/formats/ti99_dsk.h
index 04ba3e88a14..d15a71c62ac 100644
--- a/src/lib/formats/ti99_dsk.h
+++ b/src/lib/formats/ti99_dsk.h
@@ -23,8 +23,8 @@ class ti99_floppy_format : public floppy_image_format_t
{
public:
bool supports_save() const override { return true; }
- bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- bool save(io_generic *io, floppy_image *image) override;
+ bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
protected:
int decode_bitstream(const uint8_t *bitstream, uint8_t *trackdata, int *sector, int cell_count, int encoding, uint8_t gapbytes, int track_size);
@@ -54,7 +54,7 @@ protected:
class ti99_sdf_format : public ti99_floppy_format
{
public:
- int identify(io_generic *io, uint32_t form_factor) override;
+ int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
const char *name() const override;
const char *description() const override;
const char *extensions() const override;
@@ -93,7 +93,7 @@ extern const floppy_format_type FLOPPY_TI99_SDF_FORMAT;
class ti99_tdf_format : public ti99_floppy_format
{
public:
- int identify(io_generic *io, uint32_t form_factor) override;
+ int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
const char *name() const override;
const char *description() const override;
const char *extensions() const override;
diff --git a/src/lib/formats/uniflex_dsk.cpp b/src/lib/formats/uniflex_dsk.cpp
index 6b536aac3eb..21f4479e704 100644
--- a/src/lib/formats/uniflex_dsk.cpp
+++ b/src/lib/formats/uniflex_dsk.cpp
@@ -31,7 +31,7 @@ const char *uniflex_format::extensions() const
return "dsk";
}
-int uniflex_format::identify(io_generic *io, uint32_t form_factor)
+int uniflex_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int type = find_size(io, form_factor);
diff --git a/src/lib/formats/uniflex_dsk.h b/src/lib/formats/uniflex_dsk.h
index cd3a3c515ab..eeb50e5bbe9 100644
--- a/src/lib/formats/uniflex_dsk.h
+++ b/src/lib/formats/uniflex_dsk.h
@@ -19,7 +19,7 @@ public:
virtual const char *name() const override;
virtual const char *description() const override;
virtual const char *extensions() const override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
virtual int find_size(io_generic *io, uint32_t form_factor) override;
void build_sector_description(const format &f, uint8_t *sectdata, desc_s *sectors, int track, int head) const override;
diff --git a/src/lib/formats/upd765_dsk.cpp b/src/lib/formats/upd765_dsk.cpp
index 4265aea6a36..8676c4b9f63 100644
--- a/src/lib/formats/upd765_dsk.cpp
+++ b/src/lib/formats/upd765_dsk.cpp
@@ -29,7 +29,7 @@ int upd765_format::find_size(io_generic *io, uint32_t form_factor) const
return -1;
}
-int upd765_format::identify(io_generic *io, uint32_t form_factor)
+int upd765_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int type = find_size(io, form_factor);
@@ -173,7 +173,7 @@ floppy_image_format_t::desc_e* upd765_format::get_desc_mfm(const format &f, int
return desc;
}
-bool upd765_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool upd765_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
int type = find_size(io, form_factor);
if(type == -1)
@@ -234,7 +234,7 @@ bool upd765_format::supports_save() const
return true;
}
-bool upd765_format::save(io_generic *io, floppy_image *image)
+bool upd765_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
// Count the number of formats
int formats_count;
diff --git a/src/lib/formats/upd765_dsk.h b/src/lib/formats/upd765_dsk.h
index a1b3f776104..bea2f8405c5 100644
--- a/src/lib/formats/upd765_dsk.h
+++ b/src/lib/formats/upd765_dsk.h
@@ -39,9 +39,9 @@ public:
// End the array with {}
upd765_format(const format *formats);
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual bool supports_save() const override;
protected:
diff --git a/src/lib/formats/vdk_dsk.cpp b/src/lib/formats/vdk_dsk.cpp
index fa07d22a958..7baab19dc21 100644
--- a/src/lib/formats/vdk_dsk.cpp
+++ b/src/lib/formats/vdk_dsk.cpp
@@ -31,7 +31,7 @@ const char *vdk_format::extensions() const
return "vdk";
}
-int vdk_format::identify(io_generic *io, uint32_t form_factor)
+int vdk_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
uint8_t id[2];
io_generic_read(io, id, 0, 2);
@@ -42,7 +42,7 @@ int vdk_format::identify(io_generic *io, uint32_t form_factor)
return 0;
}
-bool vdk_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool vdk_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t header[0x100];
io_generic_read(io, header, 0, 0x100);
@@ -85,7 +85,7 @@ bool vdk_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
return true;
}
-bool vdk_format::save(io_generic *io, floppy_image *image)
+bool vdk_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
uint8_t bitstream[500000/8];
uint8_t sector_data[50000];
diff --git a/src/lib/formats/vdk_dsk.h b/src/lib/formats/vdk_dsk.h
index c68fbd9bfb0..94347b326f6 100644
--- a/src/lib/formats/vdk_dsk.h
+++ b/src/lib/formats/vdk_dsk.h
@@ -25,9 +25,9 @@ public:
virtual const char *description() const override;
virtual const char *extensions() const override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual bool supports_save() const override;
private:
diff --git a/src/lib/formats/victor9k_dsk.cpp b/src/lib/formats/victor9k_dsk.cpp
index 188b4c250e4..b9ae3d89a72 100644
--- a/src/lib/formats/victor9k_dsk.cpp
+++ b/src/lib/formats/victor9k_dsk.cpp
@@ -130,7 +130,7 @@ int victor9k_format::find_size(io_generic *io, uint32_t form_factor)
return -1;
}
-int victor9k_format::identify(io_generic *io, uint32_t form_factor)
+int victor9k_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int type = find_size(io, form_factor);
@@ -248,7 +248,7 @@ void victor9k_format::build_sector_description(const format &f, uint8_t *sectdat
}
}
-bool victor9k_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool victor9k_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
int type = find_size(io, form_factor);
if(type == -1)
@@ -392,7 +392,7 @@ const int victor9k_format::rpm[9] =
252, 267, 283, 300, 321, 342, 368, 401, 417
};
-bool victor9k_format::save(io_generic *io, floppy_image *image)
+bool victor9k_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
const format &f = formats[0];
diff --git a/src/lib/formats/victor9k_dsk.h b/src/lib/formats/victor9k_dsk.h
index 066e270e78f..92d1c664a5f 100644
--- a/src/lib/formats/victor9k_dsk.h
+++ b/src/lib/formats/victor9k_dsk.h
@@ -34,9 +34,9 @@ public:
virtual const char *description() const override;
virtual const char *extensions() const override;
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual bool supports_save() const override { return true; }
static int get_rpm(int head, int track);
diff --git a/src/lib/formats/wd177x_dsk.cpp b/src/lib/formats/wd177x_dsk.cpp
index a7a829efb8f..c4c98f54d32 100644
--- a/src/lib/formats/wd177x_dsk.cpp
+++ b/src/lib/formats/wd177x_dsk.cpp
@@ -51,7 +51,7 @@ int wd177x_format::find_size(io_generic *io, uint32_t form_factor)
return -1;
}
-int wd177x_format::identify(io_generic *io, uint32_t form_factor)
+int wd177x_format::identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants)
{
int type = find_size(io, form_factor);
@@ -196,7 +196,7 @@ floppy_image_format_t::desc_e* wd177x_format::get_desc_mfm(const format &f, int
return desc;
}
-bool wd177x_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
+bool wd177x_format::load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image)
{
int type = find_size(io, form_factor);
if(type == -1)
@@ -257,7 +257,7 @@ bool wd177x_format::supports_save() const
return true;
}
-bool wd177x_format::save(io_generic *io, floppy_image *image)
+bool wd177x_format::save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image)
{
// Count the number of formats
int formats_count;
diff --git a/src/lib/formats/wd177x_dsk.h b/src/lib/formats/wd177x_dsk.h
index 540e3e8079c..bb72de85ef8 100644
--- a/src/lib/formats/wd177x_dsk.h
+++ b/src/lib/formats/wd177x_dsk.h
@@ -38,9 +38,9 @@ public:
// End the array with {}
wd177x_format(const format *formats);
- virtual int identify(io_generic *io, uint32_t form_factor) override;
- virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- virtual bool save(io_generic *io, floppy_image *image) override;
+ virtual int identify(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants) override;
+ virtual bool load(io_generic *io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override;
+ virtual bool save(io_generic *io, const std::vector<uint32_t> &variants, floppy_image *image) override;
virtual bool supports_save() const override;
protected: