Jump to content
IGNORED

Real Interlaced graphics on the A8 - getting closer


Rybags

Recommended Posts

I think I'm getting a bit closer.

 

Although I don't have a single setup that keeps both my TVs happy, I have a set of data that with small adjustments works on both.

My third TV is a little 5" job, and is just too small to be able to tell what's going on, it would be nice to be able to try on 1 or 2 more.

 

With luck, I'll have a new version to upload a bit later if some people can help test it.

Link to comment
Share on other sites

For download: Interlace Test V2. Choose from image or just the program file:

 

Intv2.zip (BASIC program, run from APE mirror, or mount the ATR version, boot from a DOS disk and load from this one)

 

 

post-7804-1232809378_thumb.jpg

 

Version 2 of the test program - BASIC + Asm. Hopefully this should generate some positive results. NTSC compatible but no guarantees there.

If NTSC people have problems with lockups, try changing the second VMIN= in line 1005 to 125 or 126.

 

How to use the program. RUN it from BASIC. It takes a little while to initialize, then presents the screen similar to before.

 

 

Press "I" to turn the Interlace on. Leave it on unless things become too garbled. You'll never see interlaced graphics if it is "OFF".

 

Next step - press "O" to cycle through offset values. They range from 0 to 23.

 

If you have no success there, press "V" to try the next VStart value, then repeat the offset checking stage.

You have a range of VStart values available from 132-137 (PAL). It starts on 133 by default.

 

Once you find you have Interlaced graphics (ie the line shows 16 fine steps), try cycling the screen colour with "C". Sometimes you'll get undesirable flashing, which means you haven't been totally successful. In this case, try again with the V/O sequencing.

 

 

So far, values I've found to work on either of my 2 PAL TVs are:

VStart   Offset
132	 9,13,17,20
133	 15,19,22,23
134	 13,17,21
135	 0,3,17,18,20,23
136	 6,23
137	 3,20,22

 

It would be handy if as many people as possible could try this program, and on different TVs/monitors. CRT type devices much preferable to LCDs.

Edited by Rybags
Link to comment
Share on other sites

Version 2 of the test program - BASIC + Asm. Hopefully this should generate some positive results. NTSC compatible but no guarantees there.

If NTSC people have problems with lockups, try changing the second VMIN= in line 1005 to 125 or 126.

 

How to use the program. RUN it from BASIC. It takes a little while to initialize, then presents the screen similar to before.

 

Hm. First NTSC test: I tried with the 2nd VMIN in line 1005 at the default (124), and with 125 and 126 too...

 

