This TAS completes the Homestar Runner game Thy Dungeonman from The Brothers Chaps with all items that don't kill you collected for a 100% completion / best ending, which is to say the maximum score but without infinitely picking up the same items. It does so without violating English too badly, although the same can't be said about the emulator(s).
Thy Dungeonman was first suggested by Bobo the King in Forum/Posts/521316 and I couldn't help but actually do it. You see, I have a penchant for pushing the envelope on what can be TAS'ed, and in this case loading a savestate results in "stack smashing detected" and dumps the core on my system (https://github.com/clementgallet/libTAS/issues/434 and https://github.com/clementgallet/libTAS/issues/359 appear related). So... I employed the same strategy as #4425: dwangoAC's C64 C64anabalt "Fastest Kill Screen" in 01:21.03 and worked around the problem by reloading the entire emulator in lieu of working savestates (although I stopped short of putting it in a VM for once). I manually hexed in a best guess for the rerecord count (more on that in a second). One other note - the Flash file is freely available at https://homestarrunner.com/dungeonman (right-click on Ruffle and select Copy Debug Info to see the link to the raw .swf file).
This is a very simple text adventure video game made in Flash in 2004 as part of the Strong Bad Email series of Homestar Runner comics. There's a complete writeup of the game at http://hrwiki.org/wiki/Thy_Dungeonman that describes the game in far more detail than I should probably try to here; it also describes some of the other responses that aren't in this run. There's one item, the DAGGER, that can be obtained infinitely, adding 25 points each time. I briefly flirted with the idea of creating a TAS of picking it up until I overflowed some counter but after 37 minutes of movie length I decided to abandon the idea. Instead, I opt for doing everything that can be done to gain points that isn't an infinite loop. This includes attempting to get the FLASK twice, which provides one point each time (but stopping short of doing so a third time for reasons left for the reader to discover). It also includes picking up the SCROLL (2 points). After picking up the TRINKET (2 points) and finally picking up the DAGGER (25 points) a single time, the run ends with a respectable 31 points. This is the maximum number of points that can be achieved without repeatedly picking up the DAGGER, so I'm referring to it as the best ending for lack of a better term.
I have fond memories of this particular game when it came out. I enjoyed playing new Strong Bad emails as they were released and this game was a fun surprise one week. I've never forgotten it, and now it can be preserved so no one else watching this oddity can forget it either. (Not that this game was in danger of falling into obscurity; I'd like to thank the HRWiki folks for the fantastic writeup and for their preservation efforts.)
As a quick note on execution, there are a few limitations unique to this kind of keyboard input in libTAS, especially if using frame advance while holding keys down like chorded input. For starters, if you need to type two g's in a row, you have to press g for a frame, advance a frame with g released, then press g on the next frame advance in order to register the separate keystroke. I had previously experimented with how libTAS sends input to games when I was testing out Epistory (which was much more ambitious than this) and I discovered that libTAS is both deterministic in the order it sends multiple keys on one frame as well as slightly annoying. Adding an additional letter or a space often causes letters to end up out of order for what's needed in that moment with no other way to control it. For instance, typing "get" results in "gte", but it's possible to type "ge" on one frame without issue in this case because that's the desired letter order. I was able to type out "sout" all at once because the order was magically correct, but most of the time I could only get one to three letters in per frame without them ending up in a different order (not having loadstates made that rather annoying to test out with certainty).
Spikestuff came along, saw my initial submission, and improved it significantly by using a different text input method entirely. Instead of using chorded frame-advance input, Spikestuff used the input editor to type many more letters in a single frame. However, it still wasn't possible to handle GET TRINKET due to the presence of duplicate letters. At that point, rythin came along and improved the run further, saying "I achieved this by manually editing the input file inside the ltm. Doing this allows... sending any inputs in any order in a single frame, including the same input twice in a row. It's strange behaviour and I suppose it might be good to have a discussion on whether something like this should even be allowed but as it stands it's probably the best way to do anything text-based in libTAS."
After further discussions, I compiled all of the changes, cleaned up some mouse movement and other inputs, and created a file with the results from all three of us. And that's it - I hope you enjoy the silliness of this as much as I did and happy judging and categorizing!

