Hi Graham, it’s no problem at all to ask questions and plus I may learn a couple new tricks as well through these conversions. These are the types of questions I've asked myself when trying to solve the issue of char-space, as I call it. I have bounced around over the years from many different methods to conserve char-space. When I first started working on the game there were no sprite counters and very limited character editing commands. Originally I had just used whole .CHR files load for each stage's enemies and terrain. But as new commands were implemented to MegaZeux to allow for more control over the character board in robotics I was able to achieve a variety of solutions to my biggest problem with char-space limitations.
I did at one point create an event whereas if an enemy was 10 spaces out of the viewport, it would disappear and its graphics would change into the next enemy coming up into view. I decided to get rid of this idea since I really wanted to have the ability to have many different kinds of enemies on screen at the same time, bumping into each other.
Toying with a few ideas, I ended up with sticking with a base template that would contain all text (including uppercase and some punctuations). Originally I had the Mario sprite occupy several characters for each direction he faced and for specific animations, now he only occupies 4 characters.
The real challenge was making the game allow for a large variety of enemies per stage. Having them all animate at all times and even have unique animations for specific behaviors was an issue. For each enemy there are several characters that control the left animations and several other characters that control the right. If it’s an enemy that only occurs once in a stage, it would only occupy one set of characters with a robot that would control its animations depending on direction its facing or what its doing.
For terrain I make sure a row of graphics will be set for stage specific graphics. This would include plants, trees, water, ice blocks, clouds and desert. This way I can either create .CHR files for each stage that contains their unique terrains and blocks or even so I can use special commands to pull a row of characters from a .CHR file and placing them in the current character board at the start of a new level, in robotics.
One thing that I don’t think I’ve ever mentioned on the forums yet, is that I have not used any tool-assistance for creating the graphics for this game. What I have done is physically draw out the pixels on graph paper within the limitations of 1x2 or 2x2 character blocks. Nintendo using a row of pixels that are out of the range of 1x1 enemies so I had to creatively problem solve how to draw each and every graphic smaller by a row of pixels. Essentially if I used any software to import NES sprites and skew them it would distort very easily since we are working with very few pixels to represent different tones of colour and to define forms like limbs and eyes.
Lachesis solution is great if you really want to make the most out of the 256 character table; by completely removing the letter characters or even just the row of uppercase characters. I currently keep my letter and number characters in at all times - though I may even myself consider using them for graphics too in the future if I need to really add more graphics to my stages.
PS:
I've been working on a 'making of' documentary video over the past couple years that details all the work involved in this project. I'll be releasing that up to youtube sometime after I complete the full game and release it.
This post has been edited by T-Bone: 03 October 2014 - 07:16 PM