Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 23 additions & 14 deletions options.ixx
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,15 @@ export struct Options
int cdr_error_threshold;
int scsi_timeout;

// built-in defaults for numeric options, shared by the constructor and printUsage() so help shows the compile-time default rather than an argv override
static constexpr int retries_default = 0;
static constexpr int skip_fill_default = 0x55;
static constexpr int plextor_leadin_retries_default = 4;
static constexpr int mediatek_leadout_retries_default = 32;
static constexpr int audio_silence_threshold_default = 32;
static constexpr int cdr_error_threshold_default = 16;
static constexpr int scsi_timeout_default = 50000;


Options(int argc, const char *argv[])
: help(false)
Expand All @@ -97,26 +106,26 @@ export struct Options
, overwrite(false)
, force_split(false)
, leave_unchanged(false)
, retries(0)
, retries(retries_default)
, refine_subchannel(false)
, refine_sector_mode(false)
, lba_end_by_subcode(false)
, force_qtoc(false)
, legacy_subs(false)
, skip_fill(0x55)
, skip_fill(skip_fill_default)
, filesystem_trim(false)
, plextor_skip_leadin(false)
, plextor_leadin_retries(4)
, plextor_leadin_retries(plextor_leadin_retries_default)
, plextor_leadin_force_store(false)
, mediatek_skip_leadout(false)
, mediatek_leadout_retries(32)
, mediatek_leadout_retries(mediatek_leadout_retries_default)
, kreon_partial_ss(false)
, dvd_raw(false)
, bd_raw(false)
, disable_cdtext(false)
, correct_offset_shift(false)
, offset_shift_relocate(false)
, audio_silence_threshold(32)
, audio_silence_threshold(audio_silence_threshold_default)
, overread_leadout(false)
, force_unscrambled(false)
, force_refine(false)
Expand All @@ -125,8 +134,8 @@ export struct Options
, drive_test_skip_cache_read(false)
, skip_subcode_desync(false)
, rings(false)
, cdr_error_threshold(16)
, scsi_timeout(50000)
, cdr_error_threshold(cdr_error_threshold_default)
, scsi_timeout(scsi_timeout_default)
{
for(int i = 1; i < argc; ++i)
arguments += str_quoted_if_space(argv[i]) + " ";
Expand Down Expand Up @@ -400,7 +409,7 @@ export struct Options
LOG("\t--skeleton \tgenerate skeleton after dump");
LOG("\t--drive=VALUE \tdrive to use, first available drive with disc, if not provided");
LOG("\t--speed=VALUE \tdrive read speed, optimal drive speed will be used if not provided");
LOG("\t--retries=VALUE \tnumber of sector retries in case of SCSI/C2 error (default: {})", retries);
LOG("\t--retries=VALUE \tnumber of sector retries in case of SCSI/C2 error (default: {})", retries_default);
LOG("\t--image-path=VALUE \tdump files base directory");
LOG("\t--image-name=VALUE \tdump files prefix, autogenerated in dump mode if not provided");
LOG("\t--overwrite \toverwrites previously generated dump files");
Expand All @@ -416,19 +425,19 @@ export struct Options
LOG("");
LOG("\t(drive specific)");
LOG("\t--plextor-skip-leadin \tskip dumping lead-in using negative range");
LOG("\t--plextor-leadin-retries=VALUE \tmaximum number of lead-in retries per session (default: {})", plextor_leadin_retries);
LOG("\t--plextor-leadin-retries=VALUE \tmaximum number of lead-in retries per session (default: {})", plextor_leadin_retries_default);
LOG("\t--plextor-leadin-force-store \tstore unverified lead-in");
LOG("\t--kreon-partial-ss \tget minimal security sector (fixes bad firmware)");
LOG("\t--dvd-raw \tdump raw DVD sectors (OmniDrive)");
LOG("\t--bd-raw \tdump raw BD sectors (OmniDrive)");

LOG("\t--mediatek-skip-leadout \tskip extracting lead-out from drive cache");
LOG("\t--mediatek-leadout-retries \tnumber of preceding lead-out sector reads to fill up the cache (default: {})", mediatek_leadout_retries);
LOG("\t--mediatek-leadout-retries \tnumber of preceding lead-out sector reads to fill up the cache (default: {})", mediatek_leadout_retries_default);
LOG("\t--disable-cdtext \tdisable CD-TEXT reading");
LOG("");
LOG("\t(offset)");
LOG("\t--force-offset=VALUE \toverride offset autodetection and use supplied value");
LOG("\t--audio-silence-threshold=VALUE \tmaximum absolute sample value to treat it as silence (default: {})", audio_silence_threshold);
LOG("\t--audio-silence-threshold=VALUE \tmaximum absolute sample value to treat it as silence (default: {})", audio_silence_threshold_default);
LOG("\t--correct-offset-shift \tcorrect disc write offset shift");
LOG("\t--offset-shift-relocate \tdon't merge offset groups with non-matching LBA");
LOG("");
Expand All @@ -437,7 +446,7 @@ export struct Options
LOG("\t--leave-unchanged \tdon't replace erroneous sectors with generated ones");
LOG("\t--force-qtoc \tforce QTOC based track split");
LOG("\t--legacy-subs \treplicate DIC style subchannel based track split");
LOG("\t--skip-fill=VALUE \tfill byte value for skipped sectors (default: 0x{:02X})", skip_fill);
LOG("\t--skip-fill=VALUE \tfill byte value for skipped sectors (default: 0x{:02X})", skip_fill_default);
LOG("\t--filesystem-trim \ttrim data track to filesystem size (ISO9660: all media, UDF: DVD and later)");
LOG("");
LOG("\t(drive test)");
Expand All @@ -461,8 +470,8 @@ export struct Options
LOG("\t--force-flash \tskip drive vendor/model verification when flashing firmware (WARNING: can brick your drive)");
LOG("\t--skip-subcode-desync \tskip storing sectors with mismatching subcode Q absolute MSF");
LOG("\t--rings \tenable filesystem based rings detection");
LOG("\t--cdr-error-threshold=VALUE \tmaximum number of trailing C2 errors allowed on a CD-R (default: {})", cdr_error_threshold);
LOG("\t--scsi-timeout=VALUE \tSCSI command timeout, milliseconds (default: {})", scsi_timeout);
LOG("\t--cdr-error-threshold=VALUE \tmaximum number of trailing C2 errors allowed on a CD-R (default: {})", cdr_error_threshold_default);
LOG("\t--scsi-timeout=VALUE \tSCSI command timeout, milliseconds (default: {})", scsi_timeout_default);
}
};

Expand Down