-
Notifications
You must be signed in to change notification settings - Fork 810
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Xbox NXDK platform #4838
Xbox NXDK platform #4838
Conversation
a19084e
to
cba8b50
Compare
Wow, it would be exciting to finally have an OG Xbox port under our wings :) Looks like building fmt is currently the biggest blocker. |
@brentdc-nz you might be interested in this :) |
a57403f
to
10273c5
Compare
ee2d9b9
to
55e6bb6
Compare
07ed0ba
to
c0fcb17
Compare
28a7f70
to
78f6efa
Compare
@Halofreak1990 I've noticed your port of Devilution (not DevilutionX) to the OG Xbox at https://github.com/Halofreak1990/devilution-xbox. This is a port of DevilutionX to the OG Xbox using NXDK that you might be interested in. |
Could be interesting indeed. The reason I went with the Devilution codebase for my port and tried emulating all the Windows stuff, was because DevilutionX depends on SDL2, among other things, and I do not have access to a port of that for the OG Xbox, and I'm not comfortable (like, not at all) with SDL to even try attempting swapping to the SDL 1.x port that does exist. There's also the bit with the modern C++ stuff that Visual Studio 2003--which, up until NXDK came around, was required to build OG Xbox games--just doesn't take. And then I got stuck on trying to wrap my head around an implementation of the Win32 dialog API, though I did manage to include the resources in the executable and access them. I just didn't get around to rendering anything. |
@Halofreak1990 DevilutionX does support SDL1 ( |
4e1a295
to
a65a977
Compare
ISO is not useful for us because the user still has to put diabdat.mpq on the hard drive. At this point, might as well put DevilutionX on the hard drive as well. Changes the CI to produce a zip file with our assets and the `default.xbe` executable.
1. Automount D drive 2. Mount E drive 3. Set preference and config paths to `E:\UDATA\devilutionx` Co-authored-by: Ryzee119 <[email protected]>
Looks like vsync doesn't work on NXDK at the moment. Defaults it to false and hides it from the menu. It is still possible to manually enable it via `diablo.ini` for testing.
if (windowSize.width >= xmode.width && windowSize.height == xmode.height) | ||
break; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This logic could be better, but lets wait until XNDK gets the SDL calls implemented.
@glebm will you create an issue to track the remaning issues? |
Also I guess we should look at packaging, but it seams it would be pretty trivial? |
looks like everything is handled upstream. should we update things? |
Still need XboxDev/nxdk#606, and then I guess we'll need to fork libfmt into diasurgical
The package is just a zip file that we already produce |
Switched to our libfmt fork in #5011 |
- name: Install APT packages | ||
run: sudo apt-get update && sudo apt-get install -y clang llvm lld bison flex cmake git gettext | ||
|
||
- name: Clone NXDK Repo |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: The preferred spelling of nxdk is "nxdk" (all lowercase, even as first word in sentence).
Initially there were some disagreements about that spelling, but we settled on the all-lowercase variant a couple of years ago (if I remember correctly, also to differentiate it from the MS XDK). All-caps NXDK
is only used in code for defines and such.
There were other instances in this PR which use the all-caps spelling, too.
Slightly related: While MS didn't agree on a stylization around 2001, the XboxDev community prefers to use the now-preferred MS spelling of "Xbox" (capital "X", lower-case "box") for the console name. If there might be confusion with other consoles, "original Xbox" is used ("original" in lowercase unless at start of sentence or similar).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, noted!
DevilutionX now builds with https://github.com/XboxDev/nxdk.
Reported 26 FPS on a real Xbox in town.
There are some outstanding PRs to fix a few issues (listed below), so we build from my fork for now.
Note: Requires clang that comes with Ubuntu 22.04 (20.04 won't work).
Issues:
static_assert
should not be overriden in c++ XboxDev/nxdk#598static_assert
for C++ XboxDev/nxdk-pdclib#51