(Link to video)
Submission Text Full Submission Page
This TAS more thoroughly demonstrates the concept of TI-83 speedcoding previously done by DwangoAC in this movie. It also uses TI-83 v1.02 firmware.

Game Choice

The new movie uses a different game that as far as I know has not been TASed before on any platform, and so should allow for improved entertainment value. The code clones the DOS game Daleks, more information about it can be found here. The basic idea is that you're the Doctor and Daleks chase you optimally each turn, killing you if they get to you. You have one use of the "sonic screwdriver" to take out all surrounding Daleks, and infinite use of the "Tardis" to warp randomly across the map with the infinite use being counteracted by the chance to land on a Dalek in normal play. The original game has a "last stand" function that is omitted as it would do nothing but slow down the code with no change in visuals.

Speedcoding

An explanation of the how the code that is written in the TAS works can be found in this pastebin. Each piece of code is a single "token," usually corresponding to one byte but some tokens are 2 bytes. The TAS optimizes the path to find each token in the various menus. The Catalog contains every token and each letter can be used to warp to that point in the alphabetical list of tokens, an example of which is seen immediately when finding the "AxesOff" token. Many of the menus can be performed quickly by taking the number shortcuts to immediately drop in tokens (for example V->1->1 on the 2nd line of code inputs Xmin). An intentional unnecessary rand call is added to the input waitloop to allow for more complex RNG manipulation decision trees, being able to advance RNG an arbitrary number of times by waiting longer to move the Doctor. The final program takes about 400 bytes, and I believe up to 100 levels should technically be possible with the size of the List data storage type if the level restriction is omitted, though the code would likely run too slow for later levels to be watchable.
The code avoids two severe speed issues from the previous TAS: first, LBL and GOTO should be avoided like the plague in TI 83/84 BASIC. The BASIC interpreter does not search efficiently for LBL and doesn't garbage collect properly after using GOTO. Also, another interpreter bug exists in the for instruction. For loops should always have a closing parenthesis even though the language does not typically require them due to the "End" token actually marking the scope of the loop. For some reason, "If" statements are massively slowed when the closing parenthesis is omitted, as explained on the linked wiki page for the "For" instruction. Many of the other techniques are explained in the pastebin linked at the top of this section.

Gameplay

The gameplay attempts to demonstrate the first nine waves, up to ten Daleks. It makes clever use of the programmed-for RNG manipulation to create fast initial enemy positions, warp efficiently, and make strong use of the sonic screwdriver. It is likely the game can be completed faster, but as described in the previous submission and judge notes it is extremely difficult to tell if any given RNG is optimal given the nature of the RNG running off a seeded rainbow table. Any given combination of initial seed and waiting for teleports could lead to faster gameplay, but then could destroy the run if slower RNG is ahead in the table.

Final comments

