Submission Text Full Submission Page

Final Fantasy "Console Verification"

The fm2 submitted is set up to run from the standard clean start. However, the true form of this run is a system that can create a TAS of the game for any starting SRAM state. All the code needed for this is available here: [dead link removed]
I got the idea for this after dwangoAC described how he and realtime FF runner Feasel attempted to run the existing Final Fantasy TAS on an NES in the practice room at AGDQ 2014. They were unsuccessful but I realized that I could work around both of the major problems. dwangoAC asked me if I would be interested in preparing this for AGDQ 2015. Even though it was determined to not be a good candidate for the event I decided I would finish it for console verification.
The first problem is that no bot can yet play back a run with resets. There are plans and projects, but nothing working yet. Since my runs on this game use many soft and hard resets, such a system would have to work reliably and consistently to make it through the current TAS.
To get around this I decided I would make a new TAS that did not use any resets or power cycles. At first I wasn't sure how much time this would add. It could be impossible to avoid a large number of unrunnable fights. Fighting those battles would take time and possibly require more healing items, getting more equipment or other setup. Or maybe I could avoid unrunnable fights but with a lot of pacing and extra random runnable battles in order to advance the encounter mechanism.
After some analysis I discovered that it wouldn't actually be that bad. This run has 184 random fights compared to 173 in any%. Some extra walking or sailing in circles is needed, but I discovered some other tricks to tweak things as well. There are only four unrunnable fights compared to two in any% and all four go pretty fast. So in the end this run is only about a minute and a half slower than the any% run.
A problem not unique to this game is that RAM is not initialized by the game at startup. Some versions of NES hardware will have cleared RAM after sitting powered down for a while. A more conclusive solution is the erase cart developed by true and Scrimpey that actively resets the RAM.
The next problem is that the seed for the battle RNG is stored in SRAM, the battery-backed memory used for the savegame. That means clearing the RAM will not get to same start state as the standard clean start state for TAS. In this case the hardware solution is much simpler: a cart eraser that deletes the SRAM memory. When I first started this did not exist, but true and others have since gotten it work.
The non-hardware solution to this is a little more complicated but pretty cool. Regardless of the SRAM state I can walk through the outer world until the first battle before desyncing. I do this and on starting that battle I hold down A, ordering my guys to attack the first enemy. That battle will consist of 3-5 imps. Four fighters beat them every time, but will take varying amounts of damage and time to do so. In the worst case it could take about 90 seconds. Anyway, by looking at what happened in that battle we can determine the value of the RNG counter. Specifically, I found that recording the final hp of everyone in the party would find the counter value about 90% of the time. Throwing in the number of enemies and the first and last party members to attack would be enough to find the value every time.
Once you know that value there are a few ways to proceed. You can hit the power and start all over with a run calibrated to that counter value. true and I were able to get the run going this way. My other idea was to let the bot know the counter value and have it tweak the run in real time. This is certainly possible and would have been a neat trick but it did require some hacking in to the bot's code and maybe some hardware tweaks to set up a port to get that info to the bot.
Continuing on from an unknown start has a few other complications. After that first fight my party members have an unknown amount of hp and in fact there is about a 5% chance that the first character dies! I deal with this variation by picking one of three different battles with first boss Garland and then going to the inn on first entering Pravoka. Still, if my first character died in the imp fight then the characters were in a different order on beating Garland and randomization of levelup stats means that my characters have different amounts of max HP. The variation is only 2-4 so I deal with it. It's only really an issue for the pirates fight.
In the end, the cart eraser is much more convenient than these tricks. But since I have everything set up I am going to release all the code needed to do this. The process involves using python scripts to generate lua that can then be used to record an fm2 tuned to a particular RNG value. As with the any% run I have also included the option to change the names used in the run. I have used lua to test that the run has synced and verified that my system can sync for any starting RNG value.

About the run

