Bad Apple!! for the Uxn stack-machine

Overview

bad-apple-uxn

Bad Apple!! for the Uxn stack-machine by Hundred Rabbits.

Youtube video thumbnail

Quick start

cargo run --release -- --input assets/badapple.mp4 --output badapple.tal --rom badapple.rom

or download the badapple.rom file from the releases page.

uxnemu badapple.rom

Specifications

  • Display resolution of 42x32 pixels,
  • 810 frames of video (3.75 frames per second),
  • 1-bit images,
  • Compressed with run-length encoding, 1 byte per run, alternating runs with no markers,
  • 63375 bytes,
  • No audio

Building

This repository contains the project needed to build the .tal file from scratch. If you are interested only in downloading and running the file, check out the Running section.

Make sure you have the most recent release of Rust, as well as FFmpeg libraries installed on your system (check out this guide for more information on how to get them). Run the cargo run command with the --release profile, as well as the path to the input MP4 file and paths to the output files, like so:

cargo run --release -- --input assets/badapple.mp4 --output badapple.tal --rom badapple.rom

This should compile the project and run the whole build process.

You can omit the --rom argument if you want to assemble the ROM from the .tal file yourself. To do that, run

uxnasm badapple.tal badapple.rom

to assemble the ROM with Uxnasm.

Running

Check out the releases page for prebuilt Uxn ROM files.

Before running, make sure you have the Uxn toolchain installed. To run the ROM, run

uxnemu badapple.rom

This should open a window. When you're ready, press any button on your keyboard to start the video.

Tweaking

You can tweak various constants in the ( Tweakables ) section of the resulting .tal file before the assembly.

  • X-OFFSET and Y-OFFSET — define the video offset in screen pixels from the top-left corner of the screen, can be used for centering,
  • FRAGMENT-WIDTH and FRAGMENT-HEIGHT — define the size of the "video pixel", can be used for scaling the video to various screen sizes,
  • VIDEO-WIDTH and VIDEO-HEIGHT — self-explanatory, can be used for making visual glitches,
  • FRAME-TIME — number of Varvara screen frames per each video frame. #0001 means a 60 FPS video (video frame every screen frame), #0010 means a 60 / 16 = 3.75 FPS video (video frame every 16 screen frames),
  • STOP-TIME — frame index after which the rendering terminates.

License

This software is licensed under the MIT license.

See the LICENSE file for more details.

You might also like...
A bad SSH certificate authority

This is a small Rust program to use an asymmetric RSA key from AWS KMS as a single-user SSH certificate authority.

👁️ See through bad bots trying to lie about their user agents
👁️ See through bad bots trying to lie about their user agents

Odd Eye Detect bad bots trying to disguise themselves as humans. Features HTTP2 connection fingerprints TLS signatures Canvas fingerprints How it work

Fls - Ferris-LS, a very bad LS replacement. Besides that, proves that I suck at clean & good code.

FLS A handy ls remake, purely for learning. Why FLS? There's no reason, at all, don't use it. I just want to learn Rust :D Usage Flags: -i = Use icons

Algebraic structures, higher-kinded types and other category theory bad ideas

Algar Algebric structures, higher-kinded types and other category theory bad ideas. Yes, you'll have generalized functors, applicatives, monads, trave

Boxxy puts bad Linux applications in a box with only their files.

boxxy is a tool for boxing up misbehaving Linux applications and forcing them to put their files and directories in the right place, without symlinks!

*slaps roof of [programming language]* this bad boy can fit so much [syntax sugar] into it

An attempt to give myself a new Pareto-optimal choice for quick-and-dirty scripts, particularly when I'm not on a dev computer, and to practice writin

BadDown is a simplistic and bad markup language inspired by Markdown.

BadDown BadDown is a simplistic and bad markup language inspired by Markdown. Features Simplicity: BadDown keeps it simple, with minimal syntax to cre

Virtual Machine Language - Yet another stack-based programming language
Virtual Machine Language - Yet another stack-based programming language

Virtual Machine Language - Yet another stack-based programming language

Dc improved: Feature-added rewrite of a 50+ year old RPN calculator/stack machine/programming language

dcim [WIP] dc improved: Feature-added rewrite of a 50+ year old RPN calculator/stack machine/programming language This readme is currently incomplete.

A stack based, virtual machine language written in Rust

Stackyy A stack based, virtual machine language written in Rust Description: Stackyy is a stack based, virtual machine language inspired by Forth and

SquidVM is a VM made in Rust implementing a Stack-based machine.