> judge ye TAS
Ye cannot judge the TAS. It is firmly bolted to a wall which is bolted to the rest of the dungeon which is probably bolted to a castle. Never you mind.
> replace ye file
It looketh pretty awesome.
(4 second improvement courtesy of Spikestuff and rythin)
> replace ye file
Thou shaketh it a little, and it feeleth all right.
(Platform: Flash added to annotations)
> give TAS to Samsara
A novel idea! You givst the TAS to Samsara and she happily agrees to tell you what parapets are. With this new knowledge, ye escapes from yon dungeon in order to search for new dungeons and to remain... THY DUNGEONMAN!! You hath won! Congraturation!! Your score was: ACCEPTED

despoa: Processing...


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15628
Location: 127.0.0.1
Spikestuff
They/Them
Editor, Publisher, Expert player (2656)
Joined: 10/12/2011
Posts: 6449
Location: The land down under.
For the sake of argument, I'm going to say this is a "max score" and not a "best ending" as you point out that avoiding the mask will result in the same ending and was only done for points. But not only that, I found a major improvement with text phrasing and requesting co-author, whilst still retaining that "max score". Early ending input can be found here for a different branch. Validate this input as a final note.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Moderator, Senior Ambassador, Experienced player (908)
Joined: 9/14/2008
Posts: 1014
Spikestuff wrote:
I found a major improvement with text phrasing and requesting co-author
I had a chat with Spikestuff about how on earth this was possible and we discovered some very interesting behaviors in libTAS. I had been using "chorded" input - as in, holding down the desired keys and tapping the frame advance button. What Spikestuff did was use the piano roll Input Editor method with a specific twist of adding the input in the opposite order it should be fed into the game. Quoting Spikestuff from Discord: 'Let's say "Get Flask [Enter]". I did this: [Enter]ksalfteg as my input string.'. This was a huge surprise to me, as I'd spent quite some time when I was messing around with Epistory and I hadn't observed this at the time. I'm extremely happy to see this as it may make some things in Epistory possible that weren't otherwise, assuming I can get it to be stable, but I digress. I've confirmed this movie file syncs for me and is faster, so that's awesome. All that to say, yes, I would gladly have you on as co-author with profuse appreciation, this was a fantastic find! However, I do still assert that "max score" is incorrect; I got the score up to 66,031 before deciding that was pointless, you can just keep picking up the dagger over and over again to get the actual max score with absolutely no entertainment benefit. This gets the best ending with the highest score, so I'm in favor of sticking with that branch name - I'm open to feedback, however. :) Thanks again for this awesome find. :)
I was laid off in May 2023 and became too ill to work this year and could use support via Patreon or onetime donations as work on TASBot Re: and TASBot HD is stalled. I'm dwangoAC, TASVideos Senior Ambassador and BDFL of the TASBot community; when healthy, I post TAS content on YouTube.com/dwangoAC based on livestreams from Twitch.tv/dwangoAC.
Spikestuff
They/Them
Editor, Publisher, Expert player (2656)
Joined: 10/12/2011
Posts: 6449
Location: The land down under.
dwangoAC wrote:
This gets the best ending with the highest score, so I'm in favor of sticking with that branch name - I'm open to feedback, however.
I would just argue branchless with the earlier ending input then imho.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
rythin
She/Her
Skilled player (1144)
Joined: 11/4/2021
Posts: 47
Joining the improvement train to show off something really dumb I was made aware of while working on another game. Here's a 15 frames faster input. I achieved this by manually editing the input file inside the ltm. Doing this allows for some cursed shit sending any inputs in any order in a single frame, including the same input twice in a row. It's strange behaviour and I suppose it might be good to have a discussion on whether something like this should even be allowed but as it stands it's probably the best way to do anything text-based in libTAS.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4045
I guess the important question to ask is 'is this physically possible to do outside of libTAS'
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Editor, Player (69)
Joined: 6/22/2005
Posts: 1050
Patashu wrote:
I guess the important question to ask is 'is this physically possible to do outside of libTAS'
I second this question. These findings with libTAS are interesting, but is it actually possible to send the same input twice in a row on the same frame with real hardware?
Current Projects: TAS: Wizards & Warriors III.
Spikestuff
They/Them
Editor, Publisher, Expert player (2656)
Joined: 10/12/2011
Posts: 6449
Location: The land down under.
rythin wrote:
I achieved this by manually editing the input file inside the ltm. Doing this allows for some cursed shit sending any inputs in any order in a single frame, including the same input twice in a row.
Just for a second perspective to try and dumb down what this basically means is that rythin used essentially two keyboards whilst I used one. So one of the required solutions is "Get Scroll" (without space) in my solution I wrote. Frame 1: lorcsteg Frame 3: [enter]l Wheras rythin in a single frame with again essentially two keyboards did in a single frame "[enter]llorcsteg", skipping out on the extra frame. This also applies to any instance of "dennis" and "dagger". The more interesting part, is the amount of keyboards in a single string is technically endless.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Moderator, Senior Ambassador, Experienced player (908)
Joined: 9/14/2008
Posts: 1014
Just to say it, the description of this submission reflects the original submission at the moment, I'll update it once we work out how to handle this. So first of all, this is pretty incredible - there's several really fascinating aspects to this worth exploring and talking through. For starters, I'd consider "two keyboards" to be a different branch. I can understand how this might feel like cheating but if the binary accepts input this way without modification, you could argue it's how the game behaves and is theoretically how the devs wrote it to work even if they had no idea this could happen. I'd like to see if the .ltm editing approach works to achieve the same goal with a single keyboard by sending a mix of uppercase and lowercase letters or accented letters from exotic keyboards such that a single keyboard combined with parser abuse could still achieve the same time but I'm not opposed to the current hacked .ltm. I look forward to the discussion - what do others think?
I was laid off in May 2023 and became too ill to work this year and could use support via Patreon or onetime donations as work on TASBot Re: and TASBot HD is stalled. I'm dwangoAC, TASVideos Senior Ambassador and BDFL of the TASBot community; when healthy, I post TAS content on YouTube.com/dwangoAC based on livestreams from Twitch.tv/dwangoAC.
rythin
She/Her
Skilled player (1144)
Joined: 11/4/2021
Posts: 47
I don't see how using upper/lower case letters or accents would make it a single keyboard. On the physical device you still need to press the "base" key to modify it, in most cases at least, and if we're talking a theoretical keyboard with separate keys for lower/upper case then I think we can also assume that theoretical keyboard can have repeat keys. I personally see it as the same thing as mixing keyboard/controller or using multiple controllers, which I haven't seen be questioned before.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4045
Can you do this with one keyboard if you type on it at higher than 60Hz? I've never heard of a game programmed to know of the existence of second keyboards, so what system is handling and aggregating them, at what layer? Like, is the Flash codebase receiving an arbitrary number of keyboard events per frame, and the Flash game is just going 'when keyboard event, do this' rather than checking in a loop 'this frame, if key A is pressed, ...'? At least I assume libTAS is unable to reach into games or engines and change the ways they read for input.
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Post subject: New movie file
Moderator, Senior Ambassador, Experienced player (908)
Joined: 9/14/2008
Posts: 1014
Hi Judges, please replace the movie file in this submission with https://tasvideos.org/UserFiles/Info/638226361601783394 which is the culmination of the input from Spikestuff, rythin and myself. I've updated the embedded encode and the description in preparation for the movie file swap. Thanks!
I was laid off in May 2023 and became too ill to work this year and could use support via Patreon or onetime donations as work on TASBot Re: and TASBot HD is stalled. I'm dwangoAC, TASVideos Senior Ambassador and BDFL of the TASBot community; when healthy, I post TAS content on YouTube.com/dwangoAC based on livestreams from Twitch.tv/dwangoAC.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15628
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. ---- [5497] Flash Thy Dungeonman "100%" by dwangoAC, Spikestuff & rythin in 00:20.00