Although the Gigascreen effect looks terrible on a modern monitor, it's a much more passable technique on an old 80s TV set with slow phosphor.
Most of the pictures and demos you see around the internet will just have the colours blended between the two screens to approximate this, which is bordering on cheating, but short of watching it with your own eyes on an ancient CRT it's the closest you'll get.
I know this picture from some old wos thread, its always popped up as Spectrum example..
Is that the best we can get on the Spectrum, becouse those four images from Demolicius demo, look dramatically better?
I havent tried Demolicius demo on the real c64, but I think it can look only better, not worse.
On Hohx64 emulator looks great, flickering is obviously reduced in comparison to some other FLI images.
On the C64 there are different colours with the same or at least very similar levels of luminance, if you flip between two of those each frame like light blue and medium grey or light green and yellow the result looks like a new colour with almost no flicker. A less convoluted version of this is used in Mayhem In Monsterland on some of the enemies and most people don't notice it's there. =-)
Thanks TMR, for clarification, I also didnt know about this detail from Mayhem In Monsterland.
I remember one amazing FLI picture of white tiger in end game sequence from the mid-nineties game, but cant remember her name.
However, these images from Demolicius demo are so good and the best I've seen on 8 bit computers so far.
I almost dont believe this is even possible. :)
I havent tried Demolicius demo on the real c64, but I think it can look only better, not worse.
I haven't too but I believe it looks worse. Movie formats like .avi and others compress data in lossy manner which means almost everytime that flicker disappears, dithering disappears, we suddenly have more shades of colour and everything seems better than it really is.
Is that the best we can get on the Spectrum, becouse those four images from Demolicius demo, look dramatically better?
I'm afraid yes, unless you use hardware boosters like ULA+.
For me gigascreen unforunately has limited use. It may be good for techno style demos which you watch on big screen from far distance on demoparty being drunk ;) But try playing a game with it for half an hour, you will want to quit after a minute.
One trick with the 'gigascreen', since the two images are held in the two 128K screen banks, is to interleave the two images on alternate pixel rows by carefully timed bank-swapping. And swap over the interleaving on alternate frames. That way you don't see huge areas obviously flashing between two colours. It's still not something you want to watch for too long though.
The trouble with games using any such technique, as we've discovered with Matt Brown's laser-projected Pong game, is the more you concentrate on the game, your own mental responses speed up, and so you start to see the flicker more prominently.
And as TMR says, colours with similar luminance aren't much of a problem. In fact you can just stipple white and yellow on the Spectrum and it looks like another colour; the same with green and cyan or red and magenta (basically two colours that only differ in the blue register). But what everyone wants to see is orange, and red and yellow are very far apart in terms of luminance and so flicker terribly.
But what everyone wants to see is orange, and red and yellow are very far apart in terms of luminance and so flicker terribly.
One of the problems with crisper modern displays is you can't do color bleed so well. A stippled area of red and yellow looks quite close to orange on an original speccy connected to a small color television via the RF lead.
I'm not too ambitious, just want to see, for example, the image on 7:35 from Demolicius demo on spectrum with the same quality.
Can we achieve that or not?
This is in spite of everything, just an old commode with 16 colors, usually brownish and slow ancient cpu, not a PC with VGA graphics and 65k colors.
I refuse to believe, that the spectrum with its vivid color palette and four times faster cpu, cant do at least the same or better.
There must be a way... even ULA plus counts..
Well when Miguel finally release the plug-in ULAplus you'll be able to use the HAM8x1 software mode. You can see what that looks like now (just select HAM256 and Timex at the same time):
just an old commode with 16 colors, usually brownish
spectrum with its vivid color palette
Sorry but you want to watch converted photos from real life.
Look at yourself in a mirror. Do you see red - RGB(255,0,0), pink - RGB(255,0,255) or yellow - RGB(255,255,0) anywhere? ;)
Spectrum has "pure", intense colours. But in real life you don't have pure colours - you have a mix of grey and brown just like Commode.
And to be honest C64 has 16 colours and Spectrum has practically 8 colours. Bright colors really don't differ much from non bright ones, it's a wasted opportunity for me.
So let's say that loud - yes, Speccy is inferior to Commode in reproducing real life photos.
I dont follow you now... brownish is good?
I dont buy that.. I've been here long enough and I know the truth. ;)
And no, Spectrum isnt inferior to the C64 in any aspect...
It's just different and unique in its own way..
There are two important procedures used in the mcolci converter that had its output demonstrated in demolicious
To reduce flicker i have used two methods as follows
Allow mixing only of similar luma
the converter discards any color mixing combinations that would cause flicker due to too much brightness difference between the two colors
field swapping of pixels.
This is a very important step and ensures that pixels break up into the two fields. (eg rather than have a mix of a gray block and a light gray block, the two colors are chequerboarded in x and y.
In order to allow full pixel swapping, the converter uses the same 3 colors per block for the two fields (this allows each color to be freely swapped)
Furthermore it also means that the actual gfx mode does not use any cpu at all (No d800 swapping, just a bank change)
The other mode (Hires CI-FLI) later on in the demo, propogates in y position (But to allow more color mix combinations, colors are not shared across fields (However luma checks are still in place to reduce flicker)
In order to increase the amount of colors even more, I am using pal color mixing where i can alternate specific colors to generate "new" ones even without interlace. It does look better on the real thing.
Rather than discussing which one is inferior or not, its more important to try to use the strengths of each machine to its potential.
The issues i can see in regards to color interlacing on the spectrum would be the saturated color palette. For most color combinations there would be too much of a luma difference. However.. Using the pixel alternating, this flicker can be reduced.
I am not familiar with custom spectrum modes, is it possible to split the color attributes further with software? With the limitation of 2 colors per 8x8 block this pixel alternating method would have issues.
One of my other gfx modes on the c64 was a mode known as Tri-FLI
This method may work well on the spectrum (if its possible to split colors per line or two lines) On the spectrum this would alternate between red, green and blue error diffused images (but flicker would be reduced by having r,g,b in field 1. g,b,r in field 2 and brg in field 3) per line
There are two important procedures used in the mcolci converter that had its output demonstrated in demolicious
To reduce flicker i have used two methods as follows
Allow mixing only of similar luma
the converter discards any color mixing combinations that would cause flicker due to too much brightness difference between the two colors
field swapping of pixels.
This is a very important step and ensures that pixels break up into the two fields. (eg rather than have a mix of a gray block and a light gray block, the two colors are chequerboarded in x and y.
In order to allow full pixel swapping, the converter uses the same 3 colors per block for the two fields (this allows each color to be freely swapped)
Furthermore it also means that the actual gfx mode does not use any cpu at all (No d800 swapping, just a bank change)
The other mode (Hires CI-FLI) later on in the demo, propogates in y position (But to allow more color mix combinations, colors are not shared across fields (However luma checks are still in place to reduce flicker)
In order to increase the amount of colors even more, I am using pal color mixing where i can alternate specific colors to generate "new" ones even without interlace. It does look better on the real thing.
Thank you for this explanation, the result is truly impressive.
I also tried your CSAM tool, its very interesting an fun, but still dont get such good pictures as yours.
There are so many options to experiment with, I dont know where to start. :)
Video conversion is also excellent, although I am far more interested in the picture at the moment.
Whether the converter supports only bmp format as the source?
I tried jpg files, but I dont have any feedback on images, only the number of iterations increases ..
Glad you liked the tool. The output can ofcourse also be used on spectrum (only need to plot the 8 byte chars to the desired location on the spectrum bitmap) - Although for this, you would need to use the single color hires mode.
I would advise to read the supplied manual first. This gives hints and tips on all the options. Furthermore CSAM works better for images with smooth gradients. (sharp edges and text will result in decreased quality) due to the encoder focusing on these sections. although you can use the weighting options to change this if required.
I am working on a tile based encoder (which gives compression rate approximately 6x more than csam) - at worse quality, but good enough for high framerate video.
CSAM super does also support AVI video (but needs to be uncompressed) - For still images BMP format
I am not familiar with custom spectrum modes, is it possible to split the color attributes further with software? With the limitation of 2 colors per 8x8 block this pixel alternating method would have issues.
With software re-writing, you can manage a 128 pixel wide strip with 8x1 attributes (144 pixels wide if you use a dedicated routine containing the colour data within its satements). You can do nearly the full screen width (240 pixels) with 8x2 attributes, meaning 2 colours in each 8x2 area.
One of my other gfx modes on the c64 was a mode known as Tri-FLI
This method may work well on the spectrum (if its possible to split colors per line or two lines) On the spectrum this would alternate between red, green and blue error diffused images (but flicker would be reduced by having r,g,b in field 1. g,b,r in field 2 and brg in field 3) per line
Problem is you can't copy a screen full of data at 50fps, so you only have two screens you can flip between, and that's assuming you have the page-swapping of a 128K Speccy available to you.
The 8x1 mode (or 8x2) mode should give some nice quality.
I would probably recommend to keep both ink/paper colors the same for each 8x2 / 8x1 in both fields to allow pixel shuffling (to reduce flicker) as the luma differences between each saturated color are too large already.
Also one other point to bear in mind is that flicking two colors do not produce an inbetween in the sense of the average. eg. mixing black $r00g00b00 with white $rffgffbff would not produce $r80g80b80, but rather a darker (very flickering variant) and this can vary from monitor to monitor
Its always wise to visually analyse the mix colors and for "problem mixes" to adjust the calculation accordingly.
Here's my first attempt with CSAM, far from perfect but I like it. :)
Very fun to use, reminds me of BMP2SCR for Spectrum, which I also used to convert images and video.
With software re-writing, you can manage a 128 pixel wide strip with 8x1 attributes (144 pixels wide if you use a dedicated routine containing the colour data within its satements). You can do nearly the full screen width (240 pixels) with 8x2 attributes, meaning 2 colours in each 8x2 area.
Actually you can have 160 pixel wide with 8x1 attributes (see here) and full screen 256 pixels wide with 8x2 attributes (see here).
Here's my first attempt with CSAM, far from perfect but I like it. :)
Very fun to use, reminds me of BMP2SCR for Spectrum, which I also used to convert images and video.
Nice. A few quick hints and tips.
Load the frame
process and wait till errors stop/or change slowly
select 8x4 mode while running. Wait till iterations stop and change slowly
Repeat for 4x4 mode
select 8x8 mode again and select mutate closest
wait till iterations stop and change slowly
repeat for 8x4
repeat for 4x4
then select pixel mutation mode
The above should give up to 10-20% less errors as it refines the codebook more (and is not limited to clustering in fixed 8x8 pixels) Even though the output is 8x8 pixels, the encoder can use pixels from any position as the source which improves on the output quality.
Weighting mode can dramatically increase visual quality (error numbers will show up as higher/lower) but this is due to the weighting options and mask that you create) and can be ignored
Make sure additional LBG clustering does not run again (Usually the default should be fine (Does an initial LBG merge followed by another one 25000 iterations later) More LBG merges does not give any significant improvements.
This is because the initial LBG clustering clusters some blocks efficiently while leaving some orphan cells. the refinement process then replaces these orphans with more optimum cells which when clustered again via lbg will be able to approximate more blocks in the image and maximize quality.
Finally there is the Feedback mode. This can maximize codebooks even more. It converts the image to c64 format (but without color restrictions yet) and uses that as the source.
And there's a 8x1 engine called BIFROST* (derived from a previous engine called ZXodus) and 8x2 engine called NIRVANA. You may find these tutorials useful.
If you want to experiment yourself, I highly recommend installing ZX-Paintbrush that supports both modes. When it starts, select File/New, then choose either "Bifrost*ZXodus ctile files" for 8x1 or "Nirvana btile files" for 8x2.
Have not used a C64 and could barely get my head around BASIC for the Speccy so I can't talk about ease of programming although I ahve heard that the older version of BASIC in the c64 made some of its better functions harder to program. If they had released the updated BASIC used in the c16 and plus/4 then it may ahve had an edge programming wise.
Clearly the c64 wins on colour and sound (although I'd argue the 128K's AY chip is pretty good and is a fair competitor for the SID chip). Graphically however I much prefer the Speccy. The c64 games I've seen, especially in comparison videos, always tend to look a little blocky when compared to the speccy.
In an ideal world I'd ahve the Speccy's speed and graphics with the c64's sound and colours. Now that would ahve been an interesting machine
On the whole, I think I prefered the MSX palette to either the C64 or the Speccy.
Though best of all would have been if anyone could have had the full Speccy 8-colour palette and then 8 alternative colours (for example use the four bits as Blue, Red and 2 bits for Green).
Have not used a C64 and could barely get my head around BASIC for the Speccy so I can't talk about ease of programming although I ahve heard that the older version of BASIC in the c64 made some of its better functions harder to program. If they had released the updated BASIC used in the c16 and plus/4 then it may ahve had an edge programming wise.
Clearly the c64 wins on colour and sound (although I'd argue the 128K's AY chip is pretty good and is a fair competitor for the SID chip). Graphically however I much prefer the Speccy. The c64 games I've seen, especially in comparison videos, always tend to look a little blocky when compared to the speccy.
In an ideal world I'd ahve the Speccy's speed and graphics with the c64's sound and colours. Now that would ahve been an interesting machine
You dont need basic on c64, even Simons one.
Programing on machine code is almost equally simple..
Games in hires graphics and their uniqueness is something that I love most about Spectrum.
That and tons of good memories, of course. :)
Basically sums up anything drawn on the speccy in any graphics mode :)
Edit: except in greyscale that is. If you throw away the garish, over-saturated 3 bit colours you have 15 grey shades and can make rather pretty pictures... just don't look at them on a colour monitor! :o
Looks like someone's given a five year old a year's supply of skittles and left rationing to them ;)
Comments
Most of the pictures and demos you see around the internet will just have the colours blended between the two screens to approximate this, which is bordering on cheating, but short of watching it with your own eyes on an ancient CRT it's the closest you'll get.
I know this picture from some old wos thread, its always popped up as Spectrum example..
Is that the best we can get on the Spectrum, becouse those four images from Demolicius demo, look dramatically better?
I havent tried Demolicius demo on the real c64, but I think it can look only better, not worse.
On Hohx64 emulator looks great, flickering is obviously reduced in comparison to some other FLI images.
Thanks TMR, for clarification, I also didnt know about this detail from Mayhem In Monsterland.
I remember one amazing FLI picture of white tiger in end game sequence from the mid-nineties game, but cant remember her name.
However, these images from Demolicius demo are so good and the best I've seen on 8 bit computers so far.
I almost dont believe this is even possible. :)
http://zx-pk.ru/
I haven't too but I believe it looks worse. Movie formats like .avi and others compress data in lossy manner which means almost everytime that flicker disappears, dithering disappears, we suddenly have more shades of colour and everything seems better than it really is.
I'm afraid yes, unless you use hardware boosters like ULA+.
For me gigascreen unforunately has limited use. It may be good for techno style demos which you watch on big screen from far distance on demoparty being drunk ;) But try playing a game with it for half an hour, you will want to quit after a minute.
The trouble with games using any such technique, as we've discovered with Matt Brown's laser-projected Pong game, is the more you concentrate on the game, your own mental responses speed up, and so you start to see the flicker more prominently.
And as TMR says, colours with similar luminance aren't much of a problem. In fact you can just stipple white and yellow on the Spectrum and it looks like another colour; the same with green and cyan or red and magenta (basically two colours that only differ in the blue register). But what everyone wants to see is orange, and red and yellow are very far apart in terms of luminance and so flicker terribly.
- IONIAN-GAMES.com -
One of the problems with crisper modern displays is you can't do color bleed so well. A stippled area of red and yellow looks quite close to orange on an original speccy connected to a small color television via the RF lead.
Can we achieve that or not?
This is in spite of everything, just an old commode with 16 colors, usually brownish and slow ancient cpu, not a PC with VGA graphics and 65k colors.
I refuse to believe, that the spectrum with its vivid color palette and four times faster cpu, cant do at least the same or better.
There must be a way... even ULA plus counts..
http://zx-pk.ru/
Well when Miguel finally release the plug-in ULAplus you'll be able to use the HAM8x1 software mode. You can see what that looks like now (just select HAM256 and Timex at the same time):
http://www.zx-modules.de/image2ulaplus/image2ulaplusframe.html
Sorry but you want to watch converted photos from real life.
Look at yourself in a mirror. Do you see red - RGB(255,0,0), pink - RGB(255,0,255) or yellow - RGB(255,255,0) anywhere? ;)
Spectrum has "pure", intense colours. But in real life you don't have pure colours - you have a mix of grey and brown just like Commode.
And to be honest C64 has 16 colours and Spectrum has practically 8 colours. Bright colors really don't differ much from non bright ones, it's a wasted opportunity for me.
So let's say that loud - yes, Speccy is inferior to Commode in reproducing real life photos.
So what? ;)
I dont buy that.. I've been here long enough and I know the truth. ;)
And no, Spectrum isnt inferior to the C64 in any aspect...
It's just different and unique in its own way..
http://zx-pk.ru/
To reduce flicker i have used two methods as follows
Allow mixing only of similar luma
the converter discards any color mixing combinations that would cause flicker due to too much brightness difference between the two colors
field swapping of pixels.
This is a very important step and ensures that pixels break up into the two fields. (eg rather than have a mix of a gray block and a light gray block, the two colors are chequerboarded in x and y.
In order to allow full pixel swapping, the converter uses the same 3 colors per block for the two fields (this allows each color to be freely swapped)
Furthermore it also means that the actual gfx mode does not use any cpu at all (No d800 swapping, just a bank change)
The other mode (Hires CI-FLI) later on in the demo, propogates in y position (But to allow more color mix combinations, colors are not shared across fields (However luma checks are still in place to reduce flicker)
In order to increase the amount of colors even more, I am using pal color mixing where i can alternate specific colors to generate "new" ones even without interlace. It does look better on the real thing.
The issues i can see in regards to color interlacing on the spectrum would be the saturated color palette. For most color combinations there would be too much of a luma difference. However.. Using the pixel alternating, this flicker can be reduced.
I am not familiar with custom spectrum modes, is it possible to split the color attributes further with software? With the limitation of 2 colors per 8x8 block this pixel alternating method would have issues.
One of my other gfx modes on the c64 was a mode known as Tri-FLI
This method may work well on the spectrum (if its possible to split colors per line or two lines) On the spectrum this would alternate between red, green and blue error diffused images (but flicker would be reduced by having r,g,b in field 1. g,b,r in field 2 and brg in field 3) per line
Thank you for this explanation, the result is truly impressive.
I also tried your CSAM tool, its very interesting an fun, but still dont get such good pictures as yours.
There are so many options to experiment with, I dont know where to start. :)
Video conversion is also excellent, although I am far more interested in the picture at the moment.
Whether the converter supports only bmp format as the source?
I tried jpg files, but I dont have any feedback on images, only the number of iterations increases ..
http://zx-pk.ru/
I would advise to read the supplied manual first. This gives hints and tips on all the options. Furthermore CSAM works better for images with smooth gradients. (sharp edges and text will result in decreased quality) due to the encoder focusing on these sections. although you can use the weighting options to change this if required.
I am working on a tile based encoder (which gives compression rate approximately 6x more than csam) - at worse quality, but good enough for high framerate video.
CSAM super does also support AVI video (but needs to be uncompressed) - For still images BMP format
With software re-writing, you can manage a 128 pixel wide strip with 8x1 attributes (144 pixels wide if you use a dedicated routine containing the colour data within its satements). You can do nearly the full screen width (240 pixels) with 8x2 attributes, meaning 2 colours in each 8x2 area.
Problem is you can't copy a screen full of data at 50fps, so you only have two screens you can flip between, and that's assuming you have the page-swapping of a 128K Speccy available to you.
- IONIAN-GAMES.com -
The 8x1 mode (or 8x2) mode should give some nice quality.
I would probably recommend to keep both ink/paper colors the same for each 8x2 / 8x1 in both fields to allow pixel shuffling (to reduce flicker) as the luma differences between each saturated color are too large already.
Also one other point to bear in mind is that flicking two colors do not produce an inbetween in the sense of the average. eg. mixing black $r00g00b00 with white $rffgffbff would not produce $r80g80b80, but rather a darker (very flickering variant) and this can vary from monitor to monitor
Its always wise to visually analyse the mix colors and for "problem mixes" to adjust the calculation accordingly.
Very fun to use, reminds me of BMP2SCR for Spectrum, which I also used to convert images and video.
http://zx-pk.ru/
Actually you can have 160 pixel wide with 8x1 attributes (see here) and full screen 256 pixels wide with 8x2 attributes (see here).
Nice. A few quick hints and tips.
Load the frame
process and wait till errors stop/or change slowly
select 8x4 mode while running. Wait till iterations stop and change slowly
Repeat for 4x4 mode
select 8x8 mode again and select mutate closest
wait till iterations stop and change slowly
repeat for 8x4
repeat for 4x4
then select pixel mutation mode
The above should give up to 10-20% less errors as it refines the codebook more (and is not limited to clustering in fixed 8x8 pixels) Even though the output is 8x8 pixels, the encoder can use pixels from any position as the source which improves on the output quality.
Weighting mode can dramatically increase visual quality (error numbers will show up as higher/lower) but this is due to the weighting options and mask that you create) and can be ignored
Make sure additional LBG clustering does not run again (Usually the default should be fine (Does an initial LBG merge followed by another one 25000 iterations later) More LBG merges does not give any significant improvements.
This is because the initial LBG clustering clusters some blocks efficiently while leaving some orphan cells. the refinement process then replaces these orphans with more optimum cells which when clustered again via lbg will be able to approximate more blocks in the image and maximize quality.
Finally there is the Feedback mode. This can maximize codebooks even more. It converts the image to c64 format (but without color restrictions yet) and uses that as the source.
Are there any GFX examples of these modes. All i have seen so far are raster bar effects. It would be nice to utilise these modes for GFX
- IONIAN-GAMES.com -
And there's a 8x1 engine called BIFROST* (derived from a previous engine called ZXodus) and 8x2 engine called NIRVANA. You may find these tutorials useful.
If you want to experiment yourself, I highly recommend installing ZX-Paintbrush that supports both modes. When it starts, select File/New, then choose either "Bifrost*ZXodus ctile files" for 8x1 or "Nirvana btile files" for 8x2.
Clearly the c64 wins on colour and sound (although I'd argue the 128K's AY chip is pretty good and is a fair competitor for the SID chip). Graphically however I much prefer the Speccy. The c64 games I've seen, especially in comparison videos, always tend to look a little blocky when compared to the speccy.
In an ideal world I'd ahve the Speccy's speed and graphics with the c64's sound and colours. Now that would ahve been an interesting machine
Though best of all would have been if anyone could have had the full Speccy 8-colour palette and then 8 alternative colours (for example use the four bits as Blue, Red and 2 bits for Green).
- IONIAN-GAMES.com -
You dont need basic on c64, even Simons one.
Programing on machine code is almost equally simple..
Games in hires graphics and their uniqueness is something that I love most about Spectrum.
That and tons of good memories, of course. :)
@thealgorithm
Thanks for this very useful tips, I'll definitely try them. :)
http://zx-pk.ru/
A rather garish 8x1 demo picture I made for an early version of ZXodus:
And one more 8x1 game, Bozxle:
Basically sums up anything drawn on the speccy in any graphics mode :)
Edit: except in greyscale that is. If you throw away the garish, over-saturated 3 bit colours you have 15 grey shades and can make rather pretty pictures... just don't look at them on a colour monitor! :o
Looks like someone's given a five year old a year's supply of skittles and left rationing to them ;)
Because the forum is experiencing chuntey disturbance again.