Submission #5182: Meerkov's SNES Zombies Ate My Neighbors in 22:50.71

System Super NES Emulator Bizhawk 1.11.6
Game Version unknown Frame Count 82378
ROM Filename Zombies Ate My Neighbors (USA) Frame Rate 60.0988138974405
Branch Rerecord Count 65479
Unknown Authors Meerkov
Game Zombies Ate My Neighbors
Submitted by Meerkov on 7/26/2016 6:13:39 PM

Submission Comments
In this action horror game, one girl must kill 9 of her neighbors in order to go on the shoe collecting spree of a lifetime. No shoes are safe in Zombies Ate My Neighbors!
This is a 1 player, any% run aiming for fastest total time.
My main strategy was to use heavy RNG manipulation to get speed shoes pretty much everywhere, and to use a speed shoe (2x movement speed) on every level.
For comparison, I compare my level times with MechChicken's 2P any%, and Allbeert's 1P any%. In 2P, you can multitask and thus collect items and kill bosses slightly faster. However, in 2P you'd also need to collect 2x the items as the 1P run; a herculean task to be sure. As the times below will show, a 2P run will not be able to compete with a 1P run, and the 2nd character is basically just dead weight, as 1P can do nearly everything faster.
Note: Original submission had the labels mixed up. Negative number for a comparison means that Meerkov was slower than the previous run.

Level breakdown:

#LevelMechChickenAllbeertMeerkovMeerkov v MechChickenMeerkov v Allbeert
1Zombie Panic183120881954-123134
2Evening Of The Undead552592208344384
3Terror In Aisle Five762770428334342
4Chainsaw HedgeMaze Mayhem718726721-35
5Weird Kids On The Block634768644-10144
6Pyramid Of Fear66857953213647
7Dr. Tongue's Castle Of Terror107079077829212
8Titanic Toddler862828452410376
9Toxic Terrors758704418340286
10No Assembly Required881916450431466
11Weeds Gone Bad584578320264258
12Mars Needs Cheerleaders796796602194194
13Chopping Mall697557422275135
14Seven Meals For Seven Zombies1075724562513162
15Dinner On Monster Island248281305-57-24
16Ants171214441174538270
17Office Of The Doomed37838637808
18Squidmen Of The Deep11721050896276154
19Nightmare On Terror Street8061064470336594
20Invasion Of The Snakeoids2500173411471353587
21The Day The Earth Ran Away1160634656504-22
22Revenge Of Dr. Tongue1732174960211301147
23The Caves Of Mystery65873660751129
24Warehouse Of The Evil Dolls10766566564200
25Look Who's Shopping1048738608440130
26Where The Red Fern Growls30230029664
27Dances With Werewolves452468320132148
28Mark Of The Vampire198310404661517574
29Zombie House Party111611341329-213-195
30The Horror Of Floor Thirteen330344407-77-63
31Look Who's Coming To Dinner34246026082200
32Giant Ant Farm19809596481332311
33Fish And Crypts670788522148266
34I Was A Chainsaw Maniac352324218134106
35Boardwalk Of Terrors600514280320234
36Monster Phobia3110233620261084310
37Labyrinth Of Horrors7143993943205
38Monsters Of The Blue Lagoon7757587423316
39Destroy All Vampires442434294148140
40Pyramid Of Fear Two12081231671537560
41Martians Go Home!992724604388120
42Spikes374338218156120
43Super Fund Cleanup Site1104824674430150
44The Curse Of Dr. Tongue83052446836256
45Danger In Picnic Park7158727150157
46Day Of The Chainsaw11865004926948
47Gridiron Terror1798556524127432
48Curse Of The Tongue344243623345971017
CrMonsters Among Us1053683548505135
=Total Time1110489227782377Saved 28671Saved 9900
Note: The level breakdown is counted from first input of the level to when the character exits the door. As mentioned in Allbeert's run, MechChicken's run has a lot of time during the score screens that can be skipped, so I decided to only break out the gameplay time to give a better comparison between the three runs. The final row is for the entire run including score screens.

Detailed Comments:

Note: I made changes to every single level, but I decided to only comment on the decisions I thought were unique. Levels not mentioned here, generally I either picked up an extra speedshoe, or used a speedshoe where one wasn't used before.

