Rad Mystery - Team Encoder - Outrun Softmod
Rad Mystery - Video Preview of Installation after USB flashing
We recently discussed Rad Mystery our softmod for the Arcade1up outrun cabinet on Kongs-R-Us channel and gave a quick overview of how the installation works, this post serves as the official release for it and the first surfacing of S.A.M (Shit Ass Menu, or as it develops Simple Arcade1up Menu).
A quick note about S.A.M.:
The purpose of this menu is to facilitate a simple selection of games without being tied to the dependencies traditionally required by things like Emulation Station, or RetroFE.
Eventually, it may progress into something more but ultimately it means we get mods out to you faster as we don't have to battle with system dependencies.
Managing Games with S.A.M:
We think it's important you understand the menu that's being used if you're the type that would like to tinker and add more games, we do include an existing SAM configuration but you will have to appropriately name the roms/folders where we have the ROMs located based on our launch.sh configuration for that to work. Alternatively, we're sure there will be community-provided images but Team-Encoder themselves does not and will not release ROM packages for our modifications.
Game management in S.A.M. consists of two files:
menu.xml - Artwork and display
This contains an XML-ish format of the games you'd like listed in S.A.M. The key is that each game is a <item> entry and you will need a new item for each game you want to add, each entry contains a title and imagePath as values.
One example is:
<item title="4 Wheel Thunder" imagePath="images/dc/4WheelThunder.jpeg"/>
In this case, we're adding the game 4 Wheel Thunder and instructing SAM to look at the file images/dc/4WheelThunder.jpeg for the image to display.
It's recommended that you crop/resize images to 500x400 for the best performance; resolutions, as image sizes beyond this cause performance issues with SAM the more games you load.
It's also important to remember that what you use for "title" will also be used in launch.sh later on to determine what parameters to launch the game with, so it's best to avoid symbols or special characters or you'll cause syntax issues when the code reaches launch.sh
launch.sh - Launch parameters/details to launch game
In launch.sh you have a few things to look at, there are a few helper functions we've included that are required to get games running at their best performance on this specific hardware. On specific cabinets we won't be able to dynamically adjust resolution to gain performance or library paths will have to be adjusted.
The main helper functions included in the version of launch.sh that ships with Rad Mystery are:
set_res_640x480 - Utilized when setting the cabinet rendering resolution to 640x480
set_res_800x600 - Utilized when setting the cabinet rendering resolution to 800x600
set_res_native - Uitlized to revert to the cabinet's default resolution.
export_lib_path - Utilized to 'hack' the lib path to avoid system dependencies that wouldn't exist otherwise for emulation cores and other software.
revert_lib_path - Utilized to launch SAM after game exit as it's reliant on the core system libraries unlike emulators.
Next, you'll see a list of launch_XXX such as the one below:
/mnt/OutrunB/retroarch/retro190 -c /mnt/OutrunB/retroarch/retroarch.cfg -L /mnt/OutrunB/retroarch/.config/retroarch/cores/flycast_libretro.so /mnt/OutrunB/retroarch/roms/DC/hydro/hydro.chd
In this specific instance, we're setting the resolution to 640x480, then we're launching Retroarch and we're specifying that we'd like to use the flycast_libretro.so core which is a Dreamcast emulation core, and then at the end we provide the path to the ROM file.
There's more required to get the game to launch, SAM won't understand that a launch_hydro function exists within launch.sh instead we have to dive a little bit further down until we find the following block of scripting:
# Check the game title and call the respective function or command
case "$GAME_TITLE" in
"4 Wheel Thunder") launch_4wheelthunder ;;
"Crazy Taxi") launch_crazytaxi ;;
"Daytona USA") launch_daytona ;;
"E.O.S.") launch_eos ;;
"Re-Volt") launch_revolt ;;
"Burnout Legends") launch_burnout ;;
"Mario Kart 64") launch_mk64 ;;
"Diddy Kong Racing") launch_diddyracing ;;
"Cruisn USA") launch_crusnusa ;;
"Cruisn World") launch_crusnwrld ;;
"Cruisn Exotica") launch_crusnext ;;
"California Speed") launch_calspeed ;;
"Ridge Racer 64") launch_rr64 ;;
"F Zero X") launch_fzero ;;
"Wave Race 64") launch_wavrace64 ;;
"Starwars EP1 Racer") launch_swep1 ;;
"Toy Racer") launch_toyracer ;;
"Southpark Rally") launch_sprally ;;
"Pole Position") launch_polepos ;;
"Chase H.Q.") launch_chasehq ;;
"Double Axle") launch_doubleaxle ;;
"POD Speedzone") launch_podspeed ;;
"Test Drive 6") launch_testdrive6 ;;
"Test Drive Rally") launch_testdriverally ;;
"Test Drive Lemans") launch_testdrivelemans ;;
"Tokyo Extreme Racer") launch_tokyo ;;
"Tokyo Extreme Racer 2") launch_tokyo2 ;;
"Vanishing Point") launch_vansishingpoint ;;
"Speed Devils") launch_speeddevils ;;
"F1 World Grand Prix") launch_f1wrld ;;
"F355 Challenge") launch_f355 ;;
"Metroplis Street Racer") launch_msr ;;
"Sega GT") launch_segagt ;;
"Wacky Races") launch_wackyraces ;;
"Disney Magical World Tour") launch_dsnywrldtour ;;
"Hydro Thunder") launch_hydro ;;
"RetroArch") launch_retroarch ;;
# Add more cases for other game titles
*) default_launch ;;
As you might recall, we mentioned the title field of the menu.xml would eventually become relevant, this is where that matters. When SAM parses the data from the menu.xml it then takes the title field and passes it into launch.sh when you're attempting to launch a game. This means the name here must match that in the menu.xml then you add an entry after it with the name of the routine you've defined above launch_XXX or in our case launch_hydro.
The other important thing is that while our image contains a pre-populated launch.sh and menu.xml, We do not provide ROMs with our image. So how do you know what to name them? Or where they should go? Looking at the lines within the launch_hydro specified previously you'll notice we pointed out a ROM path at the end, each of the currently available games in the launch.sh and menu.xml contain these paths and you'll need to name and place the games appropriately if you do not have a pre-loaded image.
So in the case of hydro thunder the path for the ROM would be "OutrunB/retroarch/roms/DC/hydro/hydro.chd" for it to work with our current menu.xml/launch.sh meaning you need the "chd" version and to navigate to that path on your USB drive, then launching it from SAM will work with our clean image provided.
The future of SAM, making it user-friendly
There is a future for SAM as it will be used on all of our modifications going forward, and will be the required front-end to be used out of the box with our softmods for any cabinet we provide a modification for. Currently, it's not user-friendly or convenient. We wrote the current launch.sh and menu.xml entirely by hand and manually resized the currently provided images as well. In the future, our goal is to provide a utility that will allow for the auto-population of both files and the automatic resizing and placement of images. A SAM game manager if you will while this doesn't exist currently we're hoping people are able to find pre-loaded images provided by the community and not affiliated with Team Encoder. In other words we hope those who are more technical in the community are able to use this information to provide others who are less technical with an easier path forward until such a user-friendly solution exists.
Installing Rad Mystery
Now that we've covered the basics of SAM we can talk about downloading and installing Rad Mystery itself, unlike other modifications this one does not require you to utilize a PC to flash the PCB. Instead, we've created a USB image that should easily be flashed on any platform using a utility like Balena Etcher.
- A USB flash drive which has at least 64gb of storage space, to run our clean image
- A microUSB to USB-A female adapter - something like this Amazon US Adapter
- Some software such as Balena Etcher, or Win32diskimager
- Download the image from here
- Insert your 64gb USB drive into your computer, use Balena Etcher or your imaging application of choice to select the extracted .img file, and flash the USB stick.
- After safely ejecting the USB stick from your computer, use the OTG adapter to insert it into the microUSB port of your Outrun cabinet while it is turned off.
- Turn the cabinet on and navigate to "Rad Mystery" or "Rad Rally" (Stand-up) and you'll see yourself in SAM if everything has gone according to plan.
If the modification is not installing, or it has installed and when clicking "Rad Mystery" Rad Rally launches instead of SAM it means that your USB drive isn't being detected. This could either be a bad OTG (MicroUSB to USB-A Female) adapter or a bad flash drive. We can only recommend attempting to reflash the USB stick with a new image, or confirming that all cables are inserted properly, if it's still not working after this point our recommendation is to try a different OTG adapter.
For additional support or information on any modifications that Team Encoder does feel free to join our discord by clicking here.
Discord (READ THE RULES, CHOOSE A ROLE IN #roles):
Just be sure to read #rules, and select a role under #roles this way you're not banned, or kicked from our discord we take our rules there very seriously and will not hesitate to kick someone out or call them out for not reading them.
It is recommended that you calibrate your wheel the first time you run this modification, and again in the future if your steering ever feels completely off. To calibrate the wheel hold all of the buttons on the face of the cabinet before turning it on and you'll get to a calibration screen. Follow those on-screen instructions and when you're finished the wheel and pedals will be properly calibrated. If you watch the video linked above Kongs R Us does show this process.
Default Control Layout:
At the moment the wheel is mapped to dpad left/dpad right AND the joystick left and right, this seems to cause problems in some N64 games which rely on utilizing the dpad to initiate camera functions, you can unmap the left dpad/right dpad in settings if this happens to you per game/core.
A - The >> button acts as the A button when emulating games.
B - The << button acts as the B button when emulating games
X - The Music note acts as the X button when emulating games.
Y - The shifter turbo button acts as the Y button when emulating games.
DPAD up/Down - The shifter itself is your dpad/analog up and down to navigate menus, including Retroarch and game menus.
Gas Pedal - The gas pedal is used to select a game within SAM, make sure you depress it fully, as it's not extremely sensitive.
To exit games you first press >> and then the Music note and hold these together for a few seconds until the game exits and you'll find yourself back at SAM.
Volume at the moment can only be adjusted when you first turn the cabinet on before selecting Rad Mystery, once you're utilizing Rad Mystery, SAM or an emulation the volume controls will not work until you return to the stock Arcade1up menu again.
Retroarch Settings (Wheel Sensitivity, Control Remapping, Frame skipping, etc):
If you hold the start button for about 4-5 seconds while emulating a game that does not utilize a standalone emulator, you will get to the Retroarch settings where you can adjust/remap inputs for your specific core/game or adjust sensitivity/emulation settings for that core/game the stock controls work well enough to navigate this that you won't need an external keyboard or etc.
Going back to stock:
Seated Outrun users: Utilize the given update from arcade1up: https://arcade1up.com/pages/outrun-seated-arcade-cabinet-bonus-game-firmware-update this will remove Rad Mystery from the main/stock screen.
Stand-up Outrun users: Simply unplug the flash drive.