-
Notifications
You must be signed in to change notification settings - Fork 21
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add XGD support for Kreon Drives (#181)
* Add Support for dumping Xbox Security Sectors This allows for dumping Xbox Security Sectors from a Kreon Drive. Currently there are a couple points I would like to revist: - Currently always dumps security sectors when dumping with a "KREON V1.00" drive, should only dump when XGD game detected * Add Kreon "Set Lock State" Command This adds the command to allow for locking/unlocking the drive in order to read the disc contents. * Unlock the Drive and Dump the XGD * Zero out L1 Middle * Dump L1 Video at end With this commit the SHA of my ISO matched DIC on Linux, however it didn't match what I get from DIC on Windows (which is what is in redump) * Add Support for XDG2/3 Add support for XBox 360 * Fix Typos and Xbox 360 Dump Support * Cleanup and XGD3 support * Make variables const * Refactor, move code into main loop * Fix issue where skip regions overlap * Refactoring and style * Proper Kreon lock/unlock * Try unlock Kreon at start * Fix libata issue libata checks for minimum CDB size based on opcode. In this case it was (0xFF >> 5) & 7 which was 7 which libata used to index into an array of minimum sizes and the minimum in this case was 10. By switching from CDB 6 to CDB 10 we can now send Kreon specific commands to the drive when connected via SATA on Linux. * Don't check capacity when locking * Cleanup no-longer needed code, refactoring * Fix state not being updated for skip regions Fixes an issue where state was not being updated when we write zeroes to the iso which would cause issues during refine. Some refactoring as well * Fix refine/verify not having skip regions or lock sector set * Clean up security sector with ssv1/ssv2 fixes Note: SSV2 fixes have been added, however as 0800 support is not currently present this code should not be needed at this point in time. * Fix PFI not hashing correctly This fixes an issue where we modify the PFI in order to make the prints output the correct values. Now instead of modifying the structure itself we just store the value and use it for logging. * Fix Style issues - switch to CDB10 Struct fro KREON Lock command - switch from post- to pre-increment - switch from std::array<uint32_t, 2> to std::pair<uint32_t, uint32_t> - remove unneeded clean_ss variable - switch to using endian_swap instead of manually creating xgd_type data * Use struct for xgd_get_type, rename .raw_ss to .security * Pull Xbox SS dump loop out of cmd.ixx This pulls the loop out of cmd.ixx when dumping the security sector from an XGD * Do not store cleaned SS, clean when refining This updates the behavior so that while we clean the security sectors for use they are not saved as a file. When refining we clean the loaded SS in order to make sure it matches (unless forcing). * Add initial XGD1 and XGD2 Security Sector structs Adds currently known fields for XGD1 and XGD2 security sectors for potential future use. --------- Co-authored-by: Deterous <138427222+Deterous@users.noreply.github.com>
- Loading branch information
Showing
5 changed files
with
502 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.