back in january, i asked myself if it was possible to generate more than 4 colors (counting black in) on the virtual boy with a little trick. so i wrote two simple demos, one having a seperate image for each eye, and a second one quickly exchanging two images to trick the human eye so it believes that it sees both images merged into one. you can see the two images and the wanted result in the appended image.
the first way didn’t work, the human brain won’t combine the two images. (thanks again to virtualboyfreak for testing this on hardware and getting the headache while i didn’t have my flashboy at hand. ;-))
the second seemed more promising, though, since it showed the 10 colors but flickered heavily.
so i tried to sync the image exchanging to the virtual boy screen’s refresh rate with some code jorgeche send me, but it still didn’t work. at it seems, the screen’s refresh rate is just too low compared to our eyes’.
i attached the source to the demo if anyone wants to have a look at it and might want to give multiple colors on the vb another chance.
can anyone think of other tricks to try?
- This topic was modified 16 years, 9 months ago by KR155E.
Attachments:
First of all I want to say that is a sweet image you have done some nice color optimization. Second Id like to say I understand dithering and that isnt what I am suggesting. Dithering is where you take a unlimited # of colors and break it down to x amount of colors with patterned blends making the extra colors. What I am suggesting is smart dithering if you will. Taking the 10 colors that cannot appear on the Virtual Boy and substituting them for colors that can and will appear on the Virtual Boy. It’s kind of like dithering only without any unwanted artifacts. like a pre-dithering instead of post-dithering. It’s taking a limited color pallete and substituting it for patterned colors that can be viewed on the Virtual Boy. Basically taking 10 colors and assigning a value on each color and in the final image when a color comes up that the Virtual Boy can’t display it substitutes it for a patterned color that’s all. The result may look like dithering but what I am suggesting is more powerful for the artist. Basically no one may incorporate this feature into vide but if they did Id love to start drawing with 10 colors instead of just 4!
Ok I get what you’re saying – but at the end of everything, isn’t that just creating the same image dithering anyway?
The difference is that instead of having the chance to review the dithering amount and spread, then clear up pixels after that – you’d have an image with no optimisation.
If you take Photoshop for example, you could have it render any image into ten colours, then have more control over those colours by filling with a defined pattern, but you’ll still need to clear it up afterwards with a quick sweep.
If you want to skip that, you can dither as a pattern, or as noise, which sometimes helps the image representation – but it’s still better to have that control in an image editing program then put into code, rather than trust a machine to do it automatically in my opinion.
Unless I’m really off here and you’re talking about layering colours on top of each other to get a new colour (like Hellraiser NES) – what would be the actual benefit once all the work is done? Even in this example, I don’t think it would work on a VB because visuals are (depending on focus settings) pixel-crisp.
On a TV set you can interlace blue wirh yellow and try to get a green that isn’t in the limited palette. However, on a VB, the colours won’t blur because they’re the same hue and even if they did, you can only mix to a limited extent I’d say. I suppose the best you could hope for is an illusion that looks like 8 shades instead of 4, but I think it’s just as easy to do that directly in Photoshop myself.
Sorry to double post, I can’t figure out to to merge or edit a post – but I thought I might try and illustrate what I mean about the interlacing.
I’ve mocked up the 4 tones and interlaced these to try and get mixed colours, but it doesn’t really make much difference unfortunately: [click to full-size, preview has 2600-syndrome]
Of course, you could try the flickering option, but given the VB’s headache issues as-is I can’t see this being a good idea. I have no idea what the refresh rate is (60hz x 2?) and even less about sprite limits, I can’t see it being a viable option to explore.
Attachments:
Just wanted to come back to this and add that I tried Krisse’s program (10 colour demo) out on real hardware and was quite impressed.
The flickering and stereo blending methods don’t work, but the dithered 10 colour demo works great. It doesn’t give a steady 10 colour gradient, as several dithering patterns look almost the same on real hardware.
However, it sure looks like at least 6 separate colours in there and you can hardly see the dither – unlike the intro to Bound High! The dither is very obvious there as he boosts into the sky. Krisse’s demo blends tones much better.
- This reply was modified 13 years, 2 months ago by L___E___T.
Finnally, someone understands what I’m talking about. 🙂 Now that we got that taken care of could someone (please) who is good at VIDE program in these Psydo colors so I can start drawing. If not I guess I’ll have to do it the old fashoned way.
- This reply was modified 13 years, 1 month ago by Morintari.
If you use Photoshop to draw in ten colours, you can always fill the colours with the same dither pattern as Chris made though right? It’s best practice I’d say – it’s what I was trying to suggest all along.
So I got back to the multiple color topic and finally produced something remotely useful, only ten years after the original post. 😉
You have probably seen the news about the new Multi Color Demo? It contains an 8 color bar made of two images blended together (the overlapping image is only shown every second frame).
Here’s something a little bit more interesting, I quickly converted the Yoshi’s Island title screen to 8 colors using that trick. Make sure to try this on a real VB, since the image flickers heavily on emulators!
Unfortunately, as it turns out, the image flickers noticeably even on the VB. While I personally think that the hi-color image looks really good, I find the flickering a bit too annoying for the trick to be really feasible.
What yo you guys think?
EDIT: replaced the ROM. You can now toggle between 4 color and 8 color variants using L and R triggers.
Here’s a test image with reduced flickering.
In the previous test images it was noticable, that larger areas of a blended color are flickering the most. In this 3D test image, only the 4 base colors are used for larger areas. The additional, blended colors are only used for small details: small shadows and anti-aliasing.
In the attached comparison PNG, you can see that the multi color image looks much smoother and less pixelated. So I think this technique especially works nice for images like this one.
The ROM attached only contains the multi color image without comparison images, though. Still flickers with an emulator of cause, but on hardware I can’t perceive flickering anymore.
Thanks to KR155E for compiling the ROM.
- This reply was modified 6 years, 5 months ago by STEREO KID.
StinkerB06 wrote:
What emulator did you use to take those screenshots?
You can only screenshot one of the two images that are combined in the player’s visual cortex, but not the resulting image. Therefore, all the 8 color images above are mocks.
Dreammary wrote:
I really want to see a game implement this layered dithering.
I definitely want to do that in future games where it makes sense. The drawbacks are:
– consumes extra char memory, which is often a bottleneck in VB dev
– consumes an additional world (of which there are 32 in total)
– flickers on emulators
So I guess that, in addition to using the additional colors only for shading and such, as STEREO BOY has shown, it would make sense to:
– use high color images economically
– implement an “emulator mode” that falls back to 4 color images.
So I just approached the topic from a different direction and found out that up to 10 colors are possible using this trick – not only 8. Previously I just used the scientifically proven method of trial and error(tm) using consistent brightness settings.
—
Now with a tiny bit of math involved:
Let two consecutive frames be our atomic unit, in which a color is generated from either a single color shown in both frames, or the blending of two different colors, each visible in one of the frames.
A “color” basically is just red with a certain brightness, that is a certain amount of photones emitted by the VB’s LEDs defined by how long the LED is on for that pixel.
For the previous demos, consistent brightness settings were used, meaning that every color is twice as bright as the previous one.
Black: 0
Dark Red: 32
Medium Red: 64
Bright Red: 128
—
Let’s have color #4 as an example, which is a blended color between dark red and medium red.
Even Frame: Overlaying image is not visible, thus you see the lower image’s dark red (32).
Odd Frame: Overlaying image is visible, thus you see it’s medium red (64).
The resulting perceived brightness is: (32 + 64) / 2 = 48
—
Following are the resulting 8 colors using consistent brightness settings:
#1: 0
#2: 16 (Blended)
#3: 32
#4: 48 (Blended)
#5: 64
#6: 80 (Blended)
#7: 96 (Blended)
#8: 128
—
Now, if we use non-consistent brightness settings, for example (0, 24, 80, 128), we can produce 10 different colors. I am currently trying to find the optimal values to produce a color palette as homogeneous as possible.
Find the LibreOffice Calc document I made for this attached to this post. If all goes well, the next ROM posted here will show a 10 color image. Fingers crossed that it won’t flicker on hardware either. 🙂
Attachments:
This is the dither map I designed in 2015, it’s all possible combinations.
Attachments:
I am still working on this with Stereo Boy. We’ve moved on to using animations instead of transparencies, so we’re now using a single animated image with 2 animation frames which alternate every cycle, instead of two images, where one is constant, while the other is only shown every second frame.
We’re still experimenting with 10 colors, but it seems the best way is having 7 colors: the original 4 plus 3 in between, so we’re mixing every color only with its direct adjacents for minimal flickering and both a perfectly consistent palette and brightness settings.
Anyway, I have updated my LibreOffice Calc color table a little bit.
Attachments: