]> FriiDump Source - friidump.git/blob - README
Document exact-release Linux hardware validation
[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: Run FriiDump as a normal user. Do not run it with `sudo`,
164 and do not install it setuid-root.
165
166 Linux vendor-command paths need two separate permissions:
167
168 - The normal user needs access to the selected `/dev/sr*` device and, when
169   applicable, its `/dev/sg*` device. On Ubuntu, membership in the `cdrom` group
170   normally provides this access.
171 - GameCube/Wii memory-dump methods and Xbox vendor-unlock paths need effective
172   `CAP_SYS_RAWIO` on the exact validated FriiDump executable.
173
174 After you verify the executable, use the maintained helper:
175
176   $ bash ./validation/friidump-linux-rawio-capability.sh install \
177       ./build/src/friidump
178   $ getcap ./build/src/friidump
179
180 Rebuilding, relinking, copying, replacing, or re-extracting the executable can
181 clear its file capability. Verify `cap_sys_rawio=ep` before each
182 vendor-command hardware run. See `docs/LINUX.md` for the complete Linux
183 permission and hardware procedure.
184
185 ===============================================================================
186 Usage
187 ===============================================================================
188 FriiDump is a command-line program, so you will need to run it from a terminal
189 or a command-prompt under Windows. The basic usage is as follows:
190
191 friidump -d <drive> -a
192
193 A native compatibility report is created automatically for the same run.
194 To place it in a different directory:
195
196 friidump -d <drive> -a --report-dir reports
197
198 For a plain DVD-ROM dump from any readable drive, use `-D` / `--dvd` or the
199 numeric equivalent `-T 3`:
200
201 friidump -d <drive> -D -i dvd.iso
202
203 For Xbox discs, use automatic detection on known Xbox drives or force Xbox mode
204 with `-T 4`. Xbox mode is fail-fast on drives that are not wired into the Xbox
205 unlock backend; it does not fall back to GC/Wii methods. To make a redump-style
206 Original Xbox/XGD1 ISO, use:
207
208 friidump -d <drive> -T 4 -i
209
210 On GDR-8050L, bare `-i` derives `Title[MediaID].iso` from the XBE title and
211 DMI media ID, matching the reference dumper. Use `-i xbox.iso` only when you
212 want to override that filename.
213
214 For Xbox/XGD media, `-i` is not just a game-partition copy. It reconstructs the
215 full redump-style 2048-byte-sector layout: visible DVD-video L0, pregame padding,
216 32-sector game lead-in, unlocked game/XDVDFS data, postgame padding, and visible
217 DVD-video L1. FriiDump also attempts to save `xbox.pfi.bin`, `xbox.dmi.bin`, and
218 `xbox.redump.json` next to the ISO. The redump-style layout constants are
219 checked against DiscImageCreator's Original Xbox/XGD1 model: total size
220 3,820,880 sectors, layer break LBA 1,913,776, DVD start PSN 0x30000, and
221 Xbox/game start PSN 0x60600.
222
223 FriiDump 0.5.3.11 adds a read-only evidence mode for the unresolved synthetic
224 XGD1 ranges:
225
226 ```powershell
227 friidump -d <drive> --xgd1-layout-probe xgd1-layout-probe.json
228 ```
229
230 This mode creates no ISO. On the GDR-8050L challenge-handshake profile it
231 establishes locked/video and unlocked/game states, reads selected boundary LBAs
232 with READ(10) and READ(12), verifies the exact expected capacities, and writes
233 an atomic JSON report containing SCSI status/sense evidence, SHA-1, nullable
234 failed-read classifications, explicit command comparability, and the complete
235 sector data for successful reads. The current pregame padding, postgame padding, and 32-sector
236 game lead-in remain unresolved; probe success must not be represented as an
237 exact Redump image.
238
239 On a GDR-8050L, FriiDump follows the original dumper's state order and timing:
240 primary handshake, media-cycle, re-handshake, RefreshVolume plus full settle
241 delays, metadata/XBE probe, media-cycle back to the visible DVD-video view,
242 video capture, final handshake, game data write, metadata write, and STOP UNIT
243 cleanup.  The 32-sector game lead-in in this path
244 is zero-filled like the original option-1 dumper.
245
246 To dump only the Xbox game partition as an XISO-style image, use:
247
248 friidump -d <drive> -T 4 -X
249
250 On GDR-8050L, bare `-X` derives `Title[MediaID].xiso`; use `-X xbox.xiso` only
251 when you want to override that filename.
252
253 where <drive> will usually be something like "/dev/hda" on Unix-like systems,
254 and something like "e:" for Windows users. With -a, the disc will be dumped
255 to an ISO image file with an automatically-chosen name. Drop -a and use the -i
256 option if you prefer to specify the filename yourself. If you want to resume an
257 existing dump, use -s. Xbox redump-style `-i` does not support resume because
258 the drive view changes from visible DVD-video to unlocked/game during one run. If you
259 want to dump a Nintendo disc to a raw format image file, use -r. Note that you
260 can create a raw and an ISO image at the same time for Nintendo disc types; Xbox
261 redump-style ISO output should be run with `-i` only, and Xbox XISO output (-X)
262 is a separate output mode that cannot be combined with -r, -i, or -a.
263
264 Other options you might want to use are -1 through -4, to set the dump method,
265 although the default is method 4, which is the fastest one, so most likely you
266 will not need them.
267
268 The -A/--allmethods option tries every supported command/method combination. It
269 reopens the drive for each command so vendor-specific memory-dump handlers are
270 rebound before each method is tested. This is useful for experimental drive
271 profiles, but it can be slow and noisy.
272
273 For HLDS 0xE7 testing, `--hlds-profile-report <file>` writes the selected
274 profile, support tier, parser-token family, Stage5B record tag, static CDB/gate
275 evidence, cache base, memory-window count, selected method, and safety note to
276 a JSON file next to the run logs. This is intended for fleet validation and
277 should be included with test-result ZIPs.
278
279 Finally, use -h for a listing of all available options.
280
281
282 ===============================================================================
283 Performance
284 ===============================================================================
285 As stated above, FriiDump is not as fast as RawDump. On my PC (Athlon64 3200+),
286 performance is as follows:
287
288 -------------------------------------------------------------------------------
289 |  Method  |  Dump speed  |  GameCube disc dump time  |  Wii disc dump time   |
290 -------------------------------------------------------------------------------
291 |    1     |  Too slow ;) |          Eternity         |   More than eternity  |
292 |    2     |   ~570 MB/h  |         2.5 hours         |         8 hours       |
293 |    3     |   ~740 MB/h  |          2 hours          |         6 hours       |
294 |    4     |  ~1250 MB/h  |         1.2 hours         |        3.5 hours      |
295 -------------------------------------------------------------------------------
296
297
298 ===============================================================================
299 Support
300 ===============================================================================
301 I'm releasing this program under the nickname of "Arep". This is because I am
302 not sure about the legal status of the program, and I do not want to encounter
303 any consequences. Actually, I'm pretty sure FriiDump goes against the DMCA,
304 being a program that circumvents copy-protection, but it might be objected that
305 the format used by Nintendo discs is not a copy-protection method, but just
306 their own, undocumented, disc format. Although, I think it can be freely used
307 in Europe and other coutries without laws similar to the DMCA.
308
309 For the same reason, I am not putting an e-mail address here (that @no.net you
310 find in the program is obviously a pun), but support will be provided through
311 the forums of the Italian ConsoleTribe forum, at http://wii.console-tribe.com.
312 If you need help, just open a thread in any section there, even in English: I
313 will *not* reply, but you might stand assured I will read everything you write.
314 FriiDump users are encouraged to help each other there ;).
315
316 Patches are welcome, too: just attach them to your post, and maybe put
317 something like "[PATCH]" in the topic subject, so that I can easily spot them.
318
319 New releases will be announced on that forum, and also on QJ.net, if I find a
320 good way to notify them.
321
322 If you want to donate to the project, do not do it, and donate to one of the
323 free Wii modchip projects out there, such as OpenWii, WiiFree or YAOSM.
324
325
326 ===============================================================================
327 Disclaimer
328 ===============================================================================
329 FriiDump is distributed under the GNU General Public License version 2. See the
330 COPYING file for details.
331
332 This program is distributed in the hope that it will be useful, but WITHOUT ANY
333 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
334 PARTICULAR PURPOSE.
335
336 Also, please note that this program is not meant to be used to spread game
337 piracy, but rather to be instrument to make backups of your own precious
338 legally-bought games.
339
340 Windows MSVC32 build shortcut
341 -----------------------------
342
343 A VS Code task file is included for the direct cl.exe build used by this
344 working tree. It uses .vscode\msvc32.cmd to initialize the Visual Studio
345 2019 32-bit compiler environment and then compiles FriiDump directly, without
346 requiring CMake or NMake for the normal Windows test build.
347
348 From VS Code:
349
350     Terminal -> Run Build Task... -> build-friidump-msvc32
351
352 or press Ctrl+Shift+B.
353
354 From PowerShell or cmd:
355
356     .\build_msvc32.cmd
357
358 The build writes friidump.exe to the source root, runs friidump.exe --help, and
359 creates friidump_msvc32_build_results.zip.
360
361 GCC-4243N/GCC-4244N Method 8 split-recovery note
362 --------------------------------------------------
363 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.
364
365 HLDS 0xE7 DIC profile-layer update
366 ------------------------------------
367 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:
368
369 - Type1: GCC-4160N/GCC-4240N, cache base 0x00a13000, one 16-sector memory window.
370 - Type3: GCC-4243N/GCC-4244N/GCC-4246N/GCC-4247N and GDR8083N/GDR8084N, cache base 0x80000000, five 16-sector memory windows.
371 - Type4: GDR8082N/GDR8161B/GDR8162B/GDR8163B/GDR8164B and related DVD-ROM profiles, cache base 0x80000000, five 16-sector memory windows.
372 - 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.
373 - 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.
374
375 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.
376
377
378
379 2026-06-29 / HLDS 0xE7 Windows volume guard
380 ---------------------------------------------
381
382 * The existing Xbox FSCTL_LOCK_VOLUME-style guard is now exposed as a shared
383   FriiDump volume lock helper.
384 * HLDS 0xE7 GC/Wii paths apply the guard before disc seed retrieval, so Windows
385   Explorer/AutoPlay is less likely to interrupt GCC-4160N/GCC-4240N Type1 seed
386   reads with an "insert a disc" prompt.
387 * The guard is warning-only: if Windows already owns a transient handle, FriiDump
388   logs the failure and continues so the hardware read result remains authoritative.
389
390
391 2026-06-29 / HLDS 0xE7 AutoPlay warning
392 ------------------------------------------------
393
394 * Added an explicit Windows AutoPlay warning before the HLDS 0xE7 GC/Wii
395   volume-lock and seed-retrieval phase.
396 * GCC-4160N Type1 testing showed the volume lock works, but Windows AutoPlay
397   can still open an "insert a disc" dialog and interfere until AutoPlay is
398   disabled and File Explorer/dialogs are closed.
399 * The warning is printed for all non-Xbox HLDS 0xE7 GC/Wii profiles before
400   FriiDump attempts the shared volume guard.
401
402
403 HLDS 0xE7 validation summary and observed speeds
404 --------------------------------------------------
405
406 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.
407
408 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.
409
410 Observed Sonic Mega Collection (US) fleet results so far:
411
412 | Model | Firmware | HLDS profile | Cache base | Windows | Result | FriiDump final displayed rate | Duration | Notes |
413 | --- | --- | --- | --- | --- | --- | --- | --- | --- |
414 | 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. |
415 | 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. |
416 | GCC-4243N | A102 | Type3 | 0x80000000 | 5 | PASS | 2534.09 MB/h | 1522.95 s | Confirmed matching Sonic hashes after resume/retry work. |
417 | 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. |
418 | 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. |
419 | 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. |
420
421 Known-good Sonic Mega Collection (US) target hashes:
422
423 ```
424 CRC32   01b52739
425 MD5     85a525df1481d0ad67d8761f832dca12
426 SHA-1   06eb6d15b4d7f90ec0fed9ce9a77db41358d74ed
427 SHA-256 30098da93f5de9ece8da44f8afdfb85cf9bcdc24d77131221e64e3038a529010
428 ```
429
430 Use this table as an observed fleet log, not a promise that every firmware revision of a model behaves identically.
431
432
433 HLDS GDR-8050L modified 0xE7 note (2026-06-30):
434   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.
435
436
437 GDR-8081N experimental 0xE7 probe layer
438 -----------------------------------------
439 GDR-8081N is now recognized as an experimental HLDS 0xE7 GC/Wii candidate.
440 Unlike GDR8082N/GDR816x, it was not in the confirmed DIC dump list, so FriiDump
441 does not hard-code it as a normal Type4 drive.  It starts as `GDR-8081N
442 experimental 0xE7 probe` and, during seed retrieval, tries small sector-0
443 validation reads across these cache profiles:
444
445 - Probe A Type4-derived: base 0x80000000, 5 windows.
446 - Probe B single-window: base 0x80000000, 1 window.
447 - Probe C Type1-base: base 0x00a13000, 1 window.
448 - Probe D moving-cache candidate: base 0x7fff7f00, 1 window.
449
450 The first candidate that can read/validate sector 0 is selected for the rest of
451 the run and logged.  If all candidates fail, seed retrieval stops and the log
452 records each failed probe.  Unsupported/non-HLDS drives now keep zeroed HLDS
453 profile fields so stale cache-base/window values are not printed.
454
455 GDR-8050L speed-probe visibility note:
456   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.
457
458 Probe v2 note:
459   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.
460
461 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.
462
463
464 FriiDump HLDS 0xE7 probe-v2 log-once cleanup
465 ------------------------------------------------
466 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.
467
468 ### Experimental HLDS 0xE7 scan mode
469
470 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:
471
472 ```powershell
473 .\friidump.exe -d f: --hlds-e7-scan -T 0 --scan-log "gdr8081n_e7_scan.json"
474
475 $zip = "friidump_gdr8081n_e7_scan_results.zip"
476 if (Test-Path $zip) { Remove-Item $zip -Force }
477 Compress-Archive -Path .\gdr8081n_e7_scan.json,.\friidump.log -DestinationPath $zip -Force
478 ```
479
480 This mode writes a JSON report and stops; it does not crack seeds or dump the disc.
481
482 FriiDump 0.5.3.4 HLDS media-preflight correction
483 ----------------------------------------
484
485 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.
486
487 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.
488
489 See `docs/reports/FRIIDUMP_HLDS_LIVE_VALIDATION_0.5.3.5.md` for the real-hardware validation matrix and reference hashes.
490
491
492 FriiDump 0.5.3.5 GCC-4244N B103 live validation
493 ------------------------------------------------
494
495 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.
496
497 See `docs/reports/FRIIDUMP_HLDS_LIVE_VALIDATION_0.5.3.5.md` for the consolidated validation matrix.
498
499
500 ===============================================================================
501 Automatic Redump DAT verification and evidence report
502 ===============================================================================
503
504 FriiDump 0.5.3.10 adds a state-aware GDR-8050L metadata-entry flow. The
505 bridge reads entry capacity first. An already-unlocked game view skips the
506 redundant initial handshake and tray cycle; a locked/video view receives one
507 direct full handshake with READ CAPACITY verification. A tray-cycle retry is
508 retained only as an explicitly logged recovery path. The later media transition
509 that restores the locked/video view for VIDEO-L0/VIDEO-L1 capture remains, as
510 does the final handshake for game/XDVDFS data.
511
512 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.
513
514 FriiDump checks each successfully completed ISO against the canonical Redump
515 DAT selected for the detected or forced disc type. Verification begins only
516 after CRC32, MD5, SHA-1, and SHA-256 have been finalized.
517
518 Stable DAT paths:
519
520 - `redump_dat/Nintendo - GameCube.dat`
521 - `redump_dat/Nintendo - Wii.dat`
522 - `redump_dat/Microsoft - Xbox.dat`
523
524 The verifier is active for GameCube/Wii ISO dumps and for full-disc Xbox ISO
525 outputs. On Windows, the copied GDR-8050L reference-dumper bridge now returns its
526 actual finalized output path, byte count, CRC32, MD5, SHA-1, and SHA-256 to the
527 shared verifier. FriiDump therefore reuses the reference path's existing
528 full-file hash pass rather than reading the 7.29 GiB image a second time.
529
530 Xbox `-X` output remains intentionally excluded: an XISO is a game-partition
531 representation, not a full Redump disc image.
532
533 An exact archive verification requires all four Redump identity fields to agree
534 with one DAT entry:
535
536 - output byte size
537 - CRC32
538 - MD5
539 - SHA-1
540
541 SHA-256 is retained as local integrity evidence in the JSON report even though
542 the supplied Logiqx DAT records do not contain SHA-256.
543
544 The console now presents the evidence directly:
545
546 ```text
547 Redump verification
548 ------------------------------------------------------------
549 DAT                  redump_dat/Nintendo - GameCube.dat
550 Entries scanned      2019
551 Matched entry        Sonic Mega Collection (USA)
552 ROM                  Sonic Mega Collection (USA).iso
553 Image size           PASS
554 CRC32                PASS
555 MD5                  PASS
556 SHA-1                PASS
557 Overall              VERIFIED AGAINST REDUMP
558 Confidence           Exact archive match
559 ```
560
561 For a non-match, FriiDump shows the closest candidate only when at least one
562 hash correlates. It then prints PASS/FAIL for size, CRC32, MD5, and SHA-1. When
563 no hash-correlated candidate exists, it reports aggregate per-field match counts
564 instead of presenting an arbitrary same-size disc as meaningful evidence.
565
566 `--redump-report <file>` writes schema-2 JSON containing the observed hashes,
567 SHA-256, hash source, representation note, expected DAT fields, per-field
568 PASS/FAIL evidence, match counts, overall conclusion, and confidence statement. The report is written to
569 `<file>.tmp`, flushed and synchronized, closed, and then atomically replaces the
570 final path. A failed write never exposes a partial final JSON document and does
571 not overwrite a previous complete report.
572
573 The JSON writer uses unlogged file output. Report contents therefore remain in
574 the JSON artifact and are no longer mirrored into the human-readable run log as
575 an incomplete object with missing string values.
576
577 For the GDR-8050L/cross-flashed GDR-8163B full-ISO path, the report identifies
578 `GDR-8050L reference finalized full-file hashes` as the hash source. FriiDump
579 also records that XGD1 acquisition success and exact Redump hash identity are
580 separate claims. The current reconstruction contains unresolved zero-filled pregame and
581 postgame spans, so a clean physical read can legitimately produce
582 `NO EXACT MATCH`. That result must not be promoted to archive identity.
583
584 Options:
585
586 - `--redump-dat-dir <dir>` explicitly selects a directory containing the
587   three stable DAT filenames above. Without it, FriiDump checks `redump_dat`
588   beside the executable and then under the current working directory.
589 - `--redump-report <file>` writes the atomic machine-readable evidence report.
590 - `--no-redump-verify` disables DAT lookup for a run.
591 - `--nohash` also prevents DAT verification because the required hashes are not
592   calculated.
593 - `--xgd1-layout-probe <file>` is a separate read-only Windows diagnostic for
594   the GDR-8050L challenge-handshake profile. It cannot be combined with image
595   output, conversion, all-methods, or HLDS 0xE7 probe options.
596
597 Example:
598
599 ```powershell
600 .\friidump.exe `
601   -d E: `
602   -T 0 `
603   -8 `
604   -s `
605   -i "sonic.iso" `
606   --redump-report "docs\debug\sonic.redump.json"
607 ```
608
609 The DAT files are data inputs, not compiled into the executable. Replace the
610 three files in the executable-relative `redump_dat` directory with newer Redump
611 exports while keeping the stable filenames, or point `--redump-dat-dir` at an
612 alternate set. The current-working-directory lookup is retained as a fallback
613 for source-tree and legacy workflows.
614
615 FriiDump 0.5.3.12 adds a second read-only XGD1 evidence mode for the user's
616 modified GDR-8050L firmware:
617
618   --xgd1-raw-id-probe <report.json>
619
620 The probe establishes the locked/video and unlocked/game views, performs
621 controlled 16-sector READ(12) cache fills, then uses the accepted HIT 0xE7
622 memdump command at cache base 0x80000000 to capture the selected 2064-byte raw
623 sector. The report records the raw ID field and decodes its 24-bit physical
624 sector number. This is intended to test logical-to-physical geometry; it does
625 not read inaccessible filler sectors, does not modify the current XGD1 image
626 layout, and requires the modified 0xE7 firmware profile.
627
628 The 0.5.3.11 live logical probe found 17 successful READ(10)/READ(12) pairs,
629 all byte-identical. Both active capacities rejected the sampled out-of-range
630 LBAs with 05/21/00. Therefore ordinary logical reads do not supply the current
631 synthetic pregame/postgame filler bytes.
632
633 FriiDump 0.5.3.13 corrects the raw-ID probe after the first live v68 run
634 showed that arbitrary request LBAs could leave cache base 0x80000000 pointing
635 at an earlier or block-start window. The corrected probe aligns every request
636 to a 16-sector block, issues the proven zero-transfer READ(12) cache flush,
637 and dumps only the target slot's 12-byte header and four-byte EDC. It validates
638 layer bits and raw/normalized PSNs against the current full-output geometry.
639 Raw-cache user-data equality is no longer treated as evidence because Method 8
640 reconstructs that field from READ(12) data before unscrambling. Geometry may be
641 resolved by a complete match; inaccessible filler bytes remain unresolved.
642
643 FriiDump 0.5.3.14 drive-captured XGD1 game lead-in
644 ----------------------------------------------------
645
646 The 0.5.3.13 live cache-aligned raw-ID run matched all 13 selected locked/video
647 and unlocked/game samples. It proved that unlocked source LBA 0..31 occupies
648 full-output LBA 198144..198175 and immediately precedes the XDVDFS header at
649 unlocked source LBA 32. FriiDump therefore no longer synthesizes the 32-sector
650 game lead-in for the GDR-8050L redump-style path.
651
652 The reference Xbox path now reads unlocked source LBA 0..31 strictly before
653 copying source LBA 32..3431263. The native libfriidump path uses the same source
654 mapping and retains per-sector zero-fill only as an explicitly counted fallback
655 for a genuinely unreadable lead-in sector. Pregame and postgame physical
656 locations are resolved, but their inaccessible content remains zero-filled and
657 must not be described as exact without independent evidence.
658
659
660 FriiDump 0.5.3.15 release cleanup
661 -----------------------------------
662
663 The 0.5.3.15 release candidate consolidates the XGD1 investigation into a
664 repository-ready tree. Local build logs, runner transcripts, package rehearsals,
665 duplicate stdout/stderr captures, and full logical-sector byte dumps are not
666 retained as source authority. Compact evidence is stored under
667 `docs/evidence/xgd1`.
668
669 Automatic DAT discovery is now executable-relative first, with the historical
670 current-working-directory lookup retained as a fallback. An explicit
671 `--redump-dat-dir` remains authoritative.
672
673 The reference and native full-output mappings remain those validated in
674 0.5.3.14. No XGD1 output bytes changed in this cleanup.