So much for 'the smoothness update'. That thing was all kinds of janky thanks to a nasty oversight.
So, for those who haven't seen my rant on Discord, have you ever noticed how, with my remove-sprite-alignment patch, sometimes Quote would 'desyncronise' with the level? Like, as the camera slowly comes to a crawl, Quote would sometimes move by a pixel before the level does? Well, that's because of silly subpixel quirks. The original game divided the coordinates of both Quote and the camera individually before adding them together. My DLL didn't. The problem with that is the subpixel values of each coordinate could allow the result to overflow by 1, causing the desync effect. Anyway this update's got a fix for that, along with some other features:
1.5
- (Sprite resolution) Change resolution of Resource bitmaps as well
- (Fullscreen) Made V-Sync disable itself if it detects the monitor is not 60Hz
- (Fullscreen) Fixed fullscreen not working if the modder renamed Config.dat
- (Fullscreen) Added fullscreen integer scale setting
- (Remove sprite alignment) Fixed screen flash not appearing
- (Remove sprite alignment) Overhauled mod to fix sprite/level desync
- (Widescreen) Apply widescreen background patches to the opening cutscene
- (Widescreen) Fixed some Sand Zone enemies activating on-screen
- (Widescreen) Fixed Egg Corridor's enemies, Beetle and Basu
- (Widescreen) Tried to make fading take the same time as 4:3
I think the integer fullscreen thing's worth talking about here: by default, fullscreen mode would try to fill your entire screen by zooming-in. But this would naturally introduce some blurriness in most cases. I did have this one trick, where if I disabled the auto settings, and set aspect_ratio_x to my monitor's width, and aspect_ratio_y to any multiple of 240, I'd get pixel-perfect output with no blurriness. Turns out this doesn't always work though, depending on your monitor's size (1366x768 doesn't work, for example).
So, I added a setting to force fullscreen to display the game at its native resolution, with no zooming at all. auto_window_upscale and auto_aspect_ratio now get the fullscreen window to be the closest fit possible, without breaking that integer-scale limit. As you can guess, this introduces black bars along the top and bottom of the screen, so this is disabled by default.
Beetle and Basu have been a nightmare to deal with since I started the widescreen patch. The way they work is downright bizarre: they're not like the Sand Zone enemies, which spawn inactive, and only become active when you come within a certain range of them. No, they start off as little spawner objects, which then turn themselves into a Beetle or Basu when you walk over them.
The idea is that when you cross these spawners, a Beetle/Basu will appear off the side of the screen. You can probably guess why this is an issue for widescreen. Previously, I've just settled for spawning them further away from their spawner, so they still appear off-screen, but if your screen is wide enough, this can cause the enemies to spawn inside places like the Igor arena, where they're absolutely not meant to appear. I've tried making it so the spawner hitboxes are wider, so they technically spawn in the same place as in 4:3, but that doesn't fix the ones that spawn
behind you.
I'm pretty sure it's impossible to get accurate behaviour from those enemies in widescreen. So instead, I've just tried to make things more presentable. So now, when they spawn on-screen, they're accompanied by a small explosion effect to make it look like they teleported in (which, to be fair, they did).
Download link here.