Let's Make a Retro Game
In this series I will be working through the steps required to make a home brew game for a retro 8-bit console or computer system.
The primary system used will be the Colecovision, but I will provide conversion steps and code for both MSX and original Spectravideo systems as we go.
In later episodes we will be going through the conversion process to make the same game for:
- Spectrum
- Amstrad CPC
- Commodore 64
- Atari 8-bits
- and finally the Nintendo Entertainment System (NES)
Lets Make a Retro Game: Ep 1: Getting Started
Lets Make a Retro Game: Ep 2: Emulation
Lets Make a Retro Game: Ep 3: Editor/Assembler
In this episode we are going to cover setting up a free text editor and Z80 assembler with Syntax Highlighting and an execute key that will compile our code and assist in seeing any errors.
I have included templates for Colecovision, original Spectravideo and MSX systems that will give you something to look at, compile and run in the emulator.
The video for this episode is available here.
Next episode we will be taking a closer look at Z80 assembler code, breaking down these templates and covering what they do. Read moreLets Make a Retro Game: Ep 4: The Game Loop
In this episode we are going cover what steps we need to code to make our game. So in a way on overview of the structure of our game.
This is often called The Game Loop.
The video for this episode is available here.
Next episode we start looking at learning Z80 assembly language.
Read moreLets Make a Retro Game Ep 5: Starting Z80 Assemble
In this episode we are going to go over the basics of Z80 assembler.
This will not be a full tutorial on Z80 assembler as that would require a series in it’s own right, but hopefully should give you a start so you can follow on with the rest of this series, whilst doing some learning from suggested resources.
The video associated with this episode is located here.
Lets Make a Retro Game Ep 6: Z80 Loops, Conditions
In this episode we are going to cover a few more essential concepts in Z80 assembler.
We will cover:
- Loops
- Conditions
- Bytes, Bits and Nibbles
The video associated with this episode is located here
Read moreLets Make a Retro Game Ep7: Display our Background
In this episode we are going to start making our game “Mega Blast”, so to get things started we are going to go through:
- Initialising our graphics
- Displaying the graphics on both our title screen and then the main screen of the game
I have included the complete code for this section, so you can follow through the various steps without having to worry about typing in code.
The supplied code has two folders, Start, where we start in this episode and End the final code and a copy of the ROM file.
The video associated with this episode is located here.
Read moreLets Make a Retro Game Ep8: Move and Shoot
In this episode we are going to get some objects moving on the screen by:
- Testing the joystick direction and moving the player ship left or right
- Testing the joystick fire button and placing a bullet on screen
- Moving the current player bullet up the screen.
I have included the complete code for this section, so you can follow through the various steps without having to worry about typing in code.
The supplied code has two folders, Start, where we start in this episode and End the final code and a copy of the ROM file.
The video associated with this episode is located here.
Read moreLets Make a Retro Game Ep9: Enemy Movement
In the Intellivision game of Astro Smash, that we are basing our game on, the main enemies are Asteroids that fall down the screen, exploding when they hit the ground.
Points are awarded to the player, when one is destroyed and points are removed if one reaches the planet surface.
In this episode we are going to introduce some simple enemy movement, this will involve:
- Using a random number generator to determine when an asteroid should appear and at what speed.
- Moving any visible asteroids towards the bottom of the screen.
- Detecting when an asteroid reaches the bottom of the screen.
The supplied code has two folders, Start, where we start in this episode and End the final code and a copy of the ROM file.
The video associated with this episode is located here.
Read moreLets Make a Retro Game EP10: Collision Detection
In the Intellivision game of Astro Smash, that we are basing our game on, the main enemies are Asteroids that fall down the screen, exploding when they hit the ground.
Points are awarded to the player, when one is destroyed and points are removed if one reaches the planet surface.
In this episode we are going to introduce collision detection, this will involve:
- Adding a function that will determine if two objects have collided.
- Calling the function from inside our existing MOVE_ENEMIES routine.
The supplied code has two folders, Start, where we start the episode and End the final code and a copy of the ROM file.
The video associated with this episode is located here.
Read moreLets Make a Retro Game: EP 11: Scoring
Our Megablast game we are making is based on Astrosmash for the Intellivision and in that game you can both increase your score by shooting various enemies plus loose score if any of the enemies make it to the ground.
So to make our scoring work we are going to need five things:
- A routine to display the current score to the screen
- A routine to add to the players score
- A routine to subtract from the players score
- Call the display routine when we are allowed to draw to the screen
- Call the routines to add and subtract points to and from the players score at the appropriate places in our game.
The supplied code has two folders, Start, where we start the episode and End the final code and a copy of the ROM file.
The video associated with this episode is located here.
Read moreLets Make a Retro Game: EP 12: Player Lives
In this episode we are going to cover two things, detecting whether any enemy objects hit the player ship as well as display the number of lives the players has remaining.
This will also include detecting when the player is out of lives and ending the game. We will enhance this some more in a future episode.
The supplied code has two folders, Start, where we start the episode and End the final code and a copy of the ROM file.
The video associated with this episode is located here.
Read moreLets Make a Retro Game: EP13: More Enemies
In this episode we are going to enhance the generation of the enemy objects. Currently we are only making the same type of asteroid appear, whereas we want a variety of enemies to appear on screen with different movement logic and behaviour.
We won’t cover all the eventual enemy types in this episode, but we will put together the framework so we can add more in the next episode.
The supplied code has two folders, Start, where we start the episode and End the final code and a copy of the ROM file.
The video associated with this episode is located here.
Read moreLets Make a Retro Game: EP14: TMS9918A Graphics
In this episode we are going to step away from our game to learn a little bit more detail on how graphics work on computers that use the TMS9918A graphics processor. At the end of this episode we will have put together a bit of a graphical demo..
The supplied code has folders for Coleco, MSX and Spectravideo systems and each one contains two folders, Start - where we start this episode and End - the final code and a copy of the ROM file.
The video associated with this episode is located here.
Read moreLets Make a Retro Game: EP15: TMS9918A Sprites
In this episode we are going to continue on from the last episode where we were looking at how the TMS9918A graphics chip displays tile graphics, making a bit of a graphical demo in the process.
The supplied code has folders for Coleco, MSX and Spectravideo systems and each one contains two folders, Start - where we start this episode and End - the final code and a copy of the ROM file.
The video associated with this episode is located here.
Read moreLets Make a Retro Game: EP16: Generating Sounds
In this episode we are going to look at how we generate sound, this will allow us to add the sound effects for our game e.g. our laser shooting, explosions when things are destroyed.
The supplied code has folders for Coleco, MSX and Spectravideo systems and each one contains two folders, Start - where we start this episode and End - the final code and a copy of the ROM file.
The video associated with this episode is located here.
Read more