(Link to video)
  • Emulator: lsnes rr2-beta23
  • Rom: Final Fantasy III (U) (V1.0)
  • Aims for fastest time
  • Uses game-breaking glitch
  • Abuses programming errors
  • Manipulates luck
During the previous TAS, we managed to get the Moogle Kutan in our crew to save the world. We are pleased to announce that this time, we also managed to get Kurin with us. As a side effect, we saved more than two hours and a half over the previous TAS, achieving a final time of 32 minutes and 54 seconds using a new game breaking glitch involving 52 gameover in a row on the world map.

Gameover glitch

On May 2015, a new ff6 glitch was discovered, where dying 52 times in a row on the world map leads to odd consequences. Often the game will freeze, sometimes it will trigger glitched cutscenes.

Deciphering

In this game, the developers have implemented a script language for scripted events, which contains everything from music, graphical effects, invoking windows, dialogues, character movements, etc. Two events in this game have a behaviour very close to the JSR and RTS assembly instructions. The first one (event B2) saves the pointer to the current event into a stack and starts executing a series of sub events. The second one (event FE) finishes the series of sub events by loading the event pointer from the top of the stack. Every call to event B2 is meant to be eventually followed by a call to event FE.
During a gameover screen, however, the game calls event B2 twice but only once event FE. This has the consequence of filling the event pointer stack, which can lead to a stack overflow with repeating gameovers. This is generally unnoticed, because entering any inside map (towns or dungeons) will clear the event pointer stack.
The event pointer stack is stored starting $0594 and the size of the stack is stored in $E8 and $12E8 (backup). The memory after this stack is largely unused, the only addresses that are often written by the game are located at $0630-$0632. The game repeatedly stores into $0630 the horizontal scanline location, into $0631 the vertical scanline location and into $0632 the maximum of all $0631 values. We are not sure if these values are actually used by the game.
After the 51 gameover, $E8 contains 0x99. At the 52nd gameover, the game writes the event pointer to $062D-$062F (first call to event B2) then to $0630-$0632 (second call to event B2). Before the game executes event FE, the values in $0630-$0632 have changed and contains the some scanline location coordinates. The game loads those values as the current event pointer, and executes events starting this location. This is what is causing the glitch.
By conducting a lot of tests, we observed that address $0630-$0632 is dependent on the frame where the gameover is confirmed, the inputs pressed 3 frames before confirmation and the number of characters in the party.

Triggering the ending

To trigger the game ending, one way is to set the event pointer to the address of the ending, which is located at $CA0F70 (just after the boss fight). However, the game will freeze if we jump there because it will try to move characters which are not present. Pointing after the post-Kefka dialogues does work, which was done in the present TAS (address $CA134E).
As expected, no value of $0630-$0632 comes near the values required to launch the ending sequence. Luckily, most of the values in $0630-$0632 actually point to RAM addresses, between $1700 and $2000. Here is a summary of what is present in these addresses:
$1600-$184F: Character data (592 bytes, 37 bytes each character)
$1850-$185F: Setup of current party (which party/slot/row for each character)
$1860-$1862: Gold
$1863-$1865: Game time
$1866-$1868: Steps
$1869-$1968: Items possessed
$1969-$1A68: Item quantities
$1A69-$1D4C: Espers, Magic, SwdTechs, Blitz, Lores, Rages, Dances
$1D4D-$1DC6: Menu configuration
$1DC7-$1FFF: Various stuff 

Our goal is to write somewhere in RAM an event that will jump to the ending. A few events can do that: B2, B3, B6, B7, BD, BE, C0-CF, following by the destination address (e.g. B2 4E 13 00 jumps to $CA0000 + $00134E = $CA134E). The values inside $0630-$0632 heavily depend on the number of characters in the party. Here is roughly which address we have access:
  • 1 character: $1700-$1900
  • 2 characters: $1900-$1B00
  • 3 characters: $1B00-$1D00
  • 4 characters: $1D00-$1FFF
