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