Well, it's been more than one day. But here it is. I want to explain the third effect with the scrolltext moving in different patters. It's a fucking clever trick and it makes a lot of cool stuff possible.
On C64 you've got 8 hardware sprites. They are 24x21 pixels big, have their own X and Y registers and you can position them anywhere you want.
24x21 might seem like odd size, but it makes sence in binary form. 1 byte is 8 bits and 1 bit encodes one pixel (bit 1 = color, bit 0 = transparent), so 3 bytes make up one line (3 * 8 = 24) and 21 lines * 3 bytes is 63 bytes. Add one extra and you have 64 bytes aligned sprites. The VIC memory bank is 16kb (from $0000 to $4000 for example) so you can fill it all with 256 sprites (64 * 256 = 16kb). For each hadrware sprite there's a sprite pointer and it's just a byte which is multily of 64 to determine where the graphics are. For example sprite pointer 0 is $0000, 1 is $0040, 128 is $2000
Sprites can also be double with and double height. There's a register for that, 8 bit value, one bit for one sprite. If the bit is 1 the sprite is double with / double hight ($d01d for width $d017 for height).
However, there's a bug in the VIC. If you set the double height register ($d017 = $ff) and then unset it ($d017 = $00) at the line where the sprite is displayed, that line will be doubled. So if you do that trick on every line you will stretch that sprite. That's how the logo at the bottom in the first part with dog is stretching. I am doing this $d017 trick more or less on every frame which makes a stretching movement.
Now the scroller in the third part is done with "FPP" Flexible pixel position, meaning on every line of the screen you can display any line of graphic. With that setup, it only depends on what line and where you choose to show, so I can do stretching, moving it upside down, repeating the logos, spliting it every line to make "blinds" effects etc. But how do you do that ?
You set up your sprites next to each other, but one pixel higher than the previous. You start your stretching code at the line where first sprite beggins. Now because the other sprites are 1 pixel higher, you will stretch the first line of first sprite, second line of second sprite (first line will display normal because it's before the code) third line of third sprite (2 lines normal) and so on.. Now do that on every line down the screen. In my demo I do it for 120 lines. So now you have 120 lines of repeated graphics. In addition to doing the $d017 trick you set a different sprite pointer on each line, so on each line you are changing what the sprite graphics are... Now all you need is specially crafted sprite graphics. Remember, you are repeating first line of sprite 1, second line of sprite 2 and so on, so what if i make a sprite graphic that has 8 lines (rest doesn't matter) and they are the same one line of my graphic i want to display (logo or letters of a scrolltext), then make another sprite where the 8 lines of it display the second line of graphic. And make as many sprites as you want (I make 21 because my font is 21 pixels high). Now let's say on line 1 you set all sprite pointers to 0, it will take the first sprite graphic, it shows the first line of your logo/text, on next line select sprite 1, it shows the second line of your logo/text... and so on.... Make the code read the sprite pointers from a table. Now you can just fill that table with whatever numbers you want, it will display that graphic. All the moves I do in that video use different functions to fill up that table in different ways and there's more possibilities for sure.
Because it is not a constant logo but scrolling text, I have to make these special sprites (where first 8 lines show the graphic line I want) on the fly. I have 7 sprites, 7 letters on the screen and I prepare 21*7 sprites. It takes a lot of CPU... If it was a constant logo I could easelly cover more screen or make more complex calculations. Check out this demo effect. It uses the same technique, but it also opens the side borders and scalles the graphics ! Sick stuff. (7:50, sorry no webm but I'm on a phone)