What's new

Tips to help with Demul Arcade Sets with G920 and Flightstick


New member
I have built a dedicated driving cabinet the includes a Logitech G920 and VKB flightstick. I want to thank this amazing community that has kept Demul alive. Getting all of the arcade systems running with Demul .07a was at times a puzzle. I learned a ton from research on the net. This is an attempt to consolidate some of my findings which should helpful to others. If you see anything that should be added or corrected I am happy to make the edit. I am not an expert or Dev but everything is working so I must be doing something right...

USB Assignments:
As most people know, Windows may reassign USB joystick assignments each time you reboot. I use 2 approaches to address this issue. First is a free utility called devreorder. You configure an ini file and drop it into your emulator directory. It works with most emulators including Demul and Super Model. For Demul a second option is Boomslangs AWESOME FFB tool which is supported on this site. Boomslang is doing some incredible work. The FFB tool also helps with the next issue, auto close.

IDirectInputDevice8 CreateEffect FAILED Error:
If I am not mistaken this error occurs when you use devices that support force feedback. Does not matter if I am right or wrong, either way, if you are running a front end, you will want to close it. There are several ways around it. First and easiest solution is the FFB tool. Second option is to add a script with your front end. I use Launchbox (I am big fan) and I found this script on-line (my apologies for not giving proper credit). Here is my complete script. Note, I run 15 copies of Demul on my machine. Each copy has different controls, FFB or no FFB and roms. I have no question there are better ways to address the different mapping and requirements but if it works, it works...

MouseMove, 9999, 9999
BlockInput, MouseMove
Send {Volume_Mute}
Winwait, padDemul,,3
IfWinExist, padDemul
IfWinNotActive, padDemul
WinActivate, padDemul
WinWaitActive, padDemul
IfWinActive, padDemul
Sleep, 500
Send, {ENTER}
Send {Volume_Mute}
Sleep 4000
Send !{Enter}
BlockInput MouseMoveOff
MouseMove, 960, 540, 0
WinClose, ahk_exe {{{StartupEXE}}}

The mouse lines are to hide the mouse by moving it off screen and then returning to the center when you close (again, apologies for lack of credit, some of these tips I picked up a year+ ago).

The Sleep and Send !{Enter} lines should only be used when launching a Hikaru rom. It sends an alt Enter which forces full screen. If you leave the line it the opposite may happy with other systems like Naomi if ‘start in full screen’ is selected in the Demul video settings.

This script also closes the emulator and returns to Launchbox when you press ESC.

Assigning controls:
The main reason I am using so many copies of Demul is there is not a ‘one size fits all’ approach to controls. Setting up controls can be an exercise in frustration. When you have more than 1 USB device it is not unusual for the Demul configure controls feature to not see a device. In my case I could only learn my VKB flightstick presses. I can use my G920 but I had to setup everything by editing the paddemul.ini file. To accomplish this I created a text file and noted the identification for all of the buttons and axis controls.

Note: Demul uses 0 as a significant value so the 1st button is _0 NOT _1. The means if you go to the Windows USB game controller setup to determine button numbers, the Demul number will be the button number -1. Example button 5 would be Joyx_4.

VKBsim Gladiator Flight Stick - 1st USB = Joy0
Joy0_0 = 16777216 Flap Up
Joy0_1 = 16777217 Flap Down
Joy0_2 = 16777218 A1
Joy0_3 = 16777219 A2
Joy0_4 = 16777220 A3
Joy0_5 = 16777221 B1
Joy0_6 = 16777222 B2
Joy0_7 = 16777223 B3
Joy0_8 = 16777224 C1
Joy0_9 = 16777225 C2
Joy0_10 = 16777226 C3
Joy0_11 = 16777227 Start
Joy0_12 = 16777228 Eject
Joy0_13 = 16777229 Mode 1 Trigger
Joy0_14 = 16777230 Mode 1 Alt Trigger
Joy0_15 = 16777231 Mode 2 Trigger
Joy0_16 = 16777232 Mode 2 Alt Trigger
Joy0_17 = 16777233 Mode 1 Top
Joy0_18 = 16777234 Mode 1 Alt Top
Joy0_19 = 16777235 Mode 2 Top
Joy0_20 = 16777236 Mode 2 Alt Top
JOY0_ANL0_KEY- = 33554688 Left
JOY0_ANL0_KEY = 33554432 Right
JOY0_ANL1_KEY- = 33554689 Up
JOY0_ANL1_KEY+ = 33554433 Down
JOY0_ANL2_KEY+ = 33554434 Throttle Up
JOY0_ANL2_KEY- = 33554690 Throttle Down
JOY0_ANL3_KEY- = 33554691 Stick Turn Left
JOY0_ANL3_KEY+ = 33554435 Stick Turn Right
Note Hat switch is not recognized, I am not aware of a compatible identifier.

