My lizard is the Lizard of Double Wide
Over the past several days, I've been doing a rather extensive overhaul of the Lizard engine. I'd like to share with you two rather major changes that will be a big improvement to the game.
Before I begin I'd like to make a couple of reminders:
1. If you'd like to see Lizard on Steam, please vote for it on Steam Greenlight: http://steamcommunity.com/sharedfiles/filedetails/?id=333026097
2. If you haven't yet filled out your backer survey, please do so. You will be able to change your address up until we are ready to ship, so filling out the survey now will not permanently lock-in your address. I do, however, need your answers to the survey questions by January 1st. If not received by then, I cannot guarantee a choice of cartridge colour, or inclusion of your name in the printed documentation.
ROM size doubled from 256k to 512k
Inside an NES cartridge, there are ROM chips to hold the game's data, but for most games there is additional circuitry commonly known as a "mapper". The mapper is necessary, because the 6502 CPU inside the NES can only see 32k of ROM at a time. If you want to make a game bigger than this size, you need something in the cartridge to "map" the larger ROM into that 32k window that the CPU can use. This is a process known as banking, or paging. There are all sorts of ways you can extend the capabilities of the NES with extra stuff inside the cartridge, but the most important need was for larger ROM size.
For my game, I deliberately chose a mapper that was simple in design, and easy to build. I also wanted to use an existing mapper, so that current emulators would support it without having to be updated. I chose a mapper known as BNROM, which is the name taken from the PCB used in its cartridge. This mapper was only used in one game, Deadly Towers, but because it is a very simple mapper and extremely similar to the more popular AxROM mapper (used in Battletoads, Marble Madness, Wizards & Warriors, etc.), it is very well supported across emulators.
The actual BNROM board used by Deadly Towers only had 128k of ROM, using 2 bits of a latch to select a 32k page from the ROM (here, each bit doubles the available ROM), but the smallest standard latch chip has 4-bits. Because of this, it's easy to extend the design of this mapper to support 256k (3-bit) or 512k (4-bit) ROM sizes as well. You don't need to change any components, just connect the 2 unused bits from the existing latch. This is why emulators will typically support 512k or more for the BNROM mapper.
Originally I had decided to target a 256k ROM size. I planned the game world around this size; I would be able to fit about 240 rooms, along with all the code, music, and graphics into this space. It seemed a pretty reasonable scope for the game, but after I'd finished the demo and had a better idea of how each room feels, it started to feel a little small to me. I had reserved the 512k option from the beginning (I always try to have a backup plan), but I was wary about using it, partly because I didn't want to take on all the extra content it would permit. However, after receiving roughly 50% overfunding for this project, I think it's feasible.
So... with this change the Lizard world is more or less going to be double the original planned size. Most of the extra work involved is just laying out rooms. This doesn't mean there will be new bosses, or stuff like that, just more things to do, and more space to play in: a longer adventure.
Rooms now have two sizes: single and double-wide
From the beginning, I wanted to have a grid of rooms. I discussed the strong influence of Prince of Persia in an earlier update, but I like the possibilities and consequences of this design and how it affects exploration and discovery.
In opposition to this, as I worked on the way the Lizard character moves, I eventually settled on a character that can make fairly wide horizontal leaps, and as I was laying out rooms they did start to feel a little cramped to me. I started thinking about horizontal scrolling rooms to give the player more space to move around, to create opportunities for better platforming gameplay, but there are a lot of technical consequences to making a change like that. Aside from the difficulty of implementing it, it also didn't fit well with my existing plans for the grid of rooms. There really wasn't anywhere to fit it into the world plan.
After doubling the ROM size, it suddenly looked a lot more feasible. I settled on a solution that will permit scrolling rooms that are two screens wide. The extra space in the world provides me with a way to fit them into my plans now, and by making them exactly two screens wide they can still fit into the grid, and keep everything I like about that part of the design.
The restriction to just two screens wide is mostly for technical reasons (e.g. the NES has exactly two screens worth of internal video RAM), but after implementing it I found that it's more than enough to shake off the cramped feeling I had with single screen rooms. I think this will make a big improvement to the way Lizard plays. You can see how it looks in the video above.
It wasn't trivial. Basically everything that moves required an upgrade from 8-bit to 16-bit calculations, just on the horizontal axis. For the PC version it wasn't really that difficult, but on an 8-bit computer like the NES you have to synthesize 16-bit operations by chaining together 8-bit ones. It was a bit involved, but totally worth it!
One thing I had to give up, though, was the pause panel that slides up from the bottom of the screen when you press START. It's technically incompatible with the horizontal scrolling, so I will have to replace it with a more blocky animation. It may not look like it, but the sliding pause overlay is probably the most technically advanced bit of code in the demo. It was fun to implement, I suppose, but that's no reason to keep it around.
So... a lot of things went double-wide in this overhaul. The ROM is twice as wide. The rooms are twice as wide. The calculations are twice as wide. My lizard is the Lizard of Double Wide!
Another project you may be interested in...
Before I go, I'd like to give one more mention to another game project that I'm very interested in. Sorry if you've already seen it, but it's only got one day left in its campaign, and it still has a long way to go for funding.
Americana Dawn is a 16-bit inspired RPG with a rather unique setting, spanning 200 years of early American history. It will feature a beautiful visual style, wonderful soundtrack, exploration and turn-based combat as well as large scale strategic battles.
Take a look!