Submission Text Full Submission Page

NES Crystalis (USA) by TheAxeMan

  • Takes damage
  • Lots of glitches
  • Crazy luck manipulation
  • Crazy lag reduction
  • Stabs a dinosaur in the heart
I have gone through several versions of FCEUX since I started this run but ended with 2.1.5. Many thanks to the developers for adding some useful lua features for me.

About This Game

Crystalis is an awesome action rpg by SNK. What little plot there is involves the world ending on October 1, 1997. Naturally, after that the world became full of mutants and monsters. Technology regresses and people can use magic. There is an evil empire trying to revive the ancient technology, specifically the obligatory tower floating in the sky. The hero pops out of some sort of stasis chamber and proceeds to topple the empire and take down the tower with the help of some wise men and a friendly dolphin. There's a heroine named Mesia, but she only shows up a few times, most of which are skipped in this run.

About This Run

This beats my test run by over 2 minutes and tmont's run by almost 12 minutes. As with that run, the second-controller cheats are off-limits (the fm2 only has data for controller 1). Other than that, no holds are barred. Many new glitches are used. For a complete list, see the game resources page. Movement is faster by abusing the no-subpixel engine. Much effort went into lag reduction, especially in certain areas. However, the vast majority of the time savings is due to better experience management. That is, I spend less time grinding and grind more efficiently.

New Tricks and Glitches

Major new glitches are climbing up slippery slopes and air jumping over pits. I also upgraded two of tmont's tricks. The reset button can be used to get the same effect as dying to execute the sword charge glitch in much less time. That is why this run does not use death as a shortcut. Ghetto flight has also gotten a new dolphin warp feature. The dolphin reappears at the top of the falls and I can get back on. In tmont's run the dolphin disappears, but he doesn't get it to reappear in a useful spot. Other big changes include different grinding spots near Brynmaer, on Mt Hydra North and in the Styx cave. This run also visits Amazones later and does not collect the blizzard bracelet or thunder bracelet. Unlike tmont's run, the level 3 tornado and fire attacks are used. The big dragon fight is much faster because its attack sequence is altered by taking a hit from Draygon's human form. Stom is defeated on the first try with a little finesse.

Experience Management

The most dominating aspect of a TAS on this game is that levelups are required. Every enemy has a minimum level you must reach before they can be damaged at all. Even a TAS has to do some grinding to reach the level required to beat each boss. This leads to a very unique TAS where almost every enemy in sight is hunted down and killed. In fact, much work went into making more enemies spawn so that they could be killed as well. Doing this while travelling from place to place cuts down on grinding significantly. Still, about 5 minutes of this run is spent in repetitive grind loops. Use this lua script to fast-forward those sections automatically.

Now For Something Different

Instead of going into a lot of detail here, I want to try something different with the author's notes. Start the run and load this lua script. My notes will pop up in an iup window. Besides the notes, this script can show hitboxes, RNG and counter values. It also adds lua-based rewinding that can be disabled if your computer is on the slow side. I've set it up to show hitboxes and values at interesting points but it also allows for toggling those whenever you want. Fast-forwarding the grinding sections is also supported. Part of the reason I made this was to encourage people to play the run on the emulator instead of watching the encode. It would still be really cool if this could be encoded.

Possible improvements

After getting most of the way done I discovered that the slope glitch could be activated with teleport or telepathy. That would allow for using the slope glitch on Mt Hydra South and avoiding the backtrack on Mt Hydra N. That would save some time but the route change would also affect experience so more grinding would be need. So probably less than 30 seconds of overall gain. I'll leave the details for the next generation of TASers to figure out.
There's also places where lag can probably be cut more, especially early on. I did pretty well, but as I went on I figured out more little tweaks and put more effort into globally optimizing the flow of the counters. With a lot of work maybe a second or so could be cut from lag.
Finally, there are a few cases where perfect luck might give a little speedup. Either I wasn't able to line it up with something else and picked what was best or it wasn't practical for some other reason. But maybe there's some other flow I didn't consider. For example, damage boosting on slugs in the sealed cave might be able reach a later room early enough for another enemy to spawn. Or maybe there's a way to reach the grind spot by Brynmaer a cycle earlier.

Lua Code

Here's the lua code I used making the run for anyone interested in making the improvement or any other TAS on this game. It's got a few things I cut out of the author's notes lua including an enemy data table, spawn point markers and a simple macro bot.

Thanks

Many thanks to everyone on the forums for encouragement and for beta-testing the author's notes lua. Thanks of course to tmont for his run and coming up with a lot of these glitches.

DarkKobold: Easy acceptance of an awesome movie.
OmnipotentEntity: I'll take care of publication on this run.

