Submission #5851: TehBerral's GBA X-Men: The Official Game in 12:35.80

Console Game Boy Advance Emulator BizHawk-2.2.1
Game Version USA Frame Count 45142
ROM Filename 2405 - X-Men - The Official Game (U)(Trashman).gba Frame Rate 59.7275005696058
Branch Rerecord Count 7770
Unknown Authors TehBerral
Game X-Men: The Official Game
Submitted by TehBerral on 3/11/2018 4:38:48 PM

Submission Comments
Game Objectives
  • Takes damage to save time
  • Heavy glitch abuse
  • Manipulates luck (somewhat)
Small thing I wanted to note before anyone asks: the re-record count is pretty low due to my method of TASing. In order to test different viable strats I use multiple instances of BizHawk to test, and then I apply the fastest strats to the final file (this one). I started doing this a while ago, but this was by far the most streamlined I've been able to make it (helps that I have a PC that doesn't crash when you load 2 instances of notepad now too).
To compensate for any differences in load times (the GBA splash screen being present, for one) I thought it would be best to show a stage-by-stage comparison of frames and the improvements found.
Timing starts from the first frame you are given control of a character, to the frame when the game takes control away from the player.
AreaCurrent pubThis Runframes saved
Danger Room2084206915
VR Sabretooth 919766153
Alkali Entrance18831776107
Gas room38929693
Wiring Shaft1525151114
Maint. Tunnel20971888209
Maint. Tunnel 22435236372
Half Sentinel947839108
Elvator Shaft5088506424
Office 1770356414
Office 239238111
Lab 114421187255
Lab 21032755277
X 2345543520
Comm. Room 11065894171
Comm. Room 2666533133
Mystique 762653109
Multiple Man3992398210
Master Mold30422413629
Crnt. Pub. total:36,585
This run’s total:32,755
despite this, this file only beats the last pub by the aesthetically pleasing 3,030 frames.
Some Notes So I want to start this off with some general things that you'll see in the run that may need some ‘splainin'. I don't know what I might have covered in my previous publications' author's notes (how awkwardly worded), but I don't care. This is the only TAS of this game you should be watching! I could barely watch my last X-Men TASes with the many obvious improvements I was able to make here. Firstly, I'm gonna lay out some terms that I'm gonna use to streamline my notes so I don't have to say “teleport glitch” seventeen smegtillion times.
Bamf = Teleport glitch, or any teleport, really.
Snikt = Wolverine super-sexy claw attack
Boost = blue pellets that allow for increased attack power when a “rage mode” of sorts is activated with the R button. This boost depletes while in this state.
Ninja dudes = red bois
Green dudes = green dudes that drop good things when killed just right
Bobby = useless
General Notes
  • opening: With the brand new super nostalgic GBA fwowwn ba-ding! present in BizHawk it added enough frames to drastically shift the enemy attack patterns - which is largely based on the frame counter. You can still manipulate them but I'll get into that in a second. So even though I had a WIP using BizHawk a while ago, I had to start %150 from scratch in terms of enemy strats.
  • Movement: Wolverine moves at a consistent 3 p/f (pixels per frame) while Colossus loses a pixel every 5 frames. As such Wolverine is preferred in addition to being able to jump higher than Colossus. Nightcrawler cycles between 3 p/f and 4 p/f every other frame. But that isn't so useful for obvious reasons.
Bobby moves at nothing per pixel because he's useless.
  • Attacking: The fastest way to attack an enemy is to jump and attack in mid-air. Problem is, when you connect an attack, your's and the enemy's movements are frozen for 7 frames. Optimally, you avoid attacking enemies all together, but that just isn't possible in a lot of cases (at least quickly).
  • Bosses: Stun-locking bosses is on a spectrum of sorts. You can outright stun-lock a boss (see: X23). Some bosses have attacks they'll perform once they reach a certain level in thier HP, but can be stun-locked until and after then (See: Sabretooth and Juggernaut). Some bosses cannot be stun-locked at all (see: Pyro).
Certain bosses are made easier depending on which X-Man you use. The half-Sentinel fight, for instance, ‘’can'’ crash with Colossus but it doesn't happen nearly as quickly (more theories on that later). And Colossus' longer upward punch allows for more hits to land during the lag (again, more on that later). As a bonus, it adds a lot more variety to the run to have different X-Men fight different bosses, rather than Wolverine for running until Nightcrawler is unlocked, Colossus for boss fights and destroying walls, and Iceman to do nothing.
Danger Room This was one of the more optimized stages in the last publication (it is the first stage, after all) but I was able to squeeze some more frames out of it by tightening Wolverine's movement and finding new strats to deal with, or avoid enemies better.
There aren't too many huge improvements to note, but one thing I did want to touch on is an enemy toward the end of the stage. If you watch this slowed down at all, you'll notice that I jump over one of the ninja dudes, fall into his hitbox, and turn for a couple frames before hold right again. This is because I needed not only that ninja dude and the next one to jump to the left to get out of Wolverine's way. By staying on the ninja's right side on the frame that his AI activates to attack, the ninja dude will jump toward whichever side of the enemy Wolverine is on. This principle is true of all enemies.
The reason why this helps for the next dude is enemies react depending on what others around them do (they lack the backbone to avoid following down the folly path of their ninja dude cohorts. Sad.)
Tl;dr, the first dude jumps, second yells: “wait for me!”
Another subtle optimization is that when ascending the step formations, but holding against the walls and by holding jump for only the minimum amount of frames necessary to reach the platform Wolverine will clip onto the platform a frame sooner. This is something present in every stage and made vertical climbing sections much tighter.
VR Sabretooth Sabretooth can easily be stun-locked up until his health drops down to a specific point. After you get Sabretooth's health low enough he goes into a charge attack. I used this time to run to the other side of the stage to jump up and grab the big boost pellet up top. Once he lands, it's simply attacking him so that the frame the attack hits is also the frame his AI activates and he's done. One thing to note about all bosses is landing the last with with an uppercut is always best. You can chain kt immediately after a regular attack, but the animation is too long to use for every hit. So I use the attack as a sort of 1-2 punch at the end.
Alkali Entrance I saved almost 2 seconds just from tighter platforming. I found by stoping horizontal movement just before reaching a platform Wolverine lands a frame or two quicker each time. I also found you can buffer Wolverine's jump to skip a frame of Wolverine's landing animation.
Another time save was not switching back to Wolverine after destroying the containers at the end of the stage. I have no idea what I was thinking. Colossus does lose a pixel every 5 frames of running so Wolverine is ‘’technically'’ faster, but not enough to justify the time lost switching back to him. Plus it's better overall that Colossus takes both big boosts. On top of that, the next stage automatically switches back to Colossus.
Gas Room One note: every 120 frames your character will “cough” from the gas. You can negate this by switching characters on the 120th frame. I do not use this because I use the “cough” to cancel the much longer downward punch animation just after destroying the container. I could have canceled the second cough but that would require sitting still for longer than it's worth.
As such, it was faster to smash the containers and drop out of the stage.
Wiring Shaft Hit less platforms; save 15 frames. Dunzo!
Maintenance Tunnel 1 Wolverine's jumping isn't exactly random, though it does at some nice variety in movement. Enemies spawn based on screen position, not necessarily how close they are to Wolverine. So the jumping at certain sections causes enemies, especially in the vertical sections, to spawn and head into their attack AI in a way that makes them easier to deal with. (i.e. they aren't shooting at me). At the top of the stage there's an enemy that I was able to completely despawn using this technique. This is the easiest stage to get this to happen in with it being so vertically structured. Horizontally I couldn't really get the enemy patterns to change in any meaningful way.
The boost was dulled out slightly differently than the last run, to make up for the extra boost Wolverine missed picking up in Alkali (Which went to Colossus).
Juggernaut There isn't much change from the last run with this fight. The three frames save came from just tanking the punch with Colossus and continue punching.
Maintenance Tunnel 2 There isn't much to say in terms of optimization here. The biggest help was reevaluating the upper and lower paths and found simply changing the route saved a lot of time. A lot of the ways I deal with later enemies is typically the set up the electric wand guys at the end of the stage. You really don't want these guys moving too much, or attacking so that Wolverine can simply jump over them quickly. As established, how you attack enemies in a stage will change the AI of later enemies, even if you get there at the same time.
Half-Built Sentinel As a precaution: I am not great at getting under the hood with how exactly the game processes things. I wanna get better but at the moment I can only offer observational theories as to why the game does what it does. I'm always open for conversation and learning from those who are more knowledgeable about programming. And hopefully in the future I can find more efficient ways to break this fight more. That being said...
From what I can tell, in order to trigger the boss fight to crash, I have to wait until the Sentinel finishes his laser attack and spawns the drones. Drones cause a lot of lag, and the more I can have on screen, the better. The Sentinel will only spawn two at a time so once they spawn I can proceed with the glitch. What I've found to work is:
  • Have Wolverine in boost mode
  • Damage all 3 parts of the Sentinel at once
  • Destroy both drones
  • Run to the left while the drones are exploding
This has been the consistent method of crashing ths fight that I've found to work everytime, even in real-time.
Elevator Shaft This is an auto-scroller, so the best thing to do here is farm the boost I'll need until Comm. Room 1. The reason why that level is important is because I'll pick up a x4 boost pellet for Colossus there which will be enough for the rest of the game. But before that I need Wolverine to have at least x2 and Colossus x1. The green dudes are the only enemies here who drop big boost pellets, and they don't come until later in the stage. Until then, you can combo attacks to gain more boost than usual from punching (or snikting) enemies.
I try and play around as much as I can, but there's only so much I can do. This is one of the more boring sections in my opinion. That said, just before the elevator starts dropping I switch to Nightcrawler and activate the bamf glitch and that's where things get interesting.
So I actually didn't think the bamf glitch was possible with more accurate emulation at first. I kept trying to activate it the same way as my last runs (which were on VBA) and it wouldn't work. I found out that the glitch still works, the timing is just much tighter than before (explained more below).
I'll go more into how to trigger the glitch in the next section, but what's important here is that the glitch can't be triggered when the elevator is falling. This is where a bit of speed/entertainment tradeoffs came in. Every time you bamf it causes a lag frame, but since it would get very boring watch me sit still during waiting periods I decided to play around a bit with bamfing during the fall and after boss fights when I can.
Sidenote about teleporting I thought this would be a good time to explain how to do the teleport glitch (Bamf glitch) before explaining how it's applied in this run.
  • Horizontal Bamf: To glitch teleport, you have to initially trigger the glich before you can chain it. To trigger the glitch, Nightcrawler has to jump and you have to hit the attack button 2 frames before colliding with the ground. Then on the next frame you have to hit the jump button again to activate the bamf. After that you can bamf with the glitched animation as long as you're in the air. If you teleport on the ground it will cancel the glitch. The same thing happens if you teleport vertically incorrectly, use a regular attack, or switch characters.
  • Vertical Bamf: To glitch bamf vertically, you have to have triggered the glitch initially like explained above. From there you have to jump and attack. On the first frame that Nightcrawler visually starts to punch, press up and jump on the same frame. You can't press up not even a frame before, because Nightcrawler will start his backflip attack. Any attack will break the glitch, and you'll have to re-initialize the bamf glitch.
To chain it, after Nightcrawler reemerges from a bamf, allow Nightcrawler to drop down for 2 frames, press the attack button, allow him to drop for one more frame, and then on the next frame press up and attack on the same frame. The final up+A input isn't frame perfect, but you have very little time in most cases to pull it off in real-time.
Office 1 & 2 Figured I'd lump these two stages together, the biggest time save for the Nightcrawler stages came from hitting less enemies. Hitting an enemy is subject to the 7-frame pause as attacking by any other means. As such, a lot of planning went into planning where to bamf and spacing them out accordingly.
Lab 1 So, just as a warning, most stages are gonna be improving on spacing bamfs better, and hitting less enemies.
Pyro I really hate this fight. The fastest way to kill him is to have Wolverine 1-2 snikt him a few times, but each 1-2 attack has about a 1-3 frame margin of error, not hard for a TAS, obviously, but getting Wolverine inside of Pyro's hit box to keep him from jumping away in that time was another story. Colossus can technically deal more damage, but he doesn't move fast enough, or jump high enough to attack Pyro in any sort of timely manner.
One thing to note about Nightcrawler is that it is possible to re-initialize the bamf glitch, but not only does this end the stage about 20 frames slower, triggering it in the next stage, for whatever reason, makes the bamf glitch out much, muuuchh faster.
Lab 2 Second verse; same as the first.
Sewer IIII'm 'enery the eight I am!!
'enery the eight I AM I AM
X-23 She was handled basically identically to the last TAS. The time save came from tighter punching. I've found that you can punch a frame earlier each time with Colossus than I had previously thought.
Comm. Room 1 The only thing of note here is that I have Colossus grab the x4 boost pellet in this stage. This is all he will need for the rest of the game.
Sabretooth Turns out Colossus damages Sabretooth much much more.
Comm. Room 2 For the vertical sections I have Nightcrawler jump for a frame before bamfing upward again. This actually saved ONE WHOLE BAMF during the longest vertical section.
Mystique Turns out Colossus damages Mystique much much more.
Stronghold I actually really hate this stage because of all the slopes that Nightcrawler can't teleport through. Optimizing the jumping as well as spacing bamfs out to avoid enemies took the longest out of any of the Nightcrawler stages.
Stryker Nightcrawler's bamf smoke does a decent amount of damage to the mech, but unfortunately I can only have him do it once before Nightcrawler dies from getting hit by the mech. I can't have Nightcrawler die obviously since he won't come back for the next stages. After that I send in Wolverine to finish the job.
Hangar The saddest part about this stage is that there's actually a really cool and foreboding section showing Master Mold in the distance, but everything moves so fast you never get to see it.
Multiple Man I use the bamf smoke at the end to get a hit in early and smack him a couple times from there. No problem.
Master Mold A HUUUUUGE time save was being able to skip it's first laser phase. Also, killing Bobby saves about 274639 subpixels, trust me.
Okay, but seriously, there was a lot that went into this fight. In case you don't know, you're supposed to go an entire huge level before the boss fight, but with very precisely timed and placed bamfs you can come in backwards into the final boss fight, and skip the whole level.
  • Phase 1 I could've had Nightcrawler teleport directly up to him but that would've, funny enough, activated Master Mold's AI too quickly, so I have him stop short. Master Mold spits out a fireball faster or slower based on when you activate his AI. Ironically, you want him to take his time spitting this out so Colossus can land as many shots as possible. In phase 1 Colossus was able to take out the first forth without it having a chance to attack.
  • Phase 2 Much like the sentinel fight, you want drones to spawn so you can lag out the game with their explosion animation. This makes Colossus' uppercut connect multiple times to shutout the phase.
  • Phase 3 This is where he begins his laser attack, which is a one-hit kill. Thankfully, the first attack is slow enough for Colossus to skip it entirely. This was a big source of improvement compared to the last TAS.
  • Phase 4 Unfortunately, the second form of the laser attack comes out faster than the last phase so there's no way for Colossus to attack fast enough to skip this stage, so I have to wait out the laser. Iceman tries to look at the pretty lights and gets drilled in the process (idiot). And Colossus finishes off the fight. I have Colossus head to the right after destroying the generator to take out the 2 drones stacked on top of each other to lessen lag. After that I have him hang out toward the left, to put the explosions off-screen. This saved around 40 frames by itself.
And with that, a 3,030 frame improvement, on a good emulator, of a game I never thought I'd take a second look at.
Special thanks to my wife for listening to me rant incessantly about Pyro's AI.

ThunderAxe31: Judging.
ThunderAxe31: Accepting as improvement of the published movie.
Stovent: Processing...

Last Edited by on 1/1/2022 6:13 PM
Page History Latest diff List Referrers