randyrossi / bmc64

A bare metal Commodore 64 emulator for the Raspberry Pi with true 50hz/60hz smooth scrolling, low input latency and better audio/video sync.
GNU General Public License v3.0
473 stars 56 forks source link

Multiple Emulator/Machine Profiles #213

Open xenium1024 opened 2 years ago

xenium1024 commented 2 years ago

This is a feature request, not a bug report.

I would love to be able to set up multiple configuration profiles for each emulator and be able to quickly switch between them, just as one can currently switch between different "machines" (i.e. video configurations).

For example, I would like to be able to select between system configurations I frequently use such as:

...etc.

If I understand the current configuration methodology correctly, the "machines.txt" file allows multiple profiles for each emulator, but those profiles ONLY allow a subset of Raspberry Pi config.txt and command line options, the intent being to allow different video and timing configurations. However, the actual emulator settings are still stored in the emulator's settings.txt file, for which there is only one file available per emulator.

My suggestion would be to simply allow a specific settings.txt filename to be specified in each profile in machines.txt. This could then be passed to the emulator when the emulator is booted. (If no filename is specified in machines.txt, the existing default filename would be used.) This would require minimum coding, as opposed to actually moving individual configuration directives into machines.txt. It would also not break compatibility with the existing machines.txt and settings.txt files. This would also get around issues like switching between NTSC and PAL on the VIC-20, since the VIC-20 actually requires a different kernal ROM depending on whether it's in NTSC or PAL mode, in addition to the different timing.

My coding skills are probably a bit too rusty to fork BMC64 and make this change myself, but I'm happy to help out in any other way I can (testing, buy you a pizza, etc.) :-) Let me know what I can do!

Thanks for your consideration.