Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in 
CSDb User Forums

Forums > C64 Productions > FPP - Flexible Pixel Position
2003-01-29 16:59
Dr. Jay
Account closed

Registered: Jan 2003
Posts: 32
FPP - Flexible Pixel Position

I was trying to dissect the code on Crest and the best I could figure was some short of bank switching, maybe this confuses the chip and delays the read at a pixel level? Anyway, to make a short story boring, has anyone document this feature of the VIC chip (i.e. used in Krestage, the Spirits demo, etc.) or is it back to the ML monitor?

2003-01-29 23:59

Registered: Dec 2001
Posts: 465
It all depends on method used. VIC bank switching simple enables more than 16KB of graphics to be used. I can also be used cleverly, like: lda #$xx, sta $d018, sta $dd00. $d018 doesn't use bit 0. Depending on mode used, maybe some hardware stretching could be used. Maybe FLI mode can be used too. To tell you the truth I've been thinking about making some FPP myself. I have a few ideas like switching charsets but not screen then you have many more cycles for the line.
2003-01-30 10:48
Account closed

Registered: Jan 2002
Posts: 188
You use $d018 to choose which line to display (and you need the graphics to be structured appropriately) but you also need to bash $d011 to get the VIC to start over and read in screen data. So it's actually pretty similar to FLI.
2003-01-30 13:44
Dr. Jay
Account closed

Registered: Jan 2003
Posts: 32
I'm wondering if it is similar to FLD, then, using $d018? I see on several demos the effects of either stretching the pixel over multiple lines, or crunching it. In the Spirits demo, however, I'm curious because they actually reverse the scroll upside down. I haven't delved into the code but I'm assuming some trickery isn't actually manipulating memory, but is forcing later pixels to draw sooner, etc? At any rate, I know FLD is simply delaying the bad line and forcing the VIC to redraw later on. With FPP, though, I'm wondering how the VIC keeps redrawing the same pixel? Is it "stunned" by the switches in $d018 and gets confused, or is there something deeper?

Dr. Jay
2003-01-30 15:19
Account closed

Registered: Jan 2002
Posts: 188
FLD + $d018 would be an FPD (Flexible Pixel Distance).

With FPP you "stun" the VIC by clever usage of $d011, which gives you the free choice of which line to display on every line on the screen, ie. you can turn things upside down if you want to.

A good starting point is to think "this must be $d011" whenever something funny is going on. :-)

2003-01-30 19:16
Dr. Jay
Account closed

Registered: Jan 2003
Posts: 32
Cool. I'll have to dive into it. I'm familiar with flexible pixel distance but I haven't delved into getting it to draw a line, i.e. flexible pixel position. Guess it's time to start examining some code!

2003-01-30 20:51

Registered: Jun 2002
Posts: 154
The main difference between FPP and FLI (from aspect of generating the badlines) is that with FLI, you generate the badline at cycle 14. With FPP, you need to do it before cycle 14. The VIC article would help a lot.

Btw, can you name some demos containing the FPD effect? I'm not sure what it looks like.

FLD + $D018? With FLD the sequencer goes into IDLE state, and can't use $D018 for anything here. When it turns into DISPLAY state, $D018 can only be used to change the charset (and screen-mem, but not until the next badline).
2003-02-21 09:50

Registered: Feb 2003
Posts: 697
Ok, let's just make this clear.

FLD: (Flexible Line Distance). You can have have variable distance between the lines, which is referred to as charlines (= 8 pixel lines). So this means top-down: 8 lines of graphics, some empty lines, another 8 lines of graphics, more empty lines, and so on... Example: The good old 'Starion Intro'. Note, the 'empty lines' may of course be *empty* themselves ;) which then gives us 16 (or more) lines of grapics.

FPD: (Flexible Pixel Distance). You can have have variable distance between each pixel lines, Top-down: 1 line of gfx, some empty space, another line of gfx, empty space, etc.. Example: The remake of the good old 'Starion Intro' by Booze Design.

FPP: (Flexible Pixel Position). Completely different. The two proir effects are just able to 'stretch' the graphics by putting empty space inbetween. With FPP you can put *any* line of the graphics *anywhere* on the screen (vertically). Example: Yes, the crest-logo in Krestage.

There are various ways to implement all of these 3 effects. It's not that one *type* of code is called FPD or whatever.

Hope i didn't mess it all up even more for you ;)
2003-02-21 13:24
Dr. Jay
Account closed

Registered: Jan 2003
Posts: 32
Doesn't mess it up at all for me, since I have no clue how to code anything other than FLD. I'm being too lazy, and trying to learn ground-breaking techniques without sitting down and taking the effort to actually LEARN it .. like, FPP for Dummies instead of, look at the code, sit down, understand the cycles, the raster timing, the video fetches, analyze how the code is dorking with the VIC registers and then code the damn thing myself!

RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Users Online
Guests online: 62
Top Demos
1 Edge of Disgrace  (9.6)
2 Comaland 100%  (9.6)
3 Coma Light 13  (9.6)
4 Bromance  (9.6)
5 Uncensored  (9.6)
6 Memento Mori  (9.5)
7 Lunatico  (9.5)
8 Unboxed  (9.5)
9 Wonderland XII  (9.5)
10 Christmas Megademo  (9.5)
Top onefile Demos
1 Copper Booze  (9.6)
2 Daah, Those Acid Pil..  (9.5)
3 Dawnfall V1.1  (9.5)
4 Cityscape 2730  (9.5)
5 Lovecats  (9.5)
6 Square Booze  (9.5)
7 To Norah  (9.5)
8 Elite Code Mechanics  (9.4)
9 Barry Boomer - Trapp..  (9.4)
10 For Your Sprites Only  (9.4)
Top Groups
1 Booze Design  (9.4)
2 Oxyron  (9.3)
3 Crest  (9.3)
4 Fossil  (9.3)
5 Triad  (9.2)
Top Graphicians
1 Mirage  (9.8)
2 Archmage  (9.7)
3 Mikael  (9.7)
4 Electric  (9.7)
5 Razorback  (9.6)

Home - Disclaimer
Copyright © No Name 2001-2022
Page generated in: 0.048 sec.