Configuring a Raspberry Pi as an Intellivision Retro Gaming Console

 

Hardware (items in italic were used in my assembly):

  • Raspberry Pi with Power Supply (Raspberry Pi 3 Model B with 2.5 Amp-5V Vilros Power Supply)
  • 8 Gb or larger microSD Card (16 Gb SanDisk microSD card)
  • Case for Raspberry Pi (Vilros black plastic http://www.vilros.com)
  • HDMI Cable for Connection to HDTV
  • Two (2) Intellivision Flashback, Intellivision II, or Original Intellivision (with DB9 adapter) Controllers (Intellivision Flashback controllers included with the ATGames Intellivision Flashback console http://www.atgames.us/Intellivision-Flashback-IN460.htm)
  • Two (2) Retronic Design USB Joystick Adapters https://www.retronicdesign.com
  • USB or Wireless Keyboard for initial configuration (Logitech K400 wireless keyboard)

 Software

  • RetroPie for Raspberry Pi https://retropie.org.uk (v3.6 or later) which includes the jzIntv Intellivision emulator http://spatula-city.org/~im14u2c/intv
  • Retronic Design Intellivision Firmware https://www.retronicdesign.com/en/download (v3.0c or later)
  • “hackfileRD.cfg” file to map output from Retronic Design USB Joystick Adapters to jzIntv emulator joystick functions (file listing included at end of document)
  • “grom.bin” and “exec.bin” bios roms for Intellivision (available on the Intellivision Lives PC game, Intellivision Rocks PC game, or through creative online or torrent searching)
  • Intellivision game roms (available on-line with *.int, *.bin, or *.rom file extensions)

 Initial Software Installation/Configuration

  1. Install RetroPie v3.6 or later image file onto microSD card using the following installation instructions: https://github.com/retropie/retropie-setup/wiki/First-Installation
  2. Install v3.0c or later firmware into each Retronic Design USB Joystick adapter using the following installation instructions: https://www.retronicdesign.com/en/usb-adapter-upgrade-tutorial (Note: On Intellivision Flashback controllers, the “6” button on the keypad is the “Fire” button referenced in the instructions.)
  3. Insert the created RetroPie microSD card into the Raspberry Pi, connect the joysticks and keyboard to USB ports, connect the HDMI cable to HDTV, tune the TV to the correct HDMI input, and plug in the power supply to start the Raspberry Pi.
  4. After 30-60 seconds, the “EmulationStation” software will load, and should begin automatically walking you through the process of setting up your controller. This setup is for navigation of the EmulationStation and RetroPie software only, and has nothing to do with the controls used in game play.  For this tutorial, I have set up the controller as:
    Intellivision Keypad “ENTER” = EmulationStation “START” Button
    all other keys left unassigned)
  5. Use the Intellivision controller to navigate to and run the “RetroPie” software by pressing the Keypad “1”. The RetroPie software will start:
    retropie
  6. Select “CONFIGURE WIFI” from the menu and follow the prompts to connect the Raspberry Pi to your wireless network. This will allow you to transfer game ROMS to the Raspberry Pi via WiFi.retropie2** The following steps take place on a Windows PC on the same network as your Raspberry Pi **
  7. Go to a Windows PC on the same network as your Raspberry Pi, start the “File Explorer” program, and enter “\\retropie” into the Address Bar. After a few moments, the Raspberry Pi should be located on your network and the following folders appear:
    • bios
    • configs
    • roms
    • splashscreens
  8. Using File Explorer, copy the “grom.bin” and “exec.bin” files into the “bios” folder on the Raspberry Pi (see the “Software” section of the guide above for an explanation of these files).
  9. Using File Explorer, copy the “hackfileRD.cfg” file into the “roms\intellivision” folder on the Raspberry Pi.
  10. Using File Explorer, copy any game roms (*.int, *.bin, or *.rom) files into the “roms\intellivision” folder on the Raspberry Pi.
  11. Using File Explorer, navigate to the “configs\intellivision” folder.
  12. Open the “emulators.cfg” file with Windows Notepad, and make the following modifications (in bold) to the file (the following text appears on one line in the file):
    jzintv="/opt/retropie/emulators/jzintv/bin/jzintv -p /home/pi/RetroPie/BIOS --displaysize=1 --kbdhackfile=/home/pi/RetroPie/roms/intellivision/hackfileRD.cfg -q %ROM%" default="jzintv"

    Notes:

    –displaysize=1
    changes the display resolution of the emulator from 320×200 to 640×480, which looks much clearer when upscaled to 1080p on an HDTV.
    –kbdhackfile=… tells the jzIntv Intellivision emulator how to map the controller output from the Retronic Design USB Joystick Adapters.  (If you skip this step, the controller keypad and side buttons will be all mixed up.)

  13. Close File Explorer on your Windows PC, and go back to the Raspberry Pi.

Advanced Software Configuration (Keyboard Required on Raspberry Pi):

  • Removing Black Border around Screen: If your screen has a black border around it, and you want to expand the image to fill the entire screen, follow these steps:
  1. From the main Emulation Station menu, select “RetroPie”.
  2. From the RetroPie menu, scroll down and select “Raspberry Pi Configuration Tool Raspi-Config”.
  3. From the Raspi-Config menu, select Option 9 “Advanced Options”.
  4. Select Option A1 “Overscan”.
  5. Select “Disable” overscan; will return to main Raspi-Config menu.
  6. Select “Finish”, and follow the prompts to reboot the Raspberry Pi. When the Pi restarts, the black borders around the screen will be gone.
  • Fix Games that Won’t Play: Some games (Beauty and the Beast, Demon Attack, etc.) use different memory mapping that most Mattel Intellivision games.  The jzIntv Intellivision emulator can support these games through an additional*.CFG memory map file for each game rom:
  1. Search online for the corresponding *.CFG memory map file for games that won’t play. The *CFG memory map file must have the same filename as the corresponding *.INT or *.BIN rom file (i.e. “Demon_Attack.int” and “Demon_Attack.cfg).
  2. Follow the instructions above for using a Windows PC to copy game rom files onto the Raspberry Pi to copy the *.CFG files into the same “roms\intellivision” folder on the Rasperry Pi. The jzIntv Intellivision emulator will automatically search for a corresponding *.CFG memory map file when an *.INT or *.BIN game rom is loaded.
  • Add Support for jzIntv Intellivision Emulator to Run *.ROM file Extensions: A *.ROM file is an *.INT or *.BIN rom file combined with a *.CFG memory map file into a single larger file.  The jzIntv Intellivision emulator can play these files, with the following software configuration (Note: This modification requires use of the text-base “File Manager” included with RetroPie.  Instructions on how to use the “File Manager” are available on-line.):
  1. From the main Emulation Station menu, select “RetroPie”.
  2. From the RetroPie menu, scroll down and select “File Manager”.
  3. Navigate to the “/etc/emulationstation” directory.
  4. Highlight the “es_systems.cfg” file and press F4 to edit.
  5. Scroll down to the <system> <name>intellivision</name> section, and modify the <extension> section as follows:
    <extension>.int .bin .INT .BIN .rom .ROM</extension>
  6. Press <CTRL-X> to Exit, and type “Y” to save the file.
  7. Press F10 to exit the File Manager
  8. Restart the Raspberry Pi by pressing the ENTER (START) button on the Intellivision controller and Selecting “QUIT->RESTART SYSTEM”.
  • Add Game Box Art to EmulationStation: To display box art and descriptions for your game roms in EmulationStation (Internet connection to Raspberry Pi is required):
  1. From the main EmulationStation menu, press the ENTER (START) button on the Intellivision controller.
  2. Select “SCRAPER->SCRAPE NOW”, and follow the prompts. The software will automatically scan net web site for game box art and descriptions.
  • Remove Unwanted Emulators from EmulationStation Main Menu: To remove unwanted emulators from the EmulationStation main menu display:
  1. Go to a Windows PC on the same network as your Raspberry Pi, start the “File Explorer” program, and enter “\\retropie” into the Address Bar. After a few moments, the Raspberry Pi should be located on your network and the following folders appear:
    • bios
    • configs
    • roms
    • splashscreens
  2. Using File Explorer, navigate to the “roms” folder, and create a new folder named “Unused”.
  3. Move the “roms” subfolders for the emulators you want to hide into the “Unused” folder. To get rid of all emulators but “Intellivision”, move the “amiga”, “apple2”, “dreamcast”, “macintosh”, pc, “ports”, “scummvm”, and “zmachine” folders from “roms” to “roms\Unused”.
  4. Restart the Raspberry Pi.
  5. Note: This procedure works because EmulationStation only displays the emulators with files in the corresponding “roms” sub-folder. The sub-folders listed above come with default files in them.

hackfileRD.cfg

; Keyboard Hack File for jzIntv Intellivision Emulator
; when used with Retronic Design USB Joystick Adapter(s)
; and Original Intellivision or Intellivision Flashback
; Controller(s).
;
; Note: For Special Combination Keypresses [Button 1 + Button 9]
; [Button 4 + Clear], [Button 5 + Button 0], and [Button 6 + Enter],
; must use Retronic Design USB Joystick Adapter Intellivision
; firmware version 3.0c or later.
;
; April 15, 2016
;
; Free to Distribute
;
; -----------------------------------------------------------------------------------------
MAP 0      ; keymap 0 (default keymap)
; -----------------------------------------------------------------------------------------
; ***** Joystick #0 - Left Controller *****
; ** Side Buttons and Numeric Keypad **
JS0_BTN_00 PD0L_A_T
JS0_BTN_01 PD0L_A_L
JS0_BTN_02 PD0L_A_R
JS0_BTN_03 PD0L_KP1
JS0_BTN_04 PD0L_KP2
JS0_BTN_05 PD0L_KP3
JS0_BTN_06 PD0L_KP4
JS0_BTN_07 PD0L_KP5
JS0_BTN_08 PD0L_KP6
JS0_BTN_09 PD0L_KP7
JS0_BTN_10 PD0L_KP8
JS0_BTN_11 PD0L_KP9
JS0_BTN_12 PD0L_KPC
JS0_BTN_13 PD0L_KP0
JS0_BTN_14 PD0L_KPE

; ** Combination Keypresses (Requires firmware v3.0c or later, see note above) **
; Pressing [Button 1 + Button 9] on Controller triggers JS0_BTN_15
; Mapping of JS0_BTN_15 is not necessary since Intellivision Game ROMS interpret [1+9] as PAUSE GAME
; Pressing [Button 4 + Clear] on Controller triggers JS0_BTN_16 
JS0_BTN_16 PAUSE  ; (Pause Emulator - Same as Pause/Break on keyboard)
; Pressing [Button 5 + Button 0] on Controller triggers JS0_BTN_17
JS0_BTN_17 RESET  ; (Reset Emulator - Same as F12 on keyboard)
; Pressing [Button 6 + Enter] on Controller triggers JS0_BTN_18
JS0_BTN_18 QUIT  ; (Quit Emulator - Same as F1 on keyboard)

; ** Direction Disc **
JS0_N      PD0L_J_N
JS0_NNE    PD0L_J_NNE
JS0_NE     PD0L_J_NE
JS0_ENE    PD0L_J_ENE
JS0_E      PD0L_J_E
JS0_ESE    PD0L_J_ESE
JS0_SE     PD0L_J_SE
JS0_SSE    PD0L_J_SSE
JS0_S      PD0L_J_S
JS0_SSW    PD0L_J_SSW
JS0_SW     PD0L_J_SW
JS0_WSW    PD0L_J_WSW
JS0_W      PD0L_J_W
JS0_WNW    PD0L_J_WNW
JS0_NW     PD0L_J_NW
JS0_NNW    PD0L_J_NNW

; ***** Joystick #1 - Right Controller *****
; ** Side Buttons and Numeric Keypad **
JS1_BTN_00 PD0R_A_T
JS1_BTN_01 PD0R_A_L
JS1_BTN_02 PD0R_A_R
JS1_BTN_03 PD0R_KP1
JS1_BTN_04 PD0R_KP2
JS1_BTN_05 PD0R_KP3
JS1_BTN_06 PD0R_KP4
JS1_BTN_07 PD0R_KP5
JS1_BTN_08 PD0R_KP6
JS1_BTN_09 PD0R_KP7
JS1_BTN_10 PD0R_KP8
JS1_BTN_11 PD0R_KP9
JS1_BTN_12 PD0R_KPC
JS1_BTN_13 PD0R_KP0
JS1_BTN_14 PD0R_KPE

; ** Combination Keypresses (Requires firmware v3.0c or later, see note above) **
; Pressing [Button 1 + Button 9] on Controller triggers JS1_BTN_15
; Mapping of JS1_BTN_15 is not necessary since Intellivision Game ROMS interpret [1+9] as PAUSE GAME
; Pressing [Button 4 + Clear] on Controller triggers JS1_BTN_16
JS1_BTN_16 PAUSE  ; (Pause Emulator - Same as Pause/Break on keyboard)
; Pressing [Button 5 + Button 0] on Controller triggers JS1_BTN_17
JS1_BTN_17 RESET  ; (Reset Emulator - Same as F12 on keyboard)
; Pressing [Button 6 + Enter] on Controller triggers JS1_BTN_18
JS1_BTN_18 QUIT  ; (Quit Emulator - Same as F1 on keyboard)

; ** Direction Disc **
JS1_N      PD0R_J_N
JS1_NNE    PD0R_J_NNE
JS1_NE     PD0R_J_NE
JS1_ENE    PD0R_J_ENE
JS1_E      PD0R_J_E
JS1_ESE    PD0R_J_ESE
JS1_SE     PD0R_J_SE
JS1_SSE    PD0R_J_SSE
JS1_S      PD0R_J_S
JS1_SSW    PD0R_J_SSW
JS1_SW     PD0R_J_SW
JS1_WSW    PD0R_J_WSW
JS1_W      PD0R_J_W
JS1_WNW    PD0R_J_WNW
JS1_NW     PD0R_J_NW
JS1_NNW    PD0R_J_NNW