| |
Carlos Account closed
Registered: Mar 2009 Posts: 15 |
Palette effects
Hi!
This is my first post in CSDB, after a long time as owner of a C64 and use it only for playing games and watching demos i decided to do the step and learn graphics programming.
The way i chose to do it is making a game, now after a couple of months i understand more or less the basic stuff (sprites, bitmap and char modes, ...).
I would like to know if is possible to do palette effects with the C64. Some years ago i used to program some graphic effects with my 486 PC and the palette is very different in it (RGB components for each color) but the C64 have a total different conception.
How is possible to do effects like fade an image to black (i have seen it in demos) o transform a bitmap picture in, for instance, grayscale??
|
|
... 10 posts hidden. Click here to view all posts.... |
| |
Carlos Account closed
Registered: Mar 2009 Posts: 15 |
thnks for all suggestions! i will try for sure some of them. |
| |
Mace
Registered: May 2002 Posts: 1799 |
Quote: which is memory wise horribly ineffective compared to the first method. in fact useless.
to the original question:
to fade bitmaps you would generate a so called "speedcode" which has a code sniplet for each attribute byte.
lda fadetable,x
sta $0400
lda fadetable,x
sta $d800
you have the above code 1000x times, for each attribute address you use a different "fadetable" which table holds the color values to colorfade the corresponding original color. then by changing the value of the X reg and calling the above code you achieve the actual fade effect.
transforming to grey works similarly, you set up a table which tells for each color what its grey value will be, then you apply this to the attributes.
Oswald, your routine to fade $0400-colours takes 6 bytes per char.
That is (almost) as memory inefficient as doing 6 different charscreens for colours.
You still need $d800 of course and you loose some bytes between $xxe8-xxff, but then again, you might only need 4 or 5 colours to do a fade!
So speedcode takes as much memory as a $d018 toggle.
On top it leaves you less rastertime.
I'm with Graham if you'd want to fade an entire screen.
It's a different ballgame if you want to do only parts of the screen... |
| |
enthusi
Registered: May 2004 Posts: 677 |
I wrote a blender for HiRes once that was rather small.
It toggled d018 only between 2 colorams. (that should suffice, instead of 1 screen per fade)
Setting up the next one while showing one.
It was rather slow (no 256 Table, just 2x 16 for high,low-nibble) but certainly fast enough to prepare a full screen within a few frames that pass between each fade.
N2C4Oxy07
Does that in realtime without buffer (which shows unfortunately ;-) btw... |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
Quote: Oswald, your routine to fade $0400-colours takes 6 bytes per char.
That is (almost) as memory inefficient as doing 6 different charscreens for colours.
You still need $d800 of course and you loose some bytes between $xxe8-xxff, but then again, you might only need 4 or 5 colours to do a fade!
So speedcode takes as much memory as a $d018 toggle.
On top it leaves you less rastertime.
I'm with Graham if you'd want to fade an entire screen.
It's a different ballgame if you want to do only parts of the screen...
Graham was talking about precalculating images and not attributes. I was replying to that.
you can optimize "my" routine, fex, you dont need to reload "fadetable,x" for the same colors. and you dont need to add code where the bitmap is empty.
anyway, one can always come up with a better approach than the general solution, if adding new restrictions (nr of fadeframes, at 8 you'll already need 2 vicbank with twice the bitmap.. oops). |
| |
chancer
Registered: Apr 2003 Posts: 347 |
Carlos... things like
Shattered
might be of interest to you also..
but if you know the structure of the colour maps. Then the theory you can apply to any machine.. things like colour cycling etc. things like where you have a logo.. it's one set of 3 colours (+ the background).. then fades out , then comes back as another 3 colours etc..
most things have a dark / medium / light value colour.. e.g. the 3 shades of grey.. so you check to see how the colour state is..e.g. if it's a dark blue... you'd replace it with the darkest grey etc.
well that's my simplistic approach to it.. others who posted previously are FAR more qualified about such things.
I guess you can do it using math functions like ROL / AND etc.. or pre-calc'd methods. |
| |
Digger
Registered: Mar 2005 Posts: 437 |
I've actually written an editor for creating color fade maps 15 years ago. Check it out here: Color Fade Editor |
Previous - 1 | 2 - Next |