AdvMESS For Dummies - a basic guide
-
@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 thesimulate_event(EVENT, TIME)
andevent(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, thescript_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
-
@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 :)
-
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.
-
Great work. Section 6 didn't work for me. I needed this:
advmess = "/opt/retropie/emulators/advmame/bin/advmess bbcb -floppy %ROM%"
default = "advmess" -
@OneSwitch Might be because you haven't manually set up a separate
.rc
file for the BBC Micro calledbbcmicro.rc
. I'm assuming you're using the standardadvmess.rc
configuration file? -
@spud11 Maybe linked to having previously set-up the Channel F using the advmess.rc file. I did set up the separate file as described. Don't want to break the Channel F so happy it's working a bit.
I'm finding I can't SHIFT+BREAK at the minute, but just having the BBC 32K window is big progress for me, thanks.
-
I'm finding as soon as I press "." it's swapping resolutions up until a crash point. Makes loading games impossible. I'd better read the rest of the above first, but if it's not explained, any thoughts?
-
@OneSwitch Lots of remapping is the answer...
-
Thanks so much for doing all of this. I found that auto-start didn't work for me though. I've had to do this...
bbcbp128[home_pi_retropie_roms_bbcmicro_lottery]/script_play delay(750); 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_lalt,75); delay(75); simulate_key(key_2,75); delay(75); simulate_key(key_m,100); delay(75); simulate_key(key_e,75); delay(100); simulate_key(key_n,75); delay(100); simulate_key(key_u,75); delay(100); simulate_key(key_2,75); delay(100); simulate_key(key_enter,75); delay(100);
Where I'm using the BBC Master emulator (bbcp128), and needed to CHAIN"MENU" [return] to get the game running. I found that the " " part wasn't working for me. Hope this helps a bit further.
-
@OneSwitch It looks like you didn't need to "type" the scroll lock or the capslock keys in your script. Would that be right?
-
@spud11 - Yes that's right. I'm not sure why the slight differences. I'm also finding (after some tweaking) that every game seems to store its own unique joystick settings. Which is very handy, albeit laborious.
Love the auto-boot script. Thanks for that.
Wondering now.... Is it possible to have two separate BBC Micro areas. One for 32K Model B and one for BBC Master 128K, as they both have lots of incompatibility issues I find, between one another.
Cheers again for all this.
-
The Master can be made more compatible using older Model B os, I do this on a real master using a switchable multi-os. I found os 1.20 to be the most compatible. Whether this can be done in emulation, I don't yet know.
One thing I can't seem to get working is saving per-game settings like you all seem to be doing, my settings aren't saved when I exit.
I would like to get a specific video mode working, higher horizontal res + multiplier x2 - which gives a picture far closer to the real thing. -
@OneSwitch No worries - my contribution to the betterment of humanity!
I just had a look at my
emulators.cfg
for BBC Micro which is:beebem = "/usr/local/bin/beebem %ROM%" default = "advmess" beebem2 = "%ROM%" advmess = "/opt/retropie/emulators/advmame/bin/advmess bbcbp128 -floppy %ROM%" b-em = "/opt/retropie/emulators/b-em/b-em %ROM%" -m10 beebem3 = "/opt/retropie/emulators/beebem2/beebem2 %ROM%"
I have a feeling if you wanted to replicate the 32K Model B as well as the 128, you'd just need to add another configuration manually to this file. When you start a game, you'd need to bring up the blue menu to pick the new 32K configuration for that particular game.
As that can be a bit of a pain (ie destroys immersion), what I often do with my systems is create a new
configs
folder and a newroms
folder - one for the BBC 128 and another for the BBC 32K. I then combine the 2 romlists into a new combined Attract Mode romlist. That way I don't need to bring up the blue menu when I start a game - the game automatically has the right configuration.I would also create a new emulator in the Attract Mode emulators folder which would look something like this:
# Generated by Attract-Mode v2.2.1 # executable /opt/retropie/supplementary/runcommand/runcommand.sh args 0 _SYS_ bbcmicro32k "[romfilename]" rompath /home/pi/RetroPie/roms/bbcmicro32k romext .ssd;.SSD system BBC Micro info_source thegamesdb.net artwork flyer /home/pi/RetroPie/roms/bbcmicro/flyer artwork marquee /home/pi/RetroPie/roms/bbcmicro/marquee artwork snap /home/pi/RetroPie/roms/bbcmicro/snap artwork wheel /home/pi/RetroPie/roms/bbcmicro/wheel
-
Champion. I'll try that ASAP. So nice to have the Beeb running.
-
If you are only playing games on the BBC emulator, then is there any real reason to run a Master 128 ?
It didn't really offer anything over the standard 32k Model B, for the majority of games, aside from Elite Enhanced.For what the Beeb could really do, and it's a shame it took until the last few years to show this, then this is a fabulous collection of freeware games by Retro Software.
http://bbcmicro.co.uk/index.php?search=Retro+Software&on_P=on
Some are almost arcade-perfect.
-
@John_RM_70 Brilliant list. Thanks for that.
-
Thought this might be useful for those wanting other BBC variants, such as Model A, Model B, 64k, etc..
This is the BBC variant, followed by the mess system name.
BBC Master 128k - bbcbp128
BBC Model A - bbca
BBC Model B - bbcm
BBC Model B+ 128k - bbcbp
BBC Model B+ 64K - bbcbThese are the roms (exact names), followed by the crc, needed for advmess.
basic2.rom - crc:79434781
bpos2.rom - crc:9f356396
ch103.rom - crc:98367cf4
ddfs-1.53.rom - crc:e1be4ee4
ddfs223.rom - crc:7891f9b7
dfs09.rom - crc:3ce609cf
dfs144.rom - crc:9fb8d13f
dnfs.rom - crc:8ccd2157
mos+3.50.rom - crc:141027b9
os12.rom - crc:3c14fc70
zdfs-0.90.rom - crc:ea579d4d -
@John_RM_70 It's apparent to me and probably to others here that you have a deep and abiding interest in the BBC Micro. Could you let us know your thoughts please on each of these models? I'd rather like to have just one model installed, if possible, using advmess. I selected bbcbp128, but copy of Elite I have doesn't seem to work (yet I know I had it working at one stage - perhaps when I was using the 32K model). (I have to try out some of the other commands instead of CHAIN "LOAD" in the meantime).
Does the bbcbp128 have 100% compatibility with games made for the other models or do you think it's necessary to install more than one model to get proper coverage of games?
-
@spud11 said in AdvMESS For Dummies - a basic guide:
bbcbp128
It's 4am here, so I will give you a better answer later today - I stupidly did a source update on one of my Pi emulators, and now it's still going.
My honest opinion is that the Master 128k isn't needed for games since 99.9% of them are for the Model B, while a tiny few take advantage of the Master 128k.
On real hardware, I found the only way to make the Master 128 more compatible is to use a multi-os hardware switcher, to switch from os 1.2 upto os 3.50. with 1.2 being the most compatible - something to do with a missing character set in the later roms.
I have a Model B 32k with a Turbo MMC SDcard, and this is the most compatible out of all the Beebs.
I am going to switch to the BBC Model B, for the advmess emulator, since I am already finding many games not working with the bbcbp128. -
@spud11 said in AdvMESS For Dummies - a basic guide:
Does the bbcbp128 have 100% compatibility with games made for the other models
Definitely not. I defaulted to bbcbp128 and a small number of games wouldn't work until I went to bbcb. (Which I thought was the "standard" model, but it now seems that's bbcm, so I'm going to try that on a couple of troublesome ones.)
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.