I bet oot can be put through almost the same optimizations i put mario 64 through. just looking at it, it looks like it should easily run 40fps rather than 20.
That's just running on actual console too, yeah? Because I imagine newer platform ports will have 60fps patches but I'd be super interested in seeing it running smoother on console like your SM64 stuff :)
8:50 Playing around like this is a great way to learn how games are constructed and how to do things yourself if you're learning to build games and such. How a lot of people got started in the earlier days, too :)
Reminds me of how most of the A Hat in Time dev team came from the modding scene of mostly Valve games. The lead dev got started by messing around with L4D I think.
This is how I got started building my own custom 3D engine on my UA-cam channel. I looked at how other games built their engines and then made my own version based on what I learned.
@@venumspyder That sounds very interesting, I shall go watch some of your stuff, I see you've done an endless runner? Seems to be a staple haha, I recently did one for Megadrive whilst getting to grips with coding for Megadrive with SGDK so I could do it in C. You've earned a sub!
@@nicwilson89 Many thanks! Yes many people got their start in the game industry by looking through source code of finished games. And we now live in a "golden" era for this as there are tons of games out there with source code that you can look at. I'll check out your channel as well!
@Fat Chocobo Yeah. Will be a tough ask off the PS1 or Saturn without RAM expansion due to the cartridge format's advantage of fast data access. Plus the N64's processor was just under 100MHz which was a big deal back then. Never mind the different architectures re graphical abilities - didn't the Saturn use quads instead of triangles? I don't see the attraction of running it on a console anyhow - seeing it running on a high end PC with brand new remastered graphical assets would be wonderful.
@@davy_K The Saturn's "quads" are literally all sprites - hence being quads, as sprites are quadrilateral. You can render a tri by just making one side of the spite have zero length.
@@BenignStatue71 Yeah you can....but it looks like shit when you do that. There are a few online articles about PS1->Saturn ports that did just that. It's a moot point anyway since OoT was a cartridge game which would be extremely hard to implement on the PS1 and Saturn simply because of delay is shifting data from a disc. I'm sure an emulated PS1 or Saturn could make a job of it provided it was overclocked and removed any read delays- but what would be the point? It's always nice to see just how far stock consoles can be pushed with modern tricks today..I suspect OoT would be a step too far. M64 and OoT were probably why N64 was cartridge based.
@@davy_K Nintendo selected cartridges because it wasn't something you could have just any factory manufacture, unlike a CD - you needed to have each individual cartridge produced by Nintendo or you couldn't release the game. Nintendo gets both an up front manufacturing cost *and* individual sale royalties. Read speed and access times were a side effect of cartridges that provided at least some argument to developers; they were otherwise just an extremely costly medium between the consumer who owned an N64 and their game. The fact that the N64 DD still used a proprietary format makes Nintendo's greed pretty evident - for the same capacity as Resident Evil 2, you could get a diskette that might have been cheaper to produce, but still only Nintendo could manufacture. It doesn't matter if the actual price of manufacturing each cartridge goes down, only Nintendo will make it and they can set the price at whatever they want.
@@BenignStatue71 Well. I only partially agree with that. Certainly their publishing and licencing model suited the cartridge format which is what they loved as it made a shed load of money, pushed a lot of risk onto 3rd parties and let them control the release schedule. However , as I guess you know, the CD drive debacle with Sony and Philips is proof that Nintendo experimented with the format. Miyomoto hated loadtimes and Mario 64 and Zelda : OoT would have been, to his mind, (or to anyone else who has really compared the games available across the 3 platforms) heavily compromised by the limitations of the CD media's access speed. If any further proof is needed - no game on PS1 and Saturn came near to those games in terms of 3D world building and the rich control scheme required for accurately navigating them in a go-anywhere fashion. The transitions between levels in M64 and the open areas and dungeon load and transitions of OoT are testament to it. They simply were not possible on those machines, otherwise we would have seen something attempting to recreate them. The best they could do was create environments made of corridors that gave a limited (albeit clever) illusion of 3D, but very little else.
Simply awesome. Imagine telling yourself in the 90s that one day anyone would be able to mess around with OOT's source code and compile it themselves in minutes. What a time to be alive.
@@jamess1787 Yeah there is. Nintendo owns the IP. You could go make a your own legend of zelda game from scratch and there would still be grounds to sue. Nintendo tends to be pretty letigious and they would absolutely win that case
I love these videos where you show it all working (i.e Showing the decompiling and the code actually working), whilst still explaining the scope of the project of topic. It gives such a deep understanding of what's happening. Thanks MVG!
Imagine this game playing on 4K on modern consoles. I'd love to see if the Saturn could run this with its own interesting architecture and at a resolution of 704x480 (NTSC) or 704×512 (PAL). Or what about widescreen 16:9 support! The community is going to go wild with this.
@@bWWd0 Mario 64 looks gorgeous on 4K. And with all the texture and high-res models modders have worked on over the years, I'm sure there will be something amazing that comes out of this. Go check out Nerrel's channel and the amazing work he's done for Zelda.
You clearly haven't been following what has happened to Mario 64, after it was decompile. Recently someone has updated all the 3d models, uprezed the textures and introduced raytracing. This is very big deal!
Wouldn't the Saturn have to have all the models remodeled due to its sprite/quad rendering system? Plus it's really weak compared to the N64, it'd be quite the challenge
There are similar reverse engineering projects for other games out there too. For instance, the Pokémon Reverse Engineering Team (pret) has completed projects to recreate the source code of Pokémon Red/Blue (pokered), Yellow (pokeyellow), Gold/Silver (pokegold), Crystal (pokecrystal), Ruby/Sapphire (pokeruby), FireRed/LeafGreen (pokefirered), and Emerald (pokeemerald). If you’ve been wondering why Pokemon romhacks have been getting more sophisticated over the past few years, this is why!
I was eagerly awaiting your video about this decompilation, hopefully now we can have the game running at 60FPS without the glitches that the original N64 rom has with codes...
Hey man, thanks for all your videos. I am an old school nerd and borderline programmer. But I work as a chef for a living your videos just sit on a great line where I understand everything but learn a helluva lot! I have a beer when I get home from work and it really makes my day when you have a new video out because I will learn something new. Thanks very much.
Much less than you'd hope. The most useful kind of code reuse is the kind where objects are absolutely identical between games, of which very very few actually are. You can make educated guesses when "some" code is re-used, but figuring out which pieces are the same and which aren't is a process that's not much easier than decompiling from scratch to begin with.
@@StardustSauce Bummer. I was hoping it could speed up the majora's mask project because it's my favorite Zelda game and I'm impatient 😅. Oh well. Guess I'll just have to wait then.
As someone who's been following OoT speedrunners like ZFG for almost a decade, this is the best thing I've heard. The potential for romhacks and speedrun optimizations is going to be insane. Plus the fact that they can optimize the Switch version and make it fully playable is great for casual players. Hell I'd love to play randomizer on console too. Thank you for this video MVG.
Unfortunately it could also open the door for undetectable cheating. Video submission wont be enough. Proof of checksum or a replay file would have to be required also.
@@pearz420 then you're not really part of the dedicated fan communities of any old game. Speed running is a core staple of old games and the competetive ss both brings excitment and entertainment for onlookers. However speed running some games sucks balls because Nintendo don't often allow skipping of cuts enes, tutorials and dialogue. Modding the game to skip these unnecessary parts of the run makes it both more fun to compete (as you have to restart often) but also more fun for people to watch. It is the most basic mod but probably one of the most important ones.
I'm glad you actually messed with the source in the video. I've been wondering how stuff like this is done as I just started learning C in uni. Would love to see a vid on porting games
@@Sakerdot nice I haven't seen that one. Hopefully it explains roughly how its done as I've got a modabble switch and would love to make some shitty homebrew for it
This is awesome! I could see this going many ways, from mods and aftermarket / higher resolution textures, to even using the code as a template to create a new game. Exciting stuff!
I'm looking forward to see what can be done with OOT. Any framerate improvements that can be done like what Kaze done with SM64. Even those improvements work on actual hardware so I'm ready to see what mods can be done.
I've been involved in a similar project for Final Fantasy VII (PC 1998). It's legal as long as two things are observed: 1) don't use that code for any commercial project (anything you make a profit off of) 2) don't use any of the original assets in the packaged game. I can make new models, textures, SFX, music, etc. to represent the original content, but I can't use anything on the discs it came with. Utilizing these restrictions you can recreate the game for use in any OS and even optimize performance and fix bugs.
I would absolutely love it if they added compatibility with Henriko's HD textures pack for the 3DS version, it is in my opinion the ideal texture pack for this game.
3 роки тому+6
I can only imagine the 2D backgrounds becoming 3D models and HD textures, as well as importing the 3DS remaster models, with modern controller support (to make free camera movement on temples and open fields) with support to Widescreen and 60FPS. Maybe even Raytracing... one can dream.
as a software engineer at a fortune, erm, 9, company I know how insanely hard it can be to RE a simple 'hello world' program, let alone an entire game like oot. insane feat, I'm proud of yall
Surprised that decompilation without a written spec and a second clean team is considered beyond legal challenge, I figured that the decompilation process made a derivative work. In any case, this is impressive work, to get a bit for bit compatible result. You can learn a ton from stuff like this. (Once you've used a decompiler like Ghidra, you'll never want to reverse with just a disassembler again: decompilation tech is pretty remarkable.)
Opinions differ. Some think these decompilations count as derivative works, and Take Two is suing a similar decompilation project for GTA III and VC. There's no settled case law yet though, so at the moment it's just differing opinions.
In most places outside of the US, this is definitely derivative work because it involves large amount of own contribution. US on the other hand turns everything upside down.
If this can be used to create a bit-perfect copy of the original executable, without a copy of the original executable, I can't see how this could possibly be legal. Distributing converted asserts, say the music to FLAC, and then provide a way to recompress/convert it to the original files certainly wouldn't fly and I don't see the difference here.
It is not clean room, since this project is still based on the original game code (it doesn't matter if it was rewritten in C). The fact that Nintendo didn't take these projects down is quite surprising, since they absolutely have legal right to do that.
> Surprised that decompilation without a written spec and a second clean team is considered beyond legal challenge It's not, people are saying this because they want it to be true and their understanding of copyright law is colored by that. You're absolutely right that it is a derivative work. The definition of "derivative work" under US law is very expansive: "a work based upon one or more preexisting works, such as a translation, [...] or any other form in which a work may be recast, transformed, or adapted." Binaries (object code) are protected because they are themselves derivative works of the source code. It's possible there is a fair use exemption here for educational and commentary purposes, but as with any other fair use claim, it is something that can only be definitively evaluated in court.
I couldn't believe my eyes looked at the resource sheet a few days ago. I remember when it was just getting started, felt like a project that would never reach a conclusion. Can't wait to see what comes of it!
Im so proud how much Kaze Emanuar did for the SM64 hacking community. _Hope you will do somthing like that to Zelda OoT community too Kaze!_ This decomp project is the first step to make it much, much easier.
They think emulation contradicts with their business model, that's horrendous. What's even worse is not just them jacking up the price of the old games but also offering worse experience - emulators made by community handle the execution of such games better than corporation-made emu's. The big N is guilty of that, in particular.
Hopefully people will get tired of Nintendo's BS and stop buying their old catalog en masse and go for community efforts instead, then Nintendo will have to either adapt to the times or, I don't know, attempt to change the law to their favor and the detriment of the homebrew scene like they already did in Japan.
Yeah Perfect Dark was the one N64 game that gave me motion sickness. Probably the only non-VR game that ever did for that matter. The framerate on multiplayer is brutal, and when you get slapped and the screen gets all blurry... ugh
At least with Perfect Dark it's already possible to use 1964 to play it at 60fps with mouse & keyboard support. A full-on PC port would always preferable though yeah.
@@joereno955 to be honest, I actually like the blur effect you get when slapped or hit by an N - Bomb, it's pretty legit 😆 When I was studying for my driver's license, they showed us what drunk drivers see when behind the wheel, and it looked very much like that, very disorienting, so the effect is actually quite realistic, hahah.
I’m so excited about this…OoT is my favorite game of all time and now it will run on my x64 PC natively. Very cool how they did it as well. I’ve always been curious about how they programmed these classic n64 titles in general, and now I will finally get to see how it all works under the hood. Thanks for the update MVG, big fan of yours!
satire or not, still misinformation. no x64 native pc port, the code compiles to a n64 rom to be used in emulators and requires the rom itself to extract assets.
@@elnkr2603 Not necessarily, there are actually a lot of romhacks that require the debug rom. It's pretty much the same thing anyway, you could always lock out the debug stuff if you knew what you were doing, too.
The youtube video, "Super Mario 64 RT: Full ray tracing" by Digital Foundry does a decent job showing off the potential here. Can't wait to see recompiled Ray Tracing done with OOT
I wonder if ocarina of time has that frame rate issue that was solved with a couple of command lines like super Mario 64, since both use the same engine
the same engine thing is also not really true. oot may have started as a fork of sm64 in the very beginning, but with both games decompiled its pretty clear that the code is not very similar at all. audio is the closes thing and that was probably somewhat of an external library already
Now it's time to decompile Perfect Dark and see if it can possibly be optimized any further. I doubt it since OG Rare were absolute fucking chads at development and pushed that system to its absolute limit.
I'm far more interested in this one than Mario 64. And it's so ridiculous that Nintendo won't do simple 60fps versions of these games. Modders and hackers to the rescue again!
I'm not defending Nintendo here, but iirc, for them, it's not a simple "increase the emulated framerate." It's never been that easy for anyone. The framerate is tied directly to the day/night cycle. So you increase fps from 20 to 60, and you have 3x faster day/night cycle. However with this source code, that can be done.
@@gutter_onion7855 Nintendo has the source code. They just don't want to go through the trouble. Although, JUST patches/hacks have managed to do crazy things. Mario Sunshine and 64 can both run at 60fps in an emulator. Heck, even Breath of the Wild can. That's with little to no problems.
This was my first Zelda game, the one I put the most hours on, owned on every possible platform and when someone says the word "Zelda" my mind goes back to Link running around Kokiri forest or standing in the temple of time. Licking my lips thinking about the PC version with new models, lighting, widescren, framerate and ports to other platforms, they ported Mario 64 to DSi and DOS, PS2, Gamecube, PSP, 3DS
I'd want an .exe version of Ocarina of time, just like someone did with Mario 64. It became my favorite version of the game for Mario, and I think it could be the best Ocarina of time version too.
"Hey listen! Ocarina of Time on the Nintendo Switch through the N64 Expansion Pak. It's rea-... What's that?" "Hmm? This? Oh it's just OOT in widescreen, new camera controls, new lighting effects, raytracing and mods on my Steam Deck" "THATS ILLEGAL IM TELLING MIYAMOTO"
Digging the SH2 shirt! I might actually mess around with the code, it's the first time I've seen someone lay out how to do something like this so easily instead of just saying "just build the file bro" so thanks for the succinct tutorial :)
I think it's amazing that another game is getting the "sm64 decomp" treatment. I'm not really a Zelda fan, but I think it's great that more old N64 games are getting decompiled, and likely will get a PC port and graphical improvement mods.
My dream game to have decomped is Star Fox 64. Having a native port of that would be incredible and I feel like I'd actually want to delve into that code quite a bit. One step at a time though.
Thanks for explaining why they went with a z64 ROM of Master Quest, that part confused me. I am actually not a huge fan of OoT but given what is possible with Mario 64 also, I'd love to see a 16:9 60fps version with HQ models and potentially a dedicated VR version either for SteamVR or the Quest/2.
Incredible, never thought I'd see the day but, here it is, I can compile an original build of a N64 ROM on my own machine. Can't wait to see what comes out of this.
This project is NOT cleanroom. If you view commit 6136ee6debd570a63fc695a6f4664553303f2324, and navigate to include/PR, you will find SDK header files from a leak some years back. While the work they have done is really impressive, it cannot be called cleanroom. All of the other N64 decompilation projects use these headers too, unfortunately.
@@ANJK-eu7xf I know, right? I wonder why they didn’t have a function compute line breaks at runtime. Aside from the manual route being tedious, I’d also imagine it’d take up way more memory compared to a function, and I’d also imagine memory was really limited back in the N64 times
@Lukas von das Eis Just crazy to see compared to today when all software/games are built to be ongoing services. Probably made it both very freeing and very confusing when every aspect of our code didn’t need to be these well-defined, reusable components
you are one of the best youtuber in terms of teaching their viewers how to do things. there was a video about game boy coding in C in your channel that is a good resource too!
one thing this should be brilliant for is making a well balanced hard mode - such as making the monsters take more hits, move faster, etc. This game is so good, it would be really fun to reexperience but with a harder twist.
Thank you for bringing this project to light. I am super excited to see what people can do with the code. Would love to see it optimized and running at 60fps.
Before opening the video I was like "I can't wait to see how many times MVG will pronounce Ocarina as Ocaryner". I was not disappointed. 😄 I'm curious to see how many glitches and in-game exploits will still work with this version and how many of them will be "patched" as a side effect.
If they do the version the speedrunning glitches are done on like they did this one, with matching hashes, then it *should* behave exactly the same. The only reason it wouldn't is if some weird hardware bug was causing any of those, which I don't think should be the case.
If I remember right, the debug version is very similar to the GameCube version? Just running on an N64 instead of a GameCube. So whatever glitches are present in that will be present here. Someone could theoretically fix them, but OoT glitches are usually things that need to be triggered on purpose so it's hard to imagine anyone actually doing it.
I think those reverse engineering projects are the best way to bring old games to modern hardware and be independent from emulators. I know not every game can get such treatment and a bad or good remaster. For some old games if a publisher or dev would release the source code its still possible to sell the assets and have maybe an active community which maintains the underlying code. They could even sell an optional High Res DLC which requires the fan port.
I've always been fascinated with decompilation and reverse engineering projects in older video games, I hope to see PC ports of the original PS1 Spyro games one day.
I've been waiting for this game to finish with the decomp project for ports to other systems. It will be cool to see what glitches stay in the ports too. I'm guessing classic ones like RBA, WW, and whatnot will work, but GIM, SRM, deku stick as adult, etc would be interesting to see the results with. I'm certainly excited to see where this goes though.
Seeing as there are just under 400 N64 games, I would find it interesting if we eventually decompiled and ported all of them before emulation got to a perfect state.
The first time I touched this game , the feels we’re magical , the entrance of the game when the player starts at the tree house and the ambient of the kokiri village.
This kind of work is so important for game preservation. The copyright holders have an unfair amount of power to dictate the manner in which legacy content is available, if at all, and these kinds of projects ensure we don't have to put up with anti consumer practices and vault-keeping. Now let's decompile DK64 so we can access the Tag Barrel from the start menu
Copyright and DMCA laws need to be revised to include games as historical media. The US government already has books, music, and films in archives after a certain age. Video games are nearing that age
"Now you can compile your own Ocarina of Time game!" "Wow! Where do I start?" "First, you're going to need your own Ocarina of Time game!" (It's a joke)
I bet oot can be put through almost the same optimizations i put mario 64 through. just looking at it, it looks like it should easily run 40fps rather than 20.
That's just running on actual console too, yeah? Because I imagine newer platform ports will have 60fps patches but I'd be super interested in seeing it running smoother on console like your SM64 stuff :)
@@beardalaxy he is ofcourse speaking about the n64 i would be scary to think it could only run at 40fps on pc
I feel like 30 FPS should be achievable on N64, but I doubt that 40 FPS would be consistent
That SM64 port on the PC was awesome.
Kaze just casually flexing in the comments
Imagine a version where the option to make the owl repeat all his history is set to “no” by default
This is the improved version we all so desperately need
@@XDevonBueno why not go a step beyond, saying no replays the deku tree goddess lesson
Skip Cutscenes, Even Faster Texts, Epona becomes a motorcycle, only good can come from this
@Jose you're all thinking backwards, why not set the owl to replay his dialogue several times?
@@mauricenr2969 Zelda Ocarina of Time - Omochao version. Or rather, Kaepora Gaebora version.
8:50 Playing around like this is a great way to learn how games are constructed and how to do things yourself if you're learning to build games and such. How a lot of people got started in the earlier days, too :)
Reminds me of how most of the A Hat in Time dev team came from the modding scene of mostly Valve games. The lead dev got started by messing around with L4D I think.
This is how I got started building my own custom 3D engine on my UA-cam channel. I looked at how other games built their engines and then made my own version based on what I learned.
@@venumspyder That sounds very interesting, I shall go watch some of your stuff, I see you've done an endless runner? Seems to be a staple haha, I recently did one for Megadrive whilst getting to grips with coding for Megadrive with SGDK so I could do it in C. You've earned a sub!
@@nicwilson89 Many thanks! Yes many people got their start in the game industry by looking through source code of finished games. And we now live in a "golden" era for this as there are tons of games out there with source code that you can look at. I'll check out your channel as well!
Now we need somebody to do the unthinkable and port this to the Sega Saturn
@Fat Chocobo Yeah. Will be a tough ask off the PS1 or Saturn without RAM expansion due to the cartridge format's advantage of fast data access. Plus the N64's processor was just under 100MHz which was a big deal back then. Never mind the different architectures re graphical abilities - didn't the Saturn use quads instead of triangles? I don't see the attraction of running it on a console anyhow - seeing it running on a high end PC with brand new remastered graphical assets would be wonderful.
@@davy_K The Saturn's "quads" are literally all sprites - hence being quads, as sprites are quadrilateral. You can render a tri by just making one side of the spite have zero length.
@@BenignStatue71 Yeah you can....but it looks like shit when you do that. There are a few online articles about PS1->Saturn ports that did just that. It's a moot point anyway since OoT was a cartridge game which would be extremely hard to implement on the PS1 and Saturn simply because of delay is shifting data from a disc. I'm sure an emulated PS1 or Saturn could make a job of it provided it was overclocked and removed any read delays- but what would be the point? It's always nice to see just how far stock consoles can be pushed with modern tricks today..I suspect OoT would be a step too far. M64 and OoT were probably why N64 was cartridge based.
@@davy_K Nintendo selected cartridges because it wasn't something you could have just any factory manufacture, unlike a CD - you needed to have each individual cartridge produced by Nintendo or you couldn't release the game. Nintendo gets both an up front manufacturing cost *and* individual sale royalties. Read speed and access times were a side effect of cartridges that provided at least some argument to developers; they were otherwise just an extremely costly medium between the consumer who owned an N64 and their game. The fact that the N64 DD still used a proprietary format makes Nintendo's greed pretty evident - for the same capacity as Resident Evil 2, you could get a diskette that might have been cheaper to produce, but still only Nintendo could manufacture. It doesn't matter if the actual price of manufacturing each cartridge goes down, only Nintendo will make it and they can set the price at whatever they want.
@@BenignStatue71 Well. I only partially agree with that. Certainly their publishing and licencing model suited the cartridge format which is what they loved as it made a shed load of money, pushed a lot of risk onto 3rd parties and let them control the release schedule. However , as I guess you know, the CD drive debacle with Sony and Philips is proof that Nintendo experimented with the format. Miyomoto hated loadtimes and Mario 64 and Zelda : OoT would have been, to his mind, (or to anyone else who has really compared the games available across the 3 platforms) heavily compromised by the limitations of the CD media's access speed. If any further proof is needed - no game on PS1 and Saturn came near to those games in terms of 3D world building and the rich control scheme required for accurately navigating them in a go-anywhere fashion. The transitions between levels in M64 and the open areas and dungeon load and transitions of OoT are testament to it. They simply were not possible on those machines, otherwise we would have seen something attempting to recreate them. The best they could do was create environments made of corridors that gave a limited (albeit clever) illusion of 3D, but very little else.
Very cool, thanks MVG for spreading the knowledge in a timely manner so hopefully more people get to work.
Simply awesome. Imagine telling yourself in the 90s that one day anyone would be able to mess around with OOT's source code and compile it themselves in minutes. What a time to be alive.
I mean, ignoring all the stuff that makes being alive right now a crushingly bleak thing...yeah.
@@stoicvampirepig6063 I always have that though when I watch two minute papers
@@user-sl6gn1ss8p Two minute papers?
@@theextremeanimator4721 it's a youtube channel about AI and computer graphics. "What a time to be alive" is kind of it's catch phrase
How do you compile it for a particular system? I want to get it compiled for the PS vita.
9:35
"Oh MVG...
Listen to my words - Mistakes Were Made"
Ok this is really cool.
I've seen text edits on oot before, thing is now there will be more easily accessible mods including level editors and model swapping.
Mistakes were truly made.
@@nobafan7515 Hell you could pretty easily see total conversion mods that are basically just new games running on the same engine.
I can't wait to see a HD remake of this game using this source code.
Yeah, then sprites change and there are 0 grounds to sue.
@@jamess1787 Nintendo: Hold my sake
@@jamess1787 Yeah there is. Nintendo owns the IP. You could go make a your own legend of zelda game from scratch and there would still be grounds to sue. Nintendo tends to be pretty letigious and they would absolutely win that case
@@justincarter7954 Yep otherwise fangames or other creations would be legal but they are not.
It would be pretty sweet to see an engine like OpenLara for OOT
Nintendo: messes up on emulating zelda oot on the switch
Fans: well we can go to the original game code and do some proper remastering ourselves
Fans does what Nintendon't.
Nintendo: reee!
*receives a Cease & Desist letter *
I love DMCA take downs lol
Because Nintendo puts zero effort into it, and it’s obvious 😠
I’d love to see a nice hd texture pack mixed with this and compiled for the switch! Basically what it should have been for the n64 online
If it's in readable C, it would be way easier to mod and edit
Can't wait to see the native PC port with HD, high framerate, widescreen and other insanity.
same but on the switch
I'm so excited for this. I love the Mario 64 PC port so much I cannot go back to the N64 version or any romhack
Texture packs?
@@Matanumi can't wait to do this on steam deck
@@Jetanium Probably. HD rendering can only do so much with low-res textures.
Having better camera control, including when in first person would be ideal. Rebindable functions a bonus, especially on PC.
I love these videos where you show it all working (i.e Showing the decompiling and the code actually working), whilst still explaining the scope of the project of topic. It gives such a deep understanding of what's happening. Thanks MVG!
Gotta love the "so anyways I started coding" approach that you have when explaining these things on your videos
Imagine this game playing on 4K on modern consoles. I'd love to see if the Saturn could run this with its own interesting architecture and at a resolution of 704x480 (NTSC) or 704×512 (PAL). Or what about widescreen 16:9 support! The community is going to go wild with this.
@@bWWd0 So true.
@@bWWd0 Mario 64 looks gorgeous on 4K. And with all the texture and high-res models modders have worked on over the years, I'm sure there will be something amazing that comes out of this. Go check out Nerrel's channel and the amazing work he's done for Zelda.
You clearly haven't been following what has happened to Mario 64, after it was decompile. Recently someone has updated all the 3d models, uprezed the textures and introduced raytracing. This is very big deal!
VR support, anyone?
Wouldn't the Saturn have to have all the models remodeled due to its sprite/quad rendering system? Plus it's really weak compared to the N64, it'd be quite the challenge
There are similar reverse engineering projects for other games out there too. For instance, the Pokémon Reverse Engineering Team (pret) has completed projects to recreate the source code of Pokémon Red/Blue (pokered), Yellow (pokeyellow), Gold/Silver (pokegold), Crystal (pokecrystal), Ruby/Sapphire (pokeruby), FireRed/LeafGreen (pokefirered), and Emerald (pokeemerald).
If you’ve been wondering why Pokemon romhacks have been getting more sophisticated over the past few years, this is why!
Ah decomp...it's crazy that it has finished. Answered so many questions abou the game.
It's so cool how these projects are coming out now. I didn't expect you to modify the games code and show it off like that! Very cool!
I was eagerly awaiting your video about this decompilation, hopefully now we can have the game running at 60FPS without the glitches that the original N64 rom has with codes...
I feel like you're the professor, and you just assigned us a recompilation project. Amazing video.
I'd love to see this on ps vita. The game works okay through the n64 emulator but having a native port would be beautiful
You'll definitely see a Vita port for this soon.
Maybe Rinne will port this for us. The man is a wizard. In addition to the Vita, I'd like to see this ported to the Anbernic RG350 line of handhelds.
same im waiting for that
Hey man, thanks for all your videos. I am an old school nerd and borderline programmer. But I work as a chef for a living your videos just sit on a great line where I understand everything but learn a helluva lot! I have a beer when I get home from work and it really makes my day when you have a new video out because I will learn something new.
Thanks very much.
Mad props to the team! been waiting patiently for years for this moment!
I wonder how much of this could be used for the majora's mask decompilation project since they're based on the same engine and re use a lot.
Super Mario 64 also runs on the same engine and this took a long time despite SM64 being done years ago.
@@enforcerridley158 True but majora's mask also reuses a lot of the same code evident by many of the same glitches existing in both games.
Much less than you'd hope. The most useful kind of code reuse is the kind where objects are absolutely identical between games, of which very very few actually are. You can make educated guesses when "some" code is re-used, but figuring out which pieces are the same and which aren't is a process that's not much easier than decompiling from scratch to begin with.
@@StardustSauce Bummer. I was hoping it could speed up the majora's mask project because it's my favorite Zelda game and I'm impatient 😅. Oh well. Guess I'll just have to wait then.
There are a lot more changes to Majora's Mask than you might realize, even the re-used models are generally improved
As someone who's been following OoT speedrunners like ZFG for almost a decade, this is the best thing I've heard. The potential for romhacks and speedrun optimizations is going to be insane. Plus the fact that they can optimize the Switch version and make it fully playable is great for casual players. Hell I'd love to play randomizer on console too. Thank you for this video MVG.
Nintendo: stubborn on terrible design decisions
Fans: fine, I'll fix it myself
Unfortunately it could also open the door for undetectable cheating. Video submission wont be enough. Proof of checksum or a replay file would have to be required also.
@@JuddMan03 Yeah. Like manipulating first try dampe.
I'm struggling to think of a more uninspired use of this.
@@pearz420 then you're not really part of the dedicated fan communities of any old game. Speed running is a core staple of old games and the competetive ss both brings excitment and entertainment for onlookers.
However speed running some games sucks balls because Nintendo don't often allow skipping of cuts enes, tutorials and dialogue. Modding the game to skip these unnecessary parts of the run makes it both more fun to compete (as you have to restart often) but also more fun for people to watch.
It is the most basic mod but probably one of the most important ones.
This is huge! Happy 35th Anniversary to Link and Zelda. It's going to be a very Zelda Christmas for a lot of people who know or even want to learn C.
I'm glad you actually messed with the source in the video. I've been wondering how stuff like this is done as I just started learning C in uni. Would love to see a vid on porting games
He has some porting videos too, check this one out ua-cam.com/video/F4Dv32-PoU4/v-deo.html
@@Sakerdot nice I haven't seen that one. Hopefully it explains roughly how its done as I've got a modabble switch and would love to make some shitty homebrew for it
This is awesome! I could see this going many ways, from mods and aftermarket / higher resolution textures, to even using the code as a template to create a new game. Exciting stuff!
I'm looking forward to see what can be done with OOT. Any framerate improvements that can be done like what Kaze done with SM64. Even those improvements work on actual hardware so I'm ready to see what mods can be done.
It's data.
@@Deltaray why yes I am 😎
I've been involved in a similar project for Final Fantasy VII (PC 1998). It's legal as long as two things are observed: 1) don't use that code for any commercial project (anything you make a profit off of) 2) don't use any of the original assets in the packaged game. I can make new models, textures, SFX, music, etc. to represent the original content, but I can't use anything on the discs it came with. Utilizing these restrictions you can recreate the game for use in any OS and even optimize performance and fix bugs.
Can't wait to see where this is ported first!
Probably PC with OpenGL or Vulkan
@@SCP-tn2ln potentially the code could be added to unity or another modern engine to enhance the graphics
I would absolutely love it if they added compatibility with Henriko's HD textures pack for the 3DS version, it is in my opinion the ideal texture pack for this game.
I can only imagine the 2D backgrounds becoming 3D models and HD textures, as well as importing the 3DS remaster models, with modern controller support (to make free camera movement on temples and open fields) with support to Widescreen and 60FPS. Maybe even Raytracing... one can dream.
as a software engineer at a fortune, erm, 9, company I know how insanely hard it can be to RE a simple 'hello world' program, let alone an entire game like oot. insane feat, I'm proud of yall
Surprised that decompilation without a written spec and a second clean team is considered beyond legal challenge, I figured that the decompilation process made a derivative work. In any case, this is impressive work, to get a bit for bit compatible result. You can learn a ton from stuff like this. (Once you've used a decompiler like Ghidra, you'll never want to reverse with just a disassembler again: decompilation tech is pretty remarkable.)
Opinions differ. Some think these decompilations count as derivative works, and Take Two is suing a similar decompilation project for GTA III and VC. There's no settled case law yet though, so at the moment it's just differing opinions.
In most places outside of the US, this is definitely derivative work because it involves large amount of own contribution.
US on the other hand turns everything upside down.
If this can be used to create a bit-perfect copy of the original executable, without a copy of the original executable, I can't see how this could possibly be legal. Distributing converted asserts, say the music to FLAC, and then provide a way to recompress/convert it to the original files certainly wouldn't fly and I don't see the difference here.
It is not clean room, since this project is still based on the original game code (it doesn't matter if it was rewritten in C). The fact that Nintendo didn't take these projects down is quite surprising, since they absolutely have legal right to do that.
> Surprised that decompilation without a written spec and a second clean team is considered beyond legal challenge
It's not, people are saying this because they want it to be true and their understanding of copyright law is colored by that. You're absolutely right that it is a derivative work. The definition of "derivative work" under US law is very expansive:
"a work based upon one or more preexisting works, such as a translation, [...] or any other form in which a work may be recast, transformed, or adapted."
Binaries (object code) are protected because they are themselves derivative works of the source code. It's possible there is a fair use exemption here for educational and commentary purposes, but as with any other fair use claim, it is something that can only be definitively evaluated in court.
Do you ever stop and think to yourself that saying "Ocareener of time" just sounds a little funky?
Hope you do a video of AetherSX2
Definitely
yes
I couldn't believe my eyes looked at the resource sheet a few days ago. I remember when it was just getting started, felt like a project that would never reach a conclusion. Can't wait to see what comes of it!
Im so proud how much Kaze Emanuar did for the SM64 hacking community. _Hope you will do somthing like that to Zelda OoT community too Kaze!_
This decomp project is the first step to make it much, much easier.
what's next? decompiling Super smash bros 64 or... something like.... goldeneye 007?
Game companies need to embrace emulation and give us the games we want at a reasonable price.
And the quality we deserve (cough cough Pokémon cough)
Sadly that's not likely to happen
They think emulation contradicts with their business model, that's horrendous. What's even worse is not just them jacking up the price of the old games but also offering worse experience - emulators made by community handle the execution of such games better than corporation-made emu's. The big N is guilty of that, in particular.
Hopefully people will get tired of Nintendo's BS and stop buying their old catalog en masse and go for community efforts instead, then Nintendo will have to either adapt to the times or, I don't know, attempt to change the law to their favor and the detriment of the homebrew scene like they already did in Japan.
@@toby2581 US also has strong copyright law and can take down a rom hoster within a moments notice and actually throw them in jail
Native 30FPS and 60FPS patches are coming for sure now. This is great news!
Be sure to go ahead and download this before Nintendo decides to Nintendo
😂😂😂
I have school today. I will have to wait till I get home…
@@Green_Stache_Productions TOO LATE!
@@tekgeekster NOOOOOOOOOOOO
Wondering how complex is it to setup a Git mirror
I would love a decompiled and optimized version of Perfect Dark, that game is more of an FPS hell than I remember it being..
It's in the works. Very early stages. The one we really need is Conkers Bad Fur Day
Yeah Perfect Dark was the one N64 game that gave me motion sickness. Probably the only non-VR game that ever did for that matter. The framerate on multiplayer is brutal, and when you get slapped and the screen gets all blurry... ugh
At least with Perfect Dark it's already possible to use 1964 to play it at 60fps with mouse & keyboard support.
A full-on PC port would always preferable though yeah.
@@joereno955 to be honest, I actually like the blur effect you get when slapped or hit by an N - Bomb, it's pretty legit 😆
When I was studying for my driver's license, they showed us what drunk drivers see when behind the wheel, and it looked very much like that, very disorienting, so the effect is actually quite realistic, hahah.
the XBLA version plays smooth as can be, on top of dual analog support.
I’m so excited about this…OoT is my favorite game of all time and now it will run on my x64 PC natively. Very cool how they did it as well.
I’ve always been curious about how they programmed these classic n64 titles in general, and now I will finally get to see how it all works under the hood.
Thanks for the update MVG, big fan of yours!
satire or not, still misinformation. no x64 native pc port, the code compiles to a n64 rom to be used in emulators and requires the rom itself to extract assets.
@@FROZENbender still, it's just a matter of time that it is going to get a x86-64 version.
@@proCaylak Yeah, I think people'd wait until the og version gets fully decompiled before porting though, since this is MQ
@@elnkr2603 Not necessarily, there are actually a lot of romhacks that require the debug rom. It's pretty much the same thing anyway, you could always lock out the debug stuff if you knew what you were doing, too.
@Lukas von das Eis I mean... It's a debug version, but it's a *Master Quest* debug ROM, no?
The youtube video, "Super Mario 64 RT: Full ray tracing" by Digital Foundry does a decent job showing off the potential here. Can't wait to see recompiled Ray Tracing done with OOT
I'm more excited for +30 fps, the original N64 zeldas are unplayable by that extremely low framerate.
I wonder if ocarina of time has that frame rate issue that was solved with a couple of command lines like super Mario 64, since both use the same engine
The actual engine isn't so much the issue, for SM64 or OOT. The issue would be compiler optimizations: ua-cam.com/video/NKlbE2eROC0/v-deo.html
the same engine thing is also not really true. oot may have started as a fork of sm64 in the very beginning, but with both games decompiled its pretty clear that the code is not very similar at all. audio is the closes thing and that was probably somewhat of an external library already
Now it's time to decompile Perfect Dark and see if it can possibly be optimized any further.
I doubt it since OG Rare were absolute fucking chads at development and pushed that system to its absolute limit.
@@Kawa-oneechan oh hey, it's you!
“Listen to my words MVG, mistakes were made” love it 😂😂
I can't wait for 60fps versions of this game finally
this and SNES StarFox then I can die happy
How are you my twin? Literally! Thank you for your work!
"Mistakes Were Made" - Navi
9:35
I love the accent “ocariner of time” 😂 great videos man.
I'm far more interested in this one than Mario 64. And it's so ridiculous that Nintendo won't do simple 60fps versions of these games. Modders and hackers to the rescue again!
I'm not defending Nintendo here, but iirc, for them, it's not a simple "increase the emulated framerate." It's never been that easy for anyone. The framerate is tied directly to the day/night cycle. So you increase fps from 20 to 60, and you have 3x faster day/night cycle. However with this source code, that can be done.
Not hackers, hackers are bad people, these are modders, or decompilers
@Vas_XP So hackers then. Good luck decompiling without any hacking skills.
@@KopperNeoman Don't tell the guy above about White hat hackers, dude'll be shocked that exists.
@@gutter_onion7855 Nintendo has the source code. They just don't want to go through the trouble.
Although, JUST patches/hacks have managed to do crazy things. Mario Sunshine and 64 can both run at 60fps in an emulator. Heck, even Breath of the Wild can. That's with little to no problems.
This was my first Zelda game, the one I put the most hours on, owned on every possible platform and when someone says the word "Zelda" my mind goes back to Link running around Kokiri forest or standing in the temple of time.
Licking my lips thinking about the PC version with new models, lighting, widescren, framerate and ports to other platforms, they ported Mario 64 to DSi and DOS, PS2, Gamecube, PSP, 3DS
I'd want an .exe version of Ocarina of time, just like someone did with Mario 64. It became my favorite version of the game for Mario, and I think it could be the best Ocarina of time version too.
".exe" bruh
Native port has nothing to do with ".exe"
@@YounesLayachi What are you even complaining about? He didn’t say anything wrong.
@@YounesLayachi I think you didn't get my point...
@@Alfonso88279 he means .ELF i think? :p
@@YounesLayachi everyone understands he was referring to a native Windows port, stop being pedantic
Heeeeyyyy, this is awesome! Big ups to the team! And thank you for covering it MVG
"Hey listen! Ocarina of Time on the Nintendo Switch through the N64 Expansion Pak. It's rea-... What's that?"
"Hmm? This? Oh it's just OOT in widescreen, new camera controls, new lighting effects, raytracing and mods on my Steam Deck"
"THATS ILLEGAL IM TELLING MIYAMOTO"
I will be happy if modders only add 60FPS
@@marcelo20xxxx you say that but you'll basically have to relearn the whole game
Tell him, and I'll tell Nintendo you made accept Microsoft's offering of buying them behind their backs.
@@marcelo20xxxx Agreed, I can look past most things in old games but low framerates is not one of them.
Digging the SH2 shirt!
I might actually mess around with the code, it's the first time I've seen someone lay out how to do something like this so easily instead of just saying "just build the file bro" so thanks for the succinct tutorial :)
I think it's amazing that another game is getting the "sm64 decomp" treatment. I'm not really a Zelda fan, but I think it's great that more old N64 games are getting decompiled, and likely will get a PC port and graphical improvement mods.
My dream game to have decomped is Star Fox 64. Having a native port of that would be incredible and I feel like I'd actually want to delve into that code quite a bit. One step at a time though.
Adding yourself in the text for the game "Oh MVG-" "Mistakes were made." Classic.
Thanks for explaining why they went with a z64 ROM of Master Quest, that part confused me.
I am actually not a huge fan of OoT but given what is possible with Mario 64 also, I'd love to see a 16:9 60fps version with HQ models and potentially a dedicated VR version either for SteamVR or the Quest/2.
Incredible, never thought I'd see the day but, here it is, I can compile an original build of a N64 ROM on my own machine. Can't wait to see what comes out of this.
This project is NOT cleanroom.
If you view commit 6136ee6debd570a63fc695a6f4664553303f2324, and navigate to include/PR, you will find SDK header files from a leak some years back.
While the work they have done is really impressive, it cannot be called cleanroom.
All of the other N64 decompilation projects use these headers too, unfortunately.
You’re one of my favorite UA-camrs. I wish you uploaded more videos.
Imagine a complete graphics overhaul with widescreen support, 60fps, ray tracing, and more. Good God this is going to be cool.
Just look to CryZENx's project - no imagination needed
And Nerrel’s done an amazing overhaul of Majorca’s Mask.
@@masejoer Yeaaah but thats more of a techniqal demo right? Projects like that are fucking awesome but rarely get finished
@Squant who hurt you
I already have that on Retroarch with the ROM
I'd love to see a Legend of Zelda OoT maker where you can make your own games out of it to play or share mod file wise.
9:15 someone at Nintendo manually wrote line breaks for each dialogue box in the game? Bruhhhh
@@ANJK-eu7xf I know, right? I wonder why they didn’t have a function compute line breaks at runtime. Aside from the manual route being tedious, I’d also imagine it’d take up way more memory compared to a function, and I’d also imagine memory was really limited back in the N64 times
@Lukas von das Eis Just crazy to see compared to today when all software/games are built to be ongoing services. Probably made it both very freeing and very confusing when every aspect of our code didn’t need to be these well-defined, reusable components
you are one of the best youtuber in terms of teaching their viewers how to do things. there was a video about game boy coding in C in your channel that is a good resource too!
The insane projects that will come from this will be phenomenal.
it would bring me sooo much joy to see this game come back full swing skyrim levels with this modding capability
one thing this should be brilliant for is making a well balanced hard mode - such as making the monsters take more hits, move faster, etc. This game is so good, it would be really fun to reexperience but with a harder twist.
but how about master quest?
@@22222Sandman22222 same point applies there as well
Thank you for bringing this project to light. I am super excited to see what people can do with the code. Would love to see it optimized and running at 60fps.
Very, very impressive work by the team that achieved this.
Thanks for sharing a bit of your knowledge with us. I'd love to watch/read more in-depth technical stuff from you.
Before opening the video I was like "I can't wait to see how many times MVG will pronounce Ocarina as Ocaryner".
I was not disappointed. 😄
I'm curious to see how many glitches and in-game exploits will still work with this version and how many of them will be "patched" as a side effect.
If they do the version the speedrunning glitches are done on like they did this one, with matching hashes, then it *should* behave exactly the same. The only reason it wouldn't is if some weird hardware bug was causing any of those, which I don't think should be the case.
“Ocarina-r-of” Lol, this is exactly what went through my head when I read the title!
If I remember right, the debug version is very similar to the GameCube version? Just running on an N64 instead of a GameCube. So whatever glitches are present in that will be present here. Someone could theoretically fix them, but OoT glitches are usually things that need to be triggered on purpose so it's hard to imagine anyone actually doing it.
Thank you for actually showing it off a little and not just talking about it.
I think those reverse engineering projects are the best way to bring old games to modern hardware and be independent from emulators. I know not every game can get such treatment and a bad or good remaster. For some old games if a publisher or dev would release the source code its still possible to sell the assets and have maybe an active community which maintains the underlying code. They could even sell an optional High Res DLC which requires the fan port.
So basically what Id did with Doom and Quake. Decouple the engine from the assets, release the engine under opensource later.
I wish more old games had their source code released tbh.
Its also not possible with more advanced games
@@Matanumi Sure it is.
Those assets are really all they have. Companies sell assets when they go bankrupt.
Your videos always enlighten me, and remind me of how much passion and love I have for video games! Keep up the great work MVG!
I'd LOVE a Mario Kart 64 decompilation. It would open so many possibilities
I'm in the minority that would love a Super Smash Bros. (64) decomp.
@@puertoricanguy999 Yeah, that as well!!!
Theyre working on mario kart 64 and a lot of other games.
7:30 Oh look, it's Breath of the Wild's camera!
This is great. I can see the randomizer community benefiting from this one greatly.
I'd love to see people make C tutorials using this source code as a base, just to play around and teach various functions and concepts :)
Same! I want to see this!
I've always been fascinated with decompilation and reverse engineering projects in older video games, I hope to see PC ports of the original PS1 Spyro games one day.
I've been waiting for this game to finish with the decomp project for ports to other systems. It will be cool to see what glitches stay in the ports too. I'm guessing classic ones like RBA, WW, and whatnot will work, but GIM, SRM, deku stick as adult, etc would be interesting to see the results with. I'm certainly excited to see where this goes though.
We’re getting closer to Render 98
I’m so excited to see the mods for this! This is one of my favorite games!
Can't wait for a 3ds port... wait a minute...
Damn.
Who knew i would ever get to see TripleH explaining decompiled Zelda code.
That's another one of the bucket list.
Seeing as there are just under 400 N64 games, I would find it interesting if we eventually decompiled and ported all of them before emulation got to a perfect state.
I dunno if Hot Wheels Turbo Racing needs a decompilation
@@MrMoon-hy6pn Really? Game is lit.
It took oot 2 years to be decompiled. I doubt anybody is gonna decompile random unpopular games.
[Removes fog and re-compiles] Whoa! Total Heisenberg moment. MVG doesn’t bullshit.
So cool! There is a huge fan base for emulation and Zelda. I'm sure one of these awesome community members will have interest in porting on Android 😁
The first time I touched this game , the feels we’re magical , the entrance of the game when the player starts at the tree house and the ambient of the kokiri village.
Maybe this is my calling to finally play it...
This is great and OOT was a legendary game, I personally find that Twighlight Princess was the best Zelda game to date and it pulls heavily from OOT.
This kind of work is so important for game preservation. The copyright holders have an unfair amount of power to dictate the manner in which legacy content is available, if at all, and these kinds of projects ensure we don't have to put up with anti consumer practices and vault-keeping.
Now let's decompile DK64 so we can access the Tag Barrel from the start menu
Copyright and DMCA laws need to be revised to include games as historical media. The US government already has books, music, and films in archives after a certain age. Video games are nearing that age
It would be hilarious if someone found and fixed the memory leak that made the expansion pak necessary in DK64
Now I am curious about a MM decompile
It was a charming game, I played it when I was a teenager
I love these videos are released on Monday morning, perfect to start the working day with a cup of coffe.
"Now you can compile your own Ocarina of Time game!"
"Wow! Where do I start?"
"First, you're going to need your own Ocarina of Time game!"
(It's a joke)
I'll take it. Daddy needs right analog support that doesn't Nintensuck.