]> FriiDump Source - friidump.git/blob - README
a983057b0e4656e4747f66236c49ca462793b167
[friidump.git] / README
1 FriiDump - A program to dump Nintendo Wii, GameCube, DVD, and Xbox discs
2 ===============================================================================
3
4 This version adds native Xbox/XGD disc support for selected Xbox optical
5 drives, including the GDR-8050L challenge-table handshake path, the GDR-3120L
6 FF 08 01 vendor lock-state path, redump-style metadata output, optional
7 XISO output, and a convenient forced-DVD mode (`-D` / `--dvd`). See
8 docs/XBOX.md for Xbox-specific details.
9
10 FriiDump 0.5.3.16-pf1 also creates native compatibility evidence reports
11 by default for normal dump invocations using the `friidump-test-result.v1`
12 contract. The default report is written beside the final FriiDump log and
13 derives its filename from that log. `--report-json` overrides the pathname,
14 `--report-dir` overrides the destination directory, and
15 `--firmware-modified <note>` records modified firmware; omission assumes
16 stock firmware. Reports are atomic, preserve exact live drive/firmware
17 identity, and distinguish complete, partial, failed, cancelled, diagnostic,
18 and resumed runs. See `docs/NATIVE_REPORTS.md`.
19
20 FriiDump is a program that lets you dump Nintendo Wii and GameCube disc from
21 your computer, without using original Nintendo hardware. It basically performs
22 the same functions as the famous "RawDump" program, but with a big difference,
23 which should be clear straight from its name: FriiDump is free software, where
24 "free" is to be intended both as in "free speech" and in "free beer". As such,
25 FriiDump is distributed with its sources.
26
27 This leads to a number of good consequences:
28 - Having the sources available, it can be easily ported to different operating
29   systems and hardware platforms. At the moment it is developed under a
30   GNU/Linux system, but it also runs natively on Windows. A MacOS X version can
31   be easily created, although I don't have a Mac, so I can't do it myself.
32 - Also, having the sources and these being well-organized (I know I'm a modest
33   guy) allows support for new DVD-ROM drives to be added relatively easily. At
34   the moment the same drives as RawDump are supported, but this might improve
35   in the future, if anyone takes the effort... See README.technical for
36   details.
37 - The sources might also be used as a reference for several things regarding
38   Nintendo Wii/GameCube discs and the hacks used to read them on an ordinary
39   drive.
40
41 Furthermore, FriiDump also features some functional improvements over RawDump:
42 - FriiDump can use 4 different methods to read the disc, with different
43   performance.
44 - FriiDump dumps a lot of useful information about the discs it dumps,
45   such as whether the disc contains an update or not, which can help avoid
46   bricking your Wii ;).
47 - FriiDump calculates CRC32, MD5, SHA-1, and SHA-256 hashes of dumped
48   discs, so you can immediately know if your dump is good or not, by comparing
49   the hashes with the well-known ones available on several Internet sites.
50 - FriiDump can now verify completed ISO hashes automatically against bundled
51   Redump Logiqx XML DAT files for GameCube, Wii, and Xbox. Verification matches
52   output size, CRC32, MD5, and SHA-1; SHA-256 remains printed as an additional
53   local integrity hash because the supplied Redump DAT entries do not contain it.
54 - FriiDump comes in the form of a library and a command-line front-end, which
55   allows its functions to be easily reused in other programs.
56
57 Unfortunately, there is also a main downfall:
58 - Even the fastest dump method used by FriiDump is not as fast as RawDump (but
59   not that much slower, either, see the table below).
60
61 Anyway, I'm sure that people who cannot use RawDump (i.e.: GNU/Linux, *BSD and
62 MacOS X users) will be happy anyway. Besides, you get the sources, so you can
63 improve them yourself.
64
65 Note that FriiDump is primarily useful for dumping original Nintendo discs,
66 standard DVD-ROM media, and selected Xbox/XGD media through supported or forced
67 drive profiles. To dump ordinary backup copies you can also use a generic DVD
68 dumping program (i.e.: dd under UNIX ;)).
69
70 FriiDump came to existance thanks to the work by a lot of people, most of which
71 are probably not aware of this fact ;). Please see the AUTHORS file for the
72 credits.
73
74
75 ===============================================================================
76 Supported drives
77 ===============================================================================
78 At the moment the same drives as RawDump are supported. This is due to various
79 reasons, explained in the README.technical file, which also contains
80 information about what is needed to add support for more drives.
81
82 Currently supported drives are:
83
84 Nintendo GC/Wii supported-drive list:
85 - Hitachi-LG GDR-8082N, GDR-8083N, GDR-8084N
86 - Hitachi-LG GDR-8161B, GDR-8162B, GDR-8163B, GDR-8164B
87 - Hitachi-LG GCC-4160N, GCC-4240N, GCC-4243N, GCC-4244N, GCC-4247N
88 - Hitachi-LG GDR-8085N, GDR-8087N, and GCC-4246N are listed as probable but
89   untested GC/Wii-capable candidates.
90 - Hitachi-LG GCC-4241N and GCC-4242N are listed as capable but error-prone.
91
92 Additional drive profiles recognized in this branch:
93 - HL-DT-ST GSA-4163B as a Hitachi-LG/GC-Wii experimental profile.
94 - HL-DT-ST GDR-3120L 0046 as an experimental read-only GC/Wii candidate
95   when the HLDS 0xE7 profile is selected; it remains historically an Xbox
96   reference drive until live GC/Wii dumps validate it.
97 - TSSTcorp/Samsung TS-H352C, TS-H353A, SH-D162C, SH-D162D, SH-D163A, and
98   SH-D163B as Samsung/Kreon-style Xbox-capable candidates when firmware
99   supports the FF 08 01 command family.
100
101 Stage5B-promoted HLDS 0xE7 profile metadata recognized in this branch:
102 - GCC-4244N B103: CDB 0x894, gate 0x900386FB,
103   tokens HL;IT;RPC;RPC_JCS3;RPC_SUFFIX; full Sonic Mega Collection
104   GameCube dump validated on a live drive.
105 - GDR-8163B 0B30: CDB 0x5E0, gate 0x90025030,
106   tokens HL;IT;RPC;RPC_JD4_SPACE;RPC_SUFFIX; full Sonic Mega Collection
107   GameCube dump validated on a live drive.
108 - GDR-8163B 0D20: CDB 0x5E0, gate 0x90024AE7,
109   tokens HL;IT;RPC;RPC_JD4_SPACE;RPC_SUFFIX; full Sonic Mega Collection
110   GameCube dump validated on a live drive.
111 - GDR-8163B 0E15: CDB 0x5D8, gate 0x900247D1,
112   tokens HL;IT;RPC;RPC_JD4_SPACE;RPC_SUFFIX; full Sonic Mega Collection
113   GameCube dump validated on a live drive.
114 - GDR-8163B 0L20: CDB 0x5E0, gate 0x90024C8F,
115   tokens HL;IT;RPC;RPC_JD4_SPACE;RPC_SUFFIX; full Sonic Mega Collection
116   GameCube dump validated on a live drive.
117 - GDR-8163B 0L23: CDB 0x5E0, gate 0x90024D5A,
118   tokens HL;IT;RPC;RPC_JD4_SPACE;RPC_SUFFIX; full Sonic Mega Collection
119   GameCube dump validated on a live drive.
120 - GDR-8163B 0L30: CDB 0x5E0, gate 0x90025021,
121   tokens HL;IT;RPC;RPC_JD4_SPACE;RPC_SUFFIX; full Sonic Mega Collection
122   GameCube dump validated on a live drive.
123 - GDR-8163B 0M26: CDB 0x5E0, gate 0x90024FF7,
124   tokens HL;IT;RPC;RPC_JD4_SPACE;RPC_SUFFIX.
125
126 The static CDB/gate values above are firmware-analysis evidence used for
127 profile reporting and confidence. They are not host-side commands and are not
128 used as runtime addresses by FriiDump.
129
130 Xbox/XGD native profiles:
131 - Xbox GDR-8050L (HL-DT-ST/DVD-ROM GDR8050L, challenge-table handshake).
132 - Xbox GDR-3120L (HL-DT-ST/DVD-ROM GDR3120L or GDR-3120L, FF 08 01
133   vendor feature-list and lock-state unlock path).
134
135 HD-DVD and BD dumping are documented as DiscImageCreator reference areas, but
136 FriiDump remains a DVD/GC/Wii/Xbox-focused tool in this branch; no full BD or
137 HD-DVD feature set is claimed here.
138
139 Other drives might work, most likely those based on the Hitachi MN103
140 microcontroller. If you find any of them, please report so that they can be
141 added to the compatibility list.
142
143
144 ===============================================================================
145 Installation
146 ===============================================================================
147 If you are a Windows user, probably you will have downloaded the binaries,
148 either zipped or together with an installer, so the installation should be
149 straightforward.
150
151 If you downloaded the sources, you will need to compile them. FriiDump uses
152 CMake, for easy portability, so you will need to get it from cmake.org. On
153 Windows you will also need a compiler like Visual Studio (the only tested one,
154 so far) or CygWin/MinGW. On UNIX just do the following, from the directory
155 where you unpacked the sources into:
156
157 $ mkdir BUILD
158 $ cd BUILD
159 $ cmake ..
160 $ make
161 $ make install
162
163 Linux-specific note: You need root privileges to issue certain commands to the
164 DVD-ROM drive. Hence you have the following possibilities:
165 - Run FriiDump as root: discouraged.
166 - Run it through sudo: better but nevertheless discouraged.
167 - Set the setuid bit on the executable: this is the recommended way to run
168   FriiDump under Linux. This way, the code run with superuser privileges will
169   be reduced to a minimum, guaranteeing a certain level of security (note that
170   security-related bugs might exist anyway!!!). Also note that, even when the
171   setuid bit is set, the attempt to open the drive for reading will be done
172   after privileges have been dropped, so you will need explicit read access to
173   the DVD-ROM drive. Usually having the system administrator add you to the
174   "cdrom" group is enough. To set the setuid bit on the executable, run as
175   root:
176
177   $ chown root:root /usr/local/bin/friidump
178   $ chmod u+s /usr/local/bin/friidump
179
180
181 ===============================================================================
182 Usage
183 ===============================================================================
184 FriiDump is a command-line program, so you will need to run it from a terminal
185 or a command-prompt under Windows. The basic usage is as follows:
186
187 friidump -d <drive> -a
188
189 A native compatibility report is created automatically for the same run.
190 To place it in a different directory:
191
192 friidump -d <drive> -a --report-dir reports
193
194 For a plain DVD-ROM dump from any readable drive, use `-D` / `--dvd` or the
195 numeric equivalent `-T 3`:
196
197 friidump -d <drive> -D -i dvd.iso
198
199 For Xbox discs, use automatic detection on known Xbox drives or force Xbox mode
200 with `-T 4`. Xbox mode is fail-fast on drives that are not wired into the Xbox
201 unlock backend; it does not fall back to GC/Wii methods. To make a redump-style
202 Original Xbox/XGD1 ISO, use:
203
204 friidump -d <drive> -T 4 -i
205
206 On GDR-8050L, bare `-i` derives `Title[MediaID].iso` from the XBE title and
207 DMI media ID, matching the reference dumper. Use `-i xbox.iso` only when you
208 want to override that filename.
209
210 For Xbox/XGD media, `-i` is not just a game-partition copy. It reconstructs the
211 full redump-style 2048-byte-sector layout: visible DVD-video L0, pregame padding,
212 32-sector game lead-in, unlocked game/XDVDFS data, postgame padding, and visible
213 DVD-video L1. FriiDump also attempts to save `xbox.pfi.bin`, `xbox.dmi.bin`, and
214 `xbox.redump.json` next to the ISO. The redump-style layout constants are
215 checked against DiscImageCreator's Original Xbox/XGD1 model: total size
216 3,820,880 sectors, layer break LBA 1,913,776, DVD start PSN 0x30000, and
217 Xbox/game start PSN 0x60600.
218
219 FriiDump 0.5.3.11 adds a read-only evidence mode for the unresolved synthetic
220 XGD1 ranges:
221
222 ```powershell
223 friidump -d <drive> --xgd1-layout-probe xgd1-layout-probe.json
224 ```
225
226 This mode creates no ISO. On the GDR-8050L challenge-handshake profile it
227 establishes locked/video and unlocked/game states, reads selected boundary LBAs
228 with READ(10) and READ(12), verifies the exact expected capacities, and writes
229 an atomic JSON report containing SCSI status/sense evidence, SHA-1, nullable
230 failed-read classifications, explicit command comparability, and the complete
231 sector data for successful reads. The current pregame padding, postgame padding, and 32-sector
232 game lead-in remain unresolved; probe success must not be represented as an
233 exact Redump image.
234
235 On a GDR-8050L, FriiDump follows the original dumper's state order and timing:
236 primary handshake, media-cycle, re-handshake, RefreshVolume plus full settle
237 delays, metadata/XBE probe, media-cycle back to the visible DVD-video view,
238 video capture, final handshake, game data write, metadata write, and STOP UNIT
239 cleanup.  The 32-sector game lead-in in this path
240 is zero-filled like the original option-1 dumper.
241
242 To dump only the Xbox game partition as an XISO-style image, use:
243
244 friidump -d <drive> -T 4 -X
245
246 On GDR-8050L, bare `-X` derives `Title[MediaID].xiso`; use `-X xbox.xiso` only
247 when you want to override that filename.
248
249 where <drive> will usually be something like "/dev/hda" on Unix-like systems,
250 and something like "e:" for Windows users. With -a, the disc will be dumped
251 to an ISO image file with an automatically-chosen name. Drop -a and use the -i
252 option if you prefer to specify the filename yourself. If you want to resume an
253 existing dump, use -s. Xbox redump-style `-i` does not support resume because
254 the drive view changes from visible DVD-video to unlocked/game during one run. If you
255 want to dump a Nintendo disc to a raw format image file, use -r. Note that you
256 can create a raw and an ISO image at the same time for Nintendo disc types; Xbox
257 redump-style ISO output should be run with `-i` only, and Xbox XISO output (-X)
258 is a separate output mode that cannot be combined with -r, -i, or -a.
259
260 Other options you might want to use are -1 through -4, to set the dump method,
261 although the default is method 4, which is the fastest one, so most likely you
262 will not need them.
263
264 The -A/--allmethods option tries every supported command/method combination. It
265 reopens the drive for each command so vendor-specific memory-dump handlers are
266 rebound before each method is tested. This is useful for experimental drive
267 profiles, but it can be slow and noisy.
268
269 For HLDS 0xE7 testing, `--hlds-profile-report <file>` writes the selected
270 profile, support tier, parser-token family, Stage5B record tag, static CDB/gate
271 evidence, cache base, memory-window count, selected method, and safety note to
272 a JSON file next to the run logs. This is intended for fleet validation and
273 should be included with test-result ZIPs.
274
275 Finally, use -h for a listing of all available options.
276
277
278 ===============================================================================
279 Performance
280 ===============================================================================
281 As stated above, FriiDump is not as fast as RawDump. On my PC (Athlon64 3200+),
282 performance is as follows:
283
284 -------------------------------------------------------------------------------
285 |  Method  |  Dump speed  |  GameCube disc dump time  |  Wii disc dump time   |
286 -------------------------------------------------------------------------------
287 |    1     |  Too slow ;) |          Eternity         |   More than eternity  |
288 |    2     |   ~570 MB/h  |         2.5 hours         |         8 hours       |
289 |    3     |   ~740 MB/h  |          2 hours          |         6 hours       |
290 |    4     |  ~1250 MB/h  |         1.2 hours         |        3.5 hours      |
291 -------------------------------------------------------------------------------
292
293
294 ===============================================================================
295 Support
296 ===============================================================================
297 I'm releasing this program under the nickname of "Arep". This is because I am
298 not sure about the legal status of the program, and I do not want to encounter
299 any consequences. Actually, I'm pretty sure FriiDump goes against the DMCA,
300 being a program that circumvents copy-protection, but it might be objected that
301 the format used by Nintendo discs is not a copy-protection method, but just
302 their own, undocumented, disc format. Although, I think it can be freely used
303 in Europe and other coutries without laws similar to the DMCA.
304
305 For the same reason, I am not putting an e-mail address here (that @no.net you
306 find in the program is obviously a pun), but support will be provided through
307 the forums of the Italian ConsoleTribe forum, at http://wii.console-tribe.com.
308 If you need help, just open a thread in any section there, even in English: I
309 will *not* reply, but you might stand assured I will read everything you write.
310 FriiDump users are encouraged to help each other there ;).
311
312 Patches are welcome, too: just attach them to your post, and maybe put
313 something like "[PATCH]" in the topic subject, so that I can easily spot them.
314
315 New releases will be announced on that forum, and also on QJ.net, if I find a
316 good way to notify them.
317
318 If you want to donate to the project, do not do it, and donate to one of the
319 free Wii modchip projects out there, such as OpenWii, WiiFree or YAOSM.
320
321
322 ===============================================================================
323 Disclaimer
324 ===============================================================================
325 FriiDump is distributed under the GNU General Public License version 2. See the
326 COPYING file for details.
327
328 This program is distributed in the hope that it will be useful, but WITHOUT ANY
329 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
330 PARTICULAR PURPOSE.
331
332 Also, please note that this program is not meant to be used to spread game
333 piracy, but rather to be instrument to make backups of your own precious
334 legally-bought games.
335
336 Windows MSVC32 build shortcut
337 -----------------------------
338
339 A VS Code task file is included for the direct cl.exe build used by this
340 working tree. It uses .vscode\msvc32.cmd to initialize the Visual Studio
341 2019 32-bit compiler environment and then compiles FriiDump directly, without
342 requiring CMake or NMake for the normal Windows test build.
343
344 From VS Code:
345
346     Terminal -> Run Build Task... -> build-friidump-msvc32
347
348 or press Ctrl+Shift+B.
349
350 From PowerShell or cmd:
351
352     .\build_msvc32.cmd
353
354 The build writes friidump.exe to the source root, runs friidump.exe --help, and
355 creates friidump_msvc32_build_results.zip.
356
357 GCC-4243N/GCC-4244N Method 8 split-recovery note
358 --------------------------------------------------
359 For HLDS GCC-4243N and GCC-4244N GameCube/Wii dumping, the default Hitachi command-2 / Method-8 path now has three visible recovery layers: the existing Method-8 5-block/window read reconstruction retry loop, the dump-level retry envelope, and a Method-8 split-recovery path for a failed 16-sector block. The split-recovery path reconstructs the failed block by trying 8-sector, 4-sector, 2-sector, then 1-sector streaming chunks, validates the rebuilt 16-sector raw block with the normal unscrambler/EDC check, and only caches/writes it if validation succeeds. All retry and split-recovery messages are mirrored through the shared FriiDump log file, so a failure such as `Dump failed at sectors: N..N+15` should now include whether 8/4/2/1 chunk recovery was attempted and where it failed. Existing Xbox logging remains on the same shared log path; GDR-3120L Xbox support remains on the explicit vendor lock/unlock path.
360
361 HLDS 0xE7 DIC profile-layer update
362 ------------------------------------
363 This branch now classifies HLDS/MN103 0xE7 GC/Wii dumping drives into DIC-style profiles before assigning the FriiDump Hitachi cache reader.  The selected profile is printed in the run log after Command/Method:
364
365 - Type1: GCC-4160N/GCC-4240N, cache base 0x00a13000, one 16-sector memory window.
366 - Type3: GCC-4243N/GCC-4244N/GCC-4246N/GCC-4247N and GDR8083N/GDR8084N, cache base 0x80000000, five 16-sector memory windows.
367 - Type4: GDR8082N/GDR8161B/GDR8162B/GDR8163B/GDR8164B and related DVD-ROM profiles, cache base 0x80000000, five 16-sector memory windows.
368 - GDR-8050L modified 0xE7 speed-probe/fallback: GDR8050L/GDR-8050L with cross-flashed or modified firmware that adds 0xE7 memdump, cache base 0x80000000. Single-window is proven; this build probes guarded 3-window, 2-window, and 5-window no-prefetch schedules before falling back to the proven one-window Method 8 profile.
369 - Type2_1/Type2_2: GCC-4241N/GCC-4242N are identified as experimental DIC Type2 shapes, but this branch does not yet claim DIC parity for their moving-cache behavior.
370
371 The Type1 base address comes from the DIC source behavior for GCC-4160N/GCC-4240N.  Method 8 now honors the selected profile's memory-window count, so Type1 reads/cache-validates one 16-sector block per request instead of assuming the Type3/Type4 five-window cache layout.  GCC-4243N and GCC-4244N remain on Method 8 by default.  GDR-8050L is split into a modified-firmware GC/Wii 0xE7 path: stock GDR-8050L firmware is still expected to use the Xbox path only, while a cross-flashed/modified GDR-8050L with 0xE7 memdump added can use Method 8.  The proven GDR-8050L fallback is one window/no-prefetch; this build probes guarded multi-window no-prefetch speed profiles and reverts to the proven single-window path if an accelerated read fails.  GDR-3120L Xbox ripping support remains on the separate explicit vendor lock/unlock path and is not described as GC/Wii support.
372
373
374
375 2026-06-29 / HLDS 0xE7 Windows volume guard
376 ---------------------------------------------
377
378 * The existing Xbox FSCTL_LOCK_VOLUME-style guard is now exposed as a shared
379   FriiDump volume lock helper.
380 * HLDS 0xE7 GC/Wii paths apply the guard before disc seed retrieval, so Windows
381   Explorer/AutoPlay is less likely to interrupt GCC-4160N/GCC-4240N Type1 seed
382   reads with an "insert a disc" prompt.
383 * The guard is warning-only: if Windows already owns a transient handle, FriiDump
384   logs the failure and continues so the hardware read result remains authoritative.
385
386
387 2026-06-29 / HLDS 0xE7 AutoPlay warning
388 ------------------------------------------------
389
390 * Added an explicit Windows AutoPlay warning before the HLDS 0xE7 GC/Wii
391   volume-lock and seed-retrieval phase.
392 * GCC-4160N Type1 testing showed the volume lock works, but Windows AutoPlay
393   can still open an "insert a disc" dialog and interfere until AutoPlay is
394   disabled and File Explorer/dialogs are closed.
395 * The warning is printed for all non-Xbox HLDS 0xE7 GC/Wii profiles before
396   FriiDump attempts the shared volume guard.
397
398
399 HLDS 0xE7 validation summary and observed speeds
400 --------------------------------------------------
401
402 For HLDS 0xE7 GC/Wii runs, FriiDump now prints a compact validation summary at the end of the run.  The summary records the selected profile, cache base, memory-window count, seed-read status, seed-retrieval elapsed time, dump status, STOP UNIT status, duration, and an observed average speed computed from the ISO payload size and elapsed dump time.  Completed ISO outputs are also checked automatically against the canonical Redump DAT for the selected disc type unless `--no-redump-verify` is used.
403
404 Seed retrieval timing note: normal GC/Wii seed cracking is usually a seconds-to-tens-of-seconds step, with the original technical note describing the brute-force portion as roughly 30 seconds on the old reference path.  Experimental HLDS 0xE7 profiles can take longer because this fork may also probe cache profiles and guard against Windows polling.  This build does not add a hard seed timeout because aborting a blocked optical-drive command from inside FriiDump is less safe than letting Windows/drive firmware return or letting the user cancel with Ctrl+C.  As an operational rule, a seed phase above about 5 minutes is suspicious, and above about 10-15 minutes should usually be treated as a failed profile/drive state: cancel, confirm AutoPlay/File Explorer are closed, power-cycle or tray-cycle the drive if needed, and rerun with the log preserved.
405
406 Observed Sonic Mega Collection (US) fleet results so far:
407
408 | Model | Firmware | HLDS profile | Cache base | Windows | Result | FriiDump final displayed rate | Duration | Notes |
409 | --- | --- | --- | --- | --- | --- | --- | --- | --- |
410 | GCC-4244N | B103 | promoted GCC_424x profile | 0x80000000 | 5 | PASS | 2152.04 MiB/h | 2329.16 s | Live INQUIRY `GCC4244/B103`; exact profile; media preflight, seed read, full Sonic dump, STOP UNIT, and Redump hashes confirmed. |
411 | GCC-4244 | B101 | Type3 legacy fallback | 0x80000000 | 5 | PASS | 2156.33 MiB/h | 2324.52 s | Live INQUIRY `GCC4244/B101`; exact parser metadata remains pending analyzer results; Sonic Mega Collection and Super Smash Bros. Melee Rev 2 both completed with exact automatic Redump verification. |
412 | GCC-4243N | A102 | Type3 | 0x80000000 | 5 | PASS | 2534.09 MB/h | 1522.95 s | Confirmed matching Sonic hashes after resume/retry work. |
413 | GCC-4160N | 0010 | Type1 | 0x00a13000 | 1 | PASS | 1613.08 MB/h | 3127.98 s | AutoPlay had to be disabled; volume guard OK; hashes matched known-good Sonic dump. |
414 | GDR-8050L modified | 0012 | GDR-8050L modified 0xE7 single-window proven fallback | 0x80000000 | 1 | PASS | 776.49 MiB/h / 782.59 MB/h | 6455.22 s | Cross-flashed/modified firmware with 0xE7 memdump; hashes matched Sonic. Current build adds guarded speed probes. |
415 | GDR-8163B | 0L30 | Type4 / promoted GDR_816x profile | 0x80000000 | 5 | PASS | 678.55 MiB/h | 7387.03 s | Germany-batch drive with case label 0L23 but inquiry 0L30; full Sonic dump validated; Stage5B parser signature recovered at CDB 0x5E0 / gate 0x90025021. |
416
417 Known-good Sonic Mega Collection (US) target hashes:
418
419 ```
420 CRC32   01b52739
421 MD5     85a525df1481d0ad67d8761f832dca12
422 SHA-1   06eb6d15b4d7f90ec0fed9ce9a77db41358d74ed
423 SHA-256 30098da93f5de9ece8da44f8afdfb85cf9bcdc24d77131221e64e3038a529010
424 ```
425
426 Use this table as an observed fleet log, not a promise that every firmware revision of a model behaves identically.
427
428
429 HLDS GDR-8050L modified 0xE7 note (2026-06-30):
430   A cross-flashed GDR-8163B running modified GDR-8050L firmware with 0xE7 memdump added reached seed retrieval and dumped the first 320 sectors, then failed at sectors 320..335 when treated as a normal five-window Type4 cache. A later single-window/no-prefetch run completed Sonic Mega Collection and matched the known hashes at roughly 776.49 MiB/h / 782.59 MB/h. This build keeps that single-window path as the proven fallback, but adds a speed probe before seed cracking: 3-window no-prefetch, 2-window no-prefetch, 5-window guarded no-prefetch, then fallback to one window. If an accelerated GDR-8050L profile later fails during a dump, FriiDump logs the failure and reverts to the proven one-window profile for the rest of the run. Stock GDR-8050L remains an Xbox path, not a GC/Wii memdump drive.
431
432
433 GDR-8081N experimental 0xE7 probe layer
434 -----------------------------------------
435 GDR-8081N is now recognized as an experimental HLDS 0xE7 GC/Wii candidate.
436 Unlike GDR8082N/GDR816x, it was not in the confirmed DIC dump list, so FriiDump
437 does not hard-code it as a normal Type4 drive.  It starts as `GDR-8081N
438 experimental 0xE7 probe` and, during seed retrieval, tries small sector-0
439 validation reads across these cache profiles:
440
441 - Probe A Type4-derived: base 0x80000000, 5 windows.
442 - Probe B single-window: base 0x80000000, 1 window.
443 - Probe C Type1-base: base 0x00a13000, 1 window.
444 - Probe D moving-cache candidate: base 0x7fff7f00, 1 window.
445
446 The first candidate that can read/validate sector 0 is selected for the rest of
447 the run and logged.  If all candidates fail, seed retrieval stops and the log
448 records each failed probe.  Unsupported/non-HLDS drives now keep zeroed HLDS
449 profile fields so stale cache-base/window values are not printed.
450
451 GDR-8050L speed-probe visibility note:
452   Builds after the seed-timer package report the modified GDR-8050L as `speed-probe pending` at initial drive-info time, then print each guarded candidate during seed retrieval. If all accelerated candidates fail, the run visibly selects the proven single-window fallback.
453
454 Probe v2 note:
455   The GDR-8050L speed-probe-pending profile now defaults to Method 8, so the probe branch is actually exercised by default. Seed cracking now fails the run if the experimental 0xE7 profile probe cannot validate a cache candidate, instead of continuing after an unsupported/failed probe. The first visible probe message starts on a fresh line after the seed-retrieval prompt for easier log review.
456
457 HLDS 0xE7 logging note: GDR-8050L modified-0xE7 read schedule selection is logged once per run/profile selection, not once per read chunk, to keep long dump logs readable.
458
459
460 FriiDump HLDS 0xE7 probe-v2 log-once cleanup
461 ------------------------------------------------
462 The GDR-8050L modified 0xE7 selected schedule is now reported by the profile probe only. The per-read Method 8 path no longer prints the schedule line for every 16-sector chunk.
463
464 ### Experimental HLDS 0xE7 scan mode
465
466 For drives such as GDR-8081N where the HIT 0xE7 command surface appears plausible but the cache base is not known, use scan mode before attempting a full dump:
467
468 ```powershell
469 .\friidump.exe -d f: --hlds-e7-scan -T 0 --scan-log "gdr8081n_e7_scan.json"
470
471 $zip = "friidump_gdr8081n_e7_scan_results.zip"
472 if (Test-Path $zip) { Remove-Item $zip -Force }
473 Compress-Archive -Path .\gdr8081n_e7_scan.json,.\friidump.log -DestinationPath $zip -Force
474 ```
475
476 This mode writes a JSON report and stops; it does not crack seeds or dump the disc.
477
478 FriiDump 0.5.3.4 HLDS media-preflight correction
479 ----------------------------------------
480
481 This build corrects the media-ready preflight before GameCube/Wii/Xbox disc initialization and seed retrieval. FriiDump now treats non-GOOD SCSI status as failure even when the Windows pass-through ioctl itself succeeds, then requires both TEST UNIT READY and a valid READ CAPACITY(10) result before vendor seed/cache commands are allowed. This covers optical drives and USB bridges that report TEST UNIT READY=GOOD with an empty tray.
482
483 The live SCSI INQUIRY identity `HL-DT-ST CDRW/DVD GCC4244 B103` is normalized to the promoted GCC-4244N B103 Stage5B profile (CDB evidence 0x894, gate evidence 0x900386FB). Static firmware addresses remain reporting evidence only and are never emitted as host-side write/update commands.
484
485 See `docs/reports/FRIIDUMP_HLDS_LIVE_VALIDATION_0.5.3.5.md` for the real-hardware validation matrix and reference hashes.
486
487
488 FriiDump 0.5.3.5 GCC-4244N B103 live validation
489 ------------------------------------------------
490
491 The live SCSI INQUIRY identity `HL-DT-ST CDRW/DVD GCC4244 B103` is now marked `known_supported_profile_hardening_live_validated`. Using the exact promoted JCS3 parser profile (CDB evidence `0x894`, gate evidence `0x900386FB`), FriiDump completed Sonic Mega Collection (US) with media preflight OK, seed retrieval in 4 seconds, full dump OK, STOP UNIT OK, and hashes matching the Redump reference. The observed average was `2152.04 MiB/h` over `1392.34 MiB`, with a total duration of `2329.16` seconds.
492
493 See `docs/reports/FRIIDUMP_HLDS_LIVE_VALIDATION_0.5.3.5.md` for the consolidated validation matrix.
494
495
496 ===============================================================================
497 Automatic Redump DAT verification and evidence report
498 ===============================================================================
499
500 FriiDump 0.5.3.10 adds a state-aware GDR-8050L metadata-entry flow. The
501 bridge reads entry capacity first. An already-unlocked game view skips the
502 redundant initial handshake and tray cycle; a locked/video view receives one
503 direct full handshake with READ CAPACITY verification. A tray-cycle retry is
504 retained only as an explicitly logged recovery path. The later media transition
505 that restores the locked/video view for VIDEO-L0/VIDEO-L1 capture remains, as
506 does the final handshake for game/XDVDFS data.
507
508 FriiDump 0.5.3.9 also closes the Xbox live-summary boundary: the copied GDR-8050L path now returns title, media ID, finalized output sectors, and elapsed evidence to the final validation summary, and final STOP UNIT ownership is singular.
509
510 FriiDump checks each successfully completed ISO against the canonical Redump
511 DAT selected for the detected or forced disc type. Verification begins only
512 after CRC32, MD5, SHA-1, and SHA-256 have been finalized.
513
514 Stable DAT paths:
515
516 - `redump_dat/Nintendo - GameCube.dat`
517 - `redump_dat/Nintendo - Wii.dat`
518 - `redump_dat/Microsoft - Xbox.dat`
519
520 The verifier is active for GameCube/Wii ISO dumps and for full-disc Xbox ISO
521 outputs. On Windows, the copied GDR-8050L reference-dumper bridge now returns its
522 actual finalized output path, byte count, CRC32, MD5, SHA-1, and SHA-256 to the
523 shared verifier. FriiDump therefore reuses the reference path's existing
524 full-file hash pass rather than reading the 7.29 GiB image a second time.
525
526 Xbox `-X` output remains intentionally excluded: an XISO is a game-partition
527 representation, not a full Redump disc image.
528
529 An exact archive verification requires all four Redump identity fields to agree
530 with one DAT entry:
531
532 - output byte size
533 - CRC32
534 - MD5
535 - SHA-1
536
537 SHA-256 is retained as local integrity evidence in the JSON report even though
538 the supplied Logiqx DAT records do not contain SHA-256.
539
540 The console now presents the evidence directly:
541
542 ```text
543 Redump verification
544 ------------------------------------------------------------
545 DAT                  redump_dat/Nintendo - GameCube.dat
546 Entries scanned      2019
547 Matched entry        Sonic Mega Collection (USA)
548 ROM                  Sonic Mega Collection (USA).iso
549 Image size           PASS
550 CRC32                PASS
551 MD5                  PASS
552 SHA-1                PASS
553 Overall              VERIFIED AGAINST REDUMP
554 Confidence           Exact archive match
555 ```
556
557 For a non-match, FriiDump shows the closest candidate only when at least one
558 hash correlates. It then prints PASS/FAIL for size, CRC32, MD5, and SHA-1. When
559 no hash-correlated candidate exists, it reports aggregate per-field match counts
560 instead of presenting an arbitrary same-size disc as meaningful evidence.
561
562 `--redump-report <file>` writes schema-2 JSON containing the observed hashes,
563 SHA-256, hash source, representation note, expected DAT fields, per-field
564 PASS/FAIL evidence, match counts, overall conclusion, and confidence statement. The report is written to
565 `<file>.tmp`, flushed and synchronized, closed, and then atomically replaces the
566 final path. A failed write never exposes a partial final JSON document and does
567 not overwrite a previous complete report.
568
569 The JSON writer uses unlogged file output. Report contents therefore remain in
570 the JSON artifact and are no longer mirrored into the human-readable run log as
571 an incomplete object with missing string values.
572
573 For the GDR-8050L/cross-flashed GDR-8163B full-ISO path, the report identifies
574 `GDR-8050L reference finalized full-file hashes` as the hash source. FriiDump
575 also records that XGD1 acquisition success and exact Redump hash identity are
576 separate claims. The current reconstruction contains unresolved zero-filled pregame and
577 postgame spans, so a clean physical read can legitimately produce
578 `NO EXACT MATCH`. That result must not be promoted to archive identity.
579
580 Options:
581
582 - `--redump-dat-dir <dir>` explicitly selects a directory containing the
583   three stable DAT filenames above. Without it, FriiDump checks `redump_dat`
584   beside the executable and then under the current working directory.
585 - `--redump-report <file>` writes the atomic machine-readable evidence report.
586 - `--no-redump-verify` disables DAT lookup for a run.
587 - `--nohash` also prevents DAT verification because the required hashes are not
588   calculated.
589 - `--xgd1-layout-probe <file>` is a separate read-only Windows diagnostic for
590   the GDR-8050L challenge-handshake profile. It cannot be combined with image
591   output, conversion, all-methods, or HLDS 0xE7 probe options.
592
593 Example:
594
595 ```powershell
596 .\friidump.exe `
597   -d E: `
598   -T 0 `
599   -8 `
600   -s `
601   -i "sonic.iso" `
602   --redump-report "docs\debug\sonic.redump.json"
603 ```
604
605 The DAT files are data inputs, not compiled into the executable. Replace the
606 three files in the executable-relative `redump_dat` directory with newer Redump
607 exports while keeping the stable filenames, or point `--redump-dat-dir` at an
608 alternate set. The current-working-directory lookup is retained as a fallback
609 for source-tree and legacy workflows.
610
611 FriiDump 0.5.3.12 adds a second read-only XGD1 evidence mode for the user's
612 modified GDR-8050L firmware:
613
614   --xgd1-raw-id-probe <report.json>
615
616 The probe establishes the locked/video and unlocked/game views, performs
617 controlled 16-sector READ(12) cache fills, then uses the accepted HIT 0xE7
618 memdump command at cache base 0x80000000 to capture the selected 2064-byte raw
619 sector. The report records the raw ID field and decodes its 24-bit physical
620 sector number. This is intended to test logical-to-physical geometry; it does
621 not read inaccessible filler sectors, does not modify the current XGD1 image
622 layout, and requires the modified 0xE7 firmware profile.
623
624 The 0.5.3.11 live logical probe found 17 successful READ(10)/READ(12) pairs,
625 all byte-identical. Both active capacities rejected the sampled out-of-range
626 LBAs with 05/21/00. Therefore ordinary logical reads do not supply the current
627 synthetic pregame/postgame filler bytes.
628
629 FriiDump 0.5.3.13 corrects the raw-ID probe after the first live v68 run
630 showed that arbitrary request LBAs could leave cache base 0x80000000 pointing
631 at an earlier or block-start window. The corrected probe aligns every request
632 to a 16-sector block, issues the proven zero-transfer READ(12) cache flush,
633 and dumps only the target slot's 12-byte header and four-byte EDC. It validates
634 layer bits and raw/normalized PSNs against the current full-output geometry.
635 Raw-cache user-data equality is no longer treated as evidence because Method 8
636 reconstructs that field from READ(12) data before unscrambling. Geometry may be
637 resolved by a complete match; inaccessible filler bytes remain unresolved.
638
639 FriiDump 0.5.3.14 drive-captured XGD1 game lead-in
640 ----------------------------------------------------
641
642 The 0.5.3.13 live cache-aligned raw-ID run matched all 13 selected locked/video
643 and unlocked/game samples. It proved that unlocked source LBA 0..31 occupies
644 full-output LBA 198144..198175 and immediately precedes the XDVDFS header at
645 unlocked source LBA 32. FriiDump therefore no longer synthesizes the 32-sector
646 game lead-in for the GDR-8050L redump-style path.
647
648 The reference Xbox path now reads unlocked source LBA 0..31 strictly before
649 copying source LBA 32..3431263. The native libfriidump path uses the same source
650 mapping and retains per-sector zero-fill only as an explicitly counted fallback
651 for a genuinely unreadable lead-in sector. Pregame and postgame physical
652 locations are resolved, but their inaccessible content remains zero-filled and
653 must not be described as exact without independent evidence.
654
655
656 FriiDump 0.5.3.15 release cleanup
657 -----------------------------------
658
659 The 0.5.3.15 release candidate consolidates the XGD1 investigation into a
660 repository-ready tree. Local build logs, runner transcripts, package rehearsals,
661 duplicate stdout/stderr captures, and full logical-sector byte dumps are not
662 retained as source authority. Compact evidence is stored under
663 `docs/evidence/xgd1`.
664
665 Automatic DAT discovery is now executable-relative first, with the historical
666 current-working-directory lookup retained as a fallback. An explicit
667 `--redump-dat-dir` remains authoritative.
668
669 The reference and native full-output mappings remain those validated in
670 0.5.3.14. No XGD1 output bytes changed in this cleanup.