Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!cs.utexas.edu!uunet!zephyr.ens.tek.com!tektronix!psueea!jove.cs.pdx.edu!bartonr From: bartonr@jove.cs.pdx.edu (Robert Barton) Newsgroups: comp.sys.amiga.tech Subject: Sick, sick idea... Message-ID: <1818@psueea.UUCP> Date: 20 Oct 89 11:50:18 GMT Sender: news@psueea.UUCP Reply-To: bartonr@jove.cs.pdx.edu (Robert Barton) Organization: Dept. of Computer Science, Portland State University; Portland OR Lines: 29 ccplumb@rose.waterloo.edu (Colin Plumb) writes: > Does anyone know the cleanest way to install such an absolute copper list? > I'm hoping that the struct CopList *DspIns element of a CopList is ViewPort-------^^^^^^^ > in global coordinates, so you can MakeVPort(), then mess with this > list to add your own toys, then MrgCop() will make everyone happy. > Or maybe it's posible to put negative coordinates in a user copper list, > so MakeVPort() will create the right DspIns list. No, it'll still > get truncated... ViewPort.DspIns is viewport-relative. One idea I've seen suggested before is to write your own copper list and then use ViewPort.UCopIns instructions to set up the copper location registers and jump to this list. Negative vertical coordinates are certainly ok. For example WAIT -1,0 would mean wait for the beginning of the first line before the top of this ViewPort. This allows you to do something like set up the new colors for a ViewPort before it gets displayed. This is also why ViewPorts have to be separated by at least one blank line. > Basically, you need to make sure Intuition doesn't try to MakeVport() > while the munged copprt list is running. And get the thing cleared > out again... wait for the start of frame, then MakeScreen() and > RethinkDisplay() to force a MrgCop(). Hopefully, RethinkDisplay() > doesn't take too long if no MakeVPort's need to be done... OpenScreen() does a RemakeDisplay(), so you'll have to avoid that. Moving or depth-arranging screens will call MrgCop() by way of RethinkDisplay().