Open andres-asm opened 5 years ago
A particular thing that I want to address and I don't know how to is HDD mounting in DOSBox. DOSBox needs to know the disk geometry before mounting an image so maybe we need a field were a user can enter arbitrary formatted data
DOSBox in particular needs:
-size [sectorsbytesize, sectorsperhead, heads, cylinders -u DRIVE]
Or maybe we can have a struct for the parameters that may be required by a particular media type
struct retro_media_info
{
const char* key
const char* value
}
These fields would always be text entry, and would be a pretty niche/advanced use case, but doable none the less.
This can be related: https://github.com/libretro/fmsx-libretro/issues/43
[2021-05-02 22:38:16]
These comments taken from Discord, user Alcaro.
Now that subsystem works, and the media control interface works I've been thinking that cores could benefit from better ways to control it's media input and output.
So this is an implementation idea for an interface that would support this use case (also paving the way for selectable BIOS files)
The existing disk control interface sorta works for this already, but fact is, it comes from a time were the API was... unidirectional. The idea here is that the core can tell the frontend it has a certain number of media slots that can be populated with media, and the API also provides a function the frontend can use to set media on a particular slot.
Let me know what you think
Example for mednafen psx memory cards:
So the frontend would be a menu, say media slots or whatever better naming we figure out In that menu you'd have
Ideally this particular case would be populated at startup, so the memcards are set with the default memcards for each slot (this may not be the case in all applications, but for memcards it's feasible) Then the user would be able to change the memcard for another from another game.
A practical application of this would be loading a GT1 save into GT2.
Say you start GT2, and then you want to import your GT1 save, then you would go to the menu and Insert the memory card in one of the slots.
That would result on the frontend calling this on the core:
This would set the gt1.mcr "memcard" into memcard slot # 2
Example for dosbox:
Frontend menu:
In this case you could also populate the slot at load by actually loading the img at startup
Example for gba e-reader cards, and gba other gba input/output peripheals
This case is particular and needs further thought, because one of the devicees is output, so it wouldn't be a valid pre-existing file but a file that would be created as output, still the API would support that as long as there is a way to "Create new file", maybe I can add a field to the api to indicate if it's an output file