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

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] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]

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] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]


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]

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] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]

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] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]
Lesson P20 - Sound on the Sam Coupe [SAM]
This tutorial will teach you how to make sound on the Sam Coupe
[Documentation] [Video] [Forum]
Lesson P21 - Sound on the Gameboy and GBC  [GMB] [GBC]
Learn about how to make sound on the Gameboy and Gameboy Color
[Documentation] [Video] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]
Lesson P32 - Hardware Sprites on the CPC+ [CPC]
Learn about how to use the Sprite hardware of the Amstrad CPC+ or GX4000
[Documentation] [Video] [Forum]
Lesson P33 - Bitmap Graphics on the Camputers Lynx [CLX]
Draw Graphics on the Campluters Lynx
[Documentation] [Video] [Forum]
Lesson P34 - Sound and Keyboard on the Camputers Lynx  [CLX]
Use the Beeper sound of the Lynx, Red from the Keyboard
[Documentation] [Video] [Forum]
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] [Forum]
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] [Forum]
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] [Forum]
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]






















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]






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