Project Stellar - Firmware Update 1.8.0

Project Stellar - Firmware Update 1.8.0

Hey everyone!

We're incredibly excited to finally share Firmware 1.8.0 for Project Stellar.

This release has been a long time in the making. It’s the result of over six months of development, reverse engineering, and pushing past the limits of what was once thought possible on the original Xbox.

We went into this update thinking it would be a quick improvement for video output. Instead, it pulled us into some of the most complex parts of the Xbox hardware and software. These are parts that were undocumented, misunderstood, or just assumed impossible to change. We’ve broken through all of it.

Firmware 1.8.0 is not just about adding new features. It also continues our commitment to something that sets Project Stellar apart: fixing every known bug in the original system, no matter how deep or obscure. Along the way, we found even more opportunities to improve stability, compatibility, and performance beyond what we originally set out to do.

This update pushes Project Stellar even further ahead, expanding what the original Xbox is capable of and laying the groundwork for everything that will come next. As always, our goal is not just to enhance the experience today, but to create a strong foundation for future developers and future ideas to build on.

We can't wait to show you everything that's new in 1.8.0. Let’s get into it.

Technical Deep Dive (Feel Free to Skim!)

The Xbox Video Output System (And Why It Matters)

If you're mainly here to see the full list of features and improvements, feel free to skip ahead.

The following section is for those who wish to explore the technical details behind what makes Firmware 1.8.0 such a significant advancement.

We like being open about the work that goes into Project Stellar. Not just to show the scale of what has been accomplished, but to help other developers understand it and build on it in the future. That said, this section is going to be very detailed.

---

The original goal of Firmware 1.8.0 was simple: improve video output options for Project Stellar, especially when paired with the XboxHD+ or modern scalers like the RetroTink 4K and PixelFX Morph. What started as a small upgrade quickly turned into one of the deepest reverse engineering efforts we have ever taken on.

On a retail Xbox, the video pipeline works like this. The framebuffer, where the GPU renders the final image, is passed into the CRTC engine inside the Xbox GPU. The CRTC engine scans the pixel data and sends it to the PRAMDAC, which handles the final output to the display. Inside the PRAMDAC, the image is scaled for TV standards and color space corrections are applied. All of this happens through undocumented, proprietary Nvidia registers.

None of these registers or behaviors are officially documented. Even Linux kernel drivers and open-source desktop driver projects have no reliable understanding of them. Most implementations have relied on educated guesses or partial reverse engineering, often with very mixed results.

To help explain this better, we put together a graphic that shows how the video output behaves on a legacy BIOS compared to what happens when Project Stellar takes control:

In the graphic, you can see the original Xbox behavior, where PRAMDAC scaling compresses and distorts the video signal. On the other hand, you can see how Project Stellar bypasses PRAMDAC scaling, providing a clean, uncompressed digital output directly to the Xbox HD+ or an external scaler. The improvement is dramatic.

This alone would have been a major step forward when applied to every possible display mode. However, we were not interested in simply making things better. From the beginning, our goal was to eliminate every guess, every assumption, and every unknown. We wanted full control over the entire video output pipeline.

That mission is what made this release take so long. We dug deep into the hardware, methodically reverse-engineering how the CRTC and PRAMDAC operate across every possible mode and setting. There were no shortcuts and no assumptions.

The Xbox itself supports six primary resolutions: 640x480, 720x480, 640x576, 720x576, 1280x720, and 1920x1080. However, when you factor in AV standards (NTSC, NTSC-J, PAL), widescreen support, and different pixel aspect ratios, there are more than 180 unique display modes that the system can output.

Each of these display modes configures over 30 CRTC registers and 19 PRAMDAC registers. That is far too many combinations to test by hand.

How We Solved It

When it comes to reverse engineering, documentation is everything. Before we touched a single register, we spent months going back through years of our own research, triple-checking every assumption and note. Project Stellar has always been built on careful, methodical work, and this update was no exception.

To show just how much went into it, we put together a screenshot of our internal Excel sheet:

