LearnAsm.net

Learn Assembly Programming...
With ChibiAkumas!

New Domains! Bookmark www.LearnAsm.net or www.AssemblyTutorial.com for all your Assembly programming needs!

Z80 Resources

Resources related to these tutorials

Z80 Cheatsheet - Commands and info
Cheatsheet for Z80 assembly development - contains Z80 commands details and other useful information
DevToos - My collection of Z80 Development tools and scripts
Download these to get started with my Z80 tutorials quickly and easily.
Sources.7z - All sourcecode for my tutorials
Download this to get all the source code for my tutorials

Basics Series

A warm up to assembly with no actually programming, discusses concepts and terminology, and is designed for those who find jumping straight in too intimidating!

Lesson 1 - Getting started with Retro Programming in Assembly
Interested in Retro programming, Want to learn the concepts of Assembly and retro computers?... This is for you! This episode will go over the concepts of computing, and what assembly assembly language is, and what it can do for you!
[Documentation] [Video]



Lesson 2 - Basics… The Mysteries of the CPU!
When we program in assembly, we need to know more than 'The CPU does processing'!... We'll need to understand what it can do, and how it does it!
[Documentation] [Video]



Lesson 3 - Basics… More Detailed Mysteries of the CPU!
We learned quite a lot about the CPU last time, but there's some more specialist stuff we'll need to know for certain CPUs. Lets look at some more technical CPU wonders!
[Documentation] [Video]



Lesson 4 - Data Representation
Knowing different representations of numbers tends to be more important in Assembly than languages like Basic and C++ that tend to do everything for us.
[Documentation] [Video]



Lesson 5 - Assembler Terminology.
The Assembler is the program we will use to turn our text source file into an assembled program we can run. Lets learn the terminology we're likely to come across in our quest to go from source to something we can run!
[Documentation] [Video]



Lesson 6 - More Assembler Terminology!
The Assembler is the program we will use to turn our text sourcefile into an assembled program we can run. Lets learn the terminology we're likely to come across!
[Documentation] [Video]



Lesson 7 - Even More Assembler Terminology!!!!111
The Assembler is the program we will use to turn our text sourcefile into an assembled program we can run. Lets learn the terminology we're likely to come across!
[Documentation] [Video]



Lesson 8 - Programming Techniques
Assembly programming has some common programming techniques and methods it's worth pointing out, as they may help you design your programs.
[Documentation] [Video]



Lesson 9 - Graphics Terminology
Lets look at some of the terminology we'll come across when it comes to graphics and video hardware when programming retro hardware in Assembly.
[Documentation] [Video]



Lesson 10 - Sound Terminology.
In this lesson, We'll look at some of the concepts of making sounds for the 'less musical' programmer!
[Documentation] [Video]



Lesson 11 - Other Hardware Terminology
There's a few other weird and (somewhat) wonderful terminology we may come across, that it's worth discussing at some point.... and that point is right here!
[Documentation] [Video]



Z80 Tutorials

Basic Z80 Tutorials - These use CPC emulator Winape as it's an easy way to learn Z80 programming... it's recommended you start with WinApe even if you plan to move to a different system

Lesson 1 - Getting started with winape [Z80] [CPC]
[CPC] & [Z80] Learn how to get started with Winape CPC emulator (The Easiest way to work with Z80), start a simple program, compile, and run if from basic. Learn to use the Debugger to see the contents of registers and memory
[Documentation] [Video
Lesson 2 - Memory copy, Symbol definitions, Loops and Conditional Jumps! [Z80]
Using LDIR, Compare with CP, Jumps based on conditions (JP), Symbols with EQU
  [Documentation] [Video
Lesson 3 - 'Case Statement' , 8 bit basic Maths, Writing to Ram and Reading from basic [Z80]
Case statement via multiple CP statements, simulating multiply and divide, passing parameters to and from basic via POKEing memory,
[Documentation] [Video
Lesson 4 - Stack, Strings,Compiler Directives, Indirect registers, CPC Call [Z80]
PUSH and POP with the stack, Compiler directives IFDEF, ELSE, ENDIF. Indirect registers IX, IY for address in register+offset
[Documentation] [Video
Lesson 5 - Bit level operations, Self modifying code [Z80] [CPC]
Bitwise operations - AND, OR, XOR. Bit operations SET, RES, BIT... Shifting and rotation with SLL, SRL, SLA,SRA, RLCA, RRCA, RL, RR... Carry Flags, Self modifying code. NOP - no operation
[CPC] Calls with parameters
[Documentation] [Video
Lesson 6 -  Lookup table, Screen Co-ordinates, Vector Tables, Basic Parameters Byref [Z80] [CPC]
Look up tables, ALIGN for aligned code, Undocumented registers IXH, IXL, IYH, IYL... swapping registers with EX DE,HL... Vector Tables for jumps
[CPC] Screen Co-ordinates, specifying References with @ and integers with %
[Documentation] [Video
Lesson 7 - DI EI, RST x, Custom Interrupts, IM1/IM2, HALT, OTI / OTIR, HALT [Z80] [CPC]
RST 7 / RST &38 - interrupt handler... Interrupt mode 1 (IM1) Shadow registers EXX and EX AF,AF'... Disable interrupts (DI) Enable interrupts (EI), Stop interrupts with HALT... reading and writing to hardware via ports with IN and OUT...
[CPC] Raster color switching
[Documentation] [Video
Lesson 8 - Unwrapped Loops, Stack Misuse for speed & rarer Z80 commands [Z80] [CPC]
I register (IM2 Interrupt address top byte) R register (memory Refresh)... DAA for Decimal Adjust Acumulator (Binary Coded Decimal)... Return from interrupts with RETI and RETN... repeated port access with IND, INDR, INI, INIR, OUTD, OTDR... alter the stack pointer with INC/DEC SP, swap with the stack with EX (SP),HL... unwrap loops... Stack Misuse
[Documentation] [Video

Hello World

The 'Hello World' Series teaches how to create a simple program, compile it and run it on an emulator to show the classic 'Hello World' Message

Lesson H1 - Hello World on the CPC [CPC]
Learn how to show 'Hello World' using the firmware, Compile a program with winape, Make a Disk Image or Tape Image file for the amstrad, Make a GX4000 cartridge
[Documentation] [Video
Lesson H2 - Hello World on the ZX Spectrum [ZXS]
Learn how to Show Hello World on the screen, Compile for the spectrum with VASM, build a DSK or TRD Disk Image for the spectrum,make a TAP tape image on the spectrum
[Documentation] [Video
Lesson H3 - Hello World on the MSX / MSX2 [MSX]
Learn how to Make hello world for the MSX1 or MSX2, build with Vasm, Create an MSX cartridge, Make an MSX Disk image
[Documentation] [Video
Lesson H4 - Hello World on the Sam Coupe [SAM]
Learn how to make Hello World on the San Coupe, build with vasm, create a Sam Coupe disk image with an 'AutoGo' file that autoloads, and run the program.
[Documentation] [Video
Lesson H5 - Hello World on the Elan Enterprise [ENT]
Learn how to make Hello World on the Elan Enterprise, compile with Vasm, run a program with FileIO, run a program from an Enterprise Disk Image,
[Documentation] [Video
Lesson H6 - Hello World on the Camputers Lynx [CLX]
Show Hello World on the Camputers Lynx, Compile with VASM, Build a Lynx TAP tape image and start it with Jynx
[Documentation] [Video
Lesson H7 - Hello World on the TI-83 [TI8]
Make Hello world for the TI-83 calculator, Compile with VASM, convert to an executable 8XP for the TI with bin28xp, load an 8XP from within the TI calculator
[Documentation] [Video
Lesson H8 - Hello World on the Sega Master System and GameGear [SMS] [SGG]
Make Hello World with the Master System or Game Gear, making a valid ROM file for the master system or game gear, calculating a valid CRC checksum
[Documentation] [Video
Lesson H9 - Hello World on the Gameboy and Gameboy Color [GMB] [GBC]
Make Hello World for the Gameboy or Gameboy Color, making a gameboy romfile, calculating a valid CRC for gameboy roms
[Documentation] [Video

Lesson H10 - Hello World on the ZX81 [ZX8]
The ZX81 is much earlier than the Speccy, and it's hardware is far more limited... We'll have to include some 'special code' in our example to make something the ZX81 can run!
[Documentation] [Video]

Lesson H11 - Hello World on the CPC via Native Tools (MAXAM) [CPC]
Lets try something a bit different!... We've built 'Hello World' on the CPC before, but this time lets try with the CPC's own assembler, MAXAM!
[Documentation][Video]

Simple Series

Basic Tutorials doing common game programming tasks in a single ASM file

Lesson S1 - Easy Sprites on the CPC [CPC]
Let's learn how to draw an 8x8 'tile' or a 48x48 bitmap sprite on the Amstrad CPC in a single simple ASM File
[Documentation] [Video]

Lesson S2 - Easy Sprites on the ZX Spectrum [ZXS]
Let's learn how to draw an 8x8 'tile' or a 48x48 bitmap sprite on the ZX Spectrum in a single simple ASM File
[Documentation] [Video]

Lesson S3 - Easy Sprites on the Enterprise [ENT]
Let's learn how to draw an 8x8 'tile' or a 48x48 bitmap sprite on the Enterprise in a single simple ASM File
[Documentation] [Video]

Lesson S4 - Easy Sprites on the Sam Coupe [SAM]
Let's learn how to draw an 8x8 'tile' or a 48x48 bitmap sprite on the Sam Coupe in a single simple ASM File
[Documentation] [Video]

Lesson S5 - Easy Sprites on the MSX2 [MSX]
Let's learn how to draw an 8x8 'tile' or a 48x48 bitmap sprite on the MSX2 in a single simple ASM File
[Documentation] [Video]

Lesson S6 - Easy Tiles on the MSX1 [MSX]
Let's learn how to draw an 8x8 'tile' or a 48x48 bitmap sprite on the MSX 1 in a single simple ASM File
[Documentation] [Video]

Lesson S7 - Easy Sprites on the Camputers Lynx [CLX]
Let's learn how to draw an 8x8 'tile' or a 48x48 bitmap sprite on the Camputers Lynx in a single simple ASM File
[Documentation] [Video]

Lesson S8 - Easy Sprites on the TI-83 [TI8]
Let's learn how to draw an 8x8 'tile' or a 48x48 bitmap sprite on the TI-83 in a single simple ASM File
[Documentation] [Video]

Lesson S9 - Easy Tile bitmaps on the Gameboy and Gameboy Color [GMB] [GBC]
Let's learn how to set a tile or a 48x48 bitmap with multiple tiles on the Gameboy and Gameboy Color in a single simple ASM File
[Documentation] [Video]
Lesson S10 - Easy Tile bitmaps on the Sega Mastersystem or GameGear [SMS] [SGG]
Let's learn how to set a tile or a 48x48 bitmap with multiple tiles on the Sega Master System and Game Gear in a single simple ASM File
[Documentation] [Video]
Lesson S11 - Joystick Reading on the Amstrad CPC [CPC]
This tutorial will teach you how to add Joystick input to the previous bitmap example
[Documentation] [Video]

Lesson S12 - KeyControl Reading on the ZX Spectrum [ZXS]
Lets add keyboard input to the previous bitmap example
[Documentation] [Video]

Lesson S13 - Joystick reading on the Enterprise [ENT]
Learn how to add Joystick input to the previous bitmap example
[Documentation] [Video]

Lesson S14 - Key Reading on the Sam Coupe [SAM]
This tutorial will teach you how to add keyboard input to the previous bitmap example
[Documentation] [Video]

Lesson S15 - Joystick Reading on the MSX1 + MSX2 [MSX]
Lets add Joystick input to the previous bitmap example
[Documentation] [Video]

Lesson S16 - Keyboard Reading on the Camputers Lynx [CLX]
Lets add keyboard  input to the previous bitmap example
[Documentation] [Video]

Lesson S17 - Easy Sprites on the Spectrum NEXT [ZXN]
The Spectrum NEXT extends the graphical capabilities of the Speccy, adding a 256 color mode known as 'Layer 2'
Lets learn how to use it, and get a bitmap on the screen!
[Documentation] [Video]

Lesson S18 - KeyControl Reading on the Spectrun Next [ZXN]
Lets add keyboard  input to the previous bitmap example
[Documentation] [Video]

Lesson S19 - Joypad reading on the Gameboy and Gameboy Color[GBC]
We learned how to get a smiley on the screen before... this time lets get it moving!
[Documentation] [Video]

Lesson S20 - Easy Joypad reading on the Sega Mastersystem or GameGear [SMS] [SGG]
Lets extend our previous smiley sprite example, and move the sprite around the screen with the joypad.
[Documentation] [Video]
Lesson S21 - Sprite Drawing and Key Reading on the ZX81 [ZX8]
Lets move a little sprite around the screen with with the QAOP keys!
[Documentation] [Video]

Lesson S22 - Sprite clipping on the Amstrad CPC (Part 1/2) [CPC]
We drew our 'Chibiko' mascot to the screen before, but this time we're going to improve the algorithm. First we'll add 'sprite clipping' so parts of the sprite can go offscreen.
[Documentation] [Video]
Lesson S23 - Sprite clipping on the Amstrad CPC (Part 2/2) - Stack misuse [CPC]
Lets look at the rest of the sprite clipping code, and the use of 'Stack Misuse' to speed up writing!
[Documentation] [Video]
Lesson S24 - Sprite clipping on the ZX Spectrum (Part 1/2) [ZXS]
We drew our 'Chibiko' mascot to the screen before, but this time we're going to improve the algorithm. First we'll add 'sprite clipping' so parts of the sprite can go offscreen.
[Documentation] [Video]
Lesson S25 - Sprite clipping on the ZX Spectrum (Part 2/2) - Stack misuse [ZXS]
Lets look at the rest of the sprite clipping code, and the use of 'Stack Misuse' to speed up writing!
[Documentation] [Video]
Z80 Lesson S26 - Sprite clipping on the Elan Enterprise (Part 1/2) [ENT]
We drew our 'Chibiko' mascot to the screen before, but this time we're going to improve the algorithm. First we'll add 'sprite clipping' so parts of the sprite can go offscreen.
[Documentation] [Video]
Z80 Lesson S27 - Sprite clipping on the Elan Enterprise (Part 2/2) - Stack misuse [ENT]
Lets look at the rest of the sprite clipping code, and the use of 'Stack Misuse' to speed up writing!
[Documentation] [Video]
Lesson S28 - Sprite clipping on the Sam Coupe (Part 1/2) [SAM]
We drew our 'Chibiko' mascot to the screen before, but this time we're going to improve the algorithm. First we'll add 'sprite clipping' so parts of the sprite can go offscreen.
[Documentation] [Video]
Lesson S29 - Sprite clipping on the Sam Coupe (Part 2/2) - Stack misuse [SAM]
Lets look at the rest of the sprite clipping code, and the use of 'Stack Misuse' to speed up writing!
[Documentation] [Video]
Lesson S30 - Sprite clipping on the Spectrum Next (Part 1/2) [ZXN]
We drew our 'Chibiko' mascot to the screen before, but this time we're going to improve the algorithm. First we'll add 'sprite clipping' so parts of the sprite can go offscreen.
[Documentation] [Video]
Lesson S31 - Sprite clipping on the Spectrum Next (Part 2/2) [ZXN]
Lets take a look in more detail at our sprite routine, this time we'll look at the double buffer, and stack misuse.
[Documentation] [Video]
Lesson S32 - Sprite clipping on the MSX1 [MSX]
We drew our 'Chibiko' mascot to the screen before, but this time we're going to improve the algorithm. First we'll add 'sprite clipping' so parts of the sprite can go offscreen, we'll also use double buffering, so there's no screen flicker.
[Documentation] [Video]
Lesson S33 - Sprite clipping on the MSX2 [MSX]
We drew our 'Chibiko' mascot to the screen before, but this time we're going to improve the algorithm. We'll use sprite clipping, and double buffering!
[Documentation] [Video]
Z80 ASM Lesson S34 - Bitmap clipping on the SMS/GG via the tilemap [SMS]
Lets add 'sprite clipping' so parts of the sprite can go offscreen, we'll also use double buffering, so there's no screen flicker. We'll use the Tilemap this time, next time we'll use Hardware Sprites.
[Documentation] [Video]
Lesson S35 - Bitmap clipping on the SMS/GG via Hardware Sprites [SMS]
We used the tilemap to draw our graphic last time, this time we'll take a step up and use hardware sprites! We'll build our 48x48 chibiko mascot out of 6x6 hardware sprites
[Documentation] [Video]
Lesson S36 - Bitmap clipping on the GB/GBC via the tilemap [GMB] [GBC]
We'll use the Tilemap this time, next time we'll use Hardware Sprites
[Documentation] [Video]
Lesson S37 - Bitmap clipping on the GB/GBC via Hardware sprites [GMB] [GBC]
We drew our 'Chibiko' mascot with the tilemap... but we can do better!... This time we'll use hardware sprites to do the job for smooth moves!
[Documentation] [Video]

Advanced Series

Lets learn some more useful Z80 examples that may help you in your programming... these tutorials

Lesson A1 - Binary Coded Decimal [Z80]
Lets learn how to use Binary Coded decimal on the Z80... this is where we store a number from 0-9 in each nibble of a byte, to make it easier to show decimal numbers quickly to the screen
[Documentation] [Video] 
Lesson A2 - Interrupt Mode 2 [Z80] [ZXS]
Interrupt Mode 2 is a little odd, but its essential for custom interrupt handlers on systems which we cannot write to the low ram area &0038 such as the ZX Spectrum
[Documentation] [Video] 
Lesson A3 - Simulating functionality for the GBZ80 [Z80] [GMB] [GBC]
The Gameboy GBZ80 has a lot of missing commands compared to the regular Z80 - but with some tricks we can simulate them - knowing such 'workarounds' are also quite handy for regular Z80 users!
[Documentation] [Video] 
Lesson A4 - Removing Self Modifying Code [Z80] [GMB] [GBC] [MSX] [SMS] [SGG]
Self-Modifying code is great as it's fast, but it requires our program to run from RAM - if we need to port to a ROM based system like the Master System, Gameboy, GameGear or MSX this will be a problem, but with some modification we can work around this.
[Documentation] [Video] 

Platform Specific Series

  Lets learn how the specific hardware of the systems work, so we can get it to do what we want - we'll look at each system, how it's hardware works, and an example of using it.

Lesson P1 - Basic Firmware Text functions [CPC] [ZXS] [MSX] [TI8] [ENT]
Lets learn how to perform simple text operations quickly using the OS Firmware
[Documentation] [Video]
Lesson P2 - More Text Functions, Improvements... and the Sam Coupe! [CPC] [ZXS] [MSX] [TI8] [ENT] [SAM]
Lets improve on last weeks tutorials and add a few more!
[Documentation] [Video]
Lesson P3 - Bitmap graphics on the Amstrad CPC and Enterprise 128 [CPC] [ENT]
This tutorial will teach you how to draw some bitmap graphics on the Amstrad CPC and Elan Enterprise
[Documentation] [Video]
Lesson P4 - Bitmap graphics on the ZX Spectrum and Sam Coupe [ZXS] [SAM]
Lets Learn how to draw some bitmap graphics on the ZX Spectrum and Sam Coupe
[Documentation] [Video]
Lesson P5 - Bitmap graphics on the TI-83 and MSX [TI8] [MSX]
Lets Learn how to draw some bitmap graphics on the TI-83 and MSX2
[Documentation] [Video]
Lesson P6 - Keyreading on the Amstrad CPC, ZX Spectrum and Sam Coupe [CPC] [ZXS] [SAM]
This tutorial will teach you how to read the keyboard of the CPC, Speccy and Sam Coupe
[Documentation] [Video]
Lesson P7 - Keyreading on the MSX, Enterprise and TI-83 [MSX] [TI8] [ENT]
Lets learn how to read the keyboard of the MSX, Enterprise and TI-83
[Documentation] [Video]
Lesson P8 - Tilemap graphics on the Sega Master System & Game Gear [SMS] [SGG]
This tutorial will teach you how to usine the tilemap to show images on the Sega MasterSystem and GameGear
[Documentation] [Video]
Lesson P9 - Tilemap graphics on the Gameboy and Gameboy Color [SMS] [SGG]
Learn about using the tilemap to show images on the Gameboy and Gameboy Color
[Documentation] [Video]
Lesson P10 - Tilemap graphics on the MSX1 [MSX]
Learn about using the tilemap to show images on the MSX 1
[Documentation] [Video]
Lesson P11 - Tilemap graphics on the MSX2[MSX]
Learn about using the tilemap to show images on the MSX 2
[Documentation] [Video]
Lesson P12 - Joypad reading on Master System,GameGear, Gameboy and Gameboy Color [SMS] [SGG] [GMB] [GBC]
Learn about how to read from the Joystick or Joypad on the Sega Mastersystem, GameGear, Nintendo Gameboy and Gameboy color
[Documentation] [Video]
Lesson P13 - Palette definitions on the Amstrad CPC and CPC+ [CPC]
This tutorial will teach you how to configure the screen colors on the Amstrad CPC and CPC+ / GX4000
[Documentation] [Video]
Lesson P14 - Palette definitions on the Enterprise and Sam Coupe [ENT] [SAM]
Learn about how configure the screen colors on the Sam Coupe and Enterprise
[Documentation] [Video]
Lesson P15 - Palette definitions on the MSX2 and V9990 [MSX]
Learn about how configure the Palette of the MSX2 and Powergraph V9990 (V9K)
[Documentation] [Video
Lesson P16 - Palette definitions on the Sega Master System and Game Gear [SMS] [SGG]
Learn about how configure the Palette of the Sega Master System, and Sega Game Gear
[Documentation] [Video
Lesson P17 - Palette definitions on the Gameboy and Gameboy Color [GMB] [GBC]
Learn about how configure the Palette of the Gameboy and Gameboy Color
[Documentation] [Video
Lesson P18 - Making Sound with the AY-3-8910 on the Amstrad CPC, MSX,ZX Spectrum.... and NeoGeo + Atari ST!! [CPC] [MSX] [ZXS]
Learn about how to use the AY sound chip to make simple sounds on a variety of Z80 systems that use it!
[Documentation] [Video]
Lesson P19 - Sound on the Elan Enterprise [ENT]
Learn about how to make sound on the Enterprise
[Documentation] [Video
Lesson P20 - Sound on the Sam Coupe [SAM]
This tutorial will teach you how to make sound on the Sam Coupe
[Documentation] [Video
Lesson P21 - Sound on the Gameboy and GBC  [GMB] [GBC]
Learn about how to make sound on the Gameboy and Gameboy Color
[Documentation] [Video
Lesson P22 - Sound with the SN76489 on the Master System, GameGear, Megadrive (Genesis) and BBC Micro! [SMS] [SGG]
Learn about how to make sound on the Sega Mastersystem and Sega Game Gear
[Documentation] [Video]
Lesson P23 - Sound with the 'Beeper' on the ZX Spectrum and Apple II [ZXS]
Learn about how to make simple beeps on the ZX Spectrum
[Documentation] [Video
Lesson P24 - Bankswitching and hardware detection on the Amstrad CPC [CPC]
Learn about how to switch in and out the extra memory on the 6128, as well as ROM and Cartridges on the GX4000, also detect RAM amount, and if we're running on a CPC+
[Documentation] [Video
Lesson P25 - Bankswitching and hardware detection on the MSX [MSX]
Learn about how to page Memory and ROM with the slots on the MSX 1 and 2, and detect which slots are available, and which contain RAM or ROM
[Documentation] [Video
Lesson P26 - Bankswitching and hardware detection on the ZX Spectrum [ZXS]
Learn about how to page in extra memory on the +2 and +3 (including Amstrad models), and detect which model we're running on
[Documentation] [Video
Lesson P27 - Bankswitching and hardware detection on the Enterprise [ENT]
This tutorial will teach you how to page in Memory and ROM on the Elan Enterprise, and detect Memory available
[Documentation] [Video
Lesson P28 - Bankswitching and hardware detection on the Sam Coupe [SAM]
Learn about how to page in Memory on the Sam Coupe
[Documentation] [Video]

Lesson P29 - Hardware detection and Bank Switching on the Gameboy/GBC and Sega Mastersystem/GameGear [GMB] [GBC] [SMS] [SGG]
Learn about how to page in Memory and ROM on the Gameboy, detect Color hardware, and Page in ROM on the MasterSystem & GameGear
[Documentation] [Video]
Lesson P30 - Hardware Sprites on the Gameboy [GMB] [GBC]
Learn about how to use the Sprite hardware of the Gameboy and Gameboy Color
[Documentation] [Video
Lesson P31 - Hardware Sprites on the Master System / Game Gear and MSX1! [SMS] [SGG] [MSX]
Learn about how to use the Sprite hardware of the Master System, Game Gear and MSX
[Documentation] [Video
Lesson P32 - Hardware Sprites on the CPC+ [CPC]
Learn about how to use the Sprite hardware of the Amstrad CPC+ or GX4000
[Documentation] [Video
Lesson P33 - Bitmap Graphics on the Camputers Lynx [CLX]
Draw Graphics on the Campluters Lynx
[Documentation] [Video] 
Lesson P34 - Sound and Keyboard on the Camputers Lynx  [CLX]
Use the Beeper sound of the Lynx, Red from the Keyboard
[Documentation] [Video] 
Lesson P35 - Playing Digital Sound with WAV on the AY-3-8910! [CPC] [MSX] [ZXS]
Learn about how to play a WAVe file with the AY on CPC, MSX and Spectrum +2 / +3
[Documentation] [Video]
Lesson P36 - Playing Digital Sound with WAV on the CPC+ via DMA! [CPC]
Learn about how to play a WAVe on the CPC+ and GX4000 quickly with DMA
[Documentation] [Video
Lesson P37 - Playing Digital Sound with WAV on the Sam Coupe, Camputers Lynx and ZX Spectrum [SAM] [CLX] [ZXS]
Learn about how to play a WAVe on the Sam Coupe, Camputers lynx and ZX Spectrum 48k via beeper.
[Documentation] [Video]
Lesson P38 - Playing Digital Sound with WAV on the Sega MasterSystem/GameGear, Elan Enterprise and GameBoy/GBC [SMS] [SGG] [ENT] [GMB] [GBC]
Learn about how to play a WAVe on the Master System, Game Gear, Enterprise and Gameboys
[Documentation] [Video]
Lesson P39 - Setting the CPC screen with CRTC registers [CPC]
Learn about the CRTC registers that control screen shape and screen page flipping
[Documentation] [Video
Lesson P40 - Syncronized mode switches for 320x200 @ 16 color EGX graphics on the Amstrad CPC [CPC]
Combine Mode 1 and 2 on the Amstrad CPC for 320x200 with 16 colors (sort of)
[Documentation] [Video]
Lesson P41 - CRTC Rupture for Interrupt based splitscreen on the CPC [CPC]
Use the CRTC Rregisters to effect a hardware splitscreen for multiple scrolling windows
[Documentation] [Video]
Lesson P42 - Advanced CRTC Rupture [CPC]
Learn to use CRTC to 'clone' parts of memory, and build up a distorted screen line by line
[Documentation] [Video]
Lesson P43- ULANext on the Spectrum NEXT [ZXN]
The Spectrum next allows new features on the ULA, allowing the traditional color attributes to be re-purposesd to define more new colors - lets take a look!
[Documentation] [Video]
Lesson P44- Enhancements to the Classic ULA and Low Res Mode (Radasjimian) [ZXN]
As well as the new palette attribute settings we looked at last time, we can re-color the classic ULA colors, allowing a 'nicer' color palette, while keeping the classic spectrum screen color layout... we'll also look at 'Low Res Mode' - which uses the classic speccy memory range as a 128x96 @ 256 color screen.
[Documentation] [Video]
Lesson P45 - 256 color mode on the Elan Enterprise [ENT]
The basic Screen modes on the Enterprise mimic the Amstrad CPC - but the Enterprise goes one step further than the CPC - offering a 256 color 80x200 screen mode... This tutorial explains how to use it.
[Documentation] [Video] 
Lesson P46- Tilemap on the Spectrum NEXT [ZXN]
Lets take another look at a new feature of the NEXT - the TileMap - like many consoles the Speccy now has a hardware tilemap - allowing fast high color graphics.
[Documentation] [Video]
Lesson P47- Using 16 color Mode 0 to simulate 2x 4 color Layers [CPC]
This tutorial covers a trick used in some games, where the 16 colors of Mode 0 are 'split' into two , to simulate 2 planes (Background and Sprites)... we'll even use it to do Anaglyph 3D on the Amstrad!
[Documentation] [Video]
Lesson P48 - All MSX2 Bitmap Commands - Part 1/2 [MSX]
In these Lessons we'll look at all the V9938 commands for graphics processing with practical examples
[Documentation] [Video]
Lesson P49 - All MSX2 Bitmap Commands - Part 2/2 [MSX]
In these Lessons we'll look at all the V9938 commands for graphics processing with practical examples
[Documentation] [Video]
Lesson P50 - Alternative Bitmap modes... HighRes, 256 color, YJK (MSX2+) and Interlaced! [MSX]
This tutorial covers some of the rarer graphics modes of the MSX 2 and MSX 2+
[Documentation] [Video]
Lesson P51 - Window - Tilemap Scrolling - Alt Tile Pattern addresses and Interrupts [GMB] [GBC]
Lets take a look at some advanced Tilemap tricks on the Gameboy - This lesson teaches use of the 'window' a non-scrolling tilemap for stats onscreen, and 'splitscreen' where we change the screen on a line interrupt.
[Documentation] [Video]
Lesson P52 - MSX1 mode G2 for 768 onscreen tiles [MSX]
This tutorial covers the use of MSX 1 mode G2 - which allows a separate bank of 256 tiles for each third of the screen, we can use this to have every tile unique onscreen, and show a full screen image.
[Documentation] [Video]
Lesson P53 - Realtime Sprite Flipping on the Amstrad CPC [CPC]
In this Lesson we'll look at software sprites on the CPC - we'll learn how to effect an X-Flip in reatlime, so our sprites can look the other way without taking up more memory
[Documentation] [Video]

Lesson P54 - Transparency on Amstrad CPC software sprites [CPC]
In this Lesson we'll look at software sprites on the CPC - we'll learn how to effect an X-Flip in reatlime, so our sprites can look the other way without taking up more memory
[Documentation] [Video]
Lesson P55 - LightGun Reading on the Sega Master System [SMS]
The SMS Light gun is Super precise! able to detect with near pixel perfect precision - it really blows away the competition... this tutorial teaches how to create an interrupt handler to detect fire presses, and gun target.
[Documentation] [Video]
Lesson P56 - Pixel Plotting on the Amstrad CPC [CPC]
We've worked in bytes before on the CPC screen, but this time we'll look at plotting individual pixels of the CPC screen in Mode 1 or Mode 0
[Documentation] [Video]
Lesson P57 - Stereoscopic 3D on the SegaMasterSystem with the Segascope 3D Glasses [SMS]
This lesson covers the use of the Stereoscopic 3D shutter-glasses of the Sega Master system - and also covers the concept of 3D in general in terms of 2D representiation - this lesson works with Red-Cyan anaglyph 3D glasses
[Documentation] [Video]
Lesson P58 - Modes 4, 3, 2 and 1 on the Sam coupe [SAM]
We looked at 16 color Screen mode 4... but the SAM has a few other options... a 4 color mode (Mode 3), a Spectrum compatible mode (Mode 1), and a mode a bit like the MSX 1 (Mode 2)... Lets put them to work!
[Documentation] [Video]
Lesson P59 - Hardware scrolling on the MSX 1/2/2+ [MSX]
The MSX has some scrolling options - but they vary depending on the MSX revision...Lets take a look at all the options!
[Documentation] [Video]
Lesson P60 - Tape loading on the Amstrad CPC [CPC]
The 5000 sub special demo used a cassette file, and streamed data in a couple of formats to the screen.
Lets take a look at the loading methods used.
[Documentation] [Video]
Lesson P61 - 2x and 4x sprite scaling with Lookup Tables on the Amstrad CPC [CPC]
Lets take a look at sprite scaling! in this example we'll use lookup tables to effect Double and Quad size sprites on the Amstrad CPC.
[Documentation] [Video]
Lesson P62 - AMX Mouse reading on the Amstrad CPC [CPC]
The AMX mouse is an 8 bit mouse supporting both the Amstrad CPC and the ZX Spectrum.
[Documentation] [Video]
Lesson P63 - Kempson Mouse reading on the ZX Spectrum + SpecNEXT [ZXS] [ZXN]
The Spectrum can also use a mouse... the Kempson mouse .
[Documentation] [Video]
Lesson P64 - Mouse reading on the MSX [MSX]
The MSX aslo has a mouse - it connects to the Joystick port, but is not read in the same way as a normal joystick.
[Documentation] [Video]
Lesson P65 - Mouse reading on the Sam Coupe [SAM]
Lets take a look at the Sam Coupe mouse.
[Documentation] [Video]





Lesson P66 -Quadtree video on the CPC (10k special) - Part 1/2 [CPC]
When my youtube channel hit 10,000 subs, I made a little demo which streamed a pre-rendered video. Lets take a look at the video compressor I wrote!
[Documentation] [Video]
Lesson P67 - Quadtree video on the CPC (10k special) - Part 2/2 [CPC]
When my youtube channel hit 10,000 subs, I made a little demo which streamed a pre-rendered video. Lets take a look at the CPC+ code and cartridge routines.
[Documentation] [Video]
Lesson P68 - RLE+Bitplanes for lossless compression on the CPC [CPC]
RLE compression works best with long strings of repeated bytes, and to try to increase their occurrence I split the image into 2 bitplanes. It's slow to draw, but saved a lot of memory!
[Documentation] [Video]
Lesson P69 - ChibiSound PRO on the CPC, MSX and Spectrum (128 - AY) [CPC] [MSX] [ZXS]
Lets take another look at sound!... we'll make an improved multiplaform sound driver for music!
[Documentation] [Video]
Lesson P70 - Sound on the SMS/GG (ChibiSound Pro) [SMS] [GG]
Lets take another look at sound! We'll write a new multi-platform sound driver, which will give us control over the hardware, and allow us to write a music player which will work in a common way on all systems.
[Documentation] [Video]
Lesson P71 - Sound on the Elan Enterprise! (ChibiSound Pro) [ENT]
Lets take another look at sound! We'll write a new multi-platform sound driver, which will give us control over the hardware, and allow us to write a music player which will work in a common way on all systems.
[Documentation] [Video]
Lesson P72 - Sound on the ZX Spectrum (Beeper) [ZXS]
Lets take another look at sound! We'll write a new multi-platform sound driver, which will give us control over the hardware, and allow us to write a music player which will work in a common way on all systems.
[Documentation] [Video]
Lesson P73 - Sound on the Gameboy [GMB]
Lets take another look at sound! We'll write a new multi-platform sound driver, which will give us control over the hardware, and allow us to write a music player which will work in a common way on all systems.
[Documentation] [Video]
Lesson P74 - Sound on the SAM Coupe [SAM]
Lets take another look at sound! We'll write a new multi-platform sound driver, which will give us control over the hardware, and allow us to write a music player which will work in a common way on all systems.
[Documentation] [Video]
Lesson P75 Sound on the Camputers Lynx(Beeper) [CLX]
Lets take another look at sound! We'll write a new multi-platform sound driver, which will give us control over the hardware, and allow us to write a music player which will work in a common way on all systems.
[Documentation] [Video]

Grime Series

In this series I remake the old DOS game 'Grime'. This series teaches simple tile drawing.

0. Grime Z80 - coming soon to a computer (or console) near you!
No Description Available
[Video]

1. Grime Z80 - Episode 1 : Multiplatform development on 11 different systems!
No Description Available
[Video]

2. Grime Z80 - Episode 2 : Moving cursor, color tiles and beeps!
No Description Available
[Video]

3. Grime Z80 - Episode 3 : Bring on the Grime! (and bullets)
No Description Available
[Video]


4. Grime Z80 - Episode 4 : Now actually playable!
No Description Available
[Video]


5. Grime Z80 - Episode 5 : Titlescreen and gameover animations!
No Description Available
[Video]

6. Grime Z80 - Episode 6 : Animations and, TI tweaks, improved palette code
No Description Available
[Video]

7. Grime Z80 - Episode 7 : And It's done!
No Description Available
[Video]

8. Grime Z80 - Completed project code summary
No Description Available
[Video]

Yquest Series

In this series I remake the old DOS game 'X-quest'. This series teaches simple tile drawing and hardware sprites on systems where they are available.

Lesson YQuest1 - Introduction and Data Structures
Lets start by having a quick look at the game, and the structure of the game RAM, and the settings which define levels and enemies.
[Documentation][Video]
Lesson YQuest2 - Multiplatform code Part 1/4
YQuest is a little game I wrote for multiple Z80 systems in my Livestreams The bulk of the code is common to all systems, lets take a look at the code and what it does
[Documentation][Video]
Lesson YQuest3 - Multiplatform code Part 2/4
YQuest is a little game I wrote for multiple Z80 systems in my Livestreams The bulk of the code is common to all systems, lets take a look at the code and what it does
[Documentation][Video]

Lesson YQuest4 - Multi-platform code Part 3/4
The bulk of the code is common to all systems, lets take a look at the code and what it does
[Documentation][Video]
Lesson YQuest5 - Multiplatform code Part 4/4
The bulk of the code is common to all systems, lets take a look at the code and what it does
[Documentation][Video]
Lesson YQuest6 - Amstrad CPC Specific code [CPC]
The Amstrad CPC was the first version of the game written... lets check it out!
[Documentation][Video]
Lesson YQuest7 - Master System / GameGear Specific code [SMS]
The SMS / GG share the same code... Lets take a look!
[Documentation][Video]
Lesson YQuest8 - MSX1 Specific code [MSX]
The MSX1 is a tile based system, we'll define the font and graphics and tiles, then use those tiles for drawing our game to the screen.
[Documentation][Video]
Lesson YQuest9 - MSX2 Specific code [MSX]
The MSX2 is a bitmap based system, unfortunately it's screen format will be a little tricky... lets make it behave!
[Documentation][Video]
Lesson YQuest10 - Sam Coupe Specific code [SAM]
The Sam coupe uses a bitmap screen - with relative ease we can port to this system
[Documentation][Video]
Lesson YQuest11 - Spectrum Next Coupe Specific code [ZXN]
Thanks to the Spectrum NEXT's Layer 2 we can port our sam coupe version, and make it work on the Spec Next…
[Documentation][Video]
Lesson YQuest12 - Porting to the Gameboy and GBZ80 [GMB] [GBC]
We're going to port Yquest to the Gameboy - which will be tricky because the GBZ80 has no IX/IY registers (among other limitations) We'll also make the code compatible with the Gameboy Color... Lets figure it out!
[Documentation][Video]
Lesson YQuest13 - Adding hardware Sprites to the Master System / GameGear [SMS]
We've used the Tilemap for graphics, but that's not so great, as it limits object movement to an 8x8 grid... lets use Hardware Sprites instead, and get graphics moving smoothly
[Documentation][Video]
Lesson YQuest14 - Adding hardware Sprites to the MSX1 [MSX]
We used tiles before in our little Yquest game... lets extend it with Hardware sprites for better movement!
[Documentation][Video]
Lesson YQuest15 - Adding Hardware sprites the Gameboy and Gameboy Color [GMB]
We looked at the Gameboy before... lets update it and add hardware sprites to the gameboy and Gameboy Color version to add better sprite movement!
[Documentation][Video]

Photon Series

In this series I make a classic 'Tron' game... this series teaches Pixel plotting and line drawing on all systems

Lesson Photon1 - Introduction and Data Structures
Photon is a tron style game written for many different systems Lets start by having a quick look at the game, and the structure of the game RAM, and the settings which define objects and movements.
[Documentation][Video]

Lesson Photon2 - Line Drawing - Multiplatform code Part 1/4
All photon's drawing routines work with a platform specific 'Pixel drawing command' PSET The Line routines use this PSET to draw from a start to end position
[Documentation][Video]

Lesson Photon3 - Random Numbers and Title Screen - Multiplatform code Part 2/4
We're using the same random number generator from Yquest, but we need to use it in different ways for Photon. Lets take a look!
[Documentation][Video]

Lesson Photon4 - Level Init / Screen Draw / Game Over - Multiplatform code Part 3/4
Lets look at more of the multi-platform code of photon. This time we'll look at the level start and game end code.
[Documentation][Video]

Z80 Tron Clone - Player and CPU movement - Multiplatform code Part 4/4 - Lesson Photon5
No Description Available
[Documentation][Video]

Lesson Photon6 - Amstrad CPC - ASM PSET and POINT for Pixel Plotting
No Description Available
[Documentation][Video]

Lesson Photon7 - SAM Coupe - ASM PSET and POINT for Pixel Plotting
No Description Available
[Documentation][Video]

Lesson Photon8 - ZX Spectrum - ASM PSET and POINT for Pixel Plotting
No Description Available
[Documentation][Video]

Lesson Photon9 - MSX1 & SMS - ASM PSET and POINT for Pixel Plotting
No Description Available
[Documentation][Video]
Lesson Photon10 - GameGear & SMS - ASM PSET and POINT for Pixel Plotting
No Description Available
[Documentation][Video]

Lesson Photon11 - MSX2 - ASM PSET and POINT for Pixel Plotting
No Description Available
[Documentation][Video]

Lesson Photon12 - Spectrum NEXT - ASM PSET and POINT for Pixel Plotting
No Description Available
[Documentation][Video]

Lesson Photon13 - GameBoy - ASM PSET and POINT for Pixel Plotting
No Description Available
[Documentation][Video]

SuckHunt Series

Lets take a look at my little 'Rail shooter' - a cross between Duck Hunt and Operation wolf!

Lesson SH1 - Introduction to Suck Hunt!
Lets take a look at the data structures.
[Documentation] [Video]
SuckHunt! Lesson SH2 - Random numbers and more!
Lets take a look at some essential functions in the multipatform code.
[Documentation] [Video]
SuckHunt! Lesson SH3 - Gun Routines
Suck hunt has 4 guns, each of which has it's own ammo level. Lets take a look at the code which handles them.
[Documentation] [Video]
Suck Hunt! Z80 based stereoscopic gamec Lesson SH4 - More Graphics routines
Lets take a look at more parts of the multiplatform suck hunt code!
[Documentation] [Video]
Z80 Suck Hunt! Sprite Clipping+More - Lesson SH5
While the screen never scrolls up or down, it does scroll left and right, to cope with this we need to 'clip' the sprites, removing any partially offscreen sections. Lets learn how.
[Documentation] [Video]
Lesson SH6 - Sprites and Sounds!
This time we'll look at sprites drawing! We'll also look at the simple sound sequencer, which plays simple sequences of tones to make tunes and sfx.
[Documentation] [Video]
Lesson SH7 - Sprite Animation
When each sprite movement tick occurs, we need to update the sprite according to it's 'rules'. This defines each enemy as unique
[Documentation] [Video]
Lesson SH8 - (objects) Rise from your grave!
When an enemy or background object is 'dead' (offscreen)... it will respawn again at a later time. Today we'll look at the code which resurrects the dead... and also the gameover screen!
[Documentation] [Video]
SuckHunt SH9 - Let the games begin! (LevelInit)
When a level starts, we need to set up all the objects in the level, This uses a 'level definition' to define the enemies, with a few other calculated differences.
[Documentation] [Video]
Lesson SH10 - Amstrad CPC code Part 1 - Sprites and sounds!
Suck Hunt has a large block of platform specific code for each system. Lets take a look at the most interesting parts of the code on the Amstrad CPC
[Documentation] [Video]
Lesson SH11 - Amstrad CPC code Part 2 - Amazing(?) Intro!
Lets take a look at more of the CPC source!
[Documentation] [Video]
Lesson SH12 - Amstrad CPC code Part 3 - The Rest of the suck hunt code!
Lets finish off the CPC version of the game - we'll look at the main loop of the game!
[Documentation] [Video]
Lesson SH13 - ZX Next code Part 1 - Sprites and sounds!
Lets take a look at the most interesting parts of the code on the Spectrum Next!
[Documentation] [Video]
Suck Hunt Programming Lesson SH14 - Spectrum Next code Part 2 - Amazing(?) Intro!
Lets take a look at more of the Spec Next source!
[Documentation] [Video]
Lesson SH15 - Spectrum Next code Part 3 - Title and Game code
Lets take a look at more of the Spec Next source!
[Documentation] [Video]
Lesson SH16 - Sam Coupe code Part 1 - Sprites and banks
Lets take a look at the most interesting parts of the code on the Sam Coupe
[Documentation] [Video]
Lesson SH17 - Sam Coupe code Part 2 - Titles and palettes [SAM]
Lets take a look at the Tilemap, Palette and music code of the sam coupe version of the game.
[Documentation] [Video]
Lesson SH18 - Sam Coupe code Part 3 - Title and Game code [SAM]
Lets take a look at more of the Sam Coupe source!
[Documentation] [Video]
Lesson SH19 - MSX2 code Part 1 - Sprites and banks [MSX]
Suck Hunt has a large block of platform specific code for each system. Lets take a look at the most interesting parts of the code on the MSX2. For the MSX2 hardware, we'll have to covert the sprites into VRAM.
[Documentation] [Video]
Lesson SH20 - MSX2 code Part 2 - Tiles and palettes
Lets take a look at the Tilemap, Palette and music code of the MSX2 version of the game
[Documentation] [Video]
Lesson SH21 - MSX2 code Part 3 - Title and Game code [MSX]
Lets take a look at more of the MSX2 sourcec this time the Title screen and main game code
[Documentation] [Video]
Lesson SH22 - SMS code Part 1 - Sprites conversion and Shutter glasses [SMS]
The Sega Master system of the game has a big advantagec it can support shutter glasses! It also has a big disadvantagec. No bitmap display!... We'll have to convert the sprites to tiles, and use those for the graphics
[Documentation] [Video]
Lesson SH23 - SMS code Part 2 - Tiles and palettes [SMS]
Lets take a look at the Tilemap (used by the title and gameover), Palette and 3D Switching code of the SMS version of the game
[Documentation] [Video]
Lesson SH24 - SMS code Part 3 - Main game loop and Title [SMS]
It's time to finish the suck! Lets look at the last of the suck hunt code!
[Documentation] [Video]


Multiplatform Series

Using code provided that will talk to the hardware, lets write programs that works instantly on multiple systems!

Lesson M1 - Z80 Monitor/Debugger [Z80]
Lets build a simple Monitor Debugger to allow us to see the contents of the registers and memory without relying on a debugger built into our assembler
[Documentation] [Video]
Lesson M2 - String Reading and Memory Dumping! [Z80]
Lets write a program that reads in a string of text from the user.
[Documentation] [Video]
Lesson M3 - String Matching for command reading [Z80]
We've learned how to read in a string, lets compare the string with a list of commands
[Documentation] [Video]
Lesson M4 - A Basic Text Adventure [Z80]
We've written a string reader, and a compare function - now we'll use them to make a simple text adventure
[Documentation] [Video]
Lesson M5 - Arkosplayer for Music and SFX! [Z80]
ArkosTracker and Player are fantastic AY playing tools that are free - lets learn how to use them to play some music and sounds!
[Documentation] [Video]
Lesson M6 - Advanced Interrupt handler template [Z80]
We've looked at interrupts before, but our previous handler could not work with 'Stack misuse'.. if we're super careful we can write an interrupt handler which can work even when we're 'misusing' the stack as a fast reader/writer
[Documentation] [Video]
Lesson M7 - Multiplaform Font and Bitmap Conversion [Z80]
We've used fonts before, but this time lets write a simple font routine that uses the same 1bpp font on all our systems.
[Documentation] [Video]
Lesson M8 - Keyboard processing and redefinable game control input [Z80]
Lets take a look at input processing, we'll learn how we can allow the user to redefine the controls they want to use to play our game.
[Documentation] [Video]
Lesson M9 - Making a PONG - Part 1
At the request of one of my Patreons, we're going to look at a super simple game
[Documentation] [Video]
Lesson M10 - Making a PONG - Part 2
Lets continue with the pong - we need a ball, a CPU player, and some collision detection and the like... Let's finish the job!!
[Documentation] [Video]
Lesson M11 - Simple RLE
Lets learn how to use a simple RLE decompressor to show an image onscreen
[Documentation] [Video]
Lesson M12 - Stack Tricks!
We've looked at the stack before and discussed some tricks we can do with it... Lets look in more detail, and learn how we can manipulate the stack for parameter passing, allocating temporary ram and more!
[Documentation] [Video]
Lesson M13 - Fast Multiplication and Division.
We've looked at some very simple Multiplication and Division before, which just repeatedly added or subtracted a value... that's one solution, but it's pretty slow. Lets look at some better ways to do things!
[Documentation] [Video]
Lesson M14 - SpeedTile software Tilemap Engine (1/3) - (Basic Tilemap)
It's time to start a new series... We're going to look at a multiplatform software Tile/Sprite Engine
[Documentation] [Video]
Lesson M15 - SpeedTile software Tilemap Engine (2/3) - (SuperTile map)
We've looked at some very simple Multiplication and Division before, which just repeatedly added or subtracted a value... that's one solution, but it's pretty slow. Lets look at some better ways to do things!
[Documentation] [Video]
Lesson M16 - SpeedTile software Tilemap Engine (3/3) - (Software Sprites & Sprite Clipping)
We've looked at some very simple Multiplication and Division before, which just repeatedly added or subtracted a value... that's one solution, but it's pretty slow. Lets look at some better ways to do things!
[Documentation] [Video]

ChibiAkumas Series
Lets look at the chibiakuams sourcecode, see how it works, and how to change it!

Lesson Aku1 - Screen Co-ordinates and Text Drawing
Lesson Aku2 - Movements
Lesson Aku3 - Sprite Basics
Lesson Aku4 - The Star Array!
Lesson Aku5 - The Object Array!
Lesson Aku6 - Settings Data
Lesson Aku7 - The Event Stream Basics!
Lesson Aku8 - The Event Stream Code - Part 1
Lesson Aku9 - The Event Stream Code - Part 2
Lesson Aku10 - The Event Stream Code - Part 3
Lesson Aku11 - Player Driver
Lesson Aku12 - Player Driver Part 2
Lesson Aku13 - Player UI
Lesson Aku14 - Background Drawing on the CPC/Speccy - Part 1
Lesson Aku15 - Background Drawing on the CPC/Speccy - Part 2: QuadSprite and SolidFill