Chrono Cross TAS
I created a TAS of Chrono Cross on the Playstation system, using pSX Linux version 1.13.
Table of contents
How
No, pSX does not have TAS features yet.
The method I used to create this TAS is described in detail at
the forums in this thread. Shortly:
- TASing features are added to the emulator by extending its behavior with DLL injection.
- The TAS is produced directly as a multimedia file (AVI); a replayable input stream file is not produced.
- Because a multimedia file is not verifiable, this movie cannot be submitted at TASVideos.
Status
- Current event: Fin
- ⌛ Total length of time played (including undone segments): ~26 hours (Yes, there exists a video&audio recording of the whole session. Disk space consumed: Video 208 GB, Audio 17 GB)
- ⌚ Resulting movie length (in-game time): 9 hours and 8 minutes and 25 seconds
- ✂ Rerecord count: 47180
- ✄ Segment count: 7959
- Segment count is the number of individual segments from the whole playing session constituting the resulting video. It is lower than the rerecord count, because undone segments are not included. When the same savestate is loaded 50 times, only the last time it is loaded will begin a new segment in the resulting video, unless completely undone by loading an even earlier savestate.
- Segment count is the number of individual segments from the whole playing session constituting the resulting video. It is lower than the rerecord count, because undone segments are not included. When the same savestate is loaded 50 times, only the last time it is loaded will begin a new segment in the resulting video, unless completely undone by loading an even earlier savestate.
Tools ⚒
Can be (and are) used:
- Re-recording
- Slow-down (Though it is not controllable. The emulator just doesn't run at full speed with the x264 encoding in it.)
- Frame-advance
- Luck manipulation
Don't have and thus ♿cannot use:
- Read-only movie playback (there is no input stream file)
- Consequently, if I make a mistake and any savestate that I could undo it with is too far behind, I must accept it (retain the mistake) and move on.
- For the same reason, no copypasting.
- RAM lookup.
Goals ⚑
- Best ending
- Entertaining to watch
- TAS-precisely played
Speed-entertainment tradeoffs ☕
For the purpose of entertainment, I made a number of significant tradeoffs in this movie.
- I'm always trying to ensure that the whole dialog text is readable (at least if the AVI playing software has a frame advance feature), even if the game allows me to clear the box before all text has been rendered.
- I'm making a number of detours for things I wish to show to the audience (some things I consider an important part of the Chrono Cross playthrough), even if they are not really necessary. For this reason, there is minimal amount of sequence breaking in this movie.
- I recruited Leena. I like her better than Kid.
- I recruited Mojo. (However, I didn't utilize him nearly as much as I thought beforehand.)
- I recruited Nikki. (Instead of Guile or Pierre.) I considered this route most entertaining.
- I did all four dragon feeding sidequests. (I admit this was a bad move entertainmentwise. I thought the @Iron and stuff would be worth it.)
- I did the Hydra sidequest, in order to get Razzly.
- I did a little detour at the swamp to collect a @Feather, in order to build a boomerang later on for Mel, but I didn't end up recruiting Mel after all. As for a boomerang user, I later recruited Van instead, but I didn't upgrade his weapon either.
- I recruited Razzly. She's cool and a very powerful mage. In addition, her rod rivals Magmabomb in usefulness when you can luck-manipulate her to hit fiercely every time.
- I did the Ice Breath sidequest, in order to battle the Dwarf tank.
- I collected some items that can be disassembled to make rainbow equipment easier to forge later on.
- I recruited Van. His ☯WetPaint technique can be luck-manipulated to do neat things like BlackField, which does not even exist in the game. (Demonstrated in MegaStarky battle.)
- I recruited Zappa.
- I recruited Starky.
- I played Fargo's roulette game twice for a @Rainbow shell and a @Denadorite. (Turns out I need neither.)
- I recruited Irenes. Because she is blue-innate (making ☆FrogPrince possible again), and because she's a mandatory character if you intend to forge rainbow equipment.
- I fought WightKnight, and luck-manipulated him to drop me a @Rainbow shell. Too bad luck-manipulating spoils is so difficult. I wanted Solt to drop me Sky Djinn Ring and Marcy to drop me Dancing Shoes, but I got neither. Turns out I didn't try hard enough…
- After recruiting 5 characters at once, I chose Fargo instead of Marcy, because though Marcy has a high Magic value, only Fargo can do ☯Pillage, which was vital for acquiring the colored Plates from the dragons.
- I did the Save Marbule sidequest, in order to battle the Black Dragon later.
- I steal a Plate from each six dragons. (Well, I wanted to, but apparently I forgot the blue one.)
- On Gaia's Navel, I captured ☆Sonja. I did this because I wanted to see what she looks like, but she ended up being greatly useful in the remainder of the run, especially the Terra Tower. I also considered capturing many other summons, but I never ran into an opportunity as good as this.
- Of the three Chronopolis guardians, I fought the hardest one. Because I wanted to, and because the characters with most powerful magic happened to be blue-innate, the enemy being red-innate. (Yes, Riddel is even more powerful than Marcy, but there's no black-innate guardian.) I gained the Vigora element as a reward, but then I never found use for it.
- In order to gain access to the triple technique, ☯DeltaForce, I did the following two detours:
- Acquiring Leena's L7 technique, ☯MaidenFaith.
- Acquiring Razzly's L7 technique, ☯RazFlower.
- However, this combination technique was a total disappointment, consuming tons of resources and being weaker than the single-person UltraNova element, so these detours were a waste of time.
However, on the bright side, Razzly's quest gained her the Floral Rod weapon, which was rather nice. Though I could have just as well given her a Rainbow Rod, one may argue that seeing Razzly batter dragon guardians into pieces with a rose is rather cool.
- In Belthasar's library, I did a small detour to pick up a Blackhole element, not realizing that I'll get one from the forthcoming Gravitor battle too, and more importantly, that only black-innate characters can use it…
By the way, observe the ladder tricks in the screen a little before Belthasar's library :) Thanks to Molotov| for explaining it to me. - In the Terra Tower, I keep Leena as Serge's companion rather than Marcy, despite Marcy having better stats in every way. I just like the sight of the Crystalpan C6 (yeah, Rainbow-forged frying pan!) better than the Spectral Gloves which aren't rendered at all. It is an entertainment choice. It also brings some closure to the movie: It begins with Serge & Leena, and it ends with Serge & Leena. And it's a blue-innate character because of two summons. Razzly is the third companion because she also has two summons due to being green-innate (I captured ☆Sonja earlier), and she regenerates stamina a lot faster than Karsh, who has stronger magic.
Battle-related guidelines I followed:
- I don't let party members die. (There are two exceptions. In the Dwarf Tank battle, I did not notice until it was too late to undo it; and in Gravitor battle, I intentionally sacrificed Serge for a greater good.)
- I don't know if selectively killing some party members would allow for better stat accumulation on the important characters, but if it is so, I don't care.
- I try to emerge from each battle fully healed. For this reason, I may prolong the battle by a turn or two in order to get some element activation levels so that the party can heal itself after the battle. This guideline is not strict, but the rationale is that going to the status screen and using consumables is slow.
Party:
- Before Serge's personal catastrophe #2 (segments 1-10):
- Before Razzly (and during Hydra quest): Serge + Leena + Mojo
- Except in Viper Manor: Serge + Kid + Nikki
- After Hydra quest: Serge + Leena + Razzly
- After Serge's personal catastrophe #2 (segments 11-21):
- Before Viper Manor: Lynx + Radius + Harle
- Except before Radius: Lynx + Sprigg + Harle
- After Viper Manor: Lynx + Van + Starky
- Except before Starky: Lynx + Norris + Van
- After Irenes: Lynx + Irenes + Starky
- Except in scenes involving Garai Keepsake: Lynx + Irenes + Radius
- And in battle with Miguel: Lynx + Harle + Irenes
- And in Viper Manor sewers: Lynx + Norris + Radius
- After rescuing Riddel: Lynx + Fargo + Starky
- Except in Marbule sidequest and Water Dragon challenge: Lynx + Fargo + Orcha
- And in Earth Dragon challenge: Lynx + Fargo + Karsh
- And in Green Dragon challenge: Lynx + Fargo + Viper
- And in Fire Dragon challenge: Lynx + Fargo + Marcy
- After dragon challenges: Lynx + Starky + Riddel
- After Serge's rebirth (segments 22-27):
- Before Terra Tower: Serge + Starky + Riddel
- Except at Vita Unus battle: Serge + Marcy + Razzly
- And at RoyalJelly battle: Serge + Starky + Orcha (At this point I wished I had stronger red-innate characters. I should have recruited Miki or Draggy.)
- After landing at Terra Tower, until the end of game: Serge + Razzly + Leena
I don't know many things about Chrono Cross strategies, and frankly I'm not very interested to study them in detail. I planned the movie as I went. Thus, strategically it is a sub-par movie even considering the tradeoffs I took, but given what I knew, I did my best to utilize it all. In the end, I'm quite satisfied with the pace battles went. (With exception of the Beebas: that took 5 minutes. And the fact that most battles were finished so quickly that I didn't even get a chance to use trap elements.)
My primary motivation for making the movie was to make a movie that I want to watch. It is the same motive as was behind the (rejected) PC Star Control II submission, although the SC2 movie had top-notch strategy.
Download
Because a TAS is basically an arbitrary segmented speedrun, I've applied
that arbitrariness here to resegment the run according to the current plot events.
Multi-file (27 files) download link for medium quality torrent:
link
Or as a YouTube playlist: https://www.youtube.com/playlist?list=PL95656014200AC3E7
Combined segments are available here.
Segments | Length ⌚ | Title | Download link |
---|---|---|---|
1 (1-10) | 3:27:45 | Dragoon menace | Medium quality torrent (501 MB) |
2 (11-21) | 3:50:20 | Search for one's true self | Medium quality torrent (555 MB) |
3 (22-27) | 1:51:43 | For a better future | Medium quality torrent (269 MB) |
Multi-file (3 files) download link for medium quality torrent:
link
Making Of | ~26 hours | Making of (TAS + undone segments) | https://www.youtube.com/watch?v=fkNadwr-TQ0 https://www.youtube.com/watch?v=yJ2P3IcV8dw https://www.youtube.com/watch?v=zb6OD1knDus |
---|
Because of an A/V drift in the progression of the movie, it is recommended
to download the segments rather than the whole movie in one file.
Note: In MPlayer, you can compensate for A/V drift by pressing +/-.
Progressive improvement and pSX ♿bugs
The quality of this movie improves the further it progresses.
The following ♿problems that hampered the progress early on were fixed,
or alleviated, later on:
- At first, the save state keys, and frame advance, worked at two frame delay. This made it extremely difficult to perform frame precise control. Later, I managed to fix this problem.
- pSX savestates do not save/restore the echo buffer. This means that sometimes, in the stitched AVI, you will suddenly hear an echo of an unrealized reality. That is because a savestate was loaded when an sound effect or music was playing, returning into some scene that has strong echo. When I learned of this problem, I started alleviating it by loading the state multiple times to let the echo fade away before continuing playing. However, due to laziness or other problems it didn't go away entirely. This problem I cannot fix without pSX source code.
- During battles, the element selection screens are rather laggy. The game loves ignoring quick alterations of input. It took me hours (of in-game time) to find the pattern of input that gets the most fluent element selection and activation, though it's still not perfect.
- The equipping screens are similarly laggy. For some odd reason, the game likes to spend a lot of time rendering screens, and ignoring all input while some sound effect plays. Very late to the game, I discovered means to equip characters without having to wait 4 seconds for the dzing sound to play after every single piece of changed equipment, but those improvements are rather marginal.
- If pSX has the setting "Pause when not focused" enabled, then every time you switch windows, a lag of 1―2 frames between audio and video is introduced. You have to disable that setting to avoid the accumulation of A/V desyncs. To make matters worse, pSX ignores that setting upon start. You have to visit the configuration screen once, change nothing, and click "Ok" for the setting to actually take effect. I forget this quirk rather often, and was not aware of it in the beginning phases of this movie. Therefore the first segments of this movie accumulate up to two seconds of A/V desync, but the desync grows much slower after that.
Rainbow equipment ☀
I forge several pieces of the elusive rainbow equipment in this movie.
To make it happen, this must be done (H=home world, A=another world):
- Recruit Zappa (H). (This also gains you the Smith spirit)
- Accept Nikki's invitation to come talk to him after beating the Sage (H). (This also gains Irenes in your party.)
- After recruiting Fargo (A), take him to see his other self (H), for he's the only one who can convince him to shape up and let the Magical Dreamers gig happen.
- Beat the monsters in Marbule (H).
- Defeat the black dragon in Marbule (A).
- After defeating FATE, go purchase the Master hammer in Marbule (H). (Cost: 10000 gp)
- Take Zappa (H) to see his other self (A).
The ingredients I use for the rainbow equipment are:
- A @Rainbow shell dropped by WightKnight. (The GoldenTiara gotten also permanently solved any cash budget problems.)
- A @Rainbow shell won from Fargo's roulette game. (In retrospect, this was redundant.)
- A @Rainbow shell stolen from Arni (A).
- @Shiny salt from disassembling an Angel charm picked up at Fort Dragonia (A)
- @Shiny soot from disassembling a Daemon charm picked up at Fort Dragonia (A)
- @Shiny sand from disassembling an Earth charm picked up at Fort Dragonia (A)
- @Shiny ember from disassembling a Flame charm picked up at Fort Dragonia (A)
- @Shiny dew from killing Guillot using ☆FrogPrince.
- @Shiny leaf from disassembling a Forest charm stolen from an enemy in Gaia's Navel (H).
- @Shiny {leaf,leaf,sand} from disassembling the Yellow plate stolen from the Earth dragon.
- @Shiny {dew,dew,ember} from disassembling the Red plate stolen from the Fire dragon.
- @Rainbow shell + @Shiny {leaf,salt,soot,sand,ember,dew} from disassembling a Spectral glove picked up in Terra tower.
The stuff I build are:
- Spectral swallow: @Rainbow shell + @Shiny {leaf,salt,soot,sand,ember,dew} + other components
- Prism vest: @Rainbow shell + @Shiny {ember,dew,sand,leaf} + other components
- Crystalpan C6: @Rainbow shell + @Shiny {leaf,salt,soot,sand,ember,dew} + other components
Considering that my party in the greatest battle consists of Serge + Razzly + Leena, one may wonder why I did not build a Rainbow Rod. That's because Razzly's Floral Rod is about as good (and may potentially have some other benefits, I don't know).
Some @Shiny stuff is left over (leaf and dew) (and one @Rainbow shell), but nothing can be built from them.
However, if I disassembledall the remaining Plates the White Plate and the Prism Vest, I would have gained {soot,soot,salt}, {soot,salt,salt}, {leaf,sand,sand} and {ember,dew,sand,leaf}, allowing me to build a Rainbow Rod. But that was not necessary.
Some @Shiny stuff is left over (leaf and dew) (and one @Rainbow shell), but nothing can be built from them.
However, if I disassembled
Traps and thievery
One of my favourite aspects of this game is the possibility to steal items from enemies, and to trap their elements and summons. So I made sure to exercise that privilege in this movie.
Incidentally, one of my least favourite aspects is the concept of "rare steal" and "rare drop"… Luck-manipulating those, for either way, is very tedious.
Incidentally, one of my least favourite aspects is the concept of "rare steal" and "rare drop"… Luck-manipulating those, for either way, is very tedious.
This is the list of all thievery stuff I did in this movie.
- Kid pilfered a Brass Pick from a Bulb in Shadow forest (A). (This was useful for Nikki.)
- Kid pilfered an Ivory Mail from a Cassowary in Shadow forest (A). (This was a waste.)
- Kid pilfered a Knee Pad from ZOAH in Shadow forest (A). (This was a waste.)
- Kid pilfered a Bronze Helm from an Acacia SGT in Viper Major (H). (This was a waste.)
- Fargo pillaged Sea Charm from SideSteppa in Water Dragon Island (H). (This was a waste.)
- Fargo pillaged colored plates from the Fire, Earth, Green, Black and Sky dragons. (I diassembled some of them, and used the Black Plate in the battle with FATE.)
- Fargo pillaged a Cloud Cape from a Pterodact in Gaia's Navel (H). (This item improves evasion on small characters. I originally intended it for Razzly, but in the end, Razzly never equipped it.)
- Fargo pillaged a Power Seal from Tyrano in Gaia's Navel (H). (This item improves strength significantly on whoever equips it.)
- Trapped ☆Sonja from a PreyMantis in Gaia's Navel (H). (Used later in various battles)
- Trapped Volcano from a Tutanshaman in Fossil Valley (A). (Used later in various battles, most importantly in the Marbule sidequest.)
- Trapped HolyLight from Miguel. (Used later in Grobyc, Combot and Dragon God battles.)
- Trapped Carnivore from Green Dragon. (Used later in Sky Dragon and Dragon God battles.)
- Trapped Iceberg from Water Dragon. (Used later in various battles.)
- Trapped FreeFall from Black Dragon. (Used later in Sky Dragon and Dragon God battles.)
- Trapped UltraNova from Sky Dragon. (Used later in Dark Serge battle.)
- Trapped Tornado from Dragon God. (Just to avoid HP shortage.)
And I guess, stealing a @Rainbow shell from the shopkeeper's cart in Arni (A) should also be mentioned.
Notes ♫
- Past noteworthy events:
- (Fight with Dwarf Tank.) The strategy of this battle was largely unplanned, and I made a mistake in it allowing Leena to die from poison. Unfortunately when I noticed that it could not be prevented without using healing elements, I no longer had any savestates that I could have used to redo the battle from start.
- (Fight with Miguel.) Miguel was a tough one. He does that ☯HolyDragSwd technique which can inflict 700 hp of damage at once, instantly killing a PC. I made the mistake of overwriting relevant savestates after I equipped my party, so I didn't have any Revive elements with me.
I wanted to trap HolyLight in this battle, and to do that, I needed to have the party survive any elements that Miguel throws before casting HolyLight. Using the Imbecile element, I managed to make them survive. Intentionally prolonging this battle meant that I had to be extra careful when using more powerful elements such as ☆FrogPrince, lest Miguel be killed prematurely. This dilemma occurs in all battles where I want to trap elements. - (Fight with Grobyc.) I wanted him to drop me a Freefall, but he did not cooperate. Oh well, I'll try somewhere else. In the second fight with Guillot, I killed it with ☆FrogPrince. Even though it was a boss fight of sorts, I got my @Shiny Dew. Only one ingredient missing for Rainbow Swallow (besides the fabled Hammer), and I'll get it at Gaia's Navel.
- (Fight with WaterDragon.) I set out to capture either Iceberg or Deluge from the dragon – preferably Iceberg because I'm saving ⍌Deluge for the last dragon – and also to snatch a BluePlate. It turned out to be a difficult task. WaterDragon's behavior is difficult to predict. I had to replay this battle many times. In one of the versions, I managed to capture the Deluge element, but she cast another soon thereafter, annihilating my party. In the final version, I managed to accomplish all I wanted. The party emerged fully healed (save Flu on two characters) from the battle, whereas the dragon emerged beaten and
twicerobbed, and humiliated with the Volcano element on a red field and Magnify on.
By the way, I hate it when the characters get a Flu. It's such an annoying effect that you practically need to visit the status screen to heal it, wasting time – except that technically, in a TAS, you don't need to (when the effect is inflicted upon a character you won't bring into a battle anymore). You can just counteract the muddled controls and everything looks just fine! And since you can, you should. It's just a lot of work to do that. Which is why I hate it.
EDIT: After beating the fourth dragon, I noticed I forgot to snatch the BluePlate. Oh well. - (Fight with GreenDragon.) After a number of failed attempts for various reasons, I finally got Green Dragon killed. I also stole a Forest Charm (the last missing piece for a single item of Rainbow equipment), a Power Seal, a Cloud Cape (for Starky & Razzly), and trapped ☆Sonja.
By the way, there's a bug in the green dragon fight. When Leah goes to see the dragon and the party follows, you can just walk away (until the dragon commands you to "come hither"), and you will see Leah is in two places at the same time. She's walking around at the Wingapede landing site (but doesn't react to the action trigger), but she's also staring at the green dragon in the next screen. - (Fight with FireDragon.) 1800 hp damage was an awesome sight. Basically FireDragon was a pushover. Fargo was even poisoned for the whole duration of the fight and still nobody died.
- (Fight with BlackDragon.) Oops, now would have been a good time to equip that AngelCharm I picked up at Fort Dragonia. Too bad I already disassembled it. So instead of magical, I made the battle physical. I equipped
SparkyStarky with attack power boosters and launched the fight. The dragon was not kidding when it said groggy. It was a pushover. In the end, it took slightly longer than I hoped though, because trapping the Freefall element required artificially prolonging the battle long enough until the dragon tries to use that element. - (Fight with SkyDragon.) I didn't switch characters this time, and Lynx didn't have Mastermune, so this fight was longer than in Molotov|'s movie. Still, I beat it with no casualties, and captured the UltraNova element in the process.
- (Nudity!) Yay, Serge is back. Now I took the opportunity to do some sidequests I had no chance to do for a long time. Such as get Leena's L7 tech, and get ready to forge rainbow equipment. So I created a Rainbow Swallow and a Prism Vest. (In retrospect, I can see how Mastermune would have been a better choice after all.) I did some needless going back and forth though, bad planning. Oh, and four ☯FlagBearers. These sidequests took me 10 minutes. For comparison, beating the imposter took 1.5 minutes.
- (Fight with Vita Unus.) PUUH, this enemy was tough
a glutton for self-punishment. I pulled off three (3) summons (☆BlueWhale, ☆Sonja and ☆Saints) before it perished. I actually first used ☆Genie (L8) instead of ☆Sonja (L7), but I then redid it (after a couple failed attempts), because after all the trouble I went through to capture ☆Sonja in the first place, I figured that it might be best to show her here. The battle did not become slower because of that. For this, I gained the Vigora element. Let's hope I can put it to some use later. Vigora + ☯MaidenHeart... Hmm. Perv-connotations not intended.
NEW: How hard was it? See for yourself! This AVI (164 MiB, length 53:53) shows my entire attempt at this battle, which ended up being 6 minutes long when including the boat sailing on the nearby islands. https://bisqwit.iki.fi/torrents/2/chronocross-tasv1-bisqwit-makingof-unusdostres.avi.torrent
As you can see, I revised it quite many times, going with four different party makeups for example. - (Fight with Aquator.) The fight with Aquator was particularly difficult to optimize. There were a number of variables that must work favorably.
- The number of timeunits before the enemy gains its first move is randomized at the battle beginning. The party members must have at least 4 timeunits of initiative. Controlling this factor is done by entering the battle at different times, after different movements.
- When the enemy gets its first turn, it will cast Nimble, Vigora and Numble. The Numble element must be targeted at Serge, for he is the hp-mochi in this party and the only one likely to survive Aquator's next attack. (In retrospect, if I had given Razzly the Cloud Cape, she could have survived too.)
- After the enemy's actions, the party must gain enough stamina points in order to execute a sequence of Magnify, TurnYellow, GreenField and ☆Genie, before the enemy casts Magnify and ☯OmegaBlue.
- Next, the enemy will attack the same character that it cast Numble at, six times; at randomly selected fierceness levels. The character must survive this. Serge, being the hp-mochi, has the highest likelihood. The others could survive only if they are extremely lucky. (In one of the attempts, Razzly dodged four of the six attacks (despite Numble) but then Aquator smashed two critical fierce attacks, bringing her down regardless.)
- Next, the sequence of Magnify, TurnYellow, GreenField and ☆Genie must be delivered before the enemy's next action.
- The party must not deliver too much damage to the enemy before casting ☆Genie, or otherwise the enemy will cast a CurePlus at itself, ruining the field attributes and prolonging the battle.
- The ☆Genie summon must knock out the enemy at once. If it doesn't, it will CurePlus itself, prolonging the battle.
- Because chances are that Aquator's vigorous attacks left Serge severely hp-deprived, the party members must still have enough stamina points remaining in order to cast healing elements after the battle.
- (Fight with Dragon God.) Before the fight, I prepared like for a war by explicitly equipping each character with custom selected elements, though I made a few mistakes. Nevertheless, it turned out that my preparations were a bit exaggerated. With the strategy I had planned, this boss was a pushover. Really. You'll be surprised when you see it.
- (Fight with Devourer of Time.) A text-book example of a perfect game completion. With the ChronoCross in L8 slot. (L1 would have sufficed just fine, but I didn't bother to re-equip after the latest battle.)
Although the total length of time includes things I try&fail and things I test ahead, most of my testing ahead is done on a separately run pSX instance that does not produce recording. Thus, the undone length consists almost entirely of failed attempts (refinining of movements etc).
Thanks ☺
Thanks to
- Molotov| for his speedrun at SDA; it was a model for this TAS in many aspects, even though I picked a different route. Also, thanks for answering many of my questions.
- Nitrodon for answering many of my questions.
- Cidolfas for the Chrono Cross Shrine at RPGClassics. This was an invaluable resource for me in all things related to plot, elements, accessories and enemies.
- "Person man" for the element capture guide hosted at GameFAQs. I used this guide extensively in the latter part of the movie for predicting the bosses' actions.
- All the people who anticipated this TAS, keeping my motivation up.
FAQ ❝❞
Q: So there's no input file. You're just recording what you're playing, straight to the AVI?
A: Correct.
A: Correct.
Q: When you loadstate, do you overwrite what you just recorded or does it continue recording?
A: It continues recording. But it writes a log file detailing when exactly were quicksaves created&loaded. By reading the log file, a program can stitch together the actual successive segments from the recording, to produce the intended movie. With high quality savestates in the emulator (i.e. loading a state restores the emulation, or at least video and audio, precisely to the state it was when the state was created), the stitching becomes seamless.
A: It continues recording. But it writes a log file detailing when exactly were quicksaves created&loaded. By reading the log file, a program can stitch together the actual successive segments from the recording, to produce the intended movie. With high quality savestates in the emulator (i.e. loading a state restores the emulation, or at least video and audio, precisely to the state it was when the state was created), the stitching becomes seamless.
Q: Doesn't it take a lot of disk space?
A: Yeah. The ~10 hour recording so far takes 80 gigabytes of space. Of course I could shorten it by removing the undone segments, but I do have space, so I want to keep it. Or I could shorten it by recording with better compression, but this is what I have now.
A: Yeah. The ~10 hour recording so far takes 80 gigabytes of space. Of course I could shorten it by removing the undone segments, but I do have space, so I want to keep it. Or I could shorten it by recording with better compression, but this is what I have now.
Q: I see you are recording the video straight into H.264 format. But video frames in H.264 depend on preceding frames. Doesn't the stitching mess up the reference frames logic of the codec?
A: The recorder forces the encoder to create keyframes every time a savestate is created. This way, each segment always begins from a keyframe, and the stitching is flawless (barring emulation bugs). This is accomplished by using the x264 library directly instead of via mencoder.
A: The recorder forces the encoder to create keyframes every time a savestate is created. This way, each segment always begins from a keyframe, and the stitching is flawless (barring emulation bugs). This is accomplished by using the x264 library directly instead of via mencoder.
Q: Why cannot you add input rerecording to the emulator the same way you add AVI rerecording? Then you could have a replayable input stream file and it could be submitted here.
A: Though it is true that I could implement input rerecording, the problem is that without the source code, I can not fix the determinism problems that pSX has. Deterministic emulation is a requirement for input rerecording. Lacking that would lead into frequent desyncs.
A: Though it is true that I could implement input rerecording, the problem is that without the source code, I can not fix the determinism problems that pSX has. Deterministic emulation is a requirement for input rerecording. Lacking that would lead into frequent desyncs.
See also:
- TAS / re-recording demonstration video (at YouTube.com) ― consists of a portion of this TAS.