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

Submission #5998: Lil_Gecko's PSX Final Fantasy IX in 8:04:01.74

Console: Sony PlayStation
Game name: Final Fantasy IX
Game version: USA v1.1
ROM filename:
Emulator: Bizhawk 1.11.9
Movie length: 8:04:01.74
FrameCount: 1721968
Re-record count: 240541
Author's real name: Steven B.
Author's nickname: Lil_Gecko
Submitter: Lil_Gecko
Submitted at: 2018-06-15 05:29:43
Intended tier: Moons
Text last edited at: 2018-07-11 03:13:51
Text last edited by: Spikestuff
Download: Download (1306688 bytes)
Status: publication underway
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:
The published run is extremely outdated and with a lot of emulation errors. It was about time it gets redone.

I highly recommend to watch the commentaries to really understand everything that is going on.

TAS alone :


TAS with overlay and commentaries :


Previous one was done on Psxjin which happens to have really faster loading times than Bizhawk, that's why this run is longer in input length. I can't give an exact number unfortunately because of emulation differences, but I estimate the gameplay alone to be at least 10 minutes faster.

- Emulator used : Bizhawk 1.11.9 (I started years ago and resync on a newer version was not possible)

- Heavy luck manipulation

- Takes damage to save time

- Uses death to save time

Differences and tricks :

- Use of the joystick instead of the D-pad saves couple of frames on many occasions.

- Sometimes, you lose control of your character before a scene, and he turns himself facing a direction. Most of the times, making him face said direction, before losing control saves couple of frames.

- Same thing applies to NPC you have to talk to. It's usually faster to start talking to them when they face you, instead of making them turn.

- Renaming characters. Most of the dialog boxes takes the same time to appear and disappear no matter how much letters are in it. But there are several occurences where text scrolls at its own speed and characters' names are mentionned. In those cases, having less letters saves time. It does indeed for Zidane, Dagger and Eiko.

- Puck Skip. When controlling Vivi for the first time, if you start talking to a NPC on the same frame Puck hits you, you keep control of Vivi, and can exit the screen right away.

- Slide Skip in Dali Underground. At the end of the underground part, if you simply go up, Zidane starts to slide before watching left. By stopping on the right frame you avoid the slide.

- Quina Limit Glove Vs Standard fight. Limit Glove is a Blue Magic of Quina, that deals 9999 damage if Quina's HP is 1. While it significantly speeds up Gizamaluke, Beatrix 1 & 2 and Antlion fights, it takes quite some times to get. I actually TASed up to Fossil Roo, both route. Turns out that not getting Limit Glove is faster with the Random Numbers I had (~15 seconds)

- Gizamaluke's fight. Since it's a TAS, you'd expect it to go tentless. However, now that we don't have Quina, the fight is longer and the enemy has a lot more turns. Which means he would have used magic a few times. Having him not be able to cast and restart his ATB is faster overall.

- Antlion's fight. Same as Gizamaluke, the use of a Tent saves time by stopping him from casting Magic.

- Alexandrian Soldiers in Cleyra. It is faster to make them escape instead of killing them, because it would skip the post-fight screen.

- Lucky Seven. It's an ability for Zidane. When his HP end with a 7, Lucky Seven will deal either 7, 77, 777 or 7777 damages with equal probability. Very powerful at the moment you get it and not as time-consuming as Limit Glove to watch.

- Moogle Skip. In Madain Sari, before it turns night for the first time. You can talk to the Moogle offscreen to trigger the event right away, instead of having him come inside the house.

- Mistodon Skip on the Iifa Tree roots. You can't get chased by a Mistodon for the first 120 frames. After that, every frame there is a check. A pointer goes through the Random Numbers table one by one and check RN mod 60 with another RN. If it is equal, a Mistodon starts to chase you. So, what to do, if we have one of these in our table ? Sometimes, the pointer skips naturally a number, but not necessarly the one we want. It is possible to push the number that is skipped a little further by stopping to run for a few frame. It doesn't work everytime though. Another way to skip a number is by calling the RNG. It can be done using Cure or a Phoenix Down. Fortunately here we only had 2 numbers to skip.

- Mistodon Skip in Alexandria's streets. On the second screen, there is supposed to be a mandatory fight. But the programmers put the trigger zone and the exit of the screen very close, and it's possible to reach both at the same time. In which case the exit takes priority.

- Tantarian. If you have followed the RTA community, you've seen some runners fight Tantarian to get the Running Shoes and Auto-Haste ability. It decreases the length of your ATB and fills it up 150% faster. While useful in RTA, under TAS conditions it saves very little time (~ 15-20 seconds) compared to the time it takes to get (~ 1 min 10 seconds).

- Reaching the Black Mage Village by boat from Lindblum. It is faster to go North exiting Lindblum to reach the BMV, however you need to take the same boat to reach the Desert Palace after. When you add the two trips, it's overall faster to go South from Lindlum by a couple seconds.

- Room with the four holograms in Oeilvert. While it's safer to exit by the bottom, the two loading times instead of one, makes it faster to exit by the top.

- Ark. Stealing the Holy Lance makes this fight longer but saves a lot of time for the next fights.

- Desert Palace and Valia Pira. Now that we have the Holy Lance, we can deal way more damages to Valia Pira but we have to disable a second Bloodstone. Two hits from Freya and disabling the Bloodstone is still faster than Limit Glove.

- Mount Gulug Red Dragons. No need to use the long cast Stop from Vivi, we can one-hit KO both of them with Steiner's Heat and Freya's Critical.

- Meltigemini. No need for Lucky Seven, the Holy Lance associated with Angel Earrings or Rebirth Ring do so much damages...

- Pandemonium : * Amdusias => Holy Lance saves an attack. * Shell Dragon => HP+20% instead of Auto-Life, keeps our ATB full.

- Start of Disc 4. No menuing before Nova Dragon saves a lot of time.

- Necron. We can kill it in the same number of round without using Charge! which would just cost more time.


There is a pointer at 0x7B720 (4 bytes, hex) refering to a table (from 0x7B724 to 0x7B92D (1 byte, unsigned

Everytime randomness is needed, the game goes to the address specified by the pointer and use the Random Number associated.

Encounter Check :

0x7AE50 (2 bytes, unsigned) : Current Danger.

0x7954F (1 byte, unsigned) is the danger value of your location. If it's 0, like inside towns, you can't encounter enemies.

If it's not, there is an Encounter Check happening after a certain number of steps. The game compare the RNG with the current danger. The higher the current danger, the most likely you'll get an encounter.

If no encounter happens, the game adds the danger value of the location to the current danger and wait for the next encounter check.

Stealing :

Two checks are performed.

1) If RN MOD (Lvl + Spr) > RN MOD (Enemy Lvl) then the steal will be succesful.

2) If RN = 0 you steal the Very rare item.

1 < RN < 16 you steal the rare one.

17 < RN < 64, the uncommon.

RN > 64 the common one.

Trance Bar :

Has a size of 255 and fills up by [RN Mod (Spirit)] everytime you get hit.

RNG manipulation :

Outside of World Map :

- The more chests unopened on screen the faster the RNG goes. Opening some or not during waiting period manipulates RNG. (Example : Waiting for Morrid, waiting for the boat in Alexandria)

- Most of the time, the RNG moves faster when you are moving. In those cases, stopping for one frame changes the RNG. If you have time to spare (Alexandria Castle's rotating platforms for example), running around puts it way further.

- Walking for 2 consecutives frames doesn't change the RNG compared to running, but changes the distance travelled, which changes the position of the Encounter Checks.

- Run,walk,run,walk, travels the same distance as above, but boosts the RNG further.

- On the last frame before exiting a screen, standing still usually puts the RNG one step earlier and walking puts it one step further without costing time.

- Delaying the moment to close a text box while RNG moves.

- Taking longer paths when RNG moves the fastest.

On the World Map :

- The RNG always moves and you can't walk, so stop for one frame change the position of the RNG on the Encounter Check.

- Entering or exiting a forest changes the moment of the Encounter Check.

I've heard people claim that using Stutter-Step reduces the odds of encounters. This is not entirely correct. If the Stutter-Step is done correctly, it completely removes them. Because you have to run for two consecutives frames for the game to register a step. If you run one frame, stop one frame and repeat, your number of steps NEVER increases and no encounter check happens.

You can see a demonstration in this video : https://www.youtube.com/watch?v=DOejQ1Ohvfs

But it is frame-precise. If by mistake, you pressed a direction for more than one frame, you increase your step counter and this is why sometimes, runners have an encounter.

Beware of Ragtime Mouse inside forests though, because it doesn't care about encounter checks and is triggered by the position of the RNG if you are on the World Map since more than 20 seconds.

In Battle :

- Using ATB on Wait to delay some actions.

- Calling for randomness to move the RNG further (Steals, Damages, Moves' choices and Targets from enemies when their ATB is full,...)

Dialog RNG :

On some scenes, characters are moving while speaking and they need to finish their move before another textbox can appear.

But those moves are often controlled by the value of the RNG at some earlier points. Which means they can be manipulated to have the shortest amount of time between textboxes.

Most of the time, it can saves between 10 and 50 frames by scene, but on some particular cases it makes a huge difference of several seconds.

The most notables are 'Vivi trying to talk to a Black Mage inside the ship' and 'Dagger getting out of the bag near the end of Disc 1'.


ATB Formulas :

Length of the ATB : (60 - Speed)*160

Fill to : [RN*257] modulo Length of ATB

Choosing the order of the party for a battle :

At the start of a battle, the game will check RNG multiple times to

1) Choose the first moves of the enemies.

2) How full are enemies ATBs.

then 3) How full ours are.

Let's say, we've found the perfect RNG for 1 and 2, but 3 doesn't satisfy us.

Because most of the times, our characters will have different speeds from one another, we can switch their positions to fill their ATB differently.

For example, Character A has a speed of 23 and Character B has a speed of 20.

If the RNG used for those characters are 99 and 200, they will have : 1763/5920 and 200/6400

But if we switch them, they'll have : 6243/6400 and 4040/5920 which is way better.

This is why, you'll see character trade places from time to time.

Killer abilities :

They are extremely important during the run as they multiply the damages done by those having it equipped by 150% against enemies of this type.

Criticals :

Spirit of the character :

16-23 => Criticals impossible

24-27 => Random Numbers that works : 079 086 093 100 193 200

28-31 => Random Numbers that works : 086 093 100 165 172 179 186 193 200

32-35 => Random Numbers that works : 079 086 093 100

Important addresses :

0x7b720 : Pointer of the RNG

0x7B724-0x7B92D: Random Numbers Table

0x108F28 : ATB Char. 1

0x108FF8 : ATB Char. 2

0x1090C8 : ATB Char. 3

0x109198 : ATB Char. 4

0x109268 : ATB Enemy 1

0x109338 : ATB Enemy 2

0x109408 : ATB Enemy 3

0x1094D8 : ATB Enemy 4

0x7AE10 : Target of the enemy

0x109264 : Life Enemy 1

0x109334 : Life Enemy 2

0x109404 : Life Enemy 3

0x1094D4 : Life Enemy 4

0x8B02C : In Game Timer

0x7AE50 : Danger

0x7954F : Field Value

Thanks for watching !

Couple of improvements picked up by luzbelheim, thanks to him :

At 2h26m26, it's my dialog script which made Dagger talk twice to Doctor Tot. But since I had to move the pointer further anyway it loses very few frames. At 5h23m54, big mistake and commentary is wrong. 'How did I get there' is actually way slower in term of text, and the fact that you don't need to talk to the guard doesn't compensate. 8 seconds loss.

Also At 7h46m30, the Danger value is indeed 0, but it is still possible to trigger an encounter, because the game checks with the Distance travelled and not the RNG this time.

Masterjun: Judging.

Masterjun: Phew, this is quite the run. Due to emulator differences this run seems longer, but is actually faster in gameplay. Nice to see updates to outdated movies, even if they are pretty long! Great job on this!

Accepting to Moons as an improvement to the previous movie.

Spikestuff: Star Wars but the main characters are either clones or princesses.

Similar submissions (by title and categories where applicable):