mirror of
https://github.com/holub/mame
synced 2025-04-25 01:40:16 +03:00
flopimg.h: implemented threshold to accept disk images with a few excess and empty tracks at the end used by HFE and DSK loaders for now
This commit is contained in:
parent
e923b26d00
commit
de63141b94
@ -365,7 +365,22 @@ bool dsk_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
|
||||
|
||||
int img_tracks, img_heads;
|
||||
image->get_maximal_geometry(img_tracks, img_heads);
|
||||
if (tracks > img_tracks || heads > img_heads)
|
||||
if (tracks > img_tracks)
|
||||
{
|
||||
if (tracks - img_tracks > DUMP_THRESHOLD)
|
||||
{
|
||||
osd_printf_error("dsk: Floppy disk has too many tracks for this drive (floppy tracks=%d, drive tracks=%d).\n", tracks, img_tracks);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Some dumps has a few excess tracks to be safe,
|
||||
// lets be nice and just skip those tracks
|
||||
osd_printf_warning("dsk: Floppy disk has a slight excess of tracks for this drive that will be discarded (floppy tracks=%d, drive tracks=%d).\n", tracks, img_tracks);
|
||||
tracks = img_tracks;
|
||||
}
|
||||
}
|
||||
if (heads > img_heads)
|
||||
return false;
|
||||
|
||||
uint64_t track_offsets[84*2];
|
||||
|
@ -157,6 +157,8 @@ LEGACY_FLOPPY_OPTIONS_EXTERN(default);
|
||||
#define INTERLEAVE(range) "I" #range
|
||||
#define FIRST_SECTOR_ID(range) "F" #range
|
||||
|
||||
/* Max number of excess tracks to be discarded from disk image to fit floppy drive */
|
||||
#define DUMP_THRESHOLD 2
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
|
@ -179,8 +179,18 @@ bool hfe_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
|
||||
|
||||
if (drivecyl < m_cylinders)
|
||||
{
|
||||
osd_printf_error("hxchfe: Floppy disk has too many tracks for this drive (floppy tracks=%d, drive tracks=%d).\n", m_cylinders, drivecyl);
|
||||
return false;
|
||||
if (m_cylinders - drivecyl > DUMP_THRESHOLD)
|
||||
{
|
||||
osd_printf_error("hxchfe: Floppy disk has too many tracks for this drive (floppy tracks=%d, drive tracks=%d).\n", m_cylinders, drivecyl);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Some dumps has a few excess tracks to be safe,
|
||||
// lets be nice and just skip those tracks
|
||||
osd_printf_warning("hxchfe: Floppy disk has a slight excess of tracks for this drive that will be discarded (floppy tracks=%d, drive tracks=%d).\n", m_cylinders, drivecyl);
|
||||
m_cylinders = drivecyl;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_cylinders <= drivecyl/2)
|
||||
|
Loading…
Reference in New Issue
Block a user