cleanyourtv-app
Clean Your TV를 위한 커뮤니티 제작 모바일 앱
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Nine classic demoscene effects in thirteen languages, from C and Rust to SQL, Perl and x86 assembly, running live in your browser and drawing exactly the same pixels.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗How do you make a plasma in Perl? A tunnel in SQL? A fire in raw WebAssembly?
Nine classic demoscene effects — starfield, tunnel, plasma, rotozoom, metaballs, synthwave grid, fire, Mandelbrot, a logo card — written in thirteen languages and run live, side by side, in your browser. Every pixel is computed on the CPU, and every port draws the same pixels as the C reference, bit for bit. Babel for the languages, "-tro" for the intro.
Live: https://babeltro.storagebits.workers.dev
The point is not which language wins. It is what each one makes you write to produce the same image: float widths, fused multiply-adds, float-to-int conversion, bounds checks, evaluation order, the maths library — and, for some, the absence of a maths library.
| Language | Directory | How it gets into the browser | Effects |
|---|---|---|---|
| Go | go/ | wasm, Go's own backend | 9 |
| TinyGo | ports/tinygo/ | the same Go files, compiled through LLVM | 9 |
| C | ports/c/ | clang + wasi-libc — the reference | 9 |
| C++ | ports/cpp/ | clang + libc++, C++23 | 9 |
| Rust | ports/rust/ | wasm32-unknown-unknown, no dependencies | 9 |
| Zig | ports/zig/ | wasm32-freestanding, comptime tables | 9 |
| AssemblyScript | ports/assemblyscript/ | asc, no imports | 9 |
| Raw WebAssembly | ports/wat/ | written directly in WAT, no compiler; its own sin/atan2/exp, 14.5 KB | 9 |
| x86 assembly | ports/x86/ | NASM machine code on a tiny 386+SSE emulator in wasm | 9 |
| JavaScript | ports/js/ | plain ES modules, Math.fround everywhere | 9 |
| Python | ports/python/ | CPython + NumPy in wasm (Pyodide) | 9 |
| Perl | ports/perl/ | Perl 5.42 in wasm (zeroperl) | 9 |
| SQL | ports/sql/ | SQLite in wasm (sql.js), one query per frame | 9 |
Every effect a port implements is byte-identical to the reference at every size and rung tested. The one exception is by design: the finale spells the language's name, and its layout follows the name's width.
A few things the ports found:
sin. The raw WAT port computes its sine table
with a Cody-Waite reduction and a Taylor series: all 8193 entries match
Go's bit for bit.unpack 'f', pack 'f' after every
float32 operation, a third of its frame time.Each port's NOTES.md says what it does differently, effect by effect.
cd web
npm install
../scripts/build-all.sh # builds every wasm port into web/public/wasm
npm run dev
The ports need their toolchains (LLVM with wasi-libc, Rust, Zig, TinyGo,
AssemblyScript, wabt); the Perl port fetches its interpreter with
ports/perl/fetch.sh. Python, Perl and SQL bring their interpreters as
wasm and need nothing to build.
Keys: Space pause, ←/→ effect, . one frame, R restart, D
differences (ladders), Esc home.
node tools/check.mjs go rust js # every effect against C
node tools/check.mjs --scene 2 --step 1 python # one rung of a ladder
node tools/check.mjs --png /tmp/diff --size 160x90 perl
How it was made: the prompts are in PROMPTS.md and every
decision is in DECISIONS.md. The contract every port
follows, and how to add a language, is spec/ABI.md. What could come next is in
docs/ROADMAP.md. go/ also still builds the original
native demo (a window, a HUD, a worker pool): see go/README.md.
MIT — see LICENSE.