I finished making vocab lists on Renshuu for anyone who uses it. I can’t link to sets (I made each chapter it’s own list like JPDB), but you can find it by searching “Xenogears” in community lists. The first chapter list is here if it helps.
Does anyone know if editing the main topic post will reset the poll? In retrospect I should have made it it’s own post…
ooo it’s been a minute since I checked out book clubs main, y’all are starting Xenogears?? I’m so tempted to vote yes, but can’t promise I’ll be able to join in. It’s one of my absolute favorites of all time though. Plot discussion should be interesting
I will be traveling in Japan for the first three weeks of the club. I’ll be taking my Steam Deck along anyway, making most of the traveling downtime, so I’ll be playing on an emulator. I haven’t been emulating PSX in a longer while, and never before on Steam Deck, so I’m figuring out which emulator and settings to use ahead of time. Currently evaluating DuckStation and Beetle PSX HW.
The original PSX hardware notably lacks an FPU and a hardware Z-buffer while doing affine texture mapping. This trifecta resulted in the signature PSX texture warping and Z-fighting look.
This is where Parallel/Precision Geometry Transform Pipeline (PGXP) comes in! A hero named iCatButler came up with a way to reconstruct true 3D vertex positions by intercepting the geometry operations before they’re butchered by the PSX fixed-point math pipeline. (They thank a certain @simias in the announcement post, perhaps you can add some detail here? ) I think every modern emulator now includes this option.
It makes an instant difference in Xenogears as well. Before / after below, with otherwise default settings for DuckStation.
With the other settings I’m less sure. Nearest neighbor texture filtering, sprite filtering and bilinear scaling are the conservative defaults that work. Internal resolution should be safe to bump up to 3x right away, since the output will be 720p. I’m keeping the aspect ratio to 4:3, don’t want to stretch anything. Kanji is already pretty legible, but there are weird looking ones like 誰 with uneven horizontal strokes and 血 with uneven vertical ones – probably unavoidable with the low resolution.
I’m not sure if it makes sense to enable any type of CRT shader or filter with Steam Deck, given it’s not very powerful and I want to maximize battery life. I’ll experiment a little.
I didn’t do much really, it’s one of these instances where somebody trying to do something motivated others to try as well.
But your overview is mostly correct: the PlayStation GPU has two big limitations: it’s fully 2D (no notion of Z-coordinates) and it’s fully integer so every vertex is rounded to the nearest pixel. Also the Z-sorting is usually pretty low resolution to save on RAM.
Note that you mention that there is no Z-buffer, and that’s true, but that doesn’t cause texture warping. Z-buffering is only about what is in front of what, lack of Z-buffer causes a different artifact where some triangles are drawn on top of geometry that should oclude them:
It also makes the rendering less efficient because it generates a massive amount of overdraw as you draw your entire scene from back to front. When you have a Z-buffer you normally do the opposite and then discard occluded samples early on in the pipeline (that’s the reason a lazy performance hack for a lot of FPS games is to use massive weapon models that hide a quarter of the screen at all times).
The texture warping on three other hand is caused by the lack of perspective correction when mapping textures:
Call me crazy, but to me the first 3 seconds look worse in the “stable” video. I think there might just be a random fps drop/stutter here (camera movement is not smooth) that randomly didn’t happen in the “wobble” version.
I’m somewhat hesitant to apply these “fixes” anyways, because these “problems” are what people experienced back in the day, and a lot of people find them charming. I think there are even neo-retro games where people intentionally coded in “flaws” like this.
But Ideally I would try out both and see what I like better, maybe it’s in fact just better without the “wobble”.
I’m actually not sure what the exact “wobble” problem is visually, I’m struggling to see a significant difference between the two videos.
edit: oh, the oven is wobbling at 0:16. Well, yeah, that’s a bit extreme and probably not charming, haha.
The wobbling is usually caused by vertices snapping to integer coordinates instead of smoothly transitioning.
The footage here is unfiltered and the resolution increased, so it’s very noticeable. If you play at the original resolution and with a CRT shader usually it’s a bit less noticeable, although certainly not invisible.
I also play so much PSX games that I think I don’t notice these glitches anymore…
Yup, I tried to write that the signature PSX artifacts are caused by a combination of Z-fighting and that affine texture mapping. Not so much Z-fighting in this game or scene, but perspective correct textures really help the image to settle down.
I tried to showcase a particularly egregious case of it towards the upstairs oven & cupboard area that I walked past, although it’s also present in the zoom-in on the left side of the room corner.
For me the difference is very notable at the distance I’m holding Steam Deck from my face; the whole upper part of the picture is swimming when I approach that part. The oven face just doesn’t want to stay in one place, shifting all over. The table cloth to the right is likewise shifty and blurry. I wonder if bumping the internal resolution to 3x just makes it even more pronounced than it originally was without PGXP enabled… With the more stable picture my eye is drawn to the jars, bottles and the pan on top of the counter, making me wonder what they’re going to eat.
In this game the camera direction is controlled manually, and you tend to shift between the perspectives a lot, so this kind of wobbliness is a constant presence. I could always just try to find an angle where the wobbliness doesn’t bother me – and indeed that’s how I originally played this on ePSXe way back when. You definitely can get used to it.
It’s just that with how good the OLED screen on Steam Deck is, artifacts like this pop up way more than they ever did via composite or SCART cables connected to CRTs back in the day. I get that many people want to preserve the screen exactly as is, but that’s fundamentally not possible on LCD & OLED displays – so either you’re looking at way sharper pixels than intended or you’re enhancing the image in some artificial way. I guess a good CRT filter would be another way to mask the worst of it.
If I was playing this on a TV I would invest in something like https://www.retrotink.com/ for sure. With Steam Deck on the go I’m forced to figure out a configuration that preserves the intent of the original image but still looks great on a modern screen.
I wonder if that FPS drop was somehow tied to enabling recording on the Steam Deck – but then I’d expect it to be also there in the wobble clip, which I shot first. Maybe should have included some perf overlay there… Plus there’s always whatever processing YouTube adds on by default. Wish I could just embed the .mp4 file here directly.
Anyways, test it for yourself, this very first area of the game already presents a good place to test.
After careful consideration I have decided that the most reasonable path for me is ditching the original hardware (including CRTs) entirely and just emulate with good shaders on a good OLED monitor.
It’s massively more convenient and comes reasonably close to the authentic experience, although we still can’t reach the high luminosity of CRTs.
Please share your configuration as well! Maybe there are some settings and shaders that will inspire me even on lower end portable hardware.
I’m actually interested in this more generally, so this call goes out for everyone – there are a thousand and one ways to play PSX games these days, always a chance y’all have some really cozy setup to draw inspiration from.
I don’t usually use shaders on handheld because the smaller screen and less powerful hardware don’t really play well with shaders IMO. But when I prepare the email for @Akashelia I’ll also post here with my setup.
I’m also interested in good shader/filter settings. I’ve tried some CRT filters in Retroarch like CRT Royale, and they’re already nice, though not perfect.
I’ve always wondered why there is not a single great CRT filter that everyone recommends and is very close to an actual CRT display. I’m thinking it can’t be that difficult to emulate those effects, but there’s probably a technical explanation for it, like the filter only being applied to the final image and not during emulator processing (I’m a software developer myself, but not for graphics).
The effect of Dracula’s eyes being a line instead of the pixel dot is actually not a CRT effect but from SRGB decompositing or something, unfortunately I lost the link to the excellent article (that had these images) where this was explained. This would be another issue for filters/emulators to address.
CRT royale is very configurable, I don’t like the default settings but I customized a version that I like a lot. I’ll share it when I get access to my computer.
There are a few reasons:
Fancy CRT shaders can require a high-end GPU and as such are not always usable in all configs.
Fancy CRT shaders can require a high resolution (typically 4k or more) to be convincing if they emulate micro-details of the aperture grid, and as such are not always usable in all configs.
There were many CRT models in the wild, and different shaders emulate different CRTs.
Subjective taste. Some people have different wants: do you want the composite NTSC artifacting? What about aliasing artifacts? Or curvature? Or chromatic aberration? I personally find that the “perfect” CRT shader for me often varies depending on the console and sometimes even the game.
In particular some spritework in 2D games (such as your examples, but also famously the transparency effects in some MegaDrive/Genesis games) require heavy filtering to look right, meanwhile it can be a bit heavy handed for some more modern 3D games that don’t really benefit from that and often end up a bit muddied if you go full analog artifacting.
I’m probably planning on doing this on my steam deck, and don’t really want to sink any time to figure it out. If anyone wants to give a walkthrough of how to set it up good enough to play, I’d be very appreciative.
Think I just posted this in the videogame thread, so I’ll repeat here: I picked up a pretty nice CRT fairly recently and a Japanese PS2 so I’m planning on playing as authentically as you can get. Can’t use component but I do have S-Video.
Haven’t tried Xenogears yet but it’s been looking so nice with the games I have played, highly recommend if you can come across one and have some space.