Lady Bug (work in progress)

2021-04-05 - I've just added some AI aiming code and uploaded another video to youtube here.

2021-04-04 - Testing some bug movement, I dont have any enemy bug sprites drawn yet or any AI logic so the bugs are just moving around randomly. I've uploaded a video to my youtube channel here.

Its early days yet and theres still plenty of work to do on this game but slowly i'll get there.

I'm currently writing a port of Universal's 1981 arcade game Lady Bug for the Acorn BBC Micro Computer, progress is slow as I dont have a lot of spare time but I do put in an hour here and there its coming along ok.

The Acorn BBC Microcomputer was a computer adopted by schools here in england back in 1981 and although expensive (£399 without a screen !, around £1564 / €1838 allowing for inflation) it was very popular for home users learning basic and assembly language programming or just playing games.

The machine is very basic with an 8 bit 6502A processor running @ 2 MHz, 32K of ram, limited graphics in both resolution and color, no hardware sprites and a simple sound chip capable of generating square waves so its quite a challenge to write an arcade quality game for such limited hardware made harder by the fact that not all the 32K of ram is availble for programming.

The standard BBC Model B with 32K , System Kernel, Disk File System and Basic Interpreter use the first 6.25K of ram for workspace. The computer has a text display mode and a graphics display mode but using a graphics mode has a major impact on the available program memory as it usually requires 20K of ram to display the bit mapped image which reduces your available program space to a miserly 5.75K which clearly is not enough for a complete arcade style game with graphics and sound.

Disabling the System Kernel, Disk File System and Basic Interpreter after the game loads allowed me to regain the lost 6.25K and creating a custom graphics mode using only 14K of ram gained an extra 6K giving me a total of 18K available for the game program, graphics and sound.

18K is still a pretty small amount of memory to work with and some tricks have to be pulled to squeeze everything in. An example is the function to draw the player and enemy sprites was modified to be able to draw the sprites either normally or vertically flipped from the same image source which cuts the storage required in half and when theres 8 different enemys plus the player each with multiple frames of animation this really saves a lot of memory.

Other programming tricks are also needed to get everything to fit. I'll give a complete description and source code when it's completed.

With the kernel disabled even simple things like printing a letter "A" on the screen (which would normally be system call to the kernels print function) now require a print function written from scratch, any characters to be printed also need their pixel patterns stored in program memory. Keyboard input, sound output and anything else needed must all be written and included in the game and requires a deep understanding of the system hardware input/output and support logic, cpu interrupts and bare-metal assembler programming. It's all part of the fun :)

It's very early on in development and im currently still writing the functions needed for the game and only have a test program so far for checking the sprite rendering, animation, text printing, maze initialization and display, score and game stats display, keyboard input etc.

Here's a video of the original arcade game that im recreating.