| |
goerp
Registered: Feb 2006 Posts: 21 |
Half pixel high graphical corruption
I'm working on a drawing program for making SuperHires Pics on the PC. The C64 viewer I made multiplexes 8 sprites, but is badly made so there's some graphical corruption (I guess I need a stable raster, working on that).
On the emulator I get some flickering lines in the sprites, but on a real C64 I get lines that are about HALF a pixel high!
They are stable on the top or bottom of a pixel for a while, then flicker a bit and then flip to the other vertical half.
I read somewhere that PAL has 625 lines that are interlaced, maybe the pixels are showing only in one part of the interlace? Is it something related to the monitor type (I use a simple LG LCD TV).
Is it usable for effects (I would think not because it's so unstable).
The program can be found at: http://www.goerp.nl/C64/c64programs/sh%20viewer.prg
(and yes: there's all kinds of things wrong with it, but I'll get it better).
A screenshot from my TV: http://www.goerp.nl/C64/c64programs/halfpixel.png |
|
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
using a modernish LCD TV? |
| |
Deev
Registered: Feb 2002 Posts: 206 |
I'm not an expert, but it looks like some kind of deinterlacing/scaling issue with your TV. Do you not see the behaviour with other C64 graphics? Do a search on something like "deinterlacing retro games" and you'll see there's lots about this kind of thing online. |
| |
goerp
Registered: Feb 2006 Posts: 21 |
@Groepaz: it's from 2008 so I would think pretty modern.
@Deev: it might occur on other C64 stuff, but it's the first time I've noticed it. Because of the flicks I think I would notice it on still graphics. Then again, I watch most stuff on an emulator.
I can see it on both the TV and Monitor2SVideo cable.
I just hooked up an old B&W CRT TV. It's hard to see, but the parts of the half pixels are flickering on the CRT. So that looks more like it has to do with the way the monitorl works.
So the monitor catches the signal on one of the two interlace phases and not the other or something? And because of different timings of the C64 and the monitor there's the switch from high half-pixel to low half-pixel (or maybe because of badly timed interrupts).
The time between the switch is stable about 5 seconds.
You can't have a buildup of being out of sync can you? (difference of 50.1 and 50 Hz is after 5 seconds a difference of .5 so then you get a switch?).
I'll load up some other multiplex stuff on the real C64 later.
But I might need unstable crappy viewers. Has anyone those ;)? |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
if it flickers every other frame, the monitor might misinterprete it as interlace/odd and even fields and then make it half a pixel high....
you could make yourself a simple test program with two sprites or sth and flicker between them the same way.... or just use some IFLI drawing program |
| |
Mr. SID
Registered: Jan 2003 Posts: 424 |
Yes, looks like a TV that can't handle progressive signals... |
| |
Deev
Registered: Feb 2002 Posts: 206 |
Quoting goerp
So the monitor catches the signal on one of the two interlace phases and not the other or something? And because of different timings of the C64 and the monitor there's the switch from high half-pixel to low half-pixel (or maybe because of badly timed interrupts).
As I understand it, it takes one interlaced frame (every other line), then the next interlaced frame (the opposite set of lines) and does its best to merge them into one progressive frame. It then has to scale the combined image up to 720 lines, 1080 lines, or whatever resolution your screen is. This processing is often designed with TV pictures in mind, rather than low-res computer graphics, and in many TVs is just not very well designed anyway, so you do sometimes see the kind of errors you're describing.
I'm not sure why pixels can sometimes flicker from frame to frame. Possibly just very small changes in the analogue signal that cause it to interpret something slightly differently, perhaps. |
| |
goerp
Registered: Feb 2006 Posts: 21 |
I've made a little test like Groepaz suggested: two alternating sprites and two alternating characters and it does indeed not look right.
The characters merge and don't flicker at all, but they don't always merge the same way. If you break off the program and restart, the characters are differently merged.
And the sprites seem to have the half byte high lines, although not the changing after some time, so I guess that's because my program has no stable interrupts.
So it's a problem with my TV.
Hmm, makes me wonder if I have ever seen a IFLI like it's supposed to be.
I'll start browsing all the discussions about best way to view a real C64. :)
Thanks all for the info. |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
okay, so if PAL "bugs" are accepted to generate better gfx, why not utilise this one too ? :) Anyone can get a modern TV to diplay 400 lines? :) |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Quoting Oswaldokay, so if PAL "bugs" are accepted to generate better gfx, why not utilise this one too ? :) Anyone can get a modern TV to diplay 400 lines? :) Feel free to make a demo using that and be happy about all the 3 other people whose TV displays the image in the same broken way. But don't expect a compo team to tweak the signal to the projector so it will display a broken image like your new TV.
(On a side note, i have a CRT TV that displays the C-64 image interlaced no matter what. Maybe will make a few tests with that, but most probably not release a demo, as it's just not standard in any way.) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
Quote:PAL "bugs"
why not try coding something instead of trolling all the time ^_^ |
| |
goerp
Registered: Feb 2006 Posts: 21 |
I think it's a hard effect to code for, at least for me. I think I'm not ready for such ambitious endeavours :)
I'll keep it in the back of my mind, but I'm not sure if I would post it here if I ever do something with it. It would be an exploit of my monitor's shortcomings not of my trusty C64.(more likely the monitor will die before I finish something like that). |