(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
  • Features mid-frame resets
  • Corrupts save data
  • Manipulates luck
This is an improvement of 30127 frames from the previously published TAS, using mid-frame resets to skip another portion of the game and to speed up the fights. Like the previous TAS, it uses the 52 game-over glitch to trigger the ending. The mechanics of this glitch were described in the previous TAS, so we will only detail the improvements of the present TAS. Comments are embedded in the above video and are available here.

Early Narshe escape

When Terra wakes up in Arvis house and leaves the house to escape through the caves, there is a invisible NPC placed in front of the backdoor to prevent Terra from entering the house again. The flag for this NPC is located at bit 1 of address $1F41. However, this flag is not set before the Whelk fight, where there is a save point. Also, there is another save point in the caves after leaving Arvis. So by overwriting the NPC flag from the second save by the value of the first save, we obtain a save where we can go back and enter Arvis house. This gives us access to the whole Narshe town and we can leave the town.

Dead party

To get faster gameovers, we will also build a dead party. In the first save, we have a 3-characters party, so we take this opportunity to let Terra die before saving. This was not a trivial task, because enemies are obviously weak in the very beginning of the game. Also, we absolutely need Terra to get the fast Whelk kill. Several options were considered, but in the end it was faster to let Terra die during Whelk fight and backtrack to the save point.
By the way, we used the non-assisted setup for the Whelk fight by leaving Battle Speed at 3. This is the slowest setting where Whelk shell takes 2 rounds before going inside. This gives us time to manipulate our damage as well as giving Whelk two attacks to kill Terra.
In the second save point, we have a solo Terra party, so we combine the two saves to get a solo dead Terra party. Actually, Terra's HP are not relevant to consider her dead, what matters is the Wound status. This trick was done in the continuation of the Arvis NPC trick, to save time in resets and to remove the save overwriting dialogs.
However, we had to be sure to be able to leave the cave without a single fight. Luckily, it was barely possible when the danger value was minimal, so we triggered a fight just before the second save point.

Details of the combined save

Save      | Terra status ($0014) | Party ($0250-$025F) | Arvis NPC ($0941) | Map/Coords ($0964/$09C0)
--
Whelk     | 88 (Wound+Magitek)   | Terra/Vicks/Wedge   | 00                | Cave before Whelk
Arvis     | 00                   | Terra               | 01                | Cave after Arvis
Combined  | 88 (Wound+Magitek)   | Terra               | 00                | Cave after Arvis
After all the mid-frame resets, we needed to get a valid savefile, which is tested by the game using a checksum system. To trigger a checksum collision, we carefully chose the name of Terra, so that after the last partial save overwrite, we ended up with a savefile with a correct checksum.

Triggering the ending

Like the previous TAS, we will manipulate the event pointer to be $1860 in RAM, which correspond to the lower byte of the money value. By buying and selling items, we set this byte to be C4 (C3-C7 works). Instruction C4 is:
C4 t1 t2 t3 t4 t5 addr -> if(t1 || t2 || t3 || t4 || t5) jump to addr; else continue;
tx are 2 bytes values referring to bits starting at $1E80, addr is 3 bytes

So addr is located at $186B-186D, which corresponds the item ids in slots 2-4 of the inventory. We placed a Leather Hat, a Mithril Pike (bought in Narshe) and a Buckler in these slots, so the memory looks like this:
|     Gold     |   Game Time  | Step counter |                  Inventory
| C4 | xx | xx | xx | xx | xx | xx | xx | xx | xx | xx |   69    |   1D    |   5A    |
                                                       | Leather | Mithril | Buckler |
                                                       |   Hat   |  Pike   |         |
When this C4 instruction is executed, it jumps to address $5A1D69 + $CA0000 = $241D69 if any of the tx is true. We didn't have to manipulate a tx, it was very likely that one will be good.
Address $241D69 is located in RAM, in the middle of the window colors configuration. We can now write our code to trigger the ending using colors. The code to input was carefully chosen to minimize the change of color values, and the result code is:
       0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
$1D6x xx xx xx xx xx xx xx xx xx CD xx xx xx xx xx xx
$1D7x xx xx xx xx xx xx xx xx xx C3 xx xx xx xx xx xx
$1D8x xx xx xx xx xx B2 0C 53 00 B2 52 13 00 xx xx xx
Instructions are:
CD t1 t2 t3 t4 t5 t6 addr -> if(t1 && t2 && t3 && t4 && t5 && t6) jump to addr; else continue;
C3 t1 t2 t3 t4 addr       -> if(t1 || t2 || t3 || t4) jump to addr; else continue;
B2 aaaaaa                 -> call subroutine $aaaaaa + $CA0000

The first two instructions CD and C3 are just used to advance to the right location, where is actual relevant code is faster to input. In both cases, the test condition failed (which is surprising for the second one). The first B2 instruction jumps to address $CA530C which 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. The last instruction jumps to $CA1352 which is the beginning of the ending sequence.

Small tricks

Monster-in-a-box

If the first death is against the monster-in-a-box inside the Beginner's room in Narshe, it will increment the stack size by 9, which is equivalent to three deaths.

Fast preemptive runaway

During certain preemptive/side attacks, the party might not escape quickly, usually when there are more characters than enemies. However, by choosing Def. with Terra at the very beginning of the fight, it delays the escape script so that all characters have the time to escape. This saves 2 seconds per fight.

Suggested screenshots

Frames 99730

Fog: Judging.
Fog: This is definitely a big jump in improvement compared to the previous publication, and even to the previously rejected submission with the different method of ending the game (without the rests, but using possibly invalid SRAM). However, it's still the same method as before with the 52 game-overs, meaning a significant portion of the run is quite honestly boring to viewers. Because the time that was saved compared to the previous publication was during regular gameplay, even more of the run is considered to be of boring gameplay. Unfortunately, due to the nature of the glitch, this is ultimately unavoidable.
Until such a method is found to trigger the game end is found which doesn't rely on the 52 game-overs, and doesn't rely on possibly invalid RAM, this category will still remain in the Vault. Accepting as an improvement to the previous publication.
Spikestuff: Publishing

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14860
Location: 127.0.0.1
Experienced player (948)
Joined: 10/13/2014
Posts: 408
Location: nowhereatthemiddleofnoone
For me, watching the character dying endlessly, isn't entertaining. Seriously, you find than, watching 13 minutes of animations where hero die, it's entertaining? Honestly, read the explanation text is more entertaining than this TAS! I have not voted, for the reason than it's very technical and surely difficult to have find this. technical = 10/10 entertainment = 0/10
GAW sms... Totally destroyed
Joined: 1/14/2016
Posts: 98
Impressive time save.
Active player (372)
Joined: 9/25/2011
Posts: 652
Absolute yes vote! I agree, the deaths aren't very interesting at all. However, watching the ending with all Terras and then a bunch of random Celes's more than made up for it. I also really liked the walk around Narshe when she's not supposed to be there. I'm really curious what the other villagers say, and what crazy sequence-break things you can do from there.
Joined: 7/28/2005
Posts: 339
I've always loved the way the game over screen looks on the 52nd run. I know it's just the normal transition at the end of the game, but it looks cool here.
Dwedit
He/Him
Joined: 3/24/2006
Posts: 692
Location: Chicago
Vault it and give it the Notable Improvement lightning bolt, we have a winner.
Joined: 6/4/2009
Posts: 893
Dwedit wrote:
Vault it and give it the Notable Improvement lightning bolt, we have a winner.
i'll join that decision, also in the death loop, what does have terra on her face??? am i the only one that saw a dick ?
Editor, Experienced player (894)
Joined: 1/23/2008
Posts: 529
Location: Finland
Kind of torn here. The run is very fascinating and well put together on a technical level, and quite entertaining too for the first 12 minutes. But the long string of deaths that follows is just, well... uninteresting. Since the string of deaths is over half of the run's length, I should probably only vote 'meh' for the run's entertainment value. Great work overall, though.
BigBoct
He/Him
Editor, Former player
Joined: 8/9/2007
Posts: 1692
Location: Tiffin/Republic, OH
AKheon wrote:
Kind of torn here. The run is very fascinating and well put together on a technical level, and quite entertaining too for the first 12 minutes. But the long string of deaths that follows is just, well... uninteresting. Since the string of deaths is over half of the run's length, I should probably only vote 'meh' for the run's entertainment value. Great work overall, though.
This is about how I feel too.
Previous Name: boct1584
Dwedit
He/Him
Joined: 3/24/2006
Posts: 692
Location: Chicago
The long string of deaths is why the previous run was vaulted, but this run sped up even the deaths.
Personman
Other
Joined: 4/20/2008
Posts: 465
It remains the case that YouTube, as well as your desktop video player of choice, offer "seek" functionality that allows you to avoid watching sections of a movie you know are repetitive if you do not wish to. I really don't get how people seriously talk about stuff like this as if it diminishes the value of the run. Why watch a boring thing and then complain, when you could just.. not watch the boring thing?
A warb degombs the brangy. Your gitch zanks and leils the warb.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4014
Personman wrote:
It remains the case that YouTube, as well as your desktop video player of choice, offer "seek" functionality that allows you to avoid watching sections of a movie you know are repetitive if you do not wish to. I really don't get how people seriously talk about stuff like this as if it diminishes the value of the run. Why watch a boring thing and then complain, when you could just.. not watch the boring thing?
Sometimes it can be a problem, if you don't have a good way to know which parts of the run are boring and which parts aren't. Doesn't really apply to this run, though.
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
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14860
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. ---- [3387] SNES Final Fantasy VI "game end glitch" by keylie, pirohiko, KadMony & eddie in 24:33.26
Dwedit
He/Him
Joined: 3/24/2006
Posts: 692
Location: Chicago
Fog wrote:
...even to the previously rejected submission with the different method of ending the game (without the rests, but using possibly invalid SRAM)
Not invalid Save RAM, invalid contents of Main memory.