/********************************* * SPRDEMO - Vera Sprite Demo * *********************************/ //Specify System Header using -H option #include #include #include #include #include #include #include #include "include/veramem.h02" //Vera Memory Access #include "include/veraspr.h02" //Vera Sprites char spindx; //Sprite Index int spaddr; //Sprite Address char spxlo,spxhi; //Sprite X-Coordinate char spylo,spyhi; //Sprite Y-Coordinate struct spregs spctrl; //Sprite Control Registers struct sprite spattr; //Sprite Attributes const char happy = {0,0,7,7,7,7,0,0, 0,7,7,7,7,7,7,0, 7,7,0,7,7,0,7,7, 7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7, 7,0,7,7,7,7,0,7, 0,7,0,0,0,0,7,7, 0,0,7,7,7,7,0,0}; /*Print Sprite Control Registers*/ void prtspk() { printf(spctrl.ctrl, "CTRL=%b, "); printf(spctrl.clsn, "CLSN=%b%n"); } /*Print Sprite Attributes */ void prtspr() { printf(setdst(spattr.addr),"ADR=$%w, "); printf(setdst(spattr.horz),"HRZ=%i, "); printf(setdst(spattr.vert),"VRT=%i, "); printf(spattr.ctrl,"CTL=$%x, "); printf(spattr.size,"SIZ=$%x%n"); } main: spxlo=0; spxhi=0; spylo=0; spyhi=0; for (spindx=0; spindx<#MAXSPR; spindx++) { spaddr=&$800; setspa(spaddr); //Set Vera Address to Sprite Address setmem(@happy,&happy); //Write Sprite Data to Vera setspd(spindx,spaddr); //Set Sprite Address setspb(spindx,1); //Set Mode to 8 Bits per Pixel setspx(spindx,spxhi,spxlo); //Set Sprite X-Coordinate setspy(spindx,spyhi,spylo); //Set Sprite Y-Coordinate setspz(spindx,3); //Display in Front of Layer 1 setspe(#TRUE); //Enable Sprites spxlo=spxlo+16; if (!spxlo) spylo=spylo+16; } getspk(&spctrl); //Read Sprite Control Registers puts("SPRITES: "); prtspk(); //Print Sprite Control Registers getspr(spindx,&spattr); //Read Sprite Attributes printf(spindx,"SPRITE %d "); prtspr(); //Print Sprite Attributes goto exit;