Working on the new Power meter for Megaman. The original game uses sprites with pre-rendered sections. I’m completely redoing the meter graphics. It’ll now be slimmer, use much-much less sprites (three sprites instead of 8 sprites) and will use pixel drawing to vram. I’ve set it up in a brilliant way, that I can exploit both the planar format of the sprites and the LSB/MSB latch of the VDC write port. Planes 0 and 2 are used for meter graphics (has checkered board see through parts too), and planes 1/3 for the meter levels. Plane 1 is for health, plane 3 is for the weapon energy of the current selected weapon. If no weapon, the whole bar represents health.
I like the look of the megaman X series bar, so it’s tailored after that but skinnier. There is a total of 28 levels for each bar, and one bar is 3 pixels wide and the weapon one is 2 pixels wide. With some optimized code, I can draw both bars in 440 cycles; just under one scanline. Of course, I’m using some st1/st2 opcodes to embed the writes – so a little bit of bloat (less than 1k) – but it’s worth the big speed increase. Speed is critical because this happens during vblank (I don’t want to move it outside of vblank if I don’t have too. ‘Break little as possible’ is the best approach to hacking someone else’s game engine). I estimate the cost will be less than the original code took to build out these two meters, as well as the saving of having to convert less sprites. I’ll be removing the score sprites as well. No need to display them during the game (boss/end of game/continue is good enough). That’ll save some cycles as well. I’ll do the same for the boss meter.
There will be an icon right below the meter, that will show the current weapon selected. Fancy, fancy.