samuelgr/Xidi

Jazz Jackrabbit 2 not working (winmm.dll)

Hexaae opened this issue · 7 comments

Can't make Jazz Jackrabbit 2 load the winmm.dll (32bit 4.1.0.0) from Xidi (I have no log output either) using this xidi.ini:

[Mapper]
Type = DigitalGamepad

[Log]
Enabled = yes
Level = 4

Tried also the GOG collection and doesn't work as well: arcade joystick directions are ignored (Hori Fighting Stick MINI, DPAD XInput for directions), only buttons do work.
(See also #5 )

This is not a Xidi issue. I have verified for myself that Jazz Jackrabbit 2 works correctly with the WinMM form of Xidi v4.1.0. Double-check that you are indeed using the 32-bit version of the DLL and, if that still fails, you can try using the HookModule form of Xidi to help (though from my own experience it is not necessary for this game).

What version of JJR do you have? Because with retail CD or GOG version DigitalGamepad doesn't work, no mods or anything added.
EDIT: just tested also the plain demo (Shareware) version (v.1.23 S), 19MB from https://www.abandonware-france.org/ltf_abandon/ltf_jeu.php?id=961&fic=liens and winmm.dll doesn't work. Maybe you have tested an already customized/patched version but with the original game files it doesn't work unfortunately.

I just re-tried with a freshly-installed and unmodified Jazz Jackrabbit 2 from GOG and it works perfectly just by dropping in the 32-bit winmm.dll file from Xidi v4.0.1.

See if the HookModule method can help you, but this is not a Xidi problem.

SOLVED

I've finally found the reason why it didn't work... I had some compatibility fixes active on "Jazz2.exe", in particular ANY of these when active will cause Xidi's winmm.dll injection to fail:

From Windows Compatibility Administrator 32bit:

  • Fix/HeapForceGrowable
  • Fix/HeapValidateFrees
  • Compatibility/DisableDXMaximizedWindowedMode (equivalent to compatibility option "Disable fullscreen optimization" )
  • Compatibility/DisableThemes

You can try yourself enabling "Disable fullscreen optimization" common compatibility option and see Xidi's winmm.dll not working anymore in JJR2.

This is the first time I see this problem (I have plenty of fixed games with MS Application Compatibility Toolkit). JJR2 must be a very peculiar game.

I use this cfg in Xidi.ini:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Jazz Jackrabbit 2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Xidi Version:     3.0.0
; Xidi Form:        WinMM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Authors:          hexaae
; Last Modified:    11/24/2022
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


[Mapper]
Type            = JazzJackrabbit2


[CustomMapper:JazzJackrabbit2]

; Directions
StickLeftX      = Axis(X)
StickLeftY      = Axis(Y)
DpadUp          = Axis(Y, -)
DpadDown        = Axis(Y, +)
DpadLeft        = Axis(X, -)
DpadRight       = Axis(X, +)

ButtonA         =Button(1)
ButtonB         =Button(2)
ButtonX         =Button(3)
ButtonY         =Button(4)
TriggerRT       =Button(5)
TriggerLT       =Button(6)
ButtonRB        =Button(7)
ButtonLB        =Button(8)

; Pause / cancel menu selection
ButtonBack      = Button(9)

; In-game menu / cancel menu selection
ButtonStart     = Keyboard(Esc)

[Log]
Enabled = no
Level = 4

Thank you for this very useful information. I was able to reproduce the problem by adding the "Disable fullscreen optimization" compatibility option to Jazz2.exe. Using the HookModule form of Xidi alongside the WinMM form solved it.

Good to know. Thank you for Xidi 👍 Looking forward to 4.1.1!