[Free Ocarina Of Time Download Code

0 views
Skip to first unread message

Rancul Ratha

unread,
Jun 13, 2024, 6:24:45 AM6/13/24
to woenopocern

"We thought for a time that we may never be able to match every function completely, so this is an incredibly exciting accomplishment," Zelda Reverse Engineering Team (ZRET) member Kenix wrote on the project's Discord server Sunday. "Dozens of people helped work on this project, and together we were able to achieve something amazing."

Free Ocarina Of Time Download Code


DOWNLOAD 🆗 https://t.co/UOlDIROe0D



The final decompiled functions still need to be merged with the ZRET Github repository before the open source project is officially considered 100 percent complete, Kenix wrote. Once that submission is reviewed, though, the team should be able to run its tens of thousands of lines of C code through a compiler (alongside graphics and sound assets derived from a legitimate cartridge) to generate a bit-for-bit copy of the original Ocarina of Time ROM.

That full decompilation is the result of at least 21 months of work by a team of coders that walked me through the painstaking process last year. While automated software tools can help with that work, getting to human-readable C code means parsing each one of the game's more than 15,000 functions by hand, figuring out the purpose of each portion, and cleaning up the code to remove any obfuscation or logic errors introduced in the process.

A similar decompilation project for Super Mario 64, completed in 2019, eventually led to multiple high-resolution PC ports of the game. Such ports will probably come from the Ocarina of Time decompilation as well.

But ZRET member Rozlette told Ars last year that the process of going from C code to a PC build is "not as easy as just [saying] 'compile it for Windows.' There is a lot of code that deals with talking to N64 hardware. The N64 render pipeline is very different than modern OpenGL, for example."

A hidden room from a debug version of Ocarina of Time that helped unlock some reverse-engineering secrets to the game."I do it because of my childhood love for the game," Rozlette told Ars last year about their decompilation work. "It feels like a big puzzle to me where each function is a piece. It's very rewarding to me when I work at an unknown function of code and then realize I recognize what this does in the game, like, 'Hey! This is the function that spawns rupees when you cut grass!'"

While the decompilation effort may have hit "100%," the team still has plenty of work to do, Kenix writes. "We have been working on decompiling the Master Quest Debug version of the game. However, Ocarina of Time has over a dozen other versions, which we plan to also decompile and support in the project."

The decompiled code also still needs additional documentation, reorganization, and variable renaming to make the underlying code easier for others to work with. And work continues on related decompilation projects for Majora's Mask and Minish Cap, which are respectively roughly 24 and 48 percent complete according to ZRET's public tracker.

Still, Sunday's announcement represents a major milestone for hobbyists working tirelessly to unravel and rebuild a game they love. Their success will hopefully serve as inspiration to those working to decompile other N64 games and other titles in a similar fashion.

Since that first entry, the Zelda franchise has spawned dozens of follow-on games, many of which are considered among the all-time best video games. In 1998, Zelda made the big leap into 3D with The Legend of Zelda: Ocarina of Time. It only took me 23 years to finish this one. While I was working on it, a developer community was working to "decompile" the entire game into its source code.

As the name indicates, decompiling is the act of reversing compiling, so we should start with compiling. Compiling is when human-readable code gets transformed into machine code. Human-readable code is what software developers write as they code software. A simple example:

Before creating that output, however, the code must be compiled into machine code. Machine code is what computers actually process as they execute software. While it is possible to write code at the machine-code level, it would be a headache because it is nearly indecipherable to humans. (There are some brilliant people who can code at the machine level, and it is a reasonable guess that they most likely took fewer than three decades to beat old Nintendo games.) Using , here is what the example above looks like in machine code:

(To be precise, the above is "assembly code," which rests one level higher than pure-binary machine code but corresponds completely to machine code.) The above code is clearly less user-friendly, but what is important is that it is much more computer-friendly.

Machine code is often what software companies distribute to end users. Because it is indecipherable, machine code adds a layer of security for those companies: whatever trade secrets lie inside the code remain secret. There is, however, a way to reverse the process and covert machine code back to human-readable source code: decompiling.

Comparing the original to the decompiled version, it is obvious which is easier to decipher. That said, the two blocks of code are logically equivalent. If you compile and run either of them, you will get the same output: that string of numbers.

To put the amount of work necessary to decompile Zelda into perspective, imagine undertaking the arduous task of rewriting the decompiled above code into the original, simple code. Now imagine doing that for an entire video game's source code. That is precisely what the collection of developers have done for Ocarina of Time.

Third, the Digital Millennium Copyright Act (DMCA) includes an "anti-circumvention" provision that prohibits workarounds to extract copyrighted material. 17 U.S.C. Sec. 1201 states that, "No person shall circumvent a technological measure that effectively controls access to a work protected under this title." (Emphasis added.) The phrase "circumvent a technological measure" means "to descramble a scrambled work, to decrypt an encrypted work, or otherwise to avoid, bypass, remove, deactivate, or impair a technological measure, without the authority of the copyright owner[,]" and "a technological measure 'effectively controls access to a work' if the measure, in the ordinary course of its operation, requires the application of information, or a process or a treatment, with the authority of the copyright owner, to gain access to the work." (An example of a violation under this provision would be intentionally cracking digital-rights management restrictions on media, such as songs or movies.) In view of the statute, it is arguable that the developers bypassed two levels of technical measures that Nintendo employed to obfuscate its source code: reverse engineering the original, proprietary compiler, then using it to decompile the machine code.

Fourth, and perhaps in an attempt to avoid copyright issues, at least one group of developers has plans to that includes only the game's logic and controls. This version would not include items such as art design, characters, music and other elements that clearly fall on the "creative" side of the line. (The developers suggest that these creative elements could be extracted from a user's personal ROM backup of the game to reconstruct the original.) This attempt to separate non-copyrightable functional elements from copyrightable creative elements will almost certainly be difficult. For example, players have to solve puzzles to advance in the game. Those puzzles certainly use game logic, but one could argue that they are creative regardless.

