there are 81 track adf files out there, actually I think there can be anything from 1 track to 82 tracks, but we'll cross that bridge when we come to it etc.)

This commit is contained in:
David Haywood 2012-12-31 15:23:16 +00:00
parent 3aa34032cf
commit d58eef5b12

View File

@ -68,7 +68,7 @@ bool adf_format::supports_save() const
int adf_format::identify(io_generic *io, UINT32 form_factor) int adf_format::identify(io_generic *io, UINT32 form_factor)
{ {
UINT64 size = io_generic_size(io); UINT64 size = io_generic_size(io);
if ((size == 901120) || (size == 1802240)) if ((size == 901120) || (size == 912384) || (size == 1802240))
{ {
return 50; return 50;
} }
@ -79,6 +79,9 @@ bool adf_format::load(io_generic *io, UINT32 form_factor, floppy_image *image)
{ {
desc_s sectors[22]; desc_s sectors[22];
UINT8 sectdata[512*22]; UINT8 sectdata[512*22];
bool is_hd = false;
int tracks = 80;
for(int i=0; i<22; i++) { for(int i=0; i<22; i++) {
sectors[i].data = sectdata + 512*i; sectors[i].data = sectdata + 512*i;
sectors[i].size = 512; sectors[i].size = 512;
@ -86,9 +89,25 @@ bool adf_format::load(io_generic *io, UINT32 form_factor, floppy_image *image)
} }
UINT64 size = io_generic_size(io); UINT64 size = io_generic_size(io);
if(size == 901120) { if(size == 901120)
{
is_hd = false;
tracks = 80;
}
else if (size == 912384)
{
is_hd = false;
tracks = 81;
}
else
{
is_hd = true;
tracks = 80;
}
if (!is_hd) {
image->set_variant(floppy_image::DSDD); image->set_variant(floppy_image::DSDD);
for(int track=0; track < 80; track++) { for(int track=0; track < tracks; track++) {
for(int side=0; side < 2; side++) { for(int side=0; side < 2; side++) {
io_generic_read(io, sectdata, (track*2 + side)*512*11, 512*11); io_generic_read(io, sectdata, (track*2 + side)*512*11, 512*11);
generate_track(amiga_11, track, side, sectors, 11, 100000, image); generate_track(amiga_11, track, side, sectors, 11, 100000, image);
@ -96,7 +115,7 @@ bool adf_format::load(io_generic *io, UINT32 form_factor, floppy_image *image)
} }
} else { } else {
image->set_variant(floppy_image::DSHD); image->set_variant(floppy_image::DSHD);
for(int track=0; track < 80; track++) { for(int track=0; track < tracks; track++) {
for(int side=0; side < 2; side++) { for(int side=0; side < 2; side++) {
io_generic_read(io, sectdata, (track*2 + side)*512*22, 512*22); io_generic_read(io, sectdata, (track*2 + side)*512*22, 512*22);
generate_track(amiga_22, track, side, sectors, 22, 200000, image); generate_track(amiga_22, track, side, sectors, 22, 200000, image);