Cxbx-Reloaded (Xbox) May 2018 Official Progress Report: Great Rendering Improvements, Support for Virtual Steel Battalion Controller, Better Multi-Controller handling, Lots Of Improvements In Games Such As Panzer Dragoon ORTA and Much More!
Note: Like the previous month, I, Aurora, offered the Cxbx-R team to write them a progress report and post it on Wololo. This means that this is an OFFICIAL progress report vetted and endorsed by the team itself! Article featured image is courtesy of CakeLancelot, an active member in the Cxbx-Reloaded community.
Like the previous month, May saw a great deal of work going into Cxbx-Reloaded by its dedicated team. As a result, the emulator has become more mature and the amount of games not even starting to load (Nothing category) has been reduced by 3% even though the sample size got larger!
Summary of the report
This month, the team worked pretty hard on the rendering portion of the emulator but other sections like controller configuration and DirectSound still got some love! Looking through May’s commits, we can condense the month’s work down into the following:
- Great loads of improvements in the graphics rendering section which resulted in the nuking of crashes in many games, including Crash Bandicoot: The Wrath of Cortex and JSRF which is an Xbox exclusive.
- Support for a virtually mapped Steel Battalion controller has been added! (the huge $200 Mech controller that only worked for a specific game…) Other than that, a GUI for assigning host controllers to different XBOX controller ports is now present. This work was done by jackchen.
- Memory leak fixes, code clean-ups and the removal of unused code cluttering the emulator by PatrickvL. Through these 3, the emulator will not only be more stable but debugging and fixing up code will be easier
- Improvements to Time Stamp Counter (RDTSC) have been made by jackchen. These will help make game timings more accurate.
- RadWolfie converted the static arrays found in the DirectSound Buffer and Stream to dynamic C++ standard Vectors. According to him, this will result in performance improvements on lower-end systems.
- Other more technical improvements such as fixing cube mapping, further work on the WIP Direct3D 9 backend and more aggressive code optimisation which results in minor speed boosts!
- Various bug fixes were made. In particular, contributor JaGoTu’s bug fixes took Harry Potter and the Philosopher’s Stone from displaying nothing to being playable!
Graphics Rendering Improvements: Fixing up the SetRenderTarget function, Memory Leak Fixes and Greater Accuracy!
In any emulator, the most important thing for the end-user is having games render games properly and this month saw great improvements to that section.
In May, one of the most important rendering improvements was the fixing-up of the SetRenderTarget fuction, a function that is essential for XBOX graphics rendering since it used for shadow, reflection and overlay rendering. It is used to change the surface to which 3D graphics are drawn to. To put this in perspective, we can take the example of an in-game mirror that reflects what’s in front of it. In order for the mirror to display the reflection, it uses the SetRenderTarget function to render an image (of what is in front of it) to a texture which is then applied to the mirror. In terms of affected games, JSRF no longer crashes when you do a boost dash and various other titles now work better.
Apart from the SetRenderTarget function, this month also improvements to various other graphic-related areas such as:
- The fixing up of cube mapping by Luke Usher which allows textures on 3D objects to be rendered more accurately.
- Some memory leak fixes in the Direct3D code by PatrickvL so now, the emulator will be less prone to crashes.
- Improvements to the D3D9 wrapper for the D3D8 backend which is currently used. One such improvement is the correction of issues with the Depth Stencil, which is a buffer used for shadow rendering.
- Further updates to various buffers such as the pushbuffer, which is a command buffer, and the backbuffer.
- Cxbx-R now draws primitives correctly thanks to fixes from PatrickvL and jackchen. Primitives are a collection of vertices (edge) coordinates that form 3D objects so obviously, rendering them properly is a very important thing!
- Other enhancements such as improvements to memory allocation reporting by Jagotu, improvements to how thunk tables work and the separation of the HLE symbol database into a separate project.
Improvements to Input Handling: Support for a virtual Steel Battalion Controller and improvements to multi-controller handling.
Leaving the more technical explanations behind, let’s take a look at the improvements to the input handling section of the emulator. This section is still pretty important since let’s face it, if you can’t control your game properly, the game can’t be played even if it’s rendered perfectly!
This month, jackchen decided to bake in support for a virtual Steel Battalion controller inside Cxbx-Reloaded. For those who don’t know, Steel Battalion is a mecha game that had an optional $200 controller for precisely controlling your mech. The notorious controller is pretty huge and didn’t do too well because of its price tag but nowadays, it’s become quite the collector’s item for XBOX fans. Thanks to jackchen, you can now assign the controller’s buttons to your keyboard/game controller so you can precisely control your mech without the monstrosity in the picture!
Obviously, the configuration window for this controller is quite huge!
Other than support for the aforementioned controller, jackchen added a GUI for XBOX controller port configuration. This allows you to easily assign whichever host controller you want to the XBOX controller port of your choice.
Games that saw improvement this month
Taking a break from the more in-depth talk, we are now going to take a look at which games saw visible improvement this month. These are:
- JSRF now works better as the full-screen blur effect used in some areas works properly.
- Silent Hill 2 got some rendering improvements as the film-static overlay now functions! (although it’s still unplayable as of now)
- Batman Dark Tomorrow has now got in-game.
- Shadow of Memories now has its post-processing effects working well.
- Indiana Jones and the Emperor’s Tomb renders properly now!
- Panzer Dragoon ORTA, an Xbox exclusive, is now playable for the most part since some users have played large sections of it!
- Many other titles such as RaceX, AMF Bowling, Rocky and Blinx have seen improvement
To learn more about what the Cxbx-R folks were up to, you could check out the commits linked below or scroll through their Discord chat!
The team are always looking for people that could give them a hand in testing games so if you wish to help out, start testing!
Cxbx-Reloaded GitHub Commits: https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/commits/master
Cxbx-Reloaded Compatibility List: https://github.com/Cxbx-Reloaded/game-compatibility/issues
Cxbx-Reloaded Discord: https://discord.gg/26Xjx23
Luke Usher’s Patreon (way to donate to the development of the Cxbx-Reloaded team if you appreciate their hard work): https://www.patreon.com/LukeUsher