Categories

Firmware

Thanks to constant input from its users, the Retrode keeps on getting better and better! As far as hardware allows it, most features are implemented in a backward-compatible way, allowing users of previous models to update their device to the latest functionality.

Prerequisites

You need:

Here’s how you install the firmware. (A more graphical version for Windows can be found on the Atmel homepage in this document, Chapter 5.)

Instructions for Windows users:

Find the version number of the installed firmware

  1. Check the first line in config file RETRODE.CFG to find the version of firmware installed on your device. If you find no version number, you do not have the latest version installed :-)

Install new firmware version

  1. Connect the Retrode as usual.
  2. Install FLIP.
  3. Enter Device Firmware Update (DFU) mode as follows: Hold down RESET button. Hold down the HWB button. Let go of RESET button. Finally, let go of HWB as well. (On Retrode 1, a pair of toothpicks may come in handy to operate the buttons.)
    Retrode 2 buttonsRetrode 1 Buttons
  4. Windows will now recognise a new device. When asked for drivers, direct it to the “usb” subfolder in your FLIP installation directory.
  5. Go to the Windows device manager and look for a mysterious device called “Jungo” or “AT90USB646″ or similar. If there is none, repeat steps 3 and 4.
  6. Start FLIP.
  7. In the “Device” menu, click on “Select…”, or press Ctrl+S.
  8. Select the entry “AT90USB646″ from the list.
  9. Press Ctrl+U to open the USB connection.
  10. Load the firmware hex file (Ctrl+L). Attention: apparently, FLIP cannot deal with file paths that contain special characters, such as “é” or “Ô.
  11. Hit the “Run” button on the lower left.
  12. When the programming is done, hit the RESET button or cycle the USB connection. As tempting as it may seem, do NOT hit the FLIP button “Start Application”.
  13. Enjoy! :D

Retrode Utility for MacOS


User cyco wrote an incredibly nice and comfortable utility. It will let you choose a firmware version, then download it automatically and guide you through the install process. Find the Retrode Utility here.

Instructions for Linux users (and slightly geekier MacOS users)

Thanks go to [BryanC] for adapting the instructions to Linux. Should work under MacOS and other UNIX-like OSes as well.

  1. Install dfu-programmer. You probably want at least version 0.52, as 0.51 apparently has problems with AVR devices. You may have to compile it from source; this is left as an exercise for the reader, unless someone wants to bother writing instructions. ;)
  2. Connect the Retrode as usual.
  3. If you have any other flashable AVR devices plugged in (if you don’t know, you probably don’t), unplug them, as dfu-programmer gets confused if it finds more than one flash target.
  4. Hold down RESET button. Hold down the HWB button. Let go of RESET button. Finally, let go of HWB as well.
  5. At a command line, run “dfu-programmer at90usb646 get product-revision” (without the quotes). If you get the error “dfu-programmer: no device present”, try running as the root user. If you still get that error, repeat step 5.
  6. Run “dfu-programmer at90usb646 erase” (without the quotes). If you needed to run dfu-programmer as root in step 6, you will need to do so in this step as well.
  7. Run “dfu-programmer at90usb646 flash /path/to/retrode/firmware.hex” (without the quotes, and obviously use an appropriate path). If you needed to run dfu-programmer as root in step 6, you will need to do so in this step as well.
  8. When the programming is done, hit the RESET button or cycle the USB connection. As tempting as it may seem, do NOT run “dfu-programmer at90usb646 start”.
  9. Enjoy! :D

Firmware Download

Get the latest firmware version here:

Retrode 2 Firmware Files

Retrode 1 Firmware Files

Retrode Firmware
(C) 2009-2014, Matthias Hullin
[matthias at retrode dot org]
(C) 2012, Muzer
(C) 2013-2016, Wannado
All rights reserved.

Make sure you are using the right firmware version
for your device (Retrode1 vs. Retrode2). Please see
http://www.retrode.org/firmware for updating
instructions.

This software uses the LUFA library by Dean Camera.
Learn more at http://www.fourwalledcubicle.com/LUFA.php

The authors disclaim all warranties with regard to this
software, including all implied warranties of merchantability
and fitness.  In no event shall the authors be liable for any
special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether
in an action of contract, negligence or other tortious action,
arising out of or in connection with the use or performance of
this software.

Release history

v0.19 beta (2016-05-01)
- Changed extension of GB saves to .sav as suggested
  by justin89.