Please note that email communications to the firm through this website do not create an attorney-client relationship between you and the firm. Do not send any privileged or confidential information to the firm through this website. Click "accept" below to confirm that you have read and understand this notice.

I saw a Modern Vintage Gamer video yesterday where he talked about a project that was able to reverse engineer the machine code for Zelda Ocarina of Time. They are able to produce a 1 for 1 identical ROM from source code written in C.

I wanted to be able to build this and potentially play around with the game code. Being on NixOS I had to patch some pre-compiled binaries that were in the repository. It looks like they have a precompiled assembler and possibly a C compiler, likely to be able to produce the same binary output each time.

This is self-praise, but I think everyone at Grezzo really did a great job. The staff found it immensely rewarding and the expressions on their faces when they were done told the whole story. I think that is because it was both hard and fun. I feel like the biggest nourishment this time was experiencing that same feeling that the original staff had.

I often tell the staff members that we don't make a game because someone tells us to, rather we look ahead and make preparations. If we didn't have that attitude, we would lose our vision of what we should do further down the line.

We did ask you to take on this challenge because we expected much from you, and were certain of your attitude toward making video games and of each of your individual strengths, but I feel like you gave it something even more.

Thank you. When I struck out on my own with Grezzo, I was extremely interested in the high quality of Nintendo's games. I feel like I got a hint of what lies behind that by working on this game with Miyamoto-san, Aonuma-san, Shimizu-san, Haruhana-san and Takizawa-san.

The overall picture of something only becomes clear when many people look at it. Many at Nintendo adopt that viewpoint. What's more, everyone revises and expands on each other's input and views it from the X axis, so to speak. And I thought it was incredibly interesting how someone like Miyamoto-san adds to that by looking at it from the Y axis.

Yes. When Miyamoto-san was playing the game, he said, "This will make the players happy or not..." That simple statement made a great impression on me. Miyamoto-san has a special strength for seeing things, for changing his standpoint, its height and breadth.

795a8134c1
Reply all
Reply to author
Forward
0 new messages