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


Forums > C64 Coding > Picture without badlines.
2018-02-08 10:15
Golara
Account closed

Registered: Jan 2018
Posts: 212
Picture without badlines.

In the last part of Time Machine by Booze Design HCL says that the picture looks very colorful despite not having any badlines. How is that possible to have pictures without badlines ? Lack of badlines causes FLD effect, right ?
 
... 39 posts hidden. Click here to view all posts....
 
2019-11-15 03:39
Peacemaker

Registered: Sep 2004
Posts: 243
have a part that exacatly does what the threadcreator is asking for plus some "effect" on it.
maybe one day ill release the little demo along some other parts.
2019-11-15 10:03
Krill

Registered: Apr 2002
Posts: 2800
Quoting Oswald
so no way to have *any* kind of gfx for a bigger area (stretched or not whatever) and open sideborder and 8 sprites ?
Pretty sure it's one of the things that are possible on machines with 65 cycles per line, i.e., new NTSC and PAL N, but not on Euro-PAL.
The following is a conjecture, i'm not aware of existing productions and haven't tested it myself yet.

The two extra cycles go there: in the right border, sprite 0 fetch starts one cycle later than on 63-cycles PAL (thus no need for RMW $d016 instructions to have 8 sprites and open sideborders), and in the left border on the next rasterline, sprite 7 fetch ends one cycle earlier with regard to the clear-RC condition, as a rasterline has 2 more cycles and sprite fetches are back to back.

Due to the latter extra cycle, there are 4 and not just 3 cycles between sprite 7 fetch and the clear RC condition check. A store to $d011 would neatly fit in there to abort the badline condition and cause RC not to be reset, effectively triggering linecrunch.

So, open sideborders with 8 sprites AND linecrunching should be possible, just not on Euro-PAL.
2019-11-15 12:23
Rastah Bar

Registered: Oct 2012
Posts: 336
According to http://unusedino.de/ec64/technical/aay/c64/victnl.htm both extra cycles are just before the sprit 0 fetch.
2019-11-15 13:15
Krill

Registered: Apr 2002
Posts: 2800
Quoting Rastah Bar
According to http://unusedino.de/ec64/technical/aay/c64/victnl.htm both extra cycles are just before the sprit 0 fetch.
This assertion appears to stem from Christian Bauer's venerated VIC article, which claims the same.

However, according to VICE sourcecode found in https://sourceforge.net/p/vice-emu/code/HEAD/tree/trunk/vice/sr.. we see

PAL: 3 cycles between sprite 7 fetch and UpdateVC
    { Phi1(10), 0x1dc, None,    SprDma1(7), BaSpr1(7),       None                 },
    { Phi2(10), 0x1e0, None,    SprDma2(7), BaSpr1(7),       None                 },
    { Phi1(11), 0x1e4, None,    Refresh,    None,            None                 },
    { Phi2(11), 0x1e8, None,    None,       None,            None                 },
    { Phi1(12), 0x1ec, None,    Refresh,    BaFetch,         None                 },
    { Phi2(12), 0x1f0, None,    None,       BaFetch,         None                 },
    { Phi1(13), 0x1f4, None,    Refresh,    BaFetch,         None                 },
    { Phi2(13), 0x000, None,    None,       BaFetch,         None                 },
    { Phi1(14), 0x004, None,    Refresh,    BaFetch,         None                 },
    { Phi2(14), 0x008, None,    None,       BaFetch,         UpdateVc             },
NTSC: 4 cycles between sprite 7 fetch and UpdateVC
    { Phi1(9),  0x1dc, None,    SprDma1(7), BaSpr1(7),       None                 },
    { Phi2(9),  0x1e0, None,    SprDma2(7), BaSpr1(7),       None                 },
    { Phi1(10), 0x1e4, None,    Idle,       None,            None                 },
    { Phi2(10), 0x1e8, None,    None,       None,            None                 },
    { Phi1(11), 0x1ec, None,    Refresh,    None,            None                 },
    { Phi2(11), 0x1f0, None,    None,       None,            None                 },
    { Phi1(12), 0x1f4, None,    Refresh,    BaFetch,         None                 },
    { Phi2(12), 0x1f8, None,    None,       BaFetch,         None                 },
    { Phi1(13), 0x1fc, None,    Refresh,    BaFetch,         None                 },
    { Phi2(13), 0x000, None,    None,       BaFetch,         None                 },
    { Phi1(14), 0x004, None,    Refresh,    BaFetch,         None                 },
    { Phi2(14), 0x008, None,    None,       BaFetch,         UpdateVc             },
and

PAL: No extra cycle before sprite 0 fetch
    { Phi1(54), 0x144, Vis(37), FetchG,     BaFetch,         None                 },
    { Phi2(54), 0x148, Vis(38), FetchC,     BaFetch,         None                 },
    { Phi1(55), 0x14c, Vis(38), FetchG,     BaSpr1(0),       ChkSprDma            },
    { Phi2(55), 0x150, Vis(39), None,       BaSpr1(0),       None                 },
    { Phi1(56), 0x154, Vis(39), Idle,       BaSpr1(0),       ChkSprDma            },
    { Phi2(56), 0x158, None,    None,       BaSpr1(0),       ChkBrdR0 | ChkSprExp },
NTSC: One extra cycle before sprite 0 fetch
    { Phi1(54), 0x144, Vis(37), FetchG,     BaFetch,         None                 },
    { Phi2(54), 0x148, Vis(38), FetchC,     BaFetch,         None                 },
    { Phi1(55), 0x14c, Vis(38), FetchG,     None,            None                 },
    { Phi2(55), 0x150, Vis(39), None,       None,            None                 },
    { Phi1(56), 0x154, Vis(39), Idle,       BaSpr1(0),       ChkSprDma            },
    { Phi2(56), 0x158, None,    None,       BaSpr1(0),       ChkBrdR0 | ChkSprExp },
    { Phi1(57), 0x15c, None,    Idle,       BaSpr1(0),       ChkSprDma            },
    { Phi2(57), 0x160, None,    None,       BaSpr1(0),       ChkBrdR1             },
These days, i'm trusting VICE more on these matters than the VIC article.

But ultimately, real hardware is the authority there. =)
(Now, if i only had a 65-cycle machine and not just the 64-cycle old NTSC one and plenty of Euro-PAL machines...)
2019-11-15 13:28
Rastah Bar

Registered: Oct 2012
Posts: 336
Interesting. Does this mean that 7 sprites over FLI is not possible on NTSC?
2019-11-15 13:34
Krill

Registered: Apr 2002
Posts: 2800
If anything, i'd expect NTSC to allow for more sprites over FLI than PAL, not fewer. :)
2019-11-15 14:58
Golara
Account closed

Registered: Jan 2018
Posts: 212
Quote: Quoting Rastah Bar
According to http://unusedino.de/ec64/technical/aay/c64/victnl.htm both extra cycles are just before the sprit 0 fetch.
This assertion appears to stem from Christian Bauer's venerated VIC article, which claims the same.

However, according to VICE sourcecode found in https://sourceforge.net/p/vice-emu/code/HEAD/tree/trunk/vice/sr.. we see

PAL: 3 cycles between sprite 7 fetch and UpdateVC
    { Phi1(10), 0x1dc, None,    SprDma1(7), BaSpr1(7),       None                 },
    { Phi2(10), 0x1e0, None,    SprDma2(7), BaSpr1(7),       None                 },
    { Phi1(11), 0x1e4, None,    Refresh,    None,            None                 },
    { Phi2(11), 0x1e8, None,    None,       None,            None                 },
    { Phi1(12), 0x1ec, None,    Refresh,    BaFetch,         None                 },
    { Phi2(12), 0x1f0, None,    None,       BaFetch,         None                 },
    { Phi1(13), 0x1f4, None,    Refresh,    BaFetch,         None                 },
    { Phi2(13), 0x000, None,    None,       BaFetch,         None                 },
    { Phi1(14), 0x004, None,    Refresh,    BaFetch,         None                 },
    { Phi2(14), 0x008, None,    None,       BaFetch,         UpdateVc             },
NTSC: 4 cycles between sprite 7 fetch and UpdateVC
    { Phi1(9),  0x1dc, None,    SprDma1(7), BaSpr1(7),       None                 },
    { Phi2(9),  0x1e0, None,    SprDma2(7), BaSpr1(7),       None                 },
    { Phi1(10), 0x1e4, None,    Idle,       None,            None                 },
    { Phi2(10), 0x1e8, None,    None,       None,            None                 },
    { Phi1(11), 0x1ec, None,    Refresh,    None,            None                 },
    { Phi2(11), 0x1f0, None,    None,       None,            None                 },
    { Phi1(12), 0x1f4, None,    Refresh,    BaFetch,         None                 },
    { Phi2(12), 0x1f8, None,    None,       BaFetch,         None                 },
    { Phi1(13), 0x1fc, None,    Refresh,    BaFetch,         None                 },
    { Phi2(13), 0x000, None,    None,       BaFetch,         None                 },
    { Phi1(14), 0x004, None,    Refresh,    BaFetch,         None                 },
    { Phi2(14), 0x008, None,    None,       BaFetch,         UpdateVc             },
