Status Update - November 2020
Added 2020-12-01 18:53:33 +0000 UTCHey there! November has come to a close and with it another chunk of work. Yet again I kept myself busy mostly with Cxbx-Reloaded and, although not as much commit-wise, I contributed some really exciting improvements.
Cxbx-Reloaded
On the surface, it might seem like I didn't contribute as much this month as I did last month. However, those changes are quite major. Additionally, since there's less of them I can briefly sum up each one of those 🙂
- Miscellaneous Direct3D LTCG fixes - a set of fixed improving LTCG games. For this chunk of work, I targeted Midtown Madness 3, but multiple games improved.
- Misc fixes after the vertex declaration changes - after the vertex declaration changes from PatrickvL were merged, countless games improved, but a few games regressed. One of those games was NASCAR Heat 2002, which I made playable last month. so I went back and fixed it again. My fixes also improved Need for Speed: Hot Pursuit 2, Tony Hawk's Pro Skater 2X, and possibly more.
- Take vertex stream offset into the account when caching VBs - a very small oversight causing major graphical glitches. It improved TOCA Race Driver, although I expect more games not to have exploding vertices any more.
- Remove hacks skipping guest resource removal if they are bound - an old hack which reportedly was needed in the past, but now just caused issues. Removing it fixed crashes in Monster Garage and OutRun 2, but I expect more games to be improved.
- Palette fixes - a fix for memory leak and a crash related to palettes. Was supposed to improve DRIV3R, but it's still running out of memory - more work is needed.
- Optimize vertex stream cache for partial buffer access - the highlight of this month. A relatively simple change to vertex stream caching and conversion brought massive performance improvements in most games! My test case was Group S Challenge which is now over 10x faster and doesn't run out of memory after a few seconds anymore, but numerous other games improved, some of which are now drastically faster or go in-game for the very first time. For more, check the pull request or watch a comparison video from Strelok.
- Modernize DxbxUpdateActivePixelShader - a style change that also removes some redundant Direct3D calls. In theory, can improve performance a bit, but in practice it's probably not measurable.
- Preserve original IO status block and context for ApcRoutine - final fix in November gets Project Gotham Racing to menus without having to delete several audio files. The game is still a mess, but we'll get there!
DuckStation
- Add SDL_Joystick support - this month I bought a steering wheel and naturally wanted to try it out with as many programs as possible. DuckStation did not support non-gamepad peripherals at all (despite the PS1 having several peripherals, including steering wheels) so I got to work and added basic support for those. Playing those ancient games on a modern steering wheel is surprisingly fun!
SilentPatch for Mass Effect
At last, modding! SP for Mass Effect had a rather puzzling bug reported, so for N7 Day we went back to it and troubleshot that. The fix is now out, so no more broken AI.
A side note - funnily enough, Abstraction is providing engineering support for Mass Effect: Legendary Edition! I'm not involved in this project personally, but I made sure that the team is aware of this AMD-exclusive issue 😁
Other
I'm going to violate my own rules a bit and mention something I did not work on personally, but I think the project is worth any extra publicity - after over 1.5 years in development, Soapy released REDRIVER2 - a reverse-engineered Driver 2! It's amazing to see this game run natively on PC without the need for an emulator, especially since it's always been the odd one never released outside PlayStation.
What's next?
I feel rather motivated recently so you can expect me to continue contributing to various projects. I have an outstanding pull request for PCSX2 (which I will list in Status Updates once it's merged), and I also started looking into MAME. Can't promise anything because it's a different challenge compared to what I've been doing lately, but I'm optimistic!