Hacker News new | comments | ask | show | jobs | submit login
Break down of a C64 demo effect (nurpax.github.io)
187 points by nurpax 7 months ago | hide | past | web | favorite | 40 comments

David Murray, the 8 Bit Guy on Youtube, he doesn't have the best delivery but he's a fascinating watch with a lot of his videos. His favorite is the C64 and has done some amazing videos about the hardware and history, etc, and has talked about how various tricks like this work. It was an amazingly capable machine, and the folks who exploited every little aspect were/are clever as hell.

> It was an amazingly capable machine, and the folks who exploited every little aspect were/are clever as hell.

If you had been alive and busy with computer programming back in the day you too would have been clever as hell. It was the only way you'd get anything done and if there is one thing that will bring out the hacker in people it is a bunch of unreasonable constraints and a job that needs to be done anyway.

> If you had been alive and busy with computer programming back in the day you too would have been clever as hell.

Don’t underestimate the power of internet today and the ease of obtaining information - that certainly was not the case in the ‘80s. Unless you were close to demo groups you were left with two choices: a) reverse engineer the code (good old “Monitor 49152”), or b) give up

There were a ton of good hobbyist magazine back in the day, many of which dedicated a page or two to low-level hackery

True. As a kid I was eagerly awaiting the first week of the month for that one magazine that carried a column called “C-64 intro service” about low level intro- and demo-programming. But the pace of printed information is terribly slow, esp. if you can’t get many of them where you live.

I remember waiting for someone to explain how the “giant scroll” worked (letter the size of the whole screen, with borders removed) as I couldn’t disassemble the demo successfully. Months later, the article appeared explaining the technique. To a young inquiring mind that seemed like eternity.

I just read the little excerpt from a newspaper in the article about the genesis of the transistor and it struck me that the technical details in those paragraphs were way above what an audience of today would ever be exposed to from a technical level.

You made me search for “genesis of the transistor” and I found this old gem: https://youtu.be/WiQvGRjrLnU

Here is a quote from that film that makes me a bit envious of those work environments: “Working in an environment which fosters the uninhibited search for answers to riddles of science related to communications’ needs.”

Wow, to work in an environment that has that sort of mission must be rewarding.

That's true. With no internet and only a crappy book, my use of the ZX 80 was pretty poor compared to what I would have mentally capable of doing, if I had access to further knowledge.

Cleverness could express itself in the way you actually gathered documentation... Back in those days, it was really tough to get any. For example, I was out of the scene. So I decided to create a disk magazine to talk bout the scene, hopefully getting in contact with it. That's exactly what happened and a s a result of that, I got access to one marvelous piece of software I couldn't write by himself : a MOD player (included with SoundBlaster DMA access which was very hard to code)...



I still have my copy after all these years.

Yup, constraint = hack/freedom is one of the paradoxes as long as there are hidden degrees of freedom that can break the constraints.

Here’s some old c64 intros I did, including a trick of bank switching to fake z ordering of fonts and sprite scs rasters, as well as using FLD to stabilize rasters in the presence of moving sprites in both PAL/NTSC modes.


I think it may be less "constraint" and more "fixed platform".

Meaning that every C64 was like very other C64, so you knew what you had to work with on the hardware side.

You could see this with consoles as well, as the games steadily improved as developers learned how to push that fixed hardware around (though the cartridge ones often allowed in-cart chips to assist).

I guess we have gotten so incredibly used to either being able upgrade piecemeal, or simply replace wholesale every few years, that having a steady set of hardware to explore and learn has become "foreign" in a way.

Compare and contrast the C64 and say the RPi. the former was more or less steady for 24 years, while the latter have been releasing beefier variants every 2 years or so.

> Meaning that every C64 was like very other C64, so you knew what you had to work with on the hardware side.

Well, other than:

1) PAL vs NTSC systems. True compatibility breaker.

2) Two different versions of SID sound chips (and every SID being more or less unique)

