Atari Flashback X Internals Readme RocketFan Feb 2021 Here is the latest update to the internals file. Things have been update to be a bit simpler and a lot more flexible. One retromenu file "retromenu.run" and helper script - "runcommand" =================================================================== The retromenu.run and runcommand must be placed in /emulator. The new startup.sh (place in the root of the thumb drive) works with those to manage switching between rom-sets and starting games. Multiple themes are still supported. If you add the "res" (resources) folder from the theme into the particular rom folder it will be picked up when the "goto" that rom folder occurs. If there is not a /res for a rom folder it will use the system default theme from the /emulator/res folder. The runcommand script is a wrapper script which retromenu uses to launch all the games. It has a case statement for each rom extension that runs retroplayer with the correct core to load the game. The case statement can be customized or extended easily if desired. Currently genplusgx is the default core because it runs many typess of Sega content. You can support as many extensions as needed for a core just by copying that section of the case and changing the extension. Place all the cores provied in the /emulator folder. They all get run from that folder out on the flash drive should you want to replace one or experiment. Having a different "retromenu.?" in each rom folder is no longer needed or used. Every type of game is supported in every rom folder. HOWEVER, only .a26, .zip, .zim and apparently .bin (which currently maps to picodrive) are used to populate the list for the games in the /game folder. Current extension/core mappings: .a26 = Atari VCS .nes = Original Nintendo .zip = FInal Burn Alpha .zim = mame2000 .bin = Picodrive (works really well for Sonic, not sure about other specific games) .gg (or .sgg), .sms, .md, .gen, .sg = Genplusgx is the default, so should catch the rest of Sega, such as the ones listed. Retroplayer =========== Retroplayer is the "emulator libretro front-end" application for the device. It is analogous to retroarch, just way leaner, not open source, and not so configurable. There are a few retroplayers available in the .zip: retroplayer.cust - original retroplayer from the most excellent Brad_from_the_80's custom firmware. retroplayer.lfb - retroplayer from the atGames Legends Flashback retroplayer.v0_1_21 - retroplayer from the miost recent rom dump of an up to date (Feb 2021) Atari Flashback X (Thank you Schnafe!) retroplayer.afb9 - retroplayer from the atari flashback 9 - rumored to run Stella/VCS games better. Currently the only one you need is retroplayer.v0_1_21. That one must be copid to /emulator on the USB drive. The others are optional. The startup.sh copies this to /tmp as just "retroplayer" where it is then referenced by the runcommand srcript. You can use a different retroplayer to experiment by either modifying the copy line in startup.sh, or modify the line for an individual core in "runcommand" to just reference it from the original folder (like /media/usbhd-sda1/emulator/retroplayer.afb9 instead of /tmp/retroplayer). THe afb9 one may work better (?) for .a26, and it is a much smaller executable than the others. But in my experience I could not use .zip games (Final Burn Alpha roms) when using it. If it is better for stella, then just that emulator can be changed in the runcommand script. The retroplayer is copied to /tmp because /tmp is a RAM drive. Retroplayer is restarted for each game, and the executable is much larger than the game roms (for older games). So by placing it there load times should be faster. Data Folder =========== When you first "goto" a rom folder, if it does not contain a /data folder it makes a copy of the one buried on your actual Atari Flashback device. So, if you ever feel that's corrupted just remove the /data and it will be repopulated. A key file in there is retroplayer.ini, because it has per-core and per-game settings that really impact things. Here are some example core options: [Core] genesis_plus_gx_no_sprite_limit=disabled genesis_plus_gx_audio_filter=low-pass genesis_plus_gx_lowpass_range=60 genesis_plus_gx_volume=100 fba-cpu-speed-adjust=100 fba-aspect=DAR fba-diagnostic-input=None fba-hiscores=enabled fba-samplerate=44100 fba-sample-interpolation=disabled fba-fm-interpolation=disabled quicknes_use_overscan_h=enabled quicknes_use_overscan_v=disabled mame2000-show_gameinfo=disabled mame2000-skip_disclaimer=enabled For example the mame2000 options MUST be in place for those roms (.zim for mame2000 roms .zip for final burn alpha roms). The fba-cpu-speed setting I presume has an impact on performance, and so on. The file, example_retroplayer.ini is included for reference (just my current experimental contents) but there might be a lot more helpful settings than those and possibly they will be put in place ahead of time if you use one of the fully populated actual system releases from Draxxon. BTW, for systems like this you always want "non-merged" romsets, because then each game has everything it needs to run standalone. "next" Replaced by "goto" ========================= The Next mechanism has been replaced by "goto". This lets you do anything you want. You can still have a carousel of rom folders, or have a tree, or forward and back entries, or any combination. You can now name the rom folders anything you want. You still must have a /rom folder which is where the system starts. Otherwise you can stick with "rom_alt_1" and so on, or call them anything more descriptive like "homebrew". If you want to go to a rom_alt_1 folder, create a dummy file (blank text document or whatever) and name it "rom_alt_1.goto". Create the two artwork files for it and add an entry in the all-games.ini file inside the rom folder. Some example files and all-games entries are in the .zip for this. The .goto extension (all lower case) on the rom is what triggers the switch. The first part of the name must exaclty match the folder name, including the case. Commands ======== A few commands are supported. Really, I don't even expect these to be used, they are mainly examples to show how utility commands can be implemented in the mechanism. Currently there are reboot, shutdown, and clear_recent commands. These get used just like the "goto" except you need a dummy rom called "reeboot.cmd", "shutdown.cmd", or "clear_recent.cmd" plus the artwork files and entries in the all-games.ini. These are handled as special cases in the runcommand script. If you add a command I highly recommend a development stage where you are echoing your command to the command.txt log file before you even start to execute it. You are excuting as root on the device and things can get messed up! For an example of logging, look at the line "echo "command not supported: $filename" >>/media/usbhd-sda1/command.txt" which is already in runcommand. The >> in linux appends to the log file. Installation ============ Proceed at your own risk! However, I suggest backup or copy your old thumb drive before you go to this. 1) Start from a working "other version" Atari Flashback X thumb drive. 2) Replace /startup.sh in the root with the one provided. 3) Place these files in /emulator: retromenu.run, runcommand, all the cores (.so files), retroplayer.v0_1_21 (plus the other retroplayer files if you want). Rename your rom folders as you like, except for /rom which has to be left named that way. Now create goto entries in your rom folders and all-games.ini files to link them as you want. That is described in the paragraph on "goto" above. BTW, the all-games.ini files always just use /rom (not the name of the folder) in the rom path given in the "File=" references in the list. So: File=/rom/spacedogs.bin, not File=/homebrew/spacedogs.bin or whatever.