Progress Report (May 2021)
Added 2021-06-07 07:44:20 +0000 UTCPlaying a game, having fun… oh, controller’s battery about to die? That was a very bad situation where the fellow CxBx-Reloaded user would be stuck without being able to save or really do anything else. Good news? That’s a thing of the past: you can now plug, unplug and switch controllers without needing to restart the emulation to get them working again! Other than this nice improvement, we also had some compatibility gains (didn’t report some of them here or on the site yet due to the need for some more hours testing, but soon™), more work for future Chihiro support in the main branch and some regressions fixed (Auto Modellista and Otogi).
General Improvements
Change IVB to an array of 4-float slots [PR #2215]
Will fix Halo logo and menu text rendering (once it's visible!).
● Removed references to fixed-function concepts, since slots might contain anything (e.g. don't exclude the 4th component of the slot corresponding to NORMAL in fixed-function mode)
● Use the IVB table directly for simplicity. Copy all table data to the vertex buffer
Few fixes toward title mount path and prepped for chihiro work [PR #2210]
This pull request resolves couple of issues to work with Chihiro and one regression found from Grand Theft Auto 3. Since Chihiro does have the CdRom0 device to mount GD-ROM along with Mbfs. Correction has been made to append mount Mbfs instead of choosing one or the other. While testing other titles, I found Grand Theft Auto 3 title regressed due to g_hCurDir being zeroed. I made a relocation into symbolic link creation to allow titles to automount themselves. We should not be relying on symbolic link objects 100% of the time. I made a complete replacement of FindNtSymbolicLinkObjectByDevice to FindEmuDirPathByDevice. With this change, the ability to support Chihiro is possible.
Keep ImageBuffer backup copy, handle ImageDesc with rebase address [PR #2221]
The previous PR only allocated memory for ImageDesc and copied the content from ImageBuffer directly. That only fixes Otogi 1 and Otogi 2, but not PGR2. With further reverse engineering of PGR2, turns out that a copy of ImageBuffer must be kept in guest memory. and Code Segments and State Segments addresses of EffectMaps in ImageDesc must be rebased to the guest memory copy of ImageBuffer.
Tested with Otogi 1, Otogi 2, and PGR2. Success. PGR2 can reach the race.
Add controller hotplug support [PR #2222]
This adds controller hotplug support by monitoring device additions/removals by using the RawInput API. I'm using this API because XInput is a poll-driven API, and thus I would need to use a busy loop to monitor for device changes, which I'd rather avoid. Instead, by using RawInput, we can receive a WM_INPUT_DEVICE_CHANGE message when it detects a change, thus avoiding the need for a busy loop.
Notable Game Improvements
Buffy the Vampire Slayer [PLAYABLE]
For some time, the major issue making it unplayable was performance (you could brute force through with faster hardware, but wasn’t very stable regardless). Now it’s fast enough to not break gameplay with the toaster I use for testing and the latest visual issues were finally fixed, making it able to be playable even on slower hardware.
Apex [PLAYABLE]
Verified as fully playable with some minor visual issues (the shadow of the car at some specific points of the tracks and some transparency issues while driving outside of the road). Performance is good enough to be fully enjoyed with anything similar (or above) an i3 2100 @ 3.1 GHz.
Final Words
Progress still going with the next hot thing (major improvements to rendering that you can already check here https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/pull/2136), with some final touches to prevent any major regression. Once this piece of the puzzle is merged, we can expect a good amount of games to become playable and many others with fewer visual issues, but for this month that’s all, see you all in the next report ;)
As always, don’t forget to check the updated compatibility information on our site: https://cxbx-reloaded.co.uk/compatibility