This is not just a list of rough notes. It is a detailed breakdown of every display mode, CRTC configuration, PRAMDAC register, encoder behavior, and more. Some of you in the homebrew community have seen pieces of this before, and know how much effort has gone into documenting and sharing it properly over the years.

We started by finishing the last pieces of TV encoder documentation. For the Focus and Conexant chips, we could verify behavior using available datasheets. For the XCalibur encoder, which has no public documentation, we had to build our own database from scratch through fuzzing and testing. With the encoder work complete, we moved on to the PRAMDAC.

Reverse engineering the PRAMDAC brought its own challenges. About half of the registers were known from old PC documentation. We verified everything carefully against Xbox hardware, then fuzzed the remaining unknowns. The XboxHD+ gave us a major advantage, letting us send invalid or unusual signals directly to the display and actually see the results.

Even with that, some registers produced wild graphical glitches while we figured out what they controlled:

While reverse engineering the PRAMDAC was important, the real challenge — and the most interesting part of this entire project — was the CRTC.

The CRTC, or CRT Controller, goes all the way back to the original IBM PC BIOS. It was designed to do exactly what the name implies: generate the video signal that gets sent to a monitor.

We have a graphic here showing the basic concept of the CRTC.

In theory, you might expect that a modern GPU would simply extend or modernize this idea. In practice, Nvidia did what a lot of companies do: they followed the old standards only in spirit. On the NV20 family of GPUs, and specifically the Xbox's NV2A, the traditional CRTC registers still exist but often behave differently. Some have slightly changed meanings, while others are extended in undocumented ways. New registers were added, often to control internal limits and behaviors like overflow and underflow handling, without any documentation outside of Nvidia.

It gets even more complicated because the CRTC is not the only part of the video output scanning system. In the Xbox, there is a second scanout system working in parallel, modifying the output specifically for TV standards before it reaches the encoder. Both systems have to work together in sync to generate a valid signal.

We tried really hard to come up with a graphic that would show how these two scanout engines work together. Imagine two CRTC diagrams awkwardly holding hands while trying to feed the output into a TV. That is more or less how it behaves in practice.

To give a better idea of what all of this effort looks like in practice, here is a snippet of the reverse engineered configuration code we built during this process:

What started as a wall of undocumented hardware behaviors is now fully documented and controlled through clean, structured code inside Project Stellar.

Fully understanding and controlling this behavior was key to making true improvements to the Xbox's video output. It was by far the hardest and most rewarding part of the reverse engineering effort.

New Video Output Modes

One of the biggest changes in Firmware 1.8.0 is the complete rewrite of the video output modes.

When we first released the XboxHD+, we had no idea it would grow into what it is today. Over time, it became clear that a redesign was needed to simplify the interface and give users better, more flexible options for how video is output from the system.

After months of research, testing, and real-world feedback, we are excited to finally show the result:

The new output modes are designed to fit a wide range of setups, whether you are connecting directly to a TV, using a capture card, or taking full advantage of an external video scaler.

Here is a breakdown of the new options:

480p

Scales all content to a minimum of 480p, ensuring full compatibility with virtually any modern TV. This option is ideal for users connecting directly to a television without the use of a scaler.

720p

Similar to 480p, but scales all content to a minimum of 720p. Recommended for users who want a higher base resolution when connecting directly to a TV.

Direct Video

Passes the native framebuffer directly to the output without scaling. Metadata is embedded into the signal via SPD, making it perfect for external capture devices that need to know the resolution automatically.

Direct Video Framed

Works the same way as Direct Video, but frames the native image inside a 720p window.
This option is recommended when using external scalers because it reduces the delay and signal disruption caused by resolution switching.

Retail Passthru

A new future-proof option that outputs the Xbox's original, untouched video signal.

Even though we spent months reverse engineering and testing every part of the video pipeline, this mode allows users to completely bypass our changes if they want. Retail Passthru does not follow any video standard and may require an external scaler to handle the signal properly.

---

