[enhancement] Zip support for multi-disk for computer emulators (mostly lr-vice and lr-puae)
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 14.1k
- Forks
- 2.2k
- Avg merge
- 7h 35m
- Merged PRs (30d)
- 51
Description
Description
As far as i see, the current .m3u and Disk Control support relies on the fact that:
- all the disks are in the same .zip (so an .m3u is automatically created and disks are selected through disk control)
- OR disks are already uncompressed, so there's no problem at all.
Problem happens, since most people has their collections stored as 1-zip per disk, i.e. when you want to use a game with 3 disks: for Amiga you would have 3 zips, for c64 you would have 6 zips (3 zips for side A + 3 for side B), and so on.
In this common settings you can't load any further disks from the disk control interface since, citing from the docs (taken from lr-vice, for example):
Note : zip support is provided by RetroArch and is done before passing the game to the core. So, when using a m3u file, the specified disk image must be uncompressed
Of course this could be handled by recompressing all the collections in 1-zip-per-game, or for Amiga recompressing all the zips to .ADZ (as lr-puae docs states this is supported natively by the emulator), or keeping the collections uncompressed.
But, i think it's trivial to implement this correctly in Retroarch itself, since it generically affects many emulators.
Expected behavior
start the emulator with loading the disk 1, then (through the disk control menu) load disk 2 when needed and the game continues correctly.
Actual behavior
after inserting disk 2 and resuming emulation, it won't load since it doesn't get uncompressed.
Steps to reproduce the bug
I describe the steps to reproduce here just for Amiga (lr-puae), but it's general for all affected emulators.
- get a multi-disk game for Amiga (i.e. Fire & Ice), with both disk 1 and 2 as separate zips.
- run disk 1 selecting it as normally using 'load content', get to the point where it asks for the 2nd disk (right after the title screen)
- quick menu -> disk control -> load new disk -> select disk 2
- make sure it is inserted, resume emulation
also using an .m3u pointing to the 2 zips still doesn't work (same behaviour).
it only works (both with manually adding the disks or with the m3u) with uncompressed disks.
Bisect Results
i think it was implemented this way ..... sincerely, i wonder why this simple scenario has not come to mind ....
Version/Commit
- RetroArch: nightly mar 15/2020, git version: 7c57124
Environment information
- OS: Android (but i think it doesn't matter here...)
- Compiler: Clang/LLVM 8.0.7
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing RetroArch's disk control path and its zip and .m3u handling, using the reported lr-puae and lr-vice cases as examples. Reproduce the Fire & Ice scenario with separate disk archives, then verify that loading disk 2 through the disk control menu works while the disk remains compressed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100