Metroid Fusion - Skip to End of Game with Memory Corruption
ฝัง
- เผยแพร่เมื่อ 25 ธ.ค. 2024
- Metroid Fusion finally has a sequence break!
To see this trick done in real time (non-TAS) for the purpose of speedrunning, see here: • Metroid Fusion - Seque...
This trick involves using memory corruption to overwrite the event value stored in save data, allowing you to skip more than a third of the game. The memory corruption is done by getting out of bounds and laying power bombs. Whenever you lay a power bomb, the game checks which blocks are affected by the power bomb explosion. It reads the block's clipdata value and changes it if necessary. Clipdata determines how Samus interacts with a block. Some examples include hatches, missile tanks, and bomb blocks. Depending on the clipdata value, the power bomb explosion might also affect the background 1 value of the block, which determines its appearance. For example, if a power bomb explosion touches a hidden speed booster block, the background 1 value will change to reveal that it's a speed booster block. For clipdata, most values are changed to 0. However, for background 1, many values are changed to 0x8000. The goal of this trick is to change the event value to 0x80 (128 in decimal). Normally, the highest event value in the game is 109.
The clipdata values for the current room start at 0x2026000 in RAM, while the background 1 values start at 0x202C000. Note that these are 0x6000 bytes apart. When a power bomb explosion touches a block, it uses the following formula to find the address of its clipdata value:
0x2026000 + ((y_position / 64) * room_width + (x_position / 64)) * 2
Background 1 uses the same formula, except with 0x202C000 instead of 0x2026000. If you go out of bounds, your X and Y position will be much higher than normal. This means that laying power bombs while out of bounds will access memory addresses that are way past the clipdata and background 1 values. In particular, save data starts at 0x2038200, which can be reached by using this trick. As it turns out, the event value for Slot C is stored at 0x203CA21, and 0x6000 bytes before this contains the blocks that have been broken in Sector 4. Whenever a block is broken that never respawns, three bytes are written to this area: the room ID, the X position of the block, and the Y position of the block.
Clipdata and background 1 values are two bytes. For this trick to work, the two-byte value at 0x2036A20 needs to be a value that the power bomb explosion will interpret as a block that needs to be revealed, thus modifying the value 0x6000 bytes away at 0x203CA20 (where the event value is stored). Since we have control over which blocks to break, we have control over what this value will be. After investigating all of the possibilities, the only value that works is 0x0D05 (which is interpreted as a screw attack block). This is obtained by first breaking 10 blocks, then breaking a block with a Y position of 0x05, then breaking a block in room 0x0D. Conveniently, there are two blocks with a Y position of 0x05 in room 0x0D, and all of these blocks can be broken during the first trip to Sector 4. Once all of these blocks are broken, the correct values will be in memory and no further setup is needed.
At some point during the game before performing the memory corruption, the game needs to be saved at least once, preferably as close to the ship as possible. Technically, the game can be saved in the ship at the very start. For this video, I saved on the Main Deck shortly before getting power bombs.
After obtaining power bombs, all that matters is getting out of bounds in a room that's wide enough (remember that room width is part of the equation for determining the address to check). Getting out of bounds involves freezing an enemy close to a ceiling corner, getting wedged in the corner, and jumping while unmorphing (the game doesn't check for ceilings if you jump while unmorphing). Once out of bounds, I navigate to 0x2038A20 and lay a power bomb, which changes the event value to 0x80. After this, I have to reload the save by dying. If I were to reset the game, the save data would be reloaded from external memory and copy over the memory corruption.
After reloading the save, the game thinks I'm in a state where the Omega Metroid is already dead. Regardless, the game always tries to spawn the Omega Metroid, since the door is supposed to lock behind you and you can't re-enter. If you allow it to spawn, you'll get softlocked because the SA-X will never show up. However, you can trick the game into triggering the Omega Metroid's death by visiting the room twice, which causes the ship to arrive. I have to go two rooms back, because only the destroyed version of the hallway leads to the destroyed version of the docking bay.
This trick is possible in real-time (it's not TAS-only), but it requires careful counting during the out of bounds portion. I know this trick is very complex and hard to explain, so I'll try to answer any questions in the comments.
But how will the beings of the universe view this sequence break? I doubt they will understand what we did...the events we barely skipped.
Someone will understand. Someone must.
If we Kill The Animals, we are only Killing Ourselves. :(
In the end, the speedrunners' souls will ever reach for faster times... This is what Adam taught me.
I hope she didn't rescue those damn animals cos I'm so tired of hearing about that liberal a$$ free willy crap.
Z-10 make this top comment
oh nevermind
and it only took sixteen years to achieve a big skip. christ this game was airtight
irehgiaerj The creators really did try to make sure everything is not skippable, eh?
The fact that you had to exploit something within the game's programming in order to perform just ONE skip (granted it was a REALLY big skip) shows how solid this was.
Joseph H. Gaming Of course. It's necessary for the event triggers the entire game's progression and plot were based off of. As it is, this sequence break is only possible because of the event counter being abusable through out of bounds memory manipulation, ironically. I'm pretty sure that if a proper significant sequence break were possible, it would be significantly game-breaking.
Not really.
Quite literally the entire reason why Metroid Fusion is so unbreakable is because the game utilizes Linear flag triggers.
Which, while the Metroid series isn't unknown to flag-to-progress gameplay it has almost never been Linear like it was in Metroid Fusion.
Which is why everytime you absorb an X out of order it just gives you a debug/placeholder message of Level 1 security hatches unlocked, and the Computer returning a placeholder message.
And the same amount of years to beat the game at 0% completion. As far as i know, it is the ONLY Metroid game where it's even possible to do that. You have to perfect frame the shinespark to crash the X barrier at Sector 3 to avoid the unskipable missile tank (which the community named BOB).
The best part is that the ship came and gave Samus a brand new orange suit
Actually, that’s interesting. Why does Seamus have the Varia Suit instead of the Gravity Suit?
did you not play fusion
Yeah... I kinda forgot about the Fusion Suit. It’s still pretty interesting that the suits seem to be hard coded into the cutscenes, though.
Ostia el Zebitas
Sebitas q hacias acá???? Sebitas por qué quemaste a quico que te hizo el :(((:)))):((
eso... eso... eso.......
19 years of life in this planet and this game is still my favorite, my childhood right here, it brings me joy to see it broken
Metroid Fusion's first sequence break and a large one at that.
Had the blocks been placed differently in room 0x0D a trick like this might have been impossible. It's amazing how it all matches.
Very nice explanation!
So to sum up: Samus rescued the animals, glitched Adam's memory values while in Sector 5 and then left the BSL to crash into SR-388 right after the animals piloted the ship to pick her up. I'm assuming the SA-X set the BSL on a collision course after getting bored due to Samus leaving.
Holy shit dude, an actual sequence break? I never thought I'd see the day.
Finally, the god of Metroid fusion has uploaded
Popple I heard jrp says I should call him that instead.....
69 cool
Holy crap, I'm a dunce, just realized it is Biospark! Of course he (or she) would be the one to figure this out. xD
This is just samus's way of saying. "Fuck this shit i'm out!".
No but in all seriousness, i am impressed that after 16 - 17 years stuff like this is being found.
holy shit, you did it! you successfully sequence broke fusion. Incredible! About how much time will this save on a TAS do you think?
A third of the game, so I'd guess around 25 minutes. It'll save time for non-TAS too.
is there a setup for this nonTAS?
th-cam.com/video/_vA7XwFbyR4/w-d-xo.html
I love that this game is so old an ppl are still finding secret glitches.
It's been like a year since your last vid dude!
Nice to see you're still alive
I can't begin to comprehend how much went into pulling this off. Mind blowing.
Never stop doing this wonderful videos :)
It's so bad to see that a true god have only 4.5K subscribers , I follow you since 3 years and I will never miss a single video , please continue biospark , your gameplays are gold for our eyes
That perfect sequence-breaking mind…The wisdom of biospark continued to serve even after all these years. Until today, I had no idea that the minds of speed runners and romhackers were uploaded to TH-cam.
The legend has returned.
I really missed your videos. Welcome back.
God, that Omega Metroid screech... that is the only thing I fear about this game.
ShovelFighter12 Ridley's screech man. Loudest fucking thing in the game
How do you fear that?
*screm*
I cried tears of joy and happiness ... my childhood game had finally been sequence breaked. 😘 @Biospark @Biospark2
I remember when you were a Mareep
Idk if you specifically looked after a way to sequence break Fusion, or if you found this by "accident". Anyhow this is an INSANE find. Thank you for the hard work Bio.
BlueHarvey
He's been looking for this years now
Using Memory corruption to skip through a game isn't exactly an unknown thing to speedrunners.
Its very unreliable as its possible to brick the game/run if you mess up.
That also being said locating the exact time and place where you can use this requires a massive amount of trial and error, as well as precise math being done.
Its unlikely Biospark himself just so happened upon this method, More likely hes the one who used it in the speedrunning community first.
This game is a masterpiece.
Fantastic. So proud of you guys, go go go go go
I am so excited to see this trick at a GDQ!
Did you enjoy it?
@@BarbeqdBrwniez Indeed
Amazing. Sub-45 at last. I'm surprised someone didn't think of this sooner. If it can be done in real time, id love to see this as GDQ or something.
In-game time doesn't matter anymore though, since the timer simply depends on where you saved. You can also use memory corruption to reset the in-game timer. This category will be ranked using real-time.
Welp, you got it at GDQ!
Our Prometheus returns
And this is how I learned how to hack NASA
-Me, showing my kids this video -
And we thought Zero Mission got crazy. This is fucking reality- destroying. Like NDRV3's final Class Trial.
Breathtaking.
YES!!! FINALLY!!! Great job dude!
Holy hell, great job on that one !
I love you, thank you for this lovely discovery
Wow amazing. I don't understand everything, but it's cool. Good job !
Biospark back with the hot Metroid Fusion action.
Did somebody said SPEEEEEEEEEDRUUUUUUNNNN??????
How in the hell did you figure this out?
Rhettorical I'm saying lmao
Because he's fucking Biospark. That's how.
I've been really wanting to try out memory corruption myself, could you tell me how you accessed the game's memory and variables?
Crazy! Congrats man
Congratulations on the find.
Ayye long time no see biospark
edki what where did you come from
@@r-i-v-v mars
half naked samus is all i need in my life
Simp
After seeing the Mario memory corruption credits warp, I was wondering how long would it be until people started trying it on different games.
Memory manipulation is a beautiful thing :')
jaskal a few months.
“Yeah, Adam, I figured out the Galactic Federation’s plan with the Metroids and X-parasite and decided fuck you guys, I’ll just blow this place the fuck up.” :D
Woooahhh, this is pretty sick!
About dang time.
Could one use hexit, to say, pre-break the blocks in Sector 4 by editing values to FF? I have used Hexit on GBA Aria of Sorrow to change starting locations etc.
Can you do this without any external hardware? (Excluding tas of course)
Yes
"See you next mission" on Metroid Dread
Amazingly Awesome 😮
Biospark, cuold you do a guide on how to do a TAS?? For exemple what emulator to use and how to use it, and some pieces of the game in which you show the game frame by frame?? IT WOULD BE AMAZING.
Huh, neat.
This is pretty ridiculous. Thank you.
I saw this video was mentioned in another video by Phobia. Amazing stuff! Do you think it could also be possible to do Memory Corruption/ACE in the Japanese version to be able to change the hidden language setting to English and switch to the Hard difficulty? That way, it can be done on Switch without save/RAM editing.
Memory corruption isn't possible on the Japanese version because they fixed the trick to get out of bounds.
Time to start running fusion i guess.... epic!
Very cool! When you write the formula out the glitch makes sense, but how was discovering it even achieved?
I wonder what would happen if you save inside the ship instead of the save room you chose.
Glad to see this finally happening. Is this useful for 100% runs? Can you go back and collect all the items the the areas you haven't been to after setting the event value?
You have to get screw attack first, so it's probably not useful for 100%.
So it's impossible to fight the bosses you miss after setting the event value?
You could go back and fight some of them, but you wouldn't get the item they're supposed to give.
Thanks for answering. Does this work on all versions of the game?
Only US and EU, not JP. In JP, the trick to get out of bounds doesn't work.
Hmm, neat. It's not that I don't care but it's hard to comment on really. Yer the only runner, TAS or otherwise, that I know about for this game and it's been clear for years that you would be the only one to figure out any tricks left.
Took soo long to discover a sequence break
I know that he is not playing because, nobody can go so quickly into the morph ball and out. But it's really interesting.
I discovered the clipping through the walk through walls cheat but I never knew there was a normal way to clip- wow-
im so done HOW ARE YOU THIS SUPERHUMAN
Hail to the king baby
Is there a method to trigger the ingame debug menu and execute the ending cutscenes that way, and would it be faster than the current method of breaking blocks?
Nope. There's nothing you can modify in the save data that would let you use the debug menu.
Why do you think they made the decision to use a hardcoded kind of "progress counter" setup rather than individual flags or identifiers like they have to be using with stuff like missile tanks? It strikes me as being a really fragile option (as demonstrated in your videos of what happens when you sequence break for early Plasma boss or early Nightmare, or like Stryder7x demonstrates with Paper Mario's similar system) that I can't imagine as being much easier to work with...
Because they decided to make a linear game. Zero Mission does use individual flags, since the game isn't linear.
What if you change room when the ship arrives?
So what went into discovering this trick and that it can manipulate save data?
This is awesome ^_^
Would this be actually possible in real time? Or is it TAS only?
Read the description :)
Ahhhhh I see! I might give this a shot myself sometime! And I know this is a strange question, but if they came out with either a fusion remake or a sequel in which the x parasite manages to return somehow, would you cover it?
What happens if you go through this door again and again?
Has this trick been done in a full game TAS yet?
Not yet
Look at that, a Metroid Fusion credits warp. Well, almost.
Awesome!
You are a roach god
If you don't skip the Omega Metroid fight, does it just work normally even though it's supposed to be 'dead'?
If you actually trigger the fight, you'll softlock.
biospark What exactly is a softlock?
It means you get stuck and you can't make any progress, forcing you to reset the game.
biospark Ah right that explains the other comments I've read
Will you ever upload a samus returns speedrun?
Next up discover time travel it will probably be easier then this
pirakax12 It took 16~ish years just to find a single sequence break. If it takes that long then I'd imagine it'll take a century or two for us to be able to break through the confines of time and space.
Finally we have a sequence break for fusion still irks me nintendo activley hurt speedrunners looking for a faster way to complete the game or have them skip certain powerups. Zero mission got it right with the freedom.
looks like any% and 0% TAS es will be redone I guess ?
There never was an any% TAS. I'm making a 0% TAS with no memory corruption, and I'll probably make an any% TAS with this trick.
The 0% TAS desperately needed to be remade anyway. It's over 10 years old and is using incredibly outdated movement and tech.
Working on it :)
Sweet you're still working on the 0% TAS? Wasn't sure because of lack of updates. But I'm glad to hear it is!
good job
Yo hes alive!
Invisible omega Metroid!
God of fusion
So does anyone know how is this skip affected if you save at the ship?
It works the same.
Hm, interesting. I'll have to try this sometime if I have the skill to pull it off. Cool video, by the way.
So will this be used for Any% now?
Taha Mohyuddin yes but it is a separate category
Why do you need to re enter the room to trigger it's death ?
You'll get softlocked if you start the fight without re-entering the room.
But what causes this ? The games tries to both spawn and kill the boss at the same time ?
And why does going back a few rooms changes that ?
When you enter the room for the first time, the game sets some memory that indicates the SA-X cutscene already happened. When you enter for the second time, it then checks if the death should be triggered. To be honest, I haven't fully investigated it yet, but it always works.
10:01 you're a pro man
How do you navigate out of bounds? I’m a bit confused as to how this movement works
You simply morph, hold the opposite direction, and press A. It moves you one block up and one block left/right. In TAS, you can turbo the A button to go fast, but holding the A button works as well.
Does holding A have the same effect as pressing A every frame, or is the process slower than that? I assume it’s also less accurate than counting the A presses
I think it's about half as fast. And you wouldn't count A presses, you'd count how many times Samus passes through the screen. I'll be making a video later on how to do it without TAS.
I’ve played this game many times. Is this computer edited. Is this real??
Yes, it’s a TAS
When's new tas any%
finally ! the first true skip of fusion ! but will it be workable for speedrunner ?
Herbert The Duck unlikely but possible.
Is/will this valid in speedruns?
It's a separate category
What a G
amazing
This is fucking amazing
Damn, and most of this is theoretically non-TAS other than OOB from what I can tell
OneOf99 its all possible non-tas, just more difficult
biospark what about the bomb jump at 2:55
Welp tas runs just got cut in half sad 😢
Normally, the use of TAS software annoys me to no end. You sir, however, are using it for a very interesting purpose. I've never dug into the memory structure of fusion before.
Anyone know where there are some half decent writeups on gba memory allocation and ASM for that chip? I've got an old one laying around that might be interesting to hack on a bit if I ever get some free time.
Thanks for the explanation of the corruption event!
This would work for any% and 0% very nicely