XaiJu
LukeUsher
LukeUsher

patreon


Progress Report (June 2021)

Progress Report (June 2021)

After many sleepless nights, I’m very happy to announce that this month we got another huge compatibility improvement: 12 new playable games! Mostly due to the major work done (and teased a lot…) with the implementation of HLSL pixel shaders. As usual, 12 playable games doesn’t cover all the games that improved (more could be playable, but I didn’t have time to verify other games further), but hurray, we’ve reached 15.06% of the entire Xbox library playable… what else? June also gave us a small performance improvement that will be noticeable in games that use complex geometry and the support to Xbox Memory Units (think of them as this consoles memory cards).

General Improvements

Avoid unnecessary shader constant updates [PR #2232]

● Avoid setting vertex shader constants more than once per draw

● Update dirty shader constants only, and try to minimize D3D9 calls

● Constants are synced every draw, but titles may only use a few constants

so we can potentially save a lot of work

Increases performance a little (at least on certain titles like Buffy: The Vampire Slayer).

SleepPrecise for more accurate sleeps [PR #2231]

We can use it to reduce the amount of spin waiting which burns CPU.

Try to sleep as much as we can get away with without overshooting, and then spin wait.

Use it for:

● VBlank timing

● Frame limiter timing

Pixel shader HLSL [PR #2136]

The latest and hottest rendering improvement is finally in! This introduces completely rewritten pixel shader emulation, through HLSL.The long story short here is: tons of visual issues fixed and many games became playable… but this isn’t all! This is also another step towards our next big thing.

Left over commits for fixing vector iterator in DSStream packet [PR #2234]

Implements ImageDesc in the DownloadEffectsImage call. Fixes Otogi 1, first step of Otogi 2 and PRG2.

Add support to load dsp images from xbe sections [PR #2239]

Halo 2 tries to load a dsp image with XAudioDownloadEffectsImage from an xbe section called "DSPImage", and it was crashing when it attempted to read the nullptr that we were returning from the function. Unfortunately, it still crashes later before showing anything when it tries to execute a dpc set by KeSetTimer.

Fixing 3D mip-map conversion with volume texture [PR #2237]

Using correct 3D mipmap dimension sizes in all 3 dimensions, and calculate correct source size. This fixes Halo, gets in game.

Note: the cache partition must be cleared prior to emulation, or the title would get stuck in D3DResouce_IsBusy() check. debug build is more stable. somehow the release build won't work, seems stuck in the D3DResouce_IsBusy() check.

Upstream Chihiro Non-LLE Code [PR #2243]

Hopefully this will be the last pull request to move chihiro relative changes. Then any rebases on wip Chihiro will be easier for management to continue the work.

With addition to the changes, a check was added if system/xbe are detected to run as Chihiro type will force failure. Chihiro support is still under major work in progress and being worked on a separate branch.

Raise max resolution scale to 12x [PR #2248]

D3D9 has a max texture size of ~8192(?) so this can go a little higher than 8x. I'm not sure if certain GPUs will have a lower max than that. (This can probably be raised again once Cxbx-Reloaded switches to D3D11)

Added support for memory unit devices [PR #2246]

This adds support for a new input device, the memory unit (MU), which becomes available in the input gui when selecting the duke or S controller. For this cxbxr will now create a new folder called EmuMu in the same location where EmuDisk is created, and inside EmuMu there will be 8 folders, one for each MU. Regarding the internal code changes, this implements XMountMUA, XMountMURootA, XUnmountMU, XReadMUMetaData and extends the kernel functions NtQueryVolumeInformationFile, NtDeviceIoControlFile and NtFsControlFile to support MUs, in addition to the HDD. Below is a pic of the dashboard recognizing the MUs:

Notable Game Improvements

As I’ve already mentioned, I got many hours into testing specific games to be sure we had most results that represent the amount of games that improved… but this month was just too much. Even with the all the results below, there’s a lot of games I couldn’t finish, so you can expect even more playable stuff for the next month (as I’m writing this report, I have yet another game running on CxBx-Reloaded on the background, almost finished...). So let’s keep this brief, here’s the list with only new playable gamesfrom June:

Justice League Heroes

https://youtu.be/ZeGwzTPhU-g

Fully playable with great performance. Latest visual issue that was preventing the game from being fully playable was that some parts of the geometry in some models were invisible (this breaks things not so important like some characters capes… and makes a boss totally invisible!). Now you can see all the geometry properly with only a minor visual issue left to fix (health bars don’t update so you can’t know exactly the values at any given time, but your controller will vibrate and your character icon will flash in red if you’re close to death, so this isn’t a big deal at all).

Maximum Chase

https://youtu.be/SN6rOzRTjlw

Performance improved, rendering improved and the game no longer crashes or hangs randomly at loading screens between levels.

Disneys Extreme Skate Adventure

Major visual issues were fixed (in-game geometry and some textures were rendered incorrectly to the point of being almost impossible to progress past some levels). The only visual issues left to fix are on the menus, but this doesn’t really break anything (some elements flicker and resize constantly, but are still visible and you can navigate them properly).

Colin McRae Rally 04

Regressions were fixed (game started to crash at the start of races last month because yes), so I took the game for a veeeery long test. Not only fully playable, but also looks great in widescreen at higher internal resolutions.

Spy Hunter 2

https://youtu.be/-kCT6vCzlkg

Since the first time this game reached in-game (almost 1 year ago), we had only one visual issue that broke it and prevented it from being playable: transparency issues that showed up in the 1st part of the tutorial level (and never stopped). This issue made almost every single particle using transparency to become a solid black and white color (covering most of the screen at any time someone was shooting someone… and come on, this IS Spy Hunter 2, someone is shooting someone 99% of the time in-game). All particles are rendered correctly now and performance has improved.

Auto Modellista

Back from the land of the dead. Auto Modellista used to be playable, then it took a regression in the knee (couldn’t even boot). Now it’s not only back in-game, but also playable and able to use higher resolutions for the first time!

Ghost Master

Confirmed as fully playable, with only some minor visual issues with some ghost effects not being transparent (they’re small enough and don’t last much time, so this doesn’t block your gameplay in any way)

RalliSport Challenge

https://youtu.be/-GhyTmbRaRA

Another regression smashed and the game is now fully playable. Performance is better than ever and you don’t need to worry about it crashing between loading screens anymore.

Red Dead Revolver

https://youtu.be/Bb9XeJIzhNk

Yet another fully playable game, the latest gamebreaking issue was related to some textures not being visible in some levels (instead of the correct textures, you had a non shaded solid color, so you couldn’t even have a clue of where you were walking at some points, making it very hard to progress). Only visual issue left (that I could notice, please report if you find anything else wrong) is some weird artifacts visible over the screen in the intro animations if you’re playing with resolutions above the native one.

Sneakers

https://youtu.be/zQPsm4sVpk8

Cute, exclusive, fully playable and with good performance, that’s a nice combo to have. Before the HLSL changes were finished, you couldn’t see anything in-game at all, the screen was covered with a solid color. Now you can enjoy the entire furry saga with no other major problems.

Yonenaga Kunio no Shogi Seminar

Confirmed as fully playable and good performance.

Big Mutha Truckers

Finally confirmed as fully playable, the latest minor visual issues were fixed so now you can properly enjoy the game. This is one of these cases where it was probably already playable, but no one even tried to finish it until now.

Final Words

Since the Pixel Shader HLSL branch work is now done and it’s merged into the master builds, we don’t have any other big change incoming… right? WRONG! Here comes a new hype train: https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/tree/dx11

With the pixel shader HLSL out of the way, work already started into porting rendering to D3D11, which can lead us into even more rendering improvements, more accuracy and less limitations. This is all we had for this month people, thanks for all the support and see you next report ;)

As always, don’t forget to check the updated compatibility information in our site: https://cxbx-reloaded.co.uk/compatibility


More Creators