Warlords uses the same (or very similar) hardware to Centipede and a few other games and not too different to Sprint and the Exidy games that I have already written beeb emulators for.
For the software developer, the machine looks like a 256x224 240 pixel 32x28 30 character display, where each character is one of 64 that can be flipped or mirrored. There is a second set of 64 8x8 pixel tiles that can be used as one of the 16 sprites, again each can be flipped or mirrored.
These are the characters (top) and tiles (bottom) that Warlords has.
The hardware also supports a palette for each sprite and some sort of attribute map for the characters.
The sound is handled by a POKEY, which is quite a flexible 4 channel sound chip which also handles ADC (8 channels), timers and a keyboard matrix.
With routines to flip the sprites and flip and mirror the tiles, 10kB 12kB (11 sprites and 1 tiles) is needed for the gfx data, 12kB 13kB if I skip the flipping code for tiles (can't really skip the sprite flip code as that would add 8kB 22kB+tiles).
So the memory budget looks like:
Code: Select all
1kB Warlords RAM
1kB Warlords character map + sprite info (X, Y, tile etc)
15kB emulator display
1kB emulator copies of character map + sprite info (X, Y, tile etc)
? kB emulator code
12kB Warlords game ROM
12kB expanded sprites and tiles
~4kB unrolled code to draw the sprites and tiles
The game also has 8 sound effects:
Code: Select all
soft boom : bat hit fire ball / start game timer
lazer boom: fireball hit edge of screen / wall
soft boom : fireball hit edge of screen
explosion : player died*
fanfair : game over
laser shot: shoot fire ball*
chink boom: ball hit crenelation*
zip boom : fireball hit crenelation
*all started together
The final thing is that Warlords is a four player game, with each player having a "paddle" and "fire" button.
After chatting with flynnjs, it looks like there is a fairly simple and cheap way to allow four fire buttons and after checking the wiring on Atari VCS/2600 paddles, it looks like they can be modified very simply to work on the beeb (unfortunately, not the joysticks though).
PS There is also the problem that six colours are used per scan line, the fireball itself is red, yellow, white/cyan and a black background.