/[gxemul]/trunk/demos/rectangles/rectangles.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/demos/rectangles/rectangles.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 24 by dpavlin, Mon Oct 8 16:19:56 2007 UTC revision 28 by dpavlin, Mon Oct 8 16:20:26 2007 UTC
# Line 1  Line 1 
1  /*  /*
2   *  $Id: rectangles.c,v 1.3 2006/05/22 04:53:52 debug Exp $   *  $Id: rectangles.c,v 1.5 2006/07/09 07:53:33 debug Exp $
3   *   *
4   *  GXemul demo:  Random rectangles   *  GXemul demo:  Random rectangles
5   *   *
# Line 18  Line 18 
18  #endif  #endif
19    
20    
21  /*  Framebuffer base address:  */  /*  Framebuffer linear memory and controller base addresss:  */
22  #define FB_BASE                 (PHYSADDR_OFFSET + DEV_FB_ADDRESS)  #define FB_BASE                 (PHYSADDR_OFFSET + DEV_FB_ADDRESS)
23    #define FBCTRL_BASE             (PHYSADDR_OFFSET + DEV_FBCTRL_ADDRESS)
24    
25    
26    #define XRES    800
27    #define YRES    600
28    
29    
30  void my_memset(unsigned char *a, int x, int len)  void my_memset(unsigned char *a, int x, int len)
# Line 35  void draw_rectangle(int x1, int y1, int Line 40  void draw_rectangle(int x1, int y1, int
40    
41          for (y=y1; y<=y2; y++) {          for (y=y1; y<=y2; y++) {
42                  len = 3 * (x2-x1+1);                  len = 3 * (x2-x1+1);
43                  if (len > 0)                  if (len > 0) {
44                          my_memset((unsigned char *)FB_BASE + 3*(640*y+x1),                          my_memset((unsigned char *)FB_BASE +
45                              c, len);                              3 * (XRES * y + x1), c, len);
46                    }
47          }          }
48  }  }
49    
# Line 52  unsigned int my_random() Line 58  unsigned int my_random()
58  }  }
59    
60    
61  void f(void) {  void fbctrl_write_port(int p)
62    {
63            *(volatile int *)(FBCTRL_BASE + DEV_FBCTRL_PORT) = p;
64    }
65    
66    
67    void fbctrl_write_data(int d)
68    {
69            *(volatile int *)(FBCTRL_BASE + DEV_FBCTRL_DATA) = d;
70    }
71    
72    
73    void fbctrl_set_x1(int v)
74    {
75            fbctrl_write_port(DEV_FBCTRL_PORT_X1);
76            fbctrl_write_data(v);
77    }
78    
79    
80    void fbctrl_set_y1(int v)
81    {
82            fbctrl_write_port(DEV_FBCTRL_PORT_Y1);
83            fbctrl_write_data(v);
84    }
85    
86    
87    void fbctrl_command(int c)
88    {
89            fbctrl_write_port(DEV_FBCTRL_PORT_COMMAND);
90            fbctrl_write_data(c);
91    }
92    
93    
94    void change_resolution(int xres, int yres)
95    {
96            fbctrl_set_x1(xres);
97            fbctrl_set_y1(yres);
98            fbctrl_command(DEV_FBCTRL_COMMAND_SET_RESOLUTION);
99    }
100    
101    
102    void f(void)
103    {
104            /*  Change to the resolution we want:  */
105            change_resolution(XRES, YRES);
106    
107          /*  Draw random rectangles forever:  */          /*  Draw random rectangles forever:  */
108          for (;;)  {          for (;;)  {
109                  draw_rectangle(my_random() % 640, my_random() % 480,                  draw_rectangle(my_random() % XRES, my_random() % YRES,
110                      my_random() % 640, my_random() % 480, my_random());                      my_random() % XRES, my_random() % YRES, my_random());
111          }          }
112  }  }
113    

Legend:
Removed from v.24  
changed lines
  Added in v.28

  ViewVC Help
Powered by ViewVC 1.1.26