chenke wrote on 2024-09-20, 13:32:
It would be great if the lecture video could explain the principles behind the 'elephant dancing' animation in the AREA 5150 Demo. I'm very curious about how they managed to create such smooth animation using the ANSI-from-Hell technique.
I'd have liked to cover more effects and go into more detail on some. If there's significant interest I could possibly make a longer-form Youtube video that adds all the stuff I wanted to include but couldn't due to time. I lost 10 minutes of my talk just showing the demo - but I didn't see a good way around it, given that not everyone at the talk would have had context otherwise.
There's really no extra tricks with the elephant that I can see. VileR (i assume) just drew a lot of frames of mr elephant, and he's a good artist! I'd leave it up to him if he ever wants to blog about how the art pipeline for Area 5150 worked. I understand there was a converter made that could take a bitmap and attempt a best-fit to text, and then that would have to be cleaned up manually.
The attachment elephant_01.png is no longer available
Since he's a fairly small region of video memory, I think the bandwidth updating him isn't too severe. And when he moves up and down (like in his final fall) that's all CRTC trickery too so he doesn't have to actually be copied around. What's interesting is that "MAYBE NOT..." is actually below the elephant in video memory, but it's above him on the screen. When we do frame-restart, where things are in video memory isn't really deterministic of where they show up on the monitor! The 'electric' square waves are also pretty much static in video memory and animated with frame restart, so that doesn't take time away from animating mr. elephant.
I haven't looked into whether these sort of optimizations were done, but when dealing with ANSI-from-hell you could have implemented a sort of compression scheme, where if only the glyph or only the attribute was changing, you could save a byte on write, but I don't know if that wins you any time over just doing movsw for the whole bit.
MartyPC: A cycle-accurate IBM PC/XT emulator | web version: https://martypc.net | https://github.com/dbalsom/martypc