- Takes damage to save time
- Uses death to save time
- Major glitch abuse
- Uses hardest difficulty
- Wall-Clipping J can only stand on a block if he is at least 5 pixels onto it (all tiles are 8x8 pixels). Keep that in mind, it’ll be important.
J can only move at two speeds: 2 p/f (pixels per frame) while walking, or 5 p/f when running. If J initializes a run up against a wall, the game will try to eject him out. By turning on the frame the game tries to eject J, he will be pushed into the wall 5 pixels. If J is at least 5 pixels onto the first wall tile, he will be able to jump up the tiles. J isn’t able to move forward after that, unfortunately, so you can’t just double clip through two tiles to instantly underflow the level position.
The pixel J is stopped on when running into a wall isn’t static. For instance, in the first MIB HQ room, J needs to hit the wall at pixel 36, but more commonly you’ll hit the wall on pixel 38.
Long story short: walk a few frames (or however many you need to get J onto an odd pixel) so J hits the wall at the farthest possible pixel and will allow J to clip into the wall with little effort.
- Out of Bounds Once J goes off screen, there is a lot of garbage data to navigate, mostly kill-zones. The behaviour of the out of bounds sections is different depending on the level, so I’ll get into that as we go.
Probably the most important RAM addresses you’ll need are J’s level X positions.
|01F9||level X||1 byte unsigned|
|01FA||level X 2nd byte||1 byte unsigned|
- Room 1 J starts on pixel 64 and needs to clip into the wall by reaching pixel 31. By better manipulating where J’s position is by walking for 2 frames before running, I save 30 frames (10 inputs) by almost immediately clipping into the wall.
- Room 2 Because the pixel of the wall (20) is even, I can have J run immediately after turning to clip into the 15th pixel so the transition from running to jumping is nearly seamless. 9 frames were saved in this stage.
- Room 3 6 frames were saved here through avoiding having to twitch into the wall. I actually exit the stage 7 frames sooner. The thing is, I can typically only save time in increments of 3 frames. Sometimes, though, the game will load another stage a frame or two earlier, and then it’s made up by the loading transition.
- Room 4 Much like Room 2 the pixel you need J to clip into is 15, so the run up to the wall and immediate clip saved another 9 frames.
The OoB in this stage is tricky. This stage has underground sections that J can fall into while OoB. There are also A LOT of killzones as well.
In order to perform the screen-wrap, I obviously need J to reach level position 255 on screen 255. Problem is that simply going out of bounds and heading left will either stop J at around pixel 15, if J doesn't die immediately. The only way to move past the solid blocks in front of J is to jump - if it doesn't kill him. Another way to force J to move farther left is, oddly, to hold right for a few frames before continuing to push left. Eventually through jumping and pushing left you can get the level position to underflow to 255.
After finding the optimal amount of frames to hold right to allow J to move left more, I had to find the best optimal movement to force the level underflow. This may sound daunting, but remember that the game only accepts input every three frames, so testing different movement possibilities wasn't actually that hard assuming I jump out of bounds correctly in the first place so that J doesn't die.
Once the underflow happens, the game takes the next couple frames to examine which checkpoint you've passed. By holding right and jump at the same time J will be killed by an off-screen killzone. You don't want to do this right away because you'll only be placed at the first checkpoint. You want to wait at least 4 frames for the game to see that your current position is past the last checkpoint in the stage.
The game basically says: Frame 1: “oh you did pass the first checkpoint before you died! How niiice!” Frame 2: “oooohhh you also passed the second checkpoint!! Good SHOW!!” Frame 3: *agressively fanning self* “MY WORD, YOU’VE GOTTEN SO FAR SWEET CHILD!!!” Frame 4: “hmmmmmmm OH yes! You’ve died at the last checkpoint! Make haste to victory!!!!”.
[Ideally read in Hedonismbot’s voice]
This overall saves a whopping 1,903 frames.
I found that by sitting right next to Treblor as close as possible, he ends up shooting at the ground making easy work of him. This technique saved another 49 frames, amounting to being ahead of the current publication by 1,952 frames.
I managed to save another 7 frames through better wall clipping. Another 39 frames were saved by killing J quicker off-screen - thus warping him to the last checkpoint.
By shooting the Skraaldian from farther away and taking damage better from its shots I end the stage 2,023 ahead of the current publication.
The 5 frames were saved simply through better wall-clipping. Not much to say about this stage. Even the OoB is fairly simple in this stage. Just by holding jump and left hits the level exit (wish all of the levels were like that).
In any case, that has me at 2028 ahead.
Gonna be honest, the current publication sucks in this stage!
One immediate improvement was turning in mid-air while scaling the wall. This saves the slooooooowww turning animation.
So I couldn’t find a way to kill J OoB in this stage, and even if you trigger Treblor to show up while OoB, his projectiles don’t appear. So the only course of action is to run over top of the stage and get killed in-bounds. Treblor doesn’t shoot right away, but I found by only scrolling into range underhim around the time his AI activates he’s more likely to fire straight downward. This makes killing J much quicker. The Treblor fight kinda sucks in that the trigger for Treblor to show up is while J is on the ladder, which makes it imposible to get up close (optimally) like the other Treblor encounters.
One thing I should mention here is stutter-stepping.
You see, J can shoot while running but it isn’t as simple as firing any frame you want, or simply firing after a certain number of frames. J can only shoot when in a very specific part of his run cycle animation. By holding turbo forward (right in this case) J with stutter between his first 2 frames of his run animation without losing speed. As such, you can control when J shoots by simply restarting his run cycle anytime you want.
Now onto the fight at the end of the stage (despite my, frankly useless, knowledge of the show I can’t remember what kind of alien this guy is). A problem that I’ve encountered since I first looked into this game, I haven’t been able to manipulate this dude’s (I shall call him “Greg”) AI whatsoever. I have found by entering his general vacinity on different frames you can slightly change his pattern, but I wasn’t able to find a way to get him to jump more often than this without wasting time.
Sidenote: for some reason, if you actually touch any of the bosses in this game, you instantly die. Neat.
I was finally able to find a way to navigate the OoB to avoid that extremely abundant killzones. Much like Manhattan, you have to jump on very exact frames while moving left OoB to get the level position to drop below zero. Once that happens, I have to wait 4 frames before holding jump and right to instantly kill J (wish that worked on the roof).
So for Treblor again, it was best to stand close to him. I still had to take a hit so Treblor’s arm didn’t insta-kill me, but I still come away from this fight 3,698 frames ahead of the publication.
Treblor then reveals himself to be BUZZARD ALL ALONG!! If you didn’t watch the show this means literally zero to you, and means even less so since he’s dead now.
After Noisy Cricketing the crap out of Buzzard and shooting the cocoon with K inside of it, I end the movie with a 3,707 frame improvement!