diff options
Diffstat (limited to 'src/lib/formats/d64_dsk.cpp')
-rw-r--r-- | src/lib/formats/d64_dsk.cpp | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/lib/formats/d64_dsk.cpp b/src/lib/formats/d64_dsk.cpp index 46090580056..70c85b039d6 100644 --- a/src/lib/formats/d64_dsk.cpp +++ b/src/lib/formats/d64_dsk.cpp @@ -289,27 +289,23 @@ bool d64_format::save(io_generic *io, const std::vector<uint32_t> &variants, flo void d64_format::extract_sectors(floppy_image *image, const format &f, desc_s *sdesc, int track, int head, int sector_count) { - uint8_t bitstream[500000/8]; - uint8_t sectdata[50000]; - desc_xs sectors[256]; int physical_track = this->get_physical_track(f, head, track); int cell_size = this->get_cell_size(f, track); - int track_size; // Extract the sectors - generate_bitstream_from_track(physical_track, head, cell_size, bitstream, track_size, image); - extract_sectors_from_bitstream_gcr5(bitstream, track_size, sectors, sectdata, sizeof(sectdata), head, f.track_count); + auto bitstream = generate_bitstream_from_track(physical_track, head, cell_size, image); + auto sectors = extract_sectors_from_bitstream_gcr5(bitstream, head, f.track_count); for(int i=0; i<sector_count; i++) { desc_s &ds = sdesc[i]; - desc_xs &xs = sectors[ds.sector_id]; - if(!xs.data) + const auto &data = sectors[ds.sector_id]; + if(data.empty()) memset((void *)ds.data, 0, ds.size); - else if(xs.size < ds.size) { - memcpy((void *)ds.data, xs.data, xs.size); - memset((uint8_t *)ds.data + xs.size, 0, xs.size - ds.size); + else if(data.size() < ds.size) { + memcpy((void *)ds.data, data.data(), data.size()); + memset((uint8_t *)ds.data + data.size(), 0, data.size() - ds.size); } else - memcpy((void *)ds.data, xs.data, ds.size); + memcpy((void *)ds.data, data.data(), ds.size); } } |