The current image loaders are very basic. They rely on the C file management functions (fopen, fread, ftell, etc.), have no caching mechanism, don't implement write-on-copy as advertised, have poor performance, and so on. They also only support raw hard disk images and game discs in the XISO format.
The current implementations live in core/strikebox/hw/ata/drvs/drv_vhd_image.(cpp|h) and core/strikebox/hw/ata/drvs/drv_vdvd_image.(cpp|h).
For this issue, the goal is to:
Create an abstraction for image loaders in order to support different formats, such as QEMU's QCOW2 format and other popular formats, perhaps even a custom format that embeds media information if that turns out to be necessary, and virtual disks/DVDs that directly access host folders;
Improve performance by using platform-specific features such as memory mapped files; and
Pave the way for new features such as the ability to read audio CDs or video DVDs in the emulator.
It may be necessary to implement new ATA/ATAPI/SCSI commands to support these features. Refer to the following specifications and manuals:
The current image loaders are very basic. They rely on the C file management functions (
fopen
,fread
,ftell
, etc.), have no caching mechanism, don't implement write-on-copy as advertised, have poor performance, and so on. They also only support raw hard disk images and game discs in the XISO format.The current implementations live in
core/strikebox/hw/ata/drvs/drv_vhd_image.(cpp|h)
andcore/strikebox/hw/ata/drvs/drv_vdvd_image.(cpp|h)
.For this issue, the goal is to:
It may be necessary to implement new ATA/ATAPI/SCSI commands to support these features. Refer to the following specifications and manuals: