User Tools

Site Tools


Introduction to Vertical Tweaks

Here gathers various ways to manipulate the screen setup by fooling the VIC. Since coders developed more and more weird vic-tricks in the late 80's, more and more weird names of the effects popped up as well. The common name of all these tricks is 'd011-stretcher', which is not totally wrong but perhaps a bit inaccurate. Here is an attempt to describe the matured collection of tricks, now 20 years after, when new vic tricks are rare.


By manipulating $d011 y-scroll values you avoid triggering a badline. Everything stays normal except that VIC will show $3fff-pattern instead of normal graphics. Used for FLD and is possible with open sideborders.

Repeating the last line

It is possible to retrigger display of the last line of a char. This trick will actually read new lines of graphics each line instead of every 8:th line, but the char-matrix is not updated. The result is stretched data in char-mode and shrunken data in bitmap-mode. May be used for FPP in char-mode or FPD in bitmap-mode and line-crunching. May also be combined with open sideborders.

Repeating char-line

It is possible to restart display of a char-line without a badline. With this trick VIC displays the same char-line again. In bitmap-mode the graphics is unchanged, only the color-info does not get updated as no new char-data is being read. May be used for FPP in char-mode but does not seem to work in combination with open sideborder.

Every line is a badline

This is what many people call a FLI-timing. By retriggering badlines by periodically updating the d011 y-scroll value, badlines can be triggered every line. If you also change char-bank each line VIC will read new char-data which will be used as colors in bitmap-mode → FLI. When reading new char-info VIC interrupts the CPU and steals cycles from you. A normal (and maximized) FLI-timing is 23 cycles long (PAL), where VIC has stolen 40 cycles (for a 40 chars wide screen). If your timing loop takes more than 23 cycles, VIC will steal less cycles from you and you will get a FLI-area less than 40 chars. Sadly VIC will leave an ugly bug on the first three chars when triggering a badline, commonly known as the 'FLI-bug'.

The area left of the FLI-bug will behave like 'Repeating char-line' as described above. The FLI-timing may also be used for FPP in char-mode, but does not work together with open sideborders.

Repeating the first line

Starting from the FLI-timing, one may think that reducing some cycles from the loop may give me 40 chars of bug-free FLI. But no. Here we pass some timing border where VIC stops reading new graphics data. Instead we get the first graphics-line displayed again, but new char-info is read. May be used for FPP in both char-mode and bitmap-mode, but not with sideborder timing.

There have been examples of this effect though in combination with open sideborder, in those cases the d011-trick has been used every 2:nd line.

Choose your effect

So, when you want to show some cool gfx in a beautiful way, there are a lot of opportunities. Mostly it depends on what kind of graphics you have. You can not have a pure FLI picture and do FPP with it, you have to compromise. Perhaps you think you need FPP, but the type of movement you want to do may be possible with FPD, where you have more color opportunities and possibility of opening the borders etc..

With FPP, you can simulate all the other ones. You have freedom to move your pixel-lines wherever you want multiple times.

base/introduction_to_vertical_tweaks.txt · Last modified: 2015-04-17 04:32 (external edit)