(Link to video)
Demon Castle is a castlevania-inspired Pico-8 game. Your goal is to stop an evil sorcerer from summoning an ancient demon to destroy the world. Obviously, time is of the essence here, so the TAS storms through all four stages in record time, plowing through enemies and bosses to beat the game with an in-game time of just 2:23, four seconds faster than the RTA world record.

Game objectives

  • Emulator used: libTAS 1.4.4
  • Reach the castle and kill the demon as fast as possible
  • Played on the hardest difficulty and gets the bad ending
  • Manipulates luck
  • Takes damage to save time
  • Ends inputs early

Comments

After completing each level, there is a split path, and the player must choose which path to follow. Depending on your choices, there are three different paths you can take to the castle. Once you choose the top path, you are locked into the top path, and if you choose the bottom path twice in a row, you are locked to the bottom path. The bottom entrance to the castle is very fast, while the top path is slow and wastes a lot of time waiting for pendulum cycles. As a result, it's faster to choose the bottom path each time, even though stages two and three are slightly faster if you go the top route.
This TAS is played on hard mode, which reduces your health and adds additional enemies in tricky spots. This actually makes the TAS faster, since the extra enemies are used to save time in the castle, and reduced health is obviously no problem for a TAS.

Stage by stage comments

Stage 1

Zombies can be killed in one hit, so I clear them out pretty easily in the first room. I skip a set of stairs by doing a precise jump off the first platform. The last zombie is barely out of range of the whip, so I slow down for two frames to let it pass under me so I don't take damage. Getting hit normally deals knockback, but on stairs it has no effect. However, after beating the boss, your health has to refill to full before the next level can start. This refill is slow, so I want to already be at full health at the end of each level. I have to wait for the elevator cycle on the next screen, so I mess around with the enemies for a bit before heading to the bossfight. I time my whips to hit the boss on the first frame it becomes vulnerable, and once it's dead I collect the heart in midair to end the level as soon as possible.

Stage 2

This level requires a lot of luck manipulation. The slimes bounce in random directions, at random times, with random heights and distances. If you get bad RNG, it can be difficult or impossible to clear each room without slowing down, especially on hard mode. Whipping enemies and taking damage cause random particles to appear, so I attack enemies at specific times to get the best RNG. The slime boss behaves just as randomly as the other slimes in the level, so I manipulate it to jump towards me so I can start hitting it sooner.

Stage 3

This first room is pretty basic. The second room has a fire-breathing enemy that normally shoots you when you reach the stairs. These enemies can't shoot fire while taking damage though, so I whip it repeatedly to prevent it from firing. Just like in the first stage, there's a mummy in the way that I can't reach with the whip. Waiting for this one to walk under me is very slow in this case, so I just take the hit since it won't knock me back on the stairs. In the next room, I jump in order to avoid a fireball, and walk down the stairs to the elevator room, then down to the final room before the boss. There's a secret path on the right side which contains a chicken you can use to get health back, but I just use the path to skip walking down the stairs. I do a "stair boost" at the end of this room. When you press up to walk up or down stairs, the player snaps to where the stairs are. If you then immediately walk off the stairs, the "snap" can save a few frames of walking. I kill the bat and then do another stair boost to save time in the overworld.

Castle

It's barely possible to make it onto the first moving platform with a frame perfect jump. Hard mode causes floating heads to spawn in the first room of the castle. I need to damage boost using one of them to get onto the second platform early. Floating heads spawn at regular intervals on the right edge of the screen, but the height they spawn at is random. I stand as far left as possible so that the floating head spawns as close to the platform I'm on as possible, and manipulate a high spawn. Once on the second platform, I walk off of it in order to get a speed boost, then walk upstairs. The next room is a very cramped hallway filled with enemies, but I get through without taking damage. The demon boss is interesting to optimize. It's one of the few enemies in the game that can be "crit". The demon has very short invulnerability frames, so if your whip connects with the demon as soon as you use it, you can deal two damage per attack. You can kill the boss in just five attacks this way, but I actually attack six times and only get four crits. The problem is that you have to spend a lot of time waiting at the start of the fight for the demon to come down, so I attack immediately to get two non-crits before critting the remaining hits. I end inputs very early by getting a damage boost, so that my whip stays in the demon's hitbox for long enough to crit it. Taking damage doesn't matter in this fight since you don't get a refill.

Other comments

It might be possible to improve this TAS by adding more damage boosts, but I tried damage boosting in several other places and couldn't get it to work. 2:22 might be possible if you damage boost using the bat in stage one to skip the elevator, or using a slime in stage two to get onto the platform that leads to the seal and skip the elevators, or by luring a bat to the stairs before the final boss.
Note: I found a way to end inputs even earlier. Here's the updated ltm: https://tasvideos.org/UserFiles/Info/638336813566637923

InfoTeddy: Claiming for judging.
InfoTeddy: Replaced file with 8 frame improvement.
InfoTeddy: Delaying due to issues with sync.
InfoTeddy: Sync issues have been resolved thanks to fsvgm777.

InfoTeddy: Despite the sync snafu I had, this is a pretty great movie to watch. Accepting to Standard.
Note for syncing: Make sure that in the PICO-8 config (in ~/.lexaloffle/pico-8/config.txt), you have foreground_sleep_ms 5 instead of any other value for foreground_sleep_ms.
fsvgm777: Processing.

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14914
Location: 127.0.0.1
This topic is for the purpose of discussing #8694: Merl_'s PICO8 Demon Castle in 02:19.27
Merl_
He/Him
Active player (481)
Joined: 6/11/2022
Posts: 31
I found a way to end inputs even earlier. I'll probably post an improvement somewhat soon
Judge, Moderator, Player (195)
Joined: 7/15/2021
Posts: 110
Location: United States
I can't seem to find a download link to the executable used in this submission. Where did you download the game?
Merl_
He/Him
Active player (481)
Joined: 6/11/2022
Posts: 31
Judge, Moderator, Player (195)
Joined: 7/15/2021
Posts: 110
Location: United States
Merl_ wrote:
https://www.lexaloffle.com/bbs/?tid=34805 https://mush101.itch.io/demon-castle
Yes, those were the two links I found. I don't see a download link on the Itch page. I can download the cart off of the Lexaloffle BBS, but it doesn't sync if I run it directly from the PICO-8 binary; neither do the checksums match if I create my own standalone binary nor does that binary sync.
Merl_
He/Him
Active player (481)
Joined: 6/11/2022
Posts: 31
Judge, Moderator, Player (195)
Joined: 7/15/2021
Posts: 110
Location: United States
Merl_ wrote:
https://cdn.discordapp.com/attachments/829398403897229386/1171331699876057098/image.png I followed this mini guide that rythin made
Transcription since Discord CDN links will soon start expiring:
rythin wrote:
  • open your game in splore
  • esc out until you're back to the main pico 8 screen
  • export gamename.bin
  • it will export the game for every platform, find gamename_linux
  • you're winner
