Uxn - Virtual Computer

Please update us if you get it running! I have an RG350M I’d love to give this a go on.

1 Like

@neauoire @G4B3
I got as far as trying to compile it on ArkOs (which is Ubuntu based?) via ssh. It seems like there are some missing build dependencies. I installed clang-format and then got “Invalid Argument” errors. I realize I’m being pretty vague here. At any rate - I think this will take someone smarter/ more experienced than me.

edit: I just tried to build on my laptop running Ubuntu and ran in to the same issues. At least I know it’s not specific to the rg351

This might be unnecessarily roundabout but would running a GBA ROM of Uxn in an emulator on the Anbernic work?

1 Like

I just tried to build on my laptop running Ubuntu and ran in to the same issues. At least I know it’s not specific to the rg351

What issue/error did you get? My partner is working on Uxn from Elementary which is basically Ubuntu. Maybe I can help.

I think that would be possible and maybe even the same end result. But I’d be emulating an emulated machine… nothing wrong with that! I guess I would just like to try to get it to run natively.

@neauoire

here is the feedback from the build (sorry can’t remember how to compress long code chunks):


Formatting..
YAML:3:16: error: invalid boolean
AlignOperands: DontAlign
               ^~~~~~~~~
Error reading /home/chris/uxn/.clang-format: Invalid argument
YAML:3:16: error: invalid boolean
AlignOperands: DontAlign
               ^~~~~~~~~
Error reading /home/chris/uxn/.clang-format: Invalid argument
YAML:3:16: error: invalid boolean
AlignOperands: DontAlign
               ^~~~~~~~~
Error reading /home/chris/uxn/.clang-format: Invalid argument
YAML:3:16: error: invalid boolean
AlignOperands: DontAlign
               ^~~~~~~~~
Error reading /home/chris/uxn/.clang-format: Invalid argument
YAML:3:16: error: invalid boolean
AlignOperands: DontAlign
               ^~~~~~~~~
Error reading /home/chris/uxn/.clang-format: Invalid argument
YAML:3:16: error: invalid boolean
AlignOperands: DontAlign
               ^~~~~~~~~
Error reading /home/chris/uxn/.clang-format: Invalid argument
YAML:3:16: error: invalid boolean
AlignOperands: DontAlign
               ^~~~~~~~~
Error reading /home/chris/uxn/.clang-format: Invalid argument
YAML:3:16: error: invalid boolean
AlignOperands: DontAlign
               ^~~~~~~~~
Error reading /home/chris/uxn/.clang-format: Invalid argument
YAML:3:16: error: invalid boolean
AlignOperands: DontAlign
               ^~~~~~~~~
Error reading /home/chris/uxn/.clang-format: Invalid argument
YAML:3:16: error: invalid boolean
AlignOperands: DontAlign
               ^~~~~~~~~
Error reading /home/chris/uxn/.clang-format: Invalid argument
YAML:3:16: error: invalid boolean
AlignOperands: DontAlign
               ^~~~~~~~~
Error reading /home/chris/uxn/.clang-format: Invalid argument
Cleaning..
Building..
src/uxn-fast.c: In function ‘loaduxn’:
src/uxn-fast.c:4058:2: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result]
 4058 |  fread(u->ram.dat + PAGE_PROGRAM, sizeof(u->ram.dat) - PAGE_PROGRAM, 1, f);
      |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./build.sh: line 33: sdl2-config: command not found
src/uxn-fast.c: In function ‘loaduxn’:
src/uxn-fast.c:4058:2: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result [-Wunused-result]
 4058 |  fread(u->ram.dat + PAGE_PROGRAM, sizeof(u->ram.dat) - PAGE_PROGRAM, 1, f);
      |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/uxnemu.c:1:10: fatal error: SDL.h: No such file or directory
    1 | #include <SDL.h>
      |          ^~~~~~~