3) Different VIC-II versions (or at least some chips where VSP (variable screen positioning, a fast method for horizontal scrolling) works and some where it doesn't)).

A lot of demo effects are almost like magic tricks --- before you understand how they're done, they seem like impossible magic; but once you do, you think "that's so simple, why didn't I think of that?"

Animation by essentially "panning" inside a larger pre-rendered image is one of those tricks:


I'm not so sure how simple the example you mentioned is. I've seen it many times and I'm still not sure how I would generate the source image.

Old-school demos have another common trait with magic. Like the best stage magic, you know you are being fooled - but even after seeing how the trick is done, you remain amazed by it.

The best one I have seen: Cubase-64 [0]

0: https://www.youtube.com/watch?v=artEQkifGG0

> Animation by essentially "panning" inside a larger pre-rendered image is one of those tricks

Hand animated cartoons would often used that trick as well.

The anime Bubblegum Crisis used a massive cityscape painting for their panning shots.

The great thing about the C64 is that it never changes. It's the same hardware as it was last year, and it'll be the same hardware next year. Modern systems have plenty of unreasonable constraints, but the foundations are always shifting. How many cool web hacks from 5 or 10 years ago will run unmodified on a modern web browser?

The various board revisions introduced some changes. Particularly notable were the bug fixes to the original 326298 board. We could never get certain games/demos to work on our early C64. I still look wistfully at Gauntlet...

You just described why game developers prefer to target consoles.

Yeah, i just pulled up a list of RPi variants to check and it has been releasing new generation Bs every 2 years or so.

In those years it has gone from a 700mhz single core ARM11, to a 1.4ghz quad core Cortex A53.

The c64 in contrast stayed largely fixed for over 2 decades!

I had a hand-me-down TRS 80 Model 100 rather than a C64. Got my first "IBM clone" PC in 1990 or 1991 IIRC. Totally missed out on the other 8bit micros, but I learned a hell of a lot with that Model 100. :)

I feel like we moved away from clever into this copy this exact way culture.

I like his delivery. He speaks clearly, goes over the main points in a slow, methodical, easy to understand manner -- and best of all, doesn't have generic YouTuber, "WHAT'S UP GUYS THIS IS DROWYOSHI3288 BACK WITH ANOTHER VIDEO" type presentation.

Oh, yes, he's lightyears ahead of annoying youtubers. I'd just love to give him a couple of pointers. But I still subscribe, he's great.

"he doesn't have the best delivery"

I think he is very good at keeping the content interesting. I never get the urge to fast-forward and I've got the attention span of a 2 year old with ADD.

VGA has redefinable character sets. I tried doing some animation with them back in the day, but I ran into some kind of limitation that I don't recall. I was trying to accomplish an animation effect by altering the character definitions in realtime, which I recall being very slow. It never occurred to me to do something like this. Now it'll be everything I can do to stop myself from trying this on an old PC! Goodbye weekend productivity!

Redefining the character set was how some text-mode programs like the old Norton suite got "graphical" mouse cursors and the like.

If I remember well to overcome flicker with custom Character you has to wait for vsync.

I don't remember what esd the port for that, somethin un the 4p sets... except if you wait for VSYNC like if you were usibg a double framebuffer.

For some ideas about what can be done in text mode on pc, see this demo [1].

[1] http://www.pouet.net/prod.php?which=5110

Weekend may not be productive, instead go for memorable

As someone who spend half their teenage years drawing on graph paper creating custom character sets for use with graphics and large sprites, this is a pretty cool and novel way to do an animation.

I loved this writeup, original author of it, whenever you see these comments. Thanks for writing this up.


Clever stuff. I like that the author used modern techniques (python) to generate the custom C64 character set.

That was usually the case “back in the day”, people would use their Amigas and Ataris to prep work - I’d use my Atari ST and GFA Basic to generate all sorts of lookup tables which was too tedious to do on the C-64 (esp. if all you had was a “datasette”)

I also used some Haskell in another C64 project. Made a VICE memory snapshot parser for digging some values out of RAM. Haskell was a lot handier for byte level access than Python.

Old schooler here, mainly Amiga 500. If you want to drown in old and new c64 stuff, visit:


Nice demo. Reminds me of a well done Galaxians clone for Atari 400/800 that used programmable character set animation for the aliens. It was impressive.

Fun fact: The Commodore VIC-20 lacked hardware sprites, so programming the character set was how you did any animation on it. There were still some pretty amazing games given that limitation.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact