Skip to main content

PICO-8 on an ODROID-GO Advance Black Edition

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:

  1. Create folder /userdata/roms/pico-8 (for the carts)
  2. 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)
  3. Make pico8_dyn executable by ssh’ing into the odroid and running:
    chmod a+x /userdata/bios/pico-8/pico8_dyn
    
  4. Create a file called pico-8.sh in /userdata/roms/ports with the following bash script in it:
    #!/bin/bash
    /userdata/bios/pico-8/pico8_dyn -splore -home /userdata/bios/pico-8 -root_path /userdata/roms/pico-8 -joystick 0
    
    This makes Batocera’s emulation station add pico-8 to the “Ports” part of the launcher. Nice!
  5. PICO-8 still wouldn’t get signals from the controller, so we need add this to /userdata/bios/pico-8/sdl_controllers.txt :
    // 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,
    
    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.)
So, there goes. PICO-8 on a handheld device.

Comments

  1. Hello,

    Thank 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!

    ReplyDelete
    Replies
    1. Hello,
      Great 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...

      Delete
  2. It works in EmuELEC!
    https://forum.odroid.com/viewtopic.php?f=187&t=39335&p=304540#p304540

    ReplyDelete
    Replies
    1. Thanks for the pointer! I’ll give it another shot.

      Delete
  3. Hey,

    So 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.

    ReplyDelete

Post a Comment

Popular posts from this blog

Fix your rapid blinking Marantz SR-6004 using nothing but 3 fingers - and a thumb

A couple of years ago my (most of the time excellent) Maranz SR6004 acted up. It did't want to turn itself on. Properly. Just stood there and blinked rapidly. Its little red light that is. At me. The solution was so simple that I didn't bother to write it down as I was sure to remember it. Alas, no. Some weeks ago it did it again. (Can it be the heat?) Just stood there blinking rapidly at me. The manual just said - as it said last time around - that it was time to return the unit to it's maker. Or similar. Some googling led me to this page:  http://www.allquests.com/question/4056803/Marantz-XXX4-Series-Failure-Issues.html  The technical term for what I had experienced seems to be "The Pop of Death". Aïe. But!, humongous letters said: YOU CAN SOMETIMES RESET THE UNIT BY PRESSING SURR MODE, CLEAR AND EXIT SIMULTANEOUSLY And so I did. And so it was fixed. And all was well. (And now I have written it down for the next time.)

Fix upside down Skype video in Ubuntu 12.10 [UPDATED]

When launching Skype in 64-bit Ubuntu 12.10 on my Asus U35J the webcam image was all topsy-turvy. Since I don't live in Australia, or something (tsk-tsk), this was not really cutting it for me.  Some quick googling led me to this forum post:  http://forums.pcpitstop.com/index.php?/topic/198236-why-is-my-skype-video-showing-upside-down/   After making sure that the necessary packages was installed (notably  libv4l-0) I adapted the command from the forum post to: LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so skype and voila, the image was OK. Next step is for this to be set to default, which seems to be outlined here (in steps 2 and 3):  http://pc-freak.net/blog/how-to-fix-upside-down-inverted-web-camera-laptop-asus-k51ac-issue-on-ubuntu-linux-and-debian-gnu-linux/  (Actually this post seems to cover most of what is useful from the forum post above...) UPDATE (19/04/2013): Since my laptop was working fine, I decided it was about time to fix it. Also I wanted to

Using a Raspberry Pi as a MIDI USB/5-pin bridge

In my constant... need... to get everything music instrument related to communicate with each other, I wanted to look into ways to get some of my keyboards/synths with only MIDI over USB to talk to devices with regular good old-fashioned 5-pin MIDI ports from the eighties. Cables! First I had a quick look at off the shelf solutions. The most interesting one being the Kenton MIDI USB Host – providing MIDI host functionality for USB devices as well as regular MIDI in and out in a small box. Unfortunately it is rather expensive (~125 €) and a reliable online source warned me that it was not entirely stable in collaboration with my OP-1, so I started thinking of more... home-grown solutions. I decided to try to use my old Raspberry Pi and see if that would serve as a USB host with a borrowed MIDI USB adapter. (Thanks Simon.) A cheaper, and, as an added boon, a nerdier solution. Step 1: Get the USB MIDI device up and running This was the easy part. The device I have been lent