Submission Text Full Submission Page
"800 TRIGGERS"
Warning: This run contains many instances of flashing lights, specifically in the levels, "Rainbow Tylenol", "THE LIGHTNING ROAD", "THE NIGHTMARE", "Death Moon", & "Problematic".
Note: The movie file uses a different version as its base, and as a result, its ROM filename and SHA1 hash are incorrect. I have attempted several times to fix this and not have had any success. If anyone is able to fix the movie file, I'd greatly appreciate it. Additionally, the rerecord count is inaccurate. The true rerecord count is 14 420.
Edit: Improved movie file here.

Objectives

  • all levels
  • 100% completion
  • heavy luck manipulation (not anymore!)
  • ends input REALLY early
  • Emulator used: BizHawk 2.10
  • SHA1 Hash: 59C7E7C26700AEFC809525A13EBE75400F28510B
Famidash is a homebrew NES demake of the 2013 PC/mobile rhythm platformer game, Geometry Dash. Created by TFDSoft, this game features demakes of the official main 22 levels and 21 custom community-made levels. Version 1.2.1 fixes a few things, notably the missing third coin in "Dear Nostalgists" and the RNG in "Lucky Draw".
This is a 236 frame improvement over my previous submission. To get an understanding of the run, I recommend reading through it here. These notes will only discuss the relevant differences compared to last submission.

The Levels

For starters, it's worth mentioning that the first half of the run is slower than the previous submission. I'm not sure why, but the lag frames were in different places in this run. I went through the TAS and tried to do as much lag reduction as I could, but I still couldn't match the original's pace. Probably a version difference. The frame alignment is also slightly different, which means I have to do some workarounds to make some of the skips still work.

Revolution

Thankfully, this new frame alignment works out in my favour, and allows me to skip the final speed portal in this level. I attempted this in the previous TAS, but couldn't get it due to frame alignment.

Dear Nostalgists

I have to lose 19 frames here because I have to collect the third coin in this level. Previously, this level was missing a coin due to an oversight. If you collect a coin, you have to wait for it to be tallied on the level's ending screen before you can exit.

Lucky Draw

So remember when I said that version 1.2.1 fixes the RNG in this level? Yeah... that's about to be painfully relevant.
Previously, the RNG in this level was bugged. Basically, two RNG functions were conflicting with each other at the same time, causing many starting seeds to result in infinite loops that never finish the level. FractalFusion found that the fastest way to end input early and avoid an infinite loop would involve entering the level, exiting, and then entering it again on a specific frame, finishing the level in just 64 attempts.
However, since this is fixed in 1.2.1, we don't need to do this anymore, and can just enter the level and end input earlier, right? So I sent the TAS to FractalFusion again, who looked at the new RNG and then told me how many attempts it would take to beat the level. So how many attempts does it take? Remember, the odds of completing the level are roughly 1 in 296 000.
109 014.
That's actually a little better than I expected. According to my math, you have a ~30.8% chance of finishing the level before that many attempts. So how long does this take? From power on to the end of "Lucky Draw", this TAS takes...
9 days, 21 hours, & 28 minutes.
Yes. Almost 10 days. No, I'm not kidding. You could just find a starting seed that completes the level in 1 attempt, however, it would result in a slower final input. Plus, it's funnier if I do it this way. So clearly, the choice was obvious. Also, yes, I actually checked and made sure it beat the level on its own.
Edit: So I went back and saved 5 frames earlier in the TAS. This resulted in a different starting seed. The level now takes 109 017 attempts to finish, which should roughly be around the same time.

Comparison Table

LevelFrames SavedTotal Frames Saved
Start - Clutterfunk0f0f
Theory of Everything-1f-1f
Electroman Adventures - Clubstep0f-1f
Electrodynamix1f0f
Hexagon Force-5f-5f
Blast Processing - Geometrical Dominator0f-5f
Deadlocked5f0f
Fingerdash-3f-3f
Dash - ReTraY0f-3f
The Challenge-3f-6f
Dreamer-5f-11f
Ground to Space - Kappaclysm0f-11f
Sunshine4f-7f
Revolution133f126f
Lost in the Woods - Bloodbath but no0f126f
Rainbow Tylenol1f127f
A Pretty Easy Level - demon park0f127f
Death Moon-2f124f
DeCode0f124f
Dear Nostalgists-19f105f
Problematic - Fire Temple0f105f
Forest Temple - Final Input131f236f

