Welcome the ZANAC Randomizer Beta! When I was a kid, ZANAC was always one of my favorite NES games. It introduced me to the shootemup genre.
To this day, it's fun to sit down and play a half hour or so. Even though it runs on the humble NES, it's written rather cleverly so that the
gameplay almost never slows down despite chaotic action on screen, and it features a primitive auto-scaling difficulty feature that makes it a
slightly different game each time.
I really enjoy the trend of randomizers applied to legacy games. To me, they're chances to experience the classic gameplay of each game
that's burned into my memory with all new scenarios. I thought, were there any old games that I'd like to re-experience that I could write
a randomizer for? I thought back to ZANAC, that simple little shootemup. I spent some time doing research online, reading about the NES programming
model and luckily stumbled upon some ZANAC techincal specs that, though incomplete, gave me just enough to start digging. It was a challenging
and fascinating task of reverse engineering. Before too long, I had many of the game's data structures mapped out and I could start poking around
changing things. After a little bit of programming elbow grease, I had a configurable, extendable base and that was the birth of the ZANAC Randomizer.
This randomizer can make the following modifications to the base game:
Shuffle level order
Shuffle background music
Randomly generate levels
Because the randomizer is in a beta state, it can be used to generate functional ROM images randomized with the available options, but you may rarely
see glitches, game crashes, or unbootable ("brick") ROMs. If you have any issues, please let me know so I can try to track the problems down. In
the majority of cases, just generating a new ROM will get you playing.
If you have comments, questions, or suggestions, send them to me at firstname.lastname@example.org and I'll check them out. I
cannot guarantee a timetable or schedule for any feature implementation as this is a side project and progress is entirely dictated by the availability
of free time.
Destroy the System!
Added archipelago greebler to ocean zones
Made ocean zones occur in Wasteland themes again
Reduced effin count in Space areas AGAIN
Reduced giza count and spawn rate in Temple areas
Some internal cleanup
Include Temple easter egg in generated ROMs
Fixed the hard lock that sometimes happened at level end (FINALLY!)
Fixed a bug that would cause junk tiles to appear instead of custom graphics
Added the option to shuffle the cores on ALC (the Area 12 fortresses)
For generated levels, fortress selection is now progressive, so regardless of area shuffling, fortresses should be getting roughly tougher as you go
Fortress aggression, that is how many cores are left before the fortress goes "berserk" and refuses to close any cores, is progressive too
The Randomizer will now try to avoid repeating fortresses used as bosses, preventing fighting the same fortress many times
Added another greebler to the Temple theme
Added a variant of the "T lattice" greeble used for Industrial (stock Area 1) levels in black zones
Tweaked ROM memory allocation slightly, using a psuedo-best fit first pass before deferring to the existing first fit selector
Fixed a small bug that was causing certain filenames to contain spaces
Overengineered file management for the frontend
Fixed a bug that could cause Octoplex (Area 4 boss) to render incorrectly
If not picking a seed explicitly, the frontend will now repeat randomization with new seeds until a valid ROM is produced. If you pick a seed manually but a valid ROM cannot be created
(which will happen if you are generating new levels and the Randomizer produces a set of levels which cannot fit into the ROM) you will get an error message. Changing the settings
or the seed is the solution to the problem.
Added new variants of existing fortresses. Fortresses are still theme-based which means that certain fortresses will only show up in certain areas. This is not ideal because
if area shuffling is enabled, you could fight a much angrier, tougher fortress in Area N than you could encounter in N+3. In the future, I want to make fortress selection
progression-based. That will be part of the someday fortress overhaul.
Added more custom fortresses and background elements
Added several new greebles to the Temple theme (stock Area 6) to make it far less boring.
More enhanced ROM defragmentation, which tangibly decreased the dead seed rate.
Changed Areas 5 and 7 to be considered separate themes so they are no longer so similar.
Added modern vulcan rule change
Added a new potential sprite for the ZANAC: the player ship from the NES port of Galaga
Made ROM defragmentation a little more aggressive, hopefully buying more usable space for level generation
Fixed a bug that was causing ROM space to be allocated twice, which may have been contributing to game crashes
Upgraded ROM memory allocation to sometimes try to shove things into bank 7 since it is always addressable, before using the precious space in other banks
Added some new custom, homemade graphics, including a few completely new fortresses, one variation on an existing fortress, and some new background features.
Fixed a bug in decoding very sparse macros that was causing a fortress (transposed Area 10 fortress 2) to render completely wrong
Added this Updates tab
Added screenshot viewer
Broke out options for palette shuffling
Added option to include Area 10 alternate music. It was always in the backend but now the UI exposes it!
You'll need to upload your base ZANAC ROM before randomizing. The randomimzation is applied to the exact file you upload and sent back to you.
Upload just the ROM itself, not a ZIPed or packaged version. Only a valid ZANAC base ROM will work; the ZANAC randomizer does not currently support
rerandomizing, nor can it randomize already hacked ROMs.
Configure which aspects of the game you want to randomize or adjust. By default, ROMS will always contain:
A tag on the title screen indicating the seed
A patch to fix the ARER typo and a small cleanup on the BONUS popup
A patch to prevent super guns from going away just beacuse you picked up a powerchip if you did not have maxed out guns already
The default high score is overwritten with the author's personal best
A potentially shuffled graphic set for the main menu
The GAME OVER message is replaced with a random snarky quip
The seed initializes the randomization so that for a given option set, changing the seed will result in a completely different ROM output. For the same options, the same seed will always produce
the same ROM image. You don't have to enter anything here; if you leave it blank, a seed is randomly assigned.
Shuffle area order
This option will randomize the order of the levels, with two caveats. The data structures inside ZANAC group the areas into three "blocks" which are Areas 1-4, Areas 5-8, and Areas 9-12. The
order of the areas inside each block will be randomized, but the blocks will still play out in order. In other words, if you enable this option, you will play through Areas 1 through 4 in some
random order, then Areas 5 through 8 in some random order, and finally Areas 9 through 12 in random order. The second caveat is that Areas 11 and 12 will always be Areas 11 and 12, because
Area 11 really only works as a penultimate challenge, and because of special data stored in 12 that tells the game engine that you're at the final boss. Background music is not affected by this option.
Shuffle area background music
This option will shuffle the background music for the levels. It simply shuffles the order of the music, so you will still each song the same number of times, just on different areas. If you are
also shuffling area ordering, that does not affect this. In other words, if Area 2 is shuffled to be the first Area, you are not necessarily going to hear the original Area 2 music for the first
Area.In keeping with the Randomizer's mindset that "Area 12 is special," Area 12's cool finale music remains with Area 12.
Include alternate Area 10 music in the mix
Sprites (Note that if you key off of the color of enemies (like whether a Logo is blue or yellow) you'll need to learn the new colors as you're playing!)
Fortress core interiors (Changes the color sequence of opened cores)
Shuffle ZANAC sprites
This option will shuffle the graphics used for the ZANAC fighter. A well-known trick in ZANAC is to hold A, B, and select when you hit start to begin, and you'll get an alternate ZANAC graphic.
If this option is enabled, the "base" ZANAC and "alternate" ZANAC sprites are randomized to be different graphics, including some visitors from other games. You are guaranteed to get two
different sprites for the base and alternate. I'd like to add more choices in the future.
Shuffle ALC cores
ALC is the final boss of ZANAC. Ancient spoiler alert! The final fight involves three successive fortress attacks, the first two of which involve traditional fortress cores. This option
will shuffle the cores that exist in the first battle, changing the dynamics of the battle slightly. The shuffle is performed as a swap, so all cores of a particular type will
change to the same new core type. It is possible for some cores to stay the same.
Starting lives: (255 or less)
Apply ZANAC Neo weapon rules: In ZANAC, if you pick up a different special weapon than the one you currently have, your weapon power level is reset to the base and you need to build it up again. In ZANAC NEO, switching
special weapons keeps your power level the same. Use this option if you'd like to apply that rule to ZANAC. This has a fun effect of totally changing your strategy, because if you know multiple
copies of the same special weapon are coming up soon, even if you don't care for it too much, you can use it to increase your overall weapon power and switch back to something better later. Finally
there is a reason to pick up those multiple weapons 2s at the beginning of the game!
Enable modern vulcan cannon: ZANAC's default gun is pretty weak. If you miss the first blue lander, without resorting to turbo on your controller, you will have
very little firepower to play with. This change removes the single-bullet level of the gun and increases the rate of fire and bullet speed of the gun at all levels. A fully powered up triple
gun in this mode is quite a deterrent, much like the standard vulcan cannon found in more modern shootemups. To balance out this greatly increased offensive power, the rate-of-fire upgrades
afforded by blue landers is removed, as are superguns. This changes the game significantly. If you are a purist, you will probably not like it. If you would like to mix it up a bit,
give it a shot. (Pun may or may not be intentional.)
Generate new levels
This option will cause the randomizer to generate 12 brand new ZANAC levels, so that it's like a a completely new game. This function is still in development so please note these
Levels are a little over two minutes in length. I'm trying to figure out the optimum length, which is a balancing act between producing an entertaining play experience
and fitting all of the data into the tight amount of memory available in the ROM.
There is currently only one fortress fight per level. Most of the original boss fortresses are used (and can appear in very different places and might be repeated,)
there are a few "remixes" to watch out for, and you may even see a custom one or two. SOMETIMES the Area 11 boss dies too quickly. The final boss sequence remains unchanged for now.
There are some graphical glitches on some levels or in some places, I know. Sometimes fortresses appear in the wrong place (like an asteroid fortress on top of a space panel)
and sometimes there are color artifacts.
Every level MAY have a miniboss fight, and they are not necessarily the same minibosses you fought in the original levels!
Areas 2 and 4, and 9 and 10 can be very similar to one another because of how the randomize generates levels thematically. Subtheming is something
I'd like to do at some point so that these level pairs which are normally similar are not overwhelmingly similar in a generated ROM.
The randomizer sometimes generates some pretty nefarious levels!