Ocarina of Time decompilation is nearly finished.

ShadowOne333

QVID PRO QVO
Editorial Team
Joined
Jan 17, 2013
Messages
12,190
Trophies
2
XP
33,741
Country
Mexico
Does this open up the engine to extensive modding?
Indeed, it does. Imagine SM64 PC but with OoT.

Basically we will be able to have way better 3D models for everything in-game (including NPCs), HD textures, probably more redesigned levels so they don't look as flat, 3D models of better textures for things like tree leaves, RTX lighting and effects, Quality of Life improvements like in Ocarina of Time Redux (boots & ocarina mapped to D-Pad, uncensored assets, etc.), proper Widescreen support with the HUD on the edges of the screen (like a proper remaster would), HD prerrendered backgrounds (or even better, fully remade 3D rooms for those like in OoT 3D), and other changed made into the 3DS version that could be implemented too.

This will make it the ultimate version of OoT to date, not even Nintendo would be able to beat it at that point.
 

godreborn

Welcome to the Machine
Member
Joined
Oct 10, 2009
Messages
38,471
Trophies
3
XP
29,138
Country
United States
this is a damn fine game. it's one of the few games I beat on the 3ds. I had already beaten it on the n64 many years before by borrowing the system and game from a friend, think it was @Glyptofane on here iirc, since we've been friends for like 30 years. I plan to go through skyward sword soon, I know a lot of people don't like the game, but I loved the motion controls on the wii. I plan to go through the switch version with its joy-cons. I'm just afraid the joy-cons will be too small to use properly. I liked the size of the wiimote and nunchaku, but I find the joy-cons to be too small. I hope I don't have any problems. :-/
 

Kwyjor

Well-Known Member
Member
Joined
May 23, 2018
Messages
4,323
Trophies
1
XP
4,454
Country
Canada
im so lost
N64 games were generally written in the C programming language and subsequently compiled into the N64 machine language, which is what you find in the ROM. The various tools that were used for compiling are very well-understood, which is why people have been able to come up with precisely-equivalent C programs that can be used to generate the same ROM.

Programs for other consoles are much simpler. You can easily run any ROM through a "disassembler" and thereby get a "disassembly", which is just the machine language in a slightly more readable form. But the result is still extremely difficult to work with: there are no labels or variable names or anything else that indicates what each part of the code is supposed to do. Through extensive research and trial-and-error it is possible to work through the code and get an "annotated dissasembly", like https://github.com/pret/pokered .

So the thing is, it's not clear how something like Minish Cap was written or what tools were used to make it. The programmers might have written a lot of the game in raw machine language, though that seems rather unlikely. They might even have written it in C and used a compiler to produce the GBA machine language, but that also seems unlikely.
 

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,321
Country
United Kingdom
So the thing is, it's not clear how something like Minish Cap was written or what tools were used to make it. The programmers might have written a lot of the game in raw machine language, though that seems rather unlikely. They might even have written it in C and used a compiler to produce the GBA machine language, but that also seems unlikely.

C programming was a thing on the GBA, though extensive inline assembly could be expected for anything whether it was a cash in on a film or a flagship title we all still debate the merits of to this day (though obviously you would expect more on something like Payback that pushed the limits of the hardware vs the latest Disney channel TV show cash in platformer). I don't know if the commercial compilers were leaked as part of the gigaleak, though you can find various tools and aspects of the dev kit from... actually before the GBA's release (see the story of the first emulators there).

Afraid I have not kept up at all with ARM decompilation efforts here, or indeed if things have gone general. That said IDA has some stuff here so I guess.
https://hex-rays.com/decompiler/

As far as detecting what language something was written in then it is usually not so hard. Even fancy modern compilers will still do things coders won't, and the GBA commercial efforts were not exactly fancy modern compilers that benefited from the last however many decades at this point of compiler theory pondering.

Those interested in decompilation as a practical* action I did cover it a bit in https://gbatemp.net/threads/can-i-aka-you-as-i-cant-wont-code-port-this-game-to-this-device.576997/
*those wanting theory then... yeah it is still cutting edge research, you probably want to start with the halting problem (this sort of thing literally being in opposition to that), then maybe a dalliance with reversible computing and then how compilers work, "everything is adding" if you did not already know that one too probably wanting to be in there as a base mindset. The short version is while theoretically (and practically) information is lost in compilation that can't be regenerated automatically then between side channel leaks (see Diablo source code recreation), though not all efforts will have this), compilers being fairly simple programs at their heart and game programmers tending to do optimised code (can't be wasting resources when you have pixels to push) then someone doing some cheats to figure out a few memory variables**, knowing the hardware locations and formats, probably being a talented relevant version of C and relevant assembly coder, can build up enough info and make enough educated guesses that... well Mario 64 decompilation literally compiles into the same game bit for bit that Nintendo released decades before (getting to a "for 99% of intents and purposes it is the same" being a bit easier still but people do seem to like that 1:1 line).

**know what health is and you now know functions that care about it, and probably in turn what the functions that don't care about it are more likely to be part of. Repeat for various things, maybe do some traditional debugging (move the camera and this section of assembly code that is linked to these lines of decompiled code runs) and you can make progress and learn things, including things that might now be known (there was a hidden cheat menu discovered a while back when some unknown code was looked at as part of a decompilation).
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Sicklyboy @ Sicklyboy: For example, one of my other favorite songs from them, with some massive house music influence - +1