This new system gives users much more control over how they want to use their Xbox, whether they are aiming for maximum compatibility, capture quality, or complete authenticity. It is a major step forward from our original approach and something we are excited to keep building on.

The Last Xbox 1.6 Bug

The final revision of the original Xbox, the 1.6, has a long-standing bug where certain games will output garbage video when trying to switch into 480p. 

For years, the Xbox community believed this was a hardware flaw that could not be fixed. And it was widely accepted that no real solution was possible.

Project Stellar changed that.

Stellar is still the only solution that properly fixes this issue, both for analog output and for digital HDMI output through the XboxHD+.

Legacy BIOSes have tried to work around the problem by forcing the Xbox to switch into an incorrect display mode instead. This causes stretched video, distorted images, or just ignores the problem altogether, leaving some games unplayable or broken.

From day one, Stellar has correctly handled 480p on Xbox 1.6 systems without these compromises.

One of the interesting side effects of the work we did for Firmware 1.8.0 is that, while fully reverse engineering the video output system, we discovered that the same hardware bug also affects 720p output — not just 480p.

Funny enough, this issue was reported to us by a user in April, but we had already fixed it internally back in February of this year as part of our ongoing work.

Firmware 1.8.0 now fully resolves all Xbox 1.6 video output issues across all resolutions.

No more workarounds, no more broken video, and no compromises.

XboxHD+ External Scaler Support

With this update, we wanted to make sure users with external HDMI scalers could get the best possible experience, and we wanted it to work automatically without complicated setup.

To make this happen, we decided to take advantage of the SPD InfoFrame that is part of the HDMI signal. Usually, the SPD (Source Product Description) InfoFrame is used to transmit basic vendor and product information. However, we have repurposed it to include detailed metadata about the current Xbox display mode.

This means that scalers like PixelFX's Morph, and hopefully the RetroTink 4K in the future, can automatically load the correct profiles based on the signal coming from the Xbox.

No manual switching, no hunting for settings — it just works.

Inside the SPD metadata, we include everything a scaler would need: the source resolution, widescreen status, pixel aspect ratio, and more. This gives users the ability to customize and fine-tune how each display mode is handled, even for modes that would normally be tricky to configure manually.

It also fully supports our new custom display modes, which we will talk more about later in the post.

GameID and Discord Presence

It goes without saying that if we are discussing external scaler support, we must also address Stellar’s new support for GameID.

GameID allows an external scaler to detect and report the current game title running on the system.

It is a small detail, but it adds a whole new level of polish and convenience for anyone who wants to track gameplay, set up game-specific scaler profiles, or simply show off what they are playing.

But we did not stop there.

Working together with PixelFX, we made it possible for the Morph to take the GameID information from Stellar and automatically update your Discord presence.

This means your friends will see exactly what Xbox game you are playing, live, without any manual setup or extra software.

It is a small touch, but it brings a modern, connected experience to the original Xbox in a way that would have been unthinkable before.

Custom Display Modes

While we were reverse engineering the Xbox GPU and fully mapping out its video output pipeline, it occurred to us...

If we understand everything now, why limit ourselves to only the original display modes? So that is precisely why we aren't stopping.

Firmware 1.8.0 adds support for over 100 custom display modes, expanding far beyond what was ever possible on the original system.

High Refresh Rate Retail Modes
640x480 (75Hz 100Hz 120Hz 144Hz)
640x576 (75Hz 100Hz 120Hz 144Hz)
720x480 (75Hz 100Hz 120Hz 144Hz)
720x576 (75Hz 100Hz 120Hz 144Hz)