What is SquidVM? _____ _ ___ ____ __ / ____| (_) | \ \ / / \/ | | (___ __ _ _ _ _ __| |\ \ / /| \ /

Revolutionary Machine (revm) is a fast Ethereum virtual machine written in rust.

revm - Revolutionary Machine Is Rust Ethereum Virtual Machine with great name that is focused on speed and simplicity.

virtualization-rs provides the API of the Apple Virtualization.framework in Rust language.
virtualization-rs provides the API of the Apple Virtualization.framework in Rust language.

virtualization-rs Rust bindings for Virtualization.framework virtualization-rs provides the API of the Apple Virtualization.framework in Rust language

Punic is a remote caching CLI built for Apple's .xcframework
Punic is a remote caching CLI built for Apple's .xcframework

Punic is a remote caching CLI built for Carthage that exclusively supports Apple's .xcframeworks.

A CLI for extracting libraries from Apple's dyld shared cache file

dyld-shared-cache-extractor As of macOS Big Sur, instead of shipping the system libraries with macOS, Apple ships a generated cache of all built in dy

A VtubeStudio plugin that allows iFacialMocap to stream data to the app, enabling full apple ARkit facial tracking to be used for 2D Vtuber models.

facelink_rs A VtubeStudio plugin that allows iFacialMocap to stream data to the app, enabling full apple ARkit facial tracking to be used for 2D Vtube

🦀️atos for linux by rust - A partial replacement for Apple's atos tool for converting addresses within a binary file to symbols.

atosl-rs 🦀️ atos for linux by rust - A partial replacement for Apple's atos tool for converting addresses within a binary file to symbols. tested on

Print Apple WeatherKit REST API weather conditions and hourly/daily foreacast to the console.
Print Apple WeatherKit REST API weather conditions and hourly/daily foreacast to the console.

weatherkit-rust A Rust CLI program to print current conditions and daily/hourly forecast to the console. Please read authorization.md as you need an A

A lyrics displayer for Apple Music.
A lyrics displayer for Apple Music.

Lyrecs A lyrics displayer for Apple Music Download is not avaliable for now Lyrecs Lyrecs是一款跨平台的Apple Music的桌面动态歌词展示软件。Inspired by LyricsX。WIP for now

Comments
  • working stack underflow when trying to run badapple.rom

    working stack underflow when trying to run badapple.rom

    Downloaded the released badapple.rom v1.0.1. When trying to run this error occurs:

    4.b:~/pro/uxn> uxnemu badapple.rom
    Loaded badapple.rom
    <wst> empty
    <rst> 01 16
    Halted: Working-stack underflow#0023, at 0x0130
    Boot: Failed to start rom.
    Boot: Failed to boot.
    4.b:~/pro/uxn>
    
    bug 
    opened by bicyclesonthemoon 2
Releases(v1.0.2)
Owner
Karol Belina
Karol Belina
virtualization-rs provides the API of the Apple Virtualization.framework in Rust language.

virtualization-rs Rust bindings for Virtualization.framework virtualization-rs provides the API of the Apple Virtualization.framework in Rust language

suzu 44 Dec 31, 2022
State machine engine

orga Deterministic state machine engine written in Rust Orga is a stack for building blockchain applications powered by Tendermint consensus. Status:

Nomic 103 Dec 21, 2022
Minimalistic state machine for Bevy Game Engine.

??️ Moonshine Behavior Minimalistic state machine for Bevy game engine. Overview This crates is designed to provide a simple, stack-based, lightweight

null 3 May 4, 2023
Ruxnasm is an assembler for Uxntal — a programming language for the Uxn stack-machine by Hundred Rabbits

Ruxnasm is an assembler for Uxntal — a programming language for the Uxn stack-machine by Hundred Rabbits. Ruxnasm strives to be an alternative to Uxnasm, featuring more user-friendly error reporting, warnings, and helpful hints, reminiscent of those seen in modern compilers for languages such as Rust or Elm.

Karol Belina 44 Oct 4, 2022
Bad Apple!! music video on WASM-4

w4-bad-apple Bad Apple!! music video on the WASM-4 fantasy console. Building First, you need to create a frames directory containing an image for each

Mark Carlson 7 Jul 2, 2022
Scuffed UEFI video(bad apple) player

Bad UEFI Another day, another Bad Apple project. Video and audio are loaded from \video.uefiv and \audio.uefia respectively. (when running in QEMU esp

Matic Babnik 4 Nov 8, 2022
Easy c̵̰͠r̵̛̠ö̴̪s̶̩̒s̵̭̀-t̶̲͝h̶̯̚r̵̺͐e̷̖̽ḁ̴̍d̶̖̔ ȓ̵͙ė̶͎ḟ̴͙e̸̖͛r̶̖͗ë̶̱́ṉ̵̒ĉ̷̥e̷͚̍ s̷̹͌h̷̲̉a̵̭͋r̷̫̊ḭ̵̊n̷̬͂g̵̦̃ f̶̻̊ơ̵̜ṟ̸̈́ R̵̞̋ù̵̺s̷̖̅ţ̸͗!̸̼͋

Rust S̵̓i̸̓n̵̉ I̴n̴f̶e̸r̵n̷a̴l mutability! Howdy, friendly Rust developer! Ever had a value get m̵̯̅ð̶͊v̴̮̾ê̴̼͘d away right under your nose just when

null 294 Dec 23, 2022
Download Apple's open source code from opensource.apple.com

Apple Open Source Downloader This repository defines a Rust crate and CLI program to automate the downloading of Apple's open source code from https:/

Gregory Szorc 6 Aug 19, 2022
Stack buffer provides alternatives to Buf{Reader,Writer} allocated on the stack instead of the heap.

StackBuf{Reader,Writer} Stack buffer provides alternatives to BufReader and BufWriter allocated on the stack instead of the heap. Its implementation i

Alex Saveau 14 Nov 20, 2022
The most primitive and the fastest implementation of a fixed-size last-in-first-out stack on stack in Rust, for Copy-implementing types

This is the simplest and the fastest (faster than Vec!) implementation of a last-in-first-out stack data structure, on stack, when stack elements are

Yegor Bugayenko 10 Jun 18, 2023