Arbitrary Code Execution in Ocarina of Time

Поделиться
HTML-код
  • Опубликовано: 9 ноя 2019
  • This method was thought of and implemented by fasch and NatalyaHasDied.
    Arbitrary code execution allows us to create MIPS CPU instructions from within the game and run them, giving us lots of control over what can be achieved in the game.
    Currently we are limited to only a few instructions, but there are theories to expand on this.
    I COMPLETELY forgot to mention Blini in the shoutouts section. He found the original Heap Allocation that allowed this to happen. The original SRM also had a really cool side effect of graphical flashing, caused by corrupting a display list segmented address.
    My apologies, was recording this very late at night and forgot.
    Many people are involved with the research of SRM, the glitch which allows this to be possible. Those people include but are not limited to:
    Myself
    GlitchesandStuff
    Blini
    Nat
    Tharo
    Exodus
    Mzxrules
    Roman
    many others contributing in the OoT server
    For any questions, join the OoT Discord Server: / discord
  • ИгрыИгры

Комментарии • 452

  • @classymarowak7001
    @classymarowak7001 4 года назад +531

    Arbitrary Code injected into Ocarina of Time that turns it into Paper Mario that crashes.

    • @hobbified
      @hobbified 4 года назад +49

      Playing Ocarina of Time Crashes Paper Mario.

    • @snosibsnob3930
      @snosibsnob3930 4 года назад +10

      Go further. Run Arbitrary code that emulates Paper Mario running arbitrary code emulating Ocarina of Time running arbitrary code emulating Paper Mario crashing.

    • @hobbified
      @hobbified 4 года назад +5

      @@snosibsnob3930 emulating Zelda in Paper Mario is perfectly acceptable

    • @riseoftheflutes1739
      @riseoftheflutes1739 4 года назад +3

      @TF Tingle this had me dying. i imagined an ai like link to be walking into gamestop and asking for a copy of Paper Mario, lol...

    • @Husky_ds
      @Husky_ds 3 года назад +1

      ACE has been done in paper Mario as of recently!

  • @Shyverin
    @Shyverin 4 года назад +454

    ZFG: "The only thing holding Oot back from being the most broken game is arbitrary code execution"
    Fig:

    • @jake1996able
      @jake1996able 4 года назад +1

      Speaking of things being buggy:
      Doki profile pic.

    • @marinellovragovic1207
      @marinellovragovic1207 4 года назад +1

      @@jake1996able DDLC is amazing. Just had to say that here.

    • @MidiMaze178
      @MidiMaze178 4 года назад +3

      Nice pfp

    • @jake1996able
      @jake1996able 4 года назад

      @@marinellovragovic1207
      Yeah. Including the brain damage. 10/10

    • @marinellovragovic1207
      @marinellovragovic1207 4 года назад +1

      @@jake1996able more like mental scar 10/10

  • @thatkles
    @thatkles 4 года назад +454

    One thing I'd like to point out that wasn't mentioned in the video: You may have noticed that, in the code explanations, the game seemed to be executing code after a jump instruction was executed. This may seem strange, especially if you are familiar with other kinds of assembly code. This happens because the MIPS CPU, which the Nintendo 64 uses, has a feature called a "branch delay slot." This feature means that the CPU will execute the instruction immediately after the jump instruction, then jump to the new location. It does this to optimize CPU speed (explaining how this works is a bit complicated, so I won't try here), but it can make reading code on the N64 a little weird if you're not familiar with this quirk.

    • @Fig02
      @Fig02  4 года назад +79

      Yeah I purposefully left some specific details out to try and not overload viewers who may not be familiar with this stuff with too much info. This comment will be helpful to anyone who didn't know about delay slots and wants to know, so thanks

    • @vinesthemonkey
      @vinesthemonkey 4 года назад +20

      it was a possibly good idea in the 90s. now with really long pipelines and ooo execution it's really not a good idea

    • @humantreewastaken
      @humantreewastaken 4 года назад +20

      This was the main question I had after watching the video, so thanks for the explanation!

    • @thatkles
      @thatkles 4 года назад +31

      @@vinesthemonkey Yeah, as well as speculative execution. Basically, the point was that branches are extremely slow and the CPU is partially idle while trying to resolve them, so the branch delay slot was a way to try to keep wasted CPU time to a minimum. We have much better ways to do that now.

    • @fallingpizza11
      @fallingpizza11 4 года назад +3

      Woah, thats actually really intresting!

  • @RJis9001
    @RJis9001 4 года назад +398

    I knew I got my CS degree for something

    • @420.........
      @420......... 4 года назад +50

      Yeah but we'll still get blamed for that virus after we restarted their computer 4 years ago.

    • @9393jack
      @9393jack 4 года назад +9

      Same here. I understood some of those words. Could never have hoped to do so if I didn't get it.

    • @9393jack
      @9393jack 4 года назад +5

      @Tonio It's a joke, we're joking. Even partway through a CS degree you'd know what's going on here

  • @Green_Phosphorus
    @Green_Phosphorus 4 года назад +147

    Wow, this is so next-level.
    New low%: “0%”, where you get a minimum amount of items and erase them all before beating the game!

    • @1122markj
      @1122markj 4 года назад +2

      Hahaha hell yeah!

    • @IttyBittyVox
      @IttyBittyVox 4 года назад +5

      This is an amazing idea, but you'd need to figure out a warp to credits that doesn't involve beating fire temple lol.

    • @5688gamble
      @5688gamble 4 года назад +5

      Alexei Barnes with arbitrary code execution you have the ability to do a lot, just need the right instructions. Hell you could technically write a compiler for more complex instructions and get it to poll all control ports for instructions. You can then do more than just call the delete all items and run credits routine

    • @LiEnby
      @LiEnby 4 года назад +1

      @@5688gamble ACE only let's you do.. um everything

    • @kargaroc386
      @kargaroc386 4 года назад +1

      Yeah that's the thing with code execution.
      NSR would be dead as shit for this, because all you do is set up ACE, set up a program that gives you all the items and warps to the credits, and there you go.

  • @MrBRolls
    @MrBRolls 4 года назад +46

    Ive never felt felt so computer illiterate

  • @freelikeojallday7543
    @freelikeojallday7543 4 года назад +229

    Did you get all that?
    -> No
    Yes

    • @joechristo2
      @joechristo2 3 года назад +3

      00:00
      so arbitrary code execution is now a
      00:03
      reality in the Legend of Zelda Ocarina
      00:05
      of Time just want to start off this
      00:08
      video by saying that I did not find this
      00:10
      direct implementation of Ace this
      00:13
      project was spearheaded by Bosch and
      00:15
      Natalya has died although they had both
      00:18
      direct and indirect support from people
      00:21
      in the glitch hunting community so I'm
      00:23
      gonna try to explain this in simplest
      00:26
      terms I can although for something like
      00:29
      Ace it's very complicated in nature so I
      00:32
      will be stepping through a bunch of code
      00:34
      and talking about some lower-level
      00:36
      aspects of the game but I'll do my best
      00:39
      to try to make it digestible for
      00:41
      everybody watching so to start off with
      00:44
      some foreshadowing
      00:46
      you will need this exact filename and I
      00:48
      will explain why much later but it is
      00:52
      important that every character has the
      00:55
      right value and you'll see that once I
      01:07
      press end here the values for all these
      01:09
      characters will be written to this
      01:11
      address and that is exactly what we want
      01:14
      so the glitch that allows ace to work is
      01:18
      called stale reference manipulation or
      01:20
      SRM this glitch is such a massive game
      01:25
      changer it's gonna need its own video
      01:29
      I'm planning to do that once we have
      01:31
      enough information to fully understand
      01:33
      it but to give a little bit of an intro
      01:36
      and how it relates to this glitch stale
      01:39
      reference manipulation at its core as a
      01:42
      glitch that makes use of defect that
      01:45
      actors and their code all live within a
      01:49
      fixed space in memory the space in
      01:52
      memory is known as the actor heap and
      01:54
      within this space you will find actor
      01:57
      instances which is data relating to
      02:00
      actors and actor overlays which contain
      02:03
      code and data used by that code
      02:06
      so in an attempt to make this easier to
      02:09
      understand I'm going to draw some
      02:10
      pictures to try to help visualize what's
      02:12
      going on so the space I mentioned call
      02:15
      the actor heap I'm going to represent as
      02:17
      this box where the start is over here
      02:20
      and the end is over here now toward the
      02:22
      beginning of the heap you'll find the
      02:25
      instance for link himself so this is the
      02:27
      data that represents both child and
      02:30
      adult link and beyond here you have
      02:32
      space for any actor instance so it's
      02:34
      data or its overlay for its code so in
      02:37
      this game what we call actors are pretty
      02:39
      much anything that goes on the scene
      02:42
      that you can interact with or are a part
      02:44
      of the scenery so actors include link
      02:47
      himself enemies NPCs ladders chests
      02:52
      gravestones anything that is on the
      02:55
      scene itself so for this example I'm
      02:58
      gonna show I'm gonna draw a little box
      03:00
      that's gonna represent the instance so
      03:03
      the data for a pot that link can pick up
      03:06
      now I have on screen a live view of the
      03:11
      game's RAM and I'm at the location of
      03:14
      where this pot in front of me is and
      03:17
      you'll see that once I pick it up some
      03:20
      numbers are gonna start updating and the
      03:22
      ones that you see right now are actually
      03:24
      for its position these three over here
      03:27
      XY and Z position you'll see that they
      03:30
      change rapidly when I move and they
      03:33
      change a little bit when I'm standing
      03:34
      still cuz link is breathing up and down
      03:36
      so the important thing to grasp from
      03:38
      this is that when an actor is grabbing
      03:40
      another whether that be linked holding
      03:42
      an actor above his head or a boomerang
      03:44
      grabbing an actor the actor that is
      03:48
      grabbing will keep a reference to the
      03:51
      location and memory of the actor that it
      03:54
      is holding and in this case link keeps a
      03:57
      reference to the start of this pot in
      04:00
      memory now while this reference exists
      04:03
      various data is being written to the
      04:06
      actor instance including its position
      04:08
      its rotation what is holding it etc
      04:13
      now things get interesting with stale
      04:15
      reference manipulation when you change
      04:16
      rooms and by doing that you unload the
      04:21
      actor that is being grabbed while still
      04:25
      maintaining that pointer that says that
      04:29
      you are grabbing something and when you
      04:31
      change rooms there's a good chance that
      04:33
      something will take its place like say
      04:35
      the instance for a chest and now you're
      04:39
      writing data to something that wasn't
      04:40
      originally supposed to receive that data
      04:42
      you can do a vast amount of things with
      04:45
      this glitch including editing the
      04:46
      contents of a treasure chests which
      04:48
      glitches and stuff has done recently and
      04:50
      it also becomes powerful because you can
      04:53
      edit the overlays which contain code you
      04:57
      can see here in this video by gns for
      04:59
      manipulating chest contents that this
      05:01
      concept of holding an actor that doesn't
      05:03
      exist anymore
      05:04
      is achieved by doing a super slide into
      05:07
      a new room and then letting go of the
      05:11
      super slide to pick up the item as the
      05:13
      room changes and when you do this like I
      05:16
      showed here you modify what is at that
      05:19
      location in memory and change the value
      05:22
      of what is there so that explanation
      05:26
      took a little bit longer than I was
      05:28
      hoping but it's really important to
      05:29
      understand what stale reference
      05:31
      manipulation is doing to be able to
      05:33
      understand how it can lead to something
      05:34
      like ace against L reference
      05:37
      manipulation will get its own video but
      05:39
      I hope that that was enough to at least
      05:40
      grasp the concepts of what's going on
      05:43
      now with the basic understanding of
      05:45
      what's tell reference manipulation can
      05:47
      do we're ready to get into the actual
      05:49
      arbitrary code execution I've created
      05:51
      here a macro of the entire setup and as
      05:54
      it plays I'm going to step through how
      05:56
      each part is relevant to the setup now
      05:59
      the actor that we are going to use as
      06:00
      the entry point for our arbitrary code
      06:03
      execution is going to be darunia so
      06:05
      we're gonna do the setup here and Goron
      06:06
      City we're start off with IHG we're
      06:10
      gonna be doing a big hover a large
      06:13
      amount of this setup is just to get a
      06:15
      pot that we're gonna grab in a very
      06:17
      specific location in memory so there's
      06:20
      gonna be a very long hover up here and
      06:22
      I'm probably gonna fast-forward through
      06:23
      a lot of
      06:24
      but yeah neighbors love here I tried to
      06:29
      skip using it but turns out that using
      06:31
      it is actually important for the
      06:33
      allocation of the heap to get the pot
      06:35
      where we want so I'm gonna do a
      06:37
      neighbors love super slide up the stairs
      06:38
      super slide teleport and now we wait for
      06:42
      a neighbors love to expire because you
      06:44
      cannot hover with near his love so I'll
      06:46
      fast-forward through this so his
      06:53
      neighbors love starts to expire here
      06:54
      you'll see some chu hovers up normally
      06:58
      dropping a - out of bounds will crash
      07:00
      but there's a tiny bit of ground
      07:01
      underneath that I have to work with just
      07:04
      gonna be doing hovers and turning around
      07:05
      to stay over that ground now that we're
      07:21
      high up enough we're gonna start doing
      07:22
      some bomb hoppers in a second here the
      07:25
      goal is to get to the hallway where they
      07:28
      made Eagle run is who sells you the
      07:30
      Giants name and the whole reason behind
      07:33
      this is simply to enter the main room
      07:36
      from that area to put this pot at this
      07:39
      exact address that you want no this
      07:42
      setup requires this long hover does not
      07:44
      to say that every a setup in the future
      07:47
      is going to need this exact allocation
      07:49
      of the pot but for this specific example
      07:51
      this is what was needed this is a proof
      07:54
      of concept that can definitely be
      07:56
      applied everywhere else not just here
      07:58
      and go on city now as we come up on the
      08:03
      last time here we're ready to sign up
      08:05
      into the hallway we land on a little
      08:07
      table and we're gonna back walk slowly
      08:10
      to load the hallway you'll see the
      08:13
      bonneville wall there and we're going to
      08:16
      enter the main room with this camera
      08:18
      this affects the allocation of the
      08:20
      actors and now the pot that we want to
      08:23
      grab is exactly in the right location so
      08:26
      we're ready to proceed so we're gonna
      08:28
      have neighbors love again we're going to
      08:31
      use that for the super slide off the pot
      08:32
      but more importantly it's also going to

  • @MadaoJoestar
    @MadaoJoestar 4 года назад +210

    the reason the game reads input from controller 3 is because there's a special button code to erase all save files on the title screen that needs to be inputted on controller port 3. this button code is there in the event of save files becoming corrupted and crashing the file select screen before it loads which would make erasing them the normal way impossible.
    i think there's a video of that somewhere.

    • @JwopDk
      @JwopDk 4 года назад +22

      Also I believe that the 3rd controller is used for some additional stuff in the debug ROM

    • @memelord2827
      @memelord2827 4 года назад +19

      Stupid question what is that button combination my game crashes when it tries to load the save file select screen and I think it might be the solution for an issue I have had for years

    • @Fig02
      @Fig02  4 года назад +22

      yeah reading on 3 makes sense for this code, but was saying it was weird that 2 and 4 are not read. And yeah debug does use port 3 but it uses other controllers as well

    • @nineh9739
      @nineh9739 4 года назад +10

      if you don't feel like pressing 14 buttons at 12ms/button maybe you could just pull out the sram battery

    • @SpaghettiEnterprises
      @SpaghettiEnterprises 4 года назад +1

      @@nineh9739 @meme lord yeah i was going to say the same thing. Do N64 carts need a game bit to open though?

  • @dukepuddingdale
    @dukepuddingdale 4 года назад +60

    I was worried about the direction that the series was taking with its new installment, The Legend of Zelda: Reader of Memories, but after this beta preview, I'm really looking forward to it.

  • @domninin
    @domninin 4 года назад +95

    ZFG: If arbitrary code execution in OOT is found it is officially the buggiest game ever
    Fig 1 week later

    • @gypsysprite4824
      @gypsysprite4824 3 года назад +4

      meanwhile pokemon RBY ACE is so broken (yet controllable) that you can legit make setups that let you cartridge swap and have it run the actual ACE payload in other GB/GBC games

    • @Marcelelias11
      @Marcelelias11 3 года назад

      ZFG clearly never played a Final Fantasy game, especially the oldest ones

  • @mtgox420
    @mtgox420 4 года назад +40

    I just want to say: You didn't have to make this video. It could've been a blog post, or just a little tweet or something, but I'm very glad you did. There was a lot of effort put into here, good presentation (even you're little mspaint doodles lol), and a very deep & thorough explanation of all the concepts.
    As someone who finds this type of stuff extremely fascinating, I just want to sincerely thank you for putting your time into this. This was really cool to watch :^)

  • @EGarrett01
    @EGarrett01 4 года назад +17

    this works in real-life too, if you change your name to that legally and slide into a few rooms the right way holding nothing, you can just make whatever happen, i've confirmed it

    • @kneesnap1041
      @kneesnap1041 3 года назад +1

      Well. I bet if you named a baby "null" it might cause a few issues.

  • @arpez
    @arpez 4 года назад +86

    What a time to be alive! Can't wait for the 100% child lotad

    • @1122markj
      @1122markj 4 года назад +1

      ME TOO! I'M SO EXCITED FOR EVERYTHING! GAHHAGS LAB FBSGAJDYKABEISIA OAK DHW9U1KZNDUA9EB I'M SO HAPPY!!!!

    • @Yotsuga
      @Yotsuga 4 года назад +5

      @@1122markj Okay calm down numale

    • @1122markj
      @1122markj 4 года назад +6

      Uhhh... so... since I don't spend any time on the internet using cringey words like numale. I had to look it up. And.. oh man... I have no idea how this beta male, white knight description would fit someone who is just excited over a Zelda game. Ya coulda just called me a manchild but ooookay

    • @nathanielmohr9622
      @nathanielmohr9622 4 года назад +6

      @@1122markj Ok numale

    • @1122markj
      @1122markj 4 года назад +1

      Lmaooooo

  • @StormerSage
    @StormerSage 4 года назад +37

    Not only is this ACE setup glorious, it also uses best item, Nayru's Love.

  • @Cinicraft00
    @Cinicraft00 4 года назад +55

    1990s: We invented the internet and Ocarina of Time
    2020s: We use the internet to watch videos about reverse engineering ocarina of time.

  • @mariomasters1
    @mariomasters1 4 года назад +6

    Really amazing work! Excited for the future work of you and other OoT scientists!

  • @wyattwayn7538
    @wyattwayn7538 4 года назад +21

    I don't even speedrun this game or really didn't understand most of the stuff going on in this video, but this was a lot of fun to watch! You did an amazing job explaining how it works!

  • @mag2XYZ
    @mag2XYZ 4 года назад +25

    00:00 - Setup and explanations
    12:28 - First payload execution, and demonstration of its useless but amusing effects!
    13:40 - Further explanation, stepping through the instructions
    23:45 - Other examples of effects that can be achieved (my favourite at 25:40!)
    25:47 - Future possibilities? More elaborate payloads, RTA viability?

  • @linus327
    @linus327 4 года назад +28

    this is so exciting to see! the side effects are amazing
    bootless black tunic link needs to become rta viable

  • @HRCtypo42
    @HRCtypo42 4 года назад +36

    young link in black tunic jumping: MY PEOPLE NEED ME

  • @obeqwaet1772
    @obeqwaet1772 4 года назад +86

    Jesus christ, ACE in OoT??? What a time to be alive.

    • @anoobis117
      @anoobis117 4 года назад +1

      Just wait until Halo Reach comes to PC. I've a feeling nerds are afoot.

    • @magsec5
      @magsec5 4 года назад

      Anoobis 117 what would ACE do to reach?

    • @anoobis117
      @anoobis117 4 года назад +3

      @@magsec5 you could theoretically use ACE to set or uncheck flags that let you, for example, wield illegal weapons or change the type of projectile your weapon shoots. This can all be accomplished by modding of course but it would be interesting to see it done in-game.

    • @Harctwo
      @Harctwo 4 года назад +2

      @@anoobis117 We found Arbitrary Unit Possession /control in halo 2 a few weeks back! Been an amazing time building upon that.

    • @anoobis117
      @anoobis117 4 года назад

      @@Harctwo what a time to be alive

  • @painco94
    @painco94 4 года назад

    This is without a doubt one of the best videos about ACE in videogames I've ever seen. Information detailed enough, but not overwhelming, clear explanation, both of the glitches involved and of the actual assembly code and RAM locations shown. The comment about the branch delay slot completed all the information I wanted. I really thank you for this outstanding video

  • @homerfunky
    @homerfunky 4 года назад +18

    I am truly amazed that this day has come. Great job to all of you !

  • @CZPC
    @CZPC 4 года назад +4

    Great video mah guy looking forward to progress relayed through the discord!
    ACE will be here in full swing soon enough it seems.

  • @ThatguycalledJoe
    @ThatguycalledJoe 4 года назад +69

    I expect great things of this.
    Not like speedrun things, like wacky bullshit things.

    • @ivoackermann15
      @ivoackermann15 4 года назад +7

      i expect this to be featured in Tas block at some point. i cant wait for the stuff they'll come up with

    • @vlackrock
      @vlackrock 4 года назад

      Hi joe

  • @Trilobita98
    @Trilobita98 4 года назад +1

    Just taking a class now in college learning about mips assembly programming. Couldn't have seen this video at a better time!

  • @Kosmicd12
    @Kosmicd12 4 года назад +8

    Great work guys. Incredibly impressive

  • @lostskull7467
    @lostskull7467 4 года назад +18

    So glad this got recommended to me! My god, the process reaaally looks like a modern day variation of the old day myths about secrets in the game! 🤣

    • @mischa7823
      @mischa7823 4 года назад +1

      What if... All those secrets back in the days that got spread but could never be verified, are ACEs that got executed on accident?

  • @idontcheckmynotifications
    @idontcheckmynotifications 4 года назад +6

    Wow, I know you aren't alone in finding this glitch but I'm surprised I never saw your channel before, I like your style.

  • @kyledowney8551
    @kyledowney8551 4 года назад

    Exceptional video. Thank you for all the effort you've put into this.

  • @Tabascoth
    @Tabascoth 4 года назад +1

    absolutely amazing, and a great video, grats. im really looking forward to seeing all the cool shit being done with ace in the future.

  • @inkaymr4919
    @inkaymr4919 4 года назад

    This is incredible.
    With all the hard work and interest you guys have shown through this research I'm sure there will be something RTA viable in the future, even if it's for less popular categories like NSR.

  • @Sauraen
    @Sauraen 4 года назад +6

    So glad to be alive at such an exciting time in history!
    Now we just have to use ACE to allow us to get the Triforce!

  • @EdTheNerd
    @EdTheNerd 4 года назад

    That was a fantastic explanation of how it works. I've never touched a debugger but felt I was able to follow along.
    Great work!

  • @coolbrotherf127
    @coolbrotherf127 4 года назад +1

    Well, I'm glad I paid attention in my CS classes because I was actually able to follow that pretty well. This whole thing has so much potential and I can't wait to see what stuff comes from it.

  • @tetsuo3k
    @tetsuo3k 4 года назад

    Fantastic video, the way you describe the N64 CPU as it executes the payload was eye opening for me. I'm not sure if this is strictly what I'm thinking of, but I've read about 'return oriented programming' in reference to 3DS hacking. I was never quite able to wrap my head around it, but it makes a lot more sense now. The way this hack winds up inadvertently breaking the Link actor brings to mind how a ROP payload might fail totally at random, simply due to the chance arrangement of code in memory.

  • @TeighMart
    @TeighMart 4 года назад

    Awesome video man, super informative. Can't wait to see where this takes us.

  • @gumgrapes
    @gumgrapes 4 года назад +8

    Finding game-changing bugs in a game from over 2 decades ago, incredible. Wonder what OoT speedruns will look like this time next year

    • @Yupyoubetcha
      @Yupyoubetcha 3 года назад +1

      Now we know... 7min 43sec as of today haha

  • @KnishG
    @KnishG 4 года назад

    wonderful video. crazy how far this has come.

  • @nesis
    @nesis 4 года назад

    Awesome video, and very clear explanation. Thanks for sharing!

  • @Jonas_TGCW
    @Jonas_TGCW 4 года назад

    Did a great job of explaining it! :) The drawing helped a lot!

  • @BaldorfBreakdowns
    @BaldorfBreakdowns 4 года назад +6

    YES! FINALLY! I LIVED TO SEE THE DAY!

  • @Acryte
    @Acryte 4 года назад

    This is awesome. Finally explains hyrule field glitch. :O Great work gents! Powerful stuff.

  • @Tufhhuyy
    @Tufhhuyy 4 года назад +75

    ZFG called it

    • @SilverSuisei
      @SilverSuisei 4 года назад +9

      OOT is now the buggiest game ever GG

  • @gloriousliar8747
    @gloriousliar8747 4 года назад +2

    Awesome explanation of ACE and executable ram 👍

  • @JacobHayden911
    @JacobHayden911 4 года назад +2

    Ohhhhh. The current Any% WR makes so much since now! xD Thanks!

  • @razmetrez
    @razmetrez 4 года назад +48

    All of the code is arbitrary.
    My mind wanders.

    • @poultriarchy
      @poultriarchy 4 года назад +1

      Hot fucking damn hahaha

    • @owfan4134
      @owfan4134 4 года назад

      So ok.
      OOT is this game that
      a lot of cats seem hella
      pumped of. And this ACE video
      is sitting on my desk for
      review, so I'm like, yeah
      man I'll write something.
      But I don't know. I'm like,
      so this is about elves or
      some noise? That's fine, I'm sure that's
      like fucking dynamite in a handbag for
      some brosephs. But all I'm saying is,
      when do you get to *thrash* anything?
      While you're playing knight or some shit,
      are you ever in jeopardy of getting mud
      on your fairy elf’s dress or whatever from
      busting out, and I quote, "the mad
      stunts all wicked up-ins"?

    • @marinellovragovic1207
      @marinellovragovic1207 4 года назад

      @@owfan4134 a fucking homestuck reference, I'm crying

  • @PhoenX19
    @PhoenX19 4 года назад

    This actually was pretty clear. Great job!

  • @Jelster64
    @Jelster64 4 года назад

    amazing work, thank you all for making this possible

  • @Zamiell
    @Zamiell 4 года назад

    i am speechless, this is an incredible video and an amazing discovery!

  • @1ted59
    @1ted59 4 года назад +8

    Wow this is incredible! Congrats to OoT for being the first N64 game with self contained ace!

    • @gs6772
      @gs6772 4 года назад

      1ted59 Actually i think oot is second, doesn’t pokémon stadium have ace?

    • @udczoey
      @udczoey 4 года назад +3

      @@gs6772 I think Stadium's involved glitched save files of the GameBoy Pokémon games that you were transferring data from.

    • @1ted59
      @1ted59 4 года назад +4

      @@gs6772 self contained ace, cause Pokemon stadium needs ace on a gb game

  • @Skatche
    @Skatche 4 года назад

    Yo, that's pretty cool. You did a great job of explaining it as well.

  • @Sauspreme
    @Sauspreme 4 года назад +7

    This is just like OOT puzzle solving, except even harder

  • @How2BEpic
    @How2BEpic 4 года назад +2

    I feel like watching this is making me understand how some of the games I've hacked in the past might have worked. Trying to find and modify entities and scenery is something I've only done a little bit.

  • @johndebord7802
    @johndebord7802 4 года назад

    In practical terms:
    stale-reference manipulation is when a (tiny) fraction of the memory on that RAM stick in your computer never gets zeroed-out by the operating system (due to performance reasons) when an object (e.g., a pot) gets deleted (when you move rooms/zones/etc.). This then gives you the opportunity to make said memory on that RAM stick (of where that pot once was) to be any value you want (if done cleverly), thus giving you the power to manipulate the state of the game.

  • @soundsfortowny6485
    @soundsfortowny6485 4 года назад +1

    New world record for OOT Any% using ACE! I guess it is RTA viable. Thanks for this video, it helped explain it quite a bit

  • @TheOfficalAndI
    @TheOfficalAndI 4 года назад

    I just learned about CPUs and writing data to registers in school. Little did i know it was preparing me for this.

  • @ZetaTwo
    @ZetaTwo 4 года назад +2

    Really impressive results and a nice video as well. I love when two of my favorite topics: gaming and hacking comes together.
    Question: you mention that the space for the payload is very limited. Would it be possible to insert a small stager that will read for example input in a loop and write more code in too the memory or is the available space too small to even do that?
    BTW, another term that is used in the security community for this type of bug (SRM) is Use After Free or UAF.

    • @Fig02
      @Fig02  4 года назад +2

      Calle Svensson yes a bootstrap has been written that will do exactly that and read from inputs. It hasn’t been put together in a video yet. It uses the scarecrow song to set that up.
      And yeah, SRM is definitely a form of a use after free. We name all of our glitches in the game something unique that we as a community can call it by. There may be other glitches in the future that classify as a Use After Free

    • @ZetaTwo
      @ZetaTwo 4 года назад +1

      @@Fig02 Cool! Looking forward to see that.
      Yeah, naming a particular instance of a bug within a bug class of course makes sense here as it's easy to talk about it within the community. Just wanted to add some context which other people might find useful if they want to know more about this type of bug in general.

  • @DougSalad
    @DougSalad 4 года назад +3

    New speedrun category: (N)Ice%. Make a letter N by duping ice arrows in the inventory, and set the quantities of all items with a counter to 69

  • @Kavukamari
    @Kavukamari 4 года назад

    very exciting, I can't wait to learn more

    • @Kavukamari
      @Kavukamari 4 года назад

      goddamn that was a fun explanation

  • @crookeddesk
    @crookeddesk 4 года назад +43

    Yeah, I do some programming
    Oh? In what language?
    Ocarina of Time.
    ... ?

  • @dylanhinkson218
    @dylanhinkson218 4 года назад +10

    According to ZFG, OoT is now more broken than Gen1 Pokemon.

  • @MetaKnight68
    @MetaKnight68 4 года назад +4

    Holy shit, it finally happened! This is incredible
    -MM ACE when-

    • @MetaKnight68
      @MetaKnight68 4 года назад

      Nevermind, we found moon warp

  • @KeepAwayFF
    @KeepAwayFF 4 года назад +7

    25:41 : "I have to go now. My planet needs me."

  • @VraccasVII
    @VraccasVII 4 года назад

    fantastic explanations

  • @twilight-sparkle
    @twilight-sparkle 4 года назад +12

    i can't wait for SM64 to get ACE
    (even if it's by doing something like "if we take the cartridge out and swap it while idling in RAM...etc etc")

    • @kneesnap1041
      @kneesnap1041 4 года назад +2

      Considering sm64 has been decompiled to C, I wouldn't be surprised if it happens soon, if there are any ace bugs

  • @lonephantom09
    @lonephantom09 4 года назад

    Very interesting, it’s always amazing to me what the devs at Nintendo were able to do with such limiting memory constraints

  • @ZizZazZuz
    @ZizZazZuz 4 года назад

    Hey, great video! I'm super excited to see what comes out of this, ACE is a super powerful glitch that can lead to some interesting stuff. I've still got a couple questions about this tho. For right now, what I'm understanding is that the only way to deliver a payload is through the file name, right? What are the requirements for something else to act as the payload? And with the tools you have now, can you use it do do something like a credits warp (like you might see in Super Mario Bros.), or would you need a much larger payload for something like that?

    • @Fig02
      @Fig02  4 года назад

      ZizZazZuz all that has been used is the filename yes. We did this more as a proof of concept and have ideas to get access to more instructions.
      Here we had 1 actual instruction for payload. I think credits warp would take 3.

    • @thepotato513
      @thepotato513 4 года назад

      Based on my understanding of the explanation I think the payload would need to be some value (or a string of values) that the player has enough control over to write instructions with. In this case the filename seems like the most practical as it's stored as a string of values that don't change after they're initially set under normal circumstances

  • @jefferygotem7705
    @jefferygotem7705 4 года назад

    This is beautiful

  • @emlun
    @emlun 4 года назад +8

    Do you think you could use return-oriented programming to craft bigger payloads?

  • @Christhefast222
    @Christhefast222 4 года назад

    Good video, earned a sub

  • @MertHakim-ns9os
    @MertHakim-ns9os 6 месяцев назад

    Sağolasın paylaştıklarını izliyorum

  • @TheLastScoot
    @TheLastScoot 4 года назад

    Amazing work.

  • @edwardsjs
    @edwardsjs 4 года назад

    Wow, this is a huge breakthrough

  • @lostskull7467
    @lostskull7467 4 года назад

    As someone who loves dark link stuff, I'm convinced you successfully transformed into dark link! It makes sense in my head, since dark link is targetable, can target (he targets you and has a target range just like link), it makes sense that dark link can't trigger load zones (hence why you can't activate them) aand I believe that the hop you made is the jump he makes either when dodging and countering the stab or the neutral hop he makes when trying to jump slash with his sword seathed.

    • @Fig02
      @Fig02  4 года назад +1

      Dark Link is his own actor, and I still retained many properties of normal link. I changed links actor type, which resulted in some of those things you mentioned, but it wasn't "fully" dark link

    • @lostskull7467
      @lostskull7467 4 года назад

      @@Fig02 I didn't get notified of your reply, but thanks for clearing it up :)

  • @Tearcon14
    @Tearcon14 4 года назад

    im so happy this is possible

  • @T3sl4
    @T3sl4 4 года назад +4

    I have lived to see the day OoT gets an ACE exploit!

  • @renakunisaki
    @renakunisaki 4 года назад +4

    Hmm, can't you RBA most dungeon key counts which are one byte each? And maybe chain exploits by writing glitch items into inventory to RBA with.

  • @sagacious03
    @sagacious03 4 года назад +1

    I really wanna see how this gets used! Will it see use in any kind of TASes?
    Also, I kinda wanna see videos of just showing off & screwing around with the effects of ACE!!

  • @gs6772
    @gs6772 4 года назад

    congratulations boys!!

  • @AzureWoof
    @AzureWoof 4 года назад

    Holy shit. Now there's new stuff to watch.

  • @bjdooi
    @bjdooi 4 года назад

    Absolutely badass

  • @TheSmegPod
    @TheSmegPod 4 года назад +1

    so is the payload mostly dependent on what you set the filename is or the instructions you perform with moving pots around?

  • @humantreewastaken
    @humantreewastaken 4 года назад +1

    Thanks for the great explanation! What property are you changing to get the effect you show at the end?

    • @Fig02
      @Fig02  4 года назад +4

      Setting links boots to 0xFF. His boots handle his gravity/physics

    • @humantreewastaken
      @humantreewastaken 4 года назад +1

      @@Fig02 Hah, nice.

    • @Sypaka
      @Sypaka 4 года назад

      @@Fig02 When you figure out, Gravity is tied to Link's boots and you just delete them to fly.

  • @erik9817
    @erik9817 4 года назад

    This is brilliant, we actually used the MIPS architecture in uni. What tools do you use?

  • @Woodswolf
    @Woodswolf 4 года назад

    Is there any possibility that this could work in MM as well? Or is this likely to remain an OOT-exclusive glitch? It would seem to depend on whether this is a quirk of the Darunia actor or is more widely applicable (perhaps to any actor with text interaction?). Either way, this is an absolutely incredible find - I can't wait to see what this could be capable of with more experimentation.

  • @lyeloh9251
    @lyeloh9251 4 года назад

    Wow this is incredible

  • @Nukestarmaster
    @Nukestarmaster 4 года назад +5

    Would this ACE work with Majora's Mask, I know some OoT glitches work with it and some don't.

    • @Fig02
      @Fig02  4 года назад +6

      SRM, the glitch that allows ACE, does work yes. An appropriate method to do it would need to be found but it should be more than possible

  • @Smonjirez
    @Smonjirez 4 года назад +1

    Wouldn't you be able to prepare a far bigger payload by executing small payloads that each set an instruction or two in an empty/reserved space that can afterwards be executed as once, such as a boot loader (not sure if it's the correct term)? And from there be able to input instructions directly?

    • @Fig02
      @Fig02  4 года назад +1

      we have achieved total control in multiple ways since this video. a couple examples are removing the file name limit to write code on the file select screen, and another method using the scarecrows song to write a bootstrapper to read inputs from the control stick to write code
      assuming those other methods didnt exist, yeah you probably could write a bootstrapper by chaining a bunch of darunia ace's together

  • @AndrewAJT
    @AndrewAJT 4 года назад +2

    Nice. How does the first hover change the location of the pot?

    • @Fig02
      @Fig02  4 года назад +2

      AndrewAJT it’s the location of the pot in memory, sorry if that wasn’t clear. You load the room from the hallway without having gone through the front, so actors will get loaded in a desirable order.

  • @0x2480
    @0x2480 4 года назад +1

    Couldn't you make it run code to run instructions from port 3 every time you press a button on port 1?

  • @wimbleimble3577
    @wimbleimble3577 4 года назад +4

    now i'm just waiting on the doom port

  • @orialtman6176
    @orialtman6176 4 года назад

    I don't know why this video was recommended to me but it -is- fascinating, so...

  • @DoomRater
    @DoomRater 4 года назад +1

    Link is starting to catch up to Mario's exploitation level. I cannot wait to see what happens when these two absolute legends meet in space-time.

  • @fazerlazer8020
    @fazerlazer8020 4 года назад +7

    you will need this exact file name: WAMPA.STOMPA..

  • @hansklaus6860
    @hansklaus6860 4 года назад

    I really love this kinda low level stuff

  • @lonergothonline
    @lonergothonline 4 года назад

    ACE in OoT, I hope it leads to some of the Pokemon ACE stuff I've seen in Tasvideos, where they show other games being played.
    also you can hold shift when drawing a line in MSpaint, to force the line to be straight.

  • @lostskull7467
    @lostskull7467 4 года назад

    Could you please explore a little more of that dark link state? I mean, were you even able to pull out your sword? (dark link can't, if I'm not mistaken)

  • @TheJustinHit
    @TheJustinHit 4 года назад +4

    I would love to see a reaction from an actual coder for Ocarina of Time.

    • @spht9ng
      @spht9ng 2 года назад

      it would be hard to track down those nintendo devs from the late 90s but it would be amazing if someone was able to do it. Would need to probably be someone who knows japanese and can navigate japanese phone/email directories.

  • @BruceShankle
    @BruceShankle 4 года назад

    credits warp from kokiri forest is already possible, cant wait to see oot beaten in 10 minutes!