This is a disassembly of Kirby & The Amazing Mirror (USA).
It builds the following ROM:
- katam.gba
sha1: 274b102b6d940f46861a92b4e65f89a51815c12c
To set up the repository, see INSTALL.md.
You can find us on Discord.
WIP Decompilation of Kirby & The Amazing Mirror (USA)
This is a disassembly of Kirby & The Amazing Mirror (USA).
It builds the following ROM:
sha1: 274b102b6d940f46861a92b4e65f89a51815c12c
To set up the repository, see INSTALL.md.
You can find us on Discord.
From my observation, a lot of <<
operations are performed on (possibly) negative integers which is undefined behavior in C (apparently this also includes s8
and s16
because of integer promotion).
This kind of UB should be eliminated as long as multiplication also matches the vanilla assembly code.
I think struct Kirby
doesn't contain a union. Basically, it has to be a union if ObjectBase::kirby1
is really of type struct Kirby *
, but actually it's likely capable of pointing to different types based on struct ObjectBase
(and, it really makes no sense to make the field a union as it's accessed everywhere).
src/bonus.c:298: obj->base.kirby1 = arg0;
src/object.c:1179: r4->base.kirby1 = r7->base.base.base.parent; // unknown type
src/object.c:1281: r12->base.kirby1 = r4->base.base.base.parent; // unknown type
src/blockin.c:41: arg0->base.kirby1 = sub_0803D368(&arg0->base); // It really returns `struct Kirby *` here.
Fixing the type is easy so I will wait until more code is decompiled to get it more evident.
struct ObjectBase
a substruct of struct Object2
.kirby2
in struct Object2
needs to be changed.sub_0800385C
and functions from gUnk_082D8DA4
are taking either struct ObjectBase *
or struct Kirby *
.
Hey, I'm interested in contributing to this decompilation project. I have been working on decompiling the bronto burt code and am mostly done, but I think having a Discord/other group chat may be helpful to organize.
This was an error on the main branch of agbcc as well, though i believe it was fixed there.
`ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [cc1] Error 1
mv: rename gcc_arm/cc1 to agbcc_arm: No such file or directory`
I'm trying to implement a similar gliding logic in my indie game and I wanted to go to the source code itself to see if I could replicate the algorithm.
I'm lost at all the complicated assembly.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.