Bad Apple!! music video on WASM-4

Overview

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 frame of the video. It's a lot of data, so I don't include it in the repository. To get the frames for Bad Apple!!:

mkdir frames
youtube-dl UkgK8eUdpAo
ffmpeg -i '<the file>' frames/%d.png

The music file for Bad Apple!! is included in the repository because it's small, not easily available anywhere, and the music system included here is rather specialized and probably won't work with other MIDI files. Thanks to @analog-hors for implementing it!

Build the cart by running:

cargo --release --features use-elias-gamma

Then run it with:

w4 run target/wasm32-unknown-unknown/release/cart.wasm

You can run cargo with +nightly -Z build-std=core -Z build-std-features=panic_immediate_abort and run the cart through wasm-opt -Oz -c to get a smaller cart, but it doesn't affect addressable memory usage and so won't help if the video is too big.

Customizing

Line 16 of build/main.rs contains a number of constants that can be used to adjust the quality of the resulting video, including frame size, downscale filter, framerate, and the video start frame and length. 4-color video can be encoded by putting four color in the palette and modifying src/lib.rs line 17 to 2 BPP.

If you try to encode a video that is too large, you will get a linker error saying the initial memory is too small. If this happens, you can modify the linker arguments in .cargo/config.toml to increase the available memory. Note however, that if you do this, the cart will require a modified wasm4 emulator.

If the --features use-elias-gamma argument is not present when building, Elias delta coding will be used instead. This saves space with large frame sizes, but Elias gamma coding uses less space with smaller frame sizes.

You might also like...
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

A beautiful and feature-packed Apple Music CLI
A beautiful and feature-packed Apple Music CLI

am A beautiful and feature-packed Apple Music CLI! Written in Rust. Installation Nix (recommended) This GitHub repository contains a flake. Add github

A video player for your terminal that generates a standalone executable that plays your video.

Szmelc Player Szmelc Player is a program that converts any video you give it to a standalone executable that plays the video in the terminal. It uses

CLI for video images. Generates animated video contact sheets fast.

vimg CLI for video images. Generate animated video contact sheets fast. Uses ffmpeg. Note: Support for animated avif isn't everywhere yet, try viewing

This is a lightweight audio-video player built in Rust using FFmpeg libraries. It demonstrates the usage of FFmpeg with Rust to play back video files.

FFmpeg Rust Video Player This is a lightweight audio-video player built in Rust using FFmpeg libraries. It demonstrates the usage of FFmpeg with Rust

Polaris is a music streaming application, designed to let you enjoy your music collection from any computer or mobile device.
Polaris is a music streaming application, designed to let you enjoy your music collection from any computer or mobile device.

Polaris is a music streaming application, designed to let you enjoy your music collection from any computer or mobile device. Polaris works by streami

Rust-crate with functions and helpers for working with music / audio, inspired by computer music languages.

music-math This crate contains common functions and helpers for working with music / audio in Rust. Most of these are inspired by similar functions fo

Wasm video filter booth app written in Rust
Wasm video filter booth app written in Rust

Video effect booth written in Rust and WebAssembly Play with it here: https://mtharrison.github.io/wasmbooth/ Aim I wrote this purely to teach myself

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

WASM runtime for Deku and Michelson-to-WASM compiler

Tuna This repository has two different projects, a plugable VM for running WASM contracts on Deku and a Michelson to WASM compiler which also has some

Distribute a wasm SPA as HTML by wrapping it as a polyglot "html+wasm+zip"

A packer that adds a webpage to WASM module, making it self-hosted! Motivation At the moment, Browsers can not execute WebAssembly as a native single

A Wasm component optimizer (mostly a wrapper around wasm-opt)

component-opt An optimizer for Wasm Components Current Status This project currently only offers one optimization and does not allow it to be configur

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

Owner
Mark Carlson
Mark Carlson
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

Stefano Candori 3 Jan 31, 2023
The first compute-centric vector graphic video game

??️ Vong This repository contains source code for the first native use of a compute-centric vector graphics video game, inspired by Pong. ✍️ Authors @

Spencer C. Imbleau 29 Nov 24, 2023
A webring of people who make cool stuff. technology, music, art, writing, anything goes!

a webring of people who make cool stuff. technology, music, art, writing, anything goes!

Kognise 44 Dec 6, 2022
Diosic is an open source web-based music collection server and streamer

Diosic is an open source web-based music collection server and streamer. Mainly suitable for users who need to deploy on servers with low hardware specifications.

Jinker 45 Jan 28, 2023
This experiment shows connecting wasm-bindgen generated code to a good-web-game application.

GWG + wasm-bindgen example This experiment shows connecting wasm-bindgen generated code to a good-web-game application. It uses simple_logger crate to

Tomasz Sterna 1 May 12, 2021
A minimal boilerplate for Astro / Vite with the Nannou creative framework (Rust → WASM). Supports multiple sketches + hot-reload.

Astro x Nannou Starter astro-nannou-demo-1c.mov ?? Try it online! # 0a. Rust language tools open https://www.rust-lang.org/tools/install # 0b. wasm-p

Julian Cataldo 4 Jan 4, 2023
Operating system based off of blog_os, with the goal of running wasm modules as executables

yavkOS - A OS that attempts at running WASM modules as userspace programs Recommended Development Environment You need nix with the flakes, and nix-co

Yavor Kolev 12 Apr 1, 2023
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
Bad Apple!! for the Uxn stack-machine

bad-apple-uxn Bad Apple!! for the Uxn stack-machine by Hundred Rabbits. Quick start cargo run --release -- --input assets/badapple.mp4 --output badapp

Karol Belina 14 Nov 10, 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