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 strePost too long. Click here to view the full text.