In all cases, when I run the program, the screen turns black almost instantly. If I try to type on the keyboard, I can hear keyclicks (so either the program is running or has exited, but the machine isn't hard-locked). If I press Reset, I get my READY prompt back...

 

Hm. While it's in black-screen mode, the program's still running: blindly typing GR.0 doesn't work. If I hit Break first, then I can type GR.0 and get my prompt back.

 

I tried actually hitting I, V, and O in various combinations, thinking maybe one of the values for offset/vscrol would do something other than black screen, but no joy... although after I did that I could no longer hit Break and GR.0 to get the prompt back (Reset still works). Actually sometimes I can get the prompt back, but with the entire GR.0 playfield shifted down a couple of lines (the black border at the top of the screen is 2 or more times its normal height, like there are extra blanking lines in the DL).

 

In case it matters: I'm running it on a 64K-upgraded 600XL with a homebrew composite out mod. The upgrades are solid (I used it as my primary development machine for the first few versions of FujiChat, plus it used to be my main gaming rig). I was going to try it on an 800, but can't seem to find my BASIC cart... I do have a stock 800XL I can uncrate and try (which I'll do a bit later).

 

Also, the monitor is a Commodore 1702. It'd be a good bit of effort to try a different monitor (maybe try the living room TV later, which is a 36" CRT from about 2003).

 

I haven't actually looked at the program or tried to debug it, just trying to give as detailed a bug report as possible... does the program start up with interlace turned off? (the directions seem to imply that).

Link to comment
Share on other sites

Sorry about that - somehow the program had an error in the VBlank but for some reason I didn't pick it up running it here.

 

I've fixed and uploaded it again in the previous post.

 

If you still have problems, try this:

in line 1530, change IF A=23

to IF A=22

Edited by Rybags
Link to comment
Share on other sites

on line 1520 change IF A=23

to IF A=22

 

Hopefully that might help.

 

(I assume you meant line 1530?)

 

No effect.

 

Tried with various VMIN= values on line 1005, too. Also tried changing the 23 on line 1530 to a 21 and a 20... too bad this is something that can't be tested in the emulator... though in the emulator, I can see the "INITIALIZING" message (which I can't on real hardware: the screen goes black instantly. Maybe this is a clue?)

Link to comment
Share on other sites

The 'scope I've got doesn't work properly and even then I don't know if it would be any good for TV signals.

 

I've got 192 KHz sampling on the sound card, so that's all I can go by unless someone else can help out there.

That gives you 12 readings per scanline, so you get a bit of an idea what's going on.

 

There seems to be some leeway anyhow... the Plus/4 method of doing interlace actually makes each second frame shorter... sampling them and graphing alongside normal samples shows them skewing away by half a scanline each second frame.

Link to comment
Share on other sites

Thanks... you might encounter settings where it works but has jitter and/or bad colour fluctuations.

 

In such cases, just keep trying.

 

I'm going to try and borrow a couple more TVs, with luck I might be able to refine this thing to the point where a minimal amount of work is needed to get this to work.

 

Would be handy though if more people with PAL machines could try the newer version out.

Link to comment
Share on other sites

Cool.

 

I've simplified the routine a bit and have 4 TVs here to test on. Trying to get common presets that work on all of them.

 

I'm going to make a version with a small number of presets... also do a bitmap picture instead of a boring text screen, might generate a bit more interest.

Edited by Rybags
Link to comment
Share on other sites

The last V2B test gave me very nice result:

 

post-8944-1232906224_thumb.jpg

This was done on 600XL, PAL and a stock C= 1084S monitor. Same result with FBAS and Y/C.

 

 

It would be very cool if this 'exploit' gives the a8 a new graphics mode.

Looking forward to something more exiting than a diagonal line :)

 

Keep up the work!

Edited by Beetle
Link to comment
Share on other sites

I thought interlace would be impossible because I seemed to recall GTIA deriving his own timing for generates both SYNCs, and then I assumed tricking ANTIC would not be enough. But I re-checked GTIA schematics, and I see now that this not entirely correct.

 

Not sure how much this would help, but this is the description (taken from the schematics) about how GTIA generates SYNC:

 

GTIA receives vertical and horizontal timing data from the ANTIC ANx signals. The AN Hblank code (01x) is used for the horizontal timing, and the AN Vsync code (001) for the vertical one. Other AN codes don't affect timing.

 

GTIA has its own horizontal counter. The counter is reset when a transition to Hblank code is received. But GTIA also resets the counter on its own on 227 value (this means that GTIA can keep horizontal timing without ANTIC). Horizontal SYNC is derived indirectly from this counter, not directly from any AN code.

 

GTIA has no vertical counter. The AN Vsync code is used directly to drive Vertical SYNC.

 

GTIA has composite sync only, no separated HSYNC and VSYNC. Both internal SYNC signals are combined just befored driving the CSYNC pin. Note that composite SYNC is possibly quite relevant to the issue.

 

Hope this helps.

Link to comment
Share on other sites

The 'scope I've got doesn't work properly and even then I don't know if it would be any good for TV signals.

 

I've got 192 KHz sampling on the sound card, so that's all I can go by unless someone else can help out there.

That gives you 12 readings per scanline, so you get a bit of an idea what's going on.

 

There seems to be some leeway anyhow... the Plus/4 method of doing interlace actually makes each second frame shorter... sampling them and graphing alongside normal samples shows them skewing away by half a scanline each second frame.

 

You could compare with the Amiga interlace signal which always works consistently. I timed the cycles/frame and going from interlace to non-interlace does not affect the total cycles/frame much-- (< one microsecond on NTSC C1084S monitor).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...