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 [dead link removed] 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 [dead link removed]. 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 [dead link removed] 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.


Joined: 2/26/2011
Posts: 98
Voted yes. This is a god among TASes.
Editor, Emulator Coder, Site Developer
Joined: 5/11/2011
Posts: 1108
Location: Murka
TheAxeMan: For purposes of encoding; if you can make a simple static annotation script (without bells and whistles) it could be added to official published encodes as soft-subs. A good example of this would be the recent Dragon Quest V run.
Ambassador, Experienced player (709)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
natt, what all can be encoded? The Dragon Quest V run added a nice sidebar that I don't know how to do. But I can edit down my commentary to subtitles. If I use the fm2 comment feature will that give me a good impression of how the encode looks? As everyone has noticed, I tend to be too verbose when writing and want to make sure I don't overdo it on subtitles.
Editor, Emulator Coder, Site Developer
Joined: 5/11/2011
Posts: 1108
Location: Murka
TheAxeMan wrote:
natt, what all can be encoded? The Dragon Quest V run added a nice sidebar that I don't know how to do. But I can edit down my commentary to subtitles. If I use the fm2 comment feature will that give me a good impression of how the encode looks? As everyone has noticed, I tend to be too verbose when writing and want to make sure I don't overdo it on subtitles.
It's possible to do an alternate encode like the one Dragon Quest V had, of course. I can help out with that too. (While I didn't make that encode, I have been developing my lua encoding skills and recently made an alternate encode of one of the Fire Emblem games with some extra data showing.) But the primary encode needs to be relatively "unmolested" which rules out complex lua displays and whatnot. If you can limit things to just a set of basic text "author's notes" they can be embedded as soft-subs in the primary encode. Don't worry about format conversion, FM2 comments or lua or whatevers is fine; I can convert them to what I need. As far as how they'll look, that can vary quite a bit with pure text subtitles, so can't guarantee much there.
Ambassador, Experienced player (709)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Ok, I understand now. I'll put some subs together. Let me know if I can do anything to help with an alternate encode. I'm good with scripting and GUI programming (I do it for a living) but don't know much about encoding.
Editor, Emulator Coder, Site Developer
Joined: 5/11/2011
Posts: 1108
Location: Murka
TheAxeMan wrote:
Ok, I understand now. I'll put some subs together. Let me know if I can do anything to help with an alternate encode. I'm good with scripting and GUI programming (I do it for a living) but don't know much about encoding.
The way I get off screen lua is pretty simple and hacky. Decide what you want to be offscreen, and then run it in a separate script that also blacks out the screen (ie, calls gui.box before drawing text). Then the game gets dumped for encoding twice, and it's a simple process to stitch the two together. I can get you some examples to show what I mean tomorrow.
Editor, Emulator Coder, Site Developer
Joined: 5/11/2011
Posts: 1108
Location: Murka
This is the sort of thing I can do. Kind of primitive, but it does work and it does give you an encode with LUA display outside of the movie. An alternate encode can have LUA display inside the movie too, it's just nice to be able to put stuff outside so as to not hog too much space.
Ambassador, Experienced player (709)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Ah, cool. The sidebars like that are good for showing mem contents. I would keep the same abbreviated comments I am working on now. Can we put hitboxes in? It shows a lot in this game.
Editor, Emulator Coder, Site Developer
Joined: 5/11/2011
Posts: 1108
Location: Murka
Hitboxes are great for the alt encode, sure. They'd be in the lua script that runs "on top" of the "original dump", if that makes sense. edit: To clarify, ideally what I'd want is the following: 1 lua script that draws what's going to be on the display for the alt encode 1 lua script that draws what's going to be on the margins for the alt encode (obviously, these can be the same lua script with just a flag change, if that's more convenient for you)
Ambassador, Experienced player (709)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Ok, here are subtitles for a main encode. http://pastebin.com/agvQZNtJ Can I get some example lua code that generates the margin text? It doesn't have to be fancy. I just need to get an idea what coords to use and how to organize it.
Ambassador, Experienced player (709)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Why don't we just publish the main encode. I'll put together the lua for the alternate version some other time.
Editor, Emulator Coder, Site Developer
Joined: 5/11/2011
Posts: 1108
Location: Murka
TheAxeMan wrote:
Why don't we just publish the main encode. I'll put together the lua for the alternate version some other time.
Yeah, that's what's being done. This is really my fault; the run was marked as "publication in progress" OmnipotentEntity and I didn't communicate with him on the extra encode. I talked to him on IRC and he's assembling a standard publication package; the standard downloadable will include the soft-subs that you created. I, being a fool, have gotten too much on my plate, but I promise to make your extra encode and add it at some future point. As far as an example lua script, would it help if I gave you the lua script I used for http://tasvideos.org/forum/viewtopic.php?p=304645#304645?
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15580
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [1997] NES Crystalis by TheAxeMan in 40:40.43
Player (36)
Joined: 9/11/2004
Posts: 2630
TheAxeMan wrote:
Why don't we just publish the main encode. I'll put together the lua for the alternate version some other time.
Sorry that it took so long. I'm just full of derp sometimes.
Build a man a fire, warm him for a day, Set a man on fire, warm him for the rest of his life.
Ambassador, Experienced player (709)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Thanks for getting around to this. Unfortunately, the youtube encode uses the loquacious captions from my watcher script, not the abbreviated comments I posted later. Sorry if it was confusing but I put those on pastebin to avoid cluttering the forum: http://pastebin.com/agvQZNtJ Looks like the torrented files have the right subtitles. Also, could we link that watcher lua from the publication? As I said earlier, I was hoping to use this to get more people to play the run in the emulator and explore a bit. So far there have been about 50 downloads and a lot of good feedback. One more thing: unlike the previous version, this run does not use death as a shortcut. Explanation in the submission text.
Player (36)
Joined: 9/11/2004
Posts: 2630
TheAxeMan wrote:
Thanks for getting around to this. Unfortunately, the youtube encode uses the loquacious captions from my watcher script, not the abbreviated comments I posted later. Sorry if it was confusing but I put those on pastebin to avoid cluttering the forum: http://pastebin.com/agvQZNtJ Looks like the torrented files have the right subtitles. Also, could we link that watcher lua from the publication? As I said earlier, I was hoping to use this to get more people to play the run in the emulator and explore a bit. So far there have been about 50 downloads and a lot of good feedback. One more thing: unlike the previous version, this run does not use death as a shortcut. Explanation in the submission text.
It uses both subtitles. There's two tracks. (On both the youtube video and the published mp4s.) I've fixed the categories and linked the lua script.
Build a man a fire, warm him for a day, Set a man on fire, warm him for the rest of his life.
Ambassador, Experienced player (709)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
Ah, I see. It's just that the mp4s default to the short comments and youtube defaults to the long comments. Unfortunately, most people will just use the default. The first comment on youtube already mentions this. If it's possible, the short comments should be the default. To be honest, those long comments go by too fast for video captions and mention the lua drawings from the script. I didn't think those should go in the video. But it will be interesting to some people.
Former player
Joined: 8/15/2004
Posts: 422
Location: Minnesota
I have loved this game for a long time and when I just recently found out you were working on an improvement I couldn't wait for this to be finished. Thank you for making this. I loved every minute of it. I encourage anyone else who likes the run or the game to check out the Let's Play walkthrough for it: http://lparchive.org/Crystalis/ . It's hilarious. Also, unrelated to this run, but fuck whoever decided that you need the Power Ring to kill the Dragon boss. Not only that, but if you miss the Power Ring, it's a game stopper (unless you saved before) because you have no way to reattain the Bow of Truth to show the guy's true form. I played through this game twice before I learned that fact.
Joined: 7/2/2007
Posts: 3960
Ouzo wrote:
Also, unrelated to this run, but fuck whoever decided that you need the Power Ring to kill the Dragon boss. Not only that, but if you miss the Power Ring, it's a game stopper (unless you saved before) because you have no way to reattain the Bow of Truth to show the guy's true form. I played through this game twice before I learned that fact.
Don't save during the bossfight with Draygon? Or if you're on an emulator, maintain more than one savestate. I do agree that the minimum power requirements to be able to damage enemies are annoying, but the game as played on its original hardware shouldn't be able to be rendered unwinnable unless you save after using that item (which I'm not even certain you can do).
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Ambassador, Experienced player (709)
Joined: 7/17/2004
Posts: 985
Location: The FLOATING CASTLE
I have uploaded the lua scripts to github though it seems that the google code links work with some sort of archive or backup redirect. https://github.com/TheAxeMan301/crystalis-tas Anyway, the reason finally got around to this is that I have been active with the very cool new Crystalis randomizer. It's been a great reason to get back into this game in a new way though sometimes it is frustrating to play in real time after TASing. Also, I am going to RPG Limit Break was to show a Final Fantasy run with dwangoAC and TASbot. As long as I am there I will be helping with commentary on Dragondarch's run on this game so I have been reviewing for that. Very big dream day for me getting to be part of presenting two of my favorite NES games.