TASVideoAgent
They/Them
Experienced Forum User, Moderator
Joined: 8/3/2004
Posts: 12513
Location: 127.0.0.1
This topic is for the purpose of discussing #3463: TheAxeMan's NES Crystalis in 40:40.43
Experienced Forum User, Skilled player (1620)
Joined: 6/11/2006
Posts: 818
Location: Arboga, Sweden
NES TAS of 2008Rookie of 2007GBx TASer of 2007
Thank you. That's all I can say. I really mean it.
Warp wrote:
omg lol this is so fake!!!1 the nes cant produce music like this!
Experienced Forum User
Joined: 6/20/2008
Posts: 150
I wholeheartedly agree with Cardboard.
Experienced Forum User
Joined: 1/31/2012
Posts: 15
I absolutely love the idea of author comment/narration in a LUA script. Can't wait to watch this run when I get home.
Experienced Forum User
Joined: 7/29/2004
Posts: 136
Location: Temple City, CA
Absolutely yes, and I'd love to see a version of the published movie that included the lua script, so that everyone can see the work that went into this, if it is technically possible.
"How can you prove you exist? Maybe we don't exist..." -Vivi Ornitier (Final Fantasy IX)
Post subject: crystalis: youtube
Experienced Forum User
Joined: 3/18/2006
Posts: 971
Location: Great Britain
Experienced Forum User
Joined: 6/20/2008
Posts: 150
I am sad! And possibly inept somehow. Can't seem to get that commentary lua script to function at all in FCEUX 2.1.5. If I try it a second time after it tells me "no" once, then it actually crashes the program. Suggestions?
Ambassador, Experienced Forum User, Experienced player (586)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Thanks, everyone. Priam, what sort of errors are you getting with the lua script? It does depend on iup which might not be supported on some platforms.
Experienced Forum User
Joined: 5/24/2004
Posts: 262
Big "yes" vote. The effort you put into this is evident and the "value added" commentary lua script really enhances the art of TASing. I have never read so fast in my life ;p
Experienced Forum User, Player (230)
Joined: 7/30/2006
Posts: 207
Location: Alefgard, USA
Just watched (with some fast forward during grinding... although I loved your grinding method on the mountain with the icy slides) Yes vote - you clearly have a commanding knowledge of this game. Leveling up to 16 on the very last enemy before the 2nd to last boss. Nice.
Experienced Forum User
Joined: 12/1/2007
Posts: 43
Location: Bogotá, Colombia
Been following it since quite some time. Oh yeah...
When human lurking is not enough
Warepire
He/Him
Editor, Experienced Forum User
Joined: 3/2/2010
Posts: 2172
Location: A little to the left of nowhere (Sweden)
That was some insane planning and execution, really nice improvement on the existing TAS, yes vote. TheAxeMan: Is your nick somehow related to Omen's song The Axeman?
Experienced Forum User
Joined: 8/11/2010
Posts: 45
Location: Virginia
I really wanted to see, and I'm so glad you finally finished. I too am in favor of seeing the lua script encoding with the movie if possible.
mklip2001
He/Him
Editor, Experienced Forum User
Joined: 6/23/2009
Posts: 2206
Location: Georgia, USA
Incredible. The testrun was already great, and this is even better. The grinding is still fairly interesting, and the overall management of XP is really seamless. I couldn't get the Lua script to run perfectly... when I tried it, I got your commentary but I didn't see memory values being displayed. Still, the commentary was a very nice touch. (Actually, my computer slowed down like crazy when the rewind buffer was on, so I had to disable it and then things worked fine.) Yes vote!
Used to be a frequent submissions commenter. My new computer has had some issues running emulators, so I've been here more sporadically. Still haven't gotten around to actually TASing yet... I was going to improve Kid Dracula for GB. It seems I was beaten to it, though, with a recent awesome run by Hetfield90 and StarvinStruthers. (http://tasvideos.org/2928M.html.) Thanks to goofydylan8 for running Gargoyle's Quest 2 because I mentioned the game! (http://tasvideos.org/2001M.html) Thanks to feos and MESHUGGAH for taking up runs of Duck Tales 2 because of my old signature! Thanks also to Samsara for finishing a Treasure Master run. From the submission comments:
Shoutouts and thanks to mklip2001 for arguably being the nicest and most supportive person on the forums.
Ambassador, Experienced Forum User, Experienced player (586)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Glad the lua is working for most people. I expected the rewinding to be bad on slower computers. On my beefy home desktop it runs fine at normal speed but turbo doesn't add much speed. If the memory values don't display that means lua is having trouble drawing onscreen. Maybe mess around with some of the display settings? About my nick, it's from when I played college Ultimate. Not sure what the upperclassmen were thinking but I never heard of that band. I think it was more because I played in a shirt with a Scottish highlander drawn with a big-ass battleaxe (my high school mascot). Edit: Ok, I listened to that song and it's pretty awesome. Bow down to TheAxeMan!!
Experienced Forum User
Joined: 7/2/2007
Posts: 3960
I watched antd's encode, and it was quite excellent. I'll probably end up watching it again if there's an encode with your Lua scripts active. Everything in the run went smoothly, even the grinding. Great work!
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Experienced Forum User, Player (22)
Joined: 4/23/2005
Posts: 435
Location: Germany
Yes, love this game and the TAS looks great. :-)
Last TAS finished: Final Fantasy Adventure (4.0 Warp Glitch Run) WIP in the moment: Tail Gator (GB) Matty
Active player, Experienced Forum User (349)
Joined: 9/25/2011
Posts: 647
Speedy TAS of 2015
Though I've never played the game, it was fun watching ------ run around and beat up on monsters. Yes vote!
XYZ
Experienced Forum User
Joined: 12/9/2006
Posts: 156
Location: 2bastuz
Read your full encyclopedia about this game. To have time to read through all it is necessary to look still some times. Thanks for this work. It seems only to me, what the dolphin in prompt movement becomes similar to hippopotamus (suggested screenshot)? Yes vote.
Post subject: Great use of tools for narration
Experienced Forum User, Experienced player, Moderator, Senior Ambassador (844)
Joined: 9/14/2008
Posts: 916
Exotic platforms TASer of 2015Exotic platforms TASer of 2013
I'm completely unfamiliar with this game and found the Lua script commentary to be incredibly helpful in understanding what was going on. I opted to disable the rewind and show tricks options and enable all tools which made for a pleasant viewing experience. I did have to pause frequently to be able to keep up with all of the notes but this was to be expected. Being able to pause (and rewind) while the lua control screen is focused would be helpful as I spent a lot of time switching between the lua screen and the FCEUX main window. As an aside, this viewing experience also gives me some food for thought on how to handle the upcoming run of NetHack that ais523 and myself have been working on since 2010 - most viewers will not be familiar with the game, the graphics can be hard to understand, and we have boatloads of commentary which turns out to be similar to my viewing experience on this run. Doing the commentary using a lua script may make sense if jpc-rr can play in realtime at the time we finally complete the run, which is still some months out at this point. It'll be an option to look into once we get close to being done. Oh, for the record, I voted Yes. :) Thanks for the entertaining run, A.C. ******
The TASBot community made our most significant run yet with Ocarina of Time Triforce% Showcase! The TASBot Discord server has a #triforce-percent channel about the run that helped raise $227k for Doctors Without Borders during SGDQ 2022. I'm posting TAS content on YouTube.com/dwangoAC based on live streams from Twitch.tv/dwangoAC. If you can help defray charity event costs via Patreon.com/dwangoAC my kids and I would be very thankful.
Post subject: Complete dump of lua script output
Experienced Forum User, Experienced player, Moderator, Senior Ambassador (844)
Joined: 9/14/2008
Posts: 916
Exotic platforms TASer of 2015Exotic platforms TASer of 2013
I'm not sure if this is a good idea or not because it's so long but here is the complete script as displayed in TheAxeMan's lua script. I've posted it here because I initially had difficulty getting this to function in Linux (I ended up using Crossover to run the Windows version of FCEUX which works well - just don't Alt-Tab to the window or the Alt key will get stuck). I suspect users of other OS's such as Mac users will have similar problems seeing this content. I hope I'm not stepping on any toes by posting this; feel free to invoke administrative power to delete or reformat this if I'm crossing the line here. Without further ado, here's the text from the script (showing frame number followed by time before each comment from TheAxeMan): 10 (0:00) Welcome to the TheAxeMan's Crystalis run! 240 (0:04) Picking continue skips naming character 300 (0:05) You can move freely before landing but you can only bounce in one direction. Bouncing diagonally saves a few frames on the next screen. 1100 (0:18) Using the shopping glitch I pay $30 for alarm flute (normally $50) and $50 for warp boots (normally $60). I can't get anything for free here because there is no blank in the list. 1960 (0:32) Equip my sword 2300 (0:38) Meandering through the valley like this gets xp faster than grinding 2650 (0:44) There is a blob down there. Underneath the status bar still counts as onscreen, so you can hit enemies there. You can also go there yourself if the screen scrolling is locked. 3000 (0:50) Let me introduce the Global Counter (GC). It's displayed at the top center of the screen. This is at RAM address 0008. It increments every non-lag frame and controls enemy spawning and many other things. Display is in hex because many things happen when lower nibble (or hex digit) is 0. 3300 (0:55) Since it is one byte and increments every frame, that means one cycle takes 256 frames or a little over 4 seconds. So in the worst case that's how long you might have to wait for something to spawn. 4000 (1:06) Some enemies spawn immediately on entering an area. Others spawn at a certain GC value. Most of the enemies here spawn immediately on entering the area. 4200 (1:10) I'll describe the spawning process in more detail when the grinding begins 4850 (1:20) Taking out two blobs at a time is about 5% more efficient. Makes for a grind rate of about 0.6 xp/sec. 5000 (1:23) Equip alarm flute 6000 (1:40) Equip windmill key 6200 (1:43) Somehow starting the windmill causes an explosion... 6600 (1:50) Now let me introduce the seed for the RNG. Look at the upper right corner. This is at RAM address 000E. It increments when a random number is used. Any enemy that has a shot or attack uses this and some enemies use it for movement. 7200 (2:00) Turning and shooting like this can give an enemy time to use another random number. One way to manipulate luck. 7680 (2:08) The blob down there moved right for me 8200 (2:16) Refresh is the basic healing spell. I won't need it for this run. 8700 (2:25) I really wanted to spawn another slug here but couldn't make it on time 8850 (2:27) Need to wait a little for a spawn here 9400 (2:36) Seeing enemy hp onscreen is nice. Zero hp is still alive because the game kills off an enemy when hp-damage underflows. Below the hp is the enemy slot index. More on that later. 9730 (2:42) Slugs and blobs are 2xp each. Dragons are 3xp. 10050 (2:47) This golem is worth 4xp. Seems out of the way, but the timing worked out well. 10300 (2:51) The bats are only worth 1xp each, but they practically fly right into my sword 10500 (2:55) Equip my new ball. Going to the menu advances the global counter so I do it during wait times if I can. 11500 (3:11) I tried a few different ways to handle this wall and this turned out best. Often saves time to lure an enemy near a wall and multitask by killing it while wall explodes 11800 (3:16) Shots do more damage than stabs. Lvl2 shots do more than lvl1 shots. Takes 5 stabs to kill one of these dragons but a shot and 3 stabs will also work. Or a lvl2 shot, a lvl1 shot and a stab. 12400 (3:26) Don't blink 12600 (3:30) Leading off with a lvl2 shot saves a hit. He sends two bats at me but they appear right on top of my sword. 12700 (3:31) Moving during the early part of the explosion causes lag. But once the screen stops shaking it's all right to dance. 12800 (3:33) By the way, that is one of the slower boss fights :) 13350 (3:42) Welcome to Cordel Plains! 13500 (3:45) That shot hits twice. Difficult to do with wind sword lvl2 but possible if the enemy is big enough. 13800 (3:50) Once again, these pigmen take 5 stabs, but 3 stabs and a lvl1 shot also works. Or two hits from a lvl2 shot and one lvl1 shot. 5xp each. 14300 (3:58) In the short term, it's slightly faster to visit Brynmaer first and then warp back after getting the statue. But there's a spot up ahead where we have to wait for a precise spot on the counter and the timing and xp worked better this way. 14750 (4:05) Equip the statue. As long as we're in the menu, equip those rabbit boots too. 15200 (4:13) With the blank in this item shop's list I can fill out my inventory with warp boots. This is also the best time to get a medical herb for later. 15700 (4:21) Now to show off the most important feature: hitboxes 16250 (4:30) Jumping over the swamp doesn't save as much time as you might think. It's usually not worth extra effort to equip the boots, but luckily we have them on now. 16800 (4:40) Equip gas mask and warp boots 17000 (4:43) It is possible to get through here without the gas mask, but it takes too long. Options include pausing a lot, buying and using medical herbs and using all mp on refresh. Not worth it. 17400 (4:50) In order to warp back to Oak, you need to touch the hitbox just below the pond. This is a trigger for the next event. 17600 (4:53) We saved a menu trip by already having warp boots equipped 18000 (5:00) Taking out this enemy with shots like this is very efficient 18650 (5:10) All right Stom, I'm coming for you! 18959 (5:15) You can beat Stom on the first try if you use a little finesse. Your sword is wider than his, so from the right position you can hit him while dodging his attack. 19450 (5:24) Equip warp boots. Note that I never unequipped gas mask. 20350 (5:39) The enemies in the swamp can be hurt by wind sword but not until level 4. It would be nice to get some xp here, but it saves time to wait until later when I can get xp faster. 20750 (5:45) Equip rabbit boots and warp boots. I guess he can wear one boot on top of the other? 21700 (6:01) Equip my new fire sword and another warp boots. Then save the game and reset to execute the charge glitch. 22000 (6:06) Charge glitch: I can use lvl2 fire sword attacks despite not having the ball. This lets me skip the big bug fight in the swamp. 22250 (6:10) lvl2 fire shots may not lag much if well tweaked. Controlling screen scrolling and holding B button help. 22500 (6:15) An ideal spot to grind. Three enemy spawn points are close by and it is possible to kill them all every cycle. Each blob is worth 8xp, so 3*8xp / 256 frames comes out to 5.6 xp/sec. That will do for the next two levels, though it will still take a while. 22800 (6:20) On level 3 I need to use a shot to kill in one hit. On level 4 a stab is enough. 23100 (6:25) As promised, I'll explain how spawning works now 23300 (6:28) All data on enemies and other objects are stored in a table. The index that I show below hp tells me which slot the enemy or object is in. 23700 (6:35) Each area has a set of spawn points defined. Each of those spawn points is linked to an index in the enemy table. 24000 (6:40) Spawning is triggered for a spawn point at a certain point on the global counter. At that time the spawn point needs to be offscreen and its slot needs to be empty. These enemies spawn at A0, 90 and 80. 24300 (6:45) Of course the slot is not empty if the previously spawned enemy is still alive. But the slot can be occupied for other reasons. 24600 (6:50) Enemies spawn in a particular slot, but projectiles and coins can pop into any slot that is available at the time. Spawning will be blocked if they are still in that slot when spawn time hits. 24900 (6:55) That's why picking up coins can be important. Killing an enemy later or otherwise getting a coin to use a different slot can also work. 25100 (6:58) This can also make it important to manipulate enemy projectile attacks. 25300 (7:01) Dying enemies take some time to vacate their slot, so it's necessary to take out the previous enemy about 50 frames before the next one spawns. 25600 (7:06) These tricks can also be used to prevent enemies from spawning when I don't want them. So if I don't need their xp I can avoid some lag. 26000 (7:13) Another big result is that there are breakpoints where I need to reach a certain area by a certain counter value 26200 (7:16) There are also breakpoints where I need to wait for something to spawn. In that case I can use the extra time to reduce lag. That speeds things up overall because the counter does not count on lag. 26700 (7:25) Now it's time to kill a whole bunch of ice zombies. They take 8 stabs or 6 stabs and a shot and give 12xp. 26900 (7:28) Sliding down here makes things work out efficiently. 27409 (7:36) You can only hit one enemy at a time. You only need to wait two frames to hit the other one but this can still be annoying at times. Lower enemy index gets priority. 27740 (7:42) lvl2 fire attack can hit an enemy 4 times for lots of damage. Usually lags at least a little but depends on the situation. 28000 (7:46) The explosion animation can also interfere with spawning. In this case it conveniently removes an enemy that would cause some lag. 28400 (7:53) Those dragons can't be hit with fire sword and I can't switch without cancelling the charging glitch. 28850 (8:00) The lvl2 shot is so convenient on these spiders that it is almost always worth the lag. The lag is sometimes bad but often I can reduce it quite a bit. Turn on the lag counter if you are curious. 29300 (8:08) These ball enemies are also immune to fire sword 30400 (8:26) Delaying the shot like this helps to spawn one of the zombies and also cuts lag 30803 (8:33) Look for the slope counter ($0660 in memory) when I slide down. The higher it is, the more the slope affects you. In this case we want it to be high to slide down faster. 31100 (8:38) Every 16 frames when the lower hex digit of the counter is 0 the game checks to see if you are on a slope. If so, the counter increases. 31400 (8:43) If you are moving down at that point, it jumps to 7. Otherwise it increases by 1. 31700 (8:48) The counter does not go up if you are jumping at the check. But as soon as you land it goes up by one. 32000 (8:53) In each loop I kill 8 zombies for 12 xp each. The overall rate is 7.2 xp/sec. A little better than the 5.6 xp/sec I was getting before but not by much. 33300 (9:15) I'll get the rest of the xp on the way to the next area 33950 (9:25) I could have gotten all three spiders but I only need two of them 34200 (9:30) That chest has a medical herb, but it was still faster to buy it in the shop earlier. 34600 (9:36) Walking under the status bar is perfectly all right. 35700 (9:55) That's the last wall so now I can switch to wind sword and bracelet. Going to the menu during the explosion also helps cut lag. 36000 (10:00) All of the lvl 3 sword attacks are fun. I can spare some mp and it saves a little time. 36350 (10:05) Equip teleport and gas mask 36400 (10:06) Magic ring restores all of your mp. That will be useful later on. 36900 (10:15) Now I can take out these enemies. Fire sword also works but is laggier and switching would be a waste of time. 37650 (10:27) Better to wade through the swamp than spend time equipping rabbit boots. 37850 (10:30) lvl3 tornado attack is less laggy here and also very stylish. 37965 (10:32) Just walk through the middle here to skip Leaf kidnapping event. 38100 (10:35) That is why there was no need to go into Zebu's cave or Leaf again. 38300 (10:38) On the previous screen there is a trigger box that prevents entering the mountain before getting teleport. No way around that one. 38500 (10:41) No need to stop here at Nadare's inn. That will leave a blank in the teleport list. 38750 (10:45) Unequip magic by equipping and unequipping refresh, and also equip rabbit boots. 39000 (10:50) Earlier I mentioned that the slope counter increases every 16 frames. But you can prevent that by pausing at the right time. 39300 (10:55) The result is that you can keep climbing up without the slope pushing you down. 39600 (11:00) The increment that happens when you land after a jump can't be cancelled this way. 39750 (11:02) Later on I discovered that teleport and telepathy can have the same effect. This would be nice because I could use the charge glitch. But I was too far ahead and didn't want to go back to this point. 40100 (11:08) You can jump up this slope without the pause glitch, but you do need good timing with respect to when the counter increments. 40400 (11:13) The guards take 12 stabs or 10 stabs and a shot. Or two hits from a lvl2 shot, 1 lvl1 shot and 6 stabs. 40700 (11:18) Rabbit boots help tighten this grind loop. Neither the guards nor their swords can touch the airborne hero. 41000 (11:23) I need 1200 xp and the guards give 25, so I'll be taking out 48 of them. One of the longest grind sequences in the run. Rate is about 10 xp/sec. 41150 (11:25) The way it works out with their sword attacks is similar to Stom. I can avoid their attacks and fight back from the right position. But it can get tricky when there are many of them stabbing at me. 41500 (11:31) Although it is long, this was one of the more interesting sequences to optimize. There are a lot of factors to consider. 41800 (11:36) Of course the first consideration was making the loop as tight as possible. But the next most important optimization involves the second enemy from the top of the passage. 42100 (11:41) The other three spawn immediately on entering the room. That one is subject to the timer. Since he's so convenient I adjust the timing of things around spawning him. I can use the wait time to cut lag. 42400 (11:46) Another consideration is landing on the right amount of xp in the least time. 42700 (11:51) The number of enemies to kill on this platform is another factor. Both, one or none? They all take different amounts of time, affecting the spawn inside the passage. 43000 (11:56) I wrote a little optimization program to check all the combinations of outside kills and whether or not to wait for the enemy inside to spawn. 43300 (12:01) The script didn't actually play it out. It just analyzed the counter values, experience and overall time. 43600 (12:06) The result is what you see here. I always spawn the enemy in the passage and usually get just one kill outside. 43900 (12:11) Sometimes I need to wait a little for the spawn. That time is used to cut lag. 44200 (12:16) How can extra time cut lag? Basically, lag happens because the processor has more work than it can do in a frame. Sometimes you can avoid that by moving slower. 44500 (12:21) Often, just waiting a frame will prevent it. In other words, don't move for a frame and then the lag frame doesn't happen. 44800 (12:26) In the short term this means the same amount of time passes. But the counter doesn't count on lag. So that motionless frame counts toward the time for the next spawn while the lag does not. 45100 (12:31) In some cases I can use the extra time to switch to a completely different and less laggy method. Or manipulate enemies to behave differently. 45774 (12:42) There is a trick to using the rabbit boots to push enemies around. On hitting the A button you can take two steps before you start jumping and can't change direction. But during those two steps you are considered airborne. Two steps is enough to move left or right into position so that I can push them down. 46273 (12:51) There is another way to walk through an enemy. They can't hit you when they are being pushed back from a hit. This really only comes up when you push them against a wall but it's often useful to abuse. 46571 (12:56) Yay, level 7 at last! Now we can take down the boss. 47000 (13:03) The tornado shot hits three times. Kelbesque's movement is manipulated by the position of the hero. So I set him up to end the fight on top of the chest. 47300 (13:08) I need to go back for the key. There is an ice wall in the way and I couldn't execute the sword charge glitch because I needed to pause for the slope climb glitch. But with the flame bracelet I can now legitimately charge fire sword to lvl2. 47750 (13:15) Equip fire sword and unequip wind bracelet 48000 (13:20) The jail is empty because of the Leaf kidnapping skip. 48700 (13:31) I am now selective about which guards to kill because I can get xp much faster up ahead. 49000 (13:36) Switch to wind sword. This was timed to use the slope glitch for a little boost up the hill. 49350 (13:42) Equip fire sword and the key 49600 (13:46) The Leaf elder is not here because of the Leaf kidnapping skip 50416 (14:00) The voice in the hero's head mentions that paralysis will be useful in the next town. It won't be, but there will be other uses for it. 50700 (14:05) Welcome to Portoa. This visit is to set up warping so we'll be back later. 51000 (14:10) These green masked guys can be hit with wind sword. But they take too many hits and only give 25xp. They aren't worth taking out just yet. 51180 (14:13) On the other hand, the flying tentacle monsters can be taken out easily for 40 xp. I'll be getting more of them later. 51300 (14:15) Switch to wind sword 51600 (14:20) These crawlies go down easy enough for 30 xp, so I switch to wind sword for them. 51920 (14:25) Back to fire sword 52500 (14:35) Walk though persons glitch: By moving diagonal you can get through guard NPCs. This works because they push you back with respect to the direction you are facing. The hero faces south when walking southwest, so it is possible to progress west and be ejected north. 52800 (14:40) This avoids a lengthy sequence in Portoa where you need to talk to the queen and fortuneteller repeatedly to get the flute of lime to unstone them. 53300 (14:48) These medusas are the next enemy I'll be killing a lot of. But not just yet because neither of the swords I have right now can hurt them. 53600 (14:53) I probably put more work into this room than any other spot in the run. The result is well worth it though. 53900 (14:58) Rounding these enemies up for later slaughter 54370 (15:06) One reason this room is difficult is because I needed to manipulate the enemies' random movements. The enemies need to move into a good position for me to kill them. 54500 (15:08) Scrolling the screen to the right before blowing the wall saves time because I don't need to wait for the screen to scroll again before getting the chest. 54750 (15:12) Equip my new water sword and teleport. This means I can't jump. It would be convenient up ahead, but doing it this way saves a menu trip. 54900 (15:15) Now it's time to slaughter the enemies that I so carefully manipulated. Some of them will respawn and be killed again. 55200 (15:20) The other reason this room took so much work was lag. These medusas are very laggy. That's why I manipulate them to spread out and try to keep them from shooting much. I also have some wait time available because of how the spawning works out. 55500 (15:25) There is a grind loop here, but I won't need to spend much time in it. The ranching strategy helps out a lot. 55700 (15:28) Getting this enemy in the right position is a big manipulation issue. It can run away to the south if you aren't careful. 56100 (15:35) My loop takes two counter cycles and takes out six enemies for 50xp each. That works out to 34.6 xp/sec. Nice! 56450 (15:40) This damage boost helped work out the luck a bit. 56650 (15:44) A good place to end the loop because the next enemy is down the corridor a bit. I'll get the rest of the xp in the valley. 57200 (15:53) With water sword I can now take out those green hoods easily. 57800 (16:03) These tentacle fliers are great. They are worth 40xp and they fly right to me. Their movement is based on position relative to the hero. They move offscreen, but faster onscreen. 58600 (16:16) Equip the ball the Rage gave me and unequip teleport so I can jump. 58850 (16:20) We were supposed to meet Mesia, the heroine back there. But it's not necessary to trigger anything. Getting the ball of water is an important trigger. Even if we used the charge glitch, we need the ball to trigger something up ahead. 59400 (16:30) I've manipulated the slugs' random movements to be convenient for me. 59900 (16:38) Spiders are worth 120xp and vulnerable to water and fire. Plants are worth 100xp and vulnerable to fire and wind 60000 (16:40) More herding. In this case it saves a menu trip. 60140 (16:42) Equip wind sword and unequip water ball. For the wall. 60230 (16:43) Now equip fire sword. It's the best for fighting here because it can hurt most enemies and the lvl2 attack is very useful. 60700 (16:51) The dragons are only worth 10xp! They are only vulnerable to water. 60900 (16:55) The goombas are worth 80xp and vulnerable to fire 61200 (17:00) Switched to wind sword for the wall, then back to fire. 61600 (17:06) Throughout this cave I am using some frames for lag reduction. This is coordinated with the counter values I need at certain points to spawn enemies. 61980 (17:13) Wind sword 62490 (17:21) Water sword, ball and teleport 62900 (17:28) One cave down, one to go 63200 (17:33) Lvl2 water shots are very useful. Big hitbox, good damage, easy to land two hits. 63480 (17:38) Equip wind sword, unequip water ball and unequip teleport for jumping. 63850 (17:44) Fire sword 64050 (17:47) A lot of counter management went into spawning this spider. It's easy for the explosion of that wall to block him from spawning. 64400 (17:53) The spiders have a paralysis shot, but I generally manipulate luck to avoid them ever shooting. All the enemies here move based on relative positions and are straightforward to handle. 64850 (18:00) Lvl2 fire shot with no lag. It is possible. 65150 (18:05) Wind sword 65350 (18:09) Killing this goomba would require switching swords two more times. I considered herding him towards the wall but even that was more bother than it was worth. So he got lucky and gets to live. 65600 (18:13) Fire sword. Under the status bar again. Only problem with this trick is that it can be really laggy if you aren't careful. 66180 (18:23) Wind sword 66650 (18:30) Two goombas could spawn here but taking them out would require two more sword switches. Best to keep them from spawning to cut lag. 67000 (18:36) Fire sword. Finally, after three walls in one room! 67500 (18:45) I had to hurry to get all these spiders to spawn 67800 (18:50) Wind sword 67980 (18:53) Water sword and teleport 68200 (18:56) These dragons are only worth 10xp, but now I have the right sword equipped. 68550 (19:02) A little wait here to spawn the last spider 68725 (19:05) Wind sword 68890 (19:08) Water sword and ball 69220 (19:13) We'll finally do a little more in Portoa 70350 (19:32) 'The queen and fortuneteller were really me' says Asina. 'Sorry, I glitched past that part', replies the hero. 70500 (19:35) Recovery is another spell we don't need. But again, getting it is a necessary trigger. 70720 (19:38) Equip flame bracelet, medical herb and fog lamp. Some inventory changes are done in a funny order to save a few frames. 70980 (19:43) That was why we had to carry a medical herb all this way. Warping immediately after giving the herb lets us skip watching the dolphin swim out to sea. 71600 (19:53) Equip fire sword. The only reason for the menu here is because of an inconvenient glitch. Fog lamp is equipped, but not usable because we used the medical herb. Going to the menu fixes this, even if we don't do anything. But it saved a few frames to equip the fire sword on this menu trip, so I do. This glitch happens anytime you equip two consumables. 72350 (20:05) Talking to Kensu here is another necessary trigger 72470 (20:07) Equip refresh and shell flute 72712 (20:11) The dolphin gets an extra speed boost when skirting the shore 73000 (20:16) Getting Joel on the warp list is necessary to enter the Evil Island cave 73360 (20:22) Unequip refresh, unequip shell flute and equip magic ring. Any attacks with the B button lag when shell flute is equipped. The magic ring that we got back on Mt Sabre South will give us enough mp to reach a plot-based healing spot. 73750 (20:29) Lvl3 fire attack is very convenient on these octopus enemies. They take a long time to kill with stabs. 74000 (20:33) Mermen are worth 144 xp, octopus is 176 xp 74400 (20:40) The trick to cutting lag with this attack is to get as much of it as possible offscreen as soon as possible. It's also important to make sure the octopus doesn't shoot. 74580 (20:43) This octopus lives because I don't have time to charge a lvl3 attack (can't afford the mp either) and it takes too long to stab him. 74850 (20:47) These enemies are supposed to be turtles. They are worth 160 xp and there are six of them in this room. They spawn on entering the room, barely move and are easy to kill. Seems like it was designed to be a grinding spot. 75200 (20:53) That's good because I need a lot of xp. We'll be using a glitch to skip a good chunk of the game. To keep up we need to gain two levels. So even at 114 xp/sec this is going to be the longest grind in the run. 75500 (20:58) Clearing out all six enemies is about 5% more efficient than just taking out the first two. Those first two were the leftovers. 75800 (21:03) The turtles do move a little bit randomly within a certain box 76000 (21:06) I am doing some light manipulation to get the last enemy to be in a more favorable position. This saves a few frames each trip. 76300 (21:11) The enemies take four hits on level 9, but only three on level 10 76600 (21:16) That will speed up my rate to 117 xp/sec 76900 (21:21) While this grinding goes on I'll explain how to abuse the movement system 77100 (21:25) The game engine does not track subpixel position. Yet the per-frame movement is not the same each frame. Use frame advance and check the coordinates to see what I mean. 77400 (21:30) The variation is managed by a counter at $0480 that counts up every step you take. The distance you move each frame is determined by the low bits of that counter as well as the direction and terrain. 77800 (21:36) On dry land the hero always moves 2 pixels/frame in manhattan directions (up, down, left or right). But diagonal movement alternates between one and two pixels/frame. 78200 (21:43) The dolphin is faster than the hero on dry land, so it follows different rules. Moving in a manhattan direction alternates between 2 and 3 pixels/frame. The diagonal pattern is 2, 2, 2, 1. 78500 (21:48) There is another pattern when going over rough terrain that slows you down 78800 (21:53) The way to abuse this is to switch between manhattan and diagonal movement. On dry land, only move diagonal on the 'fast diagonal' steps when the hero moves 2 pixels instead of just one. 79100 (21:58) Of course it depends on where you want to go. But this trick is useful just about everywhere. To make it easier I have my script show a really clear indicator. 79400 (22:03) This is one reason why I wade through rough terrain more often than you might think. The slowdown is not as bad with tweaked movement. 79700 (22:08) Those three-pixel frames are why the dolphin moves so fast. Tweaking to get those with two-pixel diagonals lets the dolphin get anywhere really fast. 80100 (22:15) Anyway, those movement optimizations are a big reason why this game is interesting, but difficult to TAS. 80520 (22:22) This shot is to manipulate luck, avoiding shots from the last octopus 80900 (22:28) Ghetto flight: Jumping at the right time while dismounting the dolphin can confuse the game into letting you fly over the ocean. The effect is similar to the flight spell learned later. Note that the dolphin disappears. 81200 (22:33) Dolphin is back! I call this dolphin warp. Getting back on the dolphin will save a few seconds because he moves so much faster. 81400 (22:36) Barrier is one of the more useful spells. You'll be seeing it later. 81765 (22:42) Another shore boost. Also, I reach the next screen before the dolphin can stop me to say goodbye. 81870 (22:44) Equip love pendant and paralysis 82700 (22:58) Change is necessary for a few things. We could do the Amazones trip now, but it saves time to do it later. 82900 (23:01) Equip water sword and ball and our new change spell 83418 (23:10) When walking northwest in changed form you face west. In normal form you face north. 83600 (23:13) Normally you want to spend as little time as possible in changed form because movement is slower. But here there's a short wait for the gate to open so there's no need to change right away. 83970 (23:19) Get Goa on our warp list 84300 (23:25) This gargoyle enemy is worth 288 xp and continually bangs on the RNG when onscreen. I'll use him to make my luck better up ahead. 84600 (23:30) Mt Hydra is another mountain we'll be spending a lot of time on to get a couple of important items 85000 (23:36) The level designer forgot to put enemies in this part of the mountain 85750 (23:49) You can sneak in with the walk-through-NPC glitch. But using change is faster and we still have it equipped from the gate by Swan. 86000 (23:53) Rebel base Shyron. Don't get too attached. 86280 (23:58) Equip teleport 86500 (24:01) Teleporting to the entrance saves a couple seconds even though we had to pause specifically to equip teleport 87000 (24:10) We needed the key to get into the next dungeon. The entrance is up the mountain a bit. 87500 (24:18) Finally, something to kill! This might have been the longest stretch with no enemies in this otherwise violent run. 87800 (24:23) The flail lizard is worth 320 xp and the little crawlie is 30 xp 88030 (24:27) This is what I was setting up the RNG for. These morph blobs are going to be showing up a lot. They are worth 320 xp. They are easy to take out when they take form. 88300 (24:31) The problem is that they take form randomly. Every 32 counts when invulnerable they pick a random number. They take form on 8 RNG seeds: 9, 23, 29, 35, 45, 58, 59, 60. Note that these are not at all evenly distributed through the 0-63 range of the RNG seed. 88600 (24:36) There are limits to how well I can manipulate this. But a lot of them are going to conveniently congeal right in front of me. That is going to cut down on grinding quite a bit. 88970 (24:42) Equip the key and barrier magic 89200 (24:46) Barrier creates a hitbox around the hero. Any projectile gets vaporized on contact with it. Very nice, but there are a few quirks. 89400 (24:50) First, if a projectile contacts the hero's hitbox for even one frame it will still hurt him. Second, the barrier flickers off every eighth frame. Third, you can see that the north side of the barrier is a bit thin. Putting these all together, you need to watch out for fast-moving projectiles coming from the north. 89900 (24:58) Unequip magic so I can jump 90050 (25:00) An unexpected spot to grind! This is much faster than the standard speedrun hunting ground outside of Goa. 90400 (25:06) This might seem slow compared to the crossbow guards outside Goa. But this enemy is worth 672 xp while those guards are only 256 xp. At 154 frames per kill I am getting 262 xp/sec. 90800 (25:13) The next boss only requires level 12. But there's no better grinding spot until the boss after him who requires level 13. So that's what I am aiming to set up here. 91100 (25:18) Let me explain what goes into figuring out how long I need to grind. It involves a spreadsheet and several rough drafts. 91450 (25:24) I play through the area up to the point where I need to reach a certain level. I'll experiment and take notes on how many enemies of what type I can take out. 91700 (25:28) I'll also be trying to figure out which enemies might be difficult to spawn. This is generally because they are near the entrance to a room, so I would either have to enter the room at the right time or wait. 92000 (25:33) The spreadsheet helps me quickly calculate how many grind loops I'll need. I'll also see how close I am to cutting out another loop. 92300 (25:38) This helps me narrow down to a few routes that look good. I'll investigate those further and maybe play them out. 92600 (25:43) That process worked really well, helping me get the xp I need efficiently throughout the run. 92800 (25:46) So that's how I decided to stop grinding at this point and get the rest of the xp on my way. 93220 (25:53) Wind sword 93400 (25:56) This lizard is worth 608 xp. Enough to be worth switching swords just for him. 93520 (25:58) Water sword 94200 (26:10) RNG seed 58 is special. The next three morph blobs will congeal immediately. 94880 (26:21) Fire sword. We need it for the enemies here. This menu trip prevents one of them from spawning to cut lag. 95100 (26:25) These enemies are very similar to the medusas. They move randomly and shoot stone shots. They are also very laggy so I am cashing in some upcoming wait time to manage lag. 95350 (26:29) They are also worth 272 xp each. Well worth killing with good manipulation and lag management. 95500 (26:31) The butterfly is worth 204 xp and is annoyingly laggy. On death he releases a laggy cloud of poison. So this one gets to fly right on by. 96000 (26:40) Equip warp boots and barrier. Then warp out before getting into a long conversation with the wise men. 96100 (26:41) 'Sorry, no time to talk', says the hero. 'I'm in the middle of a TAS!' 96500 (26:48) Using warp boots instead of teleport can sometimes save a menu trip. If I had used teleport I would have needed to switch to barrier here. Each of the boots left over from the initial supply is used this way. 96750 (26:52) Water sword and teleport 97200 (27:00) Time to fight Mado. How will I manage without a level 3 attack? 97480 (27:04) Unfortunately, I can't take care of Mado without clearing that plot hitbox. So we get the wise men's lecture after all. 97900 (27:11) With good luck I was able to beat Mado very quickly without even taking damage. Back in the Styx cave I was grooming the RNG for this in addition to manipulating the eye enemies. 98280 (27:18) Equip thunder sword and unequip teleport 98400 (27:20) The wait time I used on the eyes was done to get the counter on the right spot to spawn these guys. There's more waiting up ahead so I use some extra time to jump around and take them out with no lag. 98900 (27:28) Usually wading through rough terrain is all right, but the desert is big enough to make me want to jump. 99050 (27:30) The zombies are worth 208 xp. I have extra time to go a little out of the way and take this extra one out. 99560 (27:39) Water sword 100000 (27:46) The reason I needed to be at a certain counter value was so that insect would spawn at the right time and fly to me here. Then it will conveniently respawn a few times for more xp. 100300 (27:51) At 592 xp it is well worth a little time to keep respawning it. Like other fliers, its movement is based on relative position. So I use my position to get it to come in faster. 100600 (27:56) They have a poison gas attack which I manipulate away 100800 (28:00) That's the fourth one. This is one reason I was able to stop grinding so soon. 101000 (28:03) It's also convenient that they are vulnerable to water sword which I need for the bridges here 101250 (28:07) Hey, he's getting away! 101520 (28:12) Isn't that nice, he came back to play 101650 (28:14) Thunder sword, ball and teleport 102240 (28:24) Equip my nice new power ring and barrier 102500 (28:28) Power ring is necessary for one of the last bosses. I get it as soon as I have thunder ball to blow the wall because it's always nice to hit twice as hard. 103000 (28:36) Welcome to Goa fortress, the hugest dungeon in the game 103450 (28:44) These guards are worth 560 xp. The fliers are worth 672. Well worth killing, even if I need to use laggy thunder sword shots to do it. 103600 (28:46) The reason for the funny behavior here is to manipulate another flier to follow me 103750 (28:49) You can't see him right now because he's under the status bar 104500 (29:01) Each flier lets me cut a loop from the last round of grinding, so I spawn and draw in as many of them as possible 104600 (29:03) Even this guard won't be spared 105200 (29:13) Landed exactly on 20,000 xp for my levelup 105275 (29:14) Wind sword and bracelet 105700 (29:21) None of the bosses here lasts long when you have power ring equipped 105932 (29:25) The prizes from these bosses are all useless. In a TAS at least. 106080 (29:28) Hp and mp restored. Thank you, Zebu! This is also the only room in the fortress where you can save. 106600 (29:36) I use two menu trips to equip water sword and ball so I can prevent two enemies from spawning 106900 (29:41) Those two enemies wield flails that take up an object slot, even when they are offscreen 107320 (29:48) That would prevent this insect from spawning 107600 (29:53) There's plenty of time for the flail enemies to spawn again and plenty of other slots for their flails. But they want to pick that slot if they can. 108530 (30:08) So I get to take out that insect three times, picking up useful xp 108945 (30:15) Thunder sword and ball 109150 (30:19) Here's one of the flail enemies I was talking about 109235 (30:20) Fire sword 109700 (30:28) The ghetto flight trick skipped the first fight with Sabera 109950 (30:32) I use my barrier to block all her shots, cutting lag 110208 (30:36) Another useless item 110700 (30:45) Another hp/mp restore. It might have been more useful if this area was more difficult. 111000 (30:50) Thunder sword. Ball was still equipped. 111070 (30:51) These medusas are still just worth 50 xp. It just happens to be useful though. 111440 (30:57) You can see another flier going by here. I don't have time for him because I need to make a breakpoint up ahead. 111800 (31:03) I'm right on time to start the grind loop here 112100 (31:08) I can take out both spiders in one cycle. It's well worth taking a little lag from the shots to do it. 112400 (31:13) The lvl2 shot is necessary because it takes three hits from lvl1 shots. That means two shots if I get one to hit twice. 112700 (31:18) Funny thing about the lvl1 thunder shots is that they actually do less damage than a stab. The spiders die to two stabs of the thunder sword. 113000 (31:23) Luckily it was possible to tweak down the lag quite a bit. Two lvl1 shots lag less than one lvl2. But I need a lvl2 on one of them to stabilize the loop. 113420 (31:30) Each spider is worth 1280 xp. Two per cycle with a little lag comes out to 548 xp/sec. 113750 (31:35) Ball of water, rabbit boots and unequip barrier 113860 (31:37) The moonjump glitch: If you time the A button right, you can jump again instead of falling into the pit. Here I use it to take out some more spiders on my way to the next area. 114600 (31:50) Luckily I can still one-shot these fliers without power ring 114804 (31:53) The timing and position also worked out well to let me respawn the flier quickly 115095 (31:58) Walking on the moving platform lets me move a little faster 115400 (32:03) Moonjumping saves a huge amount of time here 115700 (32:08) The many enemies and moving platforms can be laggy. Took some effort to tweak down this far. 115980 (32:13) Damage boosting lets me tweak even more time 116255 (32:17) Water sword, paralysis and power ring 116500 (32:21) Mado again, and I still don't have blizzard attack. How will I manage? 116955 (32:29) Thunder sword and ball 117500 (32:38) Free healing means I can throw in some damage boosts. I would blow off some mp if it helped. 118136 (32:48) Paralysis can be useful in combat. You'll see the real reason I have it equipped in just a bit. 118450 (32:54) These skeletons normally collapse after each hit and would take too long to kill. But when paralyzed they just stand there and die. At 1280 xp each, they will cut out quite a bit of grinding. 118730 (32:58) Paralysis is also useful for luck manipulation. I can paralyze the spider while he is still moving up so the damage boost pushes me that way. 119150 (33:05) More paralysis for luck manipulation. I am grooming the RNG by using the fact that paralyzed enemies don't take actions that use the RNG. 119390 (33:09) Have you ever seen a paralyzed butterfly stuck in midair? 119820 (33:17) This is what I was manipulating. These blobs are worth a juicy 1920 xp. 120100 (33:21) Equip barrier 120700 (33:31) The last of the finest four goes down. Again, vaporizing his shots on my barrier cuts lag. 121000 (33:36) We actually do need the Ivory Statue. The thunder bracelet is not far up that passage, but I won't be needing it. 121720 (33:48) Equip ivory statue and teleport 122000 (33:53) Finally we have flight, the most fun and useful spell 122500 (34:01) We need the Bows of Sun and Moon to enter the final dungeon. Each requires a side trip. 123000 (34:10) Bow of Sun is here on Mt Hydra. We need flight to reach it. 123600 (34:20) Lucky 58 on the RNG again 123900 (34:25) These blobs are still just worth 304 xp. But when they pop up right in front of me like this they're still worth killing. 124800 (34:40) The eyes are 272 xp. It's not much, so they only get killed when convenient. 125090 (34:44) Wind sword. I need it for a wall, but it doesn't hurt any of the enemies here. 125300 (34:48) There is another wall coming up and I can't be bothered to switch my swords back and forth for these small fry 125600 (34:53) There is a big counter breakpoint coming up. I have a small amount of extra time I can use to cut lag until then. That is nice because this room can be really laggy. 125800 (34:56) Thunder sword, water ball, warp boots and flight 125860 (34:57) Normally hitting the B button with warp boots equipped will use them. But the exploding wall blocks them and lets me do a normal attack. I use that fact to take out another enemy here. 126170 (35:02) Damage boosting is difficult to line up here. The push is always in the direction the enemy is facing. These enemies also randomly poison you, bringing up a dialog that would take too long to display. So I need to manipulate no poison in addition to making them face the right way. 126800 (35:13) Now for the Bow of Moon in Amazones. This side trip can be done much earlier, as soon as you get the change spell. There is a reason for putting it off until now. 127150 (35:19) The reason is that I can fly over the river, saving a few seconds over building the bridge with the water sword 127470 (35:24) Equip Kirisa plant and change 127670 (35:27) Those are all trigger boxes for the guard 127800 (35:30) You can sneak past the guard with paralysis or the glitch, but you must be in changed form to make the trade with Aryllis 127905 (35:31) Equip warp boots and flight. This is another case where warp boots saves a menu trip. 128150 (35:35) The blizzard bracelet is in the basement behind the queen's throne. But there's no need for it now. Actually, there was never a need, stabbing Mado is faster and doesn't lag. 128500 (35:41) I can buzz through these enemies without slowing down at all now 129200 (35:53) Here's the counter breakpoint I mentioned earlier. I needed to get here in time to spawn all the enemies in this passage. 129540 (35:59) Perfect timing to respawn this enemy. 129740 (36:02) Flight is very useful in combat. The fake 3D effect can be abused thoroughly. 130400 (36:13) I'm right on time to spawn all the enemies in this room too 130700 (36:18) The scorpions are worth 1440 xp. This room is packed with six of them, a great place to grind. 131000 (36:23) I can set up a loop where I take out 7 every two cycles, a rate of 1160 xp/sec. 131450 (36:30) One loop is enough. Spawning and killing everything in my path almost completely cuts out this session of grinding. 131600 (36:33) Getting this blob to spawn and congeal was very helpful 132100 (36:41) Once again I have some extra time to cut lag and I cash some of it in on this very laggy room. The fake 3D effect of flight means I don't have to scroll the screen so far up. 132325 (36:45) Equip water sword. Ball was already equipped. 132700 (36:51) Need water sword to hurt these mummies 133600 (37:06) Draygon can be taken down with any sword. Thunder sword does more damage, but it's not worth switching swords. 133800 (37:10) Unlike every other enemy, he has no invulnerability time in between hits. So it adds very little time to use a weaker sword. 134000 (37:13) I thought equipping psycho armor would be good for more damage boosts. Extra defense and a healing factor. But the healing factor adds lag, costing time instead. 134470 (37:21) By now you know it's not a coincidence when these morph blobs pop up in front of me 134900 (37:28) The last dungeon. It's almost over. 135780 (37:43) Wind sword and Bow of Moon 135965 (37:46) Bow of Sun 136400 (37:53) These warlocks are worth 1920 xp and can only be hurt by the puny wind sword. They take 10 stabs or 8 stabs and a lvl1 shot. 136600 (37:56) I skip this enemy to avoid lag 136900 (38:01) Cashing in some wait time lets me clear this normally laggy room with no lag at all 137400 (38:10) There's time for one more game mechanics lecture on hit detection 137600 (38:13) Hit detection between your sword and the enemies only happens every other frame, when the global counter is odd. But enemies can hit you every frame. 137900 (38:18) When you hit B, the sword counter starts at 17 if you are standing still, 18 if you are moving. It only hurts enemies from 15 to 3. 138200 (38:23) On the last frame, the sword hitbox extends 3 pixels. It also extends out from the position in the last frame, so you can start moving away a frame early. The extension can also be triggered early by hitting B to interrupt with another stab. 138400 (38:26) An attack can't be interrupted until the counter reaches 11. Doing so often cuts lag. I've been abusing this the whole game to save some frames here and there. That's why I spend a lot of time holding the B button. 138776 (38:32) Finally, no more levels to worry about 139210 (38:40) Thunder sword, Bow of Truth and barrier. This will be the last time in the menu. 139600 (38:46) Taking a hit before using the Bow of Truth is the key to making the big dragon form use its lasers right away. It also requires the global counter to be under 80 (hex). That was why I had some wait time in this dungeon. 139900 (38:51) Blocking the lasers like this requires standing in a very particular spot and timing when barrier is used. Otherwise the beams get through the one-frame opening in the barrier. 140300 (38:58) If there was some way to beat the human form without the Bow of Truth, the first pyramid could be skipped. Draygon's human form takes damage, but his hp gets reset every frame. So it is impossible to kill him in that form without hacking the game. 141000 (39:10) In the tower there are two main considerations. First, I want to get the blue robots to spawn as soon as possible. That means taking out the brown robots quickly. 141200 (39:13) The other consideration is that the tower can be very laggy. There are many sources of lag but the worst is the cannon that slides back and forth above the door. 141500 (39:18) I need to make sure that cannon doesn't shoot while I am fighting the robots. A lot of work went into this. 141800 (39:23) The combination of fighting the robots and that cannon fire lags badly. Once the robots are gone there is no problem. 142600 (39:36) Blue robots spawn one or two at a time every 16 counts. The counter value determines which ones spawn. So just like the rest of the game I am aiming for certain cutoffs on that counter and using extra time to cut lag. 142900 (39:41) The flying robot is another annoyance. It can be prevented from spawning if the robots shoot at the right time. But those shots would cause more lag. So I let it spawn and deal with it. 143600 (39:53) The cannon checks the RNG every 32 counts and may fire. For most enemies the chance is 1 in 8 but for the cannon it is 1 in 2. So manipulating it to not fire can be very difficult. 144050 (40:00) Moving down here manipulates the flier to move diagonally. That lets me outrun him, cutting lag on the last set of robots. 144400 (40:06) So after needing to kill enemies the whole game to levelup I needed to kill a few more to get through the tower. What a violent game! 144700 (40:11) Mesia is the heroine, but this is the first time we see her in this run. She shows up after in the Evil Island dungeon we skipped with ghetto flight. So even if you fully explore the game you won't see much of her. 145000 (40:16) 'Crystalis' was called 'God Slayer' in the Japanese version of this game. This game predates ESRB ratings but localization of the time was very thorough about removing religious references. 145600 (40:26) The last message can be skipped. The hero is tired of people talking in his head. 145900 (40:31) DYNA is pretty easy with Crystalis and barrier. However, a few tricks are used to cut lag. Timing hits properly can avoid a laggy crescent beam counter attack. It is also less laggy to stand in a blind spot and not use barrier. 146500 (40:41) Thank you for watching and I hope you enjoyed my run. Please visit tasvideos.org for more tool-assisted speedrun action. -_-_-_ That's the complete dump of TheAxeMan's script. Enjoy, A.C. ******
The TASBot community made our most significant run yet with Ocarina of Time Triforce% Showcase! The TASBot Discord server has a #triforce-percent channel about the run that helped raise $227k for Doctors Without Borders during SGDQ 2022. I'm posting TAS content on YouTube.com/dwangoAC based on live streams from Twitch.tv/dwangoAC. If you can help defray charity event costs via Patreon.com/dwangoAC my kids and I would be very thankful.
True
They/Them
Editor, Experienced Forum User, Player (65)
Joined: 1/18/2008
Posts: 663
YOU ARE MY HERO.
Ambassador, Experienced Forum User, Experienced player (586)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
As usual, DwangoAC's testing produced some interesting ideas. I patched the watcher script to add pause and unpause buttons. When you hit 'Show All' it automatically unchecks 'Show Tricks' to turn off the scripted display. Also, rewind is turned off by default. That rewinding is absolutely awesome when making a TAS but merely neat when watching. Here's the new version. The link in the submission has been updated. http://runeaxetas.googlecode.com/files/Crystalis-TheAxeMan-AuthorNotes1.1.lua
Experienced Forum User
Joined: 1/31/2012
Posts: 15
Hey dwango, here's a link to the text on pastebin. There's a copy-paste box at the bottom if necessary. Might free up a bit of visual space in this thread. Looking forward to an encode with the lua comments tacked on (if anybody gets around to it).
Twisted Eye
He/Him
Experienced Forum User, Player (249)
Joined: 10/17/2005
Posts: 610
Location: Seattle, WA
Excellent! Your TAS is increased. Awesome, awesome improvement to your already crazy run of this amazing game. Thanks to Dwango for posting the commentary, I couldn't get the script to work properly with the slight effort I put into it.