Level 1: Zombie Panic

I did major route changes for some levels in this run. After the 5th victim dies, I'm 54 frames ahead. By the 8th victim (the dog) I'm 278 frames ahead. However, I make a mistake by not luring the zombie tighter and instead going for a chest first. I end the level only 135 frames ahead, squandering two seconds from what I could have gotten :/.
My reroute took me to the pool before the baby in the house. Because of the speedshoe, this is much faster than taking the trampolines. Additionally, because I lure the zombie to kill the baby instead of saving it, I reap some addition time in level 2.

Level 2: Evening Of The Undead

With only 1 survivor to save, this is now the shortest level in the game, with only 199 frames of input.

Level 3: Terror In Aisle Five

At this point, I only have 1 shoe to spend on either L3 or L4. I spend it here, it's very slightly better than level 4; though I tried both.

Level 5: Weird Kids On The Block

Our first shopping spree. Future runs will want to consider which chests through the entire game are worth picking up. The paths I take are pretty reasonable, but there might be a chest that's faster to reach somewhere.

Level 7: Dr. Tongue's Castle Of Terror

I use a glitch that allows me to walk on fire. Even though I used 1 Fire Extinguisher ammo, it is possible to walk over the fire without extinguishing it at all. It seems to depend on the frame of animation the fire is on to help your hitbox walk right past it.

Level 10: No Assembly Required

I take a faster path, which also uses less bazooka.

Level 11: Weeds Gone Bad

By rapidly pressing and unpressing buttons, we keep the invulnerability to plants by using the weedwacker, but never actually attack anything or spend any ammo.

Level 12: Mars Needs Cheerleaders

I take a shorter route for shopping than collecting the shoes on the field.

Level 20: Invasion Of The Snakeoids

Snakoids are the only enemy in the game whose AI is based directly on the player input. In my run, I have to leave in 2P's input because removing it would actually desync the run otherwise. This actually means that using 2P's input, you can manipulate the RNG on levels with Snakoids, which is great because there are tons of items to pick up here, and it was pretty troublesome.

Level 22: Revenge Of Dr. Tongue

I get huge gains on this level, because I don't collect the flamethrower. This cuts some 15 seconds off my time. The only benefit will be in fighting the bosses, however I show in my run that the weedwhacker is just as good, though more difficult to fight with because of how close you need to get.

Level 28: Mark Of The Vampire

Skipped the keys and the 3000 points in gold. We will be aiming for <40k final score.

Level 29: Zombie House Party

Shopping! We take a totally new route that gets us 13 items. Future runs may need to weigh the benefit of looting more on this level, or e.g. taking a slightly different route (e.g. for 11 items) if there are faster chests to get in other levels instead.

Level 30: The Horror Of Floor Thirteen

By shopping for a few chests first, I find the spiders were not as aggressive in killing the cheerleader. We stride right in and save her.

Level 32: Giant Ant Farm

We take a new path, skipping all skeleton keys.

Level 35: Boardwalk Of Terrors

Reroute, which costs 1 less bazooka.

Level 36: Monster Phobia

Without the flamethrower, or the second player, we need to use a new strategy. Soda cans do maximum 6 per hit. Silverware caps out at 8 damage. Weed wacker deals 1-2 damage based on where you hit the spider. It's fairly hard to get maximum efficiency out of the weedwacker because the spider moves around and has a lot of attacks to avoid. Weedwacker will hit every 3 frames, but other weapons have ~27 frame recharge, if you attack while moving. The boss has 6 health bars: for 21, 11, 11, 11, 11, and 36 hp respectively. Each bar is independent.
We use a mix of the three weapons to kill the boss faster than the original run with two players(!). Having the flamethrower is clearly not a big advantage. Shown below are frames saved, relative to the other two runs:
Boss StageMeerkov v MechChickenMeerkov v Allbeert
14442
2-99
3-96
44-19
5-36-8
658110
Total Saved52140
I drop my arms at the door, but I come back for them and leave the level.

Level 37: Labyrinth Of Horrors

I try taking damage to save time as suggested in the first run. It's not faster unfortunately.

Level 43: Super Fund Cleanup Site