compilation terminated.
Installing..
Assembling..
Pass 1
New macro #1: +, 1 items
New macro #2: -, 1 items
New macro #3: *, 1 items
New macro #4: /, 1 items
New macro #5: <, 1 items
New macro #6: >, 1 items
New macro #7: =, 1 items
New macro #8: !, 1 items
New macro #9: ++, 1 items
New macro #10: --, 1 items
New macro #11: **, 1 items
New macro #12: //, 1 items
New macro #13: <<, 1 items
New macro #14: >>, 1 items
New macro #15: ==, 1 items
New macro #16: !!, 1 items
New macro #17: RTN, 1 items
New macro #18: TOS, 2 items
New macro #19: MOD, 4 items
New macro #20: LTS2, 6 items
New macro #21: GTS2, 6 items
New macro #22: INCR, 4 items
New macro #23: 2//, 2 items
New macro #24: 4//, 2 items
New macro #25: 8//, 2 items
New macro #26: 8**, 2 items
New label #1: System, at 0x0000
New label #2: System/vector, at 0x0000
New label #3: System/pad, at 0x0002
New label #4: System/r, at 0x0008
New label #5: System/g, at 0x000a
New label #6: System/b, at 0x000c
New label #7: Console, at 0x0010
New label #8: Console/pad, at 0x0010
New label #9: Console/char, at 0x0018
New label #10: Console/byte, at 0x0019
New label #11: Console/short, at 0x001a
New label #12: Console/string, at 0x001c
New label #13: Screen, at 0x0020
New label #14: Screen/vector, at 0x0020
New label #15: Screen/width, at 0x0022
New label #16: Screen/height, at 0x0024
New label #17: Screen/pad, at 0x0026
New label #18: Screen/x, at 0x0028
New label #19: Screen/y, at 0x002a
New label #20: Screen/addr, at 0x002c
New label #21: Screen/color, at 0x002e
New label #22: Audio0, at 0x0030
New label #23: Audio0/vector, at 0x0030
New label #24: Audio0/position, at 0x0032
New label #25: Audio0/output, at 0x0034
New label #26: Audio0/pad, at 0x0035
New label #27: Audio0/adsr, at 0x0038
New label #28: Audio0/length, at 0x003a
New label #29: Audio0/addr, at 0x003c
New label #30: Audio0/volume, at 0x003e
New label #31: Audio0/pitch, at 0x003f
New label #32: Midi, at 0x0070
New label #33: Midi/vector, at 0x0070
New label #34: Midi/channel, at 0x0072
New label #35: Midi/note, at 0x0073
New label #36: Midi/velocity, at 0x0074
New label #37: Controller, at 0x0080
New label #38: Controller/vector, at 0x0080
New label #39: Controller/button, at 0x0082
New label #40: Controller/key, at 0x0083
New label #41: Mouse, at 0x0090
New label #42: Mouse/vector, at 0x0090
New label #43: Mouse/x, at 0x0092
New label #44: Mouse/y, at 0x0094
New label #45: Mouse/state, at 0x0096
New label #46: Mouse/wheel, at 0x0097
New label #47: File, at 0x00a0
New label #48: File/vector, at 0x00a0
New label #49: File/success, at 0x00a2
New label #50: File/offset, at 0x00a4
New label #51: File/pad, at 0x00a6
New label #52: File/name, at 0x00a8
New label #53: File/length, at 0x00aa
New label #54: File/load, at 0x00ac
New label #55: File/save, at 0x00ae
New label #56: last-note, at 0x0000
New label #57: octave, at 0x0001
New label #58: color, at 0x0002
New label #59: pointer, at 0x0003
New label #60: pointer/x, at 0x0003
New label #61: pointer/y, at 0x0005
New label #62: center, at 0x0007
New label #63: center/x, at 0x0007
New label #64: center/y, at 0x0009
New label #65: adsr-view, at 0x000b
New label #66: adsr-view/x1, at 0x000b
New label #67: adsr-view/y1, at 0x000d
New label #68: adsr-view/x2, at 0x000f
New label #69: adsr-view/y2, at 0x0011
New label #70: wave-view, at 0x0013
New label #71: wave-view/x1, at 0x0013
New label #72: wave-view/y1, at 0x0015
New label #73: wave-view/x2, at 0x0017
New label #74: wave-view/y2, at 0x0019
New label #75: octave-view, at 0x001b
New label #76: octave-view/x1, at 0x001b
New label #77: octave-view/y1, at 0x001d
New label #78: octave-view/x2, at 0x001f
New label #79: octave-view/y2, at 0x0021
New label #80: on-frame, at 0x01dd
New label #81: on-frame/loop, at 0x01eb
New label #82: on-control, at 0x0236
New label #83: on-control/no-c, at 0x025e
New label #84: on-control/no-d, at 0x0276
New label #85: on-control/no-e, at 0x028e
New label #86: on-control/no-f, at 0x02a6
New label #87: on-control/no-g, at 0x02be
New label #88: on-control/no-a, at 0x02d6
New label #89: on-control/no-b, at 0x02ee
New label #90: on-control/no-c2, at 0x0306
New label #91: on-control/no-up, at 0x0329
New label #92: on-control/no-down, at 0x0340
New label #93: on-control/no-left, at 0x0357
New label #94: on-control/no-right, at 0x036e
New label #95: on-midi, at 0x0378
New label #96: on-mouse, at 0x0396
New label #97: on-touch-wave-view, at 0x03d5
New label #98: on-touch-octave-view, at 0x03e8
New label #99: on-touch-octave-view/no-incr, at 0x0416
New label #100: on-touch-octave-view/no-decr, at 0x0426
New label #101: on-touch-octave-view/no-mod, at 0x0431
New label #102: on-touch-octave-view/no-key, at 0x0465
New label #103: on-touch-adsr-view, at 0x0466
New label #104: on-touch-adsr-view/no-a, at 0x048f
New label #105: on-touch-adsr-view/no-d, at 0x04b3
New label #106: on-touch-adsr-view/no-s, at 0x04d3
New label #107: on-touch-adsr-view/no-r, at 0x04fd
New label #108: on-touch-adsr-view/no-left, at 0x0517
New label #109: on-touch-adsr-view/no-right, at 0x053b
New label #110: play, at 0x054a
New label #111: draw-cursor, at 0x0555
New label #112: draw-octave, at 0x0591
New label #113: draw-key, at 0x0684
New label #114: draw-key/loop, at 0x0691
New label #115: draw-adsr, at 0x06b1
New label #116: draw-wave, at 0x072c
New label #117: draw-wave/loop, at 0x0752
New label #118: draw-wave/no-dot, at 0x0768
New label #119: draw-wave-length, at 0x07d2
New label #120: draw-wave-length/loop, at 0x07e5
New label #121: draw-knob, at 0x07fb
New label #122: draw-short, at 0x08b8
New label #123: fill-rect, at 0x092b
New label #124: fill-rect/ver, at 0x0930
New label #125: fill-rect/hor, at 0x0938
New label #126: within-rect, at 0x0975
New label #127: within-rect/skip, at 0x09a2
New label #128: cursor, at 0x09a8
New label #129: arrow-icns, at 0x09b0
New label #130: notes, at 0x09c0
New label #131: keys-left-icns, at 0x09ce
New label #132: keys-middle-icns, at 0x09e6
New label #133: keys-right-icns, at 0x09fe
New label #134: knob-icns, at 0x0a16
New label #135: knob-offsetx, at 0x0a3e
New label #136: knob-offsety, at 0x0a4e
New label #137: font-hex, at 0x0a5e
New label #138: piano-pcm, at 0x0ade
New label #139: violin-pcm, at 0x0bde
New label #140: sin-pcm, at 0x0cde
New label #141: tri-pcm, at 0x0dde
New label #142: saw-pcm, at 0x0ede
Pass 2
Assembled bin/piano.rom(3806 bytes), 142 labels, 26 macros.

--- Unused label: pointer
--- Unused label: center
--- Unused label: violin-pcm
--- Unused label: sin-pcm
--- Unused label: tri-pcm
--- Unused label: saw-pcm
--- Unused macro: **
--- Unused macro: //
--- Unused macro: <<
--- Unused macro: ==
--- Unused macro: !!
--- Unused macro: GTS2
Running..
./build.sh: line 49: ./bin/uxnemu: No such file or directory
Done.
1 Like

It looks like you only have 1 error:

src/uxnemu.c:1:10: fatal error: SDL.h: No such file or directory
    1 | #include <SDL.h>

That’s an easy one, it seems you didn’t install SDL2.

sudo apt install libsdl2-dev

D’oh! I saw I had the library installed and thought I was good to go. I’ve been through this before. Thank you! Still get the clang-format errors but it seems to be working on my laptop. Now back to the rg351p

edit: nope… I’ll try again later on.

1 Like

Played notes in the Uxn implementation of Orca for the first time this morning. The Orca rom file(10kb) has an operator to control the onboard synthesizer, I haven’t fully fleshed out the controls UX for the synths yet, but sounds were heard :slight_smile:

33 Likes

Uxn work has me VERY excited. Keen to get stuck in.

Will this Orca build with built in synth work on the ds uxn emu!?!?! And would uxn open the door to running on phones?

