<This is an any% tool-assisted speedrun of the English 1990 release version of the DOS Game Zeliard. Last input occurs at 9:22.977 seconds which is entering the princess chamber after defeating the final boss.>
Game objectives
- Emulator used: JPC-RR version 11.8-rc2 (revsion 6ab255c), using all default settings and no LUA scripts.
- The SHA1 checksum of the 3050-byte zeliard.exe executable is 8077E31B43A5BD814F1FB8333ACDCCE3429CD56A.
- Reach and defeat the final boss.
- Enter the princess chamber (this is when the last input occurs).
Common routines and game mechanics explanations
Internal movement mechanics
- Panel
- An 8x8-pixel grid section (Zeliard uses a 320x200 base resolution).
- Area
- A group of caverns and its town with a set theme.
Zeliard uses a grid system for all movement and collision handling. All caverns are 64 panels tall by some multiple of 8 panels wide up to a max of 320 panels. Areas are made larger by interchanging multiple caves.
- Cycle
- A single display refresh, a fixed 60 fps.
- Frame
- A game scene update.
Running and falling are always 1 panel per frame. Frame rate is determined by the speed setting:
FrameDelay = 10-Speed; // internal method of frame handling
// FrameRate = 60÷Framedelay; // direct frame rate conversion in plain language
Default speed is 5 which means 12 frames per second. Speed 9, the max, means 60 fps while speed 0, the minimum, means 6 fps. Speed affects everything except speech text, shop animations, the "Encounter!" prompt flashing 7 times, the boss room fade in, the fade in of a passage upon defeating a boss, and the victory music upon getting a tear.
JCP-RR is indexed to 125,875/1796 fps, which is about 70.0863 fps. Zeliard is designed for 60 fps. This 60/70 mismatching frame rate causes a lot of ripping and tearing effects and made TASing Zeliard a bit more difficult as the timings weren't always consistent.
Exploration
When climbing up or down ropes, the pattern of movement is 2 frames of movement followed by 1 frame of being still. Thus, minimizing the involvement of being still is important. Of additional importance is getting off of a rope. Unless transferring from one rope to another, if the climb ends exactly 1 panel above, the fastest exit and run is possible. With 1 panel above, the character only has to fall 1 panel, the minimum amount needed (1 panel lower and the character just hits the wall instead and falls back down). In addition, unless rope transfers were used, the character will only pause for a single frame upon landing, instead of the 2-frame squat from a larger fall. It's not always possible to get off of a rope at exactly 1 panel above each time, such as from jumping from the ledge or a slow-moving platform. There are very few cases of 2-panel gaps. Should that be the case, it is best to be 2 panels above the ledge instead of 1. When going down a rope, falling is clearly much faster, especially when on the side closer to the intended direction of travel. If already positioned in front of a rope, or can jump higher, delaying the grabbing of the rope can be done by wiggling back and forth while ascending. This wiggle doesn't work when going down. A rope is grabbed if up is held without left or right while over a rope, or when falling and not moving horizontally. If damage boosting through an enemy in the way, starting the climb the frame before the enemy makes collision forces the rope climbing to take priority, preventing knockback.
There are 4 types of platforms in Zeliard: fast horizontal, slow horizontal, elevator, and sinker. Fast and slow horizontal platforms are yellow and red and move within a fixed range, once per frame for fast platforms and once every other frame for slow platforms. Elevator platforms are gray and green and are user-controlled when standing on one. By holding up or down while on one and not moving horizontally, the platform moves in that direction. Upon jumping and getting on an elevator platform, stopping the horizontal movement and continuing to hold up allows for the platform to immediately start ascending without any delay. (Gray platforms can be used to damage enemies where the damage is simply "ElevPlDmg = Level÷2+1".) Sinker platforms look exactly like the horizontal ones, but don't move. Upon landing on one, they lower 1 panel per frame until off of it.
A gap of 1 panel can be walked across as if it was solid. When falling and a ledge is 1 panel away, holding the direction toward that ledge will allow the character to land on it.
Health and dying
You start with 80 HP. Each pixel on the life bar is 8 HP. Small ticks are sets of 40 while bigger ones are 200. Max HP is 800. While in the caverns, and the user has control, there is an internal frame counter that increases when no movement input (e.g. arrow keys) is set. When this counter reaches 16, 2 is added to the current HP if current HP is less than the max. With HP being on an odd number, up to 801 is the maximum possible. The counter resets on any movement input. Thus, healing can occur while falling, swinging the sword, standing in spikes, or inside of an enemy. Yep, bring the titanium shield over to an area with an enemy that does less than 16 damage and you will receive 0 damage as long as the shield faces the direction of the enemy - stand there and you can fully heal (shields divide frontal damage by 4, 8, or 16 (depending on the tier) and damage dealt to the character equals the amount of shield damage - titanium and light shield have 16 so an enemy that does 15 damage, like the frogs in area 1, will do 0 damage to both the character and shield!). Shields are not used in this TAS as no gold is ever spent on anything due to extensive waiting on text and animation.
HP recovery potions found in the caverns restore 8 HP per frame for either 80 HP (red potions) or current max HP (blue potions) total HP. Recovery continues until either all HP is restored or the maximum amount is restored, whichever occurs first. As damage is handled first followed by potion recovery, while restoration is active, it is impossible to have less than 8 HP which makes you effectively invincible. (Using items from the magic shop is instant recovery.) I haven't yet checked if having 799 HP can become 807 with the next tick.
Dying results in losing all carried gold, half of the almas, and being sent back to Muralla Town's sage but you keep all items and gold deposited in the bank. Dying also results in obtaining experience. As such, dying is only effective at game start. Only 5 level ups are needed, generally used to heal or obtain essential spells, ending with just enough HP to survive the heat damage in area 7 during the boss and for the blue potion glitch to last long enough to defeat area 8's boss (there's literally a single frame to spare!). As level ups involve using the sages which have a lot of waiting on animation and text, they are best kept to a minimum as each takes about 12 seconds.
Sword combat
- Slice
- A sword strike starting from behind that swings across horizontally.
- Chop
- A sword strike starting from above and arcs around along the front.
- Stab
- An aerial sword strike where the sword points downward.
- Slice-stab
- A slice where a stab immediately follows upon contact.
- Chop-stab
- A chop where a stab immediately follows upon contact.
Sword strikes come in 3 forms: a slice, a chop, and a stab. When a stab is used, a flag is set, and remains set until either a slice or chop is used. When an enemy is defeated while the stab flag is set, the enemy is not only guaranteed to drop an alma, but the alma drop is guaranteed to be the best possible one that that enemy can drop. When the sword makes contact with an enemy (but hasn't damaged it yet) and a stab immediately follows the frame after, the stab takes effect. This is referred to as a slice-stab or chop-stab.
One tactic with the slice involves facing away from the target and starting a slice, let that do damage, then immediately turn around without moving and let the sword hit a second time, bonus if a short jump is used for a slice-stab to follow to do triple damage with a single sword swing. This is the fastest way to deal damage and is used on many bosses, especially areas 2, 6, and 7.
SwordDamage = min((((Level >> 1)+(1 << SwordTier))×SabreOil, EnchantmentSword) << Stab) >> BossMod; // C programming format
// SwordDamage = min((Level÷2)+2^SwordTier×SabreOil, EnchantmentSword) × 2^Stab ÷ 2^BossMod; // plain language format; ^ is for powers
Min is a function that returns the larger of the 2 values (think of it as A has a minimum allowed value of B, in "min(A, B)"). Level is how many times "your power has grown" occurs during a "see power" while visiting a sage, starting at 0. SwordTier is 0 for training, 1 for wise man, 2 for spirit, 3 for knight, and 4 for illumination (enchantment is handled differently). SabreOil is the number of sabre oils used, plus 1 with a max of 5. (Example: if you use 2 sabre oils, this value is 3; use 4 or 5 and the value is 5; note that sabre oil count resets upon entering a town). EnchantmentSword is 1 if the current sword is not the enchantment sword, 255 if it is. Stab is 1 if the stab flag is set, 0 if not. BossMod is a modifier for handling damage dealt to a boss, usually 0 or 1 for what I can tell and is always 0 for regular enemies. That's why the spirit sword with 4+ sabre oils and level 12 does very little damage to Vista while the knight sword hits it hard without sabre oils and no level ups (I believe Vista's boss mod is 4, maybe 5, with anything other than the knight's sword - this is why chop-stabs and the sabre oil combined can damage Vista). I'm not entirely certain how exactly the enchantment sword works. Minimum damage is 1 as far as I can tell. The only exception to this is that of the red slimes in area 5. When hit with anything other than the enchantment sword, they take no damage and, instead, form a new red slime 2 panels away in the direction opposite of their travel (unless a wall is in the way, preventing this).
Other combat
Spells appear to do a fixed power of 2 damage with level, weapon, shield, or area having no effect. Espada starts with 2. Saeta is 4, Fuego is 8, Lanzar is 16, Rascar is 32, Agua is 64, and Guerra is 128. I'm not entirely certain on this though as some more testing is needed. Some enemies may have resistances or weaknesses to certain spells, increasing or decreasing the damage dealt, usually multiplying or dividing by a power of 2 (aka a bit shift in programming).
When an enemy is defeated, an internal frame counter linked with it is set to 0. When it reaches 255, and the enemy either didn't drop an alma or the alma was picked up, and the enemy is at least 2 panels off screen from its spawn point, the enemy respawns exactly the moment the frame counter reaches 255. If the previous dropped an alma and the counter reaches 255, the enemy will respawn as soon as the alma is collected and its spawn point is at least 2 panels off screen. Almas never vanish with time, only upon collection or entering a passage.
When a boss is defeated, the passage to exit the boss room always appears 4 panels to the left unless any part of that goes inside something solid where the passage appears 5 panels to the right instead. Any keys or recovery potions that drop always have a fixed starting location above and drop down (there seems to be only slight 1- or 2-panel variation on this). Thus, for a boss that drops a key upon defeating it, it is best to be 3 to 5 panels to the right of the key's spawn point, facing left (as it takes 1 frame to turn around). Recovery potions that appear upon defeating a boss are not needed and can just be ignored.
Damage boosting by touching an enemy's body is a common tactic used. This moves the character 2 panels at once, once per frame, unless a solid object or barrier is in the way. The direction of displacement is based on which side of the enemy the character is touching. For projectiles, the direction of displacement is toward the direction in which it travels. This displacement stacks in the direction of travel. If going right and you touch the enemy's right side (example, running under a bat) you'll move 3 panels at once in a single frame instead of just 1, saving 2 frames each time. This can also be used to get up slopes without the Silkarn Shoes, where 3 such shortcuts can be used (in areas 1, 4, and 5). There is another shortcut, across a 6-panel gap in the fire caves (area 7) where a fireman's blue projectile is used to damage boost across the gap to get the key immediately under the town. When going up (legs are raised), damage boosting keeps the same vertical movement intact. When falling (legs pointed downward), damage boosting moves the character 2 panels at a time downward instead of only 1. This is utilized with a bat in area 2 to move 4 panels at once instead of 1. Pushing through certain barriers can result in moving 5 or even 6 panels in a single frame with damage boosting.
Area-specific details
Area 1
Town: Muralla Town. Theme: sand. Caves: Malicia and Peligro. Boss: skipped.
I skip the story stuff then set the speed to 9. In casual play, one would normally want to speak to the king to get 1000 gold, best used to buy a magia stone for very fast alma (and thus gold) accrual. The key is picked first up while intentionally taking damage, dying right after getting the key to immediately return to town where a level up is picked up. Another death and level up follows. Then it's stacking the snails to get up the slope where the boss room exits out of, skipping 3/4 of the area, skipping the first boss entirely. Skipping this first boss skips a key, but the normal boss room entrance remains locked so there's no change. This saves more than 20 seconds from not having to wait for the "encounter!" message to flash 7 times (3.967 seconds), about 0.585 seconds for the passage to appear, then a huge 14.825 seconds more for the tear sparkle animation and victory music to play right after. Add in 2 extra passage transfers (each one is 0.656 seconds), around 1 1/2 seconds of fight time, and pretty much any key, except for the most isolated one in area 6, is faster to get than this.
Area 2
Town: Satono Town. Theme: rock. Caves: Peligro. Boss: Pulpo.
Peligro starts with getting the key and starting damage boosting after the first platform crossing, especially to set up getting the bat right by the first ogre for damage boosting through both it and the ogre. Ogres have 10 HP (9?) and with only 2 damage being dealt per hit, take too much to defeat. The boss is very quickly defeated using the slice-slice-stab technique. Face away from the enemy and start a slice. On contact, turn around with a short jump (1 panel high) then do a slice-stab for double damage. Turn around again and repeat. This was only stopped to jump over the water jet projectile.
Area 3
Town: Bosque Village. Theme: forest. Caves: Madera and Riza. Boss: Pollo.
The first focus is on getting the hero's crest, since there isn't any other known way to get to the boss section than getting past a guard that won't let you pass unless you have that item. Upon getting the hero's crest, the key that is in plain sight is reached by simply heading down, since caves loop infinitely vertically every 64 panels. Key collected, it's faster to take a shortcut through the thorns, at the cost of taking 4 damage per frame of contact. I rush through town as there isn't anything necessary here (normally, it's the best place to get gold due to the 1-to-8 ratio, but gold is never used in this TAS). The slice doesn't hit Pollo, the boss, so chop-stabs via short jumps becomes the fastest way to damage this boss. When the boss is pinned against the wall, it a very high rate of wanting to fly. By hitting its head (with a chop stab or back-slice) on the exact frame in which the flight starts, Pollo doesn't move anywhere and doesn't do its dive, making it easy pickings. It can still fire a dart, but it's rarely used (like a 1 in 16 chance) when pinned against the wall.
Area 4
Town: Helada Town. Theme: ice. Caves: Escarcha and Glacial. Boss: Agar.
When running on the ground here, every 2 panels moved means 1 panel of sliding. Jumping has 1 panel of sliding in the facing direction per panel jumped. There does seem to be some exceptions to this regarding jumping, but I have yet to delve into the finer details. Grabbing a rope cancels all accumulated slide. The Ruzaria Shoes prevent the sliding but are not necesary (and really out of the way to get). Shortly upon entering, I need to damage boost off of the turtle so I can make a platform without having to wait for it. Once in town, I get the fuego spell, needed for area 5, and a level up. Past town, I stack the green slimes to shortcut over a slope to skip 2/3 of the slippery platforming section. Fuego hits very hard on the boss, if it doesn't decide to jump. For something silly, I have the passage spawn at the leftmost point possible, which also replaces part of the passable level textures.
Area 5
Town: Tumba Town. Theme: haunted. Caves: Corroer and Cementar. Boss: Vista.
The Pirika Shoes are the first goal, which provide immunity to all hazards when worn (spikes, thorns, gelroid, fire, lava, etc.). The key on the ledge is next followed by using the ceiling crawler enemy to damage boost up the slope in the same area, leading to the honor crest and another key. This shortcut saves a key and skips about half of the gelroid walking. Back in town, I level up to heal then get the knight's sword in the weapon shop (+7 on base attack) since it's free in exchange for the honor crest, then exit out left to make use of the shortcut again, this time for getting to the boss.
Area 6
Town: Dorado Town. Theme: gold. Caves: Tesoro, Plata, and Arrugia. Boss: Tarso.
The Silkarn Shoes are first followed by the key directly below or above town (it's about halfway between vertical repeats). Damage boosting off the bird directly below town is required in order to make the platform leading to the key in time (no frames to spare - wait even just 1 frame more and it would cost more than a second from having to wait for the platform to return!). I get the last level up in town mainly to heal as I need nearly full HP for area 7. On the other side, the boss is reached where the triple damage slice-slice-stab technique is frequently used. This boss moves very fast and hits incredibly hard (I've seen upwards of 280 damage from it in a single frame).
Area 7
Town: Llama Town. Theme: fire. Caves: Caliente, Reaccion, and Correr. Boss: Dragon.
For every 64 frames without the Asbestos Cape on, 15 damage is dealt due to the heat and the "it's too hot" notice appears. I skip the town entirely, wait a bit for some RNG manipulation, and lure the fireman immediately below town over the edge so I can use its projectile to cross a 6-panel gap to get to a key, saving almost 8 seconds from not having to cut through town, getting the key immediately to the right of the right exit, then coming back to this spot. I head straight for Correr; Cavern of Reaccion is never seen. The cerberus (wolf) enemies here are needed to push through a one-way barrier via damage boosting for a huge shortcut that skips 3/4 of the area. I pick up a full heal potion and a key along the way. I repeat this again to head straight to the boss area. The chest with the blue potion is needed as the heat will do major damage while enduring the very long boss battle and baiting the boss to aim its endless supply flame breath away (it took almost 3 hours to set all the inputs needed due to so much frame-perfect control being involved from all the slice-slice-stabs being used, needed as I was in a race against the clock from the heat damage). In casual play, the blue potion glitch with high max HP, coupled with at least 2 sabre oils, is the best way to bring down this very difficult boss.
Area 8
Town: Pureza Town and Esco Village. Theme: ocean. Caves: Absor, Desleal, Milagro, Falter, and Final. Boss: Alguien and Jashiin.
With only 10 damage being dealt per hit, the slime guns, with 64 HP, take 7 hits to defeat where the double-hit slice technique is used to show this, from having to wait for platforms. The lion's head key is the first target, then I backtrack through to area 7 then area 6. Compared to entering Pureza, going all the way to the end, entering the odd building to teleport back to Dorado, and exiting out the right, this saves about 4 seconds. Nothing in Pureza is needed so the town is completely skipped and never seen. I do need to have at least 45 HP to rush through area 7 again due to the endless heat damage. Aruggia is entered where the Feruza Shoes (doubles jumping height) and Enchantment Sword are picked up. The enchantment sword defeats any standard enemy in a single hit, including the red slimes in area 5. From there, it's mainly just following the route, taking a short detour for a key. In the final stretch, being very thick with enemies, there is one last key, along with a blue potion just past the boss door. The blue potion is required to bring down Alguien in time, via chop-stabs and a slice-slice-stab at the end together with the potion glitch. The final boss has you waiting for almost 15 seconds before it even shows up. I don't know how to make this any shorter. I spent the time staying put for the purpose of healing, which came in handy for accelerating the finishing blows. Until Jashiin's HP drops below 20%, he uses a vanishing in-and-out tactic, with a spell discharging right before vanishing again. Below 20%, he will move very fast and jump around. I cornered him so I could use a chop and chop-stab to finish him off right at the peak of his jump. A victory dance in the form of jumping ever higher follows then being teleported back to town upon getting the final tear. Normally, defeating the final boss yields the big tear in the middle of the banner at the top, but it only gives the small one because the first boss was skipped. The last input occurs upon entering the princess chamber.
The making of this TAS was streamed live on my Twitch at twitch.tv/ulillillia on August 14 and 15. The referenced YouTube video has my vocal commentary included to explain how the TAS works.
There is almost certainly room for improvement. This is what I feel could be improved:
- Getting better RNG (random number generation). Having area 3's boss use more darts and area 4's boss not jump at all are 2 such examples for bosses. Area 7 has 2 key improvements possible regarding this. The first is having the fireman immediately start shooing a projectile right after dropping over the edge. The second is having the cerberus in area 7 have better positioning for the second part (the first appears fixed).
- Get 1 fewer level up (likely by skipping area 4's level up and sage visit), though I'm unsure how to defeat Alguien without the blue potion glitch which doesn't last long enough otherwise, or having higher HP in general.
- Is there a way to get Jashiin to appear sooner? I've tried constant running around, waiting in place, performing stunts, changing positions, just about everything I can think of it it still forces 15 seconds of waiting.
- I've made attempts to lure the ceiling crawler enemy in area 5 right above the honor crest to damage boost up the slope but seems to take more time and effort to do that that than it does to go along the bottom part. This may only save maybe 10 frames or something and requires 20 HP.
- Is it a time save to exchange almas on first entry to Bosque for 1 or 2 sabre oils then use them upon exiting Dorado's left side? This can mean fewer level ups and defeating the bosses for areas 6 and especially 7 much faster. As all towns after exiting Dorado on the left side are skipped, sabre oil will persist through to the end of the game. Sabre oil seems to have no effect on the enchantment sword. 2 level ups may be skipped (in areas 5 and 6).
If cases 2 and 3 can be combined, getting under 9 minutes may be doable. Case 5 may make it possible to trade a level up for additional speed at the end.