Re: MAME Emulation
Posted: Thu Oct 31, 2019 8:55 pm
Here's MAME vdk loading code:
At first glance, the loading code looks correct...
Code: Select all
bool vdk_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
{
uint8_t header[0x100];
io_generic_read(io, header, 0, 0x100);
int header_size = header[3] * 0x100 + header[2];
int track_count = header[8];
int head_count = header[9];
int file_offset = header_size;
for (int track = 0; track < track_count; track++)
{
for (int head = 0; head < head_count ; head++)
{
desc_pc_sector sectors[SECTOR_COUNT];
uint8_t sector_data[SECTOR_COUNT * SECTOR_SIZE];
int sector_offset = 0;
for (int i = 0; i < SECTOR_COUNT; i++)
{
sectors[i].track = track;
sectors[i].head = head;
sectors[i].sector = FIRST_SECTOR_ID + i;
sectors[i].actual_size = SECTOR_SIZE;
sectors[i].size = SECTOR_SIZE >> 8;
sectors[i].deleted = false;
sectors[i].bad_crc = false;
sectors[i].data = §or_data[sector_offset];
io_generic_read(io, sectors[i].data, file_offset, SECTOR_SIZE);
sector_offset += SECTOR_SIZE;
file_offset += SECTOR_SIZE;
}
build_wd_track_mfm(track, head, image, 100000, SECTOR_COUNT, sectors, 22, 32, 24);
}
}
return true;
}