// Various functions for PSX programs // Coded by Scott Evans 24/5/97 // Last modified 24/5/97 #ifndef _USEFUL_H #define _USEFUL_H #include #include #include #include // Size of various PSX structures #define GsOT_TAGsize (sizeof(GsOT_TAG)) #define GsOTsize (sizeof(GsOT)) #define GsPktSize 24 // Switch between ordering tables and packet buffers for double buffering #define _SetOTpktBuff(newOT,oldOT,newPkt,oldPkt,offset) \ (newOT==oldOT ? (newOT=oldOT+1,newPkt=oldPkt+offset) : (newOT=oldOT,newPkt=oldPkt)) // Set up packet buffer // Parameters : size of buffer in number of packets // Returns : pointer to packet buffer PACKET *InitPktBuff(_long npkts) { return((PACKET *)malloc((GsPktSize*npkts)<<1)); } // Free memory used by packet buffer // Parameters : pointer to packet buffer void KillPktBuff(PACKET *p) { free(p); } // Set up ordering table // Parameters : length of ordering table // Returns : pointer to ordering table GsOT *InitOT(_byte OTlength) { GsOT_TAG *tags=(GsOT_TAG *)malloc(((1<length=OTlength,(ot+1)->length=OTlength; ot->org=tags,(ot+1)->org=tags+(1<org); free(ot); } // Initialise graphics sytems // Parameters : video mode, screen resolution, interlace on/off offset GTE/GPU, dither on/off, buffer mode void InitGraphics(_long mode,int xres,int yres,int flags,int dither,int vram) { SetVideoMode(mode); GsInitGraph(xres,yres,flags,dither,vram); GsDefDispBuff(0,0,0,yres); } // Initialize controller buffers #define _InitControllers GetPadBuf(&pad1,&pad2); #endif