Skip to content

UWP/CDVD: Add support for the Xbox disc drive - #11

Open
skitzellez wants to merge 1 commit into
XboxEmulationHub:masterfrom
skitzellez:pr/xbox-disc-drive
Open

skitzellez wants to merge 1 commit into
XboxEmulationHub:masterfrom
skitzellez:pr/xbox-disc-drive

Conversation

@skitzellez

@skitzellez skitzellez commented Oct 20, 2026 •

Copy link
Copy Markdown

Description of Changes

Adds support for the disc drive on Xbox consoles (Series X / One X / One S).

  • IOCtlSrcXbox.inl replaces IOCtlSrc when WINRT_XBOX is set. It opens the drive through its device interface (Windows.Devices.Custom) and reads it with SCSI pass-through: READ(10), READ CD, READ TOC, READ DVD STRUCTURE (READ CAPACITY as a fallback) and TEST UNIT READY.
  • DriveUtility.cpp lists the drive as disc:, but only when the console has one, so nothing changes on Series S.
  • main.cpp: a launch link with cmd=xbsx2.exe disc: boots the disc.
  • Package.appxmanifest: adds the optical device capability and the CD-ROM interface class, which the drive needs before it will open.

Rationale behind Changes

On the console, apps are refused the normal routes to the drive (CreateFile on \\.\X: and the IOCTL_CDROM / IOCTL_DVD requests), so the existing Windows reader can't see a disc. The device interface route is the one that opens in Dev Mode.

Suggested Testing Steps

  • Series X: put in a PS2 disc and start it with the disc: link (or Start Game > Start Disc in the menu). Tested on a Series X with this exact branch (v2.0.9.2-1-gb7eed636d) and a PS2 DVD (American Chopper, SLUS-21069), started with the link: the log shows CDVD: disc in the console's drive: DVD, 1338384 sectors, the ELF loads and the game runs into its intro video. I haven't tried the menu route yet.
  • Series S: no disc entry should appear, and nothing else should change. I can't test this myself because I don't have a Series S.
  • Not tested: CD-based PS2 games and dual-layer DVDs.

Did you use AI to help find, test, or implement this issue or feature?

Yes. The code was written with Claude (AI) and tested by me on my Series X. The same code has been in use in my XBSX2 for Game Vault builds since 2.0.9.6. Edits from maintainers are enabled, so feel free to change anything.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for submitting a contribution to XBSX2

As this is your first pull request, please be aware of the contributing guidelines.

Additionally, as per recent changes in GitHub Actions, your pull request will need to be approved by a maintainer before GitHub Actions can run against it. You can find more information about this change here.

Please be patient until this happens. In the meantime if you'd like to confirm the builds are passing, you have the option of opening a PR on your own fork, just make sure your fork's master branch is up to date!

Reads discs in the console's own drive through its device interface
(Windows.Devices.Custom + SCSI pass-through), since apps are refused the
usual drive letter and CDROM/DVD ioctls. The drive is listed only when the
console has one, so nothing changes on Series S. A "disc:" launch link
boots the disc.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant