News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: Zanac Dissection Project  (Read 592 times)

ManxomeBromide

  • Newbie
  • *
  • Posts: 3
    • View Profile
Zanac Dissection Project
« on: May 24, 2020, 07:40:35 pm »
Zanac [NES] and Tyrian [PC] were the two biggest shmups in my childhood, and Tyrian owed a very large debt to Zanac that they acknowledged a few different ways. One of the biggest influences, though, is that Zanac's maps are huge, and apparently Tyrian's developers were shown Zanac by the publisher partway through development and told not to bother coming back until they could beat the standard it set.

For awhile now, I've been working on reverse-engineering how Zanac fits its data and behavior into as small a space as it does. Now that I've actually reached a point where I have at least one complete result, it's worth making the project "real" and giving it a thread here.

At the time of initial post, I've managed to reverse engineer its tile and map graphics formats enough that I can extract level maps as (50-70,000 pixel tall) PNGs.


(Above: the first three or four screens of level 1)

The immediately pending tasks are to turn my little experimental scripts into releasable map- and graphics-ripping tools, and to refine the notes that didn't make it into my graphics-hacking documents into Data Crystal tables.

Longer term, the map information also clearly influences gameplay in various ways and those caverns are still unexplored. Once that gets sorted out, map-editing tools become a real possibility.

iridium_ionizer

  • Jr. Member
  • **
  • Posts: 12
  • The universe is complicated. Get used to it.
    • View Profile
Re: Zanac Dissection Project
« Reply #1 on: May 25, 2020, 01:26:29 pm »
It looks like you are making a great start. There is a major dearth of utilities for many of the shmups, so I'm sure whatever you eventually get out will be much appreciated.
« Last Edit: May 25, 2020, 06:07:59 pm by iridium_ionizer »

8.bit.fan

  • Sr. Member
  • ****
  • Posts: 280
    • View Profile
    • 8-bit fan's Hacking Projects
Re: Zanac Dissection Project
« Reply #2 on: May 26, 2020, 04:07:25 pm »
Hi ManxomeBromide,

Great work on this! Zanac is my favorite SHUMP and I'll be following your progress on this!

Cheers! :thumbsup: :beer:

8-bit fan
In the year of 200X, a super robot named Mega Man...
http://www.8bitfan.info/
FF4 Ultima Discord: https://discord.gg/4MqjwJt

ManxomeBromide

  • Newbie
  • *
  • Posts: 3
    • View Profile
Re: Zanac Dissection Project
« Reply #3 on: May 27, 2020, 03:05:37 am »
Thanks for the kind words. I've uploaded a description of the format to the documents section already, and I've been working on converting the messy and temporary scripts and programs I built to produce the initial maps into a more comprehensive and coherent set of tools.

A big part of that means producing things that output the "atlas" of pieces that Zanac uses to generate its graphics. I've still got some kinks to work out of that, but I've also got some progress in places that seem to have worked.

Here's a dump of the sprite graphics, for instance, organized into the 8x16 sprites that seem to be used exclusively:



And here's the fundamental map unit that generates that green metalwork under the rocks in my OP screenshot:



Compile also tried to 'sign its name' into the middle of level 6, but unfortunately, they didn't quite get this right:



"COW PILE" is not really the right message to send at this point, I don't think.  >:D

ManxomeBromide

  • Newbie
  • *
  • Posts: 3
    • View Profile
Re: Zanac Dissection Project
« Reply #4 on: June 03, 2020, 09:47:53 pm »
I'm just about done with the first set of tools. What remains is to compare the results against what was produced by my informal scripts, do some more spot-checks against the game itself, and then package up the source code and some ready-to-run executables along with a pregenerated complete graphics atlas. I expect that utility will be ready to release early next week sometime.

But this isn't really a forum for release announcements, now is it? The fun part are the missteps we make along the way, and the funny things that can happen as they do. As it happens, one of the mistakes I made ended up treating a command whose true meaning I haven't fully worked out yet (map command seven with a zero as the first control byte; it's some kind of boss logic-related abort or reset code) as meaning "repeat the immediately previous map command."

This resulted in a diagonal row of pillars smashing down across the end of Area 6 and wiping out a big fraction of a miniboss fortress.