Path: chuka.playstation.co.uk!news From: "SCEE" Newsgroups: scee.yaroze.programming.3d_graphics Subject: Re: Split screen? Date: Mon, 15 Dec 1997 12:02:39 -0000 Organization: PlayStation Net Yaroze (SCEE) Lines: 69 Message-ID: <6736qj$9k34@chuka.playstation.co.uk> References: <349129CB.257A@mdx.ac.uk> <01bd0740$4bad6c80$493c63c3@default> NNTP-Posting-Host: 194.203.13.10 X-Newsreader: Microsoft Outlook Express 4.71.1712.3 X-MimeOLE: Produced By Microsoft MimeOLE V4.71.1712.3 A main loop something like this should do the trick. Remember to only add GsSortClear to the first ordering table. Stuart do { // setup first screen GsSetOrign(xscale >> 1, yscale >> 2); // sort out stuff for ordering tables buffIdx = GsGetActiveBuff(); // where all the polygons are copied to make up a scene GsSetWorkBase((PACKET*)GpuOutputPacket[buffIdx]); // clear out ordering table GsClearOt(0, 0, &OT1[buffIdx]); // scale the screen GsScaleScreen(&scale); // ------the game stuff here, adding objects, set view etc DrawSync(0); // finish any drawing VSync(0); GsSwapDispBuff(); // swap screens setRECT(&rect, 0, 0, xscale, yscale >> 1); GsSetClip(&rect); GsDrawOt(&OT1[buffIdx]); // draw first screen // setup next screen GsSetOrign(xscale >> 1, (yscale >> 2) + (yscale >> 1)); GsSwapDispBuff(); // swap screens (otherwise it doesn't know things have changed) GsSwapDispBuff(); // swap screens // where all the polygons are copied to make up a scene GsSetWorkBase((PACKET*)GpuOutputPacket[buffIdx + 2]); // clear out ordering table GsClearOt(0, 0, &OT2[buffIdx]); // scale the screen GsScaleScreen(&scale); // ----------the game stuff again DrawSync(0); // finish any drawing setRECT(&rect, 0, yscale >> 1, xscale, yscale >> 1); GsSetClip(&rect); GsDrawOt(&OT2[buffIdx]); // draw floor roof PadStatus = PadRead(); // read the pad // ---------pad stuff // ---------font prints } while(!(PadStatus & PADselect) || !(PadStatus & PADstart));