diff options
author | AJR <ajrhacker@users.noreply.github.com> | 2023-03-19 17:06:55 -0400 |
---|---|---|
committer | AJR <ajrhacker@users.noreply.github.com> | 2023-03-19 17:06:55 -0400 |
commit | 40b5608160aef97ca0fb3a118a113d9558ada43c (patch) | |
tree | 032ea698a47b1d82268c6d3485f5d4bab5a99d7e /src/lib | |
parent | ea47c29c49bb189972dfa876c61fc5bf74bf795a (diff) |
Encode certain tracks as single density in .d88 floppy format
* bml3mp1802, x1: Hook up DDEN control for FDC
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/formats/d88_dsk.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/lib/formats/d88_dsk.cpp b/src/lib/formats/d88_dsk.cpp index a64129cc3a4..9495f5a863d 100644 --- a/src/lib/formats/d88_dsk.cpp +++ b/src/lib/formats/d88_dsk.cpp @@ -500,6 +500,7 @@ bool d88_format::load(util::random_read &io, uint32_t form_factor, const std::ve uint8_t sect_data[65536]; int sdatapos = 0; int sector_count = 1; + uint8_t density = 0; for(int i=0; i<sector_count; i++) { if (pos + 16 > file_size) @@ -519,6 +520,8 @@ bool d88_format::load(util::random_read &io, uint32_t form_factor, const std::ve // Support broken vfman converter if(sector_count == 0x1000) sector_count = 0x10; + + density = hs[6]; } sects[i].track = hs[0]; @@ -539,7 +542,10 @@ bool d88_format::load(util::random_read &io, uint32_t form_factor, const std::ve sects[i].data = nullptr; } - build_pc_track_mfm(track, head, image, cell_count, sector_count, sects, calc_default_pc_gap3_size(form_factor, sects[0].actual_size)); + if(density == 0x40) + build_pc_track_fm(track, head, image, cell_count / 2, sector_count, sects, calc_default_pc_gap3_size(form_factor, sects[0].actual_size)); + else + build_pc_track_mfm(track, head, image, cell_count, sector_count, sects, calc_default_pc_gap3_size(form_factor, sects[0].actual_size)); } return true; |