Commodore TutorialsIn this video I talk about my new book "Making Games For The Commodore 64 In Assembly Language". I show some of the contents and the print quality.
The book can be ordered on my profile page at lulu.com (scroll to the bottom of the page). There are three different products: the physical book, the eBook and a blank (lined) notebook for those who like to take notes while reading.
I Wrote a Commodore 64 BookCommodore Tutorials2025-10-09 | In this video I talk about my new book "Making Games For The Commodore 64 In Assembly Language". I show some of the contents and the print quality.
The book can be ordered on my profile page at lulu.com (scroll to the bottom of the page). There are three different products: the physical book, the eBook and a blank (lined) notebook for those who like to take notes while reading.
lulu Bookstore: lulu.com/spotlight/boardbBehind the Scenes of My New Book - C64 Building BlocksCommodore Tutorials2026-08-02 | This is a quick teaser video to show some of the content of my upcoming book about programming games for the Commodore 64.Sprite-Character Collision: What Happens Next?Commodore Tutorials2025-11-28 | This video is the second video in a mini series about how to make a small test game for the Commodore 64. This video explains how we can make something happen when sprites collide with characters on the screen. I call this character reaction.
00:00:00 Introduction 00:00:34 A quick repetition about the screen setup 00:01:45 Making the coin disappear 00:05:42 Character collision 00:10:05 Character reaction 00:12:37 Updating the coin counter 00:15:47 Changing the sprite graphic 00:16:07 Draw exit door 00:17:41 Resetting the game 00:18:14 Closing wordsHow To Do Sprite-Character Collision on C64Commodore Tutorials2025-11-21 | This is the first video in a mini series about how to make a small test game for the Commodore 64. The skill level is intermediate, so I don't explain all the basics of Assembly language in the video. This first video explains how sprite-character collision works.
00:00:00 Introduction 00:00:47 Explaining the test game and the process 00:02:43 Sprite position and size + Screen columns and rows 00:09:00 Different sprite-character collisions to check 00:11:02 Finding the sprites position in relation to the characters 00:13:27 Screen tables 00:15:26 Handling the default offsets (subtract start positions) 00:17:14 Translating the sprite position into row and column numbers 00:23:51 Explaining the code 00:27:38 Reading joystick subroutine (sprite movement) 00:29:02 CheckCharCollision macro 00:30:23 checkCharCollision subroutine 00:34:45 Checking screen codes 00:37:10 Closing wordsBook Updates November 2025Commodore Tutorials2025-11-10 | This is a short video where I talk about the future of book corrections for the book Making Games For The Commodore 64 In Assembly Language. I show where you can find the document that shows what corrections have been made.
boardbtutorials@gmail.comCommodore 64 Screen RAM ExplainedCommodore Tutorials2025-11-07 | For beginners of Assembly Language programming there are many challenges. Changing screen RAM or knowing where to put it can be confusing. This video will show you how to do it, and also look at some issues to avoid.
In this video I also talk about three minor mistakes I made in the book I wrote. I show what mistakes it was, and on what pages those mistakes are.
00:00:00 Introduction 00:01:23 Book corrections 00:05:11 Looking at the Commodore 64 memory 00:10:18 A simple test program 00:11:55 Inspecting the C64 memory using a monitor 00:15:20 The bits inside $d018 00:20:12 Second test program 00:21:04 Issues to avoid when changing screen RAM 00:27:58 Explaining the code example 00:34:55 Closing wordsHow does sprite priority work on the Commodore 64?Commodore Tutorials2025-10-30 | In this video I will show you what sprite priority is, and how we can use it in a game. I also talk about sprite overlay, and how we can use SpritePad to create detailed and colorful sprite graphics.
00:00:00 Intro 00:00:35 Making sprites appear behind the background 00:05:48 Change bits using Exclusive OR 00:07:56 Sprite layering 00:09:28 Sprite overlay 00:12:00 Sprite overlay in SpritePad 00:14:26 A simple code example 00:17:00 Closing WordsCommodore 64 Extended X-AxisCommodore Tutorials2025-10-24 | This video will show you how to move sprites on the Commodore 64 over the extended X-axis on the screen.
00:00:00 Intro 00:01:08 Welcome 00:04:10 An example of "normal" sprite movement 00:06:33 Some quick repetition about the screen size 00:07:40 Memory address $d010 00:12:01 An example of moving across the extended border 00:13:58 Looking at the code to handle $d010 00:18:35 Closing WordsC64 Scrolling Part 3Commodore Tutorials2025-02-07 | This is the third and final episode of a mini series about how to make scrolling work on the Commodore 64, using Assembly language.
This is something I call a scrolling simulator. It’s a screen you can scroll pixel by pixel by pressing the S key on the keyboard. The point is to see when the screen RAM shifts from $0400 to $0c00 and vice versa. You’ll notice that this happens every eighth time you press the S key.
00:00:00 Intro 00:00:16 Welcome 00:01:57 A Quick Repetition 00:03:32 Exporting Data From CharPad 00:06:43 Code Performance (Cycles) 00:15:45 Measuring Code Time With Raster Interrupts 00:22:02 Explaining the Code 00:58:01 Closing WordsC64 Scrolling Part 2Commodore Tutorials2025-01-25 | This is the second episode of a mini series about how to make scrolling work on the Commodore 64, using Assembly language.
00:00:00 Intro 00:00:03 Welcome 00:00:49 Looking at NES Scrolling 00:02:16 The Camera System 00:06:56 Looking at the Camera System in CharPad 00:10:01 Repetition about Moving Screen RAM 00:12:20 Changing Screen But Not Color RAM 00:15:19 Changing the Screen 1 00:18:07 A Bad Scrolling Example 00:19:43 Changing the Screen 2 00:23:25 Comparing Scrolling to Static Levels 00:27:49 Drawing the Scrolling Level 00:30:11 Making Map Tables 00:36:34 Closing WordsC64 Scrolling Part 1Commodore Tutorials2025-01-16 | This is the first episode of a mini series about how to make scrolling work on the Commodore 64, using Assembly language.
00:00:00 Intro 00:00:22 Welcome 00:01:11 Looking at Some C64 Games 00:04:59 Repetition - Screen Ram and Color Ram 00:09:10 How to Change the Location of Screen Ram 00:15:06 The Screen Setup and VIC Banks 00:24:19 What Happens When We Change Screen Ram? 00:28:32 Looking at the Code to Change Screen Ram 00:36:45 Repeating How the Screen Setup Works 00:37:58 Adjusting the Borders 00:44:37 Adjusting the Horizontal Border and Scroll Bits 00:52:17 Closing Words
Intro Music: Flimbo's Quest - Reyn OuwehandC64 Painting the ScreenCommodore Tutorials2024-12-31 | In this video we look at how we can paint backgrounds or level graphics using tiles on Commodore 64.
00:00:00 Intro 00:00:47 Opening Words 00:01:49 Looking at Some Basics 00:02:35 The Screen (Screen RAM & Color RAM) 00:10:20 C64 Screen in CharPad 00:13:04 The Tile Draw Logic 00:19:17 Tiles in CharPad 00:31:02 Looking at the Tile Routine in Slow Motion 00:33:07 Looking at the Assembly Code 00:37:54 Room Library (Loading a Screen) 00:44:12 Tile Library (Drawing a Tile) 00:53:08 Tileset 01:05:05 Looking at Room Loading in Real Time 01:06:03 Closing Words 01:06:32 Outro
Music: AI 2 - Vibe Mountain Ocean Loader 2 - Martin GalwayC64 Sprite AnimationCommodore Tutorials2024-12-13 | This video was made in response to a comment I got earlier this year, concerning the C64 video about sprite animation. Hopefully this new and improved video will be more clear and motivational.
NESmaker Forum: nesmakers.comC64 Assembly Programming Part 36 – Bitmap GraphicsCommodore Tutorials2024-05-08 | In this episode we look at a graphics mode on the Commodore 64 called bitmap graphics, and how we can display our own pictures using that method.
Noice Kick Assembler Memory Viewer https://kickassmemoryview.insoft.seC64 Assembly Programming Part 35 – Reading From Diskette and Changing VIC BanksCommodore Tutorials2024-05-07 | In this episode we look at how we can read from diskette on the Commodore 64. We also take a look at how we can change the VIC bank, and why we would want to do that.
DirMaster (Windows): style64.org/dirmasterC64 Assembly Programming Part 34 – Playing Music and Reading KeyboardCommodore Tutorials2024-05-05 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
A Computer In My Backpack (Linus Åkesson) PS! This is a music file we can use for this course in our test games. Please do not use this music in a game you are going to publish, without asking Linus first. linusakesson.net/music/sidstuff/backpack.php
00:00 Introduction 01:01 Playing Music 36:57 Reading Input from the KeyboardC64 Assembly Programming Part 33 – The HUDCommodore Tutorials2024-05-04 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
What is the HUD? How can we make our own, and how does it work? We take a look at these things in today's episode.
HUD en.wikipedia.org/wiki/HUD_(video_games)C64 Assembly Programming Part 32 – Room Info and Create SpriteCommodore Tutorials2024-05-03 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
In this episode we look at how we can load different things into our rooms, and how a special subroutine called createSprite in the Sprite Library is going to help us do that.
01:30 Create Sprite 16:51 Room Info Tables 18:55 Load Room 32:00 Sprite Info TablesC64 Assembly Programming Part 31 – Sprite Collision and ActionsCommodore Tutorials2024-05-02 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
In this episode we look at how we can check for collisions between sprites using a bounding box (hitbox). We also see how we can make an action system for other sprites, so we can make enemies that move or perform actions at the same time as the player.
00:25 Stretching Sprites (Double Width / Double Height) 03:48 Sprite Collisions 35:38 Sprite ActionsC64 Assembly Programming Part 30 – Sprite AnimationCommodore Tutorials2024-05-01 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
How can we animate sprites on the Commodore 64, and how can we make a system that keeps track of animations for multiple sprites? We look at some examples of that in today's episode.
Commodore 64 Sprites: c64-wiki.com/wiki/SpriteC64 Assembly Programming Part 29 – Char Collision and ReactionCommodore Tutorials2024-04-30 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
In this episode we look at how we can make the sprite check character collision, and how we can make different things happen when we collide with different chars.
00:00 Char Collision Library 40:00 Reaction LibraryC64 Assembly Programming Part 28 – Input and Sprite LibraryCommodore Tutorials2024-04-29 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
We take a look at how we can include joystick input and sprite movement together with our previous code. This will result in something that is starting to resemble a game.
00:00 Project Updates (new tables, constants and variables) 21:38 Sprite Library 33:08 Input LibraryC64 Assembly Programming Part 27 - Room LibraryCommodore Tutorials2024-04-28 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
In this episode we look at how we can use our tile library from last time to draw our levels (rooms). We do that by making a new library, the Room Library.
00:00 Room Tables and Variables 17:40 Room LibraryC64 Assembly Programming Part 26 - Tile LibraryCommodore Tutorials2024-04-27 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
00:00 Screen Tables and Placing Characters on Screen 41:23 Our First Macros (DrawChar & DrawTile) 46:25 Tile LibraryC64 Assembly Programming Part 25 - System and Interrupt LibrariesCommodore Tutorials2024-04-26 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
In this episode we look at how we can set up the SYSTEM and INTERRUPT libraries. This will create a base for the rest of our code.
00:00 System Library 24:35 Interrupt LibraryC64 Assembly Programming Part 24 - Getting StartedCommodore Tutorials2024-04-25 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
Kick Assembler Manual: http://theweb.dk/KickAssembler/webhelp/content/cpt_Introduction.htmlC64 Assembly Programming Part 23 - Raster InterruptsCommodore Tutorials2024-04-24 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
We look at how we can set up our screen exactly how we want it, including our custom character set. We also take a look at some different, more advanced, setup techniques for our screen. The KERNAL is a part of the C64 operating system, and there are a ton of helpful things in there. We take a look at a few examples of that in this episode.
00:13 Screen Setup 37:30 The KERNALC64 Assembly Programming Part 21 - Stack and Zero PageCommodore Tutorials2024-04-22 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
In this episode we look at two things that will be very helpful to us, the Stack and Zero Page. These things can be a little complicated at first, so I highly recommend playing around with this to get some practice.
00:28 The Stack 25:09 Zero PageC64 Assembly Programming Part 20 - Macros and SubroutinesCommodore Tutorials2024-04-21 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
00:00 Subroutines 23:45 MacrosC64 Assembly Programming Part 19 - Project SetupCommodore Tutorials2024-04-20 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
We take a look at how we use the import function in Kick Assembler, and connect the memory map file with the files from our project folder. We also take a look at how the finished game is set up, as well as looking at how we can use a config file.
00:00 Memory Map 18:46 Noice Kick Assembler Memory Viewer 27:00 The HUD 33:48 A Project Overview (the finished game)C64 Assembly Programming Part 18 - Memory MapCommodore Tutorials2024-04-19 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
Planning our memory usage... Where do we put our sprites or the character set in memory? How do we know how much space the tileset takes up in RAM? We look at these things and more in today's episode.
Sidplay 3 - Music Player (Windows) https://csdb.dk/release/?id=221083&show=notes
Machine Language for the Commodore 64 and other Commodore Computers - by Jim Butterfield project64.c64.org/Software/mlcom.pdfC64 Assembly Programming Part 17 - CharPadCommodore Tutorials2024-04-18 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
In this episode we look at how we can make our own background graphics using the application CharPad. We also see how we can use our custom character set on the Commodore 64.
00:00 Using a Custom Character Set on the Commodore 64 11:33 CharPad TutorialC64 Assembly Programming Part 16 - Character SetCommodore Tutorials2024-04-17 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
What is a character set on the Commodore 64? Why do we need it and how do we use it? We take a close look at these things, as well as looking at how we can make our own to make background graphics, and how much space that takes up in memory.
Commodore 64 Screen Codes: sta.c64.org/cbm64scr.htmlC64 Assembly Programming Part 15 - Reading Joystick InputCommodore Tutorials2024-04-16 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
00:00 The Commodore 64 Joystick 04:44 A Simple Joystick Example 09:00 Configuring Joystick Input in the VICE Emulator 14:40 A Detailed Look at How the Joystick Works 20:53 Joystick Reading Routine 42:19 Moving a Sprite with Joystick InputC64 Assembly Programming Part 14 - SpritePadCommodore Tutorials2024-04-15 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
00:00 Repetition 08:38 SpritePad 38:33 Making Our Sprite Appear on the ScreenC64 Assembly Programming Part 13 - SpritesCommodore Tutorials2024-04-14 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
What are sprites? How do they work on the Commodore 64? How are they stored in RAM? How can we make our own sprites? We take a look at all these things in today's episode.
Dustlayer - Beyond the Screen: dustlayer.com/vic-ii/2013/4/25/vic-ii-for-beginners-beyond-the-screen-rasters-cycleNot Opcodes. Im SorryCommodore Tutorials2024-04-14 | So I have been calling LDA, STA and the other three letter commands "Opcodes". That is not correct. They are called "Mnemonics". This video explains my mistake. This shouldn't have happened, since I am so meticulous about using the correct terms.... I'm really sorry.C64 Assembly Programming Part 12 - The ScreenCommodore Tutorials2024-04-13 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
In this episode we take a look at how the screen on the Commodore 64 is set up and how we can place characters at specified positions. We also look at how the we can change the color of the characters.
C64 Demo: Border Intro by Hokuto Force: youtu.be/X4X9RyOP6Vg?si=ufLxIWIuLx3A-AO_C64 Assembly Programming Part 11 - CPU & Bit ManipulationCommodore Tutorials2024-04-12 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
01:45 Program Counter (PC) 13:38 CPU Flags (Status Register) 19:25 Bit Manipulation (Bitwise Instructions)C64 Assembly Programming Part 10 - Math, Loops and BranchingCommodore Tutorials2024-04-11 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
We take a look at how we can perform some very basic math in Assembly Language and how we can create loops to repeat a piece of code. In order to make our code do decisions we use branching.
02:20 Adding and Subtracting 09:50 Loops 15:35 BranchingC64 Assembly Programming Part 9 - Assembler & MnemonicsCommodore Tutorials2024-04-10 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
PS!!!! I was recently corrected by someone who knows what they are talking about. I have been calling LDA, STA and the other three letter commands "Opcodes". That's not correct. They are called Mnemonics and the corresponding number code in machine language is called an Opcode. I apologize for the confusion this may have caused.
What is the assembler and how does it work? In this episode we take a closer look at that, as well as taking a closer look at opcodes.
Noice Kick Assembler memory viewer: https://kickassmemoryview.insoft.seC64 Assembly Programming Part 8 - TablesCommodore Tutorials2024-04-09 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
We take a look at how tables work in 6510 Assembly Language. We also learn some new opcodes that we need when working with tables.C64 Assembly Programming Part 7 - Basic UpstartCommodore Tutorials2024-04-08 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
In this episode we take a closer look at what actually happens when we start our program / game. We learn what BasicUpstart2 means and how the different BASIC commands help us.
I simplified the "10 SYS 2064" a bit in this video. If you want to read more about the details on how the bytes are actually set up, you can read this great article:
Commodore 64 memory map: sta.c64.org/cbm64mem.htmlC64 Assembly Programming Part 6 - Variables & ConstantsCommodore Tutorials2024-04-07 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
In this episode we look at what variables and constants are and how we can use them. We also take our first look at an example of Assembly code.C64 Assembly Programming Part 5 - Number SystemsCommodore Tutorials2024-04-06 | ---------------- PS!!! There's a mistake in the chart for the different addressing modes. Immediate and Absolute are mixed up. I'm sorry about that. ----------------
My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
In this video we take a look at the different number systems we can use when programming in Assembly Language, and when to use the different number systems.
Commodore 64 Memory Map: sta.c64.org/cbm64mem.htmlC64 Assembly Programming Part 4 - Memory (RAM)Commodore Tutorials2024-04-05 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
We take a look at the Commodore 64 RAM.C64 Assembly Programming Part 3 - The BasicsCommodore Tutorials2024-04-04 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
00:00 Introduction to Assembly Language 07:30 Inside the Commodore 64 10:40 The 6510 CPUC64 Assembly Programming Part 2 - Dev Setup (macOS)Commodore Tutorials2024-03-22 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series:
Installing and setting up the development environment for macOS:
- Java - Kick Assembler - Sublime Text - VICEC64 Assembly Programming Part 2 - Dev Setup (Windows)Commodore Tutorials2024-03-22 | My book Making Games For The Commodore 64 In Assembly Language is the perfect companion resource to this video series: