DEMOSCENE THREAD

Your favorite platform ? favorite group ? Oldschool or Newschool ? Post about coding demo effects, music and graphics. Post your favorite demo parts or your own. I will supply you with a bunch of my favorites demos in the following posts. I also know quite a bit about C64 coding, so I could explain some tricks used on it if you'd like that.

Other urls found in this thread:

youtube.com/watch?v=5MexnBunH_g
youtube.com/watch?v=J2Jz1bu2CcA
youtube.com/watch?v=bIM4p0uL6Pw
youtu.be/hvX6Y2bW4Z0
youtu.be/jziQBWQxvok
youtu.be/JvgoWNI698o
youtu.be/9xBahrt8b1I
youtu.be/rWwNgVwQG1A
youtu.be/E0OzX7plbeY
youtu.be/OuA0IBrlUpw
twitter.com/NSFWRedditGif

PLATFORM : Amiga AGA
GROUP : Steroid
NAME : Unexpected (part 1/2)
YEAR : 1995

PLATFORM : Commodore64
GROUP : Reflex
NAME : Mathematica (part 1/3)
YEAR : 1995

Damn, those dot routines look awful when encoded to webm, I should have figured. And the tearing in vertical rasters part is not present on the real thing. It's because the video is not 50FPS. Sorry

PLATFORM : Commodore64
GROUP : Plush
NAME : +H2K (part 2/6)
YEAR : 2000

PLATFORM : Commodore64
GROUP : 64Ever
NAME : Insomnia (part 1&2/5)
YEAR : 2001

I'll write some about C64 coding, because it is nothing like coding on pc, and not just because of the little ram and very slow cpu. C64 coding is all about using the hardware the bad, unintentional way. I'm sure it's also true for other old platforms, but I know only the C64 so deeply. I will tell you about BAD LINES.

What are bad lines? The cpu and video chip (vic) share ram, so they can't use it at the same time. Every 8th line, so the first pixel line of the text line Vic takes the control of the bus to read the screen data. The cpu is idle when this happens. The bad line condition isn't hardwired however. C64 can scroll the image vertically and horizontally, but only by 8 pixels max. The condition for bad line is... the first 4 bits of the line counter have to match the scroll register. Lots of C64 tricks rely on causing bad lines in strategic moments.

If you cause the bad line at the very beginning of the line, Vic will simply read the screen data again. You can change the colours for example, cause the bad line and in resoult you get more colours than just standard 2 in 8x8 character. This technique is called FLI - flexible line interpretation. The second picture in OK uses that.

Another trick requires you to manipulate the scroll register in such a way that there's never a bad line. What happens then ? Vic just doesn't draw anything, only black pixels (and sprites if any). It will continue as soon as it encounters a bad line. With this technique called FLD - flexible line distance - you can move the whole screen downwards without coping single byte of screen data. Unfortunately, it doesn't wrap around the screen, but there's another trick for that

Now imagine what happens when you cause a bad line in the middle of the screen ? Vic suddenly wants to read the ram, but the cpu is using the bus, so Vic has to wait. Of course the raster beam doesn't wait, so when Vic finally starts to paint the image, the beam has already moved to the right and you get shifted image ( and it even wraps around ! ) this technique is called VSP - variable screen positioning. Another, less commonly used name is DNA delay.

DMA delay... sorry

Now you surely noticed the big border around the screen on the C64. It was a common practice on computers and consoles from the 80s, because the visible area of the tv wasn't standardized. To make sure that nothing gets clipped out, they made the actually screen much smaller and the rest is filled with a border. But notice that this demo for example

Draws in the border area. How is that possible ?

Do you remember the scroll register? When you scroll your image to the left or up, there's a blank space left at the right or bottom part of the screen. That's why they made it possible to make the border wider, to hide that empty spot.

Now imagine. You're in the narrow border mode, the bottom border starts at line 260. When you're in wide border mode the border stars at line 252. Now wait until you're past the line 252 and change the border mode to wide mode. Now the trigger for drawing the bottom border is at line 252, but you're already past that, so Vic doesn't draw the border ! It doesn't draw any characters there, it wasn't designed to do that, but it will draw sprites there. Same technique is used to open the sideborder, but this time you have to be cycle exact (because 8 pixels horizontally is one cpu cycle) and you have to do it every line. The demo I pointed to does that on almost all lines with that "normal is boring" banners, impressive, huh ? The first picture in the OP uses the top and bottom border area.

...