diff --git a/CHANGELIST.md b/CHANGELIST.md index 8947cda2..8822c56a 100644 --- a/CHANGELIST.md +++ b/CHANGELIST.md @@ -1,3 +1,8 @@ +### WIP (xxxx-xx-xx) + +- Fix typo for L1Toolstamp!.Label (bikerspade) +- Update redumper to build 549 + ### 3.3.0 (2025-01-03) - Update packages diff --git a/MPF.ExecutionContexts.Test/RedumperTests.cs b/MPF.ExecutionContexts.Test/RedumperTests.cs index ea887662..d70fa318 100644 --- a/MPF.ExecutionContexts.Test/RedumperTests.cs +++ b/MPF.ExecutionContexts.Test/RedumperTests.cs @@ -44,14 +44,13 @@ namespace MPF.ExecutionContexts.Test [Theory] [InlineData(null, null, null, "filename.bin", null, "")] - [InlineData(RedumpSystem.IBMPCcompatible, MediaType.CDROM, "/dev/sr0", "path/filename.bin", 2, "cd skeleton --verbose --debug --drive=/dev/sr0 --speed=1000 --retries=1000 --image-path=\"path\" --image-name=\"filename\" --drive-type=GENERIC --drive-read-method=BE --drive-sector-order=DATA_C2_SUB")] - [InlineData(RedumpSystem.SuperAudioCD, MediaType.CDROM, "/dev/sr0", "path/filename.bin", 2, "sacd --verbose --debug --drive=/dev/sr0 --speed=1000 --retries=1000 --image-path=\"path\" --image-name=\"filename\" --drive-type=GENERIC --drive-read-method=BE --drive-sector-order=DATA_C2_SUB")] - [InlineData(RedumpSystem.IBMPCcompatible, MediaType.DVD, "/dev/sr0", "path/filename.bin", 2, "dvd --verbose --debug --drive=/dev/sr0 --speed=1000 --retries=1000 --image-path=\"path\" --image-name=\"filename\" --drive-type=GENERIC --drive-read-method=BE --drive-sector-order=DATA_C2_SUB")] - [InlineData(RedumpSystem.NintendoGameCube, MediaType.NintendoGameCubeGameDisc, "/dev/sr0", "path/filename.bin", 2, "dvd --verbose --debug --drive=/dev/sr0 --speed=1000 --retries=1000 --image-path=\"path\" --image-name=\"filename\" --drive-type=GENERIC --drive-read-method=BE --drive-sector-order=DATA_C2_SUB")] - [InlineData(RedumpSystem.NintendoWii, MediaType.NintendoWiiOpticalDisc, "/dev/sr0", "path/filename.bin", 2, "dvd --verbose --debug --drive=/dev/sr0 --speed=1000 --retries=1000 --image-path=\"path\" --image-name=\"filename\" --drive-type=GENERIC --drive-read-method=BE --drive-sector-order=DATA_C2_SUB")] - [InlineData(RedumpSystem.HDDVDVideo, MediaType.HDDVD, "/dev/sr0", "path/filename.bin", 2, "dvd --verbose --debug --drive=/dev/sr0 --speed=1000 --retries=1000 --image-path=\"path\" --image-name=\"filename\" --drive-type=GENERIC --drive-read-method=BE --drive-sector-order=DATA_C2_SUB")] - [InlineData(RedumpSystem.BDVideo, MediaType.BluRay, "/dev/sr0", "path/filename.bin", 2, "bd --verbose --debug --drive=/dev/sr0 --speed=1000 --retries=1000 --image-path=\"path\" --image-name=\"filename\" --drive-type=GENERIC --drive-read-method=BE --drive-sector-order=DATA_C2_SUB")] - [InlineData(RedumpSystem.NintendoWiiU, MediaType.NintendoWiiUOpticalDisc, "/dev/sr0", "path/filename.bin", 2, "bd --verbose --debug --drive=/dev/sr0 --speed=1000 --retries=1000 --image-path=\"path\" --image-name=\"filename\" --drive-type=GENERIC --drive-read-method=BE --drive-sector-order=DATA_C2_SUB")] + [InlineData(RedumpSystem.IBMPCcompatible, MediaType.CDROM, "/dev/sr0", "path/filename.bin", 2, "disc skeleton --verbose --debug --drive=/dev/sr0 --speed=2 --retries=1000 --image-path=\"path\" --image-name=\"filename\" --drive-type=GENERIC --drive-read-method=BE --drive-sector-order=DATA_C2_SUB --plextor-leadin-retries=1000")] + [InlineData(RedumpSystem.IBMPCcompatible, MediaType.DVD, "/dev/sr0", "path/filename.bin", 2, "disc --verbose --debug --drive=/dev/sr0 --speed=2 --retries=1000 --image-path=\"path\" --image-name=\"filename\" --drive-type=GENERIC --drive-read-method=BE --drive-sector-order=DATA_C2_SUB --plextor-leadin-retries=1000")] + [InlineData(RedumpSystem.NintendoGameCube, MediaType.NintendoGameCubeGameDisc, "/dev/sr0", "path/filename.bin", 2, "disc --verbose --debug --drive=/dev/sr0 --speed=2 --retries=1000 --image-path=\"path\" --image-name=\"filename\" --drive-type=GENERIC --drive-read-method=BE --drive-sector-order=DATA_C2_SUB --plextor-leadin-retries=1000")] + [InlineData(RedumpSystem.NintendoWii, MediaType.NintendoWiiOpticalDisc, "/dev/sr0", "path/filename.bin", 2, "disc --verbose --debug --drive=/dev/sr0 --speed=2 --retries=1000 --image-path=\"path\" --image-name=\"filename\" --drive-type=GENERIC --drive-read-method=BE --drive-sector-order=DATA_C2_SUB --plextor-leadin-retries=1000")] + [InlineData(RedumpSystem.HDDVDVideo, MediaType.HDDVD, "/dev/sr0", "path/filename.bin", 2, "disc --verbose --debug --drive=/dev/sr0 --speed=2 --retries=1000 --image-path=\"path\" --image-name=\"filename\" --drive-type=GENERIC --drive-read-method=BE --drive-sector-order=DATA_C2_SUB --plextor-leadin-retries=1000")] + [InlineData(RedumpSystem.BDVideo, MediaType.BluRay, "/dev/sr0", "path/filename.bin", 2, "disc --verbose --debug --drive=/dev/sr0 --speed=2 --retries=1000 --image-path=\"path\" --image-name=\"filename\" --drive-type=GENERIC --drive-read-method=BE --drive-sector-order=DATA_C2_SUB --plextor-leadin-retries=1000")] + [InlineData(RedumpSystem.NintendoWiiU, MediaType.NintendoWiiUOpticalDisc, "/dev/sr0", "path/filename.bin", 2, "disc --verbose --debug --drive=/dev/sr0 --speed=2 --retries=1000 --image-path=\"path\" --image-name=\"filename\" --drive-type=GENERIC --drive-read-method=BE --drive-sector-order=DATA_C2_SUB --plextor-leadin-retries=1000")] public void DefaultValueTest(RedumpSystem? system, MediaType? type, string? drivePath, @@ -66,14 +65,14 @@ namespace MPF.ExecutionContexts.Test #endregion - #region CD + #region Disc [Theory] - [InlineData("cd -h --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] - [InlineData("cd --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] + [InlineData("disc -h --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] + [InlineData("disc --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] public void CDTest(string parameters) { - string? expected = "cd --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=\"path\" --image-name=\"image\" --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext"; + string? expected = "disc --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=\"path\" --image-name=\"image\" --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext"; var context = new ExecutionContext(parameters); string? actual = context.GenerateParameters(); Assert.Equal(expected, actual); @@ -81,74 +80,10 @@ namespace MPF.ExecutionContexts.Test } [Theory] - [InlineData("cd --drive=dr --image-path=\"directory name\" --image-name=\"image name.bin\"")] + [InlineData("disc --drive=dr --image-path=\"directory name\" --image-name=\"image name.bin\"")] public void SpacesTest(string parameters) { - string? expected = "cd --drive=dr --image-path=\"directory name\" --image-name=\"image name.bin\""; - var context = new ExecutionContext(parameters); - string? actual = context.GenerateParameters(); - Assert.Equal(expected, actual); - Assert.True(context.IsDumpingCommand()); - } - - #endregion - - #region DVD - - [Theory] - [InlineData("dvd -h --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] - [InlineData("dvd --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] - public void DVDTest(string parameters) - { - string? expected = "dvd --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=\"path\" --image-name=\"image\" --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext"; - var context = new ExecutionContext(parameters); - string? actual = context.GenerateParameters(); - Assert.Equal(expected, actual); - Assert.True(context.IsDumpingCommand()); - } - - #endregion - - #region BD - - [Theory] - [InlineData("bd -h --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] - [InlineData("bd --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] - public void BDTest(string parameters) - { - string? expected = "bd --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=\"path\" --image-name=\"image\" --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext"; - var context = new ExecutionContext(parameters); - string? actual = context.GenerateParameters(); - Assert.Equal(expected, actual); - Assert.True(context.IsDumpingCommand()); - } - - #endregion - - #region SACD - - [Theory] - [InlineData("sacd -h --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] - [InlineData("sacd --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] - public void SACDTest(string parameters) - { - string? expected = "sacd --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=\"path\" --image-name=\"image\" --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext"; - var context = new ExecutionContext(parameters); - string? actual = context.GenerateParameters(); - Assert.Equal(expected, actual); - Assert.True(context.IsDumpingCommand()); - } - - #endregion - - #region New - - [Theory] - [InlineData("new -h --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] - [InlineData("new --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] - public void NewTest(string parameters) - { - string? expected = "new --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=\"path\" --image-name=\"image\" --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext"; + string? expected = "disc --drive=dr --image-path=\"directory name\" --image-name=\"image name.bin\""; var context = new ExecutionContext(parameters); string? actual = context.GenerateParameters(); Assert.Equal(expected, actual); @@ -189,18 +124,18 @@ namespace MPF.ExecutionContexts.Test #endregion - #region DumpNew + #region DumpExtra [Theory] - [InlineData("dumpnew -h --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] - [InlineData("dumpnew --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] - public void DumpNewTest(string parameters) + [InlineData("dump::extra -h --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] + [InlineData("dump::extra --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] + public void DumpExtraTest(string parameters) { - string? expected = "dumpnew --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=\"path\" --image-name=\"image\" --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext"; + string? expected = "dump::extra --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=\"path\" --image-name=\"image\" --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext"; var context = new ExecutionContext(parameters); string? actual = context.GenerateParameters(); Assert.Equal(expected, actual); - Assert.True(context.IsDumpingCommand()); + Assert.False(context.IsDumpingCommand()); } #endregion @@ -221,22 +156,6 @@ namespace MPF.ExecutionContexts.Test #endregion - #region RefineNew - - [Theory] - [InlineData("refinenew -h --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] - [InlineData("refinenew --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] - public void RefineNewTest(string parameters) - { - string? expected = "refinenew --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=\"path\" --image-name=\"image\" --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext"; - var context = new ExecutionContext(parameters); - string? actual = context.GenerateParameters(); - Assert.Equal(expected, actual); - Assert.False(context.IsDumpingCommand()); - } - - #endregion - #region Verify [Theory] @@ -381,6 +300,22 @@ namespace MPF.ExecutionContexts.Test #endregion + #region Subchannel + + [Theory] + [InlineData("subchannel -h --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] + [InlineData("subchannel --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] + public void SubchannelTest(string parameters) + { + string? expected = "subchannel --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=\"path\" --image-name=\"image\" --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext"; + var context = new ExecutionContext(parameters); + string? actual = context.GenerateParameters(); + Assert.Equal(expected, actual); + Assert.False(context.IsDumpingCommand()); + } + + #endregion + #region Debug [Theory] @@ -397,19 +332,48 @@ namespace MPF.ExecutionContexts.Test #endregion - // Currently disabled #region FixMSF - // [Theory] - // [InlineData("fixmsf -h --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] - // [InlineData("fixmsf --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] - // public void FixMSFTest(string parameters) - // { - // string? expected = "fixmsf --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=\"path\" --image-name=\"image\" --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext"; - // var context = new ExecutionContext(parameters); - // string? actual = context.GenerateParameters(); - // Assert.Equal(expected, actual); - // } + [Theory] + [InlineData("fixmsf -h --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] + [InlineData("fixmsf --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] + public void FixMSFTest(string parameters) + { + string? expected = "fixmsf --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=\"path\" --image-name=\"image\" --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext"; + var context = new ExecutionContext(parameters); + string? actual = context.GenerateParameters(); + Assert.Equal(expected, actual); + } + + #endregion + + #region DebugFlip + + [Theory] + [InlineData("debug::flip -h --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] + [InlineData("debug::flip --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] + public void DebugFlipTest(string parameters) + { + string? expected = "debug::flip --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=\"path\" --image-name=\"image\" --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext"; + var context = new ExecutionContext(parameters); + string? actual = context.GenerateParameters(); + Assert.Equal(expected, actual); + } + + #endregion + + #region DriveTest + + [Theory] + [InlineData("drive::test -h --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] + [InlineData("drive::test --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=path --image-name=image --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext")] + public void DriveTestTest(string parameters) + { + string? expected = "drive::test --help --version --verbose --auto-eject --drive=dr --speed=0 --retries=0 --image-path=\"path\" --image-name=\"image\" --overwrite --drive-type=dt --drive-read-offset=0 --drive-c2-shift=0 --drive-pregap-start=0 --drive-read-method=drm --drive-sector-order=dso --plextor-skip-leadin --plextor-leadin-retries=0 --asus-skip-leadout --force-offset=0 --audio-silence-threshold=0 --correct-offset-shift --offset-shift-relocate --force-split --leave-unchanged --force-qtoc --skip-fill=0 --iso9660-trim --lba-start=0 --lba-end=0 --refine-subchannel --skip=0 --dump-write-offset=0 --dump-read-size=0 --overread-leadout --force-unscrambled --legacy-subs --disable-cdtext"; + var context = new ExecutionContext(parameters); + string? actual = context.GenerateParameters(); + Assert.Equal(expected, actual); + } #endregion } diff --git a/MPF.ExecutionContexts/Redumper/CommandStrings.cs b/MPF.ExecutionContexts/Redumper/CommandStrings.cs index e07f1f47..cd7f43bf 100644 --- a/MPF.ExecutionContexts/Redumper/CommandStrings.cs +++ b/MPF.ExecutionContexts/Redumper/CommandStrings.cs @@ -6,16 +6,11 @@ namespace MPF.ExecutionContexts.Redumper public static class CommandStrings { public const string NONE = ""; - public const string CD = "cd"; - public const string DVD = "dvd"; // Synonym for CD - public const string BluRay = "bd"; // Synonym for CD - public const string SACD = "sacd"; // Synonym for CD - public const string New = "new"; // Synonym for CD; Temporary command, to be removed later + public const string Disc = "disc"; public const string Rings = "rings"; public const string Dump = "dump"; - public const string DumpNew = "dumpnew"; // Temporary command, to be removed later + public const string DumpExtra = "dump::extra"; public const string Refine = "refine"; - public const string RefineNew = "refinenew"; // Temporary command, to be removed later public const string Verify = "verify"; public const string DVDKey = "dvdkey"; public const string Eject = "eject"; @@ -25,7 +20,11 @@ namespace MPF.ExecutionContexts.Redumper public const string Hash = "hash"; public const string Info = "info"; public const string Skeleton = "skeleton"; + public const string FlashMT1339 = "flash::mt1339"; + public const string Subchannel = "subchannel"; public const string Debug = "debug"; public const string FixMSF = "fixmsf"; + public const string DebugFlip = "debug::flip"; + public const string DriveTest = "drive::test"; } } \ No newline at end of file diff --git a/MPF.ExecutionContexts/Redumper/Enumerations.cs b/MPF.ExecutionContexts/Redumper/Enumerations.cs index c009ff13..3a6a9e52 100644 --- a/MPF.ExecutionContexts/Redumper/Enumerations.cs +++ b/MPF.ExecutionContexts/Redumper/Enumerations.cs @@ -9,7 +9,7 @@ namespace MPF.ExecutionContexts.Redumper BE, D8, - BE_CDDA, + BE_CDDA, // Currently an alias for BE } /// diff --git a/MPF.ExecutionContexts/Redumper/ExecutionContext.cs b/MPF.ExecutionContexts/Redumper/ExecutionContext.cs index c6c76e96..ab994c63 100644 --- a/MPF.ExecutionContexts/Redumper/ExecutionContext.cs +++ b/MPF.ExecutionContexts/Redumper/ExecutionContext.cs @@ -54,8 +54,10 @@ namespace MPF.ExecutionContexts.Redumper [FlagStrings.HelpLong] = new FlagInput(FlagStrings.HelpShort, FlagStrings.HelpLong), [FlagStrings.Version] = new FlagInput(FlagStrings.Version), [FlagStrings.Verbose] = new FlagInput(FlagStrings.Verbose), + [FlagStrings.Continue] = new StringInput(FlagStrings.Continue), [FlagStrings.AutoEject] = new FlagInput(FlagStrings.AutoEject), [FlagStrings.Debug] = new FlagInput(FlagStrings.Debug), + [FlagStrings.DiscType] = new StringInput(FlagStrings.DiscType), [FlagStrings.Drive] = new StringInput(FlagStrings.Drive), [FlagStrings.Speed] = new Int32Input(FlagStrings.Speed), [FlagStrings.Retries] = new Int32Input(FlagStrings.Retries), @@ -75,7 +77,9 @@ namespace MPF.ExecutionContexts.Redumper // Drive Specific [FlagStrings.PlextorSkipLeadin] = new FlagInput(FlagStrings.PlextorSkipLeadin), [FlagStrings.PlextorLeadinRetries] = new Int32Input(FlagStrings.PlextorLeadinRetries), + [FlagStrings.PlextorLeadinForceStore] = new FlagInput(FlagStrings.PlextorLeadinForceStore), [FlagStrings.AsusSkipLeadout] = new FlagInput(FlagStrings.AsusSkipLeadout), + [FlagStrings.AsusLeadoutRetries] = new Int32Input(FlagStrings.AsusLeadoutRetries), // Offset [FlagStrings.ForceOffset] = new Int32Input(FlagStrings.ForceOffset), @@ -99,8 +103,13 @@ namespace MPF.ExecutionContexts.Redumper [FlagStrings.DumpReadSize] = new Int32Input(FlagStrings.DumpReadSize), [FlagStrings.OverreadLeadout] = new FlagInput(FlagStrings.OverreadLeadout), [FlagStrings.ForceUnscrambled] = new FlagInput(FlagStrings.ForceUnscrambled), + [FlagStrings.ForceRefine] = new FlagInput(FlagStrings.ForceRefine), [FlagStrings.LegacySubs] = new FlagInput(FlagStrings.LegacySubs), [FlagStrings.DisableCDText] = new FlagInput(FlagStrings.DisableCDText), + [FlagStrings.SkipSubcodeDesync] = new FlagInput(FlagStrings.SkipSubcodeDesync), + [FlagStrings.DriveTestSkipPlextorLeadin] = new FlagInput(FlagStrings.DriveTestSkipPlextorLeadin), + [FlagStrings.DriveTestSkipCacheRead] = new FlagInput(FlagStrings.DriveTestSkipCacheRead), + //[FlagStrings.Firmware] = new StringInput(FlagStrings.Firmware) { Quotes = true }, }; #endregion @@ -134,8 +143,10 @@ namespace MPF.ExecutionContexts.Redumper FlagStrings.HelpShort, FlagStrings.Version, FlagStrings.Verbose, + FlagStrings.Continue, FlagStrings.AutoEject, FlagStrings.Debug, + FlagStrings.DiscType, FlagStrings.Drive, FlagStrings.Speed, FlagStrings.Retries, @@ -154,7 +165,9 @@ namespace MPF.ExecutionContexts.Redumper // Drive Specific FlagStrings.PlextorSkipLeadin, FlagStrings.PlextorLeadinRetries, + FlagStrings.PlextorLeadinForceStore, FlagStrings.AsusSkipLeadout, + FlagStrings.AsusLeadoutRetries, // Offset FlagStrings.ForceOffset, @@ -178,8 +191,13 @@ namespace MPF.ExecutionContexts.Redumper FlagStrings.DumpReadSize, FlagStrings.OverreadLeadout, FlagStrings.ForceUnscrambled, + FlagStrings.ForceRefine, FlagStrings.LegacySubs, FlagStrings.DisableCDText, + FlagStrings.SkipSubcodeDesync, + FlagStrings.DriveTestSkipPlextorLeadin, + FlagStrings.DriveTestSkipCacheRead, + //FlagStrings.Firmware, ], }; } @@ -225,13 +243,8 @@ namespace MPF.ExecutionContexts.Redumper /// public override bool IsDumpingCommand() { - return ModeValues?.Contains(CommandStrings.CD) == true - || ModeValues?.Contains(CommandStrings.DVD) == true - || ModeValues?.Contains(CommandStrings.BluRay) == true - || ModeValues?.Contains(CommandStrings.SACD) == true - || ModeValues?.Contains(CommandStrings.New) == true - || ModeValues?.Contains(CommandStrings.Dump) == true - || ModeValues?.Contains(CommandStrings.DumpNew) == true; + return ModeValues?.Contains(CommandStrings.Disc) == true + || ModeValues?.Contains(CommandStrings.Dump) == true; } /// @@ -257,21 +270,17 @@ namespace MPF.ExecutionContexts.Redumper case SabreTools.RedumpLib.Data.MediaType.CDROM: ModeValues = RedumpSystem switch { - SabreTools.RedumpLib.Data.RedumpSystem.SuperAudioCD => [CommandStrings.SACD], - _ => [CommandStrings.CD, CommandStrings.Skeleton], + SabreTools.RedumpLib.Data.RedumpSystem.SuperAudioCD => [CommandStrings.Disc], + _ => [CommandStrings.Disc, CommandStrings.Skeleton], }; break; case SabreTools.RedumpLib.Data.MediaType.DVD: case SabreTools.RedumpLib.Data.MediaType.NintendoGameCubeGameDisc: case SabreTools.RedumpLib.Data.MediaType.NintendoWiiOpticalDisc: - ModeValues = [CommandStrings.DVD]; - break; - case SabreTools.RedumpLib.Data.MediaType.HDDVD: // TODO: Keep in sync if another command string shows up - ModeValues = [CommandStrings.DVD]; - break; + case SabreTools.RedumpLib.Data.MediaType.HDDVD: case SabreTools.RedumpLib.Data.MediaType.BluRay: case SabreTools.RedumpLib.Data.MediaType.NintendoWiiUOpticalDisc: - ModeValues = [CommandStrings.BluRay]; + ModeValues = [CommandStrings.Disc]; break; default: BaseCommand = null; @@ -341,7 +350,7 @@ namespace MPF.ExecutionContexts.Redumper if (GetBooleanSetting(options, SettingConstants.EnableLeadinRetry, SettingConstants.EnableLeadinRetryDefault)) { this[FlagStrings.PlextorLeadinRetries] = true; - (_inputs[FlagStrings.Speed] as Int32Input)?.SetValue(GetInt32Setting(options, SettingConstants.LeadinRetryCount, SettingConstants.LeadinRetryCountDefault)); + (_inputs[FlagStrings.PlextorLeadinRetries] as Int32Input)?.SetValue(GetInt32Setting(options, SettingConstants.LeadinRetryCount, SettingConstants.LeadinRetryCountDefault)); } } @@ -370,16 +379,11 @@ namespace MPF.ExecutionContexts.Redumper string part = parts[index]; switch (part) { - case CommandStrings.CD: - case CommandStrings.DVD: - case CommandStrings.BluRay: - case CommandStrings.SACD: - case CommandStrings.New: // Temporary command, to be removed later + case CommandStrings.Disc: case CommandStrings.Rings: case CommandStrings.Dump: - case CommandStrings.DumpNew: // Temporary command, to be removed later + case CommandStrings.DumpExtra: case CommandStrings.Refine: - case CommandStrings.RefineNew: // Temporary command, to be removed later case CommandStrings.Verify: case CommandStrings.DVDKey: case CommandStrings.Eject: @@ -389,8 +393,12 @@ namespace MPF.ExecutionContexts.Redumper case CommandStrings.Hash: case CommandStrings.Info: case CommandStrings.Skeleton: + //case CommandStrings.FlashMT1339: + case CommandStrings.Subchannel: case CommandStrings.Debug: - //case CommandStrings.FixMSF: + case CommandStrings.FixMSF: + case CommandStrings.DebugFlip: + case CommandStrings.DriveTest: ModeValues.Add(part); break; diff --git a/MPF.ExecutionContexts/Redumper/FlagStrings.cs b/MPF.ExecutionContexts/Redumper/FlagStrings.cs index 687d3476..866353c2 100644 --- a/MPF.ExecutionContexts/Redumper/FlagStrings.cs +++ b/MPF.ExecutionContexts/Redumper/FlagStrings.cs @@ -11,8 +11,10 @@ namespace MPF.ExecutionContexts.Redumper public const string HelpShort = "-h"; public const string Version = "--version"; public const string Verbose = "--verbose"; + public const string Continue = "--continue"; public const string AutoEject = "--auto-eject"; public const string Debug = "--debug"; + public const string DiscType = "--disc-type"; public const string Drive = "--drive"; public const string Speed = "--speed"; public const string Retries = "--retries"; @@ -37,7 +39,9 @@ namespace MPF.ExecutionContexts.Redumper public const string PlextorSkipLeadin = "--plextor-skip-leadin"; public const string PlextorLeadinRetries = "--plextor-leadin-retries"; + public const string PlextorLeadinForceStore = "--plextor-leadin-force-store"; public const string AsusSkipLeadout = "--asus-skip-leadout"; + public const string AsusLeadoutRetries = "--asus-leadout-retries"; #endregion @@ -70,8 +74,13 @@ namespace MPF.ExecutionContexts.Redumper public const string DumpReadSize = "--dump-read-size"; public const string OverreadLeadout = "--overread-leadout"; public const string ForceUnscrambled = "--force-unscrambled"; + public const string ForceRefine = "--force-refine"; public const string LegacySubs = "--legacy-subs"; public const string DisableCDText = "--disable-cdtext"; + public const string SkipSubcodeDesync = "--skip-subcode-desync"; + public const string DriveTestSkipPlextorLeadin = "--drive-test-skip-plextor-leadin"; + public const string DriveTestSkipCacheRead = "--drive-test-skip-cache-read"; + public const string Firmware = "--firmware"; #endregion } diff --git a/MPF.Frontend/Tools/SubmissionGenerator.cs b/MPF.Frontend/Tools/SubmissionGenerator.cs index e074080e..132be77f 100644 --- a/MPF.Frontend/Tools/SubmissionGenerator.cs +++ b/MPF.Frontend/Tools/SubmissionGenerator.cs @@ -199,14 +199,34 @@ namespace MPF.Frontend.Tools } // If the line ends in a known extra track names, skip them for checking - if (hashData.Contains("(Track 0).bin") + // TODO: Smarter method to ignore all tracks that start with 0. 00. A. or AA. + if (hashData.Contains(".dmi") + || hashData.Contains(".pfi") + || hashData.Contains(".ss") + || hashData.Contains("(Track 0).bin") + || hashData.Contains("(Track 0.1).bin") || hashData.Contains("(Track 0.2).bin") + || hashData.Contains("(Track 0.3).bin") + || hashData.Contains("(Track 0.4).bin") + || hashData.Contains("(Track 0.5).bin") || hashData.Contains("(Track 00).bin") + || hashData.Contains("(Track 00.1).bin") || hashData.Contains("(Track 00.2).bin") + || hashData.Contains("(Track 00.3).bin") + || hashData.Contains("(Track 00.4).bin") + || hashData.Contains("(Track 00.5).bin") || hashData.Contains("(Track A).bin") + || hashData.Contains("(Track A.1).bin") || hashData.Contains("(Track A.2).bin") + || hashData.Contains("(Track A.3).bin") + || hashData.Contains("(Track A.4).bin") + || hashData.Contains("(Track A.5).bin") || hashData.Contains("(Track AA).bin") - || hashData.Contains("(Track AA.2).bin")) + || hashData.Contains("(Track AA.1).bin") + || hashData.Contains("(Track AA.2).bin") + || hashData.Contains("(Track AA.3).bin") + || hashData.Contains("(Track AA.4).bin") + || hashData.Contains("(Track AA.5).bin")) { trackCount--; resultProgress?.Report(ResultEventArgs.Success("Extra track found, skipping!")); diff --git a/MPF.Processors.Test/RedumperTests.cs b/MPF.Processors.Test/RedumperTests.cs index 111632a6..19982bb0 100644 --- a/MPF.Processors.Test/RedumperTests.cs +++ b/MPF.Processors.Test/RedumperTests.cs @@ -29,7 +29,7 @@ namespace MPF.Processors.Test var processor = new Redumper(RedumpSystem.IBMPCcompatible, MediaType.CDROM); var actual = processor.GetOutputFiles(outputDirectory, outputFilename); - Assert.Equal(14, actual.Count); + Assert.Equal(15, actual.Count); } [Fact] @@ -40,7 +40,7 @@ namespace MPF.Processors.Test var processor = new Redumper(RedumpSystem.IBMPCcompatible, MediaType.DVD); var actual = processor.GetOutputFiles(outputDirectory, outputFilename); - Assert.Equal(16, actual.Count); + Assert.Equal(17, actual.Count); } [Fact] @@ -1170,7 +1170,7 @@ namespace MPF.Processors.Test [Fact] public void GetVersion_Valid_Filled() { - string? expected = "v1980.01.01 build_00"; + string? expected = "v1980.01.01 build_000"; string log = Path.Combine(Environment.CurrentDirectory, "TestData", "Redumper", "CDROM", "test.log"); string? actual = Redumper.GetVersion(log); Assert.Equal(expected, actual); @@ -1236,7 +1236,7 @@ namespace MPF.Processors.Test [Fact] public void GetWriteOffset_Valid_Filled() { - string? expected = "offset"; + string? expected = "+0"; string log = Path.Combine(Environment.CurrentDirectory, "TestData", "Redumper", "CDROM", "test.log"); string? actual = Redumper.GetWriteOffset(log); Assert.Equal(expected, actual); diff --git a/MPF.Processors.Test/TestData/Redumper/CDROM/test.cache b/MPF.Processors.Test/TestData/Redumper/CDROM/test.cache new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Redumper/CDROM/test.cache @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Redumper/CDROM/test.flip b/MPF.Processors.Test/TestData/Redumper/CDROM/test.flip new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Redumper/CDROM/test.flip @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Redumper/CDROM/test.log b/MPF.Processors.Test/TestData/Redumper/CDROM/test.log index c21df533..1853851d 100644 --- a/MPF.Processors.Test/TestData/Redumper/CDROM/test.log +++ b/MPF.Processors.Test/TestData/Redumper/CDROM/test.log @@ -1,5 +1,5 @@ DUMPING DATE (DateTime.Now) -redumper v1980.01.01 build_00 [Jan 01 1980, 00:00:00] +redumper v1980.01.01 build_000 << GetVersion (above) >> << GetParameters >> @@ -162,4 +162,4 @@ Universal Hash (SHA-1): da39a3ee5e6b4b0d3255bfef95601890afd80709 volume identifier: label << GetWriteOffset >> -disc write offset: offset +disc write offset: +0 diff --git a/MPF.Processors/Redumper.cs b/MPF.Processors/Redumper.cs index 1aec10c8..c1cfd127 100644 --- a/MPF.Processors/Redumper.cs +++ b/MPF.Processors/Redumper.cs @@ -446,6 +446,7 @@ namespace MPF.Processors new($"{outputFilename}.pma", OutputFileFlags.Binary | OutputFileFlags.Zippable, "pma"), + new([$"{outputFilename}.flip"], OutputFileFlags.None), new([$"{outputFilename}.scram", $"{outputFilename}.scrap"], OutputFileFlags.Required | OutputFileFlags.Deleteable), new($"{outputFilename}.state", OutputFileFlags.Required @@ -511,9 +512,13 @@ namespace MPF.Processors case MediaType.NintendoGameCubeGameDisc: case MediaType.NintendoWiiOpticalDisc: return [ + // .asus is obsolete: newer redumper produces .cache instead new($"{outputFilename}.asus", OutputFileFlags.Binary | OutputFileFlags.Zippable, "asus"), + new($"{outputFilename}.cache", OutputFileFlags.Binary + | OutputFileFlags.Zippable, + "cache"), new($"{outputFilename}.dmi", OutputFileFlags.Binary | OutputFileFlags.Zippable, "dmi"), @@ -1624,12 +1629,22 @@ namespace MPF.Processors try { // If we have a perfect audio offset, return + bool perfectAudioOffsetApplied = false; using var sr = File.OpenText(log); while (!sr.EndOfStream) { string? line = sr.ReadLine()?.TrimStart(); if (line?.StartsWith("Perfect Audio Offset applied") == true) - return "+0"; + { + perfectAudioOffsetApplied = true; + } + else if (line?.StartsWith("disc write offset: +0") == true) + { + if (perfectAudioOffsetApplied) + return "+0"; + else + return null; + } } // We couldn't detect it then @@ -1779,6 +1794,8 @@ namespace MPF.Processors { using var sr = File.OpenText(log); + long errorCount = -1; + // Find the error counts while (!sr.EndOfStream) { @@ -1791,12 +1808,12 @@ namespace MPF.Processors { string[] parts = line.Split(' '); if (long.TryParse(parts[1], out long scsiErrors)) - return scsiErrors; + errorCount = scsiErrors; } } - // We couldn't detect it then - return -1; + // Return error count, default -1 if no SCSI error count found + return errorCount; } catch { @@ -1987,6 +2004,7 @@ namespace MPF.Processors // Samples: // redumper v2022.10.28 [Oct 28 2022, 05:41:43] (print usage: --help,-h) // redumper v2022.12.22 build_87 [Dec 22 2022, 01:56:26] + // redumper v2025.03.29 build_481 try { @@ -2001,7 +2019,7 @@ namespace MPF.Processors // Generate regex // Permissive - var regex = new Regex(@"^redumper (v.+) \[.+\]", RegexOptions.Compiled); + var regex = new Regex(@"^redumper (v.+)", RegexOptions.Compiled); // Strict //var regex = new Regex(@"^redumper (v\d{4}\.\d{2}\.\d{2}(| build_\d+)) \[.+\]", RegexOptions.Compiled); diff --git a/publish-nix.sh b/publish-nix.sh index cc2a5eb4..2ec1e3a0 100755 --- a/publish-nix.sh +++ b/publish-nix.sh @@ -216,8 +216,8 @@ if [ $NO_ARCHIVE = false ]; then unzip -u DiscImageCreator_20250101.zip # Redumper - wget https://github.com/superg/redumper/releases/download/build_438/redumper-2024.11.03_build438-win64.zip - unzip redumper-2024.11.03_build438-win64.zip + wget https://github.com/superg/redumper/releases/download/build_549/redumper-2025.04.15_build549-Windows64.zip + unzip redumper-2025.04.15_build549-Windows64.zip # Create directories and copy data for FRAMEWORK in "${UI_FRAMEWORKS[@]}"; do @@ -227,22 +227,22 @@ if [ $NO_ARCHIVE = false ]; then cp -rfp Release_ANSI/* MPF.UI/bin/Debug/${FRAMEWORK}/${RUNTIME}/publish/Programs/Creator/ mkdir -p MPF.UI/bin/Debug/${FRAMEWORK}/${RUNTIME}/publish/Programs/Redumper - cp -rfp redumper-2024.11.03_build438-win64/bin/redumper.exe MPF.UI/bin/Debug/${FRAMEWORK}/${RUNTIME}/publish/Programs/Redumper/ + cp -rfp redumper-2025.04.15_build549-Windows64/bin/redumper.exe MPF.UI/bin/Debug/${FRAMEWORK}/${RUNTIME}/publish/Programs/Redumper/ fi mkdir -p MPF.UI/bin/Release/${FRAMEWORK}/${RUNTIME}/publish/Programs/Creator cp -rfp Release_ANSI/* MPF.UI/bin/Release/${FRAMEWORK}/${RUNTIME}/publish/Programs/Creator/ mkdir -p MPF.UI/bin/Release/${FRAMEWORK}/${RUNTIME}/publish/Programs/Redumper - cp -rfp redumper-2024.11.03_build438-win64/bin/redumper.exe MPF.UI/bin/Release/${FRAMEWORK}/${RUNTIME}/publish/Programs/Redumper/ + cp -rfp redumper-2025.04.15_build549-Windows64/bin/redumper.exe MPF.UI/bin/Release/${FRAMEWORK}/${RUNTIME}/publish/Programs/Redumper/ done done # Clean up the downloaded files and directories rm DiscImageCreator_20250101.zip rm -r Release_ANSI - rm redumper-2024.11.03_build438-win64.zip - rm -r redumper-2024.11.03_build438-win64 + rm redumper-2025.04.15_build549-Windows64.zip + rm -r redumper-2025.04.15_build549-Windows64 fi # Create UI archives diff --git a/publish-win.ps1 b/publish-win.ps1 index 8107f2ec..db6c5e77 100644 --- a/publish-win.ps1 +++ b/publish-win.ps1 @@ -197,8 +197,8 @@ if (!$NO_ARCHIVE.IsPresent) { Expand-Archive -LiteralPath "DiscImageCreator_20250101.zip" -DestinationPath "$BUILD_FOLDER/Creator" # Redumper - Invoke-WebRequest -Uri https://github.com/superg/redumper/releases/download/build_438/redumper-2024.11.03_build438-win64.zip -OutFile redumper-2024.11.03_build438-win64.zip - Expand-Archive -LiteralPath "redumper-2024.11.03_build438-win64.zip" -DestinationPath "$BUILD_FOLDER/Redumper" + Invoke-WebRequest -Uri https://github.com/superg/redumper/releases/download/build_549/redumper-2025.04.15_build549-Windows64.zip -OutFile redumper-2025.04.15_build549-Windows64.zip + Expand-Archive -LiteralPath "redumper-2025.04.15_build549-Windows64.zip" -DestinationPath "$BUILD_FOLDER/Redumper" # Create directories and copy data foreach ($FRAMEWORK in $UI_FRAMEWORKS) { @@ -208,21 +208,21 @@ if (!$NO_ARCHIVE.IsPresent) { Copy-Item -Path "Creator/Release_ANSI/*" -Destination "MPF.UI/bin/Debug/${FRAMEWORK}/${RUNTIME}/publish/Programs/Creator/" -Recurse -Force New-Item -Name "MPF.UI/bin/Debug/${FRAMEWORK}/${RUNTIME}/publish/Programs/Redumper" -Type Directory -ErrorAction SilentlyContinue - Copy-Item -Path "Redumper/redumper-2024.11.03_build438-win64/bin/redumper.exe" -Destination "MPF.UI/bin/Debug/${FRAMEWORK}/${RUNTIME}/publish/Programs/Redumper/" -Force + Copy-Item -Path "Redumper/redumper-2025.04.15_build549-Windows64/bin/redumper.exe" -Destination "MPF.UI/bin/Debug/${FRAMEWORK}/${RUNTIME}/publish/Programs/Redumper/" -Force } New-Item -Name "MPF.UI/bin/Release/${FRAMEWORK}/${RUNTIME}/publish/Programs/Creator" -Type Directory -ErrorAction SilentlyContinue Copy-Item -Path "Creator/Release_ANSI/*" -Destination "MPF.UI/bin/Release/${FRAMEWORK}/${RUNTIME}/publish/Programs/Creator/" -Recurse -Force New-Item -Name "MPF.UI/bin/Release/${FRAMEWORK}/${RUNTIME}/publish/Programs/Redumper" -Type Directory -ErrorAction SilentlyContinue - Copy-Item -Path "Redumper/redumper-2024.11.03_build438-win64/bin/redumper.exe" -Destination "MPF.UI/bin/Release/${FRAMEWORK}/${RUNTIME}/publish/Programs/Redumper/" -Force + Copy-Item -Path "Redumper/redumper-2025.04.15_build549-Windows64/bin/redumper.exe" -Destination "MPF.UI/bin/Release/${FRAMEWORK}/${RUNTIME}/publish/Programs/Redumper/" -Force } } # Clean up the downloaded files and directories Remove-Item -Path "DiscImageCreator_20250101.zip" Remove-Item -Path "Creator" -Recurse - Remove-Item -Path "redumper-2024.11.03_build438-win64.zip" + Remove-Item -Path "redumper-2025.04.15_build549-Windows64.zip" Remove-Item -Path "Redumper" -Recurse }