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

    AdvMESS For Dummies - a basic guide

    Scheduled Pinned Locked Moved Help and Support
    advmessmessbbcastrocadefairchild
    75 Posts 7 Posters 11.3k 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
      SpudsMcToole Banned
      last edited by SpudsMcToole

      Okay, this is the post I wish someone had put up for me before I spent several days flailing around trying to get various MESS emulators to work in Retropie, and eventually just about getting there with a few tips from friendly souls.

      Obviously you'll need to start by installing AdvMESS, which is included in AdvMAME. If I had to tell you that bit, stop reading now.


      1. FIRST, CHOOSE YOUR SYSTEM

      It has to be one supported by MESS, of course. But let's start with the one I initially tried, the BBC Micro.

      2. UPLOAD YOUR ROMS

      Add a new folder to /home/pi/RetroPie/roms that you're going to put your game files in. We'll call this one "bbcmicro", sensibly, so that means your new folder is /home/pi/RetroPie/roms/bbcmicro. In this one we'll put all our games, which for the purposes of this example are .SSD files.

      0_1541162012883_beebgames.jpg

      3. ADD THE SYSTEM TO ES_SYSTEMS.CFG

      Go to /opt/retropie/configs/all/emulationstation and open up es_systems.cfg. Add the BBC by editing in these lines, using the same name as you've chosen for your ROM folder - in this case "bbcmicro". (But you can put anything you like for "fullname".)

        <system>	 	
          <name>bbcmicro</name>	 	 
          <fullname>BBC Micro</fullname>	 	 
          <path>/home/pi/RetroPie/roms/bbcmicro</path>	 	 
          <extension>.zip .ZIP .ssd .SSD</extension>	 	 
          <command>/opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ bbcmicro %ROM%</command>	 	 
          <platform>bbcmicro</platform>	 	 
          <theme>bbcmicro</theme>	 	 
        </system>
      

      It should be pretty obvious how it works for other systems, just by replacing the system-specific bits of that text. The Bally Astrocade, for example, would look like this:

        <system>
          <name>astrocade</name>
          <fullname>Bally Astrocade</fullname>
          <path>/home/pi/RetroPie/roms/astrocade</path>
          <extension>.zip .ZIP .bin .BIN</extension>
          <command>/opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ astrocade %ROM%</command>
          <platform>astrocade</platform>
          <theme>astrocade</theme>
        </system>
      

      Don't forget to change the <extension part> or Retropie won't recognise your game files - BBC games come in .SSD format, for example, whereas Astrocade ones are generally .BIN files.

      4. ADD YOUR BIOS FILES (IF NEEDED)

      Most MESS systems will require BIOS files. Download the ones you want from any of numerous places like these:

      http://cominf0.narod.ru/mess123.htm
      http://mess.oldos.net/
      https://archive.org/details/MESS-0.151.BIOS.ROMs

      and copy them into /opt/retropie/configs/mame-advmame/rom.

      0_1541162301909_rpbios.jpg

      5. MAKE A SETTINGS FILE

      Create a new file in /opt/retropie/configs/mame-advmame in the name of your chosen system with .RC on the end - so in our case it's /opt/retropie/configs/mame-advmame/bbcmicro.rc - containing this text:

      debug_crash no
      debug_rawsound no
      debug_speedmark no
      
      device_alsa_device default
      device_alsa_mixer channel
      device_color_bgr15 yes
      device_color_bgr16 yes
      device_color_bgr24 yes
      device_color_bgr32 yes
      device_color_bgr8 yes
      device_color_palette8 no
      device_color_yuy2 no
      
      device_joystick auto
      device_keyboard sdl
      device_mouse none
      
      device_raw_firstkeyhack no
      
      device_sdl_samples 512
      device_sound auto
      
      device_video sdl
      device_video_cursor auto
      device_video_doublescan yes
      device_video_fastchange yes
      device_video_interlace no
      device_video_output overlay
      device_video_overlaysize 0
      device_video_singlescan no
      device_video_clock 10 - 150 / 30.5 - 60 / 55 - 130
      
      dir_artwork /home/pi/.advance/artwork:/usr/local/share/advance/artwork:/opt/retropie/emulators/advmame/share/advance/artwork
      dir_crc /home/pi/.advance/crc
      dir_diff /home/pi/.advance/diff
      dir_hi /home/pi/.advance/hi
      dir_image /home/pi/.advance/image:/usr/local/share/advance/image:/opt/retropie/emulators/advmame/share/advance/image:/opt/retropie/configs/mame-advmame/image:/home/pi/RetroPie/roms/bbcmicro
      dir_inp /home/pi/.advance/inp
      dir_memcard /home/pi/.advance/memcard
      dir_nvram /home/pi/.advance/nvram
      dir_rom /home/pi/.advance/rom:/usr/local/share/advance/rom:/opt/retropie/emulators/advmame/share/advance/rom:/opt/retropie/configs/mame-advmame/rom
      dir_sample /home/pi/.advance/sample:/usr/local/share/advance/sample:/opt/retropie/emulators/advmame/share/advance/sample
      dir_snap /home/pi/.advance/snap
      dir_sta /home/pi/.advance/sta
      
      display_adjust none
      display_antialias no
      display_artwork_backdrop no
      display_artwork_bezel no
      display_artwork_crop no
      display_artwork_overlay no
      display_beam 1
      display_brightness 1
      display_buffer no
      display_color auto
      
      # Below widens the screen to 16:9
      display_expand 1.00
      
      display_flicker 0
      display_flipx no
      display_flipy no
      display_frameskip auto
      display_gamma 1
      display_intensity 1.5
      display_interlaceeffect none
      display_magnify auto
      display_magnifysize 640
      display_mode auto
      display_pausebrightness 1
      display_resize fractional
      display_resizeeffect none
      display_restore no
      display_rgbeffect none
      display_rol no
      display_ror no
      display_scanlines no
      display_skipcolumns auto
      display_skiplines auto
      display_translucency no
      display_vsync yes
      
      include 
      input_hotkey yes
      input_idleexit 0
      input_map[event10] auto
      input_map[event11] auto
      input_map[event12] auto
      input_map[event13] auto
      input_map[event14] auto
      input_map[event1] auto
      input_map[event2] auto
      input_map[event3] auto
      input_map[event4] auto
      input_map[event5] auto
      input_map[event6] auto
      input_map[event7] auto
      input_map[event8] auto
      input_map[event9] auto
      
      input_map[key_0] joystick_button[0,18] or keyboard[0,0]
      input_map[key_1] joystick_button[0,8]  or keyboard[0,1]
      input_map[key_2] joystick_button[0,9]  or keyboard[0,2]
      input_map[key_3] joystick_button[0,10] or keyboard[0,3]
      input_map[key_4] joystick_button[0,11] or keyboard[0,4]
      input_map[key_5] joystick_button[0,12] or keyboard[0,5]
      input_map[key_6] joystick_button[0,13] or keyboard[0,6]
      input_map[key_7] joystick_button[0,14] or keyboard[0,7]
      input_map[key_8] joystick_button[0,15] or keyboard[0,8]
      input_map[key_9] joystick_button[0,16] or keyboard[0,9]
      
      input_map[key_a] auto
      input_map[key_again] auto
      input_map[key_alt] auto
      input_map[key_asterisk] auto
      input_map[key_b] auto
      input_map[key_back] auto
      input_map[key_backquote] auto
      input_map[key_backslash] auto
      input_map[key_backspace] auto
      input_map[key_break] auto
      input_map[key_c] auto
      input_map[key_capslock] joystick_digital[0079_0006_3,0,1,1] or keyboard[0,capslock]
      input_map[key_closebrace] auto
      input_map[key_colon] auto
      input_map[key_comma] auto
      input_map[key_copy] auto
      input_map[key_ctrl] auto
      input_map[key_cut] auto
      input_map[key_d] auto
      input_map[key_del] joystick_button[0,17] or keyboard[0,del] or keyboard[0,backspace]
      input_map[key_diesis] auto
      input_map[key_doublequote] auto
      input_map[key_down] auto
      input_map[key_e] auto
      input_map[key_edit] auto
      input_map[key_end] auto
      input_map[key_enter] joystick_button[0,19] or keyboard[0,enter]
      input_map[key_equals] auto
      input_map[key_esc] auto
      input_map[key_f10] auto
      input_map[key_f11] auto
      input_map[key_f12] auto
      input_map[key_f13] auto
      input_map[key_f14] auto
      input_map[key_f15] auto
      input_map[key_f16] auto
      input_map[key_f17] auto
      input_map[key_f18] auto
      input_map[key_f19] auto
      input_map[key_f1] auto
      input_map[key_f20] auto
      input_map[key_f21] auto
      input_map[key_f22] auto
      input_map[key_f23] auto
      input_map[key_f24] auto
      input_map[key_f2] auto
      input_map[key_f3] auto
      input_map[key_f4] auto
      input_map[key_f5] auto
      input_map[key_f6] auto
      input_map[key_f7] auto
      input_map[key_f8] auto
      input_map[key_f9] auto
      input_map[key_f] auto
      input_map[key_fctn] auto
      input_map[key_find] auto
      input_map[key_forward] auto
      input_map[key_g] auto
      input_map[key_graph] auto
      input_map[key_h] auto
      input_map[key_help] auto
      input_map[key_hold] auto
      input_map[key_home] auto
      input_map[key_i] auto
      input_map[key_ins] auto
      input_map[key_j] auto
      input_map[key_k] auto
      input_map[key_l] auto
      input_map[key_lalt] auto
      input_map[key_lctrl] auto
      input_map[key_left] auto
      input_map[key_less] auto
      input_map[key_lshift] auto
      input_map[key_m] auto
      input_map[key_menu] auto
      input_map[key_minus] auto
      input_map[key_move] auto
      input_map[key_n] auto
      input_map[key_numlock] auto
      input_map[key_o] auto
      input_map[key_open] auto
      input_map[key_openbrace] auto
      input_map[key_p] auto
      input_map[key_pad_0] auto
      input_map[key_pad_1] auto
      input_map[key_pad_2] auto
      input_map[key_pad_3] auto
      input_map[key_pad_4] auto
      input_map[key_pad_5] auto
      input_map[key_pad_6] auto
      input_map[key_pad_7] auto
      input_map[key_pad_8] auto
      input_map[key_pad_9] auto
      input_map[key_pad_asterisk] auto
      input_map[key_pad_colon] auto
      input_map[key_pad_diesis] auto
      input_map[key_pad_enter] auto
      input_map[key_pad_minus] auto
      input_map[key_pad_plus] auto
      input_map[key_pad_slash] auto
      input_map[key_paste] auto
      input_map[key_pause] auto
      input_map[key_period] auto
      input_map[key_pgdn] auto
      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
      input_map[key_ralt] auto
      input_map[key_rctrl] auto
      input_map[key_record] auto
      input_map[key_restore] auto
      input_map[key_rew] auto
      input_map[key_right] auto
      input_map[key_rshift] auto
      input_map[key_s] auto
      input_map[key_scrlock] auto
      input_map[key_semicolon] auto
      input_map[key_shift] auto
      input_map[key_slash] auto
      input_map[key_space] auto
      input_map[key_stop] auto
      input_map[key_store] auto
      input_map[key_t] auto
      input_map[key_tab] keyboard[0,tab]
      input_map[ui_configure] keyboard[0,lalt] keyboard[0,tab] or keyboard[0,ralt] keyboard[0,tab]
      input_map[key_u] auto
      input_map[key_undo] auto
      input_map[key_up] auto
      input_map[key_v] auto
      input_map[key_w] auto
      input_map[key_x] auto
      input_map[key_y] auto
      input_map[key_z] auto
      input_map[p1_dialx] auto
      input_map[p1_dialy] auto
      input_map[p1_lightgunx] auto
      input_map[p1_lightguny] auto
      input_map[p1_mousex] auto
      input_map[p1_mousey] auto
      input_map[p1_paddlex] auto
      input_map[p1_paddley] auto
      input_map[p1_pedalbrake] auto
      input_map[p1_pedalgas] auto
      input_map[p1_pedalother] auto
      input_map[p1_stickx] auto
      input_map[p1_sticky] auto
      input_map[p1_stickz] auto
      input_map[p1_trackballx] auto
      input_map[p1_trackbally] auto
      input_map[p2_dialx] auto
      input_map[p2_dialy] auto
      input_map[p2_lightgunx] auto
      input_map[p2_lightguny] auto
      input_map[p2_mousex] auto
      input_map[p2_mousey] auto
      input_map[p2_paddlex] auto
      input_map[p2_paddley] auto
      input_map[p2_pedalbrake] auto
      input_map[p2_pedalgas] auto
      input_map[p2_pedalother] auto
      input_map[p2_stickx] auto
      input_map[p2_sticky] auto
      input_map[p2_stickz] auto
      input_map[p2_trackballx] auto
      input_map[p2_trackbally] auto
      input_map[safequit] auto
      input_map[service_coin5] auto
      input_map[service_coin6] auto
      input_map[service_coin7] auto
      input_map[service_coin8] auto
      input_map[ui_cancel] joystick_button[0079_0006_3,8] joystick_button[0079_0006_3,10] or keyboard[0,f7]
      input_map[ui_mode_next] keyboard[0,f24]
      input_map[ui_mode_pred] keyboard[0,f24]
      input_map[ui_reset_machine] joystick_button[0079_0006,4] or joystick_button[0079_0006_2,4] or keyboard[0,f9]
      input_map[ui_toggle_debug] keyboard[0,f24]
      
      
      input_steadykey no
      
      lcd_server none
      lcd_speed 4
      lcd_timeout 500
      
      misc_bios default
      misc_cheat no
      misc_cheatfile cheat.dat
      misc_difficulty none
      misc_eventdebug no
      misc_eventfile event.dat
      misc_freeplay no
      misc_hiscorefile hiscore.dat
      misc_lang none
      misc_languagefile english.lng
      misc_mutedemo no
      misc_quiet yes
      misc_ramsize auto
      misc_safequit no
      misc_smp no
      misc_timetorun 0
      
      record_sound no
      record_sound_time 15
      record_video no
      record_video_interleave 2
      record_video_time 15
      
      script_coin1 
      script_coin2 
      script_coin3 
      script_coin4 
      script_emulation 
      script_event1 
      script_event10 
      script_event11 
      script_event12 
      script_event13 
      script_event14 
      script_event2 
      script_event3 
      script_event4 
      script_event5 
      script_event6 
      script_event7 
      script_event8 
      script_event9 
      script_led1 on(kdb, 0b1); wait(!event()); off(kdb, 0b1);
      script_led2 on(kdb, 0b10); wait(!event()); off(kdb, 0b10);
      script_led3 
      script_play 
      script_safequit 
      script_start1 
      script_start2 
      script_start3 
      script_start4 
      script_turbo while (event()) { toggle(kdb, 0b100); delay(100); } off(kdb, 0b100);
      script_video wait(!event()); set(kdb, 0);
      
      sound_adjust auto
      sound_equalizer_highvolume 0
      sound_equalizer_lowvolume 0
      sound_equalizer_midvolume 0
      sound_latency 0.05
      sound_mode auto
      sound_normalize yes
      sound_samplerate 44100
      sound_samples yes
      sound_volume 0
      
      sync_fps auto
      sync_resample auto
      sync_speed 1
      sync_startuptime auto
      sync_turbospeed 3
      
      ui_color[help_other] 000000 808080
      ui_color[help_p1] 000000 ffff00
      ui_color[help_p2] 000000 00ff00
      ui_color[help_p3] 000000 ff0000
      ui_color[help_p4] 000000 00ffff
      ui_color[interface] 000000 ffffff
      ui_color[select] 000000 afffff
      ui_color[tag] 247ef0 ffffff
      ui_font auto
      ui_fontsize auto
      ui_helpimage auto
      ui_translucency 0.8
      
      input_map[p1_up] joystick_digital[0079_0006_3,0,0,0] or keyboard[0,up]
      input_map[p1_down] joystick_digital[0079_0006_3,0,0,1] or keyboard[0,down]
      input_map[p1_left] joystick_digital[0079_0006_3,0,1,1] or keyboard[0,left]
      input_map[p1_right] joystick_digital[0079_0006_3,0,1,0] or keyboard[0,right]
      input_map[p1_start] joystick_button[0079_0006_3,7] or keyboard[0,1]
      input_map[p1_select] joystick_button[0079_0006_3,7] or keyboard[0,5]
      input_map[p2_up] joystick_digital[0079_0006,0,0,0] or keyboard[0,r]
      input_map[p2_down] joystick_digital[0079_0006,0,0,1] or keyboard[0,f]
      input_map[p2_left] joystick_digital[0079_0006,0,1,1] or keyboard[0,d]
      input_map[p2_right] joystick_digital[0079_0006,0,1,0] or keyboard[0,g]
      input_map[p2_button1] joystick_button[0079_0006,1] or keyboard[0,a]
      input_map[p2_button2] joystick_button[0079_0006,3] or keyboard[0,s]
      input_map[p2_button3] joystick_button[0079_0006,5] or keyboard[0,q]
      input_map[p2_button4] joystick_button[0079_0006,0] or keyboard[0,w]
      input_map[p2_button5] joystick_button[0079_0006,2]
      input_map[p2_button6] 
      input_map[p2_button7] 
      input_map[p2_button8] 
      input_map[p2_button9] 
      input_map[p2_button10] 
      input_map[p2_start] joystick_button[0079_0006,4] or joystick_button[0079_0006_3,10] or keyboard[0,2]
      input_map[p2_select] joystick_button[0079_0006,4] or joystick_button[0079_0006_3,10] or keyboard[0,6]
      input_map[ui_up] joystick_digital[0079_0006_3,0,0,0] or keyboard[0,up]
      input_map[ui_down] joystick_digital[0079_0006_3,0,0,1] or keyboard[0,down]
      input_map[ui_left] joystick_digital[0079_0006_3,0,1,1] or keyboard[0,left]
      input_map[ui_right] joystick_digital[0079_0006_3,0,1,0] or keyboard[0,right]
      input_map[ui_select] joystick_button[0079_0006_3,2] or keyboard[0,enter]
      input_map[ui_record_start] 
      input_map[ui_record_stop] 
      

      6. MAKE A CONFIG FILE

      Go to /opt/retropie/configs and add a folder with the same name as your ROMs folder, eg /opt/retropie/configs/bbcmicro.

      In that folder, create an emulators.cfg file with the following lines:

      default = "advmess"
      advmess = "/opt/retropie/emulators/advmame/bin/advmess bbcbp128 -cfg /opt/retropie/configs/mame-advmame/bbcmicro.rc -floppy %ROM%"
      

      In this instance we've chosen to use the "bbcbp128" extended BIOS file, but you can change this if you want to use a different OS variant, eg the original "bbcb".

      Generally you'll want to pick the most obvious option if a system has multiple BIOS variants, eg for the Bally Astrocade you want astrocde.zip, so replace "bbcbp128" in the line above with "astrocde".

      (NB: there's no second "a" there - MESS uses eight-letter-max filenames to identify systems. You don't need to worry about that naming convention anywhere else, though, only in that line. Just make sure it points to the exact name of the BIOS file minus the .ZIP suffix.)

      Note that the line also includes the name of our .RC file from step 5. Obviously, edit that where necessary to point to the name of the system file you created, eg astrocade.rc. You may also need to change "-floppy" to "-cart" depending on what sort of format the system's games came on. So your complete Astrocade CFG file would be:

      default = "advmess"
      advmess="/opt/retropie/emulators/advmame/bin/advmess astrocde -cfg /opt/retropie/configs/mame-advmame/astrocade.rc -cart %ROM%"
      

      And that's you pretty much done. Reboot the Pi and your system should show up in the Emulation Station menus along with all your games. Select one and you're off.

      Note that you'll need a keyboard to use AdvMESS in any remotely sensible way. Pressing Tab on the keyboard will bring up the MESS options menu and you can map your controls and so on from there. The F7 key on the keyboard will exit you back to Emulation Station.

      Also be aware that MESS is, well, a mess. It's annoyingly inconsistent between emulators, so for example I can't get the Emerson Arcadia to save MESS menu settings for joystick controls even though the Astrocade and the Fairchild Channel F save them perfectly when I do the exact same thing. Hngh.

      Nevertheless, follow those simple steps and you should be able to enjoy a whole range of extra systems in Retropie. Because if an idiot like me can figure it out, you can too :)

      .
      .

      APPENDIX

      I had a lot of trouble accessing the MESS menus on the BBC (and therefore was unable to map keyboard controls to my joystick and so on), possibly because I'm using a compact keyboard with no number pad, ScrollLock key etc. If pressing Tab doesn't give you the menu screens, add this line on its own somewhere in the .RC file:

      bbcbp128/script_play delay(750); simulate_key(key_scrlock,75);
      

      That enables the MESS menu to be brought up.

      Or you might prefer this version, which enables the menu and automatically types *CAT for you so you can see the contents of the disk you just loaded:

      bbcbp128/script_play delay(750); simulate_key(key_scrlock,75); simulate_key(key_capslock,75); delay(75); simulate_key(key_quote,75); delay(75); simulate_key(key_c,75); delay(100); simulate_key(key_a,100); delay(100); simulate_key(key_t,100); delay(100); simulate_key(key_enter,75); delay(100);
      

      When you start a game, press left-Alt and Tab to bring the menu up. Go to "Input (this system)" and map the controls for that game. Despite the name, this actually appears to be a per-game mapping, not system-wide, which is handy.

      When you're done mapping your controls in the menu, quit out of MESS. Now your bbcmicro.rc file will have a bunch of lines like these at the end of it:

      bbcbp128[home_pi_retropie_roms_bbcmicro_killer]/input_map[key_z] keyboard[0,z] or joystick_digital[0079_0011,0,0,1]
      bbcbp128[home_pi_retropie_roms_bbcmicro_killer]/input_map[key_x] keyboard[0,x] or joystick_digital[0079_0011,0,0,0]
      

      The important thing about these is that they tell you what MESS uses as its internal name for the game - this is Killer Gorilla, and MESS has titled it "killer". (I have no idea how it assigns the names.)

      If you don't mind manually typing CHAIN "KILLER" every time you want to boot the game up, you're already done. The control keys have been mapped to your joystick and saved, so you only have to set them once for each game in your library.

      If, however, you also want to automate the boot process, you'll need one of two lines.

      For games which boot with CHAIN "GAMENAME", add this line to the .RC file before the control-map lines above:

      bbcbp128[home_pi_retropie_roms_bbcmicro_GAMENAME]/script_play delay(750); simulate_key(key_scrlock,75); simulate_key(key_c,75); delay(75); simulate_key(key_h,75); delay(75); simulate_key(key_a,75); delay(75); simulate_key(key_i,75); delay(75); simulate_key(key_n,75); delay(75); simulate_key(key_space,75); delay(75); simulate_key(key_capslock,75); delay(75); simulate_key(key_2,75); delay(75); simulate_key(key_g,100); delay(75); simulate_key(key_a,75); delay(100); simulate_key(key_m,75); delay(100); simulate_key(key_e,75); delay(100); simulate_key(key_n,75); delay(100); simulate_key(key_a,75); delay(100); simulate_key(key_m,75); delay(100); simulate_key(key_e,75); delay(100); simulate_key(key_2,75); delay(100); simulate_key(key_capslock,75); delay(100); simulate_key(key_enter,75); delay(100);
      

      Replace "GAMENAME" with whatever MESS has told you is its internal name for the game - eg "killer" in our example above - and change the letters g-a-m-e-n-a-m-e in the script for the letters of whatever that title is. (Obviously you might need to add or delete a couple.)

      For games which boot with *RUN "GAMENAME", do the exact same but use this template:

      bbcbp128[home_pi_retropie_roms_bbcmicro_GAMENAME]/script_play delay(750); simulate_key(key_scrlock,75); simulate_key(key_capslock,75); delay(75); simulate_key(key_quote,75); delay(75); simulate_key(key_r,75); delay(100); simulate_key(key_u,100); delay(100); simulate_key(key_n,100); delay(100); simulate_key(key_space,75); delay(75); simulate_key(key_2,75); delay(75); simulate_key(key_g,100); delay(75); simulate_key(key_a,75); delay(100); simulate_key(key_m,75); delay(100); simulate_key(key_e,75); delay(100); simulate_key(key_n,75); delay(100); simulate_key(key_a,75); delay(100);  simulate_key(key_m,75); delay(100); simulate_key(key_e,75); delay(100); simulate_key(key_2,75); delay(100); simulate_key(key_capslock,75); delay(100); simulate_key(key_enter,75); delay(100);
      

      AFAIK every game on the BBC runs with either CHAIN or *RUN, so those two templates should cover you for everything. (If you add those auto-boot lines they override the *CAT command we listed earlier.) You now have fully-automated BBC games loading, booting and running with custom control mappings.

      S 1 Reply Last reply Reply Quote 3
      • ?
        A Former User
        last edited by mediamogul

        Tab works fine for me in the Mess BBC emulation, so don't know why your's doesn't work. Weird.
        The tab key doesn't work for setting up your joystick, it only works in that particular session. The second you exit the emulator, it loses those settings. You need to edit the bbcmicro.rc/astrocade.rc/xxxxxx.rc file like this...

        input_map[p1_up] auto
        input_map[p1_down] auto
        input_map[p1_left] auto
        input_map[p1_right] auto
        input_map[p1_button1] auto
        input_map[p1_button2] auto
        input_map[p1_button3] auto
        input_map[p1_button4] auto
        input_map[p1_button5] auto
        input_map[p1_button6] auto
        input_map[p1_button7] auto
        input_map[p1_button8] auto
        input_map[p1_button9] auto
        input_map[p1_button10] auto
        input_map[p1_start] auto
        input_map[p1_select] auto

        That will ensure that your main joystick 1 is used. I can't put specific settings here because I use a Hori Rap4 Arcade Stick, and those settings would be for this stick only. So, AUTO, is the only way of making sure everyone's joystick is used.
        One other thing, the games on the BBC did not always have joystick support. A lot of games were keyboard only, and it was mostly the more popular devs like Superior, Program Power, or Acornsoft supported joysticks.

        In the BBC emulator, after you have mounted a floppy image, you then access that floppy image like so
        *cat - to get a directory listing of the disk.
        *!boot - if the disk comes with a boot loader to run the game, or run a menu system.
        If you mount a cassette image then you simply type chain"", or chain"GAMENAME"

        Just to edit. I have uploaded a small (40Mb) file containing a few games for really old obscure computers. I haven't tested all of these in Mess, but I have tested Memotech 512, Enterprise 128, Oric. To name a few.

        [Link Removed]

        Hope thats ok with the moderators. There is nothing copyright in there. Nothing from Nintendo, or Sega, Commodore, etc..
        If anyone wants BBC Micro games, then google "BBC Micro Sth Collection". That should get you pretty-much all the best BBC games from the 80s.

        S mediamogulM 2 Replies Last reply Reply Quote 0
        • S
          SpudsMcToole Banned @A Former User
          last edited by SpudsMcToole

          @John_RM_70 said in AdvMESS For Dummies - a basic guide:

          One other thing, the games on the BBC did not always have joystick support.

          Yes, I know. What I want to do is map joystick controls for the BBC in MESS to specific keyboard buttons, like I can do for other systems. So I'd map left and right on the joystick to the Z and X keys, for example, because nearly every BBC game used those for left and right.

          The problem is that because Tab doesn't work, I can't get into the menus to do that. Can you post your full .RC file here so I can see if it's any help?

          1 Reply Last reply Reply Quote 0
          • mediamogulM
            mediamogul Global Moderator @A Former User
            last edited by mediamogul

            @John_RM_70 said in AdvMESS For Dummies - a basic guide:

            Hope thats ok with the moderators. There is nothing copyright in there. Nothing from Nintendo, or Sega, Commodore, etc..

            I took a look and didn't see anything that wouldn't be considered a copyrighted work, so I had to remove the link. Keep in mind that US copyright law alone grants automatic copyright to any work created after January 1, 1978. Of course, the law varies elsewhere, but since this is an international forum, it should still be recognized. More on this can be found here, specifically the quote below, relevant here.

            The law automatically protects a work that is created and fixed in a tangible
            medium of expression on or after January 1, 1978, from the moment of its
            creation and gives it a term lasting for the author’s life plus an additional 70
            years.

            RetroPie v4.5 • RPi3 Model B • 5.1V 2.5A PSU • 16GB SanDisk microSD • 512GB External Drive

            1 Reply Last reply Reply Quote 1
            • ?
              A Former User
              last edited by A Former User

              The tab won't help you because it won't save after you exit. I tried this, earlier on, and it didn't save. Thats why I said it's per session only, meaning - once the session is over then the settings are lost. Perhaps it's write permissions ? Perhaps it's done in the .rc file only.
              To the mods, was there a reason you removed the link ? There is NOTHING in that archive that is copyright.
              None of the companies exist now, and most were obscure British computer companies, now long gone. I don't see the problem.
              Companies like Memotech, Oric, Dragon, Enterprise. These are all long gone, as are the software houses. Really don't see the problem. It's not like they're going to come after this site, especially since I'm hosting it on my own paid-for hosting.
              The US, don't own world-wide Copyright. These are UK based software and hardware companies, UK law, UK copyright.
              I respect your decision.

              S mituM mediamogulM 3 Replies Last reply Reply Quote 0
              • S
                SpudsMcToole Banned @A Former User
                last edited by

                @John_RM_70 said in AdvMESS For Dummies - a basic guide:

                The tab won't help you because it won't save after you exit. I tried this, earlier on, and it didn't save.

                It does for other systems. I've tried it with Astrocade and Channel F and the settings save fine. Not for the Emerson Arcadia for some reason, though.

                ? 1 Reply Last reply Reply Quote 0
                • ?
                  A Former User @SpudsMcToole
                  last edited by

                  @SpudsMcToole said in AdvMESS For Dummies - a basic guide:

                  @John_RM_70 said in AdvMESS For Dummies - a basic guide:

                  The tab won't help you because it won't save after you exit. I tried this, earlier on, and it didn't save.

                  It does for other systems. I've tried it with Astrocade and Channel F and the settings save fine. Not for the Emerson Arcadia for some reason, though.

                  I have just tried this right now, as I'm sat here, on the BBC emulator and the settings are not saved. When I go back into the same game, the settings are gone and back to stock.

                  S 1 Reply Last reply Reply Quote 0
                  • mituM
                    mitu Global Moderator @A Former User
                    last edited by

                    @John_RM_70 said in AdvMESS For Dummies - a basic guide:

                    None of the companies exist now, and most were obscure British computer companies, now long gone. I don't see the problem.

                    Unless the work is released under a permissive license (usage and re-distribution), there is no clear status on them and as such they're not free. Just because the companies don't exist anymore, it doesn't mean their IP hasn't been bought/transferred to another company.

                    1 Reply Last reply Reply Quote 1
                    • mediamogulM
                      mediamogul Global Moderator @A Former User
                      last edited by mediamogul

                      @John_RM_70 said in AdvMESS For Dummies - a basic guide:

                      These are all long gone, as are the software houses. Really don't see the problem.

                      Most of the companies have since been absorbed by others and in many occasions they have folded as well and been absorbed by other companies still. The problem is that copyrights are transferred with ownership. What's really a hoot is that sometimes ownership has transferred so many times that no one's quite sure who owns what anymore. Unfortunately, none of that actually invalidates the copyrights themselves and therefore doesn't give us the right to propagate the work freely.

                      RetroPie v4.5 • RPi3 Model B • 5.1V 2.5A PSU • 16GB SanDisk microSD • 512GB External Drive

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

                        @SpudsMcToole Also, it's possible to automate games loading without the keyboard using the script_play command. It doesn't work perfectly every time (sometimes you need to change the length of the delay between key presses), but it does work reasonably well.

                        An example of the code that I have in my advmess.rc file is:

                        bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/script_play delay(750); simulate_key(key_scrlock,75); simulate_key(key_c,75); delay(75); simulate_key(key_h,75); delay(75); simulate_key(key_a,75); delay(75); simulate_key(key_i,75); delay(75); simulate_key(key_n,75); delay(75); simulate_key(key_space,75); delay(75); simulate_key(key_capslock,75); delay(75); simulate_key(key_2,75); delay(75); simulate_key(key_t,75); delay(75); simulate_key(key_h,75); delay(75); simulate_key(key_r,75); delay(75); simulate_key(key_u,75); delay(75); simulate_key(key_s,75); delay(75); simulate_key(key_t,75); delay(75); simulate_key(key_2,75); delay(75); simulate_key(key_capslock,75); delay(75); simulate_key(key_enter,75); delay(75);
                        

                        Just add the above to your .rc file and see if it works.

                        When you invoke the advmess and the BBC emulation, when it gets to the BBC's terminal, it should type CHAIN "THRUST" and start the game Thrust automatically. Sometimes keys are skipped and so you need to change the delay from 75 to something higher eg 150.

                        You can adapt the code above to any BBC Micro game.

                        I use xboxdrv so my joystick mimics the keys for each game, meaning I don't really need to use the keyboard any longer.

                        It will be great once there is an emulator or a libretro core for the BBC Micro which works automatically with joysticks. In the meantime, advmess does a serviceable job.

                        The other thing that strikes me is that you might be able to use the script_play command to "press" the TAB key to enter the menu. See my reference to key_scrlock in the code above which should change the keyboard from full emulation to partial emulation and perhaps allow you to press the TAB key on your keyboard. Anyway, worth a try.

                        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

                        S 2 Replies Last reply Reply Quote 1
                        • S
                          SpudsMcToole Banned @A Former User
                          last edited by

                          @John_RM_70 said in AdvMESS For Dummies - a basic guide:

                          I have just tried this right now, as I'm sat here, on the BBC emulator and the settings are not saved. When I go back into the same game, the settings are gone and back to stock.

                          Can you post your RC file anyway so I can have a look?

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

                            @spud11 said in AdvMESS For Dummies - a basic guide:

                            When you invoke the advmess and the BBC emulation, when it gets to the BBC's terminal, it should type CHAIN "THRUST" and start the game Thrust automatically. Sometimes keys are skipped and so you need to change the delay from 75 to something higher eg 150.

                            Oh, THAT'S what those lines are doing? Aha!

                            How do you know what to put as the game name in the first bit? (ie this:)

                            bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]
                            

                            What would that line be for a game file called "Chuckie Egg (1983) (A&F Software).ssd"?

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

                              @spud11 said in AdvMESS For Dummies - a basic guide:

                              The other thing that strikes me is that you might be able to use the script_play command to "press" the TAB key to enter the menu. See my reference to key_scrlock in the code above which should change the keyboard from full emulation to partial emulation and perhaps allow you to press the TAB key on your keyboard. Anyway, worth a try.

                              Ah, I think you might be onto something here. I just noticed that the MESS splash screen that flashes up very briefly when the BBC boots says "UI: disabled" on it and tells me to toggle it with ScrollLock or NumLock, which of course I don't have.

                              I'm not too sure how to use this information, though. When I add the line script_play delay(750); simulate_key(key_scrlock,75) to the RC file on its own (replacing the empty "script_play" line), MESS crashes with the error report:

                              Error compiling the script: 'delay(750); simulate_key(key_scrlock,75)', syntax error, unexpected $end
                              
                              S 2 Replies Last reply Reply Quote 0
                              • S
                                spud11 @SpudsMcToole
                                last edited by spud11

                                @SpudsMcToole That's a good question. My Chuckie Egg rom is called Chuckie Egg. The equivalent code in advmess.rc is:

                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]
                                

                                You'll see that the home_pi_retropie_roms_bbcmicro_ is effectively the folder in which your roms appear for the BBC Micro.

                                Also, even if you are stuck, once you've got one of the games starting, I'm pretty sure that the advmess.rc records the inputs for the game you played at the bottom of the file - at least I've got something like the below in my advmess.rc. It's been a while but I don't think I added this manually:

                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_1] joystick_button[0079_0006_3,7] or keyboard[0,1]
                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_3] joystick_button[0079_0006,10] or keyboard[0,3]
                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_2] joystick_button[0079_0006,9] or keyboard[0,2]
                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_4] joystick_button[0079_0006,11] or keyboard[0,4]
                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_5] joystick_button[0079_0006,12] or keyboard[0,5]
                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_7] joystick_button[0079_0006,14] or keyboard[0,7]
                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_6] joystick_button[0079_0006,13] or keyboard[0,6]
                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_8] joystick_button[0079_0006,15] or keyboard[0,8]
                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_9] joystick_button[0079_0006,16] or keyboard[0,9]
                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_0] joystick_button[0079_0006,18] or keyboard[0,0]
                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_enter] joystick_button[0079_0006,19] or keyboard[0,enter]
                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_del] joystick_button[0079_0006,17] or keyboard[0,del] or keyboard[0,backspace]
                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_a] joystick_digital[0079_0006_3,0,0,0] or keyboard[0,a]
                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_s] joystick_button[0079_0006_3,7] or keyboard[0,s]
                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_z] joystick_digital[0079_0006_3,0,0,1] or keyboard[0,z]
                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_space] joystick_button[0079_0006_3,2] or keyboard[0,space]
                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_comma] joystick_digital[0079_0006_3,0,1,1] or keyboard[0,comma]
                                bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_period] joystick_digital[0079_0006_3,0,1,0] or keyboard[0,period]
                                

                                I might be wrong, but I'm pretty sure I didn't add this manually. If I'm right and it was automatically added, then just by starting a game and then exiting and having a look at the advmess.rc should give you a bit of a better idea of how to construct the scripts. A bit of trial and error is useful in this case and having a look at the advmess.rc file.

                                But ALWAYS make a backup of advmess.rc. It is a temperamental beast. Even 1 character out of place will stop it working.

                                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 @SpudsMcToole
                                  last edited by spud11

                                  @SpudsMcToole Try this instead:

                                  bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/script_play delay(750); simulate_key(key_scrlock,75);
                                  

                                  The above assumes that you are starting Thrust.

                                  I haven't tried below but I suggest trying it anyway:

                                  bbcbp128/script_play delay(750); simulate_key(key_scrlock,75);
                                  

                                  I don't know whether the generic code (ie no reference to a game) will work. Possibly not.

                                  One other possible generic code to try:

                                  script_play delay(750); simulate_key(key_scrlock,75);
                                  

                                  The code immediately above I reckon is the most likely one to work in a generic fashion. The last one is likely to work across all systems ie not just BBC Micro.

                                  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

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

                                    @SpudsMcToole While I'm about it, my entire advmess.rc file is below:

                                    debug_crash no
                                    debug_rawsound no
                                    debug_speedmark no
                                    
                                    device_alsa_device default
                                    device_alsa_mixer channel
                                    device_color_bgr15 yes
                                    device_color_bgr16 yes
                                    device_color_bgr24 yes
                                    device_color_bgr32 yes
                                    device_color_bgr8 yes
                                    device_color_palette8 no
                                    device_color_yuy2 no
                                    
                                    device_joystick auto
                                    device_keyboard sdl
                                    device_mouse auto
                                    
                                    device_raw_firstkeyhack no
                                    device_raw_mousedev[0] auto
                                    device_raw_mousedev[1] auto
                                    device_raw_mousedev[2] auto
                                    device_raw_mousedev[3] auto
                                    device_raw_mousetype[0] pnp
                                    device_raw_mousetype[1] pnp
                                    device_raw_mousetype[2] pnp
                                    device_raw_mousetype[3] pnp
                                    
                                    device_sdl_samples 512
                                    device_sound auto
                                    
                                    device_video sdl
                                    device_video_cursor auto
                                    device_video_doublescan yes
                                    device_video_fastchange yes
                                    device_video_interlace no
                                    device_video_output overlay
                                    device_video_overlaysize 0
                                    device_video_singlescan no
                                    device_video_clock 10 - 150 / 30.5 - 60 / 55 - 130
                                    
                                    dir_artwork /home/pi/.advance/artwork:/usr/local/share/advance/artwork:/opt/retropie/emulators/advmame/share/advance/artwork
                                    dir_crc /home/pi/.advance/crc
                                    dir_diff /home/pi/.advance/diff
                                    dir_hi /home/pi/.advance/hi
                                    dir_image /home/pi/.advance/image:/usr/local/share/advance/image:/opt/retropie/emulators/advmame/share/advance/image:/opt/retropie/configs/mame-advmame/image:/home/pi/RetroPie/roms/bbcmicro
                                    dir_inp /home/pi/.advance/inp
                                    dir_memcard /home/pi/.advance/memcard
                                    dir_nvram /home/pi/.advance/nvram
                                    dir_rom /home/pi/.advance/rom:/usr/local/share/advance/rom:/opt/retropie/emulators/advmame/share/advance/rom:/opt/retropie/configs/mame-advmame/rom
                                    dir_sample /home/pi/.advance/sample:/usr/local/share/advance/sample:/opt/retropie/emulators/advmame/share/advance/sample
                                    dir_snap /home/pi/.advance/snap
                                    dir_sta /home/pi/.advance/sta
                                    
                                    display_adjust none
                                    display_antialias no
                                    display_artwork_backdrop no
                                    display_artwork_bezel no
                                    display_artwork_crop no
                                    display_artwork_overlay no
                                    display_beam 1
                                    display_brightness 1
                                    display_buffer no
                                    display_color auto
                                    
                                    # Below widens the screen to 16:9
                                    display_expand 1.35
                                    
                                    display_flicker 0
                                    display_flipx no
                                    display_flipy no
                                    display_frameskip auto
                                    display_gamma 1
                                    display_intensity 1.5
                                    display_interlaceeffect none
                                    display_magnify auto
                                    display_magnifysize 640
                                    display_mode auto
                                    display_pausebrightness 1
                                    display_resize fractional
                                    display_resizeeffect none
                                    display_restore no
                                    display_rgbeffect none
                                    display_rol no
                                    display_ror no
                                    display_scanlines no
                                    display_skipcolumns auto
                                    display_skiplines auto
                                    display_translucency no
                                    display_vsync yes
                                    
                                    include 
                                    input_hotkey yes
                                    input_idleexit 0
                                    input_map[event10] auto
                                    input_map[event11] auto
                                    input_map[event12] auto
                                    input_map[event13] auto
                                    input_map[event14] auto
                                    input_map[event1] auto
                                    input_map[event2] auto
                                    input_map[event3] auto
                                    input_map[event4] auto
                                    input_map[event5] auto
                                    input_map[event6] auto
                                    input_map[event7] auto
                                    input_map[event8] auto
                                    input_map[event9] auto
                                    
                                    input_map[key_0] joystick_button[0,18] or keyboard[0,0]
                                    input_map[key_1] joystick_button[0,8]  or keyboard[0,1]
                                    input_map[key_2] joystick_button[0,9]  or keyboard[0,2]
                                    input_map[key_3] joystick_button[0,10] or keyboard[0,3]
                                    input_map[key_4] joystick_button[0,11] or keyboard[0,4]
                                    input_map[key_5] joystick_button[0,12] or keyboard[0,5]
                                    input_map[key_6] joystick_button[0,13] or keyboard[0,6]
                                    input_map[key_7] joystick_button[0,14] or keyboard[0,7]
                                    input_map[key_8] joystick_button[0,15] or keyboard[0,8]
                                    input_map[key_9] joystick_button[0,16] or keyboard[0,9]
                                    
                                    input_map[key_a] auto
                                    input_map[key_again] auto
                                    input_map[key_alt] auto
                                    input_map[key_asterisk] auto
                                    input_map[key_b] auto
                                    input_map[key_back] auto
                                    input_map[key_backquote] auto
                                    input_map[key_backslash] auto
                                    input_map[key_backspace] auto
                                    input_map[key_break] auto
                                    input_map[key_c] auto
                                    input_map[key_capslock] joystick_digital[0079_0006_3,0,1,1] or keyboard[0,capslock]
                                    input_map[key_closebrace] auto
                                    input_map[key_colon] auto
                                    input_map[key_comma] auto
                                    input_map[key_copy] auto
                                    input_map[key_ctrl] auto
                                    input_map[key_cut] auto
                                    input_map[key_d] auto
                                    input_map[key_del] joystick_button[0,17] or keyboard[0,del] or keyboard[0,backspace]
                                    input_map[key_diesis] auto
                                    input_map[key_doublequote] auto
                                    input_map[key_down] auto
                                    input_map[key_e] auto
                                    input_map[key_edit] auto
                                    input_map[key_end] auto
                                    input_map[key_enter] joystick_button[0,19] or keyboard[0,enter]
                                    input_map[key_equals] auto
                                    input_map[key_esc] auto
                                    input_map[key_f10] auto
                                    input_map[key_f11] auto
                                    input_map[key_f12] auto
                                    input_map[key_f13] auto
                                    input_map[key_f14] auto
                                    input_map[key_f15] auto
                                    input_map[key_f16] auto
                                    input_map[key_f17] auto
                                    input_map[key_f18] auto
                                    input_map[key_f19] auto
                                    input_map[key_f1] auto
                                    input_map[key_f20] auto
                                    input_map[key_f21] auto
                                    input_map[key_f22] auto
                                    input_map[key_f23] auto
                                    input_map[key_f24] auto
                                    input_map[key_f2] auto
                                    input_map[key_f3] auto
                                    input_map[key_f4] auto
                                    input_map[key_f5] auto
                                    input_map[key_f6] auto
                                    input_map[key_f7] auto
                                    input_map[key_f8] auto
                                    input_map[key_f9] auto
                                    input_map[key_f] auto
                                    input_map[key_fctn] auto
                                    input_map[key_find] auto
                                    input_map[key_forward] auto
                                    input_map[key_g] auto
                                    input_map[key_graph] auto
                                    input_map[key_h] auto
                                    input_map[key_help] auto
                                    input_map[key_hold] auto
                                    input_map[key_home] auto
                                    input_map[key_i] auto
                                    input_map[key_ins] auto
                                    input_map[key_j] auto
                                    input_map[key_k] auto
                                    input_map[key_l] auto
                                    input_map[key_lalt] auto
                                    input_map[key_lctrl] auto
                                    input_map[key_left] auto
                                    input_map[key_less] auto
                                    input_map[key_lshift] keyboard[0,lshift] or joystick_button[0079_0006_3,2]
                                    input_map[key_m] auto
                                    input_map[key_menu] auto
                                    input_map[key_minus] auto
                                    input_map[key_move] auto
                                    input_map[key_n] auto
                                    input_map[key_numlock] auto
                                    input_map[key_o] auto
                                    input_map[key_open] auto
                                    input_map[key_openbrace] auto
                                    input_map[key_p] auto
                                    input_map[key_pad_0] auto
                                    input_map[key_pad_1] auto
                                    input_map[key_pad_2] auto
                                    input_map[key_pad_3] auto
                                    input_map[key_pad_4] auto
                                    input_map[key_pad_5] auto
                                    input_map[key_pad_6] auto
                                    input_map[key_pad_7] auto
                                    input_map[key_pad_8] auto
                                    input_map[key_pad_9] auto
                                    input_map[key_pad_asterisk] auto
                                    input_map[key_pad_colon] auto
                                    input_map[key_pad_diesis] auto
                                    input_map[key_pad_enter] auto
                                    input_map[key_pad_minus] auto
                                    input_map[key_pad_plus] auto
                                    input_map[key_pad_slash] auto
                                    input_map[key_paste] auto
                                    input_map[key_pause] auto
                                    input_map[key_period] auto
                                    input_map[key_pgdn] auto
                                    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
                                    input_map[key_ralt] auto
                                    input_map[key_rctrl] auto
                                    input_map[key_record] auto
                                    input_map[key_restore] auto
                                    input_map[key_rew] auto
                                    input_map[key_right] auto
                                    input_map[key_rshift] keyboard[0,rshift]
                                    input_map[key_s] auto
                                    input_map[key_scrlock] auto
                                    input_map[key_semicolon] auto
                                    input_map[key_shift] auto
                                    input_map[key_slash] auto
                                    input_map[key_space] auto
                                    input_map[key_stop] auto
                                    input_map[key_store] auto
                                    input_map[key_t] auto
                                    input_map[key_tab] auto
                                    input_map[key_u] auto
                                    input_map[key_undo] auto
                                    input_map[key_up] auto
                                    input_map[key_v] auto
                                    input_map[key_w] auto
                                    input_map[key_x] auto
                                    input_map[key_y] auto
                                    input_map[key_z] auto
                                    input_map[p1_dialx] auto
                                    input_map[p1_dialy] auto
                                    input_map[p1_lightgunx] auto
                                    input_map[p1_lightguny] auto
                                    input_map[p1_mousex] auto
                                    input_map[p1_mousey] auto
                                    input_map[p1_paddlex] auto
                                    input_map[p1_paddley] auto
                                    input_map[p1_pedalbrake] auto
                                    input_map[p1_pedalgas] auto
                                    input_map[p1_pedalother] auto
                                    input_map[p1_stickx] auto
                                    input_map[p1_sticky] auto
                                    input_map[p1_stickz] auto
                                    input_map[p1_trackballx] auto
                                    input_map[p1_trackbally] auto
                                    input_map[p2_dialx] auto
                                    input_map[p2_dialy] auto
                                    input_map[p2_lightgunx] auto
                                    input_map[p2_lightguny] auto
                                    input_map[p2_mousex] auto
                                    input_map[p2_mousey] auto
                                    input_map[p2_paddlex] auto
                                    input_map[p2_paddley] auto
                                    input_map[p2_pedalbrake] auto
                                    input_map[p2_pedalgas] auto
                                    input_map[p2_pedalother] auto
                                    input_map[p2_stickx] auto
                                    input_map[p2_sticky] auto
                                    input_map[p2_stickz] auto
                                    input_map[p2_trackballx] auto
                                    input_map[p2_trackbally] auto
                                    input_map[p3_dialx] auto
                                    input_map[p3_dialy] auto
                                    input_map[p3_lightgunx] auto
                                    input_map[p3_lightguny] auto
                                    input_map[p3_mahjong_a] auto
                                    input_map[p3_mahjong_b] auto
                                    input_map[p3_mahjong_bet] auto
                                    input_map[p3_mahjong_c] auto
                                    input_map[p3_mahjong_chance] auto
                                    input_map[p3_mahjong_chi] auto
                                    input_map[p3_mahjong_d] auto
                                    input_map[p3_mahjong_double_up] auto
                                    input_map[p3_mahjong_e] auto
                                    input_map[p3_mahjong_f] auto
                                    input_map[p3_mahjong_flip_flop] auto
                                    input_map[p3_mahjong_g] auto
                                    input_map[p3_mahjong_h] auto
                                    input_map[p3_mahjong_i] auto
                                    input_map[p3_mahjong_j] auto
                                    input_map[p3_mahjong_k] auto
                                    input_map[p3_mahjong_kan] auto
                                    input_map[p3_mahjong_l] auto
                                    input_map[p3_mahjong_m] auto
                                    input_map[p3_mahjong_n] auto
                                    input_map[p3_mahjong_pon] auto
                                    input_map[p3_mahjong_reach] auto
                                    input_map[p3_mahjong_ron] auto
                                    input_map[p3_mahjong_score] auto
                                    input_map[p3_mousex] auto
                                    input_map[p3_mousey] auto
                                    input_map[p3_paddlex] auto
                                    input_map[p3_paddley] auto
                                    input_map[p3_pedalbrake] auto
                                    input_map[p3_pedalgas] auto
                                    input_map[p3_pedalother] auto
                                    input_map[p3_stickx] auto
                                    input_map[p3_sticky] auto
                                    input_map[p3_stickz] auto
                                    input_map[p3_trackballx] auto
                                    input_map[p3_trackbally] auto
                                    input_map[p4_dialx] auto
                                    input_map[p4_dialy] auto
                                    input_map[p4_lightgunx] auto
                                    input_map[p4_lightguny] auto
                                    input_map[p4_mahjong_a] auto
                                    input_map[p4_mahjong_b] auto
                                    input_map[p4_mahjong_bet] auto
                                    input_map[p4_mahjong_c] auto
                                    input_map[p4_mahjong_chance] auto
                                    input_map[p4_mahjong_chi] auto
                                    input_map[p4_mahjong_d] auto
                                    input_map[p4_mahjong_double_up] auto
                                    input_map[p4_mahjong_e] auto
                                    input_map[p4_mahjong_f] auto
                                    input_map[p4_mahjong_flip_flop] auto
                                    input_map[p4_mahjong_g] auto
                                    input_map[p4_mahjong_h] auto
                                    input_map[p4_mahjong_i] auto
                                    input_map[p4_mahjong_j] auto
                                    input_map[p4_mahjong_k] auto
                                    input_map[p4_mahjong_kan] auto
                                    input_map[p4_mahjong_l] auto
                                    input_map[p4_mahjong_m] auto
                                    input_map[p4_mahjong_n] auto
                                    input_map[p4_mahjong_pon] auto
                                    input_map[p4_mahjong_reach] auto
                                    input_map[p4_mahjong_ron] auto
                                    input_map[p4_mahjong_score] auto
                                    input_map[p4_mousex] auto
                                    input_map[p4_mousey] auto
                                    input_map[p4_paddlex] auto
                                    input_map[p4_paddley] auto
                                    input_map[p4_pedalbrake] auto
                                    input_map[p4_pedalgas] auto
                                    input_map[p4_pedalother] auto
                                    input_map[p4_stickx] auto
                                    input_map[p4_sticky] auto
                                    input_map[p4_stickz] auto
                                    input_map[p4_trackballx] auto
                                    input_map[p4_trackbally] auto
                                    input_map[safequit] auto
                                    input_map[service_coin5] auto
                                    input_map[service_coin6] auto
                                    input_map[service_coin7] auto
                                    input_map[service_coin8] auto
                                    input_map[ui_cancel] joystick_button[0079_0006_3,8] joystick_button[0079_0006_3,10] or keyboard[0,f7]
                                    input_map[ui_mode_next] keyboard[0,f24]
                                    input_map[ui_mode_pred] keyboard[0,f24]
                                    input_map[ui_reset_machine] joystick_button[0079_0006,4] or joystick_button[0079_0006_2,4] or keyboard[0,f9]
                                    input_map[ui_toggle_debug] keyboard[0,f24]
                                    
                                    input_steadykey no
                                    
                                    lcd_server none
                                    lcd_speed 4
                                    lcd_timeout 500
                                    
                                    misc_bios default
                                    misc_cheat no
                                    misc_cheatfile cheat.dat
                                    misc_difficulty none
                                    misc_eventdebug no
                                    misc_eventfile event.dat
                                    misc_freeplay no
                                    misc_hiscorefile hiscore.dat
                                    misc_lang none
                                    misc_languagefile english.lng
                                    misc_mutedemo no
                                    misc_quiet yes
                                    misc_ramsize auto
                                    misc_safequit no
                                    misc_smp no
                                    misc_timetorun 0
                                    
                                    record_sound no
                                    record_sound_time 15
                                    record_video no
                                    record_video_interleave 2
                                    record_video_time 15
                                    
                                    script_coin1 
                                    script_coin2 
                                    script_coin3 
                                    script_coin4 
                                    script_emulation 
                                    script_event1 
                                    script_event10 
                                    script_event11 
                                    script_event12 
                                    script_event13 
                                    script_event14 
                                    script_event2 
                                    script_event3 
                                    script_event4 
                                    script_event5 
                                    script_event6 
                                    script_event7 
                                    script_event8 
                                    script_event9 
                                    script_led1 on(kdb, 0b1); wait(!event()); off(kdb, 0b1);
                                    script_led2 on(kdb, 0b10); wait(!event()); off(kdb, 0b10);
                                    script_led3 
                                    script_play 
                                    script_safequit 
                                    script_start1 
                                    script_start2 
                                    script_start3 
                                    script_start4 
                                    script_turbo while (event()) { toggle(kdb, 0b100); delay(100); } off(kdb, 0b100);
                                    script_video wait(!event()); set(kdb, 0);
                                    
                                    sound_adjust auto
                                    sound_equalizer_highvolume 0
                                    sound_equalizer_lowvolume 0
                                    sound_equalizer_midvolume 0
                                    sound_latency 0.05
                                    sound_mode auto
                                    sound_normalize yes
                                    sound_samplerate 44100
                                    sound_samples yes
                                    sound_volume 0
                                    
                                    sync_fps auto
                                    sync_resample auto
                                    sync_speed 1
                                    sync_startuptime auto
                                    sync_turbospeed 3
                                    
                                    ui_color[help_other] 000000 808080
                                    ui_color[help_p1] 000000 ffff00
                                    ui_color[help_p2] 000000 00ff00
                                    ui_color[help_p3] 000000 ff0000
                                    ui_color[help_p4] 000000 00ffff
                                    ui_color[interface] 000000 ffffff
                                    ui_color[select] 000000 afffff
                                    ui_color[tag] 247ef0 ffffff
                                    ui_font auto
                                    ui_fontsize auto
                                    ui_helpimage auto
                                    ui_translucency 0.8
                                    
                                    a5200/input_map[key_1] joystick_button[0,8] or keyboard[0,1]
                                    a5200/input_map[key_2] joystick_button[0,9] or keyboard[0,2]
                                    a5200/input_map[p1_button1] joystick_button[0,0]
                                    a5200/input_map[p1_button2] joystick_button[0,1]
                                    a5200/input_map[key_s] joystick_button[0,2]
                                    a5200/input_map[key_r] joystick_button[0,5]
                                    a5200/input_map[key_b] joystick_button[0,4]
                                    a5200[star_raiders]/input_map[key_s] joystick_button[0,2] or joystick_button[1,2]
                                    a5200[star_raiders]/input_map[key_1] joystick_button[0,8] or joystick_button[1,8]
                                    a5200[star_raiders]/input_map[key_2] joystick_button[0,9] or joystick_button[1,9]
                                    a5200[star_raiders]/input_map[key_3] joystick_button[0,10] or joystick_button[1,10]
                                    a5200[star_raiders]/input_map[key_4] joystick_button[0,11] or joystick_button[1,11]
                                    a5200[star_raiders]/input_map[key_5] joystick_button[0,12] or joystick_button[1,12]
                                    a5200[star_raiders]/input_map[key_6] joystick_button[0,13] or joystick_button[1,13]
                                    a5200[star_raiders]/input_map[key_7] joystick_button[0,14] or joystick_button[1,14]
                                    a5200[star_raiders]/input_map[key_8] joystick_button[0,15] or joystick_button[1,15]
                                    a5200[star_raiders]/input_map[key_9] joystick_button[0,16] or joystick_button[1,16]
                                    a5200[star_raiders]/input_map[key_del] joystick_button[0,17] or joystick_button[1,17]
                                    a5200[star_raiders]/input_map[key_0] joystick_button[0,18] or joystick_button[1,18]
                                    a5200[star_raiders]/input_map[key_enter] joystick_button[0,19] or joystick_button[1,19]
                                    a5200[star_raiders]/input_map[p1_button1] joystick_button[0,0] or joystick_button[1,0]
                                    a5200[star_raiders]/input_map[p1_button2] joystick_button[0,1] or joystick_button[1,1]
                                    
                                    adam/input_map[key_1] joystick_button[0,8] or keyboard[0,1]
                                    adam/input_map[key_2] joystick_button[0,9] or keyboard[0,2]
                                    adam/input_map[p1_trackball_left] keyboard[0,f24]
                                    adam/input_map[p1_trackball_right] keyboard[0,f24]
                                    adam/input_map[p2_button1] joystick_button[1,0]
                                    adam/input_map[p2_button2] joystick_button[1,1]
                                    adam/input_map[p2_button3] joystick_button[1,2]
                                    adam/input_map[p2_button4] joystick_button[1,4]
                                    adam/input_map[p2_down] joystick_digital[1,0,1,0]
                                    adam/input_map[p2_left] joystick_digital[1,0,0,1]
                                    adam/input_map[p2_right] joystick_digital[1,0,0,0]
                                    adam/input_map[p2_trackball_down] keyboard[0,f24]
                                    adam/input_map[p2_trackball_up] keyboard[0,f24]
                                    adam/input_map[p2_up] joystick_digital[1,0,1,1]
                                    adam/input_dipswitch[controllers] super_action_controllers
                                    
                                    channelf/input_map[key_1] joystick_button[0,8] or keyboard[0,1]
                                    channelf/input_map[key_2] joystick_button[0,9] or keyboard[0,2]
                                    channelf/input_map[p1_start] joystick_button[0,8] or keyboard[0,1]
                                    channelf/input_map[p1_button5] joystick_button[0,9] or keyboard[0,5]
                                    channelf/input_map[p1_button6] joystick_button[0,10] or keyboard[0,6]
                                    channelf/input_map[p1_button7] joystick_button[0,11] or keyboard[0,7]
                                    channelf/input_map[p1_button4] joystick_button[0,17] or keyboard[0,3]
                                    channelf/input_map[p1_button3] joystick_button[0,18] or keyboard[0,4]
                                    channelf/input_map[p1_button2] joystick_button[0,0] or keyboard[0,z]
                                    channelf/input_map[p1_button1] joystick_button[0,1] or keyboard[0,x]
                                    channelf/input_map[p2_button5] joystick_button[1,9]
                                    channelf/input_map[p2_button6] joystick_button[1,10]
                                    channelf/input_map[p2_button7] joystick_button[1,11]
                                    channelf/input_map[p2_button4] joystick_button[1,17]
                                    channelf/input_map[p2_button3] joystick_button[1,18]
                                    channelf/input_map[p2_button2] joystick_button[1,0]
                                    channelf/input_map[p2_button1] joystick_button[1,1]
                                    
                                    coleco/input_map[key_1] joystick_button[0,8] or keyboard[0,1]
                                    coleco/input_map[key_2] joystick_button[0,9] or keyboard[0,2]
                                    coleco/input_map[key_q] joystick_button[1,8]
                                    coleco/input_map[key_w] joystick_button[1,9]
                                    coleco/input_map[key_e] joystick_button[1,10]
                                    coleco/input_map[key_r] joystick_button[1,11]
                                    coleco/input_map[key_t] joystick_button[1,12]
                                    coleco/input_map[key_y] joystick_button[1,13]
                                    coleco/input_map[key_u] joystick_button[1,14]
                                    coleco/input_map[key_i] joystick_button[1,15]
                                    coleco/input_map[key_o] joystick_button[1,16]
                                    coleco/input_map[key_p] joystick_button[1,17]
                                    coleco/input_map[key_k] joystick_button[1,18]
                                    coleco/input_map[key_l] joystick_button[1,19]
                                    coleco/input_map[p2_button1] joystick_button[1,0]
                                    coleco/input_map[p2_button2] joystick_button[1,1]
                                    coleco/input_map[p2_button3] joystick_button[1,2]
                                    coleco/input_map[p2_button4] joystick_button[1,3]
                                    coleco/input_map[p2_down] joystick_digital[1,0,1,0]
                                    coleco/input_map[p2_left] joystick_digital[1,0,0,1]
                                    coleco/input_map[p2_right] joystick_digital[1,0,0,0]
                                    coleco/input_map[p2_up] joystick_digital[1,0,1,1]
                                    coleco/input_dipswitch[extra_controllers] super_action_controllers
                                    
                                    intv/input_map[key_1] joystick_button[0,8] or keyboard[0,1]
                                    intv/input_map[key_2] joystick_button[0,9] or keyboard[0,2]
                                    intv/input_map[key_q] joystick_button[1,8]
                                    intv/input_map[key_w] joystick_button[1,9]
                                    intv/input_map[key_e] joystick_button[1,10]
                                    intv/input_map[key_r] joystick_button[1,11]
                                    intv/input_map[key_t] joystick_button[1,12]
                                    intv/input_map[key_y] joystick_button[1,13]
                                    intv/input_map[key_u] joystick_button[1,14]
                                    intv/input_map[key_i] joystick_button[1,15]
                                    intv/input_map[key_o] joystick_button[1,16]
                                    intv/input_map[key_p] joystick_button[1,17]
                                    intv/input_map[key_k] joystick_button[1,18]
                                    intv/input_map[key_l] joystick_button[1,19]
                                    intv/input_map[p2_button1] joystick_button[1,0]
                                    intv/input_map[p2_button2] joystick_button[1,1]
                                    intv/input_map[p2_button3] joystick_button[1,2]
                                    intv/input_map[p2_left] joystick_digital[1,0,0,1]
                                    intv/input_map[p2_down] joystick_digital[1,0,1,0]
                                    intv/input_map[p2_right] joystick_digital[1,0,0,0]
                                    intv/input_map[p2_up] joystick_digital[1,0,1,1]
                                    
                                    280x210/display_resize fractional
                                    320x192/display_mode sdl_1824x984
                                    320x192/display_resize fractional
                                    320x192x59/display_mode sdl_1824x984
                                    320x192x59/display_resize fractional
                                    336x225/display_mode sdl_416x288
                                    336x225/display_resize fractional
                                    320x204/display_mode sdl_1920x1080
                                    320x204/display_resize fractional
                                    800x300x50/display_mode generate-double
                                    
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/script_play delay(750); simulate_key(key_scrlock,75); simulate_key(key_c,75); delay(75); simulate_key(key_h,75); delay(75); simulate_key(key_a,75); delay(75); simulate_key(key_i,75); delay(75); simulate_key(key_n,75); delay(75); simulate_key(key_space,75); delay(200); simulate_key(key_capslock,75); delay(75); simulate_key(key_2,75); delay(75); simulate_key(key_c,75); delay(75); simulate_key(key_h,75); delay(75); simulate_key(key_u,75); delay(75); simulate_key(key_c,75); delay(75); simulate_key(key_k,75); delay(75); simulate_key(key_i,75); delay(75); simulate_key(key_e,75); delay(75); simulate_key(key_space,75); delay(75); simulate_key(key_e,75); delay(75); simulate_key(key_g,75); delay(75); simulate_key(key_g,75); delay(75); simulate_key(key_2,50); delay(75); simulate_key(key_capslock,75); delay(75); simulate_key(key_enter,75); delay(75);
                                    
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_elite]/script_play delay(750); simulate_key(key_scrlock,75); simulate_key(key_c,75); delay(75); simulate_key(key_h,75); delay(75); simulate_key(key_a,75); delay(75); simulate_key(key_i,75); delay(75); simulate_key(key_n,75); delay(75); simulate_key(key_space,75); delay(200); simulate_key(key_capslock,75); delay(75); simulate_key(key_2,75); delay(75); simulate_key(key_l,75); delay(75); simulate_key(key_o,75); delay(75); simulate_key(key_a,75); delay(75); simulate_key(key_d,75); delay(75); simulate_key(key_2,50); delay(75); simulate_key(key_capslock,75); delay(75); simulate_key(key_enter,75); delay(75);
                                    
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_planetoid]/script_play delay(750); simulate_key(key_scrlock,75); simulate_key(key_c,75); delay(75); simulate_key(key_h,75); delay(75); simulate_key(key_a,75); delay(75); simulate_key(key_i,75); delay(75); simulate_key(key_n,75); delay(75); simulate_key(key_space,75); delay(75); simulate_key(key_capslock,75); delay(75); simulate_key(key_2,75); delay(75); simulate_key(key_l,75); delay(75); simulate_key(key_o,75); delay(75); simulate_key(key_a,75); delay(75); simulate_key(key_d,75); delay(75); simulate_key(key_2,75); delay(75); simulate_key(key_capslock,75); delay(75); simulate_key(key_enter,75); delay(75);
                                    
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/script_play delay(750); simulate_key(key_scrlock,75); simulate_key(key_c,75); delay(75); simulate_key(key_h,75); delay(75); simulate_key(key_a,75); delay(75); simulate_key(key_i,75); delay(75); simulate_key(key_n,75); delay(75); simulate_key(key_space,75); delay(75); simulate_key(key_capslock,75); delay(75); simulate_key(key_2,75); delay(75); simulate_key(key_t,75); delay(75); simulate_key(key_h,75); delay(75); simulate_key(key_r,75); delay(75); simulate_key(key_u,75); delay(75); simulate_key(key_s,75); delay(75); simulate_key(key_t,75); delay(75); simulate_key(key_2,75); delay(75); simulate_key(key_capslock,75); delay(75); simulate_key(key_enter,75); delay(75);
                                    
                                    input_map[p1_up] joystick_digital[0079_0006_3,0,0,0] or keyboard[0,up]
                                    input_map[p1_down] joystick_digital[0079_0006_3,0,0,1] or keyboard[0,down]
                                    input_map[p1_left] joystick_digital[0079_0006_3,0,1,1] or keyboard[0,left]
                                    input_map[p1_right] joystick_digital[0079_0006_3,0,1,0] or keyboard[0,right]
                                    input_map[p1_start] joystick_button[0079_0006_3,7] or keyboard[0,1]
                                    input_map[p1_select] joystick_button[0079_0006_3,7] or keyboard[0,5]
                                    input_map[p2_up] joystick_digital[0079_0006,0,0,0] or keyboard[0,r]
                                    input_map[p2_down] joystick_digital[0079_0006,0,0,1] or keyboard[0,f]
                                    input_map[p2_left] joystick_digital[0079_0006,0,1,1] or keyboard[0,d]
                                    input_map[p2_right] joystick_digital[0079_0006,0,1,0] or keyboard[0,g]
                                    input_map[p2_button1] joystick_button[0079_0006,1] or keyboard[0,a]
                                    input_map[p2_button2] joystick_button[0079_0006,3] or keyboard[0,s]
                                    input_map[p2_button3] joystick_button[0079_0006,5] or keyboard[0,q]
                                    input_map[p2_button4] joystick_button[0079_0006,0] or keyboard[0,w]
                                    input_map[p2_button5] joystick_button[0079_0006,2]
                                    input_map[p2_button6] 
                                    input_map[p2_button7] 
                                    input_map[p2_button8] 
                                    input_map[p2_button9] 
                                    input_map[p2_button10] 
                                    input_map[p2_start] joystick_button[0079_0006,4] or joystick_button[0079_0006_3,10] or keyboard[0,2]
                                    input_map[p2_select] joystick_button[0079_0006,4] or joystick_button[0079_0006_3,10] or keyboard[0,6]
                                    input_map[ui_up] joystick_digital[0079_0006_3,0,0,0] or keyboard[0,up]
                                    input_map[ui_down] joystick_digital[0079_0006_3,0,0,1] or keyboard[0,down]
                                    input_map[ui_left] joystick_digital[0079_0006_3,0,1,1] or keyboard[0,left]
                                    input_map[ui_right] joystick_digital[0079_0006_3,0,1,0] or keyboard[0,right]
                                    input_map[ui_select] joystick_button[0079_0006_3,2] or keyboard[0,enter]
                                    input_map[ui_record_start] 
                                    input_map[ui_record_stop] 
                                    
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_1] joystick_button[0079_0006_3,7] or keyboard[0,1]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_3] joystick_button[0079_0006,10] or keyboard[0,3]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_2] joystick_button[0079_0006,9] or keyboard[0,2]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_4] joystick_button[0079_0006,11] or keyboard[0,4]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_5] joystick_button[0079_0006,12] or keyboard[0,5]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_7] joystick_button[0079_0006,14] or keyboard[0,7]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_6] joystick_button[0079_0006,13] or keyboard[0,6]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_8] joystick_button[0079_0006,15] or keyboard[0,8]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_9] joystick_button[0079_0006,16] or keyboard[0,9]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_0] joystick_button[0079_0006,18] or keyboard[0,0]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_enter] joystick_button[0079_0006,19] or keyboard[0,enter]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_del] joystick_button[0079_0006,17] or keyboard[0,del] or keyboard[0,backspace]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_a] joystick_digital[0079_0006_3,0,0,0] or keyboard[0,a]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_s] joystick_button[0079_0006_3,7] or keyboard[0,s]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_z] joystick_digital[0079_0006_3,0,0,1] or keyboard[0,z]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_space] joystick_button[0079_0006_3,2] or keyboard[0,space]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_comma] joystick_digital[0079_0006_3,0,1,1] or keyboard[0,comma]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_chuckie]/input_map[key_period] joystick_digital[0079_0006_3,0,1,0] or keyboard[0,period]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_1] joystick_button[0079_0006,8] or keyboard[0,1]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_ctrl] joystick_digital[0079_0006_3,0,1,0] or keyboard[0,lcontrol]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_3] joystick_button[0079_0006,10] or keyboard[0,3]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_2] joystick_button[0079_0006,9] or keyboard[0,2]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_4] joystick_button[0079_0006,11] or keyboard[0,4]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_space] joystick_button[0079_0006_3,7] or joystick_button[0079_0006_3,5] or keyboard[0,space]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_5] joystick_button[0079_0006,12] or keyboard[0,5]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_7] joystick_button[0079_0006,14] or keyboard[0,7]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_6] joystick_button[0079_0006,13] or keyboard[0,6]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_8] joystick_button[0079_0006,15] or keyboard[0,8]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_9] joystick_button[0079_0006,16] or keyboard[0,9]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_0] joystick_button[0079_0006,18] or keyboard[0,0]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_enter] joystick_button[0079_0006_3,0] or keyboard[0,enter]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_del] joystick_button[0079_0006,17] or keyboard[0,del] or keyboard[0,backspace]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/input_map[p1_button1] 
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/input_map[p1_button2] 
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_planetoid]/input_map[key_1] joystick_button[0079_0006,8] or keyboard[0,1]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_planetoid]/input_map[key_tab] joystick_button[0079_0006_3,1] or keyboard[0,tab]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_planetoid]/input_map[key_3] joystick_button[0079_0006,10] or keyboard[0,3]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_planetoid]/input_map[key_2] joystick_button[0079_0006,9] or keyboard[0,2]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_planetoid]/input_map[key_a] joystick_digital[0079_0006_3,0,0,0] or keyboard[0,a]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_planetoid]/input_map[key_z] joystick_digital[0079_0006_3,0,0,1] or keyboard[0,z]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_planetoid]/input_map[key_4] joystick_button[0079_0006,11] or keyboard[0,4]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_planetoid]/input_map[key_space] joystick_button[0079_0006_3,5] or keyboard[0,space]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_planetoid]/input_map[key_5] joystick_button[0079_0006,12] or keyboard[0,5]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_planetoid]/input_map[key_7] joystick_button[0079_0006,14] or keyboard[0,7]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_planetoid]/input_map[key_6] joystick_button[0079_0006,13] or keyboard[0,6]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_planetoid]/input_map[key_h] joystick_button[0079_0006_3,4] or keyboard[0,h]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_planetoid]/input_map[key_8] joystick_button[0079_0006,15] or keyboard[0,8]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_planetoid]/input_map[key_9] joystick_button[0079_0006,16] or keyboard[0,9]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_planetoid]/input_map[key_0] joystick_button[0079_0006,18] or keyboard[0,0]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_planetoid]/input_map[key_enter] joystick_button[0079_0006_3,0] or keyboard[0,enter]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_planetoid]/input_map[key_del] joystick_button[0079_0006,17] or keyboard[0,del] or keyboard[0,backspace]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_elite]/input_map[key_1] joystick_button[0079_0006,8] or keyboard[0,1]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_elite]/input_map[key_3] joystick_button[0079_0006,10] or keyboard[0,3]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_elite]/input_map[key_2] joystick_button[0079_0006,9] or keyboard[0,2]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_elite]/input_map[key_4] joystick_button[0079_0006,11] or keyboard[0,4]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_elite]/input_map[key_5] joystick_button[0079_0006,12] or keyboard[0,5]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_elite]/input_map[key_7] joystick_button[0079_0006,14] or keyboard[0,7]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_elite]/input_map[key_6] joystick_button[0079_0006,13] or keyboard[0,6]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_elite]/input_map[key_8] joystick_button[0079_0006,15] or keyboard[0,8]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_elite]/input_map[key_9] joystick_button[0079_0006,16] or keyboard[0,9]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_elite]/input_map[key_0] joystick_button[0079_0006,18] or keyboard[0,0]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_elite]/input_map[key_enter] joystick_button[0079_0006,19] or keyboard[0,enter]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_elite]/input_map[key_del] joystick_button[0079_0006,17] or keyboard[0,del] or keyboard[0,backspace]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_lshift] joystick_button[0079_0006_3,2] or keyboard[0,lshift]
                                    bbcbp128[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_rshift] joystick_button[0079_0006_3,2] or keyboard[0,lshift]
                                    bbcb[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_1] joystick_button[0079_0006,8] or keyboard[0,1]
                                    bbcb[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_3] joystick_button[0079_0006,10] or keyboard[0,3]
                                    bbcb[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_2] joystick_button[0079_0006,9] or keyboard[0,2]
                                    bbcb[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_4] joystick_button[0079_0006,11] or keyboard[0,4]
                                    bbcb[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_5] joystick_button[0079_0006,12] or keyboard[0,5]
                                    bbcb[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_7] joystick_button[0079_0006,14] or keyboard[0,7]
                                    bbcb[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_6] joystick_button[0079_0006,13] or keyboard[0,6]
                                    bbcb[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_8] joystick_button[0079_0006,15] or keyboard[0,8]
                                    bbcb[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_9] joystick_button[0079_0006,16] or keyboard[0,9]
                                    bbcb[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_0] joystick_button[0079_0006,18] or keyboard[0,0]
                                    bbcb[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_enter] joystick_button[0079_0006,19] or keyboard[0,enter]
                                    bbcb[home_pi_retropie_roms_bbcmicro_thrust]/input_map[key_del] joystick_button[0079_0006,17] or keyboard[0,del] or keyboard[0,backspace]
                                    

                                    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 @SpudsMcToole
                                      last edited by spud11

                                      @SpudsMcToole Lastly, I've got a complete list of the symbols and naming convention for simulating events etc:

                                      Symbols:
                                      This is the complete list of all the predefined symbols available.
                                      These are the event symbols available for the simulate_event(EVENT, TIME) and event(EVENT) commands :

                                      p1_up, p1_down, p1_left, p1_right, p2_up, p2_down, p2_left, p2_right, p1_button1, p1_button2, p1_button3, p1_button4, p1_button5, p1_button6, p1_button7, p1_button8, p1_button9, p1_button10, p2_button1, p2_button2, p2_button3, p2_button4, p2_button5, p2_button6, p2_button7, p2_button8, p2_button9, p2_button10, start1, start2, start3, start4, coin1, coin2, coin3, coin4, service_coin1, service_coin2, service_coin3, service_coin4, service, tilt
                                      

                                      And:

                                      ui_mode_next, ui_mode_pred, ui_record_start, ui_record_stop, ui_turbo, ui_cocktail, ui_configure, ui_on_screen_display, ui_pause, ui_reset_machine, ui_show_gfx, ui_frameskip_dec, ui_frameskip_inc, ui_throttle, ui_show_fps, ui_snapshot, ui_toggle_cheat, ui_up, ui_down, ui_left, ui_right, ui_select, ui_cancel, ui_pan_up, ui_pan_down, ui_pan_left, ui_pan_right, ui_show_profiler, ui_show_colors, ui_toggle_ui, ui_toggle_debug, ui_save_state, ui_load_state, ui_add_cheat, ui_delete_cheat, ui_save_cheat, ui_watch_value
                                      

                                      These are the keyboard symbols available for the simulate_key(EVENT, TIME) (for example, the script_play) command:

                                      key_a, key_b, key_c, key_d, key_e, key_f, key_g, key_h, key_i, key_j, key_k, key_l, key_m, key_n, key_o, key_p, key_q, key_r, key_s, key_t, key_u, key_v, key_w, key_x, key_y, key_z, key_0, key_1, key_2, key_3, key_4, key_5, key_6, key_7, key_8, key_9, key_0_pad, key_1_pad, key_2_pad, key_3_pad, key_4_pad, key_5_pad, key_6_pad, key_7_pad, key_8_pad, key_9_pad, key_f1, key_f2, key_f3, key_f4, key_f5, key_f6, key_f7, key_f8, key_f9, key_f10, key_f11, key_f12, key_esc, key_backquote, key_minus, key_equals, key_backspace, key_tab, key_openbrace, key_closebrace, key_enter, key_semicolon, key_quote, key_backslash, key_less, key_comma, key_period, key_slash, key_space, key_insert, key_del, key_home, key_end, key_pgup, key_pgdn, key_left, key_right, key_up, key_down, key_slash_pad, key_asterisk_pad, key_minus_pad, key_plus_pad, key_period_pad, key_enter_pad, key_prtscr, key_pause, key_lshift, key_rshift, key_lcontrol, key_rcontrol, key_lalt, key_ralt, key_scrlock, key_numlock, key_capslock, key_lwin, key_rwin, key_menu
                                      

                                      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
                                        SpudsMcToole Banned @spud11
                                        last edited by

                                        @spud11 said in AdvMESS For Dummies - a basic guide:

                                        bbcbp128/script_play delay(750); simulate_key(key_scrlock,75);

                                        Fantastic! That one solved it - left Alt and Tab now brings up the menu. Cheers :)

                                        1 Reply Last reply Reply Quote 0
                                        • S
                                          SpudsMcToole Banned
                                          last edited by

                                          Okay, so this seems to be how to get everything working and customisable on BBC, so I'll also add it to the OP.

                                          Firstly, add this line on its own somewhere in the .RC file:

                                          bbcbp128/script_play delay(750); simulate_key(key_scrlock,75);
                                          

                                          That enables the MESS menu to be brought up.

                                          When you start a game, press left-Alt and Tab to bring the menu up. Go to "Input (this system)" and map the controls for that game. Despite the name, this actually appears to be a per-game mapping, not system-wide, which is handy.

                                          When you're done, quit out. Now your bbcmicro.rc file will have a bunch of lines like this in it:

                                          bbcbp128[home_pi_retropie_roms_bbcmicro_killer]/input_map[key_z] keyboard[0,z] or joystick_digital[0079_0011,0,0,1]
                                          bbcbp128[home_pi_retropie_roms_bbcmicro_killer]/input_map[key_x] keyboard[0,x] or joystick_digital[0079_0011,0,0,0]
                                          

                                          The important thing about these is that they tell you what MESS uses as its internal name for the game - this is Killer Gorilla, and MESS has titled it "killer".

                                          If you don't mind manually typing CHAIN "KILLER" every time you want to boot the game up, you're already done. The control keys have been mapped to your joystick and saved, so you only have to set them once for each game in your library.

                                          If, however, you also want to automate the boot process, you'll need one of two lines.

                                          For games which boot with CHAIN "GAMENAME", add this line to the .RC file before the control-map lines above:

                                          bbcbp128[home_pi_retropie_roms_bbcmicro_GAMENAME]/script_play delay(750); simulate_key(key_scrlock,75); simulate_key(key_c,75); delay(75); simulate_key(key_h,75); delay(75); simulate_key(key_a,75); delay(75); simulate_key(key_i,75); delay(75); simulate_key(key_n,75); delay(75); simulate_key(key_space,75); delay(75); simulate_key(key_capslock,75); delay(75); simulate_key(key_2,75); delay(75); simulate_key(key_g,100); delay(75); simulate_key(key_a,75); delay(100); simulate_key(key_m,75); delay(100); simulate_key(key_e,75); delay(100); simulate_key(key_n,75); delay(100); simulate_key(key_a,75); delay(100); simulate_key(key_m,75); delay(100); simulate_key(key_e,75); delay(100); simulate_key(key_2,75); delay(100); simulate_key(key_capslock,75); delay(100); simulate_key(key_enter,75); delay(100);
                                          

                                          Replace "GAMENAME" with whatever MESS has told you is its internal name for the game - eg "killer" in our example above - and change the letters g-a-m-e-n-a-m-e in the script for the letters of whatever that title is. (Obviously you might need to add or delete a couple.)

                                          For games which boot with *RUN "GAMENAME", do the exact same but use this template:

                                          bbcbp128[home_pi_retropie_roms_bbcmicro_GAMENAME]/script_play delay(750); simulate_key(key_scrlock,75); simulate_key(key_capslock,75); delay(75); simulate_key(key_quote,75); delay(75); simulate_key(key_r,75); delay(100); simulate_key(key_u,100); delay(100); simulate_key(key_n,100); delay(100); simulate_key(key_space,75); delay(75); simulate_key(key_2,75); delay(75); simulate_key(key_g,100); delay(75); simulate_key(key_a,75); delay(100); simulate_key(key_m,75); delay(100); simulate_key(key_e,75); delay(100); simulate_key(key_n,75); delay(100); simulate_key(key_a,75); delay(100);  simulate_key(key_m,75); delay(100); simulate_key(key_e,75); delay(100); simulate_key(key_2,75); delay(100); simulate_key(key_capslock,75); delay(100); simulate_key(key_enter,75); delay(100);
                                          

                                          AFAIK every game on the BBC runs with either CHAIN or *RUN, so those two templates should cover you for everything. You now have fully-automated BBC games loading, booting and running with custom control mappings.

                                          OneSwitchO 1 Reply Last reply Reply Quote 1
                                          • OneSwitchO
                                            OneSwitch
                                            last edited by

                                            Great work. Section 6 didn't work for me. I needed this:

                                            advmess = "/opt/retropie/emulators/advmame/bin/advmess bbcb -floppy %ROM%"
                                            default = "advmess"

                                            S 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.