Jump to content
LaunchBox Community Forums

Amiga Emulation / FS-UAE: A Comprehensive Tutorial + Launchbox Integration


Zombeaver

Recommended Posts

Here is a list of issues (many new, some existing) in the github project(s) relevant to the video / thread:

Disable floppy clicking sound when loading a WHDLoad archive as a HD
https://github.com/FrodeSolheim/fs-uae-launcher/issues/46 Done

Recognize specific WHDLoad archives and apply oagd.net config automatically?
https://github.com/FrodeSolheim/fs-uae-launcher/issues/34 Done

Extract WHDLoad args from .info file when loading a WHDLoad archive as a HD
https://github.com/FrodeSolheim/fs-uae-launcher/issues/48 Done

Add new launcher option to specify global WHDLoad quit key
https://github.com/FrodeSolheim/fs-uae-launcher/issues/47 Done

Option to force PRELOAD for WHDLoad games
https://github.com/FrodeSolheim/fs-uae-launcher/issues/50 Done

Warp mode mapped on universal controller by default?
https://github.com/FrodeSolheim/fs-uae/issues/142

Support injecting quit key event to WHDLoad slave when quitting FS-UAE
https://github.com/FrodeSolheim/fs-uae/issues/143

Add atari-color-fix as an internal filter (before the shader stage)
https://github.com/FrodeSolheim/fs-uae/issues/144

Function to export launch-stub-files for database games
https://github.com/FrodeSolheim/fs-uae-launcher/issues/25

Look for matching .fs-uae config when starting with a WHDLoad archive as parameter
https://github.com/FrodeSolheim/fs-uae-launcher/issues/51

Better handling of WHDLoad archives with multiple slaves / icons
https://github.com/FrodeSolheim/fs-uae-launcher/issues/52

It's possible to subscribe to the issues you are interested in, so you'll get updates in progress. Also, it's actually useful for me if you do (for the issues you are interested in). That way I have easy access to testers, or if I want to ask questions about usage requirements :)

Edited by FrodeSolheim
  • Like 4
Link to comment
Share on other sites

@FrodeSolheim I see that automatic floppy clicking disable, extracted WHDLoad arguments from .infos, and a global QuitKey override have now been implemented in dev version 2.9.3! Nice! Thank you!

One question on the extracted arguments one - how common is it that those .info files actually contain all the proper arguments (PRELOAD, BUTTONWAIT, etc.) for the games? It seems like the significance of that feature is kindof predicated on WHDLoad releases actually containing the proper arguments in their .info files and I'm not sure how ubiquitous that is. Out of curiosity, is there a Windows application for reading/editing these files? I did some reading on Amiga Hunks but it's all a bit over my head xD

Have you considered adding an option to just universally append PRELOAD to all launched WHDLoad games? This may no longer be necessary since you've implemented extracted arguments, but as I said I don't know how commonly PRELOAD is included in the .info files. In my testing of the 300ish games (a drop in the bucket of the Amiga library, granted) I currently have in my library, PRELOAD was never detrimental but not having it frequently was.

Sorry for potentially stupid questions :P

  • Like 1
Link to comment
Share on other sites

@Eirulan I haven't promised it :P - but I think it is likely with at least some kind of functionality in that regard. However, I can also see that it could also amount to opening a can of worms, so it may not be that easy to cover everyones desires. It may still be necessary with a 3rd-party app for less common cases ;-)

Thanks for helping make FS-UAE an attractive option for a wider audience :)

@Zombeaver You're welcome :) (and also welcome to test if you have not already)

It's very common for the slaves to already have sensible defaults (i.e. PRELOAD, etc.) in the .info files. I know because changes to whdload_args on openretro.org are quite rare (but it happens).

An option to force PRELOAD is certainly possible. I haven't considered it yet, because I have focused mostly on the online game database, and not much on just "running" a local WHDLoad archive directly. Maybe it is never detrimental... http://whdload.de/docs/en/opt.html claims that "This option should be enabled always". So an alternative is to add it (always) to the auto-generated WHDLoad.prefs file.

