yukiisbored / uxn

MIT License
2 stars 0 forks source link

Uxn

An assembler and emulator for the Uxn stack-machine, written in ANSI C.

Build

Linux/OS X

With Nix

Build the assembler and emulator. The assembler (uxnasm) and emulator (uxnemu) are created in the /result/bin folder.

nix-build
nix build     # If you have Nix flakes enabled, use this instead

If you have Nix flakes enabled, you use uxn without cloning the repository.

nix run 'git+https://git.sr.ht/~rabbits/uxn?ref=main'
nix run 'git+https://git.sr.ht/~rabbits/uxn?ref=main#uxnasm'
nix run 'git+https://git.sr.ht/~rabbits/uxn?ref=main#uxncli'

Without Nix

To build the Uxn emulator, you must install SDL2 for your distro. If you are using a package manager:

sudo pacman -Sy sdl2             # Arch
sudo apt install libsdl2-dev     # Ubuntu
brew install sdl2                # OS X

Build the assembler and emulator by running the build.sh script. The assembler(uxnasm) and emulator(uxnemu) are created in the /bin folder.

./build.sh 
    --debug # Add debug flags to compiler
    --format # Format source code

If you wish to build the emulator without graphics mode:

cc src/uxn.c -DNDEBUG -Os -g0 -s src/uxncli.c -o bin/uxncli

Plan 9

To build the Uxn emulator on 9front, via npe:

mk

If the build fails on 9front because of missing headers or functions, try again after rm -r /sys/include/npe.

Windows

Uxn can be built on Windows with MSYS2. Install by downloading from their website or with Chocolatey with choco install msys2. In the MSYS shell, type:

pacman -S git mingw-w64-x86_64-gcc mingw64/mingw-w64-x86_64-SDL2
export PATH="${PATH}:/mingw64/bin"
git clone https://git.sr.ht/~rabbits/uxn
cd uxn
./build.sh

Universal executables for Linux (experimental)

If you have Nix with flakes enabled on your system, you can use nix bundle to build a single-file executable that will work on any Linux system:

nix bundle 'git+https://git.sr.ht/~rabbits/uxn?ref=main'
nix bundle 'git+https://git.sr.ht/~rabbits/uxn?ref=main#uxnasm'
nix bundle 'git+https://git.sr.ht/~rabbits/uxn?ref=main#uxncli'

Getting Started

Emulator

To launch a .rom in the emulator, point the emulator to the target rom file:

bin/uxnemu bin/piano.rom

You can also use the emulator without graphics by using uxncli. You can find additional roms here, you can find prebuilt rom files here.

Assembler

The following command will create an Uxn-compatible rom from an uxntal file. Point the assembler to a .tal file, followed by and the rom name:

bin/uxnasm projects/examples/demos/life.tal bin/life.rom

I/O

You can send events from Uxn to another application, or another instance of uxn, with the Unix pipe. For a companion application that translates notes data into midi, see the shim.

uxnemu orca.rom | shim

Emulator Controls

Need a hand?

Find us in #uxn, on irc.esper.net