Log In  

Are there any plans to support the ARM64 architecture? 64-bit OSes for the Raspberry Pi and other boards are becoming more popular, and at present the only way to run PICO-8 on a 64-bit Pi OS is to install Raspbian in a chroot, use a hack in the .Xauthority file, and run PICO-8 from within the chroot.

That is not a satisfactory solution. No OSes exist for the Pi that have a mixed userland (Raspbian is 32-bit only) so the most practical solution is to put together an ARM64 build for PICO-8.

If you don't have easy access to a 64-bit image to build on, there is one based on Gentoo that comes with a desktop and toolchain out of the box: https://github.com/sakaki-/gentoo-on-rpi-64bit

Only you have the source code, @zep! What do you think? :P

P#71918 2020-01-14 03:36

+1, now that I know this is an issue anyway. There's also a usable image of Ubuntu Server here:


I think the latest official distro of 19.10.x is fairly complete in its support for RPi4 in arm64 mode too, but I haven't tried it myself yet.

P#71919 2020-01-14 03:45 ( Edited 2020-01-14 03:53)

(Psst catatafish, if you really want to +1, that's what the star button on the right of each post is for.)

P#71974 2020-01-15 23:40

I did some digging. Distros that enable 32-bit support in the kernel for their ARM/RPi builds should be able to run a 32-bit static binary without a 32-bit userland.

I also noticed that both pico8 and pico8_dyn are dynamically linked in the pi download. The former is stripped, but not static. So the hardware may support it, but the binary wasn't built statically, so it looks for the 32-bit armhf loader, which won't work on an aarch64 userland without building a multilib system (of which nobody does at the time of writing due to 32-bit ARM arch fragmentation and the looming 2038 problem).

So, fixing it to be static can be a good interim solution while aarch64 is being looked into. It would at least give us a way to run it in a 64-bit userland.

While I did this I checked the x86_64 version of PICO-8 and both ./pico8 and ./pico8_dyn are dynamically linked there, too:


$ readelf -d ./pico8

Dynamic section at offset 0x24fa50 contains 28 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libdl.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [librt.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000c (INIT)               0x403680
 0x000000000000000d (FINI)               0x5d9894
 0x0000000000000019 (INIT_ARRAY)         0x84e150
 0x000000000000001b (INIT_ARRAYSZ)       8 (bytes)
 0x000000000000001a (FINI_ARRAY)         0x84e158
 0x000000000000001c (FINI_ARRAYSZ)       8 (bytes)
 0x000000006ffffef5 (GNU_HASH)           0x400298
 0x0000000000000005 (STRTAB)             0x401720
 0x0000000000000006 (SYMTAB)             0x4002e0
 0x000000000000000a (STRSZ)              2113 (bytes)
 0x000000000000000b (SYMENT)             24 (bytes)
 0x0000000000000015 (DEBUG)              0x0
 0x0000000000000003 (PLTGOT)             0x851000
 0x0000000000000002 (PLTRELSZ)           4992 (bytes)
 0x0000000000000014 (PLTREL)             RELA
 0x0000000000000017 (JMPREL)             0x402300
 0x0000000000000007 (RELA)               0x402228
 0x0000000000000008 (RELASZ)             216 (bytes)
 0x0000000000000009 (RELAENT)            24 (bytes)
 0x000000006ffffffe (VERNEED)            0x402118
 0x000000006fffffff (VERNEEDNUM)         5
 0x000000006ffffff0 (VERSYM)             0x401f62
 0x0000000000000000 (NULL)               0x0


readelf -d ./pico8_dyn

Dynamic section at offset 0x114dc8 contains 26 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libSDL2-2.0.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000c (INIT)               0x4035f0
 0x000000000000000d (FINI)               0x4dc454
 0x0000000000000019 (INIT_ARRAY)         0x713fd0
 0x000000000000001b (INIT_ARRAYSZ)       8 (bytes)
 0x000000000000001a (FINI_ARRAY)         0x713fd8
 0x000000000000001c (FINI_ARRAYSZ)       8 (bytes)
 0x000000006ffffef5 (GNU_HASH)           0x400298
 0x0000000000000005 (STRTAB)             0x401668
 0x0000000000000006 (SYMTAB)             0x4002e8
 0x000000000000000a (STRSZ)              2696 (bytes)
 0x000000000000000b (SYMENT)             24 (bytes)
 0x0000000000000015 (DEBUG)              0x0
 0x0000000000000003 (PLTGOT)             0x715000
 0x0000000000000002 (PLTRELSZ)           4680 (bytes)
 0x0000000000000014 (PLTREL)             RELA
 0x0000000000000017 (JMPREL)             0x4023a8
 0x0000000000000007 (RELA)               0x402330
 0x0000000000000008 (RELASZ)             120 (bytes)
 0x0000000000000009 (RELAENT)            24 (bytes)
 0x000000006ffffffe (VERNEED)            0x402290
 0x000000006fffffff (VERNEEDNUM)         2
 0x000000006ffffff0 (VERSYM)             0x4020f0
 0x0000000000000000 (NULL)               0x0

(Perhaps I'm misunderstanding the intended distinction between pico8 and pico8_dyn.. clarification would be appreciated)

P#72200 2020-01-25 00:03 ( Edited 2020-01-25 02:37)

Can't really comment on the ABI details as I don't know the arm platform at all, but (and I should really get off my butt and check this stuff for myself but I don't have much time at the moment) I remembered that Ubuntu 19 also supports KVM, if you can live with virtualization that may be another interim option.

Also thanks Felice, I wasn't thinking of stars as +1's (more like bookmarks), but I've clicked the appropriate places now.

P#72226 2020-01-25 01:16

@Catatafish: It should really only be an addition of a build target in whatever build system @zep uses to build PICO-8. AFAIK every major build system supports aarch64. Then (maybe) a change to how 'pico8' gets built so it produces a static binary. We'd run into fewer linking issues because customers could fall back to the static binary if there's an issue with their system.

The devil's in the details: it adds to the maintenance burden (if only a little) and it's another build target to test, another download link, etc. Maybe it's not a problem, since the PocketCHIP still gets PICO-8 builds and it's dead hardware. (not meant as a pejorative; they look fun and it's a shame it's not a thing anymore)

EDIT: I hear you on time constraints! So many things I want to do in PICO-8, never enough time. :)

P#72228 2020-01-25 02:48 ( Edited 2020-01-25 02:52)

Bumping to mention that Raspberry Pi recently announced a split from the Raspbian name (but still using the same base) and released an official 64-bit port, to give users access to the full 8GB (!) available on the brand-new Pi4B.


P#77454 2020-05-31 15:15

I also would really like to see ARM64 support, specifically for the pinebook pro and pinephone, as well as the pinetab.

P#78560 2020-06-26 23:06

This would be useful for odroid advance running void too

P#80586 2020-08-10 07:07

Ditto I have a Pinebook Pro coming in the next couple of weeks and I'd dearly love to be able to run pico-8 on it!

I suppose you could do it with qemu but I'd expect it to be blisteringly slow.

P#80954 2020-08-19 14:47

When my pinebook pro comes in, I intend to try various experiments to see if I can get the stock x86 pico-8 binary running.

I'll try (in order of preference) Box86 and qemu.

I don't have particularly high hopes for Box86. I'm pretty sure I can get qemu to work but I expect the performance to be super abysmal. We'll see.

Can't blame @zap for not wanting to build binaries for all the new ARM devices, there are so many and they each require custom support for their various graphics chipsets (Kind of a design downside for the architecture IMO)but that won't stop me from trying :)

I'll report back here should I have any success, or if I end up giving up entirely :)

P#81144 2020-08-25 03:13

I tried figuring out how to set up a QEMU X86_64 VM to run the stock Linux binary, and it was so incredibly slow pico-8 wasn't in the offing.

My next strategy will be to try Remote Desktop-ing into my beefy Windows box :)

P#81483 2020-09-03 20:28

Another bump for a ARM64 for the same reason as micronaut, Odroid Go Advance Void Linux (Retro Roller).

P#81631 2020-09-09 22:34

I would also love to be able to use Pico-8 on my Pinebook Pro!

P#81915 2020-09-17 03:54

I'm bumping this because I now have Ubuntu Pi desktop. Specifically Ubuntu MATE on my Raspberry Pi 3 B+.

EDIT 2020-NOV-08 10:11pm: Never mind about the Ubuntu MATE. That one works better on RPi 4, but my point still stands.

P#83874 2020-11-06 20:45 ( Edited 2020-11-09 04:11)

Want pico8 on Pinebook Pro too!

P#84064 2020-11-09 23:12

Batocera is also moving to 64 bits for RPi, RK3326 (Odroid Go Advance, Super, Gameforce…). It’s too bad we can’t use the official pico-8 binary any more. I’m currently adapting Batocera to support it “out of the box” and it might be limited to PC x86_64 until then.

P#94332 2021-07-02 13:51

I ended up moving to ArkOS which now has an OGA version. Runs 32 and 64bit RetroArch side by side on 32bit debian for Pico8.

P#94333 2021-07-02 13:56 ( Edited 2021-07-02 13:57)

Just checking to see if there has been any movement on this? Have a Lenovo Duet Chromebook that would be ace to have pico8 on.

P#95166 2021-07-22 01:53

Same as chiz! I think this would be a great pico8 terminal for my son!

P#96003 2021-08-14 17:16

I launched PICO-8 on Raspberry PI 4 with 64 bit Ubuntu Mate 20.04 using such commands:

sudo dpkg --add-architecture armhf
sudo apt-get update
sudo apt install libudev1:armhf libsdl2-2.0-0:armhf
sudo reboot now
# After reboot
P#96252 2021-08-20 00:37 ( Edited 2021-08-20 00:50)

BRUH! That is awesome! I will have to try that this weekend! If it works, we have somewhat of a workaround. Not perfect, but workable!

P#96403 2021-08-24 02:41

What is the reboot for? Adding architectures and installing foreign packages are normal operations, the packages will work immediately after. Rebooting is only useful when updating the kernel or init system :)

