Submission #7760: lapogne36's PSX The Legend of Dragoon "save glitch" in 1:49:06.01

(Link to video)
Sony PlayStation
save glitch
BizHawk 2.8.0
Legend of Dragoon, The (USA) (Disc 1).xml
Submitted by lapogne36 on 10/28/2022 5:32:35 PM
Submission Comments

Game objectives

  • Emulator used: BizHawk-2.8
  • Corrupt save data
  • Heavy luck manipulation

About the game

The Legend of Dragoon is an RPG developed by Sony and released in late 1999 in Japan, and several months later in North America and Europe. It is often compared unfavourably to the Final Fantasy series.
Some significant gameplay changes were made for the release of the game in North America and Europe to make the game easier, most notably all enemies having less HP (usually 20~25% less) and attack items dealing far more damage. The route and strategies used in this TAS would be greatly different with the japanese release.


Specific features of this game

  • "Random" battles are not random but instead are triggered once the danger value reaches a threshold. This value is increasing when moving, except for a few moments after getting back control of your characters (after a screen transition, cutscene, ...), and for some reason the increase is 4 times higher when moving down, down-left or left.
  • While it is never properly explained, the game uses a battle system similar to the ATB system from Final Fantasy games of this era. Each entity increases his ATB by "Speed +/- 10%" and can act once his ATB is greater than 217.


The initial random number (RN) is set to 3 on reset, and subsequent RNs are determined by the following formula:
RN[i] = (RNG[i-1]*9 + 0x3711) modulo 0x100000000
However, if the last RN was a multiple of 0x1000, then the next RN will be calculated solely based on how many frames (assuming 60 FPS, which is relevant to note) have passed since the last reset (which I will call the seed). With the first RN being equal to 3 (seed 0), the 614th RN will be the first one to meet this condition, so at every reset the first 614 RNs are set in stone, and you have more liberty to manipulate the following ones.
The only easilly accessible method to burn RNs for free is to stay in a menu with left/right triangles, at a 2 RNs per 16 frames rate, and very rarely some special animations will play (involving lights) which can burn up to 1 RN per 2 frames. Both of these methods are not very fast, and it was important to carefully choose every new seed to not be stuck for too long in said seed, as some seeds can have less than 100 RNs before calculating the next one, while others can have more than 4000 of them.
The RNG isn't used to calculate damage, which is a fixed value, but it is used for these actions:
  • Initial ATB value at the start of battle: can be between 50 and 217 for your characters, and between 0 and 217 for enemy units.
  • ATB increase if nobody is higher than 217: Speed +/- 10% for each entity
  • Enemy attack/target selection
  • Determine if an attack miss or not
  • Magic spells/items: most of them don't burn a fixed amount of RNs, but rather burn multiple times a random amount of RNs based on the current RN at the time of calculation

Save glitch

When saving the game, the memory file is considered valid before the save is actually over, and the save can be interrupted by resetting the game. Among the data that is saved afterwards, there is, in order:
First 23 items
Remaining 9 items + characters levels
On a fresh file, all values in the memory card are set to 0. The most powerful application of this oversight is that you can have a valid save file with the location ID equal to 0, which correspond to the otherwise inaccessible debug room.
As an extension of this glitch, you can duplicate the items at positions 24 to 32 by saving, then rearraging them to be on positions 23 or less, usually by tossing other items as you can't manually rearrange items order, and then doing a save glitch to only save the 23 first items in the save file (and so keeping the items 24 to 32 from the previous save).

Save anywhere glitch

If you get a game over from a battle while on a save point, the save flag in the RAM will not update appropriatly, and you will be able to save anywhere as long as you don't enter a room with a save point.


