I'm trying to figure out the basics of C64 game development past BASIC, and I could use some advice on something very basic, but important: What is all that stuff on the screen actually, and how to draw it?
Take a look at Katakis/Denaris:
There are at least 9 different things on the screen:
- The Score bar, with different fonts
- The ship itself
- A satellite attached to the ship, detachable
- Secondary Weapon Projectiles
- Primary Weapon Projectiles
- Moving objects (can be enemy ships)
- The Status bar, featuring an image of the ship, the number of lives and three sections that can fill
- The primary weapon charge bar, can fill to the end
- A scrolling starfield in the background
- (not numbered on the screen) Solid objects like rocks or metal walls that are part of the background
The C64 only supports 8 sprites per horizontal scan line, so I don't think that everything in the middle of the screen can be a sprite? I would assume that anything requiring a collision would be a sprite (since I can get hardware collision detection with sprites), but even then I quickly hit the limit of 8 sprites. Also, my weapons can fire much more than one projectile - my ship, the satellite and 6 bullets would already be 8 sprites on a row (look at about 50 seconds into the video).
Also, which graphics mode would a game like this use? The Programming Handbook lists Bit Map Mode which essentially modifies screen memory directly. Is this the mode I should usually be working in? How would I compose all the non-sprite elements together to get them on screen?
A lot of the stuff in the score and status bar is static ("Area: 01" or the "frame"), so I guess I'll just populate them once when the level starts. Things that need updating - the score, the charge bars at the bottom - would be updated by filling the screen memory with black and then drawing the new score every frame?
Or do I have to draw the entire screen on every frame?