| |
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.... |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
Just take a look at LFT's timing diagram.
In normal display the VIC will go to IDLE after RC=7 so what you wanna do is do bring in into bad line STATE (not trigger an actual badline). This has to be done after cycle 55 and before 58. This will increment RC and make it wrap to 0. During the next raster line the badline condition isn't set anymore and it will simply display the next row of bitmap using the old char data. |
| |
Oswald
Registered: Apr 2002 Posts: 5086 |
Quote: Something doesn't quite add up then. If you're getting any kind of badline DMA, colour information should be read and applied. Can you post a binary of your code?
he can have a bad line from some other bank buffered by the VIC forever. |
| |
Oswald
Registered: Apr 2002 Posts: 5086 |
btw I have code somewhere to repeat first char row's full 8 lines somewhere,would that be useful ? (not sure if works in bitmap mode) there must be even a topic about it, I asked here a few years ago. |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
Quote: he can have a bad line from some other bank buffered by the VIC forever.
Indeed, if you constantly avoid the bad line condition the char pointers are the same forever. |
| |
Golara Account closed
Registered: Jan 2018 Posts: 212 |
Quote: In fact, Golara, I was not seeking for extra cycles by removing badlines. My goal is to get rid of screen RAM due to memory constraints, so I can use 1 single VIC bank for 2 bitmaps, without screen RAM. And with the code I posted I succeeded in that. On the practical side, I have half badlines allover the screen.
Oh ok, then it makes some sense.. I actually tried doing it just now and I think it's possible. You need to make a badline condition when RC=7 on cycles 55-58. That will cause the last charline to be repeated. You then need to set the YSCROLL back to some other value... easier to explain in steps, so here's the recipe:
Get at least one badline in a frame to read in one line of chars (even from previous frame)!
Start with Y scroll 0 (badline at line $30, $38 etc..)
IRQ at line $30 + 7
set Y scroll to 7 (make badline) but at cycle 55-58
wait for line 30 + 8 + 1
set Y scroll to 0
IRQ at line $30 + 8 + 7
set y scroll to 7 (make badline) but at cycle 55-58
wait for line 30 + 16 + 1
set Y scroll to 0
see the pattern ? Still, not sure how viable it is, since you need to waste some cycles to stabilize the raster IRQ. |
| |
Krill
Registered: Apr 2002 Posts: 2969 |
Quoting Oswaldhe can have a bad line from some other bank buffered by the VIC forever. Quoting JackAsserIndeed, if you constantly avoid the bad line condition the char pointers are the same forever. My point was that if there is badline DMA as ready. claims, the buffer (or parts thereof) will get updated pretty much by definition. |
| |
ready.
Registered: Feb 2003 Posts: 441 |
well, I posted above the irq code that does it. It lacks of course the rest of the code like stabilized irq and so on. Irq is stabilized via CIA timer, basically CIA timer is the inverted horizontal raster position in terms of O2 cycles. Should you need more I can provide. |
| |
HCL
Registered: Feb 2003 Posts: 727 |
The demo you're looking for is Bonanza.
Something that confuses this topic is that there are two different techniques to do pictures without badline, as was the original question:
First LineCrunch, which is used in the demo above, enables you to have open sideborders with up to 7 sprites, but needs to be triggered every rasterline. This effectively *eats* up the image, displaying only line 7 of each char. Thus you can also use it for moving pictures vertically, which is also displayed in the demo above.
Then you have the RepeatingChar, where you need only 2 writes to $d011 for each char-line. Not combinable with open sideborders, but sprites of course. I use this always! ..unless i need more than 4 color.. or i need open sideborder ..or i need more char buffers .. or.. |
| |
Oswald
Registered: Apr 2002 Posts: 5086 |
so no way to have *any* kind of gfx for a bigger area (stretched or not whatever) and open sideborder and 8 sprites ? |
| |
HCL
Registered: Feb 2003 Posts: 727 |
Nope.. 3:rd part of Time Machine is pretty maxed out.. Different colors in each char "column", extended into sideborder using sprites and 12 moving sprites on top.
The last part looks similar, only the graphics is FPD-stretched there. Helluvalot more complicated :P |
Previous - 1 | 2 | 3 | 4 | 5 - Next |