C64 Gaming on Amazon Firestick

C64 Gaming on Amazon Firestick

An Amazon Firestick makes for a handy device in your lounge or where ever you have a tv plugged in or monitors spare around the house. Yes, you can just use your Amazon Firestick for streaming but why not get into some retro gaming.

As it's already plugged in and running, it makes a great retro gaming device without purchasing more tech equipment or requiring more shelf space.

What's more, if you love the Commodore 64, shortened to C64 here on in, you can enjoy some of your old favourites again and pass down your love to the next generation. Okay, older kids are likely gonna find the graphics underwhelming but younger kids just enjoy the gameplay.

With many games just using a single fire button it makes playing simple for young and old although truth be honest, the C64 is quite quirky - its no SNES.

Play C64 Games on Amazon Firestick using RetroArch
Play C64 Games on Amazon Firestick using RetroArch.

What's more, the C64 has super-distinctive sound courtesy of its SID chip. When a C64 game is being played you really know it's a C64! That sound is no unique and memorable. It's one reason why I loved the C64.

There are just so many games on the C64 and everyone's favourites are just so different. If you Google the internet it really is interesting to see the diversity of favourites. I guess part of it was the life cycle of the C64 with even 2-3 years meaning a new generation of players and the C64 games programming improving so much over time.

My Personal Favs: For the record some of my personal favourites are:

  • Aliens
  • Arkanoid
  • BC'S Quest For Tires
  • Blue Max
  • Boulderdash
  • Bruce Lee
  • Commando
  • Hardball
  • Hypersports
  • Pitstop II
  • Ghostbusters
  • Henry's House
  • Paradroid
  • Raid Over Moscow
  • Super Bowl XX
  • The Last Ninja
  • Uridium
  • Way Of The Exploding Fist

I'll be honest and say that setting up Retroarch and C64 gaming on a Firestick isn't quite as easy as on a Windows or Linux computer. This is for one main reason.

Copying files is just more tedious. You'll understand this once you start but it's certainly easier copying files on a computer. Other than that though, the process is pretty much identical.


Pre-requisites

  • Retroarch installed: You have installed Retroarch on your Firestick using FireOS (not Vega OS)
  • Interface style: The RetroArch user interface style is set to xmb. Interface>>>Menu = xmb. Screen shots in this tutorial use xmb.
  • JiffyDOS: You have downloaded or have copies of relevant JiffyDOS files handy
  • IMPORTANT: A Firestick compatible bluetooth controller
  • OTG splitter cable and USB drive (optional)
  • File explorer program installed on your Firestick. We recommend CX File Explorer

WARNING: There seems to be a common bug where the standard Amazon Firestick centre button does not work with RetroArch. For this reason you really do need a Firestick compatible bluetooth controller


Main steps to play C64 Games on an Amazon Firestick using RetroArch

I'll be going over the process and main steps to get you playing C64 games on your Amazon Firestick as well as provide some background information if you are the inquisitive type of person. Assuming you have covered off all the pre-requisites, the main high level steps are:

  1. Install C64 core and update other Assets.
  2. Install JiffyDOS.
  3. Enable Warp Boost.
  4. Copy game roms to your Firestick.
  5. Create Game Playlists for C64 games and/or your favourite games.
  6. Play A Game.
  7. Custom Core Controller Settings (and other settings).
  8. Custom Game Controller Settings (and other settings).

Install Commodore 64 Core

Follow these steps to download a C64 core.
  1. Navigate to Online Updater


  2. Click on 'Core Downloader'.


  3. Click on 'Commodore - C64 (VICE x64sc, accurate)'. That's it - you've successfully downloaded a Commodore 64 core.


  4. Update multiple files used by RetroArch'.
  Navigate back to 'Online Updater' and click on update:

    • Update Core Info Files
    • Update Assets
    • Update Controller Profiles
    • Update Cheats
    • Update Databases
    • Update Overlays
    • Update Slang Shaders

JiffyDOS

JiffyDOS files are needed only when you enable JiffyDOS support. JiffyDOS replaces the original C64 KERNAL and disk-drive ROMs with enhanced versions that:

  • load disk software much faster;
  • add convenient DOS commands;
  • maintain broad compatibility with normal C64 software.

The required JiffyDOS files are:

  • JiffyDOS_C64.bin
  • JiffyDOS_1541-II.bin
  • JiffyDOS_1571_repl.bin
  • JiffyDOS_1581.bon310654.bin

Save JiffyDOS Files to Firestick or Android Device

For JiffyDOS to work the files have to be saved to the System/BIOS folder. Identify where the RetroArch System/BIOS folder is by navigating via:
Settings>>>Directory>>>System/BIOS.

Visually follow this sequence:

Followed by selecting "System/BIOS" to check the folder location.

On your Firestick or Android device save the JiffyDOS files to folder as shown at
Settings>>>Directory>>>System/BIOS on your Firestick or Android device (see example image above).

In this illustrative example the folder via a file explorer app is:
  • /storage/emulated/0/RetroArch/system/vice/ (if you have access to root); or
  • RetroArch/system/vice/ (if using most Android file manager apps without root or hidden file access).

When RetroArch reports missing JiffyDOS files, the most likely explanation is that JiffyDOS has been enabled in the VICE core options, or a saved core override/configuration is requesting it. The VICE documentation treats JiffyDOS as an optional machine feature, not a basic C64 requirement.

Enabling JiffyDOS support is highly encouraged for C64 emulation to improve your retrogaming experience. Who wants to be waiting around for games to start?

Enable JiffyDOS

To enable JiffyDOS follow these step by step instructions. In short form the steps are:
Quick Menu>>>Core Options>>>System>>>JiffyDOS = TRUE.

In more detail the steps are as follows:
1. Start a C64 game
2. Enter Quick Menu

3. Select Core Options

4. Select System

5. Set JiffyDOS to On

Enable Warp Boost

To reduce game loading speeds you should also apply Warp Boost. In short form the steps are:
Quick Menu>>>Core Options>>>Media>>>Warp Boost = TRUE.

In more detail the steps are as follows:
1. Start a C64 game.
2. Enter Quick Menu
3. Select Core Options
4. Select Media

5. Set Warp Boost = On

Playing your C64 games

To play C64 games and/or other gaming systems you need to download a core file for each gaming system, eg, SNES, Sega Master System. When you download a core you really need to also do some quick but necessary additional steps after you've downloaded the C64 core.

So the high level process to play C64 games in RetroArch is:

  1. Copy game roms to your Firestick or Android device
  2. Install C64 Core and other relevant files used by RetroArch
  3. Create a playlist of your C64 games

ROMS and game files

You need games right? You can legally purchase games at itch.io. I am going to assume you have purchased some games and have some digital C64 game files in .d64, .prg, .tap, or .crt file formats ready to go.

In this illustrative example the roms are saved in folder via a file explorer app is:
  • /storage/emulated/0/RetroArch/roms/ (if you have access to root); or
  • RetroArch/roms/ (if using most Android file manager apps without root or hidden file access).

Copy game rom files: Use your file explorer app and copy files to your rom folder. I recommend using CX File Explorer as the ui works really well and it's particularly easy to map a network drive (if you operate a home network).

Create Playlist

In the following I'll describe how to create:
  1. A standard playlist
  2. Favorites playlist

Standard Playlist: The main steps are as follows:

  1. Go to Import Content on the main menu.
  2. Select Manual Scan.
  3. Set Content Directory to the folder where your C64 ROMs/disk images are saved. Make sure to select the folder and then select <Scan This Directory>
  4. Set System Name to Commodore 64.
  5. Optional: Set Custom System Name if you want a distinct name for your playlist. WARNING: You must go back and set System Name = <Custom> if you do this option.
  6. Set Default Core to your preferred C64 core (such as VICE x64).
  7. Set File Extensions to match your game formats (e.g., d64, tap, prg, crt). WARNING: You must enter a [space] between each file type. Select Start Scan to build the playlist.
  8. Your new playlist will appear in the RetroArch main menu. You can manually scroll to your new playlist.

Favorites Playlist

RetroArch has one built-in Favorites playlist. An advantage of a Favorites playlist is that it lets you have a playlist of games from multiple Cores rather than just a single core. You can add games to this playlist following this process:

Select the game from the main menu

Set 'Add to Favorites'

Navigate to Favorites in the Main Menu add your selected game will be on the list.

Play A Game

In the following I'll explain how to play a C64 game on your Firestick. Now if this is your first time playing a C64 game in RetroArch you have to keep in mind that the C64 was a computer not a stand alone gaming device. What that means is that the Commodore 64 often required keyboard entry to control games.

The C64 being a computer, it also means there are some odd quirks such as the initial joystick port to use for games not being standardised, eg, most games start with joyport 2 rather than joyport 1.

Steps to play a game

  1. In the main Retroarch menu scroll across rightwards until you see your C64 playlist you created in the previous step.
  2. Navigate to your named your playlist with list of games in playlist. In this example, the playlist is called 'C64'. Click on a game to get to the initial game start screen.
  3. Selected Game screen. Click 'Run' to start game. Optional: Click 'Add to Favorites' to add to your Favorites playlist.
  4. The game will continue to load as per the classic screens you grew up with.

    You will not have to type the commands to load a disk image like in the old days. It will load automatically. Expect to see screens such as the following.
  5. Controller settings, the virtual keyboard and Retroarch UI: Now it starts getting tricky. Unlike a dedicated gaming device, you may have to enter key strokes to do certain things in a C64 game or even start a game.

    The next step will be all about how your controller works and using Retroarch to use your controller. This is particularly important for C64 games unlike emulation for say the SNES or MAME where things are very simple.

Controller settings, the virtual keyboard and Retroarch UI

If you've played any number of C64 games you show know that there are some quite common keyboard entries used to start games, set game options or toggle between joystick ports. An illustrative example is the classic game, 'Raid Over Moscow', see image below.

Here you can clearly see that Function keys F1, F3 and F5 are used to set the difficulty levels for the game. If you've ever played the game you also need to press F7 to open the hangar doors in the first mini-game of Raid Over Moscow.

Other common keys were:

  • RUNSTOP
  • SPACEBAR
  • C= (Commodore key)
  • SHIFT LOCK
  • RESTORE
  • INST DEL
  • CLR HOME

The key (pun intended) message is that it was quite common for you to use the keyboard even if it was only choosing settings or starting a game and thereafter you could play the game with the joystick only.

This is where you need to learn about the:


Virtual Keyboard

To bring up the virtual keyboard (assuming you have loaded a game) the default is:

  • Click on 'Select' button on your controller

Switching between the Game and Retroarch

To change or save settings for a game you are playing or the core being used, you have to switch between the game and Retroarch. This is very simple.

Assuming the game is presently running you simultaneously click on the 'Start' and 'Select' buttons on your controller.


Customise Controller Settings for the C64 Core

Background Information: A Cores settings are saved into a .opt file for that Core. For example, if the Core is VICE x64sc, then the Cores settings are saved into file: VICE x64sc.opt.

FYI: On a Windows computer, the Core .opt files are located in a folder using this syntax assuming the Core name='VICE x64sc':

• C:\RetroArch_Installation_Folder_Name\config\VICE x64sc\VICE x64sc.opt

WARNING: If you want to change settings to a Cores .opt, if you are playing a game that has it's own .opt file you must delete that .opt file or start a game that doesn't have it's own .opt file otherwise changes will be saved to the games .opt file not to the Cores .opt file.

Customise Core Settings: Step By Step Instructions

  1. Open RetroArch
  2. Start a game that doesn't already have it's own .opt file
  3. Switch to the Retroarch Menu. Simultaneously click on the 'Start' and 'Select' buttons on your controller.
  4. Click on Quick Menu.
  5. Click on Core Options.
  6. Click on RetroPad Mapping.
  7. In this example we are customising controller settings and savings these changes to the C64 Core settings so that the settings apply everytime a C64 game is played.

    We could alternatively change Media, Video, On-Screen Display, Audio or other settings under the 'Core Options' menu and also save those settings to the C64 Core file if we wished.

  8. In this example, I assign the X button = Toggle Statusbar.
  9. Keep going back one menu at a time until you reach the 'Quit' menu under 'Main Menu'.
  10. Select Quit on Main Menu. This saves your changes to the Core .opt file rather than to a game override .opt file.
  11. Verify change in your Core .opt file. Check by running a game and clicking on the button and verify it does what you expect. Alternatively, you can open the VICE x64sc.opt in a text editor and check the setting is as expected.

Customise Controller Settings for C64 Game

This is essentially the same process as 'Customise Core Settings: Step By Step Instructions' with a few changes after Step 7.

  1. Complete steps 1-7 as per 'Customise Core Settings: Step By Step Instructions'
  2. Go back one menu and click on 'Manage Core Options.
  3. In 'Manage Core Options' menu click on 'Save Game Options'. This will create a .opt file for the game presently running.
  4. LEARNING: In this example we can tell the game doesn't presently have its own .opt file as per the screenshot Active Options File='VICE x64sc.opt' that is the Core .opt file.

  5. After you click on 'Save Game Options' the Active Options File becomes your custom game .opt and it has replaced the Core .opt file.
  6. Verify your custom game .opt by 'Quitting' Retroarch, then restarting Retroarch, start your game and check the button is doing what you expect. Alternatively, you can view the game .opt file in a text editor and check the setting is as expected.

Mapping your controller

Quick Menu>>>Core Options>>>Input>>>Analog Stick Mouse = Left Analog

If you have a controller with analog control at top left then set up so you can use it as an alternative (in in addition to) to the d-pad. Some people like using a d-pad while some others prefer the analog joystick. By setting up the analog joystick you can just use either which is handy as for some games the d-pad might not work the best. Use these settings:

  • Quick Menu>>>Core Options>>>RetroPad Mapping>>>Left Analog>Up = Joystick Up
  • Quick Menu>>>Core Options>>>RetroPad Mapping>>>Left Analog>Up = Joystick Down
  • Quick Menu>>>Core Options>>>RetroPad Mapping>>>Left Analog>Up = Joystick Left
  • Quick Menu>>>Core Options>>>RetroPad Mapping>>>Left Analog>Up = Joystick Right

If you have a controller with extra buttons available your C64 games won't natively use then I'd suggest you do further mappings so you don't have to use the virtual keyboard so much.

Some suggested settings are:

  • Quick Menu>>>Core Options>>>RetroPad Mapping>>>L>>>Keyboard Space
  • Quick Menu>>>Core Options>>>RetroPad Mapping>>>L2>>>Keyboard Esc
  • Quick Menu>>>Core Options>>>RetroPad Mapping>>>R>>>Keyboard Return
  • Quick Menu>>>Core Options>>>RetroPad Mapping>>>R2>>>Keyboard Tab

Tips

Assign a button on your controller to switch joyport

Fixes

No sound on Firestick: Set SID Model: 8580 (Quick Menu>>>Core Options>>>Audio>>>SID Model = 8580.

retroarch.cfg

retroarch.cfg is RetroArch's main configuration file. It stores the global settings that RetroArch loads every time it starts.

Think of it as the master configuration. Everything else (core overrides, game overrides, playlists, etc.) can override settings in retroarch.cfg, but they all start from it.


File location: The retroarch.cfg is located at either

  • Android/data/com.retroarch/files/retroarch.cfg
  • /storage/emulated/0/RetroArch/retroarch.cfg

What retroarch.cfg contains

retroarch.cfg typical settings include:

  • Video
    • Fullscreen/windowed mode
    • Resolution
    • VSync
    • Aspect ratio
    • Shaders
  • Audio
    • Audio driver
    • Volume
    • Latency
    • Resampler
  • Input
    • Controller mappings
    • Hotkeys
    • Keyboard settings
  • User Interface
    • Menu driver (Ozone, XMB, RGUI, GLUI)
    • Theme
    • Icons
    • Fonts
  • Directories
    • ROM folder
    • BIOS/System folder
    • Saves
    • Save states
    • Screenshots
    • Thumbnails
    • Playlists
  • Networking
    • Netplay
    • Achievements
    • Updater settings

Make RetroArch Easier to Manage on Firestick and Android

Some folders on an Amazon Firestick and Android devices are write protected. This can complicate things if you want to easily manage or override RetroArch settings or need to copy files. The best way to make things easier for yourself is to change some default settings in the retroarch.cfg file

On your Firestick create a folder that you have write access to and name it: RetroArch.

In this folder create folders:

  • autoconfig
  • cheats
  • config
  • playlists
  • roms
  • saves
  • system
  • thumbnails
  • config
  • core-options
  • saves
  • states
  • system
  • playlists
  • remaps
  • shaders
  • overlays
  • cheats
  • screenshots
  • logs
  • content

Order RetroArch loads settings

RetroArch generally loads settings in this order (later items override earlier ones):