]> 4ch.mooo.com Git - 16.git/blob - 16/modex16/pcxtest.c
new file: 16/modex16/286@12.LOG
[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     float t1, t2, t3, t4;\r
30     word start;\r
31     page_t page;\r
32 \r
33     page=modexDefaultPage();\r
34 \r
35     bmp = modexLoadPcx("ed.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     t1 = (*clock-start) / 18.2;\r
50 \r
51     start = *clock;\r
52     for(i=0; i<100 ;i++) {\r
53       modexDrawBmp(&page, 20, 20, &bmp);\r
54     }\r
55     t2 = (*clock-start) / 18.2;\r
56 \r
57     start = *clock;\r
58     for(i=0; i<100 ;i++) {\r
59       oldDrawBmp(VGA, 20, 20, &bmp, 1);\r
60     }\r
61     t3 = (*clock-start) / 18.2;\r
62 \r
63     start = *clock;\r
64     for(i=0; i<100 ;i++) {\r
65       modexDrawSprite(&page, 20, 20, &bmp);\r
66     }\r
67     t4 = (*clock-start) / 18.2;\r
68     modexLeave();\r
69 \r
70     printf("Old non-sprite: %f\n", t1);\r
71     printf("New non-sprite: %f\n", t2);\r
72     printf("Old Sprite: %f\n", t3);\r
73     printf("New Sprite: %f\n", t4);\r
74 \r
75     return;\r
76 }\r