TASVideos

Tool-assisted game movies
When human skills are just not enough

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

Console: Game Boy Advance
Game name: X-Men: The Official Game
Game version: USA
ROM filename: 2405 - X-Men - The Official Game (U)(Trashman).gba
Branch:
Emulator: BizHawk-2.2.1
Movie length: 12:35.8
FrameCount: 45142
Re-record count: 7770
Author's real name: Matt B.
Author's nickname: TehBerral
Submitter: TehBerral
Submitted at: 2018-03-11 16:38:49
Text last edited at: 2018-03-23 17:22:11
Text last edited by: Stovent
Download: Download (28901 bytes)
Status: published
Click to view the actual publication
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:

(Link to video)

Game Objectives

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.

Area Current pub This Run frames saved
Danger Room 2084 2069 15
VR Sabretooth 919 766 153
Alkali Entrance 1883 1776 107
Gas room 389 296 93
Wiring Shaft 1525 1511 14
Maint. Tunnel 2097 1888 209
Juggernaut 514 511 3
Maint. Tunnel 2 2435 2363 72
Half Sentinel 947 839 108
Elvator Shaft 5088 5064 24
Office 1 770 356 414
Office 2 392 381 11
Lab 1 1442 1187 255
Pyro 476 445 31
Lab 2 1032 755 277
Sewer 1068 994 74
X 23 455 435 20
Comm. Room 1 1065 894 171
Sabretooth 950 659 291
Comm. Room 2 666 533 133
Mystique 762 653 109
Stronghold 1801 945 856
Stryker 654 505 149
Hangar 600 535 65
Multiple Man 3992 3982 10
Master Mold 3042 2413 629

Crnt. Pub. total: 36,585
This run’s total: 32,755
TOTAL FRAMES SAVED: 3,830

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

Bobby moves at nothing per pixel because he's useless.

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:

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.

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.

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...


Similar submissions (by title and categories where applicable):