The run starts pretty close to the any% run. The first big change is skipping the treasure in Dwarf Cave and picking up some treasure in Earth Cave instead. That side trip in Earth Cave helps avoid unrunnable fights without just walking in circles. I pick up the Coral Sword for a better weapon and also a cabin for healing later. The Coral sword is used on Vampire and Lich instead of the Dragon sword. In the second trip to Lich I have my first unrunnable random fight against two Wizards. With a better weapon and a few levels compared to the fight in Marsh Cave I am able beat them much more easily.
After Earth Cave I proceed directly to Crescent Lake and Ice Cave with the exception of a short sailing excursion to prime the encounter list. This leads to no unrunnable encounters in Ice Cave. In Ice Cave I collect the Flame Sword and tent as in the any% run as well as a good chunk of gold to spend on the Bottle.
On the way to the airship is the longest set of extra pacing to set up encounters. I get on and off the ship because the ship moves faster and the encounter rate is higher on land. Even though the step on and off the ship does not increment encounters it is still worth it. This will also be the last place I need to move in circles just to set up encounters.
While using the Floater to reveal the airship I also equip the flame sword and use the cabin and tent to restore some hp.
The Sea Shrine and Waterfall are pretty straightforward. Still no unrunnable fights and about the same as any%. As usual, the robot is just where I need him to be and Dr Unne of Melmond moves down to talk to me.
The trip to Lefein is a little different because of two unrunnable ZomBull fights. ZomBulls are weak to flame and I have the flame sword. So even on a very low level I am able to beat them in one hit if I take some damage first. That was the purpose for restoring my hp earlier. This will be the last time I take damage in battle.
Moving on, I beat the Blue D without taking damage. Pick up Bane sword and use it on Tiamat as usual. Gurgu is a little different; instead of walking on lava to avoid encounters as much as possible I step on normal ground to run up the encounter list. This sets everything up for a fast trip through the final dungeon.
Temple of Fiends: Revisited actually goes quite a bit faster than in any% run. Because of how encounters fall, I can use Bane Sword on Phantom with no worries. The only and last unrunnable random encounter is one WORM that is quickly dispatched with Bane Sword. The rest of the dungeon is straightforward Bane Swording.
There were a couple spots where taking more damage would be convenient. But after looking into it, nothing was worth the time it would take to shop and use items or visit an inn. Unlike any% I don't need to use tents or cabins to save before reset, so I don't have any excuses to visit item shops or even open the menu.

Thanks

Special thanks to true for playing this on his bot to verify. He also verified that the RNG finding method worked on console.
Also thanks to dwangoAC for including this as an option for AGDQ though it wasn't accepted. Since it is so easy to set the character names I was hoping we could auction or raffle off the names in the verification movie to raise money for his AGDQ 2015 efforts. This will take some more planning and discussion though.

adelikat: I'll handle this one

adelikat: Nevermind, backing out of judging this.
Noxxa: I'll take this submission, then.
Noxxa: This submission is made with console verification in mind, by avoiding resets that require the console's RAM to be cleared when console verifying. The justification given is that, when console verifying the run, the resets would cost time, as the cart would have to be removed, the RAM-clearing cart inserted and run, and reinserting the game cart before the verification process can resume. This would, in the end, make this run faster on console than the currently published run. However, we don't account for this when timing runs; this is because it is impossible to time the cart-swapping, clearing etc. for TAS timing purposes. Therefore, this added time is disregarded. As such, as this run is slower than the currently published run and the run does not meaningfully add to the current published runs, rejecting.
As a side-note, given this run's goal to showcase a bot that has to figure out RNG on the fly from any SRAM by letting a fight run while holding a button, I have doubts whether this is an optimal run, compared to a proper TAS that would use savestates to know the RNG in advance.