P#96415 2021-08-24 15:01

I don't remember exactly why I needed a reboot)
But as far as I remember, there were some errors with display detection in SDL2.
Perhaps a simple logout or something else helps, but I decided to use a simpler solution.

P#96820 2021-09-03 09:26

@prohmerp I just wanted to say that your post just saved my sanity. Thank you!

P#97979 2021-09-29 14:47

@prohmerp Where can I contact you. I have an offtopic question I'd like to ask you.

P#98141 2021-10-03 03:19

@Krystman, it's about dependency hell, right?)
My email: [email protected]

P#98258 2021-10-05 22:47

If it concerns dependency hell or that sick looking DevTerm (how is that btw?), I'd also like to be in on this chat. Maybe a thread somewhere?

P#98310 2021-10-07 01:58

i'd love to start a DevTerm + pico 8 thread but my unit has yet to arrive. once it does i'll be all over it with yall <3

P#98323 2021-10-07 12:03

OK don't mind me - just saw the 0.2.3 update post: https://www.lexaloffle.com/bbs/?tid=44512

Quote: "Next up for PICO-8 is a 64-bit Raspberry Pi Build, and also a ...."

Bumping this. Wanna run Pico-8 on Void Linux aarch64 on a Raspberry Pi 4B but having little luck.

Not used to software where there's not even a list of dependencies (that I'm aware of).

P#99215 2021-10-27 13:08 ( Edited 2021-10-27 13:27)

Bumping this to confirm: as of version 0.2.4, PICO-8 has a 64-bit Raspberry Pi build available! We did it!

Huge thanks to @zep for considering it and delivering! Can't wait to finalize my retro-gaming system powered by a Pi, with PICO-8 in it!

P#101526 2021-12-05 06:17

I can confirm pico_64 runs on asahi linux!

P#128282 2023-04-08 00:46

[Please log in to post a comment]