The thought of commute orca has me losing my head!

Super excited to try this ds version, thanks!!

Will this Orca build with built in synth work on the ds uxn emu!?

Yes! I tested it yesterday, and it works, the sound engine has been ported to the DS already.

And would uxn open the door to running on phones?

The web version of Uxn already works on mobile and has sound support. On your phone:

  • Download the orca.rom, from here.
  • Load on here.
  • Enjoy mobile Orca!

The orca rom is very incomplete, I’m working on adding some core features like saving, copy/paste, etc. You can monitor these changes in real time.

6 Likes

Am I right in assuming the web version of uxn still requires an external keyboard (Bluetooth or otherwise)? I was limited to a cursor on my phone.

However! Having web Orca with a built in synth is very very cheeky for work computer with no install permissions 🧚‍♂️

6 Likes

Ah yes, you need a bluetooth keyboard if you’re not using the DS emulator.

I’ll be working on the synth a LOT these next couple of days, so expect some big changes daily. The version you have has 4 very basic synths, but I’ll add drumkits and proper sounds soon :slight_smile: At least update Orca now is just a little 10 kilobytes download, as opposed to 100mb.

You can keep up with the list of changes here.

15 Likes

We appreciate all that you do neauoire. These projects you make are wonderful.

14 Likes

I got this running on desktop (Linux) but have totally failed to make the DS version work. Anyone had success? It keeps failing with a Missing Input ROM error. Sure i’ve just put something in the wrong place but I can’t figure it out :confused:

@blueroses Did you put a Uxn rom called boot.rom in the same location as the uxnds emulator on your SD card?

1 Like

no - i figured that’s what is missing but i had no idea where to find a boot.rom (or how to create one?)
pretty sure i’m missing something super obvious
:grimacing:

1 Like

Sure, okay, you need to:

download uxnds
download orca.rom, rename it to boot.rom

Put both of them on your SD card, from your DS launcher, find Uxn and launch it :slight_smile:
That should work, it’s how I am doing it on the R4

– Maybe @Ghost_Cat can help, I know they’ve got Uxn going on their 3DSi

3 Likes

Ooooohhhh you rename an existing .rom, that makes sense! Alright, thanks!!

1 Like

Baby steps… got uxn loading roms on Pi Pico.

Sharp Memory Display stuff and uxn port to pi pico by Andy Alderwick

21 Likes