- Notifications
You must be signed in to change notification settings - Fork0
Retro emulation for the ODROID-GO and other ESP32 devices
License
retro-esp32/retro-go
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Retro-Go is a firmware to play retro games on ESP32-based devices (officially supported areODROID-GO and MRGC-G32, checkthis list for other devices).The project consists of a launcher and half a dozen applications that have been heavilyoptimized to reduce their cpu, memory, and flash needs without reducing compatibility!
- Nintendo:NES, SNES (slow), Gameboy, Gameboy Color, Game & Watch
- Sega:SG-1000, Master System, Mega Drive / Genesis, Game Gear
- Coleco:Colecovision
- NEC:PC Engine
- Atari:Lynx
- Others:DOOM (including mods!)
- In-game menu
- Favorites and recently played
- GB color palettes, RTC adjust and save
- NES color palettes, PAL roms, NSF support
- More emulators and applications
- Scaling and filtering options
- Better performance and compatibility
- Turbo Speed/Fast forward
- Customizable launcher
- Cover art and save state previews
- Multiple save slots per game
- Wifi file manager
- And more!
- Download
retro-go_1.x_odroid-go.fwfrom therelease page and copy it to/odroid/firmwareon your sdcard. - Power up the device while holding down B.
- Select retro-go in the files list and flash it.
- Download
retro-go_1.x_mrgc-g32.fwfrom therelease page and copy it to/espgbc/firmwareon your sdcard. - Power up the device while holding down MENU (the volume knob).
- Select retro-go in the files list and flash it.
- Download the .img for your device from therelease page.
- Connect your device to a computer with a USB cable.
- Flash the image with esptool:
- Command line: Run
esptool.py write_flash --flash_size detect 0x0 retro-go_*.img - Web version: Connect your device, click Erase Flash, then select your .img file and set address to 0x0, finally click Program)
- Command line: Run
Your particular device may require extra steps (like holding a button during power up) or different esptool flags or a special cable. If the above steps fail, you might need to ask the manufacturer for instructions on how to flash new firmware!
If your device is not already supported or if a prebuilt version isn't available for it you can check thedevelopment section for more information on how to build for your device.
Game covers should be placed in theromart folder at the base of your sd card. You can obtain a pre-made packhere. Retro-Go is also compatible with the older Go-Play romart pack.
You can add missing cover art by creating a PNG image (160x168, 8bit). Two naming schemes are supported:
- Filename-based:
/romart/nes/Super Mario.png(notice the rom extension isnot included) - CRC32-based:
/romart/nes/A/ABCDE123.pngwherenesis the same as the rom folder, andABCDE123is the CRC32 of the game (press A -> Properties in the launcher to find it), andAis the first character of the CRC32
Note: CRC32-based, which is what is used in the pre-made pack, is much slower than name-based! This type is useful because filenames vary greatly despite having identical CRCs, but if you generate your own art I suggest you use filename-based format and delete all CRC-based art from your SD Card to improve responsiveness.
Some emulators support loading a BIOS. The files should be placed as follows:
- GB:
/retro-go/bios/gb_bios.bin - GBC:
/retro-go/bios/gbc_bios.bin - FDS:
/retro-go/bios/fds_bios.bin - MSX: In folder
/retro-go/bios/msx/put:MSX.ROMMSX2.ROMMSX2EXT.ROMMSX2P.ROMMSX2PEXT.ROMFMPAC.ROMDISK.ROMMSXDOS2.ROMPAINTER.ROMKANJI.ROM
The roms must be packed withLCD-Game-Shrinker and a tutorial can befound here.
To use wifi you will need to create a/retro-go/config/wifi.json config file. You can define up to 4 different networks, then selectable in the menu. Its content should look like this:
{"ssid0":"my-network","password0":"my-password","ssid1":"my-other-network","password1":"my-password","ssid2":"my-third-network","password2":"my-password","ssid3":"my-last-network","password3":"my-password"}Time synchronization happens in the launcher immediately after a successful connection to the network.This is done via NTP by contactingpool.ntp.org and cannot be disabled at this time.Timezone can be configured in the launcher's options menu.
You can find the IP of your device in theabout menu of retro-go. Then on your PC navigate tohttp://192.168.x.x/ to access the file manager.
Retro-Go supportsthe external DAC mod for the ODROID-GOwhich allows high quality audio through headphones. You can switch to it in the menuAudio Out: Ext DAC.
Pinout
| GO PIN | PCM5102A PIN |
|---|---|
| 1 | GND |
| 2 | - |
| 3 | LCK |
| 4 | DIN |
| 5 | BCK |
| 6 | VIN |
| 7 | - |
| 8 | - |
| 9 | - |
| 10 | - |
Retro-Go typically detects and resolves application crashes and freezes automatically. However, if you doget stuck in a boot loop, you can holdDOWN while powering up the device to return to the launcher.
The volume isn't correctly attenuated on the GO, resulting in upper volume levels that are too loud andlower levels that are distorted due to DAC resolution. A quick way to improve the audio is to cut oneof the speaker wire and add a33 Ohm (or thereabout) resistor in series. Soldering is better but notrequired, twisting the wires tightly will work just fine.A more involved solution can be seen here.Alternatively you can use the headphones DAC mod mentioned earlier in this document.
In Retro-Go, save states will provide you with the best and most reliable save experience. That being said, pleaseread on if you need or want SRAM saves. The SRAM format is compatible with VisualBoyAdvance so it may be used toimport or export saves.
You can configure automatic SRAM saving in the options menu. A longer delay will reduce stuttering at the costof losing data when powering down too quickly. Also note that whenresuming a game, Retro-Go will give priorityto a save state if present.
Most Retro-Go applications now support ZIP files. ZIP archives should contain only one ROM file and nothing else. ZIP support also depends on available memory and larger ROMs may fail to load on some devices unfortunately.
If you wish to build or modify Retro-Go, you can find help in the following documents:
- Build instructions inBUILDING.md
- Theming instructionsTHEMING.md
- Porting instructions inPORTING.md
- Translating instructions inLOCALIZATION.md
- The NES/GBC/SMS emulators and base library were originally from the "Triforce" fork of theofficial Go-Play firmware by crashoverride, Nemo1984, and many others.
- The design of the launcher was originally inspired/copied frompelle7's go-emu.
- PCE-GO is a fork ofHuExpress andpelle7's port was used as reference.
- The Lynx emulator is a port oflibretro-handy.
- The SNES emulator is a port ofSnes9x 2005.
- The DOOM engine is a port ofPrBoom 2.5.0.
- The Genesis emulator is a port ofGwenesis by bzhxx.
- The Game & Watch emulator is a port oflcd-game-emulator by bzhxx.
- The MSX emulator is a port offMSX by Marat Fayzullin.
- PNG support is provided bylodepng.
- PCE cover art is fromChristian_Haitian.
- Some icons fromRokey.
- Background images fromes-theme-gbz35.
- Special thanks toRGHandhelds andMyRetroGamecase for sending me aG32 device.
- TheODROID-GO community for encouraging the development of retro-go!
Everything in this project is licensed under theGPLv2 license with the exception of the following components:
- fmsx/components/fmsx (MSX Emulator, custom non-commercial license)
- handy-go/components/handy (Lynx emulator, zlib)
About
Retro emulation for the ODROID-GO and other ESP32 devices
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Languages
- C76.2%
- C++22.8%
- HTML0.5%
- Python0.4%
- CMake0.1%
- Shell0.0%