Logitech G920 Wheel With Shifter 2nd USB = Joy 1
Joy1_0 = 16842752 A
Joy1_1 = 16842753 B
Joy1_2 = 16842754 X
Joy1_3 = 16842755 Y
Joy1_4 = 16842756 Right Paddle
Joy1_5 = 16842757 Left Paddle
Joy1_6 = 16842758 Right Mid
Joy1_7 = 16842759 Left Mid
Joy1_8 = 16842760 RSB
Joy1_9 = 16842761 LSB
Joy1_10 = 16842762 XBox
Joy1_11 = 16842763 Reverse
Joy1_12 = 16842764 1st
Joy1_13 = 16842765 2nd
Joy1_14 = 16842766 3rd
Joy1_15 = 16842767 4th
Joy1_16 = 16842768 5th
Joy1_17 = 16842769 6th
ANALOGLEFT JOY1_ANL0_KEY- = 33620224 Wheel Left
ANALOGRIGHT JOY1_ANL0_KEY+ = 33619968 Wheel Right
ANALOGUP JOY1_ANL1_KEY- = 33620225 Gas
ANALOGDOWN JOY1_ANL1_KEY+ = 33619969 Brake
Note Hat switch and clutch are not recognized, I am not aware of a compatible identifier.

Instead of trying to ‘learn’ each action, I would setup a new Demul directory and edit the [JAMMA0_0] section. Started with a ‘base’ ini that I would fully populate with unique functions. Launch the rom I was working on and enter the service menu. Drop down to the game settings and go to input settings. With all of the [JAMMA0_0] Buttons and axis populated you can figure out what each button and axis do. After that you go back and edit the paddemul.ini file so everything is mapped the way you want. This was tedious but it worked. It is important to note if you use the FFB plugin that there is an option to override the standard Demul approach and use FFB for some games. FFB is still in active development, I had mixed results using the input function with the biggest issue being the ‘combine pedals’ option did not work with my G920. Note, this means a separate entry in the Logitech software for each of the Demul instances. Again, a pain, but it worked.

My biggest victory was figuring out how to enter reverse in 18 wheeler and manual control to NASCAR. Both have a different solution but share a similar concept. Both require TWO buttons depressed simultaneously.

18 Wheeler
PUSH1 = 16842756 (right paddle)
PUSH2 = 16842763 (reverse)
PUSH3 = 16842763 (reverse)

No, this is not a typo. The only way to do this is via editing the paddemul.ini file. According to the diagnostics menu you can’t get to high gear. Don’t worry, it works. Push 1 is a mapped to toggle high on/off. Reality is in the game it toggles between low and high. It feels right when you play. Placing the stick in reverse (push down and shift into 6th) functionally selects low (push 2) and reverse (push 3). I wish you could use 1,2 and R but there is no way to select 2 gears simultaneously.

NASCAR has a similar issue. The manual control Is NOT configured in [JAMMA0_0] it must be a separate board in a real machine because it is mapped in [JAMMA0_1]

DIGITALUP = 16842764 1st gear
DIGITALDOWN = 16842765 2nd gear
DIGITALLEFT = 16842757 left paddle

This maps high/low gear to 1&2 on your shifter. At default it will be gears 3&4. Pull in the left paddle and it will operate as 1&2.

Just found another item:
For King of Route 66, if your steering is too sensitive use the calibration option in the volume controls and be certain to turn the mic off.

I hope this collection of tips is helpful. I wish I had all of the sources for some of these items documented. Hopefully this will help some of the Demul fans get their games running.
Last edited: