Sign in

vabold

@vabold.bsky.social
32 followers 5 following 72 posts

Kinoko developer. github.com/vabold/Kinoko

PostsRepliesMedia
vabold @vabold.bsky.social · 14/10/2026
We're starting to see websites dedicated to making counterfeit forks. I'm not even going to link this. All this does is encourage decompilation maintainers to go private with development, so as to keep high quality code unstolen while it's being worked on.
150 0
vabold @vabold.bsky.social · 14/10/2026
A couple threads back, I talked about how LLMs drift the decompilation process away from reverse engineering. The job of the LLM is to bytematch at all costs. Solutions that would be dismissed under normal circumstances are now being presented by people who don't know any better.
170 0
vabold @vabold.bsky.social · 02/10/2026
For anybody looking for a summary of this 28-post thread:
0222 0
vabold @vabold.bsky.social · 02/10/2026
That isn't to say this is completely useless for reverse engineering. It found this to mean shutdown, and after cross-referencing Wii Shop Channel for clues, I found this was a function I had labeled a while ago called CNTShutdown.
100 0
vabold @vabold.bsky.social · 02/10/2026
Here, we see some misunderstanding of the HBM. Despite these function names all revolving around a "result", two of them correspond to a bitflag and one of them corresponds to a completely separate member. This switch statement is also meant to be of the return type of HBMCalc, an enum for buttons.
100 0
vabold @vabold.bsky.social · 02/10/2026
It's also misusing the term "configure", having pulled it from the vocabulary seen in the linker map, but not fully understanding its context. In the original library, this is meant to change the static pointer that the system classes have to the configuration data. We're seeing it bastardized here.
110 0
vabold @vabold.bsky.social · 02/10/2026
Going back to Astra's work, we see instantiation of this supposed System class that more strikingly resembles EGG::TSystem<>::Configuration. This assuredly is not templated, but this is the job the configuration has, not the system.
100 0
vabold @vabold.bsky.social · 02/10/2026
Takeaway 2/2: Astra is good at decompiling. Honestly. It's actually better than many humans I've seen who work on these kinds of games and fall into the trap of avoiding the omnipresent OOP we know exists. Astra's problems lie instead with the reverse engineering side.
110 0
vabold @vabold.bsky.social · 02/10/2026
Wii Speak weirdness aside, takeaway 1/2 came from the ColorFader constructor in attached image 1. For context, here's all the information we can glean from the constructor in attached image 2. The TBitFlag<u8> instantiation is missing! This solidified it was copying Wii Sports directly.
100 0
vabold @vabold.bsky.social · 02/10/2026
Let's talk about the EGG system. Because EGG overrides operator new to use their heaps, the system has to initialize the heaps first before anything can happen. This is done by making a static configuration and calling a function called initMemory. Here's roughly what it looks like in MKW:
100 0
vabold @vabold.bsky.social · 02/10/2026
These are, as far as I can tell, new functions that don't exist in any other program that uses this library. invokeAllocCallback is an easy to understand change, but the root heap creation functions are very strange. The arena heaps are not instantiated like this.
100 0
vabold @vabold.bsky.social · 02/10/2026
If we look at the callers, we will eventually stumble upon a function with two more consecutive rlwinm instructions. It will call into it with notable constants 0x38 and 0x3c. This is EGG::ExpHeap::create, and all EGG projects will have this.
100 0
vabold @vabold.bsky.social · 02/10/2026
I'll be using the The Legend of Zelda: Skyward Sword Save Data Update Channel as reference because it has this library and I don't think anyone has ever cared to document it. Eventually, you will find this. The 0x45585048 means 'EXPH' in ASCII. This is an SDK function called MEMCreateExpHeapEx.
101 0
vabold @vabold.bsky.social · 31/12/2024
010 0
vabold @vabold.bsky.social · 30/12/2024
The final boss of Luigi Circuit on Kinoko.
A player taking a normal turn on Luigi Circuit, with the name "Peter Grif".
010 0
vabold @vabold.bsky.social · 14/12/2024
Developer here, I clone GitHub repositories the way Linus intended.
The GitHub Desktop UX for cloning GitHub repositories.
010 0
vabold @vabold.bsky.social · 25/11/2024
Apple, what are you doing?
On Mac, Apple will lie and alias one compiler to another, regardless if that other compiler is installed. This image is a demonstration of that happening.
140 0
vabold @vabold.bsky.social · 22/11/2024
020 0
vabold @vabold.bsky.social · 17/10/2024
Neat trick - RaceConfig's instance is never destroyed, so we don't have to concern ourselves with offsetting from thisptr on memory free. This lets us update thisptr so the ghost buffers are 32-byte aligned, so we can call the Wii SDK function to read from the NAND directly into the ghost buffer.
1101 0