If the goal is to be be able to "run" a WHDLoad archive (without the online game database), there are a few cases where the automatic configuration may fail:

  • If the whdload args contained in the .info file are incorrect/insufficient.
  • If the slave is too big to fit in 10 MB RAM (happens for a couple of games).
  • If the slave needs other options such as CD32 gamepad (I *could* in theory check the archive name and enable that automatically if the archive name contains CD32. But I don't think that will work always, because the slaves are intended to run on desktop Amigas, and at least for some slaves, .
  • If the slave contains more than one .info file (that's the case for at least a couple of dozen slaves, e.g one .info for intro, and one for the game itself). In this case, the Launcher does not know which one to pick, and now it picks no-one. I could change that so it picks the first one, or try to pick the one which matches the archive name best, but it's (presumably) impossible to make that perfectly. Maybe try to pick the .info file with exact same name as the WHDLoad archive before the first underscore, or something.

Though my main focus is to make the game database integration work as well as possible, I'm also happy to improve running WHDLoad archives without the database, as long as the features makes sense and does not detract too much from other improvements!

One idea, which might be good, now that the "automatic" functionality works better with regards to WHDLoad arguments, is to add support for an .ini side alongside the WHDLoad archive, say for example:


Lotus2_something.lha

Lotus2_something.ini

And if that .ini file exists, the Launcher could read overrides from that file in the (hopefully few cases where the "automagic" fails. For example to override the WHDLoad arguments, or change pad to CD32 mode. Example:


[whdload]

whdload_args = Lotus2.slave CUSTOM1=2

joystick_port_1_mode = cd32 pad

With these improvements, you could be able to just point the game frontend of your choice (LaunchBox) to a directory with WHDLoad .zip and .lha files, and just specify fs-uae-launcher as the emulator, needing neither the game database nor configuration files.

What do you think?

(PS: I think I must also need to implement a feature where the save state directory name is created based on the WHDLoad archive name if running without a config or uuid. I think it will just use the default save directory currently).

Edited by FrodeSolheim
  • Like 1
Link to comment
Share on other sites

3 hours ago, FrodeSolheim said:

@Zombeaver You're welcome :) (and also welcome to test if you have not already)

Will be doing so today!
 

3 hours ago, FrodeSolheim said:

It's very common for the slaves to already have sensible defaults (i.e. PRELOAD, etc.) in the .info files. I know because changes to whdload_args on openretro.org are quite rare (but it happens).

Ah, well that's a relief.
 

3 hours ago, FrodeSolheim said:

An option to force PRELOAD is certainly possible. I haven't considered it yet, because I have focused mostly on the online game database, and not much on just "running" a local WHDLoad archive directly. Maybe it is never detrimental... http://whdload.de/docs/en/opt.html claims that "This option should be enabled always". So an alternative is to add it (always) to the auto-generated WHDLoad.prefs file.

Yes, that's consistent with my testing. It never caused a problem in the 300~ games I tested, but its absence often did, as I demonstrated in the video with Defender of the Crown and Darkmere.
 

3 hours ago, FrodeSolheim said:

If the goal is to be be able to "run" a WHDLoad archive (without the online game database), there are a few cases where the automatic configuration may fail:

  • If the whdload args contained in the .info file are incorrect/insufficient.
  • If the slave is too big to fit in 10 MB RAM (happens for a couple of games).
  • If the slave needs other options such as CD32 gamepad (I *could* in theory check the archive name and enable that automatically if the archive name contains CD32. But I don't think that will work always, because the slaves are intended to run on desktop Amigas, and at least for some slaves, .
  • If the slave contains more than one .info file (that's the case for at least a couple of dozen slaves, e.g one .info for intro, and one for the game itself). In this case, the Launcher does not know which one to pick, and now it picks no-one. I could change that so it picks the first one, or try to pick the one which matches the archive name best, but it's (presumably) impossible to make that perfectly. Maybe try to pick the .info file with exact same name as the WHDLoad archive before the first underscore, or something.

Though my main focus is to make the game database integration work as well as possible, I'm also happy to improve running WHDLoad archives without the database, as long as the features makes sense and does not detract too much from other improvements!

Interesting. I suppose these sort of niche issues are inevitable when you're dealing with a library the size of the Amiga's.

I wouldn't say that directly running them is the goal - personally, I intend to continue using the same process I have been using - hooking into the OAGD. I think that's going to typically yield better results overall. However, the reality is that some people will simply throw an archive at FS-UAE and call it good, whether you implement features that accommodate that or not - there are a number of other tutorials on Youtube that recommend exactly that. Extracted arguments will certainly be beneficial in those cases.

3 hours ago, FrodeSolheim said:

[whdload] whdload_args = Lotus2.slave CUSTOM1=2 joystick_port_1_mode = cd32 pad

One idea, which might be good, now that the "automatic" functionality works better with regards to WHDLoad arguments, is to add support for an .ini side alongside the WHDLoad archive, say for example:

Lotus2_something.lha

Lotus2_something.ini

And if that .ini file exists, the Launcher could read overrides from that file in the (hopefully few cases where the "automagic" fails. For example to override the WHDLoad arguments, or change pad to CD32 mode. Example:

[whdload]

whdload_args = Lotus2.slave CUSTOM1=2

joystick_port_1_mode = cd32 pad

With these improvements, you could be able to just point the game frontend of your choice (LaunchBox) to a directory with WHDLoad .zip and .lha files, and just specify fs-uae-launcher as the emulator, needing neither the game database nor configuration files.

What do you think?

Hmm... I could certainly see the benefits of this in some scenarios, though my concern with this would be that it seems equally or even more time-consuming than simply creating/importing a config.

Would it be possible for FS-UAE to look at the file name (or I guess it'd actually be the checksum based on what you said previously) of the archive that's being directed to it, seeing if that version is currently present/imported in your FS-UAE library, and launching the appropriate config? To me this is kindof the best of both worlds - you're still taking advantage of the OAGD and the benefits that it brings, while also eliminating the smart but somewhat unwieldy solution of launching via UUIDs. The UUID exporter would no longer be necessary and we could slim Launchbox's needs down to a single emulator entry, which could still use user-made configs if so desired.

3 hours ago, FrodeSolheim said:

(PS: I think I must also need to implement a feature where the save state directory name is created based on the WHDLoad archive name if running without a config or uuid. I think it will just use the default save directory currently).

Yep, definitely.

Link to comment
Share on other sites

I updated to the new dev build last night and had time to try out a couple games, both of which exited gracefully with f10 mapped to my right thumbstick button. So success! I haven't dug into save states yet, but that's next on the list if I can stop myself from going down the list of games and reading all the the blurbs.

  • Like 1
Link to comment
Share on other sites

First off, YAY for Frode being active in here :) and I thank you both for bashing your clear minds to get all this as user friendly I always wanted it to be.

I first thought oagd hashed the whole zip so if you changed the argument in the info files you would then have a game unrecognised for FS and therefore kinda unable to be editable. Nice that it isn´t. Now I´m a bit puzzled  if I should post issues/features here or in FS forums but I might post them in both places.

  1. When I launch Alfred Chicken AGA, WHDLoad version, there are tick boxes which I guess is directly switchable arguments? Is that just possible if the WHDLoad releaser make it so or is there a switch? Would've been nice if they added joystick support to tick the buttons..
  2. To see games in lister that isnt even in unreleased state so that it would be easier to filter or make configs for etc. Possibly bad if non amiga game zips is in same folder. Would make it easier to help oagd?
  3. Some games would really be more enjoyable by playing with a faster CPU or equivalent config. Such as Extreme Racing or Gloom. Maybe some would break but would it be possible to have an option to use 030/060 on all WHDLoad games that uses A1200 config without making a special config for all those? Also applicable on CD32 games. Would such changes be ok to report to OAGD?
  4. RetroArch have really neat shader configs (I find crt-super-xbr amazing!) would those be possible to have those in FS?
  5. To be able to launch two instances of FS to play linkable games (Lotus 2, Populous, Stunt Car Racer, Extreme Racing) like it was just a split screen. It´s apparently possible with WinUAE according to this thread: http://eab.abime.net/showthread.php?t=68529 . This would be super!

Enhancement 1. Explanation window when hovering over edit buttons.  I too was unaware of this nice feature, thought I could change to a custom name there or something.

Bug: When I scroll down the lister in FS it jumps back up to top when I come to Adventure Quest which seem to be unclickable aswell. There are more games where this occurs, all seems to be games I don´t have. I´m trying out 2.9.3dev portable x64 version but recall I had the same issue in earlier version as well.

 

Link to comment
Share on other sites

Hi Zombeaver!

I started to add Amiga stuff to LB but didn't finish doing so. Today I saw a post saying the launcher program I believe you mention in your tutorial is no longer needed. Will you be adding a little pop up to your YouTube video to remind us of this and to skip some step, because I'm bound to forget this when it come time for me to add the system.

The tutorial. Is top notch by the way! Did you get anywhere with doing a CD32 videos?

Link to comment
Share on other sites

1 hour ago, InfinityFox said:

Today I saw a post saying the launcher program I believe you mention in your tutorial is no longer needed. Will you be adding a little pop up to your YouTube video to remind us of this and to skip some step, because I'm bound to forget this when it come time for me to add the system.

Yep. As of FS-UAE stable version 2.8.3 it's no longer necessary. The bug that the Launcher was created to address has been patched. I've added annotations to the video where appropriate.

1 hour ago, InfinityFox said:

The tutorial. Is top notch by the way!

Thanks!

1 hour ago, InfinityFox said:

Did you get anywhere with doing a CD32 videos?

Based on what Frode has said here on the forums, it sounds like what I described about them in the video is "working as intended" since WHDLoad versions of CD32 games were made to function on an A1200 rather than an actual CD32, thus the configs for them are typically setup to use a normal Amiga joystick. Games that use controls that are actually dependent on the CD32's controller (like Gloom) need to be setup to use the CD32 pad like I described in the video.

A couple other things brought up in the video have also been patched/improved in development version 2.9.3. Specifically:

  • Disable floppy clicking sound when loading a WHDLoad archive as a HD
  • Extract WHDLoad args from .info file when loading a WHDLoad archive as a HD
  • Add new launcher option to specify global WHDLoad quit key

My plan is to make an update video once a few other things are addressed and pushed into a stable release. I may touch on CD32 at that point but honestly there's not much else to say - if you're adding them as disc images you add them in the CD tab rather than floppy/hard drive tabs. If WHDLoad versions of them are imported, they may or may not need to have the controller changed to a CD32 pad based on the game.

On 1/6/2017 at 6:46 PM, FrodeSolheim said:

About CD32 games. If you use a proper CD32 game (model = CD32, CD image), then FS-UAE Launcher will default to using CD32 Gamepad mode. But *WHDLoad* ports of CD32 games is a different matter. These are ports of CD32 games
meant to be played on a desktop Amiga, such as the A1200 or A4000. The desktop models defaults to joystick mode. If the game needs the CD32 Gamepad mode, and is incorrectly configured, please submit a fix to the online database (joystick_port_1_mode = cd32 pad).

 

  • Like 1
Link to comment
Share on other sites

Now that Frode has joined this forum: Is there any chance to improve the Launchbox-Database with the data from OAGD? Regarding Amiga titles, it is MUCH more complete. Maybe Launchbox can scrape the OAGD when importing Amiga games? 

Or maybe, in the future, both databases can even join their efforts? I just now noticed that the OAGD is now called Openretro and incorporates other platforms too...

Edited by Cabirus
  • Like 1
Link to comment
Share on other sites

Hi, I've been somewhat busy lately, so I haven't responded to the questions which has cropped up here. I will do so, however, soon :)

In the meantime, I might be able to interest you with a status report:

 

Support for forcing PRELOAD has been added (defaults to on, can be disabled with a setting):
https://github.com/FrodeSolheim/fs-uae-launcher/issues/50

 

Automatically apply config from game database if archive is recognized
https://github.com/FrodeSolheim/fs-uae-launcher/issues/34

This is implemented now, and will be released with FS-UAE Launcher 2.9.4dev. Short description:

By default, if you start fs-uae-launcher with a path to a WHDLoad archive, it will derive the variant UUID from the files in the archive, and if FS-UAE Launcher finds this variant in the game database, it will use the config from the online game database. You can disable this by adding the new --no-auto-detect-game parameter.

If the variant is not found, or --no-auto-detect-game, it will try to automatically generate a config for the game (A1200, 8MB fast RAM, automatically find slave / extract WHDLoad arguments, etc). PRELOAD will be forced automatically (can be disabled by an option).

A change in functionality is that now, when launching with a WHDLoad archive as parameter, the name of the archive will be used as save dir name. This applies regardless of whether the variant was found in the game database or not. So the save data is basically tied to the archive name. (On the other hand, if you launch fs-uae-launcher with an UUID, the launcher will generate the save dir name).

 

Look for matching .fs-uae config when starting with a WHDLoad archive as parameter
https://github.com/FrodeSolheim/fs-uae-launcher/issues/51

Plan to implement soon, will probably do something like @Zombeaver's suggested, but maybe slightly more basic. For example, if a .fs-uae config file is found with the same name as the WHDLoad archive, load config from that one. In any case, note that this is only "needed" if the automatic config is not good enough, and/or a match in the game database was not found.

 

Better handling of WHDLoad archives with multiple slaves / icons
https://github.com/FrodeSolheim/fs-uae-launcher/issues/52

New issue registered. Check issue for more details (also consider subscribing if you are interested).

I have added the new issues to my previous post containing a list of issues, and also updated the list marking issues as done :)

  • Like 2
Link to comment
Share on other sites

21 minutes ago, FrodeSolheim said:

Support for forcing PRELOAD has been added (defaults to on, can be disabled with a setting):
https://github.com/FrodeSolheim/fs-uae-launcher/issues/50

Great! This is a very nice addition.

21 minutes ago, FrodeSolheim said:

Automatically apply config from game database if archive is recognized
https://github.com/FrodeSolheim/fs-uae-launcher/issues/34

This is implemented now, and will be released with FS-UAE Launcher 2.9.4dev. Short description:

By default, if you start fs-uae-launcher with a path to a WHDLoad archive, it will derive the variant UUID from the files in the archive, and if FS-UAE Launcher finds this variant in the game database, it will use the config from the online game database. You can disable this by adding the new --no-auto-detect-game parameter.

If the variant is not found, or --no-auto-detect-game, it will try to automatically generate a config for the game (A1200, 8MB fast RAM, automatically find slave / extract WHDLoad arguments, etc). PRELOAD will be forced automatically (can be disabled by an option).

Brilliant! This is a wonderful change!

21 minutes ago, FrodeSolheim said:

A change in functionality is that now, when launching with a WHDLoad archive as parameter, the name of the archive will be used as save dir name. This applies regardless of whether the variant was found in the game database or not. So the save data is basically tied to the archive name. (On the other hand, if you launch fs-uae-launcher with an UUID, the launcher will generate the save dir name).

Hmm...I guess this means it wouldn't find existing saves if people had been using the UUID method then. I suppose that's not a huge deal since it's unlikely that people are going to remove existing games from their library and then reimport them just to use this different method (because why would they?). It's something that people should be aware of though since they'd run into it if they were to, for example, copy their files over to a new computer and did a fresh import on another instance of Launchbox, using archives rather than UUIDs.

21 minutes ago, FrodeSolheim said:

Look for matching .fs-uae config when starting with a WHDLoad archive as parameter
https://github.com/FrodeSolheim/fs-uae-launcher/issues/51

Plan to implement soon, will probably do something like @Zombeaver's suggested, but maybe slightly more basic. For example, if a .fs-uae config file is found with the same name as the WHDLoad archive, load config from that one. In any case, note that this is only "needed" if the automatic config is not good enough, and/or a match in the game database was not found.

Hmm. Interesting. So, just so I understand, this would be for a scenario where someone has already created a custom config but rather than starting FS-UAE with that config they're starting it with the archive itself? Does the archive have to exactly match the name of the config? Because that probably wouldn't work if so - most of the commonly distributed archives have names like "Agony_v1.3_0960.zip" rather than just "Agony" (which is what the config is likely to be named). If there's some kind of matching logic though that could be useful - people could theoretically just dump all their archives into Launchbox and if there's an existing config it'd find/match/use it accordingly.

21 minutes ago, FrodeSolheim said:

Better handling of WHDLoad archives with multiple slaves / icons
https://github.com/FrodeSolheim/fs-uae-launcher/issues/52

New issue registered. Check issue for more details (also consider subscribing if you are interested).

What would an example of this be? I'm not sure if I've encountered this.

Thank you very much for all of your hard work Frode and for keeping us apprised of what's going on!

Link to comment
Share on other sites

19 minutes ago, cleverest said:

All this awesomesauce and I don't know where to download 2.9.4 / 2.9.4dev....can't seem to find it...is it not RELEASED yet for download?

Thanks for all your hard work guys!

I don't think it's available yet. The dev version download page is showing 2.9.3 currently.

https://fs-uae.net/download-devel#windows

On 1/24/2017 at 5:50 PM, FrodeSolheim said:

This is implemented now, and will be released with FS-UAE Launcher 2.9.4dev.

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...