[comp.sys.atari.8bit] 3D on the 8 bits

ekijak@ARDEC.ARPA ("Edmund S. Kijak", IMD-SIAS) (05/02/88)

I agree with wallman-george@yale-zoo.arpa (Natuerlich!) responding to Stan
Lackey's suggestion to use the jump at VBI at the end of a display list to 
jump to an alternate display list.  (This was to automatically display
alternating screens meant for the left eye, then right eye, etc. to achieve
a stereoscopic effect with a minimum of software coding).  I tried it on a
400 and found that the address in the jump instruction is ignored, the computer
continues to use the original display list and the display doesn't change.
Perhaps as wallman-george@yale... points out, something has to be done to 
'shut-off' shadowing of memory locations pointing to the display list.  I haven't
figured out how to do it though (or if it is even possible).  Maybe it works
on the XE machines.

cfchiesa@bsu-cs.UUCP (Christopher Chiesa) (05/03/88)

(Parent-article information lost due to hitting 'R' rather than 'f' first 
time through... sigh...)

> ...use the jump at VBI at the end of a display list to 
> jump to an alternate display list. ... 
> I tried it on a 400 and found that the address in the jump instruction is 
> ignored, the computer continues to use the original display list and the 
> display doesn't change.
> Perhaps as wallman-george@yale... points out, something has to be done to 
> 'shut-off' shadowing of memory locations pointing to the display list.  

Well, you've got the basic idea: that the OS VBI routine is restoring the 
hardware Display-List pointer from shadow locations 560,561 (dec), AFTER the
Antic JMP instruction tries to go somewhere else.  You need to either SHUT OFF
shadowing of 560,561 into hardware, OR update THOSE locations so that THEY ALSO
point at the new Display List. 

Shutting off shadowing may be as easy as setting the CRITIC flag, suppressing
part of the VBI processing -- but I'm not absolutely sure that the shadowing
you want to suppress, is part of the code getting suppressed, so that may not
work.  To be absolutely sure, you'd want to write your OWN VBI routine that 
took care of whatever OS operations you wanted still to happen, but DIDN'T
shadow the Display List locations.

Updating the shadow locations on the fly could be done most easily in a short
DLI (Display List Interrupt) routine; in the middle of display "A", the DLI 
kicks in and changes the shadow registers to point to display list "B".  And
vice versa.  Note that the DLI needs to know which display list it is currently
in; you need to maintain a flag, or switch, in memory.  The advantage to THIS 
method is that the code is relatively short, you don't have to take up the bur-
den of anything the OS normally handles for you, and you can turn the page-
flipping DLI on and off by playing ONLY with the Display List.  

Of course, in NEITHER application are you limited to TWO display lists, al-
though if you're after STEREO that's all you really need. 


-- 
UUCP: <backbones>!{iuvax,pur-ee,uunet}!bsu-cs!cfchiesa 
cfchiesa@bsu-cs.UUCP                                           

) (05/05/88)

In article <8805020833.aa01825@ARDEC-3.ARDEC.ARPA> ekijak@ARDEC.ARPA ("Edmund S. Kijak", IMD-SIAS) writes:
>Perhaps as wallman-george@yale... points out, something has to be done to 
>'shut-off' shadowing of memory locations pointing to the display list.  I haven't
>figured out how to do it though (or if it is even possible).  Maybe it works
>on the XE machines.

Nothing easier than that. Just circumvent the usual OS routine. As usual
I don't have my Atari sitting here "at work" but this should work (in
BASIC).

POKE 54286,0
POKE 546,PEEK(548)
POKE 547,PEEK(549)
POKE 54268,192

OK what I think this will do is preempt the immediate VBI by using
the deferred VBI that doesn't do the shadowing and usually does
nothing. 54286 is NMIEN that turns VBIs and DLIs on and off.

Watch out. Lots of stuff will not work anymore with shadowing disabled
such as  'comfortable typing' SETCOLOR commands etc. If you use 
BASIC pure in the first place, you won't get very far. Better write a
little VBI that does the work.
DISCLAIMER: the statements were done w/o consulting either my indis-
pensable Mapping the Atari book, nor by trying it out on a computer.
But I am confident that above statements are true.

--------------------------------------------------------------
Loveletters & Hatemail to : wallman@yalecs     
                 Files to : WALLMANN@CTSTATEU  (Bitnet)
                 Talk  to : wallman@yale-zoo-suned.arpa
--------------------------------------------------------------

lackey@Alliant.COM (Stan Lackey) (05/06/88)

In article <8805020833.aa01825@ARDEC-3.ARDEC.ARPA> ekijak@ARDEC.ARPA ("Edmund S. Kijak", IMD-SIAS) writes:
>I agree with wallman-george@yale-zoo.arpa (Natuerlich!) responding to Stan
>Lackey's suggestion to use the jump at VBI at the end of a display list to 
>jump to an alternate display list.

I glitched.  What I REALLY did was change 560/561 and the hardware location
to the alternate display list in an extension to the VBI code I put in page 6.
Now, who is going to buy a pair of Sega 3D glasses ($60) and try it out?
If I was confident I could figure out what voltages to apply to those
babies without blowing them out, I might go for it myself...
-Stan

cfchiesa@bsu-cs.UUCP (Christopher Chiesa) (05/07/88)

If anyone DOES come up with tech-specs for the Sega 3D glasses (voltages, 
currents, pulse form requirements etc.), and if anyone else knows where to
get them, I'd be happy to throw $60 into 'em.  I've been a stereo nut for years,
so this is a worthwhile expenditure.

Chris Chiesa 
-- 
UUCP: <backbones>!{iuvax,pur-ee,uunet}!bsu-cs!cfchiesa 
cfchiesa@bsu-cs.UUCP