]> 4ch.mooo.com Git - 16.git/blob - 16/modex16/pcxtest.c
new file: 16/modex16/46113319.pcx
[16.git] / 16 / modex16 / pcxtest.c
1 #include <stdio.h>\r
2 #include "modex16.h"\r
3 \r
4 word far* clock= (word far*) 0x046C; /* 18.2hz clock */\r
5 \r
6 void\r
7 oldDrawBmp(byte far* page, int x, int y, bitmap_t *bmp, byte sprite) {\r
8     byte plane;\r
9     word px, py;\r
10     word offset;\r
11 \r
12     /* TODO Make this fast.  It's SLOOOOOOW */\r
13     for(plane=0; plane < 4; plane++) {\r
14         modexSelectPlane(PLANE(plane+x));\r
15         for(px = plane; px < bmp->width; px+=4) {\r
16             offset=px;\r
17             for(py=0; py<bmp->height; py++) {\r
18                 if(!sprite || bmp->data[offset])\r
19                   page[PAGE_OFFSET(x+px, y+py)] = bmp->data[offset];\r
20                 offset+=bmp->width;\r
21             }\r
22         }\r
23     }\r
24 }\r
25 \r
26 void main() {\r
27     bitmap_t bmp;\r
28     int i;\r
29     page_t page;\r
30     word start;\r
31     float t1, t2;\r
32 \r
33     page=modexDefaultPage();\r
34 \r
35     bmp = modexLoadPcx("46113319.pcx");\r
36     modexEnter();\r
37 \r
38     /* fix up the palette and everything */\r
39     modexPalUpdate(bmp.palette);\r
40 \r
41     /* clear and draw one sprite and one bitmap */\r
42     modexClearRegion(&page, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 1);\r
43 \r
44     /* non sprite comparison */\r
45     start = *clock;\r
46     for(i=0; i<100 ;i++) {\r
47       oldDrawBmp(VGA, 20, 20, &bmp, 0);\r
48     }\r
49 \r
50     start = *clock;\r
51     for(i=0; i<100 ;i++) {\r
52       modexDrawBmp(&page, 20, 20, &bmp);\r
53     }\r
54     t1 = (*clock-start) /18.2;\r
55 \r
56     start = *clock;\r
57     for(i=0; i<100; i++) {\r
58         modexCopyPageRegion(&page, &page, 20, 20, 128, 20, 64, 64);\r
59     }\r
60     t2 = (*clock-start)/18.2;\r
61 \r
62 \r
63     start = *clock;\r
64     for(i=0; i<100 ;i++) {\r
65       oldDrawBmp(VGA, 20, 20, &bmp, 1);\r
66     }\r
67 \r
68 \r
69     start = *clock;\r
70     for(i=0; i<100 ;i++) {\r
71       modexDrawSprite(&page, 20, 20, &bmp);\r
72     }\r
73     modexLeave();\r
74 \r
75     printf("CPU to VGA: %f\n", t1);\r
76     printf("VGA to VGA: %f\n", t2);\r
77     return;\r
78 }\r