This was the initial talk in #bizhawk
https://pastebin.com/aDYCUPjE
And then I asked slamo and Dacicus to provide some insight on what's needed
https://pastebin.com/KUdpvZBC
I haven't tested how 86Box works with different media types and how many it supports at once, but here's a list of files PCem works with:
- ROM files for a given machine. They also determine what will be available in emulated hardware options, may not be relevant for hawk.
- NVR file that stores battery info of the BIOS. Not every setup needs it to launch. Not sure if any setup will create this while running. UPDATE: If NVR is missing and that firmware uses it, it pulls it from a default NVR file for that firmware and starts from that
- 2 floppy disks can be loaded at once. The system can record to them. Swappable.
- 1 CD can be loaded at once. Can't be recorded to? Swappable.
- 1 HDD can be loaded at once. The system records to it a lot. Can't be swapped? UPDATE: Some firmwares can use up to 4 hard drives (3 if you're using a CD drive).
- Textual config file for machine description, listing what devices it consists of and where on the host they are. Each configured machine has its own file. 86Box has only one file for whatever the current config is.
PCem also supports zip drives and cassettes, but for games those don't seem to be needed.
So writes to those files will need to be captured and stored in a save RAM style, so a new movie could start from that. This is important because if you install something without capturing emulated timing fully, resulting hashes will be wrong and the movie may desync. This is why we require game installation to be inside a movie (either main or separate).
Games come in the form of media images or in the form of file bunches. In order to load the latter into PCem one needs to create a compatible image on the host (for example using
mkisofs). Only then such an image can be sent to the emulator.
So since so many things have to be loaded at once, I thought that maybe extending functionality of Multi-disk Bundler could work? It allows us specify the platform, so it works fine as a core loader. And it even already supports
loading several game files at once for Sega. What it doesn't have is knowing the difference between loading in parallel and swapping. For most cores it's the latter (PSX disks for example). It could also calculate hashes (for huge files - on demand).
This would help with setting up MAME probably (tho simply renaming the game zip to something that launches the MAME core is a great idea too), and most definitely with Amiga emulators since they can load several mediums at once too.
In terms of porting to hawk, PCem is has been on hiatus recently and we can't tell how active it will remain in the future. While 86Box has a huge team and is very active.