Ok, it's worth noting, that IF the door on the left-side of the Power Grip pit wasn't grayed out (and if there was actually a loading zone behind that door) when the crumble block bridge is there, THEN you could get to Tourian. You can build a speedboost by running across the crumble block bridge.
So there's some potential for memory corruption. I believe this was first discovered by Mobiusman like a year ago using the Debug Rom hack, if you go Out of Bounds and plant Power Bombs there to certain locations, it can cause the visible tiles to be corrupted. Now that we can actually go OoB, maybe it's worth messing around with to see what exactly can we do.
So far, beyond messing up the tiles, I've managed to screw up the map, and actually spawn one physical block on the map. That block makes me a little bit hopeful.
What do you mean by physical block? Did you change the clipdata of it? That sounds more promising than graphical glitches, since clipdata is stored closer to important memory addresses.
Also, is there anything more specific to it other than going oob and laying powerbombs? I can try testing it in fusion.
ALSO, at some point could you explain the clip through one block thing? I'd like to test that in fusion as well.
Edit: well, I just crashed fusion by getting oob (only possible here) and laying a powerbomb. I'd say there's some potential for memory corruption!
Edit 2: actually, the game is just crashing randomly oob. Probably has to due with the yakuza fight. Hopefully it's not just an emulator issue.
Edit 3: got some blocks to change. I forgot that the level data is also stored near tileset data, so changes to just the appearance of tiles are a good sign. The emulator is really prone to crashing though, so it worries me a bit.
Isn't OoB also possible against Ridley? This could be a good reason to try reproducing that again
You could also try OoB in mGBA, or at least once it has more TASing features
I've looked into it before. I got 1 subpixel unit away from making it happen, so I'm sure it's worth looking into again.
Edit: I got some map data corruption as well. As a whole, this corruption is targeting at least from 0x202C000 to 0x20347FF (the range for zm is probably similar). Getting some corruption above 0x3000000 could do some real damage ;)
Edit 2: Bad news. I used a debugger and found the routine where the values were being overwritten. From what I can tell, it loads 0x2026000 and adds a 16 bit number to it, meaning the max range for this corruption would be 0x2026000-20235FFF. Here's what that covers (nothing useful though)
When I have time, I'll investigate why this function executes when it's not supposed to (probably related to the x and y position of the powerbomb explosion). Hopefully other types of memory corruption are still possible.
Uhhh, by a physical block I mean a block I could actually interact with. It was a regular block I could shoot, and it respawned when I broke it. It was also able to interact with water-droplets dropping from the ceiling (they hit that block instead of a platform they normally hit).
Mmmm, the clip through one block (ceiling) thing works like this:
- Freeze two enemies near the same height (there can be some pixel / subpixel variance, but it's kinda close anyway).
- Roll off from one enemy to other using morph ball. At some point during roll, the game auto-unmorphs you.
- If there's a ceiling or something above you, your head will stick out through it a little bit.
- Get either damage boosted, or perform a shinespark to get high enough to grab the ledge, then just climb through the ceiling.
EDIT:
Got the block to spawn again
This time it's a little more to the left, and higher than the first time it spawned. It's possible for this block to also overwrite already existing blocks: it appears in their place, and you can still break the block and pass through.
Also, apparently some of the tile corruption gets saved in the savefile too, so when you reload it, stuff is still messed up. Saving and reloading also made some tiny corrupt looking things appear in the water in the area I did it in (same area as in the picture).
EDIT2:
There's definitely at least some notable changes that happen in other areas. The pillar near the Crateria-elevator is now _unbreakable_, I can't destroy neither the shootable blocks, nor the PB blocks there.
Ah yes, I knew that this happens. Should have realized this is how it works. I'll test it later.
Hm, saving and reloading didn't keep the corruptions in fusion, but I could test it some more.
But like I said, this kind of corruption seems like it has very limited uses, if any at all (at least for fusion). In fusion, we would need something that can reach the event address. In ZM it could have more uses. From your picture, it seems like you can get OOB in that room. Is spacejump required? If not, then if you could corrupt any of the four tiles on the yellow door to be passable, we could get to chozodia early.
Also, by "changes in other areas", do you mean that going oob in one room led to corruptions in other rooms? That would be very interesting.
One more thing: does oob traversal work like it does in fusion? That is, you can diagonally traverse up-left or up-right with spring ball.
The only way I've found for moving while inside a wall, is by chaining Space Jumps together (this allows you to clip straight down). Using Spring Ball sounds really interesting, but I'm pretty sure I tested it and it didn't work. Maybe you could list the actual inputs used for it in Fusion and I can properly check it?
By corruptions in other areas, I mean for example that barrier near the Crateria elevator: It turned unbreakable. Actually, every single PB block in Crateria turned unbreakable, and most of the 2x2 normally breakable blocks as well.
You literally just press A while in morph ball. Automatically moves you up the height of a full jump for some reason. I guess it just works differently in fusion.
Ohhh, cool. Yeah, that's pretty much how it looks in MZM as well... is all the OoB area in Fusion solid ground? It looks like there's no open area out there at all, which is a stark contrast to Zero Mission: In ZM, generally speaking there's just two blocks of solid wall right outside the controlled play area, and after that, it's a wide-open vertical space.
Also, uhh, Mobiusman was actually the one who found the tile corruption for ZM, messing around with the debug rom sometime last year.
EDIT:
OK I tried some OoB action in Fusion, and actually the OoB area is exactly the same in both games: a wide open vertical shaft on top of the play area, and then walls on the side. It's just that, in ZM we can't get inside those walls cause we can't clip sideways.
Also, it's possible to create physical objects using Fusion OoB as well. Regular breakable blocks can spawn at least, even inside the floor.
Link to video
Ok I'm gonna drop this here with a little description just to share the tech.
Basically, this is a pretty simple clip to get partially inside of a slope. It works in, I'd say most of the areas where you can freeze an enemy right above the point where the slope ends, or switches angle (or something to that nature). The enemy doesn't have to be airborne, it can traverse the slope, pop off the ground or whatever, it just seems the horizontal position is a key factor.
The angle of the slope determines how deep you clip: for 1x1 slopes, you get one block deep, for 1x2 slopes, you only get half-a-block deep. If you try to move to any direction after clipping, you will get pushed back up, so, it's not possible to actually entirely clip through anything with this.
So, what's the point? Well, you can do a reverse shine recharge, demonstration here:
Link to video
The above video actually uses a different type of a clip, that we haven't been able to recreate anywhere else in the game (there's two slopes in that particular area where this is possible). But you should get the gist of it anyway: once inside the slope a little bit, just shinespark the other way and you get a speed boost.
Most of the time when clipping inside of a slope, you will not be falling per se, so you can't do a mid-air spark off the bat. However, once you land inside a slope, you can just plant a bomb, unmorph the frame it explodes, and that gives you a frame of airtime for a low-height spark.
Also, this sort of works in Fusion as well, I guess. I messed around with this a little bit, but I haven't been able to stay inside the slope after clipping... thus I haven't been able to get a reverse shinecharge. Concept-wise, reverse-shinecharging in Fusion works just fine: if you'd be a couple of pixels inside of a slope, you could just do 1 frame of ball jump, and then immediately spark the other way to get a speed boost back.
EDIT:
Oh, yeah. If you're wondering why the videos are lacking content or description, it's just because they're just very crude demonstrations of a mechanic. If I ever find something neat to do with this, I'll make a better vid and make it public.
This is a biiiiit off topic, but a player testing mGBA for me described a bug wherein pressing left resulted in the game going right, but only with Samus's walking. The menus worked fine and morphing fixed it. I'm inclined to think it's a bug in mGBA, but the player thinks it's a game bug. Has anyone encountered this bug while working through Zero Mission in VBA/BizHawk? They said it "happened after I jumped into a wall/celing at an angle".
E] To elaborate, the bad state is when the memory at 0x30013E2 is 0x0030. It's usually 0x20 for facing left or 0x10 for facing right. When it's 0x30, it gets very confused and can only walk right. Moreover, setting it to 0x00 causes it to get set to 0x30 when you attempt to move next. The player said the next time it happened, they were "just screw attacking". I'm inclined to think that there's a rogue write happening to that address somewhere, setting it to zero, but I'm not sure where.
E2] After looking at it closer, I'm pretty sure this is an mGBA bug, so I filed it. Still curious to find out if anyone might have any info on it though.
Well, as a matter of fact I do have info about it, heh. It's a Left+Right glitch.
Morph into a ball and push Left+Right on the same frame, and this causes the Left-input to be Right. Morph Ball by itself doesn't per se fix the glitch, it gets negated if you're at stand-still as Morph Ball, and then start moving again.
Hmm, I can definitely repro it while in morph ball, but not when I do the same thing while jumping. The player said he was doing it while jumping, so it might be coincidentally triggering the same state.
Well, yeah, it can only be activated while on the ground as morph ball. My guess is he had done exactly that, and only noticed the glitch had triggered once he started jumping.
Maybe there's another explanation, but I'm kind of doubtful.
Right, I couldn't find anything special about it when I messed around with it, it didn't seem to do anything different than just regularly pushing right. RIGHT.