The earliest point where we can trigger the glitch is with a party of two characters. With this party, we can jump to the addresses storing the inventory, the Espers and magics. The problem is that we cannot write any of the jumping events above in memory because no item with the corresponding id is available, and we are limited to 99 for item quantities. Of course, we don't have any Esper or magic available.
Then, for a very small time, we have access to a 1 character party (solo Terra) during Figaro castle. With this party, we can jump to part of the character data, gold, game time, steps and part of the inventory. Character data would have been very encouraging, but the only characters we can control are Terra and Locke, which are at the beginning of the section, outside our range. Like before, we cannot write the event code using the inventory, but we can use either one byte of the Gold or one byte of the step counter easily. The second problem was to write the destination address in RAM next to the event code, which is of the form XX 13 00 with XX being several values possible between 0x20 and 0x70. We couldn't manage to write these values, however we could make an intermediate jump to a much more friendly area in RAM where we can control values: the config menu. It is located starting $1D4D and luckily, we have access to the Mithril Pike (id 1D), the Buckler (id 5A) and the Mithril Shield (id 5C).
Here is the state of the memory starting $1860:
|     Gold     |   Game Time  | Step counter |                  Inventory
| A0 | xx | xx | xx | xx | xx | C1 | xx | xx |   01    |  00  |   5A    |   1D    |   5C    |
                                               Mithril | Dirk | Buckler | Mithril | Mithril |
                                               Knife   |      |         |  Pike   | Shield  |
We tried to jump directly to the step counter, but we only could jump to the Gold address. That is why we manipulated the first byte of the Gold value to be A0 (by selling stuff), an event which takes 5 bytes as argument, so that we arrive at the beginning of the step counter.
Event C1 has 3 arguments: t1 (2 bytes), t2 (2 bytes) and addr (3 bytes). The meaning of this event is: if the story bit t1 or the story bit t2 is true, then jump to $CA0000+addr. We manipulated t2 with the MithrilKnife and the Dirk so that the corresponding story bit is true. So the game jumps at $CA0000 + $5C1D5A = $261D5A, which is the RAM address $1D5A, in the middle of the colours of the windows.
Now we have full control over the events we can trigger. We previously changed the value of those colours so that the bytes starting $1D5A are:
  • 5B is a no argument event that does (almost) nothing. We couldn't write B2 on the first byte because the way the colours are stored implied that every other value must be below 7E.
  • B2 00 53 00 jumps to address $CA0000 + $005300 = $CA5300. This is the very end of the world destruction sequence that loads the World of Ruin maps. It was necessary to avoid a softlock during the game ending.
  • A9 triggers the game opening, because why not.
  • 5C is another dummy event like 5B
  • B2 4E 13 00 jumps to address $CA0000 + $00134E = $CA134E. This triggers the ending sequence.

Run comments

Narshe

As opposed to the previous TAS, we did not need to level-up Terra so that other characters who join get a higher level. However, we still need Terra to be at least level 4 so that the quick kill on Whelk is possible. The fastest way we found was to escape the first and fourth fights, to fight the third one and to make Wedge escape the second fight. This gives level 4-3-2 for Terra, Vicks and Wedge, respectively. The quick kill on Whelk was barely possible by manipulating the random damage to always be a high value. The fight against Marshal and Lobo was improved from the previous TAS by manipulating both Lobo not to attack. Both Mithril Pike and Mithril Shield are removed from Mog for the glitch.
Extra steps were used to manipulate the battle RNG, because we had to do a lot of steps anyway for the glitch.

Figaro

The inventory is sorted as described above during the two random fights to Figaro castle. After being solo Terra, two Tonics and 4 Echo Screen are bought to get Gold to xxxxA0. Then the remaining number of steps are performed to get the number xxxxC1 at the second fight in the world map.
The first fight in the desert is manipulated to get Terra's HP as low as possible. A critical could not be manipulated for the Sand Ray because this enemy has the bad habit of skipping his turn; it was replaced with his special attack.

Glitch

One step before the second fight, the battle speed was set to 1 so that the enemy can act faster. The fight to get the gameover to was chosen to be a solo enemy, so that the initial ATB are very high. 51 gameover later, the message and gameover screen were confirmed at the right frame and the input was chosen so that the game loads address $1860 as the event pointer. As explained above, this eventually triggers the ending.

Special Thanks

  • pirohiko for posting the new glitch in the ff6 topic
  • Catastrophe for helping disassembling the new glitch
  • Yousei for providing a very detailed description of the ff6 ROM, including the list of events
  • Imzogelmo for providing a dump of the entire list of events of the game

ars4326: (Replaced movie file with updated version that accesses full ending). Claimed for judging!
ars4326: Hello, Keylie and Kadmony. Fantastic work on executing this unique 'game end glitch' method, as well as listing out the intricate details in the submission text. The minor strategic optimizations made during battles were a treat to watch, as well. Altogether though, as others have expressed in the thread, there honestly just isn't too many ways that one can make 52 straight game-overs entertaining. The payoff of watching the glitched ending (with more Moogles, this time around!) was indeed enjoyable, but the more repetitive 15+ minute lead-in must also be considered. Outstanding work, nonetheless!
edit: Accepting for publication to the Vault, and to obsolete the current 'sketch glitch' run. Reason being, an issue was brought up in the thread concerning how this movie, initially (and similar to the 'sketch glitch' run) soft-locked at the end and didn't technically complete the game. Keylie addressed this and made some adjustments to this run which allowed the complete ending to take place. Therefore, for the sake of consistency, we've got to abide by this standard going forward. And since the 'sketch glitch' run soft-locks, it now must be obsoleted by a run that doesn't.
fsvgm777: Processing.