Yes, I used the export command. However, the MD5 of the Linux binary is 6a21562c88a5f475272814d20e5145de whereas the MD5 of the binary used in the submission is b3edd6e3b0ef8dd2377b87db14e0d2e7. Also, like I said, it doesn't sync. It might have to do with the version of PICO-8. Which version did you use? I used v0.2.5g_amd64.
Merl_
He/Him
Active player (481)
Joined: 6/11/2022
Posts: 31
What is an MD5, what is a Linux binary, and what does the stuff in yellow mean? I'm using v0.2.5g for windows.
Judge, Moderator, Player (195)
Joined: 7/15/2021
Posts: 110
Location: United States
Merl_ wrote:
What is an MD5, what is a Linux binary, and what does the stuff in yellow mean? I'm using v0.2.5g for windows.
An MD5 hash is a type of hash. In general, a hash is a sequence of characters that uniquely identifies a string of data, such as a file. MD5 is a certain specification of a hash, and the important thing here is that libTAS stores the MD5 hash of the executable in the movie file, and will warn you if the hash of the executable you run and the stored hash are different. On TASVideos, we also use the MD5 and SHA1 hashes to identify specific versions of files in game catalogs. By "Linux binary" here I am just referring to the Linux executable. A "binary" in this context is just an executable file. The yellow highlights are the MD5 hashes of the files. What I'm saying is that the executable files I'm generating and the file you used to make this movie are not the same. And I don't know how exactly to generate the same file. I tried generating the file by running the Windows version of PICO-8 in WINE, but it produces a Linux binary with the exact same hash. So I guess I would have to see if running it natively would change anything? I would have to do that later, though.
Judge, Moderator, Player (195)
Joined: 7/15/2021
Posts: 110
Location: United States
While judging #8702: Merl_'s PICO8 You Have to Burn the Rope in 00:23.37, I realized that the executable has literally nothing to do with the actual game. All game-specific data is stored in the data.pod file, and the executable is a just generic PICO-8 runner that can run any game. That means that the executable will have the same hash no matter which game you export it with. This raises some questions as to whether we should catalog the runner hashes or the hashes of the actual game data itself, but that's another discussion. By cross-referencing the hashes catalogued in #7687: ikuyo's PICO8 Star Anise Chronicles: Oh No Wheres Twig?? in 03:05.50, I figured out that the executable used in this submission was not PICO-8 v0.2.5g as you told me, but in fact v0.2.5c. (The version is also visible in the encode, and in the encode you provided, it says v0.2.5c.) So after getting the Linux executable for PICO-8 v0.2.5c, the game will sync past the title screen. However, it desyncs at the second jump. The player character presses jump one frame too late, and that's probably related to the fact that this game seems to have some no-draw frame weirdness. Either the game sometimes has no-draw frames for no apparent reason, or the framerate of the movie is wrong, but I don't know which possibility it is. I can remove one frame after the first jump and before the second jump to get it to sync past the second jump, but then it desyncs somewhere in the next room.
Merl_
He/Him
Active player (481)
Joined: 6/11/2022
Posts: 31
One weird thing about this game is that it has inconsistent load times, and that's probably what's causing it to desync in each room. I just tested it again and it syncs perfectly fine for me.
Judge, Moderator, Player (195)
Joined: 7/15/2021
Posts: 110
Location: United States
Merl_ wrote:
One weird thing about this game is that it has inconsistent load times, and that's probably what's causing it to desync in each room. I just tested it again and it syncs perfectly fine for me.
It desyncs for me in the exact same spot every time I run it. I've asked some other people to see if they can get it to sync.
fsvgm777
She/Her
Senior Publisher, Player (221)
Joined: 5/28/2009
Posts: 1185
Location: Luxembourg
I got it to sync just fine using the PICO-8 0.2.5g executable. I am suspecting a config issue. Here's the config I used. I have an AVI dump ready.
Steam Community page - Cohost profile Oh, I'm just a concerned observer.
Judge, Moderator, Player (195)
Joined: 7/15/2021
Posts: 110
Location: United States
fsvgm777 wrote:
I got it to sync just fine using the PICO-8 0.2.5g executable. I am suspecting a config issue. Here's the config I used. I have an AVI dump ready.
That was it - I had foreground_sleep_ms 2, while you had foreground_sleep_ms 5. Not sure why it makes a difference for this game, maybe it has to do with the game's weird no-draw frames. Thank you!
EZGames69
He/They
Publisher, Reviewer, Expert player (4009)
Joined: 5/29/2017
Posts: 2711
Location: Michigan
Is it possible to defeat the demon at the end instead of the game saying you couldn’t defeat it?
[14:15] <feos> WinDOES what DOSn't 12:33:44 PM <Mothrayas> "I got an oof with my game!" Mothrayas Today at 12:22: <Colin> thank you for supporting noble causes such as my feet MemoryTAS Today at 11:55 AM: you wouldn't know beauty if it slapped you in the face with a giant fish [Today at 4:51 PM] Mothrayas: although if you like your own tweets that's the online equivalent of sniffing your own farts and probably tells a lot about you as a person MemoryTAS Today at 7:01 PM: But I exert big staff energy honestly lol Samsara Today at 1:20 PM: wouldn't ACE in a real life TAS just stand for Actually Cease Existing
fsvgm777
She/Her
Senior Publisher, Player (221)
Joined: 5/28/2009
Posts: 1185
Location: Luxembourg
EZGames69 wrote:
Is it possible to defeat the demon at the end instead of the game saying you couldn’t defeat it?
I presume that would be the good ending that you'd get if certain conditions are met, namely, getting the three orbs before reaching the demon. I don't consider this bad ending to be a game over, for the record.
Steam Community page - Cohost profile Oh, I'm just a concerned observer.
EZGames69
He/They
Publisher, Reviewer, Expert player (4009)
Joined: 5/29/2017
Posts: 2711
Location: Michigan
Right, I just didn’t know if the game was saying you didn’t defeat the boss and it managed to get away. Not that you needed other items.
[14:15] <feos> WinDOES what DOSn't 12:33:44 PM <Mothrayas> "I got an oof with my game!" Mothrayas Today at 12:22: <Colin> thank you for supporting noble causes such as my feet MemoryTAS Today at 11:55 AM: you wouldn't know beauty if it slapped you in the face with a giant fish [Today at 4:51 PM] Mothrayas: although if you like your own tweets that's the online equivalent of sniffing your own farts and probably tells a lot about you as a person MemoryTAS Today at 7:01 PM: But I exert big staff energy honestly lol Samsara Today at 1:20 PM: wouldn't ACE in a real life TAS just stand for Actually Cease Existing
Merl_
He/Him
Active player (481)
Joined: 6/11/2022
Posts: 31
In order to stop the demon, you have to find three hidden seals throughout the game. Here's what an RTA run looks like that gets the good ending: https://youtu.be/VcAcADwXzOs I don't fail to kill the boss here, I kill it and then the game just goes "nuh uh" and gives me the bad ending.
Site Admin, Skilled player (1237)
Joined: 4/17/2010
Posts: 11275
Location: RU
InfoTeddy wrote:
That was it - I had foreground_sleep_ms 2, while you had foreground_sleep_ms 5.
I've seen this thing cause issues before.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Judge, Moderator, Player (195)
Joined: 7/15/2021
Posts: 110
Location: United States
feos wrote:
I've seen this thing cause issues before.
This should be documented on the PICO8 wiki page.
Site Admin, Skilled player (1237)
Joined: 4/17/2010
Posts: 11275
Location: RU
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14914
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. ---- [5660] PICO8 Demon Castle by Merl_ in 02:19.27