- Changes by Wannado:
-- Added SRAM access for GB games with MBC2 chip.
-- Fixed a bug that caused SRAM corruption on GB games
   (e. g. Link's Awakening: offset 1EFF was set to 0).
-- Filesystem: The second boot sector now also has the
   signature bytes 55 AA.
   Might this improve compatibility with Android?
-- Fixed a bug that could have caused auto-detection of
   a cartridge in the SNES slot to freeze in rare cases.
-- The [forceSystem] values SNES, A26, NGP2 and TG16 apply
   to the SNES slot only, and the values MDRV, NGP, SMS,
   GG, N64, GBA and GBOY apply to the SEGA slot only.
   Auto-detection is now enabled for the opposite slot
   in each case. The value AUTO enables it for both slots.
   Note: All [forceSystem] values are case-insensitive.
-- Setting [forceSystem] to an unrecognized value now
   disables auto-detection. The Retrode then presents an
   empty file named "forceSystem invalid.".
-- If [forceSystem] is A26, [forceMapper] now accepts the
   values 0 to 10, where 0=no mapper, 1=F8, 2=F6, 3=FA,
   4=FE, 5=E0, 6=E7, 7=F4, 8=3F 9=F0* 10=UA.
   *Support for mapper F0 is not implemented yet.
-- Support for N64 controllers now requires that either
   no cartridge or solely an N64 cartridge is connected.
   That means, if you added controller ports to your old
   N64/GBx combo plug-in, using the controllers while a
   GBA game is connected is no longer possible.
   This is to avoid possible conflicts during detection
   and later operation. A deeper analysis of the issues
   may allow to relax this restriction in a future release.
-- Unified two nearly identical blocks of code in N64 size
   detection, hopefully achieving the same or better
   results in practice.
-- If the configuration was last written using a v0.18
   release, all settings will be kept.
-- Some internal improvements.
-- More clean-up.

v0.18d beta 3 (2015-11-15)
- Changes by Wannado:
-- Major changes in the file system implementation to
   simplify future development.
-- Streamlined initialization sequence.
-- Fixed "[forceSystem] GG" config setting not being
   recognized.
- Fixed the condition for SMS SRAM detection. Thanks to
  user justin89 for contributing this fix.
  Note that the whole SMS SRAM feature is still untested.

v0.18d beta 2 (2014-01-22)
- Fixed writing of GB saves larger than 8 kbytes.

v0.18d beta (2013-12-05)
- Writing of GB saves (may need renaming .srm to .sav
  before starting some emulators like VisualBoyAdvance)
- Access to N64 Memory Paks courtesy of Wannado (not
  all emulators support this)
- Fixed SMS SRAM cluster bug found by Wannado - thanks!
- Minor improvements and thorough testing of recently
  added features

v0.18c (2013-04-26)
- When using HWB overdumping for N64 or GBA titles,
  or when autodetection fails and default size is used,
  file name tells us so (instead of 4-digit game code).
- Adapted min and max GBA sizes by forum user input.
- Huge improvement to GBA size detection, small
  improvement to N64 (should fix BM64 and OoT)
- Updated LUFA library to latest version 130303.
- Fixed bug that caused crash using SMS plug-in.
- Added SMS SRAM reading (untested!)
- Added config option [blinkControllers]

v0.18b (2012-08-08)
- Atari 2600 changes:
-- Timing changed to increase compatibility
   (especially with first-party Atari games).
-- Bankswitching detection improved (fixes many F6
   games among others). Please report any regressions.
-- A bug that could cause accidental bankswitching
   during dumping (and therefore corrupt dumps) in some
   games has been fixed (fixes "Dig Dug")
- Turbografx-16 changes:
-- Implemented support for PC Engine games. Detection
   is very experimental as there is no easy way to do
   it, so it uses frequencies of 6502 opcodes. However,
   you can force detection by setting forceSystem to
   "TG16" and forceMapper to a number other than 0.
   This support is untested and so experimental. Please
   report any games that don't work or aren't detected.
- Added a feature that flashes the LED rapidly three
  times when the overdump button is pressed to return
  to automatic detection mode.

v0.18a (2012-05-09)
- N64 controller support: Connect data line via 220ohm
  resistor to Sega slot pins A7 (controller #1) and
  A5 (#2).
- Startup HIDMode setting: Hold down D-pad to choose
  values 0 (up), 1 (up+left), 2 (left), 3 (down+left),
  4 (down). Also press Start to make the setting
  permanent
- HID joystick (HIDMode 1, 2) now reports 16 buttons
- KB Mode ([HIDMode] 3) now supports 4 players
- A dedicated USB PID per HIDMode setting, for
  smoother enumeration, and driver handling by OS
- Streamlined config file (no more key mappings, file
  extensions for plug-in prototypes)
- Added config options for SMS and GG rom extensions
- Fixed overdump mode (HWB button)
- Firmware checks major version and re-initializes
  config settings if incompatible

v0.17g (2012-04-17)
- LED now lights up on controller activity
- Cartridge re-detection now timer-based (for constant
  timing in different HID modes)
- Experimental SRAM bankswitch for Phantasy Star IV.
  (Anyone care to test SRAM for that game?)
- Sonic 3 SRAM bank switching bugfix
- Minor tweak to SNES mouse acceleration profile

v0.17f (2012-03-19)
- Essential fix for SNES controllers ("B Button
  Problem" and others)
- Bugfix SRAM writing: didn't check against total size

v0.17e (2012-02-14)
- Happy Valentine's Day!
- Enabled SRAM for Sonic3 & Knuckles (anyone care to
  test?)
- In case of missing game title, use "No Name"

v0.17d (2012-02-02)
- Complete re-write of USB HID descriptors, with five
  HID configurations:
  Off (fastest), 4 Joy + Mouse, 2 Joy, KB, Arcade
- Skipped the silly "Ataliri" for 2600'er Cartridges
- Sega SRAM now 16-bit by default; significant
  improvements in detection, reading and writing
- Lowered USB current request to 100mA (was 200mA)

v0.17c (2012-01-19)
- Version number now displayed in config file
- Sonic&Knuckles lock-on technology bug fixed
  (Retrode 2 or Retrode 1 w/ S&K fix)
- Config option for Sega SRAM "16-bit mode" (some
  emulators access SRAM in bytes, some in words)
  (Retrode 2 only)

v0.17b (2011-11-24)
- Major bugfix (affected Sega 6-button controllers)
  and improvement of controller handling in general
- Re-introduced SMS/GG support

v0.17a (2011-11-12)
- Deactivated SMS support (unknown bug caused
  Retrode to crash)

v0.17  (2011-11-10)
- Support for NGP plug-ins by ponrev and
  Matthias Hullin
- Support for SMS/GG plug-in (unique filename via
  product ID. Header contains no title string)
- Support for MBC3 and MBC5 controllers on GB carts
  (requires revised plug-in hardware)
- Support for SRAM on GB carts via plug-in
- Size detection for N64 and GBA games improved
- Read and write Genesis/Mega Drive SRAM (Retrode 2
  only)
- Auto-detection for 3- and 6-button SEGA controllers
  (Retrode 2 only)
- "Force" config options for undetectable combinations
  of system, size, mappers.

v0.16a (2011-03-20)
- SRAM protection (SRAM contents were occasionally
  lost when hot-plugging cartridges)
- Preparations for future hardware revisions
- Re-activated LED
- Added overdump button (HWB button cycles between auto
  size detection and 3 predefined ROM sizes. Setting is
  temporary and reverted to auto-detect upon device reset)

v0.15u (2010-09-11)
- fix 8Mbit and 16Mbit GB ROMs, affects some Pokemons
  and Wario Land 2.

v0.15t (2010-09-01)
- fix N64 size detection? (affects Ocarina of Time)
- fix GBA size detection? (affects Mario Kart Advance)
- default GBA size to 8 megs

v0.15s (2010-08-15)
- fix GBC size detection (added some more delay for ROM
  reading)

v0.15r (2010-07-20)
- apparently, something SEGA related was broken along the
  way. Fixed.

v0.15p (2010-07-16)
- SRAM/cfg writing fixed? (Update, 9/11/2010: Apparently
  not. Sigh.)
- More reliable detection of SEGA games

v0.15n (2010-06-20)
- Using new EEPROM update functions (compare-before-write);
  extends lifetime of cfg memory

v0.15l (2010-05-23)
- Basic GB Memory Mapping works

v0.15k2 (2010-05-23)
- Tidy unified detection routine. It was about time with
  all the new adapters

v0.15k (2010-05-23)
- GBA implemented

v0.15i (2010-05-18)
- TG-16 detection

v0.15h (2010-05-14)
- improved cart detection
- USB HID disabled by default

v0.15e (2010-04-24)
- New cluster-sector system (128MB of total virtual space
  on device)

v0.15b (2010-04-24)
- SNES Mouse support on controller port 1. Use only on
  200x200 pixel displays :)