Skip to content

Instantly share code, notes, and snippets.

@quatric
quatric / wii-homebrew-libraries.md
Last active October 18, 2026 17:27
Wii homebrew libraries: libwiiinput, libwiiosk, libwiiupdate

Wii homebrew libraries

Three small libogc libraries for Wii homebrew. They work on their own and also fit together: input from one, text entry from another, and update checks from the third.

Library What it does License
libwiiinput All controllers, USB keyboard and mouse read through one API AGPL-3.0
libwiiosk On-screen keyboard in the style of the Wii system keyboard zlib
libwiiupdate Checks GitHub Releases for a newer version and installs it in place AGPL-3.0
@quatric
quatric / README.md
Last active October 16, 2026 15:07
Mew Mew Power (Tokyo Mew Mew) English undub builder: Japanese Blu-ray picture + 4Kids dub from PAL DVDs, MakeMKV, frame-accurate re-cut, synced fansubs

Mew Mew Power English undub

Puts the 4Kids English dub of Tokyo Mew Mew (Mew Mew Power, 26 episodes) onto the Japanese Blu-ray picture. The Blu-ray video is re-cut to follow the dub's edit. Adapted from the Kirby: Right Back at Ya! undub builder.

file what it does
mew_undub.py builds one episode: Japanese Blu-ray episode + English DVD episode + clean 4Kids opening (+ English fansub)
mew_batch.py goes through the DVD images one title at a time: rips it with MakeMKV, identifies the Japanese episode, builds it, checks it, cleans up

Sources

@quatric
quatric / README.md
Created October 16, 2026 02:05
Kirby: Right Back at Ya! English undub builder (Japanese Blu-ray picture + 4Kids dub audio, frame-accurate re-cut)

Kirby: Right Back at Ya! English undub

Builds an English "undub" of Kirby: Right Back at Ya! by putting the 4Kids English dub audio onto the Japanese Blu-ray picture. The Blu-ray video is re-cut to follow the dub's edit.

file what it does
kirby_undub.py builds one episode from three inputs: the Japanese Blu-ray rip, an existing undub used as the edit reference, and a clean copy of the 4Kids theme
kirby_batch.py runs kirby_undub.py over episodes on an rclone remote: download, build, verify, upload, clean up

Output (one .mkv per episode)

@quatric
quatric / FORECAST-PATCH-GUIDE.md
Created October 1, 2026 15:10
City Folk Forecast Channel weather patch: how it works (porting guide)

How the City Folk Forecast Channel weather patch works — a porting guide

Source: https://github.com/quatric/ACCF-Patch (tools/weather/, especially README.md and ../FCD_PORT_NOTES.md). Addresses are City Folk Deluxe USA (RUUE02), the build it was written against; every other revision is found automatically.

What it does: replaces the town's weather (and the TV's "tomorrow" forecast) with the real Forecast Channel's 7-day forecast for the console's own location. The City (Metropolis) keeps its own weather. Holding B before the title screen turns it off for the session.

This is the biggest of the three patches: it transplants a whole library (the Forecast Channel Data client, "FCD") out of another game's executable and into City Folk. It ships as a patched main.dol or Riivolution XML — not Gecko — because it's ~13 KB of code and has to change OSInit's heap setup.


@quatric
quatric / SDHC-PATCH-GUIDE.md
Created October 1, 2026 15:10
City Folk SDHC patch: how it works (porting guide)

How the City Folk SDHC patch works — a porting guide

Source: https://github.com/quatric/ACCF-Patch (tools/build.py, tools/dist.py, tools/verify.py, README). Addresses are Animal Crossing: City Folk USA Rev 1 (RUUE01v1) unless noted.

The patch is a port of Bero's "SDHC Extension 1.1", by way of the same fix in My Pokémon Ranch. Both games link the same Nintendo/Pervasive PFD SD driver, so the fix transfers almost instruction-for-instruction. This guide explains the problem, the fix, and how to find the same spots in another game that uses PFD.


1. The problem

@quatric
quatric / WII-CONTROLLER-PORTING-GUIDE.md
Last active October 26, 2026 23:56
Wii Controller Patching Guide: GameCube & Classic Controller ports, plus automated Dolphin testing (porting guide)

Wii Controller Patching Guide: GameCube & Classic Controller ports

A practical guide to adding alternative controller support to Wii games that only support the Wii Remote (+ Nunchuk). It covers two complementary approaches plus a testing workflow:

Part Topic
A. §1–10 GameCube controller support, explained through the Barrel Blast patch (SI polling, KPAD hooks, DK Bongos), plus the City Folk port (§8)
B. §11 Classic Controller hacks: finding KPAD symbols in Dolphin, button injectors, IR pointer, tilt, fake shakes, Nunchuk-error removal, left stick as Nunchuk stick
C. §12 Automated testing in Dolphin with no one holding a controller
@quatric
quatric / today-and-tomorrow-channel.md
Last active September 19, 2026 02:46
Wii Today & Tomorrow Channel: how the fortunes work (reverse-engineering notes)

Wii "Today & Tomorrow Channel": how the fortunes work

A daily fortune channel for the Wii (2009). You register up to six Miis with a birth date; it shows today's or tomorrow's fortune in five topics, a lucky colour, compatibility between Miis, and food / fun / care hints. The fortunes are credited to Media Kobo, Inc. (メディア工房): the EU manual says "Predictions provided by Media Kobo, Inc." and the Japanese manual says 占い監修・株式会社メディア工房 ("fortune supervision"). Nintendo published the channel. Everything below was reverse-engineered from the EU, Korean and Japanese builds. No game data is included here. One result was compared against a real console (see Caveats).

| Release | Title ID | Name | Data |

@quatric
quatric / photochannel_re_findings.md
Created September 16, 2026 03:50
Wii Photo Channel 1.1 reverse-engineering notes

Wii Photo Channel 1.1 — Reverse-Engineering Notes

Binary: 00000001.app (main executable), PowerPC Gekko/Broadway, image base 0x80000000, analyzed in Ghidra (port 8193, project barrelblast). Sound archive: rev_photo.brsar (Revolution Sound Archive, examined with strings against its SYMB chunk).

All addresses below are Ghidra addresses in the loaded 00000001.app. Function names are Ghidra auto-names (FUN_8xxxxxxx) — the shipped binary has no debug symbols, so all interpretation of intent is based on decompiled logic and referenced strings, not symbol names.

1. Save file structures: photo_b.dat, photo_i.dat, savedata.dat

String / xref table

@quatric
quatric / authentik_jellyfin_hasher_monkeypatch.py
Created September 6, 2026 23:45
Authentik Jellyfin PBKDF2 SHA512 password hasher monkeypatch
import django
import binascii
import hashlib
import base64
from django.contrib.auth.hashers import PBKDF2PasswordHasher
from django.utils.crypto import pbkdf2
class JellyfinPBKDF2PasswordHasher(PBKDF2PasswordHasher):
algorithm = "jellyfin_pbkdf2_sha512"
digest = hashlib.sha512
@quatric
quatric / digit_font_and_icons.png
Created August 15, 2026 04:28
Bell ExpressVu / Dish DVR (STi5500) 29F400 flash dump datamine
digit_font_and_icons.png