After about 4 years of on and off work, the 2player all victims saved TAS of Zombies ate My Neighbors is finally finished!
Game objectives
- Emulator used: Bizhawk 2.4
- 100% completion (All victims saved)
- Contains speed/entertainment tradeoffs
- Heavy luck manipulation
- Forgoes time-saving damage
- 2 players
Emulator version
Unfortunately, the libsnes core that bizhawk uses was updated between versions 1.12.1 and 1.12.2, which causes this movie to unsync. Basically, they changed way the lag frames are calculated, and although I initially thought I could just shift the inputs by a few frames (per level), it turns out this only works for about 2 levels before the optimized movement (see the movement section below) shifts by one frame, and that completely kills the run from then on. So I could not port this movie into later version because I would have had to redo the whole thing.
Movement
There are 3 movement speeds: normal, swimming, and speed-shoes.
In normal movement, the character moves 2 pixels per frame. However, when moving diagonally, the movement speed alternates between 1 and 2 pixels every frame. We can abuse this to keep a constant 2 pixels per frame while still moving somewhat diagonally. This is used extensively throughout the run.
Speed-shoes movement is the same as normal, but doubled. So it's 4 pixels per frame.
Swimming is 1 pixel per frame in every direction including diagonal, so there's not much to do here.
The overall strategy is to only use diagonal movement when strictly needed.
Speed shoes
Double the speed means half the time, so the whole run is centered about using speed shoes as much as possible, sometimes multiple times per level.
Upon activating the shoes, the character gets 850 frames of doubled speed, which amounts to roughly 14 seconds. There are a few circumstances where this time can be extended. The timer that counts down from 850 pauses whenever the character gets hit, is in the recoil animation during a bazooka shot, or is in the middle of jumping. I sometimes use this to maximize the effectiveness of the speed shoes.
RNG
The RNG is a 2 byte counter that also increments by a random (?) amount every time it is called. Thanks to Meerkov's script, I got the whole list of items you get at every value, and used this extensively throughout.
Although most of the time I'll try to get directly speed shoes from the boxes, sometimes the RNG sequence didn't cooperate. In those cases I either skipped the box or settle for a mystery potion, which I will use for speed shoes with the caveat that there is the extra time spent in the animation of the characters drinking the potion.
Routing
In 2player mode, if any player gets more victims than the other, you get an aptly named "More victims saved bonus". Which wastes some time, to avoid that, every level was routed to make sure that each character saves 5 victims. The exception to this are the last 2 levels because they don't have a score screen.
In addition to this, every 40k points, the player will get an extra life, and once the life slots are full, they will get a "Perfect player bonus", which is quite long. Since saving victims already gives a lot of points, it is not possible to avoid this.
Misc
In level 22b, one of the victims had to die because they are behind a solid wall and it is impossible to save them.
You can use bazooka shots to "jump" over spikes and fires. Unfortunately I only discovered this in the later levels.
This movie is roughly 16 minutes faster than the one currently published.
I'll comment on levels where something might need clarification
Level 1
I absolutely need the bazooka here to be able to access level 1b. Also got lucky with the RNG and was able to get shoes and skeleton key.
Level 1b
The skeleton key I got in the previous level allows me to avoid a huge detour
Level 5
This is I believe the worst level in the whole run. I had to basically keep both characters in a very weird movement pattern to have a very nice RNG sequence for the next few boxes. After this level I decided that I wouldn't wait more than 30~ frames to get the item I want, even though in theory I will still save time waiting longer. This can be considered a speed-entertainment tradeoff, since I figured it will be a boring run to spend significant amount of time waiting for the proper drop every time.
Level 6
If you pay attention you'll notice I actually don't pick up the shoes near the end of the level. This is another unfortunate mistake I didn't realize until later. I did come back to try to fix it, but that extra frame completely changed the RNG sequence and I ended up losing time. So I left it as is.
Level 11
This game freezes animation when input is pressed on alternating frames. This is abused to actually avoid spending ammo while going through the weeds.
Level 18
In levels with lots of water it's faster to just take the ghost potion, because the swimming is too slow and the jumping in and out wastes a lot of time.
Level 19
Not really sure what caused the visual glitch at the end of the level.
Level 22
In this level I abuse the bazooka shots recoil to keep the speed shoes as long as possible. (I didn't know at the time you could jump over the spikes, so there was some waste there ...)
The flamethrower is also picked up here besides the bonus level item.
Level 22b
This level is under a timer since we have to wait for the tourists to die and become werewolves. I also had to kill one of the frankenstein monsters because the sprite slots were full and when they are, the tourists never transform.
Level 26
This level is a really good example of having the characters take different routes. It might look awkward but it saves a lot of time over having them together.
Level 28
Here I go over the skeleton key area first to spawn the vampires and prevent the tourists in the top right of the level from transforming. Normally they are not meant to be saved, but we can abuse this glitch to do it.
Level 30
Near the end of the level I take advantage of the fact that the recoil from the bazooka is faster than normal speed.
Level 33
Unfortunate level where knowing I could jump over fire would have been nice.
Level 36
I don't really know what happened to the music here.
The fight went pretty well considering I needed to stay a bit too close for Zeke to be efficient with the weedwacker.
Level 37
On this level I finally realized you could jump over the spikes :)
Level 41
Significant detours here to pick up shoes and mystery potions, but I think it was all worth it since I ended up using them all
Level 42
This was my favorite level to route and execute.
Level 46
In the score screen, player 2 gets the "Perfect player bonus", but player 1 gets all the points...
Level 48
I find the fight was a bit slow, even considering the spider has more health than on level 36. The RNG patterns were all over the place, and the vampire was pretty annoying.
Head fight was pretty uneventful, except for the last pattern that I believe cost me a bit of time.
Killcount screen
Most of the enemies I killed throughout the game were for RNG purposes, or it was in cases where going around them would have taken more than 6 frames. There are a few I also killed by accident and didn't realize until later.
Possible improvements
I believe most of the improvements that could be done to this movie are really down to how much one is willing to fight against RNG. There were a few places where I got really unlucky, and maybe could have been improved if I banged my head against the wall more :)
Closing words
Big thanks to all the previous TASers of this game: MechChicken, Walker Boh, and Meerkov.
And shoutouts to the worm bois: accelerator-kun, aki-kun, nrg-kun, ruizu-kun, exiled worm boi baka-kun, and ded worm boi paul-kun.
Suggested Screenshots
fsvgm777: Replaced submission file with one that syncs on BizHawk 2.4, adding 5.84 seconds to the run time as a result.