The enemies in the first battle have a chance to do nothing at their turn. After that, I created a clean save for a later use, and reset on the second one to get a save file into the debug room. As a side effect, all my 255 weapons and 32 items are Broad Swords (ID 0) and all my characters stats are equal to 0.
From the debug room, you can teleport to various places of the game, the furthest being the entrance of the last dungeon, the moon. However, there are two reasons why I can't go there immediatly. The first is that all my party members are level 0 with 0 HP, meaning that I will get a game over as soon as I enter a battle. I can't fix it if I go directly to the moon. The second is that even if I fix my levels, it will still be a team with the defaut base levels without anything special to actually win the fights, as all characters have a solo battle to win in the moon, and there is a limited amount of ressources to use in the moon.
So instead I first went to Mayfil, which allows me to backtrack imediatly to Zenebatos and have access to the world map. Since I came from the debug room, every area I will visit will be treated as if it was my first visit.
My first destination in the world map was Fueno as it is the fastest way to get both Charm Potions (reset Danger value to 0) and damage items. I sold 1 weapon to free 1 space for later, and my 32 items as the game will softlock if I try to use an item in battle while I have a broad sword as one of them. I purchased 4 Charm Potions, 7 Burn Out, 1 Gushing Magma, and added Healing Potions to have a total of 23 items.
My next stop was at the Death Frontier to get the repeatable item Power Down, which decreases enemy damage to my characters by 50% and increases the damage I deal by 50%, for 3 turns. "For 3 turns" means that the effect will disappear at the third enemy's action after the item was used. A repeatable item will reappear in the inventory after the battle, so you can use it at every battle. There is also a Bandit's Shoes that you can get in the area to increase male characters speed by 20, but it would have give very little time gain compared to the extra time it would take to get it.
The next destination was to go back to Zenebatos and take the teleporter, which this time sent me to Aglis. I made a detour to get a Magical Hat (+50 magic, i.e. more damage from attack items) and a Moon Serenade (can be sold for 100G). I used the save point on my way to save glitch with my previous clean save file, in order to keep the location, weapons and 23 first item, but getting from the clean file the correct characters levels (as well as the 9 last items, which is why having more than 23 items left at this point would be meaningless).
Answering every questions right rewards me the repeatable item Psyche Bomb X, which is by far the strongest attack item, especially against bosses who resist every elemental types (the bomb is non elemental). Getting this item was the last thing I did because there is a convenient save point close by to trigger the save anywhere glitch, which allows me to not have to backtrack to the teleporter to exit Aglis.
After trigerring the glitch, I loaded the debug room save and went to the moon, and thanks to it I can now fix my characters levels and get all the weapons/items from the Aglis save file. I then picked the chest containing a Frozen Jet.
Right before Miranda's fight, there is a light animation that burns 1 RN per 2 frames, so I have some leeway to manipulate the RNG. The fight begins with a scripted attack from Death Rose. In theory, it's then possible for Miranda to act 2 times in a row before Death Rose gets her first turn, but there was no RNs string available in a reasonnable amount of time to get this result with the seed 0, so I went instead for a RN where the Death Rose did her fastest attack twice.
In the inn, I sold my 254 Broad Swords and purchased a Magical Ring (+30 magic), a weapon for Albert and an armor for Rose.
For Haschel's fight, he must be the first one to attack, and he must also get two 10% dodges in a row.
On my way back, I picked up the 200 gold chest.
Kongol's fight is easy (Indora has a 25% chance of not acting every turn), however I spent a lot of time waiting because the next fight required very unlikely consecutive events to happen.
For Dart and Rose's fight, I needed Michael to:
  • normal attack Dart on his scripted first attack (1/6 chance)
  • either doing his fastest attack that Rose's armor negates (1/3), or normal attack Rose and miss (1/60), for his next 7 turns
  • on his 8th turn, do his other attack to make his core vulnerable (1/3)
  • once again his fastest attack, as well as not closing his core
In Albert's fight, emperor Doel first phase has 3 entities, with 50%, 75% and 75% to not act each turn. On his second phase, he has only 1 entity with 25% chance of doing nothing, however I had to take 4 turns after the Power Down to beat him as he is too fast to allow Albert to act 3 times under the effect of the Power Down. This is the only obvious place where the Bandit Shoes could have saved a little bit of time.
Next was duplicating items and purchasing the remaining weapons needed. After 5 duplications and some shopping, I ended up with 4 Burn Out, 1 Frozen Jet, 20 bombs and 7 Power Down. Repeatable items duplicated this way are not refiled after a battle.
A 10% miss was manipulated against the Archangel.
Super Virage has 3 entities, 2 of them with a 50% chance of not acting. ATB values were manipulated so that Miranda and Meru could act twice before the third entity got his first turn.
Zieg is resistant to fire and weak to water, which is why I picked the Frozen Jet as it is significantly more effective than a Burn Out. He was manipulated to do the fastest out of his two attacks.
The final boss, Melbu Frahma, is the main reason why I duplicated so many bombs (even picking the bomb in Aglis wouldn't be an obvious choice). With 42000 HP, it his very tedious to kill him, and a Burn Out bery does 1000 damage, as opposed to the 3000 damage from the bomb. He has 4 forms, and transforms to his next one at his turn when he falls bellow 33600, 23100 and 12600 HP.
This fight was carefully manipulated so that the following events occured:
  • Dart acts first
  • Miranda acts before any of the 5 enemies
  • Melbu targets Dart with one of his two quick spells (1/6 chance)
  • Melbu gets his second turn before Miranda's 3th turn
  • Melbu uses one of his quick spell (1/2 chance)
  • Starting with his second phase, Melbu has a 30% chance to counter any attacks, this must never happen
  • Sometimes for some reason the chance to counter is 100% instead, this also must not happen
  • Miranda gets her 7th turn before Melbu's 5th turn
  • On his 7th turn, Melbu uses his quickest spell (50% chance)
  • Miranda gets her 11th turn before Melbu's 8th turn
  • Melbu uses his (by far) fastest spell on his 9th and 10th turns, which target Miranda each time (~5% chance each)
  • Miranda gets her 15th turn before Melbu's 11th turn (assuming Miranda got her 3rd turn at the same time than Melbu's 2nd turn, it would be a ~4,4% chance overall)

Special thanks

lasagnaaammm for his RTA WR in 2h53, which served as a reference

Possible improvements

Better strategies or luck manipulation.

Suggest screenshot :

frame 327991

slamo: Claiming for judging.
slamo: From watching the run and following along with your submission notes, the route looks very well planned. Comparing to RTA runs, the strategies are very similar, but your route and execution is much faster than their runs, even with the faster PS2 disc speed. Well done!
The use of the "save glitch" branch looks consistent with how we've used it for other runs, so we'll keep it. This will be a Fastest Completion branch, since this is the quickest known way to beat the game. A run that doesn't use save corruption or any future major skips (basically the RTA Any% Classic in its current state) should be acceptable as a No Major Skips branch, should it be submitted.
fsvgm777: Processing.
Last Edited by fsvgm777 on 12/1/2022 10:28 AM
Page History Latest diff List referrers