It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
avatar
hoover1979: The Access Violation crash is the fact that JJ2 uses Direct Draw, which doesn't work on Windows versions later than XP.

I have a solution that worked for me with the original retail version of JJ2 (still had the files since the 90s) It should work with the GOG version too.

Download DGVoodoo2 Wrapper. I have successfully used this wrapper to get some Direct Draw, 3DFX Glide games and older D3D games to work on 64bit windows 7
http://dege.freeweb.hu/dgVoodoo2/dgVoodoo2.html

extract the contents to a folder of your choosing.
open the folder.
open the subfolder titled 'MS".
select "DDraw.dll" and press "CTRL + C"
navigate to your JJ2 Folder and press "CTRL +V" (this will paste the .dll file into JJ2)
Go back to the DGVoodoo2 folder.
open DGVoodoo2.
Under the top section (titled "Config folder / Running instance") press the "Add" button.
Navigate to your JJ2 folder and hit "select folder" This will link DGVoodoo 2 wrapper to JJ2.
Hit "OK" at the bottom-left of DGVoodoo2 to close.
Run Jazz Jackrabbit 2.
Profit.

WARNING: Don't set the resolution to 800x600x16 as the game will crash with a resolution initialization error when you run it next. Run at 640x480x16 or lower.

Let me know if this works for the GOG version.
I'm sorry, none of that worked for me. I still crash at the Epic Megagames screen.
The game can crash for many reasons. It has almost no error handling, and does a lot of assumptions. Bad coding.

One reason for a crash might be - your PC is too fast.

Technical details:
The game does QueryPerformanceCounter() and then divides the result by a value take from QueryPerformanceFrequency(). The division is done in way which requires the result to be 32-bit. If QueryPerformanceCounter() returns a value which won't fit to 32-bits after division, the game will crash.

The easiest fix is to run the game inside VM - those are slower.

But you could also patch the assembly. What workarounded the issue for me was changing:

`
push offset Frequency ; lpFrequency
call ds:QueryPerformanceFrequency
mov ecx, dword ptr Frequency
cmp ecx, 1000
jb short loc_careful_path
`

to:

`
push offset Frequency ; lpFrequency
call ds:QueryPerformanceFrequency
mov ecx, dword ptr Frequency
cmp ecx, 10000000
jb short loc_careful_path
`

(so I basically disallowed using the code path with that division unless frequency exceeds 10M. Since on my PC it's 3.5M, it now works.

Hex patch of my specific executable:
```
# diff -u1 <(xxd -g1 Jazz2.exe) <(xxd -g1 Jazz2.exe.orig)
--- /dev/fd/63 2021-10-09 15:20:18.000000000 +0200
+++ /dev/fd/62 2021-10-09 15:20:18.000000000 +0200
@@ -35623,4 +35623,4 @@
0008b260: 50 ff 15 f8 50 4c 00 e8 14 c8 00 00 68 00 89 4f P...PL......h..O
-0008b270: 00 ff 15 fc 50 4c 00 8b 0d 00 89 4f 00 81 f9 80 ....PL.....O....
-0008b280: 96 98 00 72 0d a1 04 89 4f 00 85 c0 75 04 b3 01 ...r....O...u...
+0008b270: 00 ff 15 fc 50 4c 00 8b 0d 00 89 4f 00 81 f9 e8 ....PL.....O....
+0008b280: 03 00 00 72 0d a1 04 89 4f 00 85 c0 75 04 b3 01 ...r....O...u...
0008b290: eb 02 32 db 84 db 88 1d fc 88 4f 00 74 2c b8 d3 ..2.......O.t,..
```
Post edited October 09, 2021 by mefistotelis
avatar
Zasso: *Shortening long post*
avatar
mmodri: You are having the same issue I am with the original JJ2. Had the same small black box show up and could only terminate through task manager.

I have one of two solutions that work.
1st solution: Run the game with the -nosound switch set. This works for me but there will be no sound, so not an optimal solution.

2nd solution: Download Jazz Jackrabbit 2 installer or install it through galaxy (If using galaxy got to More>Settings and uncheck "Automatic updating")
Download the installer for christmas chronicles (don't install this through galaxy ever) and install it in the same directory as JJ2
Download the installer for JJ2+ from the goodies (again not in galaxy) and install that again in the same directory as the original installation.
Finally remove the file Xmas98.j2e or Xmas99.j2e [Just one of these!]

This way I got the game to work with sound and no crashes AND all the levels available in the episode select menu.

Hope this helps you as you seem to have the same issue.

EDIT: typos
Thank you so much, it works.
avatar
matteste: Thank you so much, it works.
Alternate solution: Instead of faffing around in a hex editor, give a source port a try. I can verify that beating the game is possible in this.
avatar
matteste: Thank you so much, it works.
avatar
dnovraD: Alternate solution: Instead of faffing around in a hex editor, give a source port a try. I can verify that beating the game is possible in this.
I am once again asking you to stop calling that fangame a source port.
avatar
Violet_CLM: I am once again asking you to stop calling that fangame a source port.
Native C++ reimplementation of Jazz Jackrabbit 2
It's a source port, get over your high horse.

Just because it has some practically invisible quibbles that the average person (myself included) won't notice, doesn't mean it isn't deserving of the description it is.

Native C++ reimplementation of Jazz Jackrabbit 2
avatar
dnovraD: It's a source port, get over your high horse.

Just because it has some practically invisible quibbles that the average person (myself included) won't notice, doesn't mean it isn't deserving of the description it is.
Violet is right though, "A source port is a software project based on the source code of a game engine". None of the game mechanics are based on the source, the developer even confirmed this. Also a lot of features such as multiplayer are missing.