Tool-assisted game movies
When human skills are just not enough

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

Console: Super NES
Game name: Zombies Ate My Neighbors
Game version: unknown
ROM filename: Zombies Ate My Neighbors (USA)
Emulator: Bizhawk 1.11.6
Movie length: 22:50.71
FrameCount: 82378
Re-record count: 65479
Author's real name:
Author's nickname: Meerkov
Submitter: Meerkov
Submitted at: 2016-07-26 18:13:39
Text last edited at: 2016-08-07 06:00:16
Text last edited by: feos
Download: Download (34547 bytes)
Status: published
Click to view the actual publication
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:
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.

(Link to video)

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:

# Level MechChicken Allbeert Meerkov Meerkov v MechChicken Meerkov v Allbeert
1 Zombie Panic 1831 2088 1954 -123 134
2 Evening Of The Undead 552 592 208 344 384
3 Terror In Aisle Five 762 770 428 334 342
4 Chainsaw HedgeMaze Mayhem 718 726 721 -3 5
5 Weird Kids On The Block 634 768 644 -10 144
6 Pyramid Of Fear 668 579 532 136 47
7 Dr. Tongue's Castle Of Terror 1070 790 778 292 12
8 Titanic Toddler 862 828 452 410 376
9 Toxic Terrors 758 704 418 340 286
10 No Assembly Required 881 916 450 431 466
11 Weeds Gone Bad 584 578 320 264 258
12 Mars Needs Cheerleaders 796 796 602 194 194
13 Chopping Mall 697 557 422 275 135
14 Seven Meals For Seven Zombies 1075 724 562 513 162
15 Dinner On Monster Island 248 281 305 -57 -24
16 Ants 1712 1444 1174 538 270
17 Office Of The Doomed 378 386 378 0 8
18 Squidmen Of The Deep 1172 1050 896 276 154
19 Nightmare On Terror Street 806 1064 470 336 594
20 Invasion Of The Snakeoids 2500 1734 1147 1353 587
21 The Day The Earth Ran Away 1160 634 656 504 -22
22 Revenge Of Dr. Tongue 1732 1749 602 1130 1147
23 The Caves Of Mystery 658 736 607 51 129
24 Warehouse Of The Evil Dolls 1076 656 656 420 0
25 Look Who's Shopping 1048 738 608 440 130
26 Where The Red Fern Growls 302 300 296 6 4
27 Dances With Werewolves 452 468 320 132 148
28 Mark Of The Vampire 1983 1040 466 1517 574
29 Zombie House Party 1116 1134 1329 -213 -195
30 The Horror Of Floor Thirteen 330 344 407 -77 -63
31 Look Who's Coming To Dinner 342 460 260 82 200
32 Giant Ant Farm 1980 959 648 1332 311
33 Fish And Crypts 670 788 522 148 266
34 I Was A Chainsaw Maniac 352 324 218 134 106
35 Boardwalk Of Terrors 600 514 280 320 234
36 Monster Phobia 3110 2336 2026 1084 310
37 Labyrinth Of Horrors 714 399 394 320 5
38 Monsters Of The Blue Lagoon 775 758 742 33 16
39 Destroy All Vampires 442 434 294 148 140
40 Pyramid Of Fear Two 1208 1231 671 537 560
41 Martians Go Home! 992 724 604 388 120
42 Spikes 374 338 218 156 120
43 Super Fund Cleanup Site 1104 824 674 430 150
44 The Curse Of Dr. Tongue 830 524 468 362 56
45 Danger In Picnic Park 715 872 715 0 157
46 Day Of The Chainsaw 1186 500 492 694 8
47 Gridiron Terror 1798 556 524 1274 32
48 Curse Of The Tongue 3442 4362 3345 97 1017
Cr Monsters Among Us 1053 683 548 505 135
= Total Time 111048 92277 82377 Saved 28671 Saved 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 Stage Meerkov v MechChicken Meerkov v Allbeert
1 44 42
2 -9 9
3 -9 6
4 4 -19
5 -36 -8
6 58 110
Total Saved 52 140
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 Stage Meerkov v MechChicken Meerkov v Allbeert
Spider 1 23 3
Spider 2 -24 14
Spider 3 9 33
Spider 4 -28 11
Spider 5 -16 86
Spider 6 -36 123
Face 1 -13 -58
Face 2 65 101
Face 3 -22 -19
Face 4 33 31
Total Saved 203 1024

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:

Menu Load Time:

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



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 ID Item Name
3 none
12 gun
13 extinguisher
15 weedwacker
16 holy symbol
17 bazooka
18 soda
19 tomato
20 popsicles
22 plates
23 silverware
33 key
34 ~Shoe~
35 Red Potion
36 Blue Potion
37 Mystery Potion
40 Medkit
41 Pandora's Box
42 Skeleton Key
43 Clown
47 gold
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.

Similar submissions (by title and categories where applicable):