Game Objectives
- Emulator used: Bizhawk 1.9.4
- Takes damage to save time
- Uses death as shortcut
- Manipulates luck
- Abuses programming errors
Comments
This run is very similar to the Dual Run made by neo_omegon but with improvements when it was possible. For planning of route and boss strategies you can check the walkthough plan
So, what's new? You can learn Goblin Punch from a random battle which saves some time avoiding entering the Beginner's House (although you'll lack a phoenix down to sell). You can cast Old with the Ancient Sword on Halicarnaso (you'll have 1/3 of whatever chance you had before, but in a TAS it doesn't matter), so Mua Village is skipped (and so is buying Haste 2). Step manipulation is similar too, but it stops being alike in the Barrier Tower (avoided a battle there). No running like crazy in Mua Forest due to step manipulation, sorry. I also bought more items on Karnak in order to have some magic evasion early on.
FAQ
- How is lag compared with the last run on SNES9x?
In Bizhawk the game lags a lot more, just by opening the game the comparison is 198 (Snes9x 1.43) vs 215 (Bizhawk 1.9.4) of lag frames; 753 vs 826 when you gain control & it will keep adding as the game goes on. Battles take like 4 extra lag frames just to load and there's quite some "lag" (just delay and not lag frames) if the enemy has to perform a command. Also notice that 1 frame in Snes9x is not exactly the same as 1 frame in Bizhawk (if I understood is close to 60 vs 60.1), so you cannot compare them as being the same.
- How does step manipulation works?
Tiles have some danger value, which amounts can be 0x0000 (safe zone, such as save points and squares where events happen), 0x0010 (sea), 0x0040 (which I label as "Ghost Town"), 0x00E0 (Dungeon), 0x0100 (World Map), 0x0180 (Special, like Moogle Sands) or 0x0200 (not sure if there's a map with this info, but the value does exist in the ROM. I think the GBA uses this on the new dungeon but haven't checked it). This danger will constantly keep adding and comparing to a random number taken from a LUT (which ranges from 0 to 255 in a random order). A random battle will trigger when the upper byte of the danger is bigger than such value.
This video that I made to explain how to avoid random battles should demonstrate it a bit (although is just World Map):
Avoid Random Encounters
- With step manipulation, is it possible to avoid all random encounters?
Short answer is no.
The reason is that the LUT containing the random numbers are sorted in a way that dungeons with, say more than say 50 steps to the next door, is impossible to get a pattern that allows you to walk that much. However, in the (US) GBA version, you can also reset the danger with a quick-save, so in that version it is possible to evade all random battles. (There are long rooms with danger step danger of 0x0040, which you could walk like 70 steps w/o getting a battle, but I'm just making a general example as most of the time you'll have danger steps of 0x00E0 or 0x0100)
- Changing rows to escape quicker
While is true that is 8 frames faster to escape from back row than in the front row, you must remember that opening the menu takes "a lot" of frames (around 96 frames in world map from pressing X until you regain control). So is only feasible to do so if you have another reason to open the menu, like for changing jobs or using an item (which is faster than using it in the battlefield).
- Taking or skipping walking into save points.
Apart from the first save point in Wind Shrine, there are 6 more that are in your way (Map ID: 006E, 00D0, 0057, 00D3, 0149, 0114). The event explaining how they work will always trigger the first time you step into one (doesn't matter which one). The save point in Karnak Castle is laggy, so it's always skipped. If you were to skip those other 5, it means 10 extra steps (~10x8 frames) which in the end results in ~22 frames slower than simple triggering the text and then walking straight into the save points. However, in map 006E (Tower of Walse) you can manipulate steps, so is possible (and I actually did in my run) to evade it in order to take +2 steps. Still it should be about ~6 frames faster to trigger the explanation anyways.
- Why don't you evade all random battles in the world map?
The reason is that I need sometimes for the group formation to advance in order to trigger an specific formation later on.
Tips & Tricks
- Saving steps
You can save steps (as in avoiding the counter to increase) in a few ways. First is in the world map you can open the menu while the walking animation hasn't ended. You can also ride on a transport on the first frame you reach it & will not count such step. The other option is to walk into tiles that doesn't register danger (which are placed where events can/had happened).
- Manipulating RNG before a battle
One frame before the screen goes black (and lags while loading the battle info), if you press any combination of buttons you may alter some values (e.g. Enemy speed, Pre-Emptive, Back Attack, RNG counters A & B, etc). Note that there are 12 buttons on the SNES, the combination of buttons pressed is 4096 (2^12), but plenty of times meaningful addresses (enemies speed, RNG counters A & B) will be the same so no need to test that much, covering up to 2 buttons pressed covers most cases & will suffice.
- Avoid random battles
You can avoid random battles most of the time by resetting the danger meter (Exception goes when there a 0 to compare next step and you're in the world map or walking into the Moogle Sands as 1 step will always be higher than 0).
- Infinite Items Stolen
Here's a video that explains it, Infinite Item Stolen
Comparison
Considering that lag is higher in Bizhawk than it was in Snes9x 1.47 (and frames are not measured the same), there can't be a direct comparison with the last runs. However, using the times with the memory address 7E094A XXXXXXXX (In-game timer, in frames) can still give you some feedback (That address stops when in battle, so is easy to obtain its values).
Location | Current TAS | Dual TAS | Old TAS | Notes |
---|---|---|---|---|
WingRaptor | 55446 | 55291 | 55416 | Avoiding Breath Wing saves quite some time |
Karlabos | 90666 | 91885 | 91755 | |
Siren | 114184 | 115348 | 115352 | |
Magissa | 125602 | 126624 | 127594 | Using an item before the battle is a bit faster (specially if you had to open the menu anyways) |
Galura | 138560 | 139798 | 142831 | Saved 1 command by making Lenna equipping the Mythril Knife |
Liquid Flame | 174109 | 175347 | 178549 | |
Iron Claw | 187392 | 188381 | 193612 | Trying to run away while the Sargent speaks affects in no way, just did it to use the dead time on something |
Ifrit | 198346 | 199354 | 203534 | Pre-Emptive |
Byblos | 204647 | 205693 | 209870 | |
Sand Worm | 246947 | 248373 | 252218 | Not sure if all 6 counters can realistically be evaded (due to RNG nature), so I was only able to do half. |
Cray Claw | 268065 | 269930 | 278450 | |
Adamantium | 278899 | 280725 | 289301 | I was able to stand 1 attack which is faster than parrying it |
Sol Cannon | 290201 | 292875 | 301956 | Combination of Blue Mage + Ninja w/Black was faster (because of their speed), still uses the same number of turns |
Archeoavis | 299288 | 302420 | 310442 | Better combination of magic damage left Archaeavis with 1 hp left to die from the leak, so I skipped changing battle speed |
Puroboros | 332920 | 344347 | 355190 | Killing them on the first command instead of the 3rd saved some time |
Titan | 335744 | 340886 | 351179 | |
Chimera Brain | 339841 | 336994 | 347361 | Saved 1 turn |
World 2 | 344838 | 348654 | 359556 | |
Abductor | 348526 | 352332 | 363238 | Timer doesn't refresh when you die. Also next scene animation is quicker when dead than alive. |
Gilgamesh | 357678 | 362171 | ||
Gilgamesh | 362102 | 366781 | 378447 | In the Big Bridge I take a different route than intended, as I get no battles where I supposed to do |
Tyrasaurus | 373963 | 378493 | 392430 | |
Abductor | 403105 | 407454 | 427224 | Evading his magical attack was faster than receiving damage |
HiryuuPlant | 424918 | 429430 | 450195 | |
Gilgamesh | 458609 | 463146 | 479218 | |
Atomos | 470882 | 475368 | 492300 | Most likely lost that much because of the enemy performing 3 "attacks" |
Seal Guardians | 507653 | 513516 | 530868 | Despite no Haste, I ended being faster, maybe due to having only 3 enemies attack on the first round & haste animation being "slow" |
Exdeath | 517731 | 523577 | 540919 | Timer doesn't refresh when you die. |
Exdeath | 545735 | 553658 | 569336 | Someone can die as you don't receive exp nor ABP |
World 3 | 548951 | 556844 | 572553 | |
Antlion | 568227 | 575982 | 591837 | |
Gargoyle | 594853 | 602275 | 619458 | Due to jobs, I can't kill one of them before they attack |
Mummy | 597887 | 605539 | 623385 | |
Merugene | 613776 | 621797 | 639604 | |
Calofisteri | 635520 | 660870 | ||
Apanda | 638353 | 663647 | ||
Catastroph | 643242 | 668014 | ||
Halicarnaso | 646305 | 671343 | ||
Twin Tania | 647555 | 673113 | Skipped his dialogue transforming | |
Ex-Death | 665253 | 691214 | No Neo Exdeath, like in first run |
Improvements / Blunders
- Even better luck manipulation.
Understanding what exactly determines outcomes (like enemies commands or steal attempts) would be useful for improving this run. While addresses 7E003A, 7E003B are helpful, I still had to test manually as I don't know their meaning. Finding addresses for your attacks (they are not based on those addresses).
- NPC movements
Lost some time chasing the Black Chocobo as he went upwards and not downwards to me. Also had bad luck with the Aspis (but was minor). There was a NPC in Karnak Town blocking me, but passing through was slower than surrounding him. Omega would had also be in my way, but luckily I needed extra steps, so it was irrelevant.
- Avoid taking extra steps in world map to manipulate step encounter if possible.
Walking in the world map is slower than in dungeons where you can dash. Exception is the first time you gain control as for some reason the counter will move despite using a transport (and the Chocobo moves at 8 frames per square, just like dashing).
- Command inputs during battle animations
neo_omegon said it was faster than inputs done ASAP. Either I was just not able to get it to work properly or it is just not faster (However, it is still useful even if it weren't). There was a strange behavior though, it seemed that not always doing an input ASAP would end the battle the quickest.
- Taking extra steps to reduce encounter battles
You have to take into account that by taking extra steps, you're losing time. Triggering a battle can be slower or not depending on how many steps you needed to take. However, notice that sometimes you want to advance the group encounter in order to trigger an specific monster formation later on (or in a Speedrun, avoid it), so you must trigger it.
- Plan a new route
You can avoid some battles on the Shipwreck and then move the enemy formation forward on Karnak Castle, so that you can get specific battle encounters later on. I think is possible to fight only 2 formations of Statue x5 and have Butz learn Combine just before Gilgamesh at Zeza's fleet, then later on have it learned on Galuf. At the Void, I think it might be faster to take 1 Ribbon instead of the Hermes Shoes, it would make 3 battles slower, but it won't detour from the path saving some time.
- Reset to get a new RNG
Personally I don't like resets on games, but with it you can get different RNG depending on how long you take to choose which file to load. Consider though that it takes quite some time, so is not that easy to find a useful way to implement it.
Thanks to
- Everyone mentioned in my prior TAS
- neo_omegon for his dual run, in which I based on that route to make this TAS
- Omnigamer for the RNG addresses which were extremely useful
- ffbin site for dungeon encounter ROM address
- My brother for gifting me a Super Famicom cartridge of Final Fantasy V from Japan, which got me interested in playing this game again.
Suggested Screenshot
Don't have anything in mind, although it will need a new one as it won't be the same settings as the one used on the past run.
BTW, I uploaded the Lua files I used on that video here:
Lua script
turska: Judging.
turska: Nice improvement. Accepting for publication.
Spikestuff: Publishing.