Really weird AdvMESS/BBC micro config bug
-
@spud11 said in Really weird AdvMESS/BBC micro config bug:
Did you delete the line that just has shift from your advmess.rc (ie the one without the 'l' or the 'r')? The generic shift key needs to be deleted, I think.
Yup, tried that too.
(I also tried it all with and without the "bbcp128" prefix. My .RC file just looks like this, no prefix.)
input_map[key_pgup] auto input_map[key_play] auto input_map[key_plus] auto input_map[key_pound] auto input_map[key_print] auto input_map[key_q] auto input_map[key_quickload] auto input_map[key_quote] auto input_map[key_r] auto
-
@SpudsMcToole Okay. Try my advmess.rc file which I posted yesterday.
-
@spud11 Nope, with yours in the emulator just crashes straight back to EmulationStation.
-
@spud11 said in Really weird AdvMESS/BBC micro config bug:
That advmess.rc works with Thrust so the shift key works fine.
The annoying thing is that MESS clearly IS capable of distinguishing between the Shift keys, because when you set the controls through the menu they work fine. Something's just going wrong in saving the settings out.
There has to be a simple solution here, but I'm up to about 70 permutations of every line that could possibly be involved and still not finding the gremlin.
-
Okay, here's what I've found with some more methodical experimenting.
Up at the top of the .RC file we have all the input_map commands that apply to everything. The three we're concerned with are these:
input_map[key_lshift] auto input_map[key_rshift] auto input_map[key_shift] auto
The first two don't seem to affect anything. Whatever you set them to will be overwritten by what's in the third one (the generic Shift). And whatever you put in the generic-Shift entry will show up in the MESS menu for both of the Shift options, and neither of them will work in the game because they somehow cancel each other.
If you delete the generic Shift line, the other two are still ignored. The MESS menu will revert to the generic default, which is to show "rshift" and "lshift" for the two SHIFT entries, and both keys will work independently of each other. Good news!
BUT, if you manually assign a joystick button to either of them in the MESS menu, it'll work fine until you quit the game, but the mapping won't be saved and you'll have to re-map it every time you boot the game up. And if you add it into the .RC file yourself it'll be totally ignored/overwritten by the default option.
So for example if you delete the input_map[key_shift] line and add this line to the game-specific mapping:
bbcb[home_pi_retropie_roms_bbcmicro_tempest]/input_map[key_rshift] keyboard[0,rshift] or joystick_button[0079_0011,4]
...MESS just acts like it isn't there. If I open up the menus, the two SHIFT options still just read "rshift" and "lshift", with no joystick buttons selected.
If I swap it to a generic-Shift line:
bbcb[home_pi_retropie_roms_bbcmicro_tempest]/input_map[key_shift] keyboard[0,rshift] or joystick_button[0079_0011,4]
...MESS treats it as if I'd restored the original generic Shift mapping, ie it applies it to both of the SHIFT options in the menu, which means it doesn't work.
You can delete all three of the input_map lines referring to Shift keys from the top part of the .RC file and it won't make any difference. Whether you have them up there or as part of game-specific lines further down, MESS treats them identically - generic Shift overwrites anything you put in the others, and applies it to both Shifts in the menu, cancelling both of them out.
All I need to do now is work out how the hell you fooled it for Thrust.
-
@SpudsMcToole said in Really weird AdvMESS/BBC micro config bug:
All I need to do now is work out how the hell you fooled it for Thrust.
I'm lost. I've cloned your settings from your ADVMESS.RC exactly (swapping in my joystick button for yours, but no other changes), so the relevant lines are:
input_map[key_lshift] keyboard[0,lshift] or joystick_button[0079_0011,4] input_map[key_rshift] keyboard[0,rshift] input_map[key_shift] auto bbcb[home_pi_retropie_roms_bbcmicro_tempest]/input_map[key_lshift] joystick_button[0079_0011,4] or keyboard[0,lshift] bbcb[home_pi_retropie_roms_bbcmicro_tempest]/input_map[key_rshift] joystick_button[0079_0011,4] or keyboard[0,lshift]
And it's just ignoring everything and using the default generic-Shift settings, ie the two Shift options in the MESS menu show up as "lshift" and "rshift", no joystick buttons assigned at all.
I've been right through your ADVMESS.RC trying to find another line that could be changing anything, and drawn a blank.
-
Have you thought of trying a different keyboard ?
All of your problems seem seem to stem from the keyboard.
For what it's worth, I tried Thrust - the filename is "Thrust (EU).ssd", and it worked perfectly. The shift key operated thrust, the spacebar for shields, Return for fire, caps lock for rotate left, ctrl for right. All worked fine on my little Rii X8 wireless keyboard. -
@John_RM_70 How could it possibly be the keyboard? The keyboard works fine, it's only assigning a control to a joystick button and keeping it assigned that's failing.
-
On another note, in the advmess.rc, if you removed the game name part in the config (ie: _Thrust, _Tempest) it becomes a universal control for all bbc micro games
-
@edmaul69 Yeah, I figured that, but sadly the BBC didn't even nearly have uniform game controls. Might still be a timesaver to set up a default of ZX*/ and Enter, though.
-
@SpudsMcToole So keyboard shift works but 'joystick' shift does not for you.
The only difference that I can see between your setup and mine is that I use xboxdrv. That means that once I got the shift key on my keyboard to work, I was home and hosed. Using xboxdrv meant that my joystick button was 'tied' to the keyboard shift key and I wasn't reliant on advmess' joystick implementation for the shift key.
If you are desperate for the BBC Micro to work, you could set up xboxdrv to work just for the BBC Micro or even just for individual BBC Micro games that hardwire/use the shift key.
It is a reasonable amount of work to set up, but you've demonstrated the perseverance so far that suggests to me that you are an ideal candidate for the xboxdrv program!
What kind of joystick are you using?
-
@spud11 Haha. I'm willing to wade through quite a lot of code for Pi stuff generally, but xboxdrv is a league too far for me. Have tried a couple of times in the past and run away screaming. I've never seen anything so incomprehensible in my life.
(I'm using a double arcade joystick.)
At the worst, what I've got so far means having to manually set one key every time I load one of a small handful of games. Annoying as it is not to be able to solve this logic conundrum, with BBC emulation having been a total pipedream a week ago I can live with that as the price of being able to play most of the classics, plus VIC-20 and Astrocade and Arcadia and maybe more :)
(Although this is still driving me batty:)
-
I'm finding that the BBC Micro emulator is working well following most of the above, but it's forgetting a number of joypad controls (I'm using an Xbox controller with a Raspberry Pi). Does feel close though....
-
@OneSwitch Very occasionally it seems to forget mappings for Enter for no earthly reason I can ascertain.
-
Jeez, now there are more of them - it doesn't seem to want to retain mappings for closebrace (close square brackets) either, and MESS doesn't even have a setting for the F0 button, so it also won't save that.
-
@SpudsMcToole That's a pity. I've only got 4 games setup at present so haven't encountered that problem (albeit for some reason Elite simply won't work when I chain load it - I'll need to check whether it works with the run command instead).
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.