Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
 Welcome to our latest new user jmi ! (Registered 2024-09-15) You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > Is "Inverse FLI" possible?
2022-09-02 00:19
mankeli

Registered: Oct 2010
Posts: 127
Is "Inverse FLI" possible?

Is it possible to do "Inverse FLI", ie. reset RC=0 on any line, but not trigger the actual badline DMA?

The VIC Article lists some relevant positions:
Quote:
In the first phase of cycle 14 of each line, VC is loaded from VCBASE (VCBASE->VC) and VMLI is cleared. If there is a Bad Line Condition in this phase, RC is also reset to zero.

and
Quote:
If there is a Bad Line Condition in cycles 12-54, BA is set low and the c-accesses are started.


But I guess there isn't an instruction that allows one to cancel the badline condition after the RC is reset?
2022-09-02 06:08
Monte Carlos

Registered: Jun 2004
Posts: 355
Sounds like FLD to me.
2022-09-02 07:15
mankeli

Registered: Oct 2010
Posts: 127
It's not FLD, FLD is just letting VIC to go to idle state and manipulating d011 to prevent the badline condition for N lines. This would be closer to the doubled text lines, but instead of letting RC to wrap from 7 to 0, this would reset it to 0 on any line. Just wondering if it's possible.
2022-09-02 09:16
ChristopherJam

Registered: Aug 2004
Posts: 1402
I'm pretty sure it's too late to cancel the badline by then. Adjusting the timing on a simple test program, it goes straight from "reset never happens" to "entire line is fetched" - and only one write is required to cancel the badline condition (which itself can be initially set well in advance of the reset), so there's no scope for trying different timings from different instructions.
2022-09-02 11:10
JackAsser

Registered: Jun 2002
Posts: 2014
The only way for RC to become 0 is because of a bad line. Problem is that VCBASE stays the same all the time, i.e. you just repeat the same char row over and over again (u can still change bank, font and screen and you can still choose if you want to fetch new chars pointer FLI, or keep old char pointers and save 40c FPP)

See https://www.linusakesson.net/programming/vic-timing/index.php
2022-09-02 11:56
Krill

Registered: Apr 2002
Posts: 2940
Mankeli: Is this an academic question, or do you have some effect in mind?

Note that depending on what you want to do, workarounds may exist. Also note that things in bitmap mode sometimes work surprisingly different, and can do some things you cannot do in char mode.
2022-09-02 15:56
mankeli

Registered: Oct 2010
Posts: 127
Krill: an effect that requires academic research of course
:D

.. but yeah, conclusions here were the same I reached too. Potentially this could work with some instruction with 3 writes in a row, and only ones that do that write to stack only.
2022-09-02 20:08
Oswald

Registered: Apr 2002
Posts: 5074
Quote: The only way for RC to become 0 is because of a bad line. Problem is that VCBASE stays the same all the time, i.e. you just repeat the same char row over and over again (u can still change bank, font and screen and you can still choose if you want to fetch new chars pointer FLI, or keep old char pointers and save 40c FPP)

See https://www.linusakesson.net/programming/vic-timing/index.php


"Problem is that VCBASE stays the same all the time, i.e. you just repeat the same char row over and over again"

even if VCBASE would change, there is no badline to reload the character pointers.
2022-09-02 20:27
mankeli

Registered: Oct 2010
Posts: 127
Originally I was thinking if it would be possible to have badlines and normal 8 line tall characters, but have the DMA always load the character pointers from the same address in the selected screen memory. (ie. have VCBASE to be constantly 0)

I think it should be possible to do this [have DMA always load graphics from same address] with 7px tall characters (as the VCBASE gets updated in the right border when RC=7).

With badline every 4 lines and two fonts (upper and lower half) it should be possible to fake 8px tall characters but it would be nice to skip the "unnecessary" badline :)
2022-09-02 22:15
Oswald

Registered: Apr 2002
Posts: 5074
it is possible with 7 pix tall character rows. and your 2nd method should work aswell.

https://csdb.dk/forums/?roomid=11&topicid=84186&showallposts=1
2022-09-03 08:21
ChristopherJam

Registered: Aug 2004
Posts: 1402
Do you actually want to reload the row every 8 rasters (like, will you be writing new values to them in the intervening lines, like I did for the 5 pixel high characters in Jam Ball 2), or is reading them once per frame then just repeating the same set of characters every row for the entire frame ok?
 
... 6 posts hidden. Click here to view all posts....
 
Previous - 1 | 2 - 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
REBEL 1/HF
TheRyk/MYD!
megasoftargentina
tlr
Case/Padua
bugjam
WVL/Xenon
Brush/Elysium
Nuckhead/Backbone So..
Guests online: 160
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Mojo  (9.6)
6 Uncensored  (9.6)
7 Wonderland XIV  (9.6)
8 Comaland 100%  (9.6)
9 No Bounds  (9.6)
10 Unboxed  (9.6)
Top onefile Demos
1 Layers  (9.6)
2 Party Elk 2  (9.6)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.6)
5 Rainbow Connection  (9.5)
6 It's More Fun to Com..  (9.5)
7 Dawnfall V1.1  (9.5)
8 Onscreen 5k  (9.5)
9 Daah, Those Acid Pil..  (9.5)
10 Morph  (9.5)
Top Groups
1 Booze Design  (9.3)
2 Oxyron  (9.3)
3 Nostalgia  (9.3)
4 Censor Design  (9.3)
5 Triad  (9.2)
Top NTSC-Fixers
1 Pudwerx  (10)
2 Booze  (9.7)
3 Stormbringer  (9.7)
4 Fungus  (9.6)
5 Grim Reaper  (9.3)

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