2 """Contract for the standard MMC READ DVD STRUCTURE CDB boundary."""
4 from __future__ import annotations
7 from pathlib import Path
10 def require(text: str, token: str, label: str) -> None:
12 raise SystemExit(f"FAIL: missing {label}: {token}")
13 print(f"PASS: {label}")
17 parser = argparse.ArgumentParser()
21 default=Path(__file__).resolve().parents[1],
23 args = parser.parse_args()
25 source_root = args.source_root.resolve()
27 source_root / "libfriidump" / "dvd_drive.c"
28 ).read_text(encoding="utf-8")
30 source_root / "libfriidump" / "xbox_ref" / "utils.c"
31 ).read_text(encoding="utf-8")
33 source_root / "libfriidump" / "dumper.c"
34 ).read_text(encoding="utf-8")
36 start = dvd_drive.index("int dvd_read_dvd_structure")
37 end = dvd_drive.index("\n}\n", start) + 3
38 function = dvd_drive[start:end]
42 "mmc.cmd[6] = layer;",
43 "READ DVD STRUCTURE layer is CDB byte 6",
47 "mmc.cmd[7] = format;",
48 "READ DVD STRUCTURE format is CDB byte 7",
52 "mmc.cmd[8] = (u_int8_t) ((extbufsize & 0xFF00) >> 8);",
53 "allocation length high byte is CDB byte 8",
57 "mmc.cmd[9] = (u_int8_t) (extbufsize & 0x00FF);",
58 "allocation length low byte is CDB byte 9",
63 "READ DVD STRUCTURE uses a 12-byte CDB",
66 if "mmc.cmd[11] = format;" in function:
68 "FAIL: READ DVD STRUCTURE format is still written to control byte 11"
70 print("PASS: READ DVD STRUCTURE control byte 11 is not used as Format")
74 "sptd.Cdb[7] = 0x04;",
75 "copied Windows DMI request uses format byte 7",
79 "[XBOX-DVD-STRUCTURE] format=0x04 name=DMI cdb_format_byte=7 result=%s",
80 "persistent DMI capture diagnostic",
83 print("XBOX READ DVD STRUCTURE CDB CONTRACT: PASS")
87 if __name__ == "__main__":
88 raise SystemExit(main())