UPDATE 2021/06/30: This whole procedure is now super simple if you go the EmuELEC way following this guide: https://retrogamecorps.com/2020/11/12/guide-pico-8-on-retro-handhelds/#EmuELEC It's basically just to put the pico-8 in a specific folder, and any roms (unless you just use splore) in another.
Last weekend I built the ODROID-GO Advance Black Edition with my daughter. (Apart from re-experiencing my childhood's Commodore 64 an Amiga games,) One of our goals was to run PICO-8, the great little fantasy console, on it. That seemed possible, given that it shares a similar CPU to the Raspberry PIs – where it runs great.
However, it was not that easy to get it up and running. Here’s what worked, but first, what didn’t…
Official image
First we installed the official image from HardKernel on it. But alas, no luck getting things to run properly.
EmuELEC
Next up was EmuELEC. There we managed to get PICO-8 to run in all it’s 8-bit glory! But! Controls didn’t work when launching from EmulationStation… What worked though, was to go to bash mode, ssh in from another device and launch joy2key.py and then PICO-8… What also worked was to plug an external controller into the device before launching PICO-8 from EmulationStation… This made me suspect that PICO-8 didn’t have the right SDL joystick config file. I couldn’t find the config for this new odroid online, but! I found this forum post on batocera linux: https://forum.odroid.com/viewtopic.php?f=193&t=37256&start=800#p295789
Batocera
So, I installed batocera and followed the steps outlined in the link above. Basically:
- Create folder
/userdata/roms/pico-8
(for the carts) - Create folder
/userdata/bios/pico-8
and extract the contents of the Raspberry Pi version of PICO-8 here. (As of this writing: pico-8_0.2.0i_raspi.zip) - Make
pico8_dyn
executable by ssh’ing into the odroid and running:chmod a+x /userdata/bios/pico-8/pico8_dyn
- Create a file called
pico-8.sh
in/userdata/roms/ports
with the following bash script in it:This makes Batocera’s emulation station add pico-8 to the “Ports” part of the launcher. Nice!#!/bin/bash /userdata/bios/pico-8/pico8_dyn -splore -home /userdata/bios/pico-8 -root_path /userdata/roms/pico-8 -joystick 0
- PICO-8 still wouldn’t get signals from the controller, so we need add this to
/userdata/bios/pico-8/sdl_controllers.txt
:This is a slight adaptation of the config outlined in the forum post mentioned above – to handle the extra buttons on the BE version of the Odroid-GO Advance. Basically it seems that the two new trigger buttons has, bizarrely, gotten codes that used to be taken by up and down ('b6' and 'b7') – even though the ID of the controller has been kept the same… (To make the UI of Batocera work properly you need to do a similar remapping there... and that is actually how I found the proper button numbers -- from the config file resulting from remapping the buttons.)// add SDL2 game controller mappings to this file 19000000010000000100000001010000,odroidgo2_joypad,a:b1,b:b0,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,leftx:a0,lefty:a1,guide:b17,leftstick:b13,lefttrigger:b6,rightstick:b16,righttrigger:b7,start:b12,platform:Linux,
Hello,
ReplyDeleteThank you for posting this it was very helpful. I now have Pico-8 running on my OGA BE! However, it only works with an external keyboard. I tried editing the sdl file but it hasn't worked. Was there anything else you did to make it work with emuElec?
Best!
Hello,
DeleteGreat that this was useful. I haven’t gotten back to EmuElec since things work fine in batocera. Someone seems to have posted an update to the sdl.txt for OGA BE, but that file didn’t work for me...
It works in EmuELEC!
ReplyDeletehttps://forum.odroid.com/viewtopic.php?f=187&t=39335&p=304540#p304540
Thanks for the pointer! I’ll give it another shot.
DeleteHey,
ReplyDeleteSo I'm trying this with batocera on my Odroid Go Advance BE. I am unsuccessful in getting the most recent version of Pico 8 (0.2.4c) running, but I also couldn't get 0.2.0i running either. I can see pico-8 in the Ports category, but when I try running it, it loads on a black screeen for a second and boots me back to batocera. If it's not much trouble, I could use a little help.