Uxn - Virtual Computer

Thank you for the response.

I wasn’t clear regarding my drum rack question. I was playing around with uxn orca and the drum rack and using the “/“ to trigger the drums. But I couldn’t figure out if there was a methodology to determine how the two characters after the slash would line up with the drum rack.

is it a goal at all to ever port uxn to baremetal, perhaps with an init kernel to get things set up properly? that’d be hard with the SDL dependency, but it might be possible

@xxskylar_bleedxx is it a goal at all to ever port uxn to baremetal?

Yeah it is, and we do without SDL entirely. :slight_smile:


Typically, Uxn devices are re-implemented to fit the available hardware.


Any more details you can share here? I picked up that screen and want to implement similar on an ARM M0 or M4, maybe even make a PCB layout focused on running these Uxn roms. Are you implementing the VM at the Python or C level?


@kyle Alderwick has put together a couple of repos to get the uxn emulator to run on bare metal and draw on the memory display and pico pi.


Wow! I thought this was going to be a lot more complicated than it turned out to be. Here is the SDL2/C version running on iOS with a few tiny tweaks to make it not crash. I look forward to diving into the details and understanding the VM better.

Not sure if there would be a good reason to remove the SDL dependency. Off the top of my head I’d imagine a ROM loader/switcher would be the next step since I’ve hard coded the piano into the startup code.


Idea: Adafruit BlackBerry keyboard and display FeatherWing + their Feather format version of the Pi Pico + bare metal Uxn



insert gif of Bit from Tron saying “yesyesyesyesyesyes”


This thread is called “virtual computer” which is a good and strange name (all computers¹ are kind of virtual), next level is the name people call PICO-8, TIC-80 etc: fantasy console.

Uxn looks cool as a thing and very cool as a project. We need news kind of computing, everyone knows it :leaves:

¹ well there are many theories but I guess mean Turing complete and maybe von Neumann architecture


I’m trying to make it explicit with this project.

Most people, including me, will at some point feel like computing is limiting or broken or static - Everyone who forget that all computing is virtual will just accept it, and won’t try to shape it in novel ways.

Building entirely personal VMs is a way to rekindle that, the Uxn code-base is only 1200 lines in size, the idea is that it can be an approachable example of DIY computing, and maybe get people to think about building their own vision of a dream machine.


This setup with a bootloader to switch between Uxn / PICO-8 / TIC-80 / etc. would be absolutely perfect (although PICO-8 is closed-source, which makes it sadly inaccessible for this type of project).


@neauoire Was wondering what might be stopping web Uxn Orca from receiving arrow key messages from my Bluetooth keyboard (RK61).

They are activated by a Fn layer on the keyboard, but unusually, the .io web version receives them fine.

P.s I’m buzzing for your set on Saturday! :honeybee:

Was wondering what might be stopping web Uxn Orca from receiving arrow key messages from my Bluetooth keyboard

They might be registering as other keycodes, does the SDL2 version of the Uxn emulator has the same issue?


1 Like

So I was talking to @neauoire in the Orca thread about possibly publishing Uxn and/or Orca on iOS and how the licensing would work, and that would be totally acceptable (as long as it were released free of charge and included the license info).

Would you mind letting me (at some point) know what you had to do to get it running on iOS? I’m thinking that the license would be fairly easy to throw in with all the other necessary iOS UI bits, and then one would just need to implement something along the lines of shim to convert the Uxn/Orca note data to CoreMIDI.

Ooh I’ve not tried building the all the SDL2 stuff, I’ll give this a go when I can and let you know! :honeybee:

1 Like

Sure! I’ve spent only a few hours on the SDL2 version and much more time trying to wrap the JS version. It really feels like making a good Uxn ROM player on iOS with some great native service integrations is the way to move forward, especially as this ecosystem evolves. I’m attaching the SDL port I started last night. Let me know if you want collab on this or fly solo. I’m kind of burnt out on mobile apps these days so I don’t think I can carry the project myself.

SDLTemplate.zip (173.0 KB)


Thanks for the ZIP of your current progress! I’ll have to play around with this in Xcode at some point soon.

To be honest, I tend to get burnt out on personal projects easier than others, but collaborating eases that problem a bit. And I totally agree - a native implementation of Uxn seems like the way to go, because then Orca and any other Uxn moms all work for the development cost of one port.

Something I’m having a harder time than I should wrapping my head around: Is there a way to enter characters into Uxn using only a controller (without a keyboard or mouse), or is the GBA port playback-only when you run Orca within Uxn?

1 Like

Since I think someone asked about OSX, building UXN on my old 2012 MBP running OSX sierra or high sierra was trivial.

on Raspberry Pi Zero W running Raspbian lite I’ve encountered the following:

  • UXNEmu can’t be directly exited (you have to pull the power plug :frowning: )
  • You can’t swap TTY with Ctrl + Alt + Fn (need to triple check this)
  • Screen will not respond to detach Ctrl + a Ctrl + d
  • I3wm, launching UXNEmu from terminal results in >1fps :sob: Not sure why this performs so badly.
Forget this

I can’t seem to run UXNEmu directly from I3 launcher (Ctrl+d) I’m completely new to i3wm and I’m not sure my install is correct? Might need to install normal Raspbian build and try install i3 from there.
Any advice on how to proceed would be appreciated, as a regular Vim and iTerm2 user i3 looks really interesting.

UPDATE Just saw your video on the ORCA thread @neauoire, very helpful to confirm that I’m doing things correctly. Looks like the Pi Zero doesn’t have the juice to run i3wm and UXNEmu :expressionless:

Are there any Android dev’s interested in UXN? Looks like there is a version of SDL2 for NDK… I’m game to try this as I have 2x unused 7in Android tablets (Samsung Galaxy Tab 3 and some generic thing). And I’ve never done anything much more than rooting devices and installing cynogenmod. I know the ecosystem is a bit fragmented, is it viable to target older Andriod tablets? Will Midi work with an OTG cable?


I, for one, would appreciate some basic button/controller support generally (such as in ORCA) for cycling through values (contextual cycling would be doubly nice for this); however, I suspect that at the very least we’ll eventually see keyboard support through the link port:


OK, it’s time to try writing an actual program in Uxntal. I’ve written a bit of assembly on microcontrollers, but it’s been a while and I’m already in over my head.

Let’s start with “pad”. I see it used to define port mappings as well as the “main” starting point for code. Could someone explain this? I’m guessing it is used to format the .rom so that the VM can jump to a constant location for these definitions.

Thanks! Super excited to get some code running, I already have ideas percolating.