New path. Jumping from the nearest point is a tiny bit faster than jumping closer to the victim, and also prevents the swampmen from getting near him.

Level 47: Gridiron Terror

Fun fact, you can actually get a few pixel boost by running into the football players so they launch you forwards.

Level 48: Curse Of The Tongue

I too pick up the skeleton key at the start of the level (only 60 frames to pick it up, very good!). Unfortunately this spawns the vampire. I'm not afraid of no stinking blood sucker, so I trigger the boss asap, cutting more than a second from the MechChicken's run, and over 10 seconds from Allbeert's run.
Why did I choose to fight the boss? Well, at first I really didn't want to. It's a lot of very careful frame precision to do boss fights like this, which takes a lot of tries. I tried to be clever and hit 40k points on level 47, allowing me to save the second victim on 48 and kill the first victim with a vampire (you die to the boss, and the vampire will float over the wall and kill the cheerleader, so you don't need to save her). Unfortunately, this was actually almost identical to the 2P run in terms of frame count. I figured, if an optimal run to the second victim wasn't actually faster (and in fact would be slower because the "Extra Victim Bonus" message on 47), I could save some frames by fighting more efficiently instead, as I did on Monster Phobia. It's pretty similar in time however, it might be worth considering going for the 2nd victim just because fighting the spider boss is a pain.
The spider boss in this level has a lot of health. The bars are 21, 21, 21, 21, 21, 41, or just about 146 health compared to the original 101.
I basically ignore the vampire. He attacks every so often, but if you are careful you can kill the bats with the weedwacker. In form 2, I remember to use the Clown to distract the vampire so he stops bothering me.
In form 2, we fight a giant floating head. It has 4 health bars, 36, 36, 36, 36, total of 144 health. Silverware only does 1 damage now, and soda doesn't do anything. Our friend the weedwacker however is still at full power, dealing 1-2 damage every 3 frames. And because the AI has a nice pattern of charging and then retreating, we can get into an easy rhythm of mowing him down.
Boss StageMeerkov v MechChickenMeerkov v Allbeert
Spider 1233
Spider 2-2414
Spider 3933
Spider 4-2811
Spider 5-1686
Spider 6-36123
Face 1-13-58
Face 265101
Face 3-22-19
Face 43331
Total Saved2031024

Winner screen:

It costs 6 frames per enemy killed. I might have been able to skip killing one or two, but often I weighed the cost of trying to walk around the enemies and determined it's not really worth getting worried about, because it's nearly identical. I killed 3 more enemies, for 18 more frames, than Allbeert.

Credits Level:

And we use the final speed shoe we saved!

Possible Improvements:

Allbeert's run, for some reason, spends at least 6 frames less than mine on almost every level load. The only thing I can guess is that something about the items I picked up is causing longer level load times compared to the other run. ~5 seconds.

Level 1:

Get Shoe instead of Bazooka (thus unable to open second door), control the 9th and 10th victims more carefully. ~2 seconds

All levels:

Better RNG on chests. While I did a pretty good job, there is always room for improvement. Several of the pick ups required waiting 20+ frames. Since we pick up over 40 items, this could work out to ~3 seconds.

Snakoid Manipulation:

It turns out, the Snakoid AI is based partially on what buttons BOTH controllers are pressing. I didn't realize this until I finished. You could use this to manipulate level 20's RNG for some savings.

Item Routing:

I picked up items and used them all, but I can't be sure these were the optimal items to collect. Especially on level 29, there are many possible paths for collecting items. Choosing a slightly different path, or one that gets an extra Shoe or two may be able to save ~3 seconds.

Saving the 2nd Victim on the last level:

I'm pretty sure I've proven saving the second victim isn't efficient, however that hinges on tricking the vampire to kill the cheerleader being too slow. If someone had a faster way than dying, this might be viable.

Boss Fights:

I was pretty solid on the boss fights, but better RNG can help a lot. ~2 seconds

Killing Monsters:

Killing monsters is bad. ~0.5 seconds

Appendix:

HOW DOES RNG EVEN WORK

The RNG is 2 bytes located at 0x24 and 0x25. 0x25 is the "high order" byte, and the RNG ranges from 0-65535. To get the value, just take memory(0x25) * 256 + memory(0x24).
Every frame of the game (including menus) the RNG will increment by 1. If it gets to the maximum, it rolls back over to 0 again. In addition, every time an event needs a random number, it reads the RNG value, and then adds some extra number back in. It does this so you don't get 5 zombies on screen reenacting Thriller, because they are no longer getting the same random numbers.
Item IDItem Name
3none
12gun
13extinguisher
15weedwacker
16holy symbol
17bazooka
18soda
19tomato
20popsicles
22plates
23silverware
33key
34~Shoe~
35Red Potion
36Blue Potion
37Mystery Potion
40Medkit
41Pandora's Box
42Skeleton Key
43Clown
47gold
48$$
I then just had a script poke the memory address for the RNG, opened a chest, and record which item spawned for all 65536 possible RNG values. Items we care about have low spawn rates. Shoes are only 1/128, and Skeleton Keys are 1/256, fairly close to the estimates of 1% and 0.5% given in various faqs.
Now you too have the power to manipulate the RNG. Go Forth and TAS.

Why did you lose frames?

I got some questions asking why I had lost some frames but didn't explain in the level break down. The truth is, I thought it was too boring for the main post! So I'll add it to the appendix here. I came up short on four levels compared to Allbeert's run, which looks like 304 frames slower. Why is that? Actually it's not that exciting. Because I need to pick up speed shoes so many places (~70 chests over the course of the run to get all those shoes and keys!) some of the time I spend some frames early on to get bigger savings later.
The shortest level was 199 frames of input, and a shoe is 2x movement speed. I used this to get a guideline estimate that a shoe is worth a minimum of 100 frames. In every practical situation it's worth more (or on bosses which I need to I can fight efficiently with a melee weapon). Skeleton Keys are a necessity for some major shortcuts, but we can just say they are also worth at least 100 frames (definitely more, however, because you can skip mini-bosses).

15: Dinner on Monster Island

I lost 24 frames here to pick up an item. 24 is much lower than 100, so this is an obvious choice for a chest to get.

21: The Day the Earth Ran Away

I lose 22 frames to pick up an item. Again, worth it.

29: Zombie House Party

I pick up 11 items, but Allbeert only got 4. Each shoe is worth 100 frames, and skeleton keys are worth more than that. Let's be generous and assume that we could have collected the key later instead of a shoe. 11 shoes would be worth 700+ frames. We are down -195 frames, a net savings of over 495+ frames by slowing down to shop here.

30: The Horror Of Floor Thirteen

I pick up 4 items instead of just 1 item. That's 300+ frames of additional savings, and it only cost me -63 frames compared to Allbeert's run.

Why do you slow down in random places?

If I stop, or backtrack for a few steps for seemingly no reason, what I'm doing is manipulating the RNG. By causing enemies to spawn or despawn by moving the camera, among other things, you can get slightly better RNG. A good example is Level 5 Weird Kids on the Block, where I need to pick up 6 chests, and sometimes the fastest way to advance the RNG to a good number is actually to move in a very careful, but funky looking pattern.

Samsara: Judging.
Samsara: Really, all these 1-player ZAMN submissions are making me crave an update to the 2-player "all victims saved" run. If someone does that before the end of the year, they will be my hero forever.
Despite a couple small mistakes, the routing looks clean and everything seems tighter overall. Given the better audience reception, I think we can accept this to Moons as an improvement to the published run.
...but please someone do all victims saved next
Samsara: Actually hang on, I need to think about obsoletion chains real quick.
Samsara: After some general discussion and some personal thought, I'm going to accept this as an improvement to both the published run and the 2p any% run. The reasoning behind this is mostly because of the 2p run falling off in entertainment value since its publication, with only 4 ratings (thus, low interest) and an average entertainment of 6.1 (lower than what we'd expect from a Moon run). We can't push it down to Vault since it's not eligible, so I think it's safe to let it be obsoleted for now. If a much more optimized 2p run comes along and it gets good enough feedback, then we can bring the 2p any% category back, though if that happens I'd like to see some more discussion on the merits of having both 1p and 2p any% runs.
feos: Pub.

Last Edited by on 1/1/2022 6:13 PM
Page History Latest diff