My hope is that the more technically researched choices in BASIC code and programming menuing and more unique gameplay could lead to a change in ruling compared to the previous submission. Speedcoding in assembly can also be done on-calculator using the asm( instruction, but there would be no technical complexity in the (lack of) menuing for the "speedcode" portion of the TAS. TASing released assembly games is a whole other problem on the TI-83, as its "power on" state does not load a "ROM" like typical consoles so the game would need to be deployed in some manner prior to the gameplay portion of the run, but perhaps running from savestate would be allowed to enable some form of more traditional TI-83 TASing.

Maru: Judging.
ThunderAxe31: File replaced with a 3002 frames improvement.
Maru: I'm judging this a little bit differently than I have judged other TASes. Basically for this submission, I just decided to sit back and see what feedback this TAS would get. Even after the massive code efficiency improvement, feedback did not drastically change. It seems mostly agreed upon that these speed-coding demonstrations have to be eligible for the Moons tier or higher. Currently, the reason why it cannot go into Vault is because it is an unofficial game with some code changes (thus it is a hack) and has gameplay resembling Vault submissions. Feedback in terms of entertainment did not quite cut the gap. I understand that there is a hardware limitation with what you were trying to accomplish. There may have been more positive audience reception with a speed-coding demonstration if it was done on a calculator like a TI-84 Plus CE, which has aesthetic and technical merits over the TI-83, but BizHawk does not support that at the moment.
Regarding speed-coding demonstrations, if a future submission does get decent feedback, then we will have some work to do, but this unfortunately was not the one. Although I am rejecting this, I do respect this type of craft and do encourage you and others to continue exploring in the realm of speed-coding.

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14856
Location: 127.0.0.1
This topic is for the purpose of discussing #6498: TiKevin83's TI83 Daleks in 02:44.07
Lobsterzelda
He/Him
Skilled player (1220)
Joined: 3/17/2019
Posts: 280
I never thought I'd see the day when a TI-83 TAS would be published on TASVideos. Could this TAS be the first one? Yes vote for demonstrating a new and interesting way of TASing.
fmp
He/Him
Active player (273)
Joined: 9/1/2018
Posts: 82
Is there a reason you didn't use the graph variable key (X,T,Θ,n) for the most common variable? It will produce X in one less keystroke than ALPHA+STO. I must say I'm impressed with this line: DelVar F1→S. Taking into account the weird quirk that DelVar doesn't require a delimiter or line break after its argument is nifty.
TiKevin83
He/Him
Ambassador, Moderator, Site Developer, Player (119)
Joined: 3/17/2018
Posts: 348
Location: Holland, MI
Yep as a general rule X is avoided in graphscreen related programs because a bunch of graph commands reset X and Y. http://tibasicdev.wikidot.com/sk:variable-tips Now that being said it may be possible to use X still somewhere in this TAS, haven't tested that much given the above.
EZGames69
He/They
Publisher, Reviewer, Expert player (3965)
Joined: 5/29/2017
Posts: 2707
Location: Michigan
I didn’t think it was possible for a user to submit themselves as a tas.
[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
Player (12)
Joined: 6/17/2006
Posts: 501
A big No vote for me. The speedcoding part is uninteresting to watch, the gameplay is relatively simple, and the game goes from pretty slow to even slower. The only interesting part of this submission for me was the technical choices the author made for his demo from his comments and source code, not the demo itself. I've also noticed several other issues with this submission: - Just like I pointed out in the previous TI-83 submission, rand does not appear to have been initialized prior to program execution for luck manipulation, so the 2nd part of this run is most likely not optimal. - This version of the game was designed for this TAS. In my opinion, this is the equivalent of cheating, as anyone can just edit the code to get better potential results. The author even admitted to have added an extra line of code for this very purpose. - The game arbitrarily ends at level 10, even though changing a single line of code could unlock many more levels. Once again, this can be viewed as a form of cheating, as it forces the game to end early. - As this homebrew is a clone, it seems pretty obvious to me that the wrong version of this game was chosen, as it is neither the original, the more popular, nor the superior version of Daleks. While I do believe calculator-based games can be TASed in a way that meets TASVideos standards, I do not believe this is the right approach.
TiKevin83
He/Him
Ambassador, Moderator, Site Developer, Player (119)
Joined: 3/17/2018
Posts: 348
Location: Holland, MI
I agree with your first point. It is not really possible to know if any run could be more optimal but it's very likely something more optimal does exist. To your 2nd and 3rd points, "arbitrary" is a better word than "cheated." But I believe almost any decision made with things like game version/number of levels/code choices could be described as arbitrary, which relates to what I'd say for point 4: The goal is not intended to be "any% speedrun of Daleks on TI-83," which I would agree falls short as my port is highly likely to be less notable than TASing the DOS game. The goal choice is intended to be more in the "esoteric and unorthodox" realm, "speedcode Daleks on TI-83 and then speedrun the coded game," with Daleks 2-10 used as a benchmark so that future TASes could compete against a similar goal. If the entertainment value of the coding and gameplay falls short, by all means I would understand how this TAS could fall short. But to me that piano roll of inputs and the amount of function behind it is one of the more entertaining things I've seen in TASing.
Alyosha
He/Him
Editor, Expert player (3520)
Joined: 11/30/2014
Posts: 2725
Location: US
For me it's novel enough for a yes vote. Also your commentary is really good.
JosJuice
She/They
Editor, Emulator Coder
Joined: 7/3/2010
Posts: 193
Location: Sweden
While I do like the idea of calculator TASes, I have to say that TI-BASIC on the TI-83 just is too slow to produce a game that an entertaining TAS can be made for. The gameplay in this (but not the live coding) looks like something a human could have done, including the luck manipulation (since making frame-perfect inputs isn't too hard when the game runs at about 1 fps). Also, I find the addition of an extra rand in the game's code a bit questionable. Using rand in a loop in that way is commonly used to arbitrarily slow down a game, and this game is already pretty slow, so I don't think a normal game author would want to put a rand there. Does it really make sense to modify the game's code for the specific purpose of potentially make the TAS more entertaining?
Active player (372)
Joined: 9/25/2011
Posts: 652
I appreciate all the hard work that went into this. I do, however, have concerns about coding a new game for TASVideos. All the games displayed at TASVideos are independent, historical artifacts created by others for people to play. The goal of the site is to showcase superhuman play, or breaking games that already exist. Even though this is a recreation of a preexisting dos game, my understanding is that the TI83 code was created specifically for this TAS. If that's the case, then there's no baseline from which we can deem it is 'authentic'. I liken it to coding a Mario clone on the C64 just to TAS it. How can others get a copy of that game except to write the same code? IMO, games here should be from a pre-existing artifact, either a cartridge, rom, or even a publication of code in a book or magazine. Creating a game just to TAS it opens the door too wide for anything to be submitted and published. EDIT: We'd also have to revisit what an "improvement" means. From what I can tell, any change of code that speeds up the game itself would be considered an improvement, which is completely different than any other submission on this site (AFAIK)
TiKevin83
He/Him
Ambassador, Moderator, Site Developer, Player (119)
Joined: 3/17/2018
Posts: 348
Location: Holland, MI
I've been able to save 224 frames in the speedcode (2370->2146) and another 71 in the first level from the optimization to the speed of the game loop (2404->2699). I'll make another post when the update is complete through all 10 levels. I'm keeping the pastebin updated with the code optimization. I was able to rearrange the code to draw sprites first, which led to some other optimizations. I also was able to move the code that checks for collisions out of a for loop and turn it into list math. I also discovered a previously unknown behavior with DelVar that it can be used without counting towards the single line for normal If statements. https://pastebin.com/TMu6pyiB
TiKevin83
He/Him
Ambassador, Moderator, Site Developer, Player (119)
Joined: 3/17/2018
Posts: 348
Location: Holland, MI
http://tasvideos.org/userfiles/info/57692685003754860 Updated submission Frame counts comparison: Speedcoding 2370 2154 Reordered a bunch of code and moved some things out of loops that could be done with list math. Levels 1->9 2699 2423 3310 2912 4045 3473 4576 3851 5581 4594 7143 5757 8197 6500 10075 7841 12845 9843 Fixed all the RNG with the new code efficiency, saved 3002 frames in total. I also discovered a previously undocumented use of DelVar, it can be part of a single line if statement. The pastebin with the related code has been updated, line 27 shows the new tech: https://pastebin.com/TMu6pyiB
TiKevin83
He/Him
Ambassador, Moderator, Site Developer, Player (119)
Joined: 3/17/2018
Posts: 348
Location: Holland, MI
Here's an updates video of the TAS in 2:44.07 https://youtu.be/0iSRqA4T5wo I played it back without the input viewer once this time so it would play at full speed, then again showing the new inputs. One other thing, I forgot to mention before that the TI-83 appears to have consecutive input lag; there are some places in the speedcode where the "right" key is pressed to reduce lag between two presses of the "(" key.
Player (145)
Joined: 4/18/2015
Posts: 17
I have to completely agree with c-square here. The concept is really cool and I think this is quite interesting, but I don't think this is a movie that should be published because it's not a "real" game that existed in this exact form before the run.
CoolHandMike
He/Him
Editor, Reviewer, Experienced player (635)
Joined: 3/9/2019
Posts: 580
Did I find this entertaining? Yes. Did I think this should be published as presented? No. This version was not an actual game for calculator, neither homebrew or through some publisher. However I would say yes if this version was released as a homebrew, aka "TiKevin83's Daleks v1.0" or something along those lines. Being able to just change the code to get a faster result means it should really be considered a different game or at least a different version each time something is changed.
discord: CoolHandMike#0352
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11264
Location: RU
Homebrews are fine for Vault, but they have to be notable. I don't think this port existed prior to this movie, so there's no following to it yet. Speed-coding is another thing to ponder, and it's been addressed in the previous TI83 submission already, but here's my view.
Vault rules on games wrote:
A game which is about free form creativity is not a proper game.
I consider coding a free form creativity, because you can basically code anything, and the coding process won't contain any gameplay. Hence speed-coding itself shouldn't be a part of the TASing competition. Though if the result is a playable game that's meant to be coded first and only then played (for example due to limitations of the platform) playing such games can be considered acceptable. The game should just satisfy the Vault rules in this case. For example, in addition to the rule about homebrews, there's a rule about triviality and standing out from unassisted play. Oh and no, I wasn't entertained at all by this movie.
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.
TASVideosGrue
They/Them
Joined: 10/1/2008
Posts: 2738
Location: The dark corners of the TASVideos server
om, nom, nom... want more!
Post subject: Reconsider for Playground
Moderator, Senior Ambassador, Experienced player (898)
Joined: 9/14/2008
Posts: 1007
This is an official request to reconsider this as a Playground run.
I was laid off in May 2023 and could use support via Patreon or onetime donations as I work on TASBot Re: and TASBot HD. I'm dwangoAC, part of the senior staff of TASVideos as the Senior Ambassador and BDFL of the TASBot community; I post TAS content on YouTube.com/dwangoAC based on livestreams from Twitch.tv/dwangoAC.
TiKevin83
He/Him
Ambassador, Moderator, Site Developer, Player (119)
Joined: 3/17/2018
Posts: 348
Location: Holland, MI
Seconding dwango, I believe this is an absolutely perfect run for the playground and that it should be reconsidered as time permits
RetroEdit
Any
Editor, Reviewer, Player (165)
Joined: 8/8/2019
Posts: 131
I concur. I didn't think this TAS was quite right for our traditional movie tiers at the time (although the rules have changed since then), but I do think this run is a good fit for playground. I think this is also in compliance with the Playgrounds rule "Playground will never house all runs of any given game.", since the DOS version exists and could be TASed.