tl;dr - I don't suppose anyone has Xroar working with joysticks and could post their commandline or XROAR.CONF?
Sadly not every Dragon 32 game works in lr-mess, so I've been intermittently wrestling with Xroar for about three years, held back by the fact that the manual might as well be written in fricking Albanian.
The main problem is joystick control. For some bizarre reason, by default up and down are mapped onto left and right. What I mean is, if you're playing (say) Donkey King and you're on a ladder, Mario will only go up the ladder if you press left once you're on it, and down if you press right.
(Left and right also work normally as left and right, so they're effectively diagonals. Play Cashman if you want to see how that pans out.)
The Xroar manual has this to say on the subject:
XRoar supports attached joysticks, or can emulate them using the keyboard or mouse (“virtual joysticks”). There are a few built-in configurations, or new ones can be defined. Here are the built-ins:
‘joy0’ First two axes and first two buttons of first physical joystick
‘joy1’ First two axes and first two buttons of second physical joystick
‘kjoy0’ Keyboard based virtual joystick using cursor keys and Left Alt.
‘mjoy0’ Mouse based virtual joystick mapped to screen position
By default, ‘joy0’ (the first physical joystick) is mapped to the Dragon’s right joystick port, and ‘joy1’ (the second physical joystick) to the left port. Map different named joysticks with -joy-right name and -joy-left name. Right and left joystick mapping can be easily swapped by pressing Ctrl+Shift+J.
A configured “virtual joystick” can be used by pressing Ctrl+J. The first press substitutes it for the right joystick, the second press with the left joystick and a third press disables it again. The virtual joystick defaults to the keyboard-based ‘kjoy0’ described above, but can be reconfigured with -joy-virtual name.
A joystick configuration can be created or configured by selecting it by name with -joy name, and then configuring its axes with -joy-axis index=spec and buttons with -joy-button index=spec. In each case, spec has the syntax module:args, with args being a comma-separated list, the format of which is specific to module:
Module Axis args Button args
‘physical’ joystick-index,[-]axis-index joystick-index,button-index
‘keyboard’ key-name0,key-name1 key-name
‘mouse’ screen-offset0,screen-offset1 button-number
For physical joysticks a ‘-’ before the axis index inverts the axis. Key names for the keyboard module depend on the underlying toolkit. The default screen offsets for the mouse module are ‘X=2,254’ and ‘Y=1.5,190.5’ which gives reasonable behaviour for some games and utilities.
which may as well read
ARGLE GLORGLE PREEP SNOOCH PRIBBLE PRIBBLE NOONG-NONG
for all the sense it makes to me.
I have Xroar installed on my PC, where the commandline
xroar -machine dragon32 -joy-left 0,3:2:0 -joy-right 0,0:1:1
makes the joystick behave properly. But if I paste those lines into EMULATORS.CFG:
xroar-dragon32 = "/opt/retropie/emulators/xroar/bin/xroar -vo sdl -ccr simple -machine dragon32 -joy-left 0,3:2:0 -joy-right 0,0:1:1 -run %ROM%"
the joysticks stop working altogether.
If I paste them into XROAR.CONF instead:
machine-desc Dragon 32
the sticks work again, but with the same axis problem. I've tried jiggling the numbers around in every combination I can think of but nothing helps.