util/cdrom, machine/t10mmc: Add preliminary support for multisession CD-ROMs, indexes, and track flags #12201
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
All of the commits can be reviewed independently. Opening as a draft to get feedback because it's a lot of changes.
I won't be adding CHD support for these features. This is just to get the features somewhat functional within MAME and then in the future someone can figure out how to add CHD support. All of the features can be tested by loading a .cue/.bin through
-cdrom
.parse_metadata
in particularidx0offs
andidx1offs
in favor of an array of index values and added the code to read indexes from .cuesFLAGS
from .cue and made them readable throughget_adr_control
T10MMC_CMD_READ_TOC_PMA_ATIP
commandT10MMC_CMD_MECHANISM_STATUS
since it was used by cdrdao, which I was using for testing within MAME to easily check if things were reading properlyMultisession CDs can be tested using the
pumpitup
BIOS machine and manually specifying one of the multisession .cue games. I've tested "Pump it Up: The 2nd Dance Floor" and "Pump it Up The O.B.G: The 3rd Dance Floor" and they both are booting and playable with these changes. The later games after that are also multisession CD but need additional hardware emulation to boot.It's possible to run cdrdao within MAME using
shutms11
via a Knoppix live CD (enterknoppix 2
to boot without the X11 GUI) to do more thorough testing. Index detection probably won't work without CDDA scanning implemented, which I didn't include in this PR.The generated full TOC and legacy TOC were checked against data dumped via Redumper and/or DiscImageCreator when possible. It isn't perfect (first lead-in area being hardcoded to 95:00:00 for example) but it mostly generates a matching full TOC and legacy TOC.