and

PAL: No extra cycle before sprite 0 fetch
    { Phi1(54), 0x144, Vis(37), FetchG,     BaFetch,         None                 },
    { Phi2(54), 0x148, Vis(38), FetchC,     BaFetch,         None                 },
    { Phi1(55), 0x14c, Vis(38), FetchG,     BaSpr1(0),       ChkSprDma            },
    { Phi2(55), 0x150, Vis(39), None,       BaSpr1(0),       None                 },
    { Phi1(56), 0x154, Vis(39), Idle,       BaSpr1(0),       ChkSprDma            },
    { Phi2(56), 0x158, None,    None,       BaSpr1(0),       ChkBrdR0 | ChkSprExp },
NTSC: One extra cycle before sprite 0 fetch
    { Phi1(54), 0x144, Vis(37), FetchG,     BaFetch,         None                 },
    { Phi2(54), 0x148, Vis(38), FetchC,     BaFetch,         None                 },
    { Phi1(55), 0x14c, Vis(38), FetchG,     None,            None                 },
    { Phi2(55), 0x150, Vis(39), None,       None,            None                 },
    { Phi1(56), 0x154, Vis(39), Idle,       BaSpr1(0),       ChkSprDma            },
    { Phi2(56), 0x158, None,    None,       BaSpr1(0),       ChkBrdR0 | ChkSprExp },
    { Phi1(57), 0x15c, None,    Idle,       BaSpr1(0),       ChkSprDma            },
    { Phi2(57), 0x160, None,    None,       BaSpr1(0),       ChkBrdR1             },
These days, i'm trusting VICE more on these matters than the VIC article.

But ultimately, real hardware is the authority there. =)
(Now, if i only had a 65-cycle machine and not just the 64-cycle old NTSC one and plenty of Euro-PAL machines...)


At least we have (almost) 1:1 pixel aspect ratio :P NTSC is gross... 60FPS is nice though, especially on any emulator, 50FPS on a 60Hz monitor sucks ass :/
2019-11-15 15:24
Krill

Registered: Apr 2002
Posts: 2800
PAL N then, best of all worlds! (Except 60 Hz.) =)
2020-11-05 23:25
Copyfault

Registered: Dec 2001
Posts: 466
Quoting Rastah Bar
Interesting. Does this mean that 7 sprites over FLI is not possible on NTSC?
I pretty much think so! At least it will not be possible with Ninja's routine in its current form.

We are in C64-world, so using the phrase "impossible" is dangerous, but I deeply dought that it can be done with the other additional NTSC-cycle sitting at cycle-position 10, right after the sprite-fetches.
2020-11-07 03:00
Zibri
Account closed

Registered: May 2020
Posts: 304
Quoting Copyfault
We are in C64-world, so using the phrase "impossible" is dangerous

This is so damn true :D
Previous - 1 | 2 | 3 | 4 | 5 - Next
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
Advanced
Users Online
Fred/Channel 4
Guests online: 171
Top Demos
1 Next Level  (9.8)
2 Mojo  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 No Bounds  (9.6)
6 Comaland 100%  (9.6)
7 Uncensored  (9.6)
8 The Ghost  (9.6)
9 No Sprites  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 Party Elk 2  (9.7)
2 Cubic Dream  (9.6)
3 Copper Booze  (9.5)
4 Rainbow Connection  (9.5)
5 TRSAC, Gabber & Pebe..  (9.5)
6 Onscreen 5k  (9.5)
7 Dawnfall V1.1  (9.5)
8 Quadrants  (9.5)
9 Daah, Those Acid Pil..  (9.5)
10 Birth of a Flower  (9.5)
Top Groups
1 Booze Design  (9.3)
2 Nostalgia  (9.3)
3 Oxyron  (9.3)
4 Censor Design  (9.3)
5 Crest  (9.3)
Top Webmasters
1 Slaygon  (9.7)
2 Perff  (9.6)
3 Morpheus  (9.5)
4 Sabbi  (9.5)
5 CreaMD  (9.1)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.049 sec.