Joined: 6/4/2009
Posts: 893
ok, thanks for the answer, in the meantime i watched the run and it's good as usual, i stll prefer the white mage one :D and if there wasn't so much "grey area" around the category, i'd give a yes
Demon_Lord
He/Him
Joined: 2/20/2011
Posts: 80
Location: Chicoutimi, Qc, Canada
If the other runs don't sync on real hardware and this one does, they should be considered as if they were made using a buggy emulator*. There were precedents where that was enough to accept a slower movie, if I remember correctly... I however don't think that this movie should obsolete these other runs, but it should be linked in the description of the current run as a reference. After all, the other runs are "theoretically" valid, under extremely unlikely initial hardware configurations. Or maybe under NES devkits, who knows? I'd like a white mage "universal" run too, by the way... * at least regarding initial hardware state
Editor, Player (69)
Joined: 1/18/2008
Posts: 663
Demon Lord wrote:
If the other runs don't sync on real hardware and this one does, they should be considered as if they were made using a buggy emulator*. There were precedents where that was enough to accept a slower movie, if I remember correctly...
We don't know if they won't sync yet. We are currently in the gray area. What is fairly certain (but also needs to be tested) is that the other runs, should they sync, would no longer be controller-only input and not even just power/reset buttons - there is the cart ejection mechanic and console prep stage as well between every power cycle. And further, these take time, so the real time elapsed from start to final input would likely be longer than this run.
I however don't think that this movie should obsolete these other runs, but it should be linked in the description of the current run as a reference.
FYI this run wasn't ever meant to obsolete anything.
I'd like a white mage "universal" run too, by the way...
You are not alone... =)
true on twitch - lsnes windows builds 20230425 - the date this site is buried
Patashu
He/Him
Joined: 10/2/2005
Posts: 4043
Could it be said that a TAS of Final Fantasy 1 [NES] with hard resets is physically unrealistic, due to how RAM clears slowly? I mean, this isn't something you can fix by better emulation, the hard reset. Compare it to a TAS of a GBA game that uses hard resets, with the BIOS (the Gameboy Advance bootup animation) ignored, and a slightly longer TAS of the same game with no hard resets. If the former TAS only wins due to not emulating the extra delays, shouldn't the latter TAS win? (I'm probably not phrasing this right, but it needs to be thought about)
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
Joined: 7/2/2007
Posts: 3960
I agree with Patashu -- a TAS on hardware that used hard resets and had to wait for the RAM to clear after each such reset would, according to TheAxeMan, add enough real time to the clock that the TAS would not be competitive with a run that avoided such resets. Since we always prefer TASes that are run on more accurate emulators over ones that are run on less accurate ones, even if that means that the more accurate run is slower, we should clearly prefer the TAS that is fastest on the real hardware.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Player (54)
Joined: 11/20/2013
Posts: 103
I don't think it's fair to compare this RAM clearing to a BIOS that's an integral part of the original hardware. If we want to talk hypothetical superpeople here then I'd imagine with a sufficiently advanced tool one could reset it nearly instantaneously. Alternately, you could simply use butterflies. Ideally it would be nice to plan everything around a time when we have flawless emulation and all the right tools, but I'd rather see what people are capable of now than wait for a maybe-someday.
Joined: 11/17/2005
Posts: 278
Location: Massachusetts, USA
Sometimes we accept runs which are technical improvements, but slower, due to correctly emulated lag. I think TheAxeMan is making an academic case that this run is similar to a "slower improvement". Except instead of lag frames, he's blaming the cold RAM and inaccurately emulated resets for the time difference. I agree. The author says that this run should be a new category and that it isn't meant to obsolete the current run. He's being modest. We wouldn't make new categories for "Takes advantage of emulator inaccuracies" or "Breaks the rule and starts from a save state", right? Awhile ago a rule was made to require all runs to start from power on, not a save state. I think we should also require special games like FF to start from zero RAM too. At least for the NES. --------------------------------------------------------------------- Off Topic, doesn't matter: - His robot can't press reset. - How important console verification is. - Theoretical discussion about NES starting states. Eventually the circuit boards will fade and the copper atoms will decompose in hydrogen or something.
Joined: 1/8/2014
Posts: 55
True wrote:
What is fairly certain (but also needs to be tested) is that the other runs, should they sync, would no longer be controller-only input and not even just power/reset buttons - there is the cart ejection mechanic and console prep stage as well between every power cycle.
Hmm, which makes me wonder if it would be possible to make a specially crafted cartridge that you plug the real game cartridge into. This cart would take care of initializing memory, and then just re-routing the original game. It could have a separate input from the bot, upon which it would halt the game, initialize memory again, and restart the game. Kind of like one of those cheat modules that used to be all the rage. Of course, there are multiple concerns about this: - Is it even possible? - Would this be recognized by the TAS community as a valid console verification aid? - Would it make non-TAS scene people make more suspicious of what it does / think we're just cheating?
LOAD TO SUNRISE
Player (54)
Joined: 11/20/2013
Posts: 103
derula wrote:
- Would it make non-TAS scene people make more suspicious of what it does / think we're just cheating?
I think yes. Clearing a cart beforehand is one thing since you can't really just overwrite the ROM, but having something between the console and cartridge as it's playing introduces a lot more potential ways to tamper with the game. Anyways, for that amount of effort you could probably just rebuild the bot to edit the movie on the fly like they say in the description...
Editor, Player (69)
Joined: 1/18/2008
Posts: 663
Catastrophe wrote:
Sometimes we accept runs which are technical improvements, but slower, due to correctly emulated lag. I think TheAxeMan is making an academic case that this run is similar to a "slower improvement". Except instead of lag frames, he's blaming the cold RAM and inaccurately emulated resets for the time difference. I agree. The author says that this run should be a new category and that it isn't meant to obsolete the current run. He's being modest. We wouldn't make new categories for "Takes advantage of emulator inaccuracies" or "Breaks the rule and starts from a save state", right?
We don't yet know what is possible with the hardware; what we do know is that cold power cycles take time and the NES cold state is different from the FCEUX cold state. What we are pretty sure of is that for most games, reset playback would likely work. Power cycling is the real problem / concern. (Reset could have problems too but I believe they won't be; this could probably be tested with a specially crafted FF test run before my bot supports resets) It could very well be possible, with console clearouts in between or an array of prepared toploaders, to verify the existing site run. To verify against one console would likely take longer than this run. The emulator masks the power cycle time, and the inaccurate starting state makes it impossible to naturally achieve a compatible RAM state*.
Awhile ago a rule was made to require all runs to start from power on, not a save state. I think we should also require special games like FF to start from zero RAM too. At least for the NES.
This FF run, as does the prior run, does start with cleared cart SRAM and FCEUX-style console WRAM. SRAM isn't the problem, the emulator is the problem. But this game is unique in that for console verification, a typical cart is going to be used and have an unknown RNG. This run is unique in that it can be run to gain information used to calculate the RNG, and can also be regenerated to play against any possible RNG. For the purposes of my verification videos though, I reset cartridge SRAM to all 0x00 as an empty SRAM would also have. * again if we only make sure the RNG byte is set appropriately (according to TheAxeMan) it may sync. I think this byte falls on a 0xFF value in FCEUX which is why cold consoles won't sync this game.
true on twitch - lsnes windows builds 20230425 - the date this site is buried
Editor, Player (69)
Joined: 1/18/2008
Posts: 663
derula wrote:
Hmm, which makes me wonder if it would be possible to make a specially crafted cartridge that you plug the real game cartridge into. This cart would take care of initializing memory, and then just re-routing the original game. It could have a separate input from the bot, upon which it would halt the game, initialize memory again, and restart the game. Kind of like one of those cheat modules that used to be all the rage. Of course, there are multiple concerns about this: - Is it even possible? - Would this be recognized by the TAS community as a valid console verification aid? - Would it make non-TAS scene people make more suspicious of what it does / think we're just cheating?
This was my initial plan before doing cart swaps - repurpose a Game Genie for this but with some custom hardware or software. My plans were not going to have separate input for reset on this board; it wouldn't be necessary. If you are talking about power/reset inputs that pulls the reset line and chooses what to do at startup (init WRAM or not), yes that could make things easier to verify, but is not actual "input" or comparable to the motions of input we did when we played the games on real hardware. (This is even less true on consoles like SMS or Genesis that do not tie the Reset line directly to the Reset button.) While it is a prep phase, the console is not usually "power cycled" in this fashion. In NES case it's almost but not quite equivalent to the power button, but would suffice for verification purpose - if it synced this way it also would with a power button. Basically, my thoughts are that a verification that did not use this kind of device would trump one that did. Responses to your dash points: - It should be possible, yes - If the code and interaction of with hardware is known, at least in the case of NES, probably. - My decision for not doing it this way is primarily for this reason. The secondary reason is that the swap cart and WRAM erase cart were way easier.
true on twitch - lsnes windows builds 20230425 - the date this site is buried
CJ
Joined: 9/16/2013
Posts: 15
Location: Las Vegas, NV
I personally believe that I would take it one step further and say that taking any resets out of the game and playing it on a real console is enough to justify the extra minute of game time for this to obsolete the current run.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
My thoughts about potential obsoletion. In the TASing world, we don't deal with absolute accuracy. We have to limit it with absolute determinism. Even if both can't be achieved, we put the priority on determinism, because if it's broken, TASing isn't possible. And yes, if accuracy is what breaks determinism, we will have to sacrifice it (trying to minimize the sacrifice, but still). If a run does sync on a console, it adds to its value. But if the run doesn't sync, it doesn't lower its value! Just because we do not deal with stripped reality - we bend it to fit our needs. In reality, determinism can be totally impossible in some cases (Ilari was always mentioning his Gonzales runs on that matter), so we just assume it's possible and make it virtually possible and stable. We can't afford disqualifying runs that don't sync, because it has zero benefits (in my eyes), and introduces an unfair amount of problems for all. If one cares so much about runs being syncable, the best option is to improve the emulators (or replay devices), to get closer that that goal. To make possible disqualifying non-syncing runs, we must make it easy and reliable to get them to sync in the first place, which we can't do right now, and won't be able to in the nearest future. So please let's not turn verification against anything.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Joined: 1/10/2010
Posts: 59
I'm a little unclear on something. I understand that the run here is intended to be tweaked to any possible SRAM, but is the actual movie file provided the fastest possible empty-SRAM no-resets run or are there sacrifices made to be syncable with other SRAMs? I'm keen on having a "No Resets" run in the Vault, but "Any SRAM" seems like a pretty arbitrary goal when a means to clear a physical cart's SRAM exists. Either way, I think Vault is more appropriate than Moons due to it not being especially entertaining compared to the shorter published run.
Ambassador, Experienced player (709)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
spweasel wrote:
are there sacrifices made to be syncable with other SRAMs?
Yes, but probably only a few seconds at most. If the category really needs to be 'No resets' then it shouldn't be too hard to fix.
Editor, Player (69)
Joined: 1/18/2008
Posts: 663
spweasel wrote:
I'm keen on having a "No Resets" run in the Vault, but "Any SRAM" seems like a pretty arbitrary goal when a means to clear a physical cart's SRAM exists.
I would like to argue this as how we do it now is with external, non-official software on a hacked up cart but an empty battery would also reproduce what we need for this run to sync, so yeah, maybe. What I would really like to know is what factory fresh carts unpackaged by kids with mullets and awfully colored clothing looked like in terms of SRAM. Were they tested? Were they cleared? Was it whatever state the SRAM took when installed? Time difference between zeroed-SRAM vs arbitrary SRAM is something like .004% of the overall run length (out of my ass guessing calculation)
true on twitch - lsnes windows builds 20230425 - the date this site is buried
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
The judging hold up here is primarily the lack of an actual console verification. I think given the category, that would be needed. Also, I haven't heard of any feasible way to incorporate hard resets into a bot. I'm under the impression soft resets is in the realm of feasibility even if they don't yet exist, but hard reset isn't going to happen. So regardless, a console verified ff1 movie will differ significantly from the published movie.
It's hard to look this good. My TAS projects
Editor, Player (69)
Joined: 1/18/2008
Posts: 663
adelikat wrote:
The judging hold up here is primarily the lack of an actual console verification. I think given the category, that would be needed.
It has been verified, and live streamed. For an evidence video though, I will have it done in 2 weeks or hopefully less. The visual display boards have shipped, and it should take little time to solder parts to them and write the code to make them work and record a video.
adelikat wrote:
Also, I haven't heard of any feasible way to incorporate hard resets into a bot. I'm under the impression soft resets is in the realm of feasibility even if they don't yet exist, but hard reset isn't going to happen. So regardless, a console verified ff1 movie will differ significantly from the published movie.
To replay power cycle with an unmodified console, basically the movie is split on power button presses, and a robot (or a human if timing isn't important) powers the console off. The problem is the NES case where this turns into a multi-step process of power off, remove cart, run RAM clear cart, while powered (and in reset for a frontloader) swap to original cart, then press (release) reset, and while doing this configure the replay bot, and hope it all works. Doing this will add some time to the replay procedure, and thus the actual replay time shown on site will not be an accurate display of time as done with real hardware and on the real console. Not to mention the need for third-party tools to actually prep the console to match the emulator on every power cycle. So it _can_ theoretically be done, but not as expected with a name like "power cycle": to do this on NES will require either multiple prepared consoles sitting on and ready or preparation software to be run on the console with at least two cart swaps. But as described earlier in this thread, even if that is done, replay time for Final Fantasy with power cycles will be longer than this movie.
true on twitch - lsnes windows builds 20230425 - the date this site is buried
Player (146)
Joined: 7/16/2009
Posts: 686
True wrote:
To replay power cycle with an unmodified console, basically the movie is split on power button presses, and a robot (or a human if timing isn't important) powers the console off. The problem is the NES case where this turns into a multi-step process of power off, remove cart, run RAM clear cart, while powered (and in reset for a frontloader) swap to original cart, then press (release) reset, and while doing this configure the replay bot, and hope it all works.
I'm inclined to disagree with this (although my opinion isn't very well founded, so if you have good arguments otherwise ...). If, in an actual NES, a power cycle does not clear the RAM, then any emulator simply shouldn't either. It just seems like an emulation inaccuracy, rather than an issue on the verification side of things. It would seem that a bot-controlled power switch is viable to actually perform the hard resets, and if this doesn't correspond to what happens in an emulator, the emulator is at fault.
Joined: 7/2/2007
Posts: 3960
Scepheo wrote:
I'm inclined to disagree with this (although my opinion isn't very well founded, so if you have good arguments otherwise ...). If, in an actual NES, a power cycle does not clear the RAM, then any emulator simply shouldn't either. It just seems like an emulation inaccuracy, rather than an issue on the verification side of things. It would seem that a bot-controlled power switch is viable to actually perform the hard resets, and if this doesn't correspond to what happens in an emulator, the emulator is at fault.
You're dealing with an analog problem though. When the RAM stops receiving power, the data stored in it gradually decays (as I understand it anyway). It doesn't stay fixed indefinitely, nor does it instantly go to zero; the bits fluctuate as charge gradually dissipates. In an "instant" power-cycle situation, presumably most of the bits wouldn't change, but which bits change would be functionally nondeterministic, which is lethal for TAS replayability.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Editor, Player (69)
Joined: 1/18/2008
Posts: 663
Scepheo wrote:
True wrote:
To replay power cycle with an unmodified console, basically the movie is split on power button presses, and a robot (or a human if timing isn't important) powers the console off. The problem is the NES case where this turns into a multi-step process of power off, remove cart, run RAM clear cart, while powered (and in reset for a frontloader) swap to original cart, then press (release) reset, and while doing this configure the replay bot, and hope it all works.
I'm inclined to disagree with this (although my opinion isn't very well founded, so if you have good arguments otherwise ...). If, in an actual NES, a power cycle does not clear the RAM, then any emulator simply shouldn't either. It just seems like an emulation inaccuracy, rather than an issue on the verification side of things.
It does eventually zero, but as Derakon said, it takes time. Also different chips might not always zero; some bits may be set after cold power-on. SRAM can clear pretty quickly without power though. (Some games use a "powered on" flag in RAM, that is cleared when power is cycled; this is how they detect power on vs reset. If you have played a game that does this, and tried power cycling, you would notice RAM state decays pretty fast.) The biggest problem right now is that the emulator, FCEUX, sets a specific RAM pattern that a console will never naturally reproduce. Without this problem, it'd probably still take more time than this run to ensure RAM was decayed, or would require a bank of cold NES ready to go.
It would seem that a bot-controlled power switch is viable to actually perform the hard resets, and if this doesn't correspond to what happens in an emulator, the emulator is at fault.
This does correspond to what happens in an emulator (sort of - read above or my many previous posts in this thread), but the dead time without the console running is not counted in the times on this site. If verifying a single-segment run that involves power cycles, as verifying TAS typically is, then this dead-time should be counted in the run timer for verification. As it stands right now, even if power cycles and resets were implemented and it was run on an emulator without an unrealistic power on RAM state, the total real-life runtime would be longer than this run. And if you decided to not count this time (in which case should the site call it "multi-segment?), it may still not work reliably because of RAM state decay. And by that point, one would need a clear cart again to retry from the beginning because of the RNG being located in battery backed RAM. If power cycle runs would work on any game, FF is it though. But it isn't doable now, and will likely be slower than this run. I hope that's the last time I write that a run with power cycles and resets will likely take longer than this run. Because I've said that a lot.
true on twitch - lsnes windows builds 20230425 - the date this site is buried
Ambassador, Experienced player (709)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
true wrote:
or would require a bank of cold NES ready to go.
This is an interesting strategy. If I were to imagine speedrunning the console verification then it seems the fastest way would be to have a NES ready for each segment. After each segment finishes you take the cartridge out and put it in the next NES. I guess there is also prep time for the bot for each segment so you probably need multiple bots too. You could get away with two if after taking the cartridge out of one you prep it for the segment after next. I think in this run you would always have at least a few minutes. You'd still have to be pretty fast with the switches. 90 seconds / 4 switches means you need to average under 22.5 sec. Then again, if soft resets can be done automatically the fastest console verification would probably use them. So when true makes the bot that does that then I'll make that run to obsolete this one.
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
If this gets accepted, I don't think it should obsolete the current TAS due to reasons stated here. I know its the same author for this particular TAS, but this can potentially be applied to other games as well.
Editor, Player (69)
Joined: 1/18/2008
Posts: 663
Sorry the video took so long to make. Link to video
true on twitch - lsnes windows builds 20230425 - the date this site is buried
Ambassador, Experienced player (709)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Nice! The explanation of the erasing process in the beginning is good. The controller visualization is nice. Looks like it holds the buttons through lag frames so it doesn't exactly match the fm2. Also, it looks like you are using the generated result (that we ran earlier right when I finished). I changed the submitted fm2 to run from the first fight, saving a couple minutes.