6
by SunkenSkunk
Junior Member
Interesting test results! Things are much better than I was worried about, honestly. Here's some food for thought.
Slowdown in this situation, if frames aren't being dropped, is likely from the CPU falling behind due to memory bus oversaturation. Xbox is notorious for this, and 360's GPU was even designed specifically to avoid it.
I suspect if more RAM were needed, the game would just crash (it does this, for example, with 720p combined with 2x supersampling, and not before entering a complex zone). Xbox doesn't have swapfile mechanics to shore up maxed-out RAM. The extra memory on 128MB systems is installed on the same channels as the stock 64MB, so memory bandwidth isn't increased upon expanding it fwiw.
Most Xbox games don't do the type of dynamic memory allocation that would lead to them automatically improving with increased RAM availability, unless their stock memory usage is already very close to 64MB and the engine is e.g. already throwing out texture mips to keep enough memory free. I suspect PSO doesn't behave this way due to its engine heritage, but Also I could try adding a simple bar overlay showing total memory usage or something if I get the time. Just for the sake of having hard data to push forward anyway.
It's almost overwhelmingly likely that GPU read-modify-write from alpha textures is simply starving out the CPU, though, and neither extra memory nor a faster CPU will alleviate that much (increased CPU cache size would technically help, in a way I'm unable to meaningfully quantify).
There actually are already some options to improve this 720p patch on stock systems, namely:
A) Render at anamorphic sub-720p onto a 720p backbuffer. 960x720 would reduce fillrate by 25% for example, but still be significantly higher-res than stock
B) Watch frame-present-times and engage direct3d dynamic resolution scaling to keep a certain amount of CPU-time headroom per frame (did you know the xbox supports this? it lies dormant in very very many games, as part of the D3D driver)
C) Just kinda tell end users that episode 2 can lag and gesture quietly at the improved-480p mode instead (what I'm doing until I can explore this more!)
Speaking of the 480p version, I /do/ have interest in making it widescreen, but I'd also want to fix a strange quirk Sega committed to. Basically, Xbox's presentation buffer is 720x480, always, and PSO is 640x480. To scale the image, Sega uses a GPU mode which merely centers the image within the framebuffer, leading to this game having black vertical bars which other games generally lack. The aspect ratio is 4:3.3 then, and the camera is thankfully adjusted for this.
Basically, I want to unlock the extra 13% resolution since it's actually very noticeably sharper when pulled out to widescreen, at least to my eye. This should be low-hanging fruit given how the existing set of patches works, and I'd expect it as part of the next release (when I get time to pull that together). If that works as expected, 720x480 4:3 (non-widescreen) may be included too, basically pulling the left and right screen borders out 6% on each side. 4xMSAA should still be fine in these situations, too. I'm a bit curious to know if the existing 4xMSAA-480p build induces much lag in stress-points, as 2xMSAA is an option as well.
Anyhow, thanks for the input!