home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / graphics / a150_1 / !Demo4 / c / spr < prev   
Text File  |  1992-02-06  |  3KB  |  132 lines

  1. /******************************************************************************
  2. *                                                                             *
  3. *    grp.c                                                                    *
  4. *                                                                             *
  5. ******************************************************************************/
  6.  
  7. #include <stdlib.h>
  8. #include <stdio.h>
  9. #include <math.h>
  10. #include <swis.h>
  11. #include <os.h>
  12. #include <bbc.h>
  13. #include "GrpLib.h"
  14.  
  15. #define BLACK 0x00000000
  16. #define BLUE  0x8B8B8B8B
  17. #define GREEN 0x63636363
  18.  
  19. void SetTxtCurPos(int x, int y)
  20. {
  21.   os_error *err;
  22.   err=bbc_tab(x,y);
  23. }
  24.  
  25. int GetClock(void)
  26. {
  27.   os_regset regs;
  28.   char blk[16];
  29.   int  i=0;
  30.   int  t=0;
  31.  
  32.   regs.r[0]=0x01; /* read system clock */
  33.   regs.r[1]=(int)blk;
  34.   os_swi(OS_Word,®s);
  35.  
  36.   t+=(int)(blk[i++])<<0;
  37.   t+=(int)(blk[i++])<<8;
  38.   t+=(int)(blk[i++])<<16;
  39.   t+=(int)(blk[i++])<<24;
  40.  
  41.   return(t);
  42. }
  43.  
  44. int xorg = 160,yorg = 128,dist = 640;
  45.  
  46. void ReadMouse(int *x, int *y, int *b)
  47. {
  48.   os_regset regs;
  49.  
  50.   os_swi(OS_Mouse,®s);
  51.     *x=regs.r[0];
  52.     *y=regs.r[1];
  53.     *b=regs.r[2];
  54. }
  55.  
  56. int Inkey()
  57. {
  58.   os_regset regs;
  59.  
  60.   regs.r[0] = 129;  /* kb read */
  61.   regs.r[1] = 0; /* wait time low byte */
  62.   regs.r[2] = 0; /* wait time high byte */
  63.   os_swi(OS_Byte,®s);
  64.   return( (regs.r[2]==0) ? regs.r[1] : 0);
  65. }
  66.  
  67. /*****************************************************************************/
  68.  
  69. /*****************************************************************************/
  70.  
  71. #define PI 3.14159265359
  72.  
  73. int main()
  74. {
  75.  
  76.   int  time=0;
  77.   char c;
  78.   char *sprite;
  79.   float t=0;
  80.  
  81.   InitGrp();
  82.   Change2DParm(0,0,319,255);
  83.  
  84.   sprite = load("<Demo4$Dir>.F1");
  85.  
  86.   SwapView(0x00000000);
  87.    
  88. while (1==1) {
  89.  
  90.   GrpReg[ 0] = (int)(128*cos(t-  PI/2)+160);
  91.   GrpReg[ 1] = (int)(128*sin(t-  PI/2)+128);
  92.   GrpReg[ 2] = (int)(128*cos(t-  PI/6)+160);
  93.   GrpReg[ 3] = (int)(128*sin(t-  PI/6)+128);
  94.   GrpReg[ 4] = (int)(128*cos(t+  PI/2)+160);
  95.   GrpReg[ 5] = (int)(128*sin(t+  PI/2)+128);
  96.   GrpReg[ 6] =  100+30*cos(-  PI/2);
  97.   GrpReg[ 7] =  150+30*sin(-  PI/2);
  98.   GrpReg[ 8] =  100+30*cos(-  PI/6);
  99.   GrpReg[ 9] =  150+30*sin(-  PI/6);
  100.   GrpReg[10] =  100+30*cos(+  PI/2);
  101.   GrpReg[11] =  150+30*sin(+  PI/2);
  102.   GrpReg[12] = (int)sprite;
  103.   CallGrp(GrpReg,GrpStack,Spr2DPoly3);
  104.  
  105.   GrpReg[ 0] = (int)(128*cos(t-  PI/2)+160);
  106.   GrpReg[ 1] = (int)(128*sin(t-  PI/2)+128);
  107.   GrpReg[ 2] = (int)(128*cos(t-5*PI/6)+160);
  108.   GrpReg[ 3] = (int)(128*sin(t-5*PI/6)+128);
  109.   GrpReg[ 4] = (int)(128*cos(t+  PI/2)+160);
  110.   GrpReg[ 5] = (int)(128*sin(t+  PI/2)+128);
  111.   GrpReg[ 6] =  100+30*cos(-  PI/2);
  112.   GrpReg[ 7] =  150+30*sin(-  PI/2);
  113.   GrpReg[ 8] =  100+30*cos(-5*PI/6);
  114.   GrpReg[ 9] =  150+30*sin(-5*PI/6);
  115.   GrpReg[10] =  100+30*cos(+  PI/2);
  116.   GrpReg[11] =  150+30*sin(+  PI/2);
  117.   GrpReg[12] = (int)sprite;
  118.   CallGrp(GrpReg,GrpStack,Spr2DPoly3);
  119.  
  120.   SwapView(0x00000000);
  121.  
  122.   while ((c=Inkey()) == 0);
  123.   
  124.   switch(c) {
  125.     case '+' : t+= 0.03; break;
  126.     case '-' : t-= 0.03; break;
  127.   }
  128.  
  129. }
  130.  
  131. }
  132.