| |
Jetboy
Registered: Jul 2006 Posts: 337 |
New modes/VIC manipulation questions.
HI!
I had some break since... well... long ago :)
I was pretty much up to date with all the tricks done up to middle of the nineties, then i somewhat lost track.
I came across some new(to me) stuff when trying to catch up and watching the demos. BTW. Respect!
I wonder if there is some more details about UFLI and MUFLI modes?
I understand there is AFLI every second line with hi-res sprites over(under?) it.
I guess you can do it with 8 sprites - hence change every second line. Would that work at all?
Sprites are y expanded (due to colorbanks switches they take data from 2 sprite blocks so they look highres. But what wonders me - highres sprites can cover only 8*24 pixels - that's only 192 pixels width. So how its handled? Does cover only part of the screen, or are they sprites moved around to cover places where they are needed?
I ve been looking rhrough some posts here, but could you point me to some more info? Thank you. |
|
... 5 posts hidden. Click here to view all posts.... |
| |
Jetboy
Registered: Jul 2006 Posts: 337 |
Thanks!
First link answers pretty much all my questions (and a couple more :) )
As for Seminar - maybe seminar itself was of more value, but documents are pretty worthles. Nothing that moderate coder wouldnt know in mid nineties. But ofcourse its good for newcomers. |
| |
algorithm
Registered: May 2002 Posts: 705 |
Two more graphic modes to enter on the website (www.naveedkhugiani.com) MUFLI and quadinterlace (similar to the quadchar interlace, except in bitmap mode for higher quality |
| |
WVL
Registered: Mar 2002 Posts: 902 |
http://noname.c64.org/csdb/forums/?roomid=11&topicid=18053&show..
In this thread i posted a full explanation of the UFLI mode. MUFLI is basically the same, but uses extra writes and some illegal opcodes to change the sprite-colors every 2 lines aswell. (also the memory layout is a bit different, i think)
Anyway, the sprites are expanded in the X-direction, so you need only 6 sprites to cover 36 chars. |
| |
Jetboy
Registered: Jul 2006 Posts: 337 |
Thanx!
I knew i should have learned german. :)
That's no problem - i got the idea from the article anyway :)
I dont want to start another thread, so i ask here.
How about those 4x4 modes, every 4th line fli, etc.
I presume one is done with multicolor character sets defined acordingly - that's pretty simple.
What bothers me is every 4th line fli. It has potential as you can frely set color for every 80x50 pixel, but timing wonders me - how do you do it? You fire IRQ every 4th line? Or just cycle all top to bottom and interleave efects code with 4th line fli? That way you could just put code that does not change its cycling beetween the FLI code (good for cleaning framebuffer, or other lda/sta things).
And another one:
At my time on c64 we always synchronized with use of double irq, or 3 line $d012 compare, or sprite compare. I remember that i was told some time after i stopped mya ctivity, that there is other method. First you synchronize with any method, once you are done with that, you set some timer, and s ince then you can use timer to synchronize, that is you fire raster IRQ, and read timer and that's how you know which cycle of the line you are (not working with badlines). M'i correct? And if so, are there any codes done this way i could look up? Source code would be nice, but any production that uses that would do.
Thanx!
|
| |
WVL
Registered: Mar 2002 Posts: 902 |
Quote: Thanx!
I knew i should have learned german. :)
That's no problem - i got the idea from the article anyway :)
I dont want to start another thread, so i ask here.
How about those 4x4 modes, every 4th line fli, etc.
I presume one is done with multicolor character sets defined acordingly - that's pretty simple.
What bothers me is every 4th line fli. It has potential as you can frely set color for every 80x50 pixel, but timing wonders me - how do you do it? You fire IRQ every 4th line? Or just cycle all top to bottom and interleave efects code with 4th line fli? That way you could just put code that does not change its cycling beetween the FLI code (good for cleaning framebuffer, or other lda/sta things).
And another one:
At my time on c64 we always synchronized with use of double irq, or 3 line $d012 compare, or sprite compare. I remember that i was told some time after i stopped mya ctivity, that there is other method. First you synchronize with any method, once you are done with that, you set some timer, and s ince then you can use timer to synchronize, that is you fire raster IRQ, and read timer and that's how you know which cycle of the line you are (not working with badlines). M'i correct? And if so, are there any codes done this way i could look up? Source code would be nice, but any production that uses that would do.
Thanx!
Usually people fire IRQs or NMIs (I'd use nmi's in this case) every 4 (but i think every 8 lines is also enough!) lines. Smart people do this using the CIA timers.
I think the best demo to watch and learn from is Real (Real ) from Resource and The Dreams. Take a look at the every-2-lines-fli routine made by Ninja. He even wrote a complete explanation of that routine somewhere, but I cant remember exactly where ;D |
| |
Jetboy
Registered: Jul 2006 Posts: 337 |
> Usually people fire IRQs or NMIs (I'd use nmi's in this
> case) every 4 (but i think every 8 lines is also enough!)
> lines. Smart people do this using the CIA timers.
OF COURSE 8th LINE! Brilant ideas are so simple... so simple it hurts when one didnt thought of it oneself. (banging my head against the wall again). So it uses about 2 lines every 8 lines i presume. First you generate badline, then after graphics is shown for that line, set y-scrolling so next bad line will be after 4 lines, and the data is fetched from the same color memory...
> I think the best demo to watch and learn from is Real
> (Real ) from
> Resource and The Dreams. Take a look at the
> every-2-lines-fli routine made by Ninja. He even wrote a
> complete explanation of that routine somewhere, but I cant
> remember exactly where ;D
Will look through it after i get home, and also put a google to good use :)
So i guess every 2 lines fli needs interupts every 4th line? :) |
| |
WVL
Registered: Mar 2002 Posts: 902 |
Quote: > Usually people fire IRQs or NMIs (I'd use nmi's in this
> case) every 4 (but i think every 8 lines is also enough!)
> lines. Smart people do this using the CIA timers.
OF COURSE 8th LINE! Brilant ideas are so simple... so simple it hurts when one didnt thought of it oneself. (banging my head against the wall again). So it uses about 2 lines every 8 lines i presume. First you generate badline, then after graphics is shown for that line, set y-scrolling so next bad line will be after 4 lines, and the data is fetched from the same color memory...
> I think the best demo to watch and learn from is Real
> (Real ) from
> Resource and The Dreams. Take a look at the
> every-2-lines-fli routine made by Ninja. He even wrote a
> complete explanation of that routine somewhere, but I cant
> remember exactly where ;D
Will look through it after i get home, and also put a google to good use :)
So i guess every 2 lines fli needs interupts every 4th line? :)
for fli every 2 lines you definately need more than one interrupt every 2 lines.. You see, the advantage from fli-every-4-lines comes from the fact there is a badline every 8 anyway. I think for fli-every-second-line you'd need at least 3 interrupts. But probably 4 interrupts arrange the memory more efficiently.
example
line 0 : d018 = 0x
line 2 : d018 = 2x
line 4 : d018 = 4x
line 6 : d018 = 6x
line 8 : d018 = 6x <- you don't have to change here, since the vic will read colors from the next line anyway.
line 10 : d018 = 4x
line 12 : d018 = 2x
line 14 : d018 = 0x
line 16 : d018 = 0x <- again, no need to change
etc |
| |
Cruzer
Registered: Dec 2001 Posts: 1048 |
Just if noone has mentined it... 4x4 and other modes that require VIC registers to be changed at certain rasterlines can also be done without interrupts, if your code is 100% cycle stable, e.g. if it's all lda lut,x / sta gfx. Then the displayer code can be merged into the effect, and this is of course a bit faster. |
| |
Ninja
Registered: Jan 2002 Posts: 411 |
Check Vandalism News 43 for that article. Mail me if you need more sourcecodes for Double-Timer-Routines. :) |
| |
Viktor Account closed
Registered: Apr 2002 Posts: 78 |
All the resource links are very usefull here.
Thank you.
Viktor |
Previous - 1 | 2 - Next |