Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/chmod222/zuxn
A Zig implementation of the Uxn and Varvara ecosystem
https://github.com/chmod222/zuxn
uxn uxntal
Last synced: 3 months ago
JSON representation
A Zig implementation of the Uxn and Varvara ecosystem
- Host: GitHub
- URL: https://github.com/chmod222/zuxn
- Owner: chmod222
- License: mpl-2.0
- Created: 2023-07-29T00:38:55.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-05-19T13:19:13.000Z (9 months ago)
- Last Synced: 2024-05-19T14:23:41.415Z (9 months ago)
- Topics: uxn, uxntal
- Language: Zig
- Homepage:
- Size: 216 KB
- Stars: 15
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-uxn - zuxn - A Uxn library, emulator and assembler written in Zig. (Emulators)
README
A mostly complete implementation of most of the components of a complete [Uxntal](https://wiki.xxiivv.com/site/uxntal.html) and [Varvara](https://wiki.xxiivv.com/site/varvara.html) system in a library-first fashion.
`zig build` will compile three binary analogues to the reference implementations of uxnasm, uxncli and uxnemu:
- uxn-asm: The Uxntal assembler
- uxn-cli: Runs Uxn ROMs in a headless fashion
- uxn-sdl: Runs Uxn ROMs with audio and video support in SDLThe tools support different arguments but are pretty basic. (see `--help` for each)
If compiled with `-Denable_jit_assembly`, uxn-cli and uxn-sdl will accept assemble passed .tal files and run the result
directly, much like a bytecode interpreter.All three major components (Uxn core VM, Varvara devices and assembler) are exposed as Zig modules for embedding in other environments. The modules are named as such:
- `uxn-core`
- `uxn-varvara`
- `uxn-asm`The Varvara audio, video and input devices are independant of external systems for audio and video and can be implemented in a way that makes sense for the embedded application. Generic device intercepts for input and output can be defined in addition to or as replacement for any given device.
Until a proper API documentation is available, the three produced binaries shall serve as usage examples.