AdvMESS For Dummies - a basic guide
-
@John_RM_70 That's the exact same place I've been getting most of mine from, so it shouldn't be the files.
The forum won't let me attach bbcb.zip, not sure how to add it, but I'm pretty sure it's just the one from the BIOS site listed in the original post.
-
Do our configs differ ?
Here is minedefault = "advmess"
advmess = "/opt/retropie/emulators/advmame/bin/advmess bbcb -cfg /opt/retropie/configs/mame-advmame/bbcmicro.rc -floppy %ROM%"It can't be anything in bbcmicro.rc, there really isn't anything in there that would do this.
-
@John_RM_70 I've got:
default = "advmess" advmess = "/opt/retropie/emulators/advmame/bin/advmess bbcb -cfg /opt/retropie/configs/mame-advmame/bbcmicro.rc -floppy %ROM%"
Which seems to be identical. I don't think it can be bbcmicro.rc that's causing your problem, because if there's so much as a single character out of place there you'll just get dumped back to ES, you won't get to the BBC OS screen.
-
@SpudsMcToole @John_RM_70 I switched back to the
bbcb
BIOS and all 4 games I've so far got ready are working - Thrust, Planetoid, Elite and Chuckie Egg. (With Elite, I found that the command suggested by you, John,*!BOOT
worked instead ofCHAIN "LOAD"
).What I did notice from John's bios list was that some of the bioses would need to be renamed - for example,
dfs09.rom
appears asdfs090.rom
in the zip file of bioses I have. -
@spud11 This command - CHAIN "LOAD" - is for loading cassettes. Most of the games out there are .ssd (single sided disk) or .dsd(double sided disk) and to load them it's normally *!BOOT, or *LOADER, etc... On a real BBC, you can just press shift+break and disks boot, but I don't think this version of mess has a break key defined.
I had a look through bbc.c on github, and I think I got the bios names wrong. There it says this.
https://imageshack.com/a/img922/9927/5OcQYP.png
I have used a png pic because I can't get the formatting to work properly, and the text was all over the place.
Anyway, that list makes more sense, such as bbcm = BBC Master.
I don't think dfs09.rom or dfs090.rom, makes much difference. "dfs", is just Disk Filing System, and I think the most used is 1.44.
I think there should be a parent bios, bbca.zip, which would contain ALL the roms. Then each system would have it's unique rom, such as bbcb.zip, or bbcm.zip, only containing what it needs. Will try this, in a minute.@spud11 When you boot the Model B rom, do you see this ?
BBC Computer 32K
Acorn DFS
BASICOr do you see anything different ? I'm thinking my problem is the dfs.
-
@John_RM_70 That is exactly the boot text that I get.
-
@John_RM_70 I've also had a look at Advance Mame's documentation: https://www.advancemame.it/doc-script . You are right. There's no simulated key for
shift-break
:EVENT 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.
This means the
script_play
command would need to type out the whole*1BOOT
for cassettes and theLOADER
command etc for others. -
Thanks spud.
I had another look on github, and also couldn't find a shift-break.This means the script_play command would need to type out the whole *1BOOT for cassettes
*!BOOT is for disks only. For cassettes, you need CHAIN "", or CHAIN"gamenamexxx". And, you might also need to manually "Play" the virtual cassette drive from the tab menu "Tape Control". I think it would depend on the Mess emulation. Does it emulate a cassette in real-time ? Or is it a sort of quick load ? I haven't tried cassettes, yet. If it's a quick load, then it should load cassettes automatically.
I still can't fathom this out, it's plain bonkers. If I boot to a Master 128, then games work. But then, I think the 128 used a different/newer dfs, or it's using a watford dfs. If I boot to a Model B, then nothing works, although I can *CAT disks, so something is working - just not *!BOOT. -
@John_RM_70 Damn. That's a bit problematic. There is therefore a huge number of variables - what roms/games we've downloaded, what format they are in (tape/disk), what bioses we've each got, what commands are needed to get things working and what model of BBC we're each using. I really hadn't realised just how many commands there appear to be to get games working.
It's definitely a quick load, no matter which command you use. 3 of the games I've got work with the CHAIN command so they must be tapes/cassettes. They load instantaneously. The version of Elite I have loads with the *!BOOT command so that must be a disk. It loads instantaneously as well.
-
I had a chat with a old mate I went to school with and he said something along these lines.
CHAIN "LOADER"
Will work for a disk image, normally a cassette converted to a disk image. CHAIN, loads the first program as a "basic" program. You can shorten CHAIN "" with CH."GAMEXX". If it's not a basic program, you will get a error message
"Bad program"
You can then try "*RUN GAMEXX"
I tried the CHAIN method and ran out of memory, so if anyone gets "No Room" error, then you simply type MODE 7.
I have been successful in running games directly, not using *!BOOT. So, CHAIN "CHUCKIE" - for chuckie egg. *!BOOT - for me, only runs on the Master 128 roms, it doesn't work in the Model B roms. Weird.Also, pressing the dot key "." will change videomode, so will have to see where that is.
-
@John_RM_70 Sounds like it's going to just be trial and error for each game. I can't see any other way to make things a bit simpler.
It's a real pity
beebem
doesn't have sound support as it would be the best solution, I think. -
@John_RM_70 I wanted to automate starting Elite, given that it is a disk rather than a cassette. Advmess doesn't have inbuilt simulated keys for the exclamation mark or for the asterisk, but the following
script_play
command successfully types*!BOOT
at the commandline:bbcb[home_pi_retropie_roms_bbcmicro_elite]/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_1,75); delay(75); simulate_key(key_b,75); delay(75); simulate_key(key_o,75); delay(75); simulate_key(key_o,75); delay(75); simulate_key(key_t,75); delay(75); simulate_key(key_enter,75); delay(75);
Elite will now start automatically.
-
@spud11 Thanks. Is it possible to do this with a wildcard, instead of a specific game ?
I was thinking of Dragon32. Almost all games are CLOADM, vary rare to use CLOAD (Basic). It would be great to use this for testing games, since a lot of games produce IO Errors - although this seems like a emulator problem, rather than a broken take image. -
@John_RM_70 I'm not sure about the wildcard scenario, but @teller has pointed out that you can use a more standardised script for most games: https://retropie.org.uk/forum/topic/13017/advance-mess-and-bbc-micro-and-joystick-control/57
bbcb/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_lshift,150); simulate_key(key_2,50); delay(200); 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_lshift,150); simulate_key(key_2,50); delay(200); simulate_key(key_enter,75); delay(75);
I can't see why you couldn't adapt this script for the Dragon 32, for example. Personally, I'm using xroar for Dragon 32 emulation.
-
Thanks for that, I will have a good read.
Take my word on this, but Mess is far better than Xoar. The sound is much better, less crackly. And I found the image quality to be a lot better, although I am on a CRT - I see a better defined, slightly sharper image. This could be the better scaling in Mess, I use Magnify x2 + Integer scaling. -
@John_RM_70 That's good to know. I was planning on "advancing" (pun definitely intended) my knowledge of advmess by setting up a few more systems, such Super Cassette Vision, Arcadia 2001 etc, anyway so will give Dragon 32 a go too.
Let me know whether things improve for you on the BBC Micro front. There shouldn't be any reason why it won't work. I'll also add a few more games and see if I run into any problems similar to those you have.
-
@spud11 said in AdvMESS For Dummies - a basic guide:
I can't see why you couldn't adapt this script for the Dragon 32, for example. Personally, I'm using xroar for Dragon 32 emulation.
I'm trying to do this right now. Getting some weird teething errors when I try to replicate the approach used in the BBC Micro .RC file directly, but am experimenting.
Also, MESS doesn't seem to recognise the .CAS file when I boot it - it thinks there's no tape inserted and I have to go into the MESS menus and select it manually.
-
@spud11 I still can't get *!BOOT to work in the BBC Model B rom, I have to load the actual game name, directly. I might have to have 2 entries in ES, one for Model B 32k, one for BBC Master.
@SpudsMcToole Make sure your .cas files are all lower case, and not zipped. I had a similar issue, so I unzipped them all and made sure everything was the same case.
-
@John_RM_70 It is very strange. I've just had a look at my roms - all of them are in the ssd format, meaning they must be disks. Yet, some load with
CHAIN "LOAD"
, a couple have to be loaded withCHAIN
followed by the romname and Elite will only work with*!BOOT
. The only thing I can think of is that you will probably need to do trial and error for all of them and see which work and probably download a few different romsets. At least once you've got a rom working you can use thescript_play
command to automate the process.I also agree with your suggestion that you'll need separate setups for the BBC B and for the 128, particularly if it is the only way for you to get some games working. That's really easy to do with Attract Mode, but I'm less sure about emulationstation as it's been more than 2 years since I used that front end.
-
@John_RM_70 I've just set out below the
script_play
commands I'm using.The methodology I've used is one where I have 2 standard/generic
script_play
commands - one for the 128 and the other for the B - which just chain "loads" games. (That will apply to all games I add in the future. Most games I've got now seem to work with this standard command.) Where that command hasn't worked (eg Chuckie Egg and Thrust), then I've used a specific chain "name" command which overrides the standard "load" command. And for Elite, I've used the boot command because that works for me. With Elite, I noticed on the disk (using *CAT) it has a file called !BOOT. None of the other disks have that.bbcb/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/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_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_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); bbcbp128[home_pi_retropie_roms_bbcmicro_elite]/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_1,75); delay(75); simulate_key(key_b,75); delay(75); simulate_key(key_o,75); delay(75); simulate_key(key_o,75); delay(75); simulate_key(key_t,75); delay(75); simulate_key(key_enter,75); delay(75); bbcb[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); bbcb[home_pi_retropie_roms_bbcmicro_elite]/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_1,75); delay(75); simulate_key(key_b,75); delay(75); simulate_key(key_o,75); delay(75); simulate_key(key_o,75); delay(75); simulate_key(key_t,75); delay(75); simulate_key(key_enter,75); delay(75); bbcb[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);
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.