Lady Bug - BBC Micro Computer

Note: screens captured from various builds, final build may differ slightly.

bbc remake
original game

Lady Bug was originally a Z80 based arcade video game produced by UNIVERSAL in 1981.

This remake is written in 6502 assembly language for the BBC Micro Computer.

You can Play LadyBug in your web browser if you have a fast computer.

Various BBC Microcomputer emulators are available online, personally I use the excellent BeebEm windows application.

You can download the current build disk image and full source code here.

The full project diary, disk images and source code for various builds up to the current build are available on the StarDot forums.

2021-10-07 - Project now on github

2021-10-04 Build 002519 - Disabled the cursor editing keys that can mess with the logo and instruction screens during boot.

2021-10-03 Build 002518 - Moved logo and instruction screens into boot.bas, removed the logo and instructions .bin files.

2021-10-03 Build 002517 - Added instruction screen to boot loader, disabled ESC key during boot.

2021-10-01 Build 002515 - Added logo to boot loader.

2021-09-30 Build 002514 - Fixed an enemy release bug I recently introduced in build 002508.

2021-09-22 Build 002513 - Fixed a small issue with keyboard redefinition code.

2021-09-20 Build 002509 - Fixed an issues with the sideways ram detection code.

2021-09-19 Build 002508 - Fixed 2 minor issues with the sound engine, slight rewrite to enemy release code to stagger the release frame and reduce cycle load per frame.

2021-09-07 Build 002506 - Altered the layout of the bonus garden flowers and altered the ladybug animation path to match.

2021-09-05 Build 002504 - Fixed a mistake that would cause the game to freeze on a black screen if run on a bbc computer with a speech chip upgrade.

2021-08-30 Build 002503 - Enemy speed was a little too aggressive after level 7, 12 and 18 so i have altered the 4 speed tables to fix this issue.

2021-08-28 - Made some changes to the diamond bonus and fixed an issue with the angel animation.

2021-08-11 - Made some minor tweaks here and there and added an option on the main menu to turn the sound on and off

2021-08-02 - Added the remaining enemy bugs and all thats left now is the ladybug death animation sprites and code. Check out my youtube channel for the latest changes here.

Once the project is completed I will make the full game source code available for download including the source code for the utilitys used to convert images into bbc format.

2021-07-30 - Well its been a while, I've added a lot to the game and I would say its 99% done with just a couple of small things remaining. Check out my youtube channel for the latest changes here.

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.