Other, by jjturbo9,
requires at least version 1.23, with JJ2+
EASY SETUP:
1. First thing you have to do after downloading this is right-click Jazz2.exe, go to Properties > Compatibility > Change high DPI settings, and check the Override box at the bottom. Set the dropdown to ‘Application’ so the game (and your shaders) can control the resolution instead of Windows stretching the image. If you don’t do this Windows will stretch the game weirdly.
2. Then change the resolution at the start of the settings in the ddraw.ini to your monitor’s resolution. Only 1 resolution should be active, the rest should be commented out with ‘;’. On default 2560×1440 is selected in the ddraw.ini.
3. Choose your aspect ratio, this tool adds a 800×450 resolution so you could play 16:9 with that resolution if you have a 16:9 monitor. Or you can play 800×600 stretched to 16:9 or 800×600 without stretching (4:3). You can select all of this in the ddraw.ini or cncddrawconfig.exe.
4. Select your favorite shader, but the default selected in this zip is the best imo (you can read about it further down this text). If you wanna adjust the sharpness of the default shader (fsrGG.glsl), I added a —Fast Sharpen Settings— block in the shader’s script you can’t miss where you can adjust some values (I added descriptions to make it understandable).
5. Check the —high fps low-latency cpu tweaks i got from google gemini for high-end pcs— block in the ddraw.ini, somewhere close to the beginning after the part about resolutions. I commented these settings out because I found these tweaks through Google Gemini and not everyone needs them or maybe trusts them. See for yourself, but I have all of these turned on because I think it gives me lower latency and a more stable game.
6. Check all cncddrawconfig.exe and ddraw.ini settings for yourself if you want. But I set them to a good default. Every pc is different though, so you might wanna change some of them. I advise not changing anything unless you understand the setting after googling it for example, but for most settings there’s some description (they were there already and I added some).
7. Ready to play.
(you can ignore the rest if you aren’t interested in the technical details of how these shaders work)
————————————
EDIT (2026-03-19): I found a way to combine the 2 passes fsr.glsl and fast-sharpen.glsl into 1 glsl shader, which keeps latency to a minimum because it removes the extra work of having to draw the screen twice. And it’s also easier to setup than having 2 passes. I made this with help of Google Gemini (3.1 pro, thinking level: high) so that’s why it’s called fsrGG.glsl. This is the shader I like most now, because fsr looks really similar to xbr (which is the best looking one) but is lighter (so lower latency). Combined with the sharpening it’s the best one (without sharpening it’s a bit too blurry imo) and in some cases it looks even better than xbr; with non-integer scaling the grids look more even with fsr than with xbr! If you wanna use fsrGG.glsl but think it’s too sharp or not sharp enough; you can tweak the values; I added a FAST SHARPEN SETTINGS block you can’t miss if you scroll through the shader’s script. Now, fsrGG.glsl is the default shader selected by the cncddrawconfig.exe if you download this zip.
If you use a 16:9 monitor this enables you to play jj2+ in 16:9 without stretching anything, so Jazz won’t look as fat and the tiles will be square instead of using 800×600 stretched or with black borders… You have to select 800×450 in the jj2+ drop-down window menu under ‘video’ (after pressing alt+enter to get the menu) or you can select it in the game menu (options -> video).
In the cncddrawconfig.exe you can choose some things, I already set it to the best settings mostly but you have a choice between basically 2 renderers: Direct3D9 or OpenGL, for the lowest latency on Windows use Direct3D9, Lanczos looks best. But if you want it to look better choose OpenGL (OpenGL also works better on other OS’s). I only added 3 shaders because they look best from my experience. Use xBR lvl1 for the lowest latency OpenGL shader but lvl 3 looks best. Lvl 2 is in-between these. If you don’t change anything in the cncddrawconfig.exe it’s set it to OpenGL xBR lvl2. I also added xBR lvl1 and lvl2 noblend and some basic shaders like nearest neighbor.glsl and lanczos.glsl; they look worse but for an old pc they might be the only ones that run fast enough on some PC’s. Or maybe you wanna choose the 3rd renderer (GDI) if you have a really old pc, up to you to decide.
I set ‘limit game speed’ to ‘no limit’ and disabled ‘limit fps’ to let jj2+ handle this itself. You can set the maxfps in game’s plus.ini if you want.
I also added accuratetimers=true because I asked chatgpt and google gemini if I could improve the ddraw.ini and they said: “accuratetimers=true ensures that Jazz Jackrabbit 2+ maintains consistent game logic at its native 70-tick speed. On modern CPUs, the game’s timing can fluctuate due to faster processors and multitasking, which can cause the game to “speed up” or experience micro-stutters. Enabling accurate timers forces the game to rely on precise frame timing, ensuring stable physics, animation, and input responsiveness, just like it would on the original hardware.” I tested it with this setting and the game runs fine with it so I kept it. If you have older hardware this setting might not be for you though, if you notice any issues try removing that line from the ddraw.ini or setting it to false.
It was quite some tweaking to get it just right, I also tweaked the shader file (I customized xBR lvl2 to get xbr lvl1, a slightly lighter version, with the help of chatgpt). So I thought why not share it here including the tweaks, so someone else that plays this game doesn’t have to tweak it. Some settings didn’t make any difference so I just kept them on the default setting, no need to change them although it might be different for other hardware. But I used these settings for multiple windows pc’s (5 at least) and it worked on all of them.
IMPORTANT (I already mentioned this but just to be clear): if you want the window options (the drop-down menu’s) like we normally have in jj2 you have to press ALT+ENTER, and you can switch back to full-screen using that as well. Sometimes switching back gives a little white border (for me at least), then I just press the windows key and go back to jj2+ afterwards and it’s perfect again. And you can access the chatlogger with alt+tab after pressing ALT+ENTER. If you don’t use alt+enter first it won’t open the chatlogger if you click it but it will go to the game automatically. It’s a bit weird in combination with the chatlogger so if you are scripting and need it a lot, or if you use it for chatting a lot; consider just disabling the cncddrawconfig.exe temporarily by just putting the 3 files (cncddrawconfig.exe, ddraw.ini and ddraw.dll) in a zip and removing them from your jj2 folder, that way they are disabled and you can easily put it back again later.
I don’t include many shaders (only the most standard and best ones) because it’s so much tweaking. I wanna keep this simple and it’s not needed for this game. If you wanna have more shaders you can download them from the link I included in the credits.
I also added some screenshots so you can see if you like it. They’re compressed though, because the file size was too big. So just try it for yourself if you wanna see the full quality… If you don’t like it; just delete it again, I personally like it a lot.
If you have something to add; feel free to leave some feedback in the review section.
Extra options if you’d like (more complex but it works):
In the cncddrawconfig.exe I set it to ‘presentation: fullscreen’ for the 1600×900 upscale, because the input latency is a bit lower that way and it’s more true to the pixelart when the resolution is just doubled from 800×450. But if you want it upscaled to your monitor’s resolution select ‘presentation: fullscreen upscaled’ instead…
You can also use this to upscale 800×600 to whatever your screen’s resolution is and add your favorite shader to get the most out of it. Inside cncddrawconfig.exe just change presentation to fullscreen upscaled. If you want it stretched to your screen uncheck ‘maintain aspect ratio’ and if you have a 16:9 screen but want the game to be 4:3 with black borders check ‘maintain aspect ratio’. Just make sure your video driver settings aren’t overriding these scaling settings though.
Or you can play 800×600 upscaled to 1600×1200. Just add width=1600 height=1200 to the ddraw.ini (it’s now set to 0 which defaults to the game’s request which doesn’t always give you the upscaled version). If that doesn’t work try “jazz.exe -> properties -> compatibility -> change high dpi settings -> check ‘Override high DPI scaling behavior’ -> Scaling performed by: Application” and also for the cncddrawconfig.exe if that wasn’t enough. This way you can keep presentation to fullscreen and it will be integer scaling to have less input delay and it will be more true to the pixelart than upscaling to 1080p or 1440p. Also, for jj2+ an aspect ratio of 4:3 might be better than 16:9, but that’s up to you to decide… The maintain aspect ratio setting doesn’t work with fullscreen though so you have to play with black borders in the case your monitor is 16:9 and you play with 1600×1200. If you wanna have true 1600×1200 with black borders on all sides of the game you have to put fullscreen=true and boxed=true in the ddraw.ini as well, that way it’s true integer scaling instead of just 1600×1200 as big as possible on your screen without changing the aspect ratio. If you wanna have 800×600 stretched to 16:9 just use ‘fullscreen upscaled’ instead with slightly more input delay by lack of integer scaling or select fullscreen but add your monitor’s resolution to the ddraw.ini as width and height, it still won’t be integer scaling so it probably still has more input delay than 1600×1200 but it’s up to you what you prefer.
EDIT (2026-01-31): You can also layer shaders on top of each-other by choosing 1 base shader in the cncddrawconfig.exe and then calling your 2nd shader the same name (same filename) with added ‘.pass1’ so for example I use ‘xbr-lvl3.glsl’ and added ‘xbr-lvl3.glsl.pass1’ to the shader folder with a ‘fast sharpen’ filter as the script of that pass1. I also changed the values of the fast sharpen filter to make it more subtle, I made it stand out in the shader script where to change the values for yourself, but the values of the fast sharpen shader I included here are the ones I liked best for xbr-lvl3.glsl.pass1. Just open the shader in notepad or another script editor if you wanna see or change it.
-So if you have a favorite shader and wanna sharpen it a bit: Rename (a copy of) fast-sharpen.glsl to “YourFavoriteShader.glsl.pass1” and optionally tweak the sharpen values within the shader’s script.
EDIT (2026-02-24): Before it was just an honorable mention but I noticed for some rasters/grids in-game, FSR actually looks the best if you don’t integer-scale it. It’s also faster than xbr-lv3 while it only looks slightly worse for other things than rasters. For grids/rasters xbr-lv3 non-integer will morph the original pixels unevenly so the lines move weirdly while moving and aren’t all the same like they should… So I included FSR now too. For some levels xbr-lv3 still looks better, but the input lag will be slightly higher. It’s up to you to choose your favorite. I use FSR for some test levels because they often have levels with grids in them and input delay is important for these tests. I might like the responsiveness so much I don’t wanna switch back.
FSR has 2 passes, the main .glsl (pass0) and a glsl.pass1, this is the original pass1 fsr uses. It’s just like I said earlier; this is the way shaders can be used together with this tool, layered on top of each-other. But I actually use another pass1 for FSR than this original one. Since this pass1 just sharpens it a bit, I replaced that one for the fast-sharpen.glsl by putting the script of fast-sharpen into fsr.glsl.pass1. If you wanna do this too, tip: replace the original code, but keep the original fsr.glsl.pass1 with another name just in case you might wanna switch back if you’re in a testing phase. And for some reason I like to have higher values for that fast-sharpener when combined with FSR than when I layer it with other shaders (try some values, again; the values you can tweak are marked with comments I made stand out. I used 1.1, 0.09 and 1.1). These sharpen shaders for pass1 don’t add significant input lag for modern pc’s anyways, negligible.
———————————————————————
MIT License
Copyright © 2025 github.com/FunkyFr3sh
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the “Software”), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
| 402.00 kB | ||
| 4800.50 kB | ||
| 10.51 kB | ||
| 1.62 kB | ||
| 4.51 kB | ||
| 4.68 kB | ||
| 10.92 kB | ||
| 8.51 kB | ||
| 6.60 kB | ||
| 1.62 kB | ||
| 8.30 kB | ||
| 10.20 kB | ||
| 8.37 kB | ||
| 10.27 kB | ||
| 11.83 kB | ||
| 4.50 kB |
You must log in to write a comment or review.
Jazz2Online © 1999-INFINITY (Site Credits). We have a Privacy Policy. Jazz Jackrabbit, Jazz Jackrabbit 2, Jazz Jackrabbit Advance and all related trademarks and media are ™ and © Epic Games. Lori Jackrabbit is © Dean Dodrill. J2O development powered by Loops of Fury and Chemical Beats.
Eat your lima beans, Johnny.