Advance Mess and BBC Micro and joystick control
-
@caver01 Hi. I reckon I probably will have only about 20 games, so I'd have no issue with doing the script. If you can recall, could you please help me do a script of that kind? Thanks.
-
@caver01 Well, I thought I'd have a go. I've added the following to the
advmess.rc
, but it doesn't work. I'm hoping you might be able to suggest changes please:script_emulation \ delay(20000); \ simulate_key(key_c,100); \ delay(200); \ simulate_key(key_h,100); \ delay(200); \ simulate_key(key_a,100); \ delay(200); \ simulate_key(key_i,100); \ delay(200); \ simulate_key(key_n,100); \ delay(200); \ simulate_key(key_space,100); \ delay(200); \ simulate_key(key_quote,100); \ delay(200); \ simulate_key(key_t,100); \ delay(200); \ simulate_key(key_h,100); \ delay(200); \ simulate_key(key_r,100); \ delay(200); \ simulate_key(key_u,100); \ delay(200); \ simulate_key(key_s,100); \ delay(200); \ simulate_key(key_t,100); \ delay(200); \ simulate_key(key_quote,100); \ delay(200); \ simulate_key(key_enter,100); delay(200); \
-
@spud11 You did what I would have suggested. I expect you looked at the script.txt on the advancemame site? Does MESS even start? If your syntax is off or you have a bad line in the .rc file, as you know, it won't even launch.
If it is launching, as I look at it, it appears you are starting with the script_emulation which to my interpretation of the docs should run when the emulation starts running. Then, as a precaution against timing issues, looks like you added a 20 second delay, then your keypresses for .1 seconds each, .2 between them. Am I getting this right?
This is exact what I would have done, hoping to shave off that initial delay once I know it is working. Does the BBC Micro require commands be entered in all caps?
-
@caver01 Hi. I did look at the advmame script examples and followed them as best I could.
The timings you've outlined are right.
However, advmame doesn't start. On the Terminal, the error is:
sh: 1: commandline: not found
(which is the same error I got whenever I messed up theadvmess.rc
file).If I leave
script_emulation
in place, but remove all the other stuff below it, advmess will work as per normal. So there is something clearly wrong with the syntax of the script. I've tried replacingscript_emulation \
withscript_play \
, but that doesn't work either. Anyway, I would think the latter would be incorrect anyway as I want the script to operate before the game begins, not afterwards.And you are right. The BBC Micro requires capital letters. I haven't done that yet, but not including that isn't preventing the script from running, I think.
-
@spud11 Yeah, it is a syntax issue. I lost my config that had the script, so I cannot use my simple example as guidance. Trial and error I think.
As far as timing, I think you have the right idea. . . delay after emulation starts. MESS probably cannot tell if the game has started, only that you launched a BBC Micro with some image file in the virtual floppy drive.
-
@caver01 Well, I reckon I've tried almost every syntax permutation I can think of with exactly the same outcome - diddly squat. I found only a couple of scripts on the interwebs that use
script_emulation
, but none seem to help. I wound up with the following all on one line, but like everything else I've tried it doesn't work sadly:script_emulation delay(20000); simulate_key(key_capslock,100); simulate_key(key_c,100); delay(200); simulate_key(key_h,100); delay(200); simulate_key(key_a,100); delay(200); simulate_key(key_i,100); delay(200); simulate_key(key_n,100); delay(200); simulate_key(key_space,100); delay(200); simulate_key(key_quote,100); delay(200); simulate_key(key_t,100); delay(200); simulate_key(key_h,100); delay(200); simulate_key(key_r,100); delay(200); simulate_key(key_u,100); delay(200); simulate_key(key_s,100); delay(200); simulate_key(key_t,100); delay(200); simulate_key(key_quote,100); delay(200); simulate_key(key_enter,100); delay(200);
It's frustrating, especially as Advance Mame's scripting function seems to have been around for a decade or so, so you'd think it'd be pretty well documented and robust by now.
At least I can get the BBC Micro to work and with my joystick too. Just a pity I need the keyboard to start games.
-
@spud11 I will dig around and see if I can find my script example. I thought I looked for that config a year ago and it was lost to a reformat.
-
@spud11 i have a question. In the emulators.cfg how do you load a cassette? All the roms i found are cassettes. I know -cart, -floppy, -flop1... but i cant get the cassette roms to run. I tried -cass and -cassette. Everything boots to the bbc commandline.
-
@caver01 Thanks for having another look. That's really appreciated. I had a look on the Advance Mame forums. Not a lot of guidance there.
@edmaul69 I've dug around a bit on the internet, but I couldn't find any guidance for a tape switch like -cart or -floppy for Advance Mess. On the MESS forums, there's reference to tape support being broken and then fixed as of MESS 0.129, with the suggestion being that loading tapes by typing *TAPE and then LOAD "" (or something like that) is the way to go. My recommendation would be to find a repository of floppy (.ssd) files instead. I can't help there given the forum rules but googling will no doubt be of assistance.
-
@spud11 ok i found ssd files but they do the same thing. Did you use -cart or -floppy in the emulatots.cfg?
-
@spud11 also does it auto load the games or do i need to type something?
-
@edmaul69 You will need the -floppy switch. For example:
sudo /opt/retropie/emulators/bbcmicro/advmess bbcb -cfg /opt/retropie/configs/bbcmicro/advmess.rc -floppy /home/pi/RetroPie/roms/bbcmicro/Thrust.ssd
(Note that I have installed advmess in a different location from advance mame and I've got a separate advmess.rc.)
The
-floppy
switch is just like putting the game into the BBC's floppy drive. It does not start the game automatically. You will still need to typeCHAIN "THRUST"
(or whatever the rom's name is) manually as it won't auto load. The discussion I'm having with @caver01 above is about trying to automate the loading/starting of the games. -
@spud11 do i need to type the parenthesisis in bbc micro? The parenthesis key types an asterik
-
@spud11 said in Advance Mess and BBC Micro and joystick control:
script_emulation \ . . . delay(200); \
Hey, try getting rid of that trailing backslash on the very last delay(200) script command. That character denotes a broken line to be continued on the next line, and as this is the end of your script, you don't want one because whatever is next in your .rc file will be added to the very long script command.
-
@edmaul69 It depends on whether you have a US or UK keyboard. You need the parentheses. Try holding
shift
and pressing the2
key. -
@caver01 Thanks. No, same outcome unfortunately.
-
@spud11 Ok, one more thing, I noticed that in the script you have above, the second to last line does NOT have the backslash, but that one should have it, because your script command continues on the next line with that last delay(200);
-
@caver01 Hi. I added the
\
back in on the second last line, but again it didn't work. There must be something fundamentally flawed with the script or perhaps how I've included it in theadvmess.rc
file. -
@spud11 said in Advance Mess and BBC Micro and joystick control:
@caver01 Hi. I added the
\
back in on the second last line, but again it didn't work. There must be something fundamentally flawed with the script or perhaps how I've included it in theadvmess.rc
file.There is some ambiguity in the documentation about simulate_event() vs. simulate_key(). I wonder if you can use simulate_event? Also, you might troubleshoot using a much smaller script, something that only types C or something shorter at first.
Also, I would probably try a script_play as I think this is what I did to get it to type scroll lock a while back.
It seems like a powerful feature. I wish we could get you up and running with it.
-
@spud11 Also, regarding flaws, these backslashes have to be correct as I have noted (add back the missing one on second-to-last line, and remove the trailing one at the end) or else the command will break the .rc file.
Another test would be to avoid the use of backslashes completely. Maybe TABs in the file is messing it up. I think my early script simply had everything on one line.
This would be a valid test:
script_play delay(20000); simulate_key(key_c,100);
Of course, it would only type the C key after 20 seconds, but it could be a start.
Is there something else in your .rc file messing this up? A wonky comment line or something?
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.