The goal of re-doing this movie for a 3rd time was to see if the 2 hour barrier could be broken. The answer is a resounding No. Now, I am thoroughly convinced that this is not possible without a major bug found, or some massive strategy change I missed.
This time around, I took the entire battle into MATLAB, and then found the entire optimal battle for each possible agility for characters. (For the most part, some assumptions were made) Using this, in addition to strategy changes and the discovery that character starting stats could be manipulated, I managed to save 4:13.7 off the previous run.
Movie Goals:
- Aims for fastest time
- Manipulates luck
- Kills Characters to save time
- Abuses programming glitches
- No Warps or Passwords
Battles to watch (big changes)-
10, 12, 20,22,24
About Manipulating Starting Stats
When you start a new game, the RNG levels all characters from their starting level to the level are when they join. This occurs 6 seconds into this run, and occurs in about 35 frames. Luckily, it can be manipulated using the controller, and enough characters don't join that there are gaps for manipulating the characters that do. Also, the game is hex-edit friendly, as long as the RNG matches on a given frame, and the # of frames remains consistent. However, the code for this was too difficult to decompile and manipulate, so gia's brute force bot saved the day. About 80% of the 35 frames were made by the bot.
About Simulating Entire Battles
This was my fun discovery and massive time sink for this run. I also gained some savings by optimizing the entire battle, as oppose to each round individually. (Essentially, I ignored the distance to move from the end of one round to the start of the next.) My method is pretty cool to any algorithm geek as well.
The first step is to simulate the first round, and then pick the fastest order that ends in each character in a round. Thus, if we have 10 characters, we have 10 ending positions, and 10 rounds to consider. Next, we take the second round, and determine the fastest order given the character that starts that round, and ends that round, so now we have 100 possible rounds. We combine round 1 and 2, and compute the distance between those two, giving us 1000 possible orders. (This is the cool part!) Now, before we go on to round 3, we trim that 1000 different options down to the ten fastest, given each character at the end of a round. We can repeat forever, and it doesn't become an NP problem.
Killing Characters early
As always, this saves time. I really think that now the minimum # of characters for every battle has been reached. Every character is useful through the battle they die in. Abusing the magic items in Chapter 7 & 8 allowed for Pelle to be killed early. Bleu's death was difficult to figure out, but since he wasn't necessary for battle 22, he had to go.
I'll try and answer anticipated questions beforehand -
Q: Why does Amon get the Heat Axe? couldn't this be avoided?
A: You need a full inventory to avoid getting an item. Amon gets the heat axe, because she is the only one who wouldn't need to spend the time to drop it.
Q: Why does Battle 15 look so much worse?
A: A strange bug occurs when you take 5 into that battle instead of 6. The Pegasus Knight at the top right acts like it has a land-effect of 30% (flying creatures should always be 0%) This means Amon couldn't kill it, and I had to adjust the battle accordingly.
Q: Why do you transfer the broadsword to Musashi, instead of dropping it?
A: It is faster to transfer the item instead of dropping it. Also, this means his inventory will be full, and he won't get the Axe in battle 24.
Q: Why do you only kill 2 of the Archers in battle 24 with a spell, instead of 3?
A: Balbaroy needs that kill to gain one last level for the agility/strength gain.
Big thanks to gia for his brute force bot, without which the starting levels could never have been manipulated, and ZeXr0, for continuing encouragement on this run, as I avoid the sequel.
NesVideoAgent: Hi! I am a robot. I took a few screenshots
of this movie and placed them here.
I'm not sure I got the right ROM though. (I tried
Shining Force (U) [!].gen
, which was the closest match to what you wrote.) Well, here goes! Feel free to clean up the list. adelikat: Good ol' desync (removed screeshots)
adelikat: Accepting for publication as an improvement to the published movie.
DeHackEd: Will encode.