actavis.dev

I do matching decompilation and reverse engineering, mostly PlayStation 1. The idea is to write C that compiles to the exact bytes the original build produced, which means a lot of MIPS R3000, overlay layouts, and coaxing a 1997 compiler into agreeing with you. Outside of that I'm into consoles, emulation, and tooling that sits close to the hardware.

Decomp progress
Soundtrack
NameLengthType
Contact
Address
Prototype notes

Uploading music

Make an R2 bucket, enable public access, and add a CORS rule allowing GET from https://actavis.dev. Drag your files in, then paste each public URL into SOUNDTRACK at the top of the script. The moment a url is non-null that entry plays the real file instead of the synth — the meter and background pulse are unchanged, because both routes feed the same analyser.

The CORS rule is not optional: without it the browser taints the stream, the analyser reads pure silence, and the visuals sit dead while the audio plays fine. That symptom is almost always CORS.

On the FF7 soundtrack

Worth knowing before you plan around it: the PS1 music is not audio files. It is AKAO sequence data driving the SPU, so there is nothing on the disc to copy — it has to be rendered. And a public bucket serving the commercial soundtrack is straightforward infringement, disc or no disc, with your Cloudflare account as the thing at risk. Music you made, covers you performed, or licensed tracks all drop straight into the same list.

Audio fallback

What you're hearing is synthesised in the browser, not recordings — the analyser needs real signal to react to, and shipping the actual soundtrack isn't something you can host publicly. The file list is the playlist: point SOUNDTRACK at your own rendered audio and everything else keeps working.

Rendering the music

FF7's PS1 music isn't CD audio — it's AKAO sequence data driving the SPU, which is why there are no ready-made files on the disc. You'd render them from your own copy first. Fitting, given the sound driver is part of the decomp.

Decomp progress

Real numbers, hardcoded for now. Any decomp repo running objdiff emits a report.json — have CI publish it and fetch it here instead.

GitHub activity

The contribution graph isn't in the public REST API; it needs the GraphQL contributionsCollection field, which needs a token. Keep the token as a Cloudflare Worker secret and let the page call the Worker, so it never ships to the browser.

· 0:00