28c3: Behind the scenes of a C64 demo

Ғылым және технология

Download high quality version: bit.ly/uLOyxu
Description: events.ccc.de/congress/2011/Fa...
Ninja / The Dreams: Behind the scenes of a C64 demo
C64 "demos" were the root of the whole demo-scene-thing and they are still the main force keeping the C64 alive today. Audiovisual pleasure, still pushing hardware limits, still exploring different ways of expression. But what is typically happening inside the machine when you watch a demo? What effort is needed to entertain the audience? This talk will give you an inside look at the steps taken for the award winning demo "Error 23" given first hand by one of its main programmers.
This talk extends previous talks and documentation about the Commodore 64 and its demo effects by adding real-life challenges and experiences to it. What were the basic ideas? What obstacles were on the way? How did they get solved? 6502 assembly knowledge is really not required, some general understanding about assembly and low-level computing will be useful, though (think of stack, timer, cycles...). This isn't about theory, this is for real ;)
Topics include (but not limited to):
Explaining design choices
Basic ideas behind the effects
Data compression techniques
Load stuff while displaying effects
Dirty tricks which make your computer science professor run away
Synchronization and linking
how to keep it all in 64KB RAM

Пікірлер: 65

  • @rossdtool
    @rossdtool4 жыл бұрын

    I think that back in 1982 even the designers and engineers of the 64 didn't realise how powerful the machine really was.

  • @Starredmediasoft

    @Starredmediasoft

    4 жыл бұрын

    Well I swear that without modern compilers and tools all this magic wouldn't be possible with just one life

  • @bsdetector6908

    @bsdetector6908

    3 жыл бұрын

    @@Starredmediasoft compilers? you mean assemblers. No compiler available today could generate 6502 assembly comparable to a talented human's.

  • @Starredmediasoft

    @Starredmediasoft

    3 жыл бұрын

    @@bsdetector6908 well, actually cross asm are called compiler, maybe because despite they generate 1:1 code they also have some features that allow to generate asm code with some script

  • @jonnyj.

    @jonnyj.

    3 жыл бұрын

    @@Starredmediasoft Yes, but there is literally no mainstream compiler in existence that can generate compiled code as efficiently for a 6502 as a highly skilled asm programmer. Its why c64 demos are so insanely impressive

  • @ProBloggerWorld

    @ProBloggerWorld

    7 ай бұрын

    I wouldn't say powerful. Capable, if used creatively by software, is better in my point of view. Without proper knowledge of the technical background of an effect, they can look rather dull. For example, many $d011 trickeries started as bugs, and people tried to find a stable way to recreate the accidentally caused effects (VSP, FLD). It took quite some time to find out what you could do with an "error" called Line Crunch ($d011). Also, many effects were heavily inspired by the Amiga and re-engineered on C64. Another thing is that today's extremely impressive demos could only be done in a reasonable amount of time with cross-development. Tooling got better. Maybe the Atari ST was the last machine that opened new possibilities simply by using non-obvious software hacks to tweak the hardware; the Atari ST design is heavily inspired by the C64 design, and maybe that's why.

  • @petrusscott3038
    @petrusscott30383 жыл бұрын

    After 40 years it is still AWESOME!!

  • @aki_128
    @aki_12812 жыл бұрын

    This is really cool workshop. I'm from the Spectrum scene, but the principles of making demos are the same. Big respect!

  • @ProBloggerWorld
    @ProBloggerWorld5 жыл бұрын

    Simply impressive. Thx for sharing the knowledge. This is a great addition to the infamous VIC article.

  • @HelloKittyFanMan.
    @HelloKittyFanMan.5 ай бұрын

    Yes, THANK YOU! Because even up here at the end of 2023 Land I believe this video from just over a decade before is still pretty current! But look at how many really great C64 demos have been made since 2012 there! I wonder even what other hair-raising techniques have been discovered and developed in this decade!

  • @NewFunnyAnimations
    @NewFunnyAnimations5 жыл бұрын

    You are cool guys! On an 8-bit computer, you do something that many people cannot do on modern machines.

  • @Boxing_Gamer

    @Boxing_Gamer

    10 ай бұрын

    Yes I'm using modern game engines and they can make better graphics on a c64 than I can on modern machines 😂

  • @gabydewilde
    @gabydewilde6 жыл бұрын

    To give an idea of manual compression. Take the bit of code shown at #28:58 it repeats BD or LDA and 8D or STA each followed by 2 bytes that make up the address. Since this is self modifying code the addresses are changed every time it runs. The initial values are not necessary as there is code that can write those values inthere. All you would need is a repeating BD ?? ?? 8D ?? ?? which can just be BD 8D BD 8D BD 8D which is "easily" compressed to a fill loop that fills 900A to 910A with BD 8D. You then try the different approaches available. 1) let the cruncher figure it out 2) put BD 8D as default values then let the cruncher figure it out and 3) find enough 2 byte patterns to justify writing your own loop. Trying those 3 you look at size vs not having default values. 97% of the time you find the effort produced an unproductive non result and try the next "trick". If you have enough barely productive tricks they can add up to something significant. The bit of code at #28:10 looks exactly the same but there is only a single byte behind the 91 or STA instruction. The 2 byte fill wouldn't work there, it would have to skip 4. You could manage both by first filling the whole area with BD then doing a 5 byte skipping filler for the #28:59 and a 4 byte skip for #28:10.

  • @RogelioIturra
    @RogelioIturra3 жыл бұрын

    I found this and your congress are just AMAZING! THANKS FOR SHARING YOUR KNOWLEDGE! NEW SUB!

  • @HelloKittyFanMan.
    @HelloKittyFanMan.5 ай бұрын

    Wow, hard to imagine that picture of the lady you're talking about as being hand-drawn! When you mentioned cross-dev. I was thinking that part of that was for using an existing photo and just reducing its color depth and clearing out the unwanted background and things, then reducing the color depth and translating it from Windows/Mac/Linux to C64. But NO, oh my gosh! Do you guys do _some_ of the somewhat photo-quality pieces that way, though?

  • @MissPeggle
    @MissPeggle12 жыл бұрын

    Very interesting!

  • @frontenbrecher
    @frontenbrecher12 жыл бұрын

    "..and then you start doing some magic, and if you are good, it fits..."

  • @HelloKittyFanMan.
    @HelloKittyFanMan.5 ай бұрын

    WOW, I had never heard of farming out some computations from a Commodore 64 to a 1541 or others until now! How would it hold up with a 71 or 81 as the only drive, or some other one like a 1001, 4040, 8250, or 9090 (HDD) hooked up through the user port with an interface? And when you mention mechanics are you saying that it uses the floppy's stepper motor or the hard's stepper or voice coil in the process? Which sort of "mechanics" are you talking about, and why? And by a hard disk, would even a CMD or Lieutenant Kernal work?

  • @thearchiveable
    @thearchiveable5 жыл бұрын

    Skillfull guy.

  • @piraat6666
    @piraat66668 жыл бұрын

    very trippy

  • @HelloKittyFanMan.
    @HelloKittyFanMan.5 ай бұрын

    Interesting that a lot of this is discovering how to use chip flaws to your advantage, which is why those are things that even Commodore or MOS didn't know were possible back then! I thought everything that was programmable was there by design, but... nope! Very cool!

  • @boony64
    @boony647 ай бұрын

    "Do you want to explain git to someone who just learned makefiles" PMSL 🤣🤣

  • @anyasummermeadow7087
    @anyasummermeadow70875 жыл бұрын

    Really awesome excellent hacking! Greetz

  • @Marius-vw9hp
    @Marius-vw9hp2 жыл бұрын

    Is there anywhere on the net I can find code examples for different effects? I am teaching myself how to make demos.

  • @fcycles
    @fcycles8 жыл бұрын

    I am surprise there is not yet a TED regarding demoscene...

  • @clarkkent6026

    @clarkkent6026

    5 жыл бұрын

    because demoscene is way too objective, full of specs and facts about actual genius coding exploiting 30 year-old-hardware to its maxium potential, alongside creating a multimedia piece of art

  • @ericmasaba9823

    @ericmasaba9823

    5 жыл бұрын

    Indeed, it was such an amazing time and moment. One has to wonder what could be achieved today with that mindset of pushing every last cycle out of operations. What kind of solutions can be achieved now, especially as we need to get more performance out of clusters. It is perhaps even possible to consider some previously thought impossible calculations. I came from that 1970s/1980s world of limited 8-bits and 1Mhz. In 2003, I realised that some very largescale optimisation problems could be solved by using heuritistcis and genetic algorithms. Indeed, the very idea for Texxi (the basis of Uber etc) was originally a credit contagion trading idea for a Hedge Fund (for which I was hired to work at in Connecticut). I had realised that ride-sharing matching was the same as finding matches to companies that would go bust in a housing crash, specifically from Mortgage Backed Securities. Now we can use spare computer cycles to calculate the best way to group as many people into as few vehicles as possible. This is the basis for a whole new type of currency, since provable work can be done to reduce congestion and stored as value in a darkweb blockchain.

  • @yoshi314

    @yoshi314

    3 жыл бұрын

    @@ericmasaba9823 i doubt it. the things achieved in demoscene are very specific hack sfor very specific use cases. it would be hard to implement for more generic approach. but i would like people care about optimized code. to some degree this is still a case in gaming consoles and embedded space.

  • @ericmasaba9823

    @ericmasaba9823

    3 жыл бұрын

    @@yoshi314 The mindset needed to achieve optimisation with limited equipment is always going to come in handy somewhere. Real Engineering is full of tricks and compromises to achieve the impossible. Concorde used the position of fuel in the tanks to achieve Centre of gravity balancing as the craft transitioned from subsonic to supersonic, moving the centre of pressure. This allowed the pilots to "trim" the aircraft without inducing extra drag from control surfaces.

  • @yoshi314

    @yoshi314

    3 жыл бұрын

    @@ericmasaba9823 it only comes in handy if it's beneficial. i'd agree in the engineering department. in software engineering, though. not so much unless it cuts significantly into the costs.

  • @MassimoHardcrew
    @MassimoHardcrew8 жыл бұрын

    Anyone knows the ID of the Song ? Is Amazing :) thanks

  • @HelloKittyFanMan.
    @HelloKittyFanMan.5 ай бұрын

    Is it also likely that some of these C64 demos weren't thought of how to make in the '80s, or weren't even possible then, also because in the cross-dev. work, you might also be using some routines found in modern GPUs and then translating those into simplified versions for the C64, you couldn't have figured out how to make on your own for the 64; you had to completely adopt from the PC or Mac GPU and then translate/port to C64 (while slimming them down too, of course)?

  • @jarrad2000
    @jarrad20003 жыл бұрын

    Was there ever a final version? If so, were can I find it?

  • @memes_gbc674

    @memes_gbc674

    3 жыл бұрын

    the demo is called error 23, im sure with a bit of youtube searching you'll be able to find a full working version

  • @HelloKittyFanMan.
    @HelloKittyFanMan.5 ай бұрын

    Did you say "graphician:" a portmanteau of "graphics" and "technician"?

  • @HelloKittyFanMan.
    @HelloKittyFanMan.5 ай бұрын

    "I'm a coder for a reason." Well yeah, but everything happens and exists for a reason, even if it's accidental or otherwise not noteworthy. What would be noteworthy is being that for a _purpose._

  • @falkaseltza
    @falkaseltza12 жыл бұрын

    interesting

  • @jogo2000
    @jogo200012 жыл бұрын

    First of all, very impressed with the demo and the talk. This guy has the right to call himself Ninja :) What's up with the question about version control in the end? After this display of imagination, determination and mad programming skill you want to bash these guys for using Subversion? Really?

  • @TheNvipy

    @TheNvipy

    6 жыл бұрын

    The guy had also a question about code review and good "Agile" practice on c64 ;) Fucking lamers !!!

  • @HelloKittyFanMan.
    @HelloKittyFanMan.5 ай бұрын

    How can you know how to optimize something without knowing quite what it does?

  • @silkessnurra
    @silkessnurra12 жыл бұрын

    Wolfram FTW

  • @CssGamestar
    @CssGamestar11 жыл бұрын

    well with 64kb ram you can run battlefield 3 on high resolution and max settings

  • @dubbynelson

    @dubbynelson

    3 жыл бұрын

    hahahaha, *no*

  • @HelloKittyFanMan.
    @HelloKittyFanMan.5 ай бұрын

    Hmm, I wonder how many videos of discussions like this were done by groups like you in the last decade+, but anyway, I hope it was decided that several chairs that could've been right in front of and by the cameras would be left out of place, just so we wouldn't have doofs standing around in front of them!

  • @dr.ignacioglez.9677
    @dr.ignacioglez.9677 Жыл бұрын

    I LOVE C64 👍🥂🎩

  • @coenraadloubser5768
    @coenraadloubser57683 жыл бұрын

    OMW voice so different on 2x speed

  • @coenraadloubser5768
    @coenraadloubser57683 жыл бұрын

    What is the packer used?

  • @noobtracker

    @noobtracker

    3 жыл бұрын

    it's the exomizer I think

  • @HK-ps6ne
    @HK-ps6ne3 жыл бұрын

    ? synthax error

  • @MrBUESUM
    @MrBUESUM3 жыл бұрын

    I understand only C64... 😳

  • @gk...
    @gk...6 жыл бұрын

    16:32 Ergibt doch keinen Sinn. Was im Interrupt passiert, bestimme ich doch, und der Stack ist LIFO, und alles hat seine Ordnung. Da muss ich nichts zusätzlich retten. Das einzige, worauf ich achten muss, ist, dass der Stack nicht zu voll wird.

  • @VttcFan

    @VttcFan

    6 жыл бұрын

    Guten Abend. Es ergibt Sinn. Zu Beginn eines Interrupts wird immer der aktuelle Wert des Programm-Counters, sowie das Status-Register auf den Stack geschoben. Wenn du aber den Stack gerade für was anderes benutzt, also z.B. eine Sinus-Tabelle wird diese Tabelle mit diesen "falschen" Daten überschrieben. Am Ende des Interrupts holt sich das Programm per RTI-Instruktion den PC uns das S-Register vom Stack zurück. Lässt aber logischerweise die falschen Daten einfach stehen und erhöht nur den Stackpointer um 3.

  • @ArneChristianRosenfeldt

    @ArneChristianRosenfeldt

    6 жыл бұрын

    TXS

  • @Cream2773
    @Cream27733 жыл бұрын

    ...if I wanna make a good demo on C-64, I would use a C-64...not a PC with xxx Ghz. Celebrate the C-64 and do not use shortcuts... the only way to understand the process of a demo and the skills I have ;)

  • @Cream2773

    @Cream2773

    3 жыл бұрын

    10 Print "Hello": Goto 10 :D

  • @icegood1980
    @icegood198012 жыл бұрын

    Let me disagree with you. Firstly, question could be rather from that point of view like "Wow! How did you do that and how better for me to do smth like that, because my project in very early organization stage" Secondly, don't see anything weird even for guys who know all registers and instructions "by heart" to use version control because 1) It's an essential thing for someone else to understand your code too. 2) Essential part of PHD thesis could be done by simply revision control comments.

  • @R66Snowy
    @R66Snowy Жыл бұрын

    tedious. I've got a boring job in an office

  • @mistormoniteur9112
    @mistormoniteur911210 жыл бұрын

    Awesome technical capabilities aside, what annoys me about demos is that its always void of meaningfull content... it's about nothing, most of the time. It must mean I am not, never have been, and never will be a geek, in the true sense of the word.

  • @ArneChristianRosenfeldt

    @ArneChristianRosenfeldt

    6 жыл бұрын

    At least mega-demos are typically judged by flow. Of course, you are right. Just compare second reality with doom. Came out within a year, same system, same size on disk (for shareware Doom). Do you like art or music?

  • @animes25
    @animes255 жыл бұрын

    Weeabos will rule the world

  • @SolarDrew
    @SolarDrew3 жыл бұрын

    Poke 53280,1

  • @loebkesman

    @loebkesman

    3 жыл бұрын

    Poke 53281,Peek(53280)

  • @kduhtdkzrt
    @kduhtdkzrt12 жыл бұрын

    Not interesting at all. Integer overflow in variable interresting.

  • @speedsterh

    @speedsterh

    3 жыл бұрын

    I understand what you mean. The lecture was a bit too generic and no given effect was detailed as to how it was programmed. I'm left hungering for more

Келесі