RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

    Advance Mess and BBC Micro and joystick control

    Scheduled Pinned Locked Moved Help and Support
    advance messjoystickbbc micro
    75 Posts 5 Posters 10.0k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      spud11 @edmaul69
      last edited by

      @edmaul69 It added it universally for the system only. It didn't add [Thrust], I did that manually, but realised afterwards that, in fact, it made no difference.

      RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

      edmaul69E 1 Reply Last reply Reply Quote 0
      • edmaul69E
        edmaul69 @spud11
        last edited by edmaul69

        @spud11 here is the correct way to set up the individual configs in the advmess.rc. here is a channel f example:

        channelf[media_usb0_channelf_alieninv]/input_map[p1_button1] keyboard[16c0_0482,enter]
        

        my file is located here: /media/usb0/channelf/alieninv.zip . so you see that it goes to the location and name of my rom in the config. also caps and lowercase is important.

        edited for typo

        S 1 Reply Last reply Reply Quote 1
        • S
          spud11 @edmaul69
          last edited by spud11

          @edmaul69 and @caver01 Hi. After quite a bit of experimentation, I couldn't get the advmess.rc file to record settings for Thrust alone adapting the channelf[media_usb0_channelf_alieninv] statement. Not sure why, but it just wouldn't work for me. I made some other manual changes to the advmess.rc file as well to try to fix the problem, but I know advmess and advmame can be a bit picky about changes to the .rc file and ultimately, for me at least, advmess stopped working. After stripping out the changes I made, I got advmess working again, but still couldn't make changes to Thrust's keyboard settings using TAB which would be recorded automatically in advmess.rc.

          I did find a partial workaround. It isn't perfect. Two issues remain which I will outline at the bottom.

          The workaround effectively uses Thrust's default keyboard settings which are in-built in the game and then invokes xboxdrv directly by way of a bash script to match the keyboard commands against my Arcade joystick (Dragonrise usb). I've effectively bypassed runcommand altogether.

          I'm using Attract Mode. In the emulators sub-folder, I've got the following BBC Micro.cfg file:

          # Generated by Attract-Mode v2.2.1
          #
          executable           /bin/bash
          args                 "[romfilename]"
          rompath              /home/pi/RetroPie/roms/bbcmicro
          romext               .sh;.SH
          system               BBC Micro
          info_source          thegamesdb.net
          artwork    flyer           /home/pi/RetroPie/roms/bbcmicro/flyer
          artwork    marquee         /home/pi/RetroPie/roms/bbcmicro/marquee
          artwork    snap            /home/pi/RetroPie/roms/bbcmicro/snap
          artwork    wheel           /home/pi/RetroPie/roms/bbcmicro/wheel
          

          I've copied the advmess executable into a new folder /opt/retropie/emulators/bbcmicro/ and have made sure it is executable. (I just wanted to keep things "clean", but I think this step is unnecessary.)

          In the /home/pi/RetroPie/roms/bbcmicro folder, I now have a new bash script called Thrust.sh. I've made this script executable. The contents of Thrust.sh are:

          #!/bin/bash
          {
          fbi -1 -t 3 -noverbose -a "/opt/retropie/configs/bbcmicro/launching.png" </dev/tty
          sudo /opt/retropie/supplementary/xboxdrv/bin/xboxdrv \
          --silent \
          --detach-kernel-driver \
          --deadzone=4000 \
          --deadzone-trigger 15% \
          --force-feedback \
          --mimic-xpad \
          --trigger-as-button \
          --ui-buttonmap lb=void,rb=void,tl=void,tr=void,guide=void \
          --evdev /dev/input/by-path/platform-3f980000.usb-usb-0:1.3.3:1.0-event-joystick \
          --device-name "Player_1" \
          --evdev-absmap ABS_X=y1,ABS_Y=x1 \
          --ui-axismap X1=KEY_CAPSLOCK:KEY_LEFTCTRL,Y1=KEY_UNKNOWN:KEY_UNKNOWN \
          --evdev-keymap BTN_THUMB2=a,BTN_PINKIE=b,BTN_TRIGGER=x,BTN_THUMB=y,BTN_BASE3=back,BTN_BASE6=start,BTN_BASE2=lt,BTN_BASE5=rt \
          --ui-buttonmap a=KEY_ENTER,b=KEY_LEFTSHIFT,x=KEY_SPACE,back=KEY_UNKNOWN,start=KEY_UNKNOWN,lt=KEY_SPACE,rt=KEY_UNKNOWN \
          --ui-buttonmap back+rt=KEY_ESC,rt+back=KEY_SCROLLLOCK+KEY_TAB \
          &
          sudo /opt/retropie/emulators/bbcmicro/advmess bbcb -cfg /opt/retropie/configs/bbcmicro/advmess.rc -floppy /home/pi/RetroPie/roms/bbcmicro/Thrust.ssd
          sudo killall /opt/retropie/supplementary/xboxdrv/bin/xboxdrv
          } &> /dev/null 2>&1
          

          I've wrapped the script with {} and silenced it (as much as I could) with &> /dev/null 2>&1.
          The script first launches the BBC Micro launching.png for a period of 3 seconds, then moves onto invoking xboxdrv which is tailored specifically to Thrust's keyboard controls and to my Arcade joystick. While xboxdrv is functioning, the script loads advmess and the Thrust floppy disk. I still need to type CHAIN "THRUST" at the command prompt to get Thrust to start. However, the joystick works perfectly. After I exit Thrust (pressing the back and rt buttons on my joystick), xboxdrv is killed automatically.

          For every BBC Micro game, I'll need a separate bash script tailored to each game's default keyboard controls, but most of them (hopefully) will be very similar to this first script.

          There are only 2 remaining issues:
          (a) I can't achieve complete silence from the Terminal unfortunately. There is always a reference in Terminal to the "working directory" of "bin/bash"; and
          (b) I still need to type CHAIN "THRUST"at the command prompt. So the game does not start automatically.

          It would be great if someone knew how to completely "silence" Attract Mode in Terminal and how to auto start games without typing something like CHAIN "THRUST".

          RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

          caver01C 1 Reply Last reply Reply Quote 0
          • caver01C
            caver01 @spud11
            last edited by

            @spud11 AdvanceMAME (mess) does have a scripting function. I once used it to wait a second or two, then automatically type scroll lock to switch keyboard modes. Seems to me you could setup a script that types commands like chain thrust. But I expect your next game will be different, so you’d have to start making separate .rc files.

            My 4-player cocktail style cabinet built as a custom "roadcase"

            S 2 Replies Last reply Reply Quote 0
            • S
              spud11 @caver01
              last edited by

              @caver01 Hi. I reckon I probably will have only about 20 games, so I'd have no issue with doing the script. If you can recall, could you please help me do a script of that kind? Thanks.

              RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

              1 Reply Last reply Reply Quote 0
              • S
                spud11 @caver01
                last edited by

                @caver01 Well, I thought I'd have a go. I've added the following to the advmess.rc, but it doesn't work. I'm hoping you might be able to suggest changes please:

                script_emulation \
                	delay(20000); \
                	simulate_key(key_c,100); \
                	delay(200); \
                	simulate_key(key_h,100); \
                	delay(200); \
                	simulate_key(key_a,100); \
                	delay(200); \
                	simulate_key(key_i,100); \
                	delay(200); \
                	simulate_key(key_n,100); \
                	delay(200); \
                	simulate_key(key_space,100); \
                	delay(200); \
                	simulate_key(key_quote,100); \
                	delay(200); \
                	simulate_key(key_t,100); \
                	delay(200); \
                	simulate_key(key_h,100); \
                	delay(200); \
                	simulate_key(key_r,100); \
                	delay(200); \
                	simulate_key(key_u,100); \
                	delay(200); \
                	simulate_key(key_s,100); \
                	delay(200); \
                	simulate_key(key_t,100); \
                	delay(200); \
                	simulate_key(key_quote,100); \
                	delay(200); \
                	simulate_key(key_enter,100);
                	delay(200); \
                

                RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                caver01C 2 Replies Last reply Reply Quote 0
                • caver01C
                  caver01 @spud11
                  last edited by caver01

                  @spud11 You did what I would have suggested. I expect you looked at the script.txt on the advancemame site? Does MESS even start? If your syntax is off or you have a bad line in the .rc file, as you know, it won't even launch.

                  If it is launching, as I look at it, it appears you are starting with the script_emulation which to my interpretation of the docs should run when the emulation starts running. Then, as a precaution against timing issues, looks like you added a 20 second delay, then your keypresses for .1 seconds each, .2 between them. Am I getting this right?

                  This is exact what I would have done, hoping to shave off that initial delay once I know it is working. Does the BBC Micro require commands be entered in all caps?

                  My 4-player cocktail style cabinet built as a custom "roadcase"

                  S 1 Reply Last reply Reply Quote 0
                  • S
                    spud11 @caver01
                    last edited by spud11

                    @caver01 Hi. I did look at the advmame script examples and followed them as best I could.

                    The timings you've outlined are right.

                    However, advmame doesn't start. On the Terminal, the error is: sh: 1: commandline: not found (which is the same error I got whenever I messed up the advmess.rc file).

                    If I leave script_emulation in place, but remove all the other stuff below it, advmess will work as per normal. So there is something clearly wrong with the syntax of the script. I've tried replacing script_emulation \ with script_play \, but that doesn't work either. Anyway, I would think the latter would be incorrect anyway as I want the script to operate before the game begins, not afterwards.

                    And you are right. The BBC Micro requires capital letters. I haven't done that yet, but not including that isn't preventing the script from running, I think.

                    RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                    caver01C 1 Reply Last reply Reply Quote 0
                    • caver01C
                      caver01 @spud11
                      last edited by

                      @spud11 Yeah, it is a syntax issue. I lost my config that had the script, so I cannot use my simple example as guidance. Trial and error I think.

                      As far as timing, I think you have the right idea. . . delay after emulation starts. MESS probably cannot tell if the game has started, only that you launched a BBC Micro with some image file in the virtual floppy drive.

                      My 4-player cocktail style cabinet built as a custom "roadcase"

                      S 1 Reply Last reply Reply Quote 0
                      • S
                        spud11 @caver01
                        last edited by

                        @caver01 Well, I reckon I've tried almost every syntax permutation I can think of with exactly the same outcome - diddly squat. I found only a couple of scripts on the interwebs that use script_emulation, but none seem to help. I wound up with the following all on one line, but like everything else I've tried it doesn't work sadly:

                        script_emulation delay(20000); simulate_key(key_capslock,100); simulate_key(key_c,100); delay(200); simulate_key(key_h,100); delay(200); simulate_key(key_a,100); delay(200); simulate_key(key_i,100); delay(200); simulate_key(key_n,100); delay(200); simulate_key(key_space,100); delay(200); simulate_key(key_quote,100); delay(200); simulate_key(key_t,100); delay(200); simulate_key(key_h,100); delay(200); simulate_key(key_r,100); delay(200); simulate_key(key_u,100); delay(200); simulate_key(key_s,100); delay(200); simulate_key(key_t,100); delay(200); simulate_key(key_quote,100); delay(200); simulate_key(key_enter,100); delay(200);
                        

                        It's frustrating, especially as Advance Mame's scripting function seems to have been around for a decade or so, so you'd think it'd be pretty well documented and robust by now.

                        At least I can get the BBC Micro to work and with my joystick too. Just a pity I need the keyboard to start games.

                        RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                        caver01C edmaul69E 2 Replies Last reply Reply Quote 0
                        • caver01C
                          caver01 @spud11
                          last edited by

                          @spud11 I will dig around and see if I can find my script example. I thought I looked for that config a year ago and it was lost to a reformat.

                          My 4-player cocktail style cabinet built as a custom "roadcase"

                          S 1 Reply Last reply Reply Quote 1
                          • edmaul69E
                            edmaul69 @spud11
                            last edited by

                            @spud11 i have a question. In the emulators.cfg how do you load a cassette? All the roms i found are cassettes. I know -cart, -floppy, -flop1... but i cant get the cassette roms to run. I tried -cass and -cassette. Everything boots to the bbc commandline.

                            1 Reply Last reply Reply Quote 0
                            • S
                              spud11 @caver01
                              last edited by

                              @caver01 Thanks for having another look. That's really appreciated. I had a look on the Advance Mame forums. Not a lot of guidance there.

                              @edmaul69 I've dug around a bit on the internet, but I couldn't find any guidance for a tape switch like -cart or -floppy for Advance Mess. On the MESS forums, there's reference to tape support being broken and then fixed as of MESS 0.129, with the suggestion being that loading tapes by typing *TAPE and then LOAD "" (or something like that) is the way to go. My recommendation would be to find a repository of floppy (.ssd) files instead. I can't help there given the forum rules but googling will no doubt be of assistance.

                              RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                              edmaul69E 2 Replies Last reply Reply Quote 0
                              • edmaul69E
                                edmaul69 @spud11
                                last edited by

                                @spud11 ok i found ssd files but they do the same thing. Did you use -cart or -floppy in the emulatots.cfg?

                                1 Reply Last reply Reply Quote 0
                                • edmaul69E
                                  edmaul69 @spud11
                                  last edited by

                                  @spud11 also does it auto load the games or do i need to type something?

                                  S 1 Reply Last reply Reply Quote 0
                                  • S
                                    spud11 @edmaul69
                                    last edited by

                                    @edmaul69 You will need the -floppy switch. For example:

                                    sudo /opt/retropie/emulators/bbcmicro/advmess bbcb -cfg /opt/retropie/configs/bbcmicro/advmess.rc -floppy /home/pi/RetroPie/roms/bbcmicro/Thrust.ssd
                                    

                                    (Note that I have installed advmess in a different location from advance mame and I've got a separate advmess.rc.)

                                    The -floppyswitch is just like putting the game into the BBC's floppy drive. It does not start the game automatically. You will still need to type CHAIN "THRUST"(or whatever the rom's name is) manually as it won't auto load. The discussion I'm having with @caver01 above is about trying to automate the loading/starting of the games.

                                    RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                                    edmaul69E 1 Reply Last reply Reply Quote 0
                                    • edmaul69E
                                      edmaul69 @spud11
                                      last edited by

                                      @spud11 do i need to type the parenthesisis in bbc micro? The parenthesis key types an asterik

                                      S 1 Reply Last reply Reply Quote 0
                                      • caver01C
                                        caver01 @spud11
                                        last edited by

                                        @spud11 said in Advance Mess and BBC Micro and joystick control:

                                        script_emulation \
                                        	. . .
                                        	delay(200); \
                                        

                                        Hey, try getting rid of that trailing backslash on the very last delay(200) script command. That character denotes a broken line to be continued on the next line, and as this is the end of your script, you don't want one because whatever is next in your .rc file will be added to the very long script command.

                                        My 4-player cocktail style cabinet built as a custom "roadcase"

                                        S 1 Reply Last reply Reply Quote 1
                                        • S
                                          spud11 @edmaul69
                                          last edited by spud11

                                          @edmaul69 It depends on whether you have a US or UK keyboard. You need the parentheses. Try holding shift and pressing the 2 key.

                                          RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                                          1 Reply Last reply Reply Quote 0
                                          • S
                                            spud11 @caver01
                                            last edited by

                                            @caver01 Thanks. No, same outcome unfortunately.

                                            RetroPie v4.4.1 • RPi3 Model B • 5.1V 2.5A PSU • 32GB SanDisk Extreme microSD • 2TB Toshiba Canvio Basics Portable USB 3.0 hard drive • 4 x DragonRise USB Arcade joysticks • 2 x TurboTwist spinners • 1 x USB trackball • 1 x PS4 wireless • 1 x 8BitDo Zero

                                            caver01C 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            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.