Suggested Screenshots

  • (any frame the contains the final attempt number at the start of Lukcy Draw) - The other side... (technically not a frame in the movie file, but there's something so iconic and powerful about this)
  • 137197 - I HAVE DA POWAH!
  • 217658 - Whee!!
  • 155089 - The only new skip in the run (I would've done it slightly earlier, but the blocks aren't visible)
  • 144827 - Orbs? Who needs orbs?
  • 224868 - Still the hardest skip in the run

Comments

I'd like to give a huge special thanks to FractalFusion, who looked at the RNG and helped me out a bunch with this TAS. If you'd like to read their work, you can find it here. If this gets accepted, I'd like to apologize to the encoder in advance. Not quite as bad as Desert Bus? But still a big challenge. Sorry. >.< If it makes it any better, I'm most likely never going to TAS this category ever again. Let the chaos commence!
Now if you'll excuse me, I'm gonna go see this ad about free coins. It says I don't have to do anything, just stay in this dark room listening to Electroman Adventures for a bit. Can't be that bad, right? - Walgrey


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 16126
Location: 127.0.0.1
This topic is for the purpose of discussing #9649: Walgrey's NES Famidash "all levels, all coins" in 1:04:03.42
Walgrey
She/Her
Player (196)
Joined: 10/27/2022
Posts: 30
Location: Canada
Editor, Expert player (2136)
Joined: 6/15/2005
Posts: 3303
Just a quick post (which will probably be my last for this game). It won't be as long as my previous post. Here are all the files I used (Lua scripts, C(++) code and TXT files). The Lua script that analyzes the new RNG and determines how many attempts it takes for a value to succeed is also uploaded here. * The Lucky Draw randomness has changed in this version; it is simpler and the algorithm is detailed on the game page. * Due to the changes to the RNG in this version, it was expected that all starting RNG values for Lucky Draw would eventually terminate in a success. Indeed, Arcorann and I independently discovered that the max number of attempts required for all starting values to succeed is exactly 999541 attempts. Arcorann found all 123 values that give the max number of attempts. I didn't find all of them, but found that one of the values is 0xC4082ACE. * I found that there are exactly 14663 starting RNG values that result in a win on the first attempt. The smallest such value is 0x1EF46, or 126790. Unfortunately, the changes to the RNG mean that, without changing the starting seed, there is no fast "fastest completion" anymore, and "fastest completion" could take days, just like "fastest input". So I explored changing the starting seed of this TAS so that Lucky Draw succeeds on the very first attempt at the end of input. This TAS reaches Lucky Draw with a RNG value that is 218811 cycles after the starting seed. To do this, I made a backtracking program in C(++) that goes backwards from 0x1EF46 (the value above) 218811 cycles. Here's the problem (actually two): 1) There are calculations (around frames 637 and 120976 of the TAS) involving a random number of calls to the RNG routine. 2) There are places in the TAS (at least two of which are around frames 82890 and 112439) where the TAS lags. The value of the RNG affects these lag frames and can desync the TAS. Because of these two problems, and the general lack of interest in this game anymore, I have decided to give up and stop here. In case anyone else wants to explore changing the starting seed, I have calculated the following candidates for the starting seed (first 8 characters in each column are hex numbers - the value 0x0846795B is expected but it could be different because of problem #1 above):
61bc6e44 << 218821 cycles back
bc6e6d25
6e6d564c
6d566156
56617a19
617a268e
7a26a725
26a70712
a707083e
0708467b
0846795b << 218811 cycles back from 0x1EF46
46795d28
795d1bde
5d1bfd5d
1bfd65e9
fd65e237
65e275c9
e275e331
75e37bea
e37bcc61
7bcc2b2f
cc2b0dd7 << 218801 cycles back
Also note that in this version, the starting seed is taken from the address 0xFC (4 byte, little endian), with the unusual modification that all bytes with a value of 00 are converted to a value of 0xFD. None of the values I listed above have bytes with a value of 00, so this isn't a problem. All addresses are uninitialized at boot, so you'll need to change the boot RAM in NesHawk (NES -> Advanced Settings... -> Initial RAM pattern override).