// Filename : YAROZE.C // Coded by : Scott Evans // Created/Modified : 16/9/97 // Description : This file contains various routines for Yaroze programs #include #ifdef YAROZE // Global pointers to controller buffers volatile u_byte *pad0,*pad1; // Function : SetDefDispEnv() // Coded by : Scott Evans // Created/Modified : 16/9/97 // Description : Set the default values of a DISPENV structure // Parameters : env - DISPENV to set // x,y,w,h - display area to set // Returns : Pointer to DISPENV that was used // Notes : Replicates professional development kit version DISPENV *SetDefDispEnv(DISPENV *env,u_word x,u_word y,u_word w,u_word h) { // Set display area setRECT(&env->disp,x,y,w,h); // Set default screen size setRECT(&env->screen,0,0,256,240); // No interlace env->isinter=0; // Frame buffer mode 16 bit env->isrgb24=0; return(env); } // Function : SetDefDrawEnv() // Coded by : Scott Evans // Created/Modified : 16/9/97 // Description : Set default values of a DRAWENV structure // Parameters : env - DRAWENV to set // x,y,w,h - drawing area to set // Returns : Pointer to DRAWENV which was used // Notes : Replicates professional development kit version DRAWENV *SetDefDrawEnv(DRAWENV *env,u_word x,u_word y,u_word w,u_word h) { // Set clipping area and drawing offsets setRECT(&env->clip,env->ofs[0]=x,env->ofs[1]=y,w,h); // Set default texture window and texture page setRECT(&env->tw,0,0,0,0); env->tpage=GetTPage(0,0,640,0); // Set dither on, drawing in display not allowed, clear background off env->dtd=1; env->dfe=(h>=480 ? 1 : 0); env->isbg=0; // Set background colour to black setRGB0(env,0,0,0); return(env); } // Function : PadInit() // Coded by : Scott Evans // Created/Modified : 16/9/97 // Description : Initialise controllers // Parameters : mode - does nothing // Returns : Nothing // Notes : Replicates professional development kit version void PadInit(u_word mode) { GetPadBuf(&pad0,&pad1); } // Function : PadRead() // Coded by : Scott Evans // Created/Modified : 16/9/97 // Description : Reads controller pads // Parameters : id - does nothing // Returns : Status of pad0 in lower word, pad1 in upper word // Notes : Replicates professional development kit version u_long PadRead(u_word id) { return(~((_peekByte(pad0+3)|(_peekByte(pad0+2)<<8))|(_peekByte(pad1+3)|(_peekByte(pad1+2)<<8))<<16)); } // Function : PadRead() // Coded by : Scott Evans // Created/Modified : 2/9/98 // Description : Test a controller in the specified port // Parameters : id - port to test // Returns : 0xff - if no controller present, 0x0 if controller present // Notes : None u_byte PadConnected(u_byte id) { // Test a controller port switch(id) { case 0: return(_peekByte(pad0)); case 1: return(_peekByte(pad1)); } } // Function : SetDrawEnv() // Coded by : Scott Evans // Created/Modified : 15/12/98 // Description : Initialise a drawing environment primitive // Parameters : dr_env - pointer to DR_ENV primitive // drawenv - pointer to drawing environment // Returns : None // Notes : None void SetDrawEnv(DR_ENV *dr_env,DRAWENV *drawenv) { // Number of long words in packet dr_env->tag=(u_long *)(0x06<<24); // Set clipping area dr_env->code[0]=0xe3000000|(drawenv->clip.x&0x3ff)|((drawenv->clip.y&0x3ff)<<10); dr_env->code[1]=0xe4000000|((drawenv->clip.x+drawenv->clip.w-1)&0x3ff)|(((drawenv->clip.y+drawenv->clip.h-1)&0x3ff)<<10); // Set drawing offsets dr_env->code[2]=0xe5000000|(drawenv->ofs[0]&0x7ff)|(drawenv->ofs[1]&0x7ff)<<11; // Set initial texture page, dithering and drawing in display area dr_env->code[3]=0xe1000000|(drawenv->tpage&0x9ff)|(drawenv->dfe ? 0x200 : 0)|(drawenv->dtd ? 0x400: 0); dr_env->code[4]=0xe2000000; dr_env->code[5]=0xe6000000; // Auto clear drawing area if(drawenv->isbg) { // Additional long words in packet dr_env->tag=(u_long *)(0x09<<24); // Colour to clear drawing area with dr_env->code[6]=0x60000000|drawenv->r0|(drawenv->g0<<8)|(drawenv->b0<<16); // Area to clear dr_env->code[7]=(drawenv->clip.x-drawenv->ofs[0])|((drawenv->clip.y-drawenv->ofs[1])<<16); dr_env->code[8]=drawenv->clip.w|(drawenv->clip.h<<16); } } #endif