]> 4ch.mooo.com Git - 16.git/blob - src/pcxtest.c
meh~
[16.git] / src / pcxtest.c
1 #include <stdio.h>
2 #include <string.h>\r
3 #include "src\lib\modex16.h"\r
4 #include "src\lib\bitmap.h"
5 #include "src\lib\planar.c"\r
6 \r
7 word far* clock= (word far*) 0x046C; /* 18.2hz clock */\r
8 \r
9 void\r
10 oldDrawBmp(byte far* page, int x, int y, bitmap_t *bmp, byte sprite) {\r
11     byte plane;\r
12     word px, py;\r
13     word offset;\r
14 \r
15     /* TODO Make this fast.  It's SLOOOOOOW */\r
16     for(plane=0; plane < 4; plane++) {\r
17         modexSelectPlane(PLANE(plane+x));\r
18         for(px = plane; px < bmp->width; px+=4) {\r
19             offset=px;\r
20             for(py=0; py<bmp->height; py++) {\r
21                 if(!sprite || bmp->data[offset])\r
22                   page[PAGE_OFFSET(x+px, y+py)] = bmp->data[offset];\r
23                 offset+=bmp->width;\r
24             }\r
25         }\r
26     }\r
27 }\r
28
29 void\r
30 DrawPBuf(page_t *page, int x, int y, planar_buf_t *p, byte sprite)
31 {\r
32     byte plane;\r
33     word px, py;\r
34     word offset;\r
35 \r
36     /* TODO Make this fast.  It's SLOOOOOOW */\r
37     for(plane=0; plane < 4; plane++) {\r
38         modexSelectPlane(PLANE(plane+x));\r
39         for(px = plane; px < p->width; px+=4) {\r
40             offset=px;\r
41             for(py=0; py<p->height/2; py++) {
42                 SELECT_ALL_PLANES();\r
43                 if(!sprite || p->plane[offset])\r
44                         page->data = p->plane;\r
45                 //offset+=p->width;
46                 //offset++;\r
47             }\r
48         }\r
49     }\r
50 }\r
51
52 \r
53 void main() {\r
54     bitmap_t bmp;
55     planar_buf_t *p;\r
56     int i;\r
57     page_t page;\r
58     word start;
59     int plane;\r
60     float t1, t2;\r
61 \r
62     page=modexDefaultPage();\r
63 \r
64     bmp = bitmapLoadPcx("data/ed.pcx");
65     p = planar_buf_from_bitmap(&bmp);\r
66     modexEnter();\r
67 \r
68     /* fix up the palette and everything */\r
69     modexPalUpdate(bmp.palette);\r
70 \r
71     /* clear and draw one sprite and one bitmap */\r
72     modexClearRegion(&page, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 1);\r
73 \r
74     /* non sprite comparison */
75     /*start = *clock;\r
76     for(i=0; i<100 ;i++) {\r
77       oldDrawBmp(VGA, 20, 20, &bmp, 0);\r
78     }\r
79 \r
80     start = *clock;\r
81     for(i=0; i<100 ;i++) {\r
82       modexDrawBmp(&page, 20, 20, &bmp);\r
83     }\r
84     t1 = (*clock-start) /18.2;\r
85 \r
86     start = *clock;\r
87     for(i=0; i<100; i++) {\r
88         modexCopyPageRegion(&page, &page, 20, 20, 128, 20, 64, 64);\r
89     }\r
90     t2 = (*clock-start)/18.2;\r
91 \r
92 \r
93     start = *clock;\r
94     for(i=0; i<100 ;i++) {\r
95       oldDrawBmp(VGA, 20, 20, &bmp, 1);\r
96     }\r
97 \r
98 \r
99     start = *clock;\r
100     for(i=0; i<100 ;i++) {\r
101       modexDrawSprite(&page, 20, 20, &bmp);\r
102     }*/
103         while(!kbhit())
104         {
105                 DrawPBuf(&page, 0, 0, p, 0);
106         }
107     modexLeave();\r
108
109         printf("\n%d\n", sizeof(p->plane));
110         printf("%d\n", sizeof(bmp));\r
111     //printf("CPU to VGA: %f\n", t1);\r
112     //printf("VGA to VGA: %f\n", t2);\r
113     return;\r
114 }\r