New Resolutions
720x540 (50Hz 60Hz 75Hz 100Hz 144Hz), 768x480 (50Hz 60Hz 75Hz 100Hz 120Hz 144Hz), 768x576 (50Hz 60Hz 75Hz 100Hz 120Hz 144Hz), 800x480 (50Hz 60Hz 75Hz 100Hz 120Hz 144Hz), 800x600 (50Hz 60Hz 75Hz 100Hz 120Hz), 848x480 (50Hz 60Hz 75Hz 100Hz 120Hz), 854x480 (50Hz 60Hz 75Hz 100Hz 120Hz), 960x480 (50Hz 60Hz 75Hz 100Hz 120Hz), 960x540 (50Hz 60Hz 75Hz 100Hz 120Hz), 960x720 (50Hz 60Hz 75Hz), 1024x576 (50Hz 60Hz 75Hz), 1024x600 (50Hz 60Hz 75Hz), 1024x768 (50Hz 60Hz 75Hz), 1136x640 (50Hz 60Hz 75Hz), 1136x960 (50Hz 60Hz), 1152x768 (50Hz 60Hz 75Hz), 1152x864 (50Hz 60Hz), 1280x768 (50Hz 60Hz), 1280x800 (50Hz 60Hz), 1280x864 (50Hz 60Hz), 1280x960 (30Hz), 1280x1024 (30Hz), 1280x1080 (30Hz), 1360x768 (50Hz 60Hz), 1366x768 (50Hz 60Hz), 1440x900 (30Hz), 1440x960 (30Hz), 1440x1080 (30Hz), 1536x1024 (30Hz), 1600x900 (30Hz), 1600x1024 (30Hz), 1600x1200 (30Hz), 1920x1200 (30Hz)

Ultrawide - External Scaler Resolutions
1280x1152 30Hz
1440x1152 30Hz
1720x720 30Hz
1930x800 30Hz
1280x540 60Hz

These new modes include a wide range of options, such as:

  • Common VGA resolutions like 800x600 and 1280x1024.

  • High refresh rate modes include 75Hz, 100Hz, 120Hz, and even 144Hz.

  • qHD resolutions like 960x540.

  • Fractional ultrawide resolutions for specialty displays and advanced setups.

One of the biggest highlights is full support for 1080p at 30Hz.

This was something long thought to be impossible on the Xbox hardware, but with the work done in Firmware 1.8.0, it is now fully supported and stable.

Even more surprising, we did not stop at 1080p. We also added support for 1920x1200, pushing beyond the original system's maximum resolution for users with displays that support it.

Every mode was carefully built and tested using our newly reverse-engineered control over the GPU output pipeline. This means they are not just quick patches or hacks. They are fully validated modes that are treated as first-class citizens by Stellar and the XboxHD+.

Even better, these custom modes are fully available to homebrew applications and patched games. Developers can now target resolutions and refresh rates that were previously impossible, opening the door to entirely new experiences on the Xbox.

If you want to see an example of what this makes possible, check out Stellar Halo HD 2, which takes full advantage of Stellar’s expanded video output options.

It is important to note that, at launch, custom display modes are supported on Xbox revisions 1.0 through 1.5. Xbox 1.6 systems will require a small hardware modification to enable full support for custom modes. We will be sharing more information about this soon for anyone interested in upgrading their install.

Whether you are connecting to a CRT, an LCD monitor, or a modern scaler, these new display modes open up possibilities that simply did not exist before.

Stellar Halo HD 2

When multiple people are pushing the boundaries of a system, it is not uncommon for them to run into things the other did not expect.

The amazing work by grimdoomer on the original Halo 2 HD patch is a perfect example of that.

Unfortunately, a recent Project Stellar update caused compatibility issues with the patch.
We are happy to report that this has now been fully resolved.

But we are not stopping there.

Today, we are officially open-sourcing our own take on the patch, and releasing the Stellar Enhanced version of Halo 2 HD.

This new version fully supports our custom display modes introduced in Firmware 1.8.0.
It opens up all kinds of new possibilities for playing Halo 2, including higher resolutions, higher refresh rates, and better scaling options that were never available before.

Whether you are a developer who wants to build on it further or just a player who wants the best possible Halo 2 experience on the original Xbox, Stellar Halo HD 2 sets a new standard for what is possible.

PAL50 Support

When we first launched the XboxHD+, we purposely overlooked PAL50 only titles. The assumption at the time was that most players would either be running NTSC versions of games or that any PAL-only titles could be forced to 60Hz without issue.

In hindsight, this was an oversight. Not every PAL title supports 60Hz, and more recently, we have learned that specific PAL versions are actually preferred. Some offer unique gameplay differences, additional language options, or other features that are missing from their NTSC counterparts.

With Firmware 1.8.0, this has now been fully addressed.

Project Stellar now supports true 50Hz video output for all PAL modes, across all video output options, including 480p, 720p, Direct Video, and Direct Video Framed.

No workarounds. No forced conversions. Just full support as it should be.

RGB Output Improvements

One of the pain points we have seen is how the XboxHD+ handled RGB colorspace output.

In previous firmware versions, Stellar attempted to detect whether RGB output was supported by reading the display’s EDID information. Unfortunately, this did not always work the way people expected, especially when using converters, scalers, or displays with incomplete EDID data.

Firmware 1.8.0 addresses this directly.

Starting with this release, if RGB output is enabled in the settings, Project Stellar will always output in native RGB colorspace, regardless of EDID reporting.

This is an important improvement because the Xbox’s internal YCbCr output is not lossless. By guaranteeing native RGB output when selected, we can preserve the full quality of the original framebuffer and deliver the best possible video output across all setups.

PAR Improvements

This firmware update also fixes issues related to the Xbox’s handling of non-standard pixel aspect ratios (PAR).

The Xbox supports a non-standard pixel size of 10x11.

This technique allowed games to render at a smaller internal resolution while maintaining a standard output resolution. The rendered image would be horizontally scaled by a ratio of 11:10, and vertical black bars would be added to the sides.

On a standard analog TV, these black bars would fall into the overscan area and be hidden, while the smaller internal resolution helped improve framerates, often at the cost of a slight blur.

Previous versions of Stellar bypassed the black bars correctly, but incorrectly scaled the game’s output to fill the entire output frame. This caused the image to be stretched improperly in certain cases, especially when combined with modern digital displays.

Firmware 1.8.0 corrects this behavior.

Games that use 11:10 scaling are now properly handled, preserving the intended image dimensions without unwanted stretching.

Additionally, users can now disable internal scaling completely.

Disabling internal scaling is especially important when using an external scaler. Outputting the native frame without additional scaling avoids introducing multiple layers of lossy scaling, preserving the cleanest image quality possible.

Internal Scaling Fine Control

Pixel-perfect output has always been a major focus for Project Stellar, and that has not changed with this update. However, sometimes chasing perfection can also take away a bit of the original charm.

The Xbox’s internal video scaling has a very distinct look. It softens the image slightly, hiding a lot of the jagged edges and sharp pixel transitions that would otherwise stand out. It is hard to describe exactly, but it gives the video output a certain characteristic that many players remember and recognize.

For some users, the goal is to remove analog noise and sharpen the image as much as possible. For others, keeping a bit of that original softness helps preserve the feeling of playing on a real Xbox in the early 2000s.

We understand both sides, and that is why Firmware 1.8.0 adds new options to give users full control over internal scaling.

You can now choose whether to keep the Xbox’s internal video scaling active or disable it entirely for accurate native resolution output.

The choice is yours, depending on how you want your Xbox to look and feel.

True Multi-Region Support

If you are still reading at this point, you are either a massive nerd like us or you are just too tired to scroll back up. Either way, thanks for sticking with us through all the digital video talk.

Firmware 1.8.0 also brings major improvements to how Project Stellar handles multi-region setups.

In previous versions, Stellar would automatically try to select the system region when launching a game from a different region. While this usually worked, there were situations where it could cause incorrect video settings or unexpected behavior.

Starting with this update, Stellar now handles region switching much more intelligently.

While working on these improvements, we uncovered something even more important. We found an issue that affects all Legacy BIOSes when using analog video output.

When playing an NTSC-M or PAL game on an NTSC-J (Japanese) display — or playing an NTSC-J game on an NTSC-M or PAL display — the video signal would have incorrect brightness and color levels via analog output.

This was a mismatch between what the game was outputting and what the display was expecting, and it caused noticeable video quality problems that were never properly fixed before.

Firmware 1.8.0 resolves this by introducing separate AV Region and Game Region settings.

  • Game Region determines how the Xbox selects settings for software compatibility.

  • AV Region now independently controls how the video output is adjusted to match the expectations of your display hardware.

This completely fixes the analog video brightness and color mismatch when mixing NTSC-M, NTSC-J, and PAL titles across different types of displays, giving you clean and accurate video output no matter what combination you are using.

Open Source Contributions

At MakeMHz, we have always believed in pushing the boundaries of what is possible. Just as importantly, we believe in sharing as much of that work with the community as we can.

Open source contributions are a big part of that philosophy, and Firmware 1.8.0 continues that tradition.

The biggest contribution this time is the merging of our network driver fixes into nxdk, the free and open-source homebrew toolchain for the original Xbox. These changes fix longstanding issues in the Xbox networking stack, improving stability, compatibility, and performance for homebrew applications built with nxdk.

We are proud to not only improve Project Stellar, but also help make the broader Xbox development ecosystem even stronger.

XboxDev/nxdk

nvnetdrv v2 part 1
build: Warn if clang version is in the 19.x.x-20.1.2 range

MakeMHz/stellar-halo-2-hd 

Implement CI build workflow
Implement custom resolution support

Changelog

So much has been added in this update that we may have overlooked a few things along the way; however, this covers all the major highlights.

  • Complete rewrite of the video output system
  • Added new video output modes: 480p, 720p, Direct Video, Direct Video Framed, Retail Passthru
  • Added over 100 custom display modes, including 1080p30 and 1920x1200
  • External scaler support via HDMI SPD InfoFrame metadata
  • GameID support for external scalers and Discord presence
  • Stellar Halo HD 2 open-sourced and released
  • Full PAL50 support for analog and digital outputs
  • RGB output improvements, always native RGB when enabled
  • Proper handling of 11:10 PAR scaling with option to disable internal scaling
  • Internal scaling fine control option added
  • True multi-region support with separate AV and Game Region settings
  • Full fix for Xbox 1.6 video output issues across 480p and 720p
  • Fixed issues related to launching some titles from StellarOS
  • Fixed CPU upgrade support regression (Return to Castle Wolfenstein - Tides of War)
  • Improved StellarOS UI
  • Fixed issue related to Xbox DVD playback
  • Fixed graphical glitch when launching XBEs

What's Next?

Firmware 1.8.0 will be available starting today as an offline install through our GitHub releases page.

Once we have confirmed everything is stable at scale, we will begin rolling it out to the online update servers.

The next major release after this will mark the first non-beta build of Project Stellar.

At that point, we will be moving to a Beta and Stable update channel system, giving users the option to select their preferred update experience directly inside Stellar OS.

A lot of work happened behind the scenes for this release. Very early in the 1.8.0 development cycle, we re-implemented the Xbox XDK kernel debugger interface from scratch.

We are exploring the possibility of incorporating full developer support through this interface in a future update, which would open up even more possibilities for Xbox development.

Additionally, we have a long list of features and ideas that did not make it into this release.

Going forward, our goal is to shift toward smaller, more frequent updates, so that improvements, fixes, and new features can reach users faster without needing huge release cycles.

We are incredibly excited for what comes next, and we are just getting started.

Conclusion

Firmware 1.8.0 took longer than we originally hoped, but looking back, it was time well spent.

This update represents some of the most challenging and rewarding work we have ever done. It pushed Project Stellar further than anyone thought possible, fixing problems that were considered impossible to solve and opening up entirely new possibilities for the Xbox.

We want to thank everyone who has supported us, given feedback, and been patient while we made sure we did things the right way.

Your support is what made this update possible. Thank you for being part of this journey with us.

We are just getting started, and we cannot wait to show you what is next.