Joined: 5/12/2010
Posts: 38
I didn't rewatch the entire new encode, but I noticed that the ending does go all the way to the end and Locke is no longer in it. I'd change my vote to "Yes" if I could.
Joined: 11/17/2005
Posts: 278
Location: Massachusetts, USA
jlun2 wrote:
I'm curious on one thing now. I never played this game, so I don't know if the game has any post-credit content, but what happens if you continue on from this movie?
The game softlocks at "THE END". It never saves or resets. Usually, you've saved right before the final battle. And that's all you can do is reload from your last save. (Both the GBA and iOS versions change this. Bonus content is unlocked.)
Former player
Joined: 4/6/2006
Posts: 462
banned user wrote:
Surely here will accept any trash
I guess they don't accept just any trash after all.
Former player
Joined: 4/18/2015
Posts: 168
Location: Canada
erokky wrote:
banned user wrote:
Surely here will accept any trash
I guess they don't accept just any trash after all.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14873
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [2922] SNES Final Fantasy VI "game end glitch" by keylie & KadMony in 32:54.55
Experienced player (758)
Joined: 6/17/2008
Posts: 146
This movie currently obsoletes the "sketch glitch" run. I strongly disagree with this verdict and request clarification for the following reasons: 1) We accept all kinds of glitched endings, and very rarely reject unusual endings. What about softlocks at some point during the ending scene? The one submission that was rejected for having an invalid ending that I recall is that Pokémon Yellow submission that froze the game and failed to save the game as usually happens when entering the Hall of Fame, which was considered an essential part of the ending for Pokémon Yellow. I do not think a softlock 80-90% into the ending like in this submission's original movie file or the "sketch glitch" movie constitutes an invalid game completition. The ending sequence is very clearly triggered and runs most for the majority of its duration. Further, I would argue that the glitched ending of the "sketch glitch" movie is slightly MORE valid than a similarly softlocked ending in the original movie file of this submission, since that run fights and beats the final boss after completing the final dungeon, rather than directly triggering the ending scene. 2) ACE or "game end glitch", in general, does not obsolete other branches of games and is published alongside them as separate categories. I heard on IRC from fsvgm777 (not from ars4326 directly - the verdict does not cover any of these issues) that the deciding factor in the obsoletion was that the "sketch glitch" movie's ending was considered less valid. Even if the ending were slightly less valid than that of the replaced movie file in this submission, I do not believe that it justifies overriding the usual policy of allowing both ACE and other categories to coexist. An additional reason for not obsoleting besides followoing the usual category rules is that that this submission is Vault-level in entertainment, while the "sketch glitch" run is much more entertaining.
Skilled player (1706)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
Of all the game series with major glitches, I'm surprised Final Fantasy would actually get a branch arguement/debate. Also makes me wonder the reception if someone ever makes a run that uses this same glitch, but instead of the ending, triggers the final encounter. lol
Player (12)
Joined: 6/17/2006
Posts: 501
While I disagree with turska's opinion and believe the current judgement to be the correct one, I too would like clarification about the no-softlock endings going to be a standard going forward and why this was decided over the more inclusive approach or making split categories. I would like a general agreement on this matter to avoid the same debate to occur again in the future.
jlun2 wrote:
Also makes me wonder the reception if someone ever makes a run that uses this same glitch, but instead of the ending, triggers the final encounter. lol
This was already debated countless times, starting back when game end glitch runs was a new thing. The consensus is that beating the final boss is not part of what constitutes beating a game.
ars4326
He/Him
Experienced player (764)
Joined: 12/8/2012
Posts: 706
Location: Missouri, USA
Hi, everyone. I appreciate the feedback given over this recent decision, and will do my best to address the objections brought up. @Turska As I mentioned in irc, while I do agree that the 'sketch glitch' run is far more entertaining, Keylie's replacement of the original submission file, which corrected the soft-lock issue, made it necessary to address what to do with the prior publication. The dilemma I saw here, in essence, was "So we have a branch here with the 'correct ending', but we've also got a branch over here with the 'incorrect, soft-lock ending'." How do we now address this inconsistency? My solution: Have the 'game-end glitch' obsolete the current 'sketch glitch' so that we'll have a consistent precedent, going forward. And if Keylie can find a workaround in the 'sketch glitch' category that enables the ending to be completed (e.g. by either making similar adjustments that were made here, or completing the World of Ruin, etc.), then I see no reason why the 'sketch glitch' branch couldn't be "grafted" back in. All in all, I felt this was the most effective way to address the issue. @SmashManiac I do agree that it would be best to have a general agreement on this standard for "no soft-lock endings", going forward. Without attempting to speak for everyone on staff, I will see about getting this issue clarified so TASers will know what to expect regarding this.
"But as it is written, Eye hath not seen, nor ear heard, neither have entered into the heart of man, the things which God hath prepared for them that love him." - 1 Corinthians 2:9
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11267
Location: RU
turska wrote:
ACE or "game end glitch", in general, does not obsolete other branches of games and is published alongside them as separate categories.
X-Ray Super Metroid was obsoleted by GEG Super Metroid without arbitrary code, which was then obsoleted by GEG with arbitrary code. I don't know where you have that notion on ACE and game end glitch. The point of them is that they use Major skip glitch to skip dramatical part of the game, while other branches don't. There also was a case where we had 2 such runs coexisted (X-Ray and GT code GEG), but they both were obsoleted by GEG then, due to content overlap. So the same is with all other Major skip glitches (warp, sram, box, stairs, sketch, whatever). They don't obsolete each other only if the runs present significantly different content. Though if we ever see ACE playaround submitted, it would obviously be accepted as a new branch.
turska wrote:
We accept all kinds of glitched endings, and very rarely reject unusual endings. What about softlocks at some point during the ending scene? The one submission that was rejected for having an invalid ending that I recall is that Pokémon Yellow submission that froze the game and failed to save the game as usually happens when entering the Hall of Fame, which was considered an essential part of the ending for Pokémon Yellow. I do not think a softlock 80-90% into the ending like in this submission's original movie file or the "sketch glitch" movie constitutes an invalid game completition. The ending sequence is very clearly triggered and runs most for the majority of its duration. Further, I would argue that the glitched ending of the "sketch glitch" movie is slightly MORE valid than a similarly softlocked ending in the original movie file of this submission, since that run fights and beats the final boss after completing the final dungeon, rather than directly triggering the ending scene.
Pokemon was rejected not because it didn't save the game, but because the ending state of the game wasn't reached, none of the usual routines were executed as a result. p4wn3r explained why Pokemon wasn't even trying to end the game. Dragon View was accepted because it did get so the ending state, but it got some variables messed up and didn't show the full credits (there was a physical obstacle for the character in the in-game cutscene). SMW is accepted because there's nothing the game does or allows you to do after ending (I don't remember if RAM was checked). Some other games just behave as usual, so cause no problems.
jlun2 wrote:
Of all the game series with major glitches, I'm surprised Final Fantasy would actually get a branch arguement/debate. Also makes me wonder the reception if someone ever makes a run that uses this same glitch, but instead of the ending, triggers the final encounter. lol
We call that a warp glitch, it's also Major skip category.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Fortranm
He/Him
Editor, Experienced player (775)
Joined: 10/19/2013
Posts: 1115
From what I understand, the world destruction sequence has to be played to enable the full ending. A "sketch glitch" run that waits till the game processes into World of Ruin normally will probably look too similar to a "legit" run.
Player (12)
Joined: 6/17/2006
Posts: 501
I just noticed that the submission comments were updated to include how the softlock fix works as well. Thank you very much - these technical details are always super fun to read!
ars4326 wrote:
I do agree that it would be best to have a general agreement on this standard for "no soft-lock endings", going forward. Without attempting to speak for everyone on staff, I will see about getting this issue clarified so TASers will know what to expect regarding this.
Amazing, thank you! ^_^
Joined: 3/9/2009
Posts: 530
There was also recently the Super Pitfall run, although that was changed by the authors and no official judgement was made. On original submission, it was using a glitch to call the ending screen, but it didn't play the ending music nor activate the Second Quest by doing so. It was just erroneously loading the ending screen. The newer submissions actually call the ending so the Second Quest could be triggered from it. And are faster so would obsolete anyway, so it's kind of a moot point. In A Boy and his Blob, you can actually walk through the ending screens on the way to... triggering the ending screens. A little different again, but still a case of seeing the ending isn't really the real ending.
Joined: 1/13/2007
Posts: 335
The ruels are simple. if the game does provide any sort of game completion marker, then as long as you see the final bit of the end, and trip tht flag, it counts. SMB3 indeed has one. if you got a true ending you can start agin with an inventory full of P-Wings. but if there's no way to tell then the entire ending has to be shown for it to count i think.
Joined: 7/28/2005
Posts: 339
I kinda liked the old one more because of the smooth way it transitioned from the "game over" screen into the credits. It almost looked intentional.
keylie
He/Him
Editor, Emulator Coder, Expert player (2828)
Joined: 3/17/2013
Posts: 391
ars4326 wrote:
My solution: Have the 'game-end glitch' obsolete the current 'sketch glitch' so that we'll have a consistent precedent, going forward. And if Keylie can find a workaround in the 'sketch glitch' category that enables the ending to be completed (e.g. by either making similar adjustments that were made here, or completing the World of Ruin, etc.), then I see no reason why the 'sketch glitch' branch couldn't be "grafted" back in.
I personally feel that the ending in the sketch glitch run is "correct" even with the softlock, because it was executed normally and the softlock is due to an external factor (one map does not have the NPC it should, which appear during the World of Ruin transition). I understand the reason of this obsoletion, however I feel bad because it masks a great, rich and entertaining run with a poor and boring one. I don't see how the ending in the sketch glitch run could be fixed. We don't have the kind of control with the sketch glitch to launch a particular cutscene.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11267
Location: RU
keylie wrote:
I understand the reason of this obsoletion, however I feel bad because it masks a great, rich and entertaining run with a poor and boring one.
We do that all the time. [1208] SNES Chrono Trigger "newgame+" by inichi in 06:42.77 (8.2) [1285] SNES Chrono Trigger "save glitch" by inichi in 21:23.98 (8.1) [2047] SNES Chrono Trigger "save glitch" by turska & inichi in 03:28.06 (5.2)
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4016
feos wrote:
keylie wrote:
I understand the reason of this obsoletion, however I feel bad because it masks a great, rich and entertaining run with a poor and boring one.
We do that all the time. [1208] SNES Chrono Trigger "newgame+" by inichi in 06:42.77 (8.2) [1285] SNES Chrono Trigger "save glitch" by inichi in 21:23.98 (8.1) [2047] SNES Chrono Trigger "save glitch" by turska & inichi in 03:28.06 (5.2)
^ I'm still upset about this :(
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Joined: 11/17/2005
Posts: 278
Location: Massachusetts, USA
A moons run was just obsoleted by a vault run? How often does that happen? (Legacy moons aside.) I think it shouldn't. If the runs are different enough that one is a moon and the other is a vault, then the runs are doing very different things, right? I think the Sketch Glitch category is "any%" (with sequence breaks) and this run is "Game End Glitch".
Editor, Expert player (2015)
Joined: 8/25/2013
Posts: 1199
Catastrophe wrote:
A moons run was just obsoleted by a vault run? How often does that happen? (Legacy moons aside.)
[2047] SNES Chrono Trigger "save glitch" by turska & inichi in 03:28.06
effort on the first draft means less effort on any draft thereafter - some loser
keylie
He/Him
Editor, Emulator Coder, Expert player (2828)
Joined: 3/17/2013
Posts: 391
feos wrote:
keylie wrote:
I understand the reason of this obsoletion, however I feel bad because it masks a great, rich and entertaining run with a poor and boring one.
We do that all the time. [1208] SNES Chrono Trigger "newgame+" by inichi in 06:42.77 (8.2) [1285] SNES Chrono Trigger "save glitch" by inichi in 21:23.98 (8.1) [2047] SNES Chrono Trigger "save glitch" by turska & inichi in 03:28.06 (5.2)
You mean once ? This is not like the 3 minutes CT TAS obsoleted the 2h17 any% TAS, which is currently the case with ff6. To me there is a problem when improving the first TAS with one that uses the sketch glitch (about 40 minutes cut) yields a different category, while using a game breaking glitch that can be triggered after 15 minutes does not get its own category. I strongly support making the sketch TAS obsoleting the 4h TAS, and the lastest TAS on its own category.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11267
Location: RU
Not once, it was happening to all games with any% runs, when major skip glitch runs of them were submitted. With introduction of Moons, it became possible to unobsolete some of them as representing enough unique content over the "glitched" run. But it's unclear what to do to 2 runs that use the same type of a glitch to different amount. We don't yet have a notion of "less glitched" and ""more glitched" glitched branches. The old "glitched" branch is now divided by the type of a game-breaking glitch, and its general movie class is "major skip glitch", be it sram, warp or game end. Also, see this: http://tasvideos.org/MovieMaintenanceLog.html?id=450
Changed obsoleting movie to [2592] SNES Chrono Trigger by keylie in 2:17:08.86 from [1285] SNES Chrono Trigger "save glitch" by inichi in 21:23.98
And this: http://tasvideos.org/MovieMaintenanceLog.html?id=1920
Changed obsoleting movie to -1 from [2100] NES Battletoads "game end glitch" by TheZlomuS & DyLaX in 01:02.68
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
keylie
He/Him
Editor, Emulator Coder, Expert player (2828)
Joined: 3/17/2013
Posts: 391
feos wrote:
Not once, it was happening to all games with any% runs, when major skip glitch runs of them were submitted. With introduction of Moons, it became possible to unobsolete some of them as representing enough unique content over the "glitched" run.
Thanks for the clarification, I did not witness this change.
Joined: 7/28/2005
Posts: 339
"A9 triggers the game opening, because why not." How does the opening not waste time?