It's amazing how fast you can get back up to speed on something when you have an internet and search engines and emulators to test things in.

Having to reboot your development environment to try something out was a real pain in the 80s. You kids don't know how good you've got it ...

I'd like to point out here that if you're not familiar with the restrictions of the that stripe across the middle probably doesn't look like much of an achievement. Trust me, it's cool.

I commented up the source code for reference, it's grabbed from a ton of different tutorials and examples, I'll do a proper blog post about this later.

This was a huge help in getting a basic development environment up and running, really fast:

This is about to point I got to in coding for the 64 about 30 years ago. 😀


@mike I've been debugging a STM32 thing the other day and while I watched the SPI bus my 4 channel scope, using gdb to single step through my code, looking at the register description in a fully searchable digital document, I realized that tracking down a similar problem would have taken weeks back when I started using microcontrollers. Tooling really got so much better & cheaper over the last decades.

@sebastian I think the biggest modern bonus is simply just having multiple computers, or even just enough power to casually spin up a virtual one when you need it and being able to debug code things that think they're the real thing before moving it out into the world.

Access to information too, of course. That's amazingly improved. Yeah, everything's so much easier now. :awesome:

@mike Let's not forget the little things like proper editors. I remember using GWBasic where you could only replace entire lines. And you had to renumber lines to fit one between to existing lines.
And version control ... I recently looked old projects that still had subfolders like release1.0 release1.1 release2.0_rewrite inside them.

When I tell first semester CS students about having to type my own line numbers they immediately question my sanity.

@sebastian you are so right ...

I can't even recall what I used as an editor way back, I think I've just suppressed the memories.

@mike @ajroach42 lemme remember...

the c64's actual screen resolution is not as large as the screen size, and in order to make this stripe as wide as it is, one has to cleverly change the border color register in the proper moment, correct?

@devurandom @ajroach42 yep, pretty much. Hook in when the scan line drawing the screen hits a certain point, then do your changes, then change back again later.

I'm changing the screen colour as well which really is unnecessary to do that way, but it was an easy first draft.


Ah, raster interrupts! :blobfingerguns:

Games used them to switch between graphic and text mode for certain areas of the screen, e.g. to display your status at the bottom, or to have more than 8 sprites at the same time.

@devurandom @ajroach42

@mike @devurandom @ajroach42
If you changed the sprite location pointers and their coordinates on a raster interrupt, you could effectively display different sprites on different horizontal areas of the screen. What didn't work was collision interrupts, because you still only had 8 actual sprites, so to find out which sprites collided, you needed to do more trickery, like finding out where the raster line was at the moment, and so on.

@mike @devurandom @ajroach42
And naturally, you couldn't have a sprite at the bottom collide with a sprite at the top, so these were used, for example, to have several rows of enemies that you could shoot, like in Galaga.

@mike is that like a pixel by pixel thing you had to do to achieve that? 🤔

@Steve nah it's just changing the colour of the entire border, but syncing it up so it happens when the screen is being redrawn at specific points.

@mike Nice meet to you in here,I like your site. when I was a boy I used to IRC chat, but nobody used IRC now.

A lot of people still use IRC. That's still where I do most of my online chat. It all depends on on the topic you want to discuss though I guess.

@loke @mike
Could please tell me other online chat method? thx

@fdy @mike That other people use? They seem to be using Facebook, Discord, Slack, Whatsapp

That was my first exposure to interrupts on a CPU. I'm assuming you used the HBL here?


You're chasing the beam! That's raster timing folks. Yeah, that's hard.

Do you have the source code (or guide you followed to create your code) posted anywhere?

@profoundlynerdy oh hi, yeah I'm writing a bit of a blog post up about the whole thing as I rediscover it, I'll have sources and links in there. Right now it's a soup of cut and paste junk where I've tried different stuff and all uncommented.

This was a very helpful resource:

@mike cool. Thanks!

I'm teaching myself 6502 assembly right now. I'm about 50% of the way through the Jim Butterfield's Machine Language for Commodore Computers. I'm using 64TAS on Linux to learn.

Eventually, I want to master source code archeology and reconstruct the source code to some of my favorite games. That may be beyond my reach, but I won't know until I try.

Sign in to participate in the conversation
Chinwag Social

Consider this a friendly, local pub. Make yourself at home, bring your friends, have a good time! Meet new people, have a laugh, enjoy the ambience, and the Oxford commas.