+#include <conio.h>\r
+#include <dos.h>\r
+#include <mem.h>\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <time.h>\r
+\r
+#include "fixed32.hpp"\r
+#include "modex.hpp"\r
+#include "xprim.hpp"\r
+#include "xpal.hpp"\r
+#include "xblitbuf.hpp"\r
+\r
+#define FIRE_DEMO 1\r
+#define ROTATE_DEMO 1\r
+#define MONSTER_DEMO_ONE 1\r
+#define MONSTER_DEMO_TWO 1\r
+#define MATH_DEMO 0\r
+\r
+int\r
+monster_demo1(void)\r
+{\r
+ clock_t begin, end;\r
+ short int i;\r
+ blitbuf sprite_image, blit_image;\r
+\r
+ clearX(0);\r
+\r
+ load_blitbufPCX("monster.pcx", &sprite_image);\r
+ aligned_bitblitX(0, 20, &sprite_image);\r
+ getch();\r
+\r
+ blit_image.image = NULL;\r
+\r
+ i=99;\r
+\r
+ begin = clock();\r
+\r
+ while (i > 0) {\r
+ scale_blitbuf(120 + (i << 1), (i << 1), &sprite_image, &blit_image);\r
+ boxX((99 - i), (119 - i), (220 + i), (120 + i), 0);\r
+ vanilla_bitblitX(100 - i, 120 - i, &blit_image);\r
+ i--;\r
+ }\r
+\r
+ end = clock();\r
+\r
+ i=120;\r
+ while (i > 0) {\r
+ scale_blitbuf(i, 2, &sprite_image, &blit_image);\r
+\r
+ putpixelX(159 - (i >> 1), 119, 0);\r
+ putpixelX(159 - (i >> 1), 120, 0);\r
+ putpixelX(160 + (i >> 1), 119, 0);\r
+ putpixelX(160 + (i >> 1), 120, 0);\r
+\r
+ vanilla_bitblitX(160 - (i >> 1), 119, &blit_image);\r
+ delay(10);\r
+ i -= 2;\r
+ }\r
+\r
+ filledboxX(156, 119, 163, 120, 0);\r
+ putpixelX(159, 120, 1);\r
+ delay(250);\r
+ putpixelX(159, 120, 0);\r
+\r
+ filledboxX(156, 119, 163, 120, 0);\r
+ clear_blitbuf(&sprite_image);\r
+ clear_blitbuf(&blit_image);\r
+\r
+ getch();\r
+\r
+ return (end - begin);\r
+}\r
+\r
+\r
+void\r
+monster_demo2(void)\r
+{\r
+ short int i;\r
+ blitbuf sprite_image, blit_image;\r
+\r
+ clearX(0);\r
+\r
+ load_blitbufPCX("monster.pcx", &sprite_image);\r
+ aligned_bitblitX(0, 20, &sprite_image);\r
+ getch();\r
+\r
+ blit_image.image = NULL;\r
+\r
+ i=99;\r
+ while (i) {\r
+ vertical_scale_blitbuf((i << 1), &sprite_image, &blit_image);\r
+ boxX(0, (119 - i), 319, (120 + i), 0);\r
+ aligned_bitblitX(0, 120 - i, &blit_image);\r
+ i--;\r
+ }\r
+\r
+ filledboxX(0, 120, 319, 120, 0);\r
+\r
+ i=318;\r
+ while (i > 0) {\r
+ scale_blitbuf(i, 1, &blit_image, &sprite_image);\r
+\r
+ putpixelX(159 - (i >> 1), 119, 0);\r
+ putpixelX(159 - (i >> 1), 120, 0);\r
+ putpixelX(160 + (i >> 1), 119, 0);\r
+ putpixelX(160 + (i >> 1), 120, 0);\r
+\r
+ vanilla_bitblitX(160 - (i >> 1), 119, &sprite_image);\r
+ delay(5);\r
+ i -= 2;\r
+ }\r
+\r
+ filledboxX(156, 119, 163, 120, 0);\r
+ putpixelX(159, 120, 1);\r
+ delay(250);\r
+ putpixelX(159, 120, 0);\r
+ filledboxX(156, 119, 163, 120, 0);\r
+ clear_blitbuf(&sprite_image);\r
+ clear_blitbuf(&blit_image);\r
+\r
+ getch();\r
+}\r
+\r
+\r
+void\r
+fire_demo(void)\r
+{\r
+ #define V_WIDTH 80\r
+ #define V_HEIGHT 50\r
+ #define BUF_WIDTH 80\r
+ #define BUF_HEIGHT 56\r
+ #define REWIND (V_WIDTH * 3)\r
+ #define BUF_SIZE (BUF_WIDTH * BUF_HEIGHT)\r
+\r
+unsigned char fire_pal[768] = {\r
+ 0, 0, 0, 0, 0, 24, 0, 0, 24, 0, 0, 28,\r
+ 0, 0, 32, 0, 0, 32, 0, 0, 36, 0, 0, 40,\r
+ 8, 0, 40, 16, 0, 36, 24, 0, 36, 32, 0, 32,\r
+ 40, 0, 28, 48, 0, 28, 56, 0, 24, 64, 0, 20,\r
+ 72, 0, 20, 80, 0, 16, 88, 0, 16, 96, 0, 12,\r
+ 104, 0, 8, 112, 0, 8, 120, 0, 4, 128, 0, 0,\r
+ 128, 0, 0, 132, 0, 0, 136, 0, 0, 140, 0, 0,\r
+ 144, 0, 0, 144, 0, 0, 148, 0, 0, 152, 0, 0,\r
+ 156, 0, 0, 160, 0, 0, 160, 0, 0, 164, 0, 0,\r
+ 168, 0, 0, 172, 0, 0, 176, 0, 0, 180, 0, 0,\r
+ 184, 4, 0, 188, 4, 0, 192, 8, 0, 196, 8, 0,\r
+ 200, 12, 0, 204, 12, 0, 208, 16, 0, 212, 16, 0,\r
+ 216, 20, 0, 220, 20, 0, 224, 24, 0, 228, 24, 0,\r
+ 232, 28, 0, 236, 28, 0, 240, 32, 0, 244, 32, 0,\r
+ 252, 36, 0, 252, 36, 0, 252, 40, 0, 252, 40, 0,\r
+ 252, 44, 0, 252, 44, 0, 252, 48, 0, 252, 48, 0,\r
+ 252, 52, 0, 252, 52, 0, 252, 56, 0, 252, 56, 0,\r
+ 252, 60, 0, 252, 60, 0, 252, 64, 0, 252, 64, 0,\r
+ 252, 68, 0, 252, 68, 0, 252, 72, 0, 252, 72, 0,\r
+ 252, 76, 0, 252, 76, 0, 252, 80, 0, 252, 80, 0,\r
+ 252, 84, 0, 252, 84, 0, 252, 88, 0, 252, 88, 0,\r
+ 252, 92, 0, 252, 96, 0, 252, 96, 0, 252, 100, 0,\r
+ 252, 100, 0, 252, 104, 0, 252, 104, 0, 252, 108, 0,\r
+ 252, 108, 0, 252, 112, 0, 252, 112, 0, 252, 116, 0,\r
+ 252, 116, 0, 252, 120, 0, 252, 120, 0, 252, 124, 0,\r
+ 252, 124, 0, 252, 128, 0, 252, 128, 0, 252, 132, 0,\r
+ 252, 132, 0, 252, 136, 0, 252, 136, 0, 252, 140, 0,\r
+ 252, 140, 0, 252, 144, 0, 252, 144, 0, 252, 148, 0,\r
+ 252, 152, 0, 252, 152, 0, 252, 156, 0, 252, 156, 0,\r
+ 252, 160, 0, 252, 160, 0, 252, 164, 0, 252, 164, 0,\r
+ 252, 168, 0, 252, 168, 0, 252, 172, 0, 252, 172, 0,\r
+ 252, 176, 0, 252, 176, 0, 252, 180, 0, 252, 180, 0,\r
+ 252, 184, 0, 252, 184, 0, 252, 188, 0, 252, 188, 0,\r
+ 252, 192, 0, 252, 192, 0, 252, 196, 0, 252, 196, 0,\r
+ 252, 200, 0, 252, 200, 0, 252, 204, 0, 252, 208, 0,\r
+ 252, 208, 0, 252, 208, 0, 252, 208, 0, 252, 208, 0,\r
+ 252, 212, 0, 252, 212, 0, 252, 212, 0, 252, 212, 0,\r
+ 252, 216, 0, 252, 216, 0, 252, 216, 0, 252, 216, 0,\r
+ 252, 216, 0, 252, 220, 0, 252, 220, 0, 252, 220, 0,\r
+ 252, 220, 0, 252, 224, 0, 252, 224, 0, 252, 224, 0,\r
+ 252, 224, 0, 252, 228, 0, 252, 228, 0, 252, 228, 0,\r
+ 252, 228, 0, 252, 228, 0, 252, 232, 0, 252, 232, 0,\r
+ 252, 232, 0, 252, 232, 0, 252, 236, 0, 252, 236, 0,\r
+ 252, 236, 0, 252, 236, 0, 252, 240, 0, 252, 240, 0,\r
+ 252, 240, 0, 252, 240, 0, 252, 240, 0, 252, 244, 0,\r
+ 252, 244, 0, 252, 244, 0, 252, 244, 0, 252, 248, 0,\r
+ 252, 248, 0, 252, 248, 0, 252, 248, 0, 252, 252, 0,\r
+ 252, 252, 4, 252, 252, 8, 252, 252, 12, 252, 252, 16,\r
+ 252, 252, 20, 252, 252, 24, 252, 252, 28, 252, 252, 32,\r
+ 252, 252, 36, 252, 252, 40, 252, 252, 40, 252, 252, 44,\r
+ 252, 252, 48, 252, 252, 52, 252, 252, 56, 252, 252, 60,\r
+ 252, 252, 64, 252, 252, 68, 252, 252, 72, 252, 252, 76,\r
+ 252, 252, 80, 252, 252, 84, 252, 252, 84, 252, 252, 88,\r
+ 252, 252, 92, 252, 252, 96, 252, 252, 100, 252, 252, 104,\r
+ 252, 252, 108, 252, 252, 112, 252, 252, 116, 252, 252, 120,\r
+ 252, 252, 124, 252, 252, 124, 252, 252, 128, 252, 252, 132,\r
+ 252, 252, 136, 252, 252, 140, 252, 252, 144, 252, 252, 148,\r
+ 252, 252, 152, 252, 252, 156, 252, 252, 160, 252, 252, 164,\r
+ 252, 252, 168, 252, 252, 168, 252, 252, 172, 252, 252, 176,\r
+ 252, 252, 180, 252, 252, 184, 252, 252, 188, 252, 252, 192,\r
+ 252, 252, 196, 252, 252, 200, 252, 252, 204, 252, 252, 208,\r
+ 252, 252, 208, 252, 252, 212, 252, 252, 216, 252, 252, 220,\r
+ 252, 252, 224, 252, 252, 228, 252, 252, 232, 252, 252, 236,\r
+ 252, 252, 240, 252, 252, 244, 252, 252, 248, 252, 252, 252\r
+};\r
+\r
+ unsigned char *screen;\r
+ unsigned char *flamebuf_ptr;\r
+ unsigned char *flamebuf;\r
+ unsigned char temp;\r
+ unsigned short int i, j, skip;\r
+ unsigned char temp_byte;\r
+\r
+ set_paletteX(fire_pal);\r
+ set_write_plane(ALL_PLANES);\r
+ flamebuf = new unsigned char[BUF_SIZE];\r
+ skip = V_WIDTH;\r
+\r
+ // Initialize the video buffer to 0's\r
+ memset(flamebuf, 0, BUF_SIZE);\r
+\r
+ while (!kbhit()) {\r
+ // Transform current buffer\r
+ flamebuf_ptr = flamebuf;\r
+ i = (BUF_HEIGHT - 2);\r
+ while (i--) {\r
+ *flamebuf_ptr = (*(flamebuf_ptr + BUF_WIDTH) +\r
+ *(flamebuf_ptr + (BUF_WIDTH - 1)) +\r
+ *(flamebuf_ptr + (BUF_WIDTH + 1)) +\r
+ *(flamebuf_ptr + (BUF_WIDTH * 2))) >> 2;\r
+\r
+ flamebuf_ptr += BUF_WIDTH;\r
+ temp = *flamebuf_ptr;\r
+ if (temp > 11) {\r
+ *flamebuf_ptr -= 12;\r
+ } else if (temp > 3) {\r
+ *flamebuf_ptr -= 4;\r
+ } else {\r
+ *flamebuf_ptr = 0;\r
+ }\r
+ flamebuf_ptr += (1 - BUF_WIDTH);\r
+\r
+ j = (BUF_WIDTH - 2);\r
+ while (j--) {\r
+ *flamebuf_ptr = (*(flamebuf_ptr + BUF_WIDTH) +\r
+ *(flamebuf_ptr + (BUF_WIDTH - 1)) +\r
+ *(flamebuf_ptr + (BUF_WIDTH + 1)) +\r
+ *(flamebuf_ptr + (BUF_WIDTH * 2))) >> 2;\r
+\r
+ flamebuf_ptr += BUF_WIDTH;\r
+ temp = *flamebuf_ptr;\r
+ if (temp > 11) {\r
+ *flamebuf_ptr -= 12;\r
+ } else if (temp > 3) {\r
+ *flamebuf_ptr -= 4;\r
+ } else {\r
+ *flamebuf_ptr = 0;\r
+ }\r
+ flamebuf_ptr += (1 - BUF_WIDTH);\r
+ }\r
+\r
+ *flamebuf_ptr = (*(flamebuf_ptr + BUF_WIDTH) +\r
+ *(flamebuf_ptr + (BUF_WIDTH - 1)) +\r
+ *(flamebuf_ptr + (BUF_WIDTH * 2)) +\r
+ *(flamebuf_ptr + (BUF_WIDTH * 2) +\r
+ (BUF_WIDTH - 1))) >> 2;\r
+\r
+ flamebuf_ptr += BUF_WIDTH;\r
+ temp = *flamebuf_ptr;\r
+ if (temp > 11) {\r
+ *flamebuf_ptr -= 12;\r
+ } else if (temp > 3) {\r
+ *flamebuf_ptr -= 4;\r
+ } else {\r
+ *flamebuf_ptr = 0;\r
+ }\r
+ flamebuf_ptr += (1 - BUF_WIDTH);\r
+ }\r
+\r
+ // Set new bottom line with random white or black\r
+ temp = 0;\r
+ flamebuf_ptr = flamebuf + (BUF_WIDTH * (BUF_HEIGHT - 2));\r
+\r
+ j = BUF_WIDTH;\r
+ temp = 0;\r
+ while (j--) {\r
+ // We change the value 1/4 of the time\r
+ if ((rand() & 0x03) == 3) {\r
+ temp = (255 - temp);\r
+ }\r
+\r
+ *(flamebuf_ptr + BUF_WIDTH) = temp;\r
+ *flamebuf_ptr++ = temp;\r
+ }\r
+\r
+ // Write the buffer to the screen\r
+// wait_for_retrace();\r
+ screen = RowsX[40];\r
+ flamebuf_ptr = flamebuf;\r
+ i = V_HEIGHT;\r
+ while (i--) {\r
+ j = V_WIDTH;\r
+ while (j--) {\r
+ temp_byte = *flamebuf_ptr++;\r
+ *screen = temp_byte;\r
+ screen += skip;\r
+ *screen = temp_byte;\r
+ screen += skip;\r
+ *screen = temp_byte;\r
+ screen += skip;\r
+ *screen++ = temp_byte;\r
+ screen -= REWIND;\r
+ }\r
+ screen += REWIND;\r
+ }\r
+ }\r
+\r
+ getch();\r
+\r
+ delete flamebuf;\r
+}\r
+\r
+\r
+void\r
+main(void)\r
+{\r
+ FILE *fp;\r
+ char ch;\r
+ unsigned char pal[768];\r
+ COORD x1, y1, x2, y2;\r
+ Iangle theta1, theta2;\r
+ Fixed32 trigSin, trigCos;\r
+ blitbuf blit_image, sprite_image;\r
+ clock_t begin, end;\r
+ short int x, y, temp, done;\r
+ long i, time1, time2, time3, count, mtime;\r
+ BYTE *ptr1;\r
+ BYTE *ptr2;\r
+\r
+ set320x240x256_X();\r
+ clearX(0);\r
+\r
+ getch();\r
+\r
+ temp = loadfontX("vga8x8.fnt");\r
+\r
+ if (temp) {\r
+ putstringX(0, 0, "Hello!", 2);\r
+ } else {\r
+ return;\r
+ }\r
+\r
+ getch();\r
+\r
+#if ROTATE_DEMO\r
+ get_BIOSpaletteX(pal, 0);\r
+ set_paletteX(pal, 0);\r
+\r
+ clearX(0);\r
+ for (x=0; x < 320; x++) {\r
+ for (y=0; y < 240; y++) {\r
+ putpixelX(x, y, (x & 0xFF));\r
+ }\r
+ }\r
+\r
+ getch();\r
+\r
+ while (!kbhit()) {\r
+ wait_for_retrace();\r
+ rot_palette(-1);\r
+ }\r
+\r
+ getch();\r
+#endif\r
+\r
+ load_blitbufPCX("spock.pcx", &blit_image);\r
+ scale_blitbuf(160, 100, &blit_image);\r
+ aligned_bitblitX(0, 0, &blit_image);\r
+\r
+ getch();\r
+\r
+ clearX(0);\r
+\r
+ getch();\r
+\r
+ scale_blitbuf(224, 140, &blit_image);\r
+ aligned_bitblitX(0, 0, &blit_image);\r
+\r
+ getch();\r
+\r
+ greyscale_blitbuf(&blit_image);\r
+ grey_paletteX();\r
+ aligned_bitblitX(0, 0, &blit_image);\r
+\r
+ getch();\r
+\r
+ clearX(0);\r
+\r
+ getch();\r
+\r
+ scale_blitbuf(160, 100, &blit_image);\r
+ aligned_bitblitX(0, 0, &blit_image);\r
+\r
+ getch();\r
+\r
+ clear_blitbuf(&blit_image);\r
+ load_blitbufPCX("spock.pcx", &blit_image);\r
+ greyscale_blitbuf(&blit_image);\r
+ smooth64_paletteX(1, 0, 1);\r
+ aligned_bitblitX(0, 0, &blit_image);\r
+\r
+ getch();\r
+\r
+ flip_vertical_blitbuf(&blit_image);\r
+ aligned_bitblitX(0, 0, &blit_image);\r
+\r
+ getch();\r
+\r
+ clear_blitbuf(&blit_image);\r
+ load_blitbufPCX("spock.pcx", &blit_image);\r
+ aligned_bitblitX(0, 0, &blit_image);\r
+\r
+ done = 0;\r
+ while (!done) {\r
+ ch = getch();\r
+ switch (ch) {\r
+ case 'q':\r
+ case 'Q':\r
+ done = 1;\r
+ break;\r
+\r
+ case '+':\r
+ brighten_paletteX(1, 1, 1);\r
+ break;\r
+\r
+ case '-':\r
+ brighten_paletteX(-1, -1, -1);\r
+ break;\r
+\r
+ case '<':\r
+ stretch_paletteX(11, 11, 11);\r
+ break;\r
+\r
+ case '>':\r
+ stretch_paletteX(24, 24, 24);\r
+ break;\r
+\r
+ case 'S':\r
+ case 's':\r
+ save_blitbufPCX("dump.pcx", &blit_image);\r
+ break;\r
+\r
+ case 'L':\r
+ case 'l':\r
+ load_blitbufPCX("spock.pcx", &blit_image);\r
+ break;\r
+\r
+ case 'R':\r
+ brighten_paletteX(1, 0, 0);\r
+ break;\r
+\r
+ case 'G':\r
+ brighten_paletteX(0, 1, 0);\r
+ break;\r
+\r
+ case 'B':\r
+ brighten_paletteX(0, 0, 1);\r
+ break;\r
+\r
+ case 'r':\r
+ brighten_paletteX(-1, 0, 0);\r
+ break;\r
+\r
+ case 'g':\r
+ brighten_paletteX(0, -1, 0);\r
+ break;\r
+\r
+ case 'b':\r
+ brighten_paletteX(0, 0, -1);\r
+ break;\r
+\r
+ }\r
+ }\r
+\r
+ clearX(0);\r
+ srand(0);\r
+ grey_paletteX();\r
+\r
+ begin = clock();\r
+\r
+ for (i=0; i < 10000; i++) {\r
+ x1 = rand() % 320;\r
+ y1 = rand() % 200;\r
+ x2 = rand() % 320;\r
+ y2 = rand() % 200;\r
+\r
+ lineX(x1, y1, x2, y2, (i & 0x3F));\r
+ }\r
+\r
+ end = clock();\r
+\r
+ time1 = (end - begin);\r
+\r
+ begin = end;\r
+\r
+ for (i=0; i < 10000; i++) {\r
+ x1 = rand() % 320;\r
+ y1 = rand() % 200;\r
+ x2 = rand() % 320;\r
+ y2 = rand() % 200;\r
+\r
+ temp = ((x1 + x2 + y1 + y2) & 0x3F);\r
+ }\r
+\r
+ end = clock();\r
+\r
+ time2 = (end - begin);\r
+\r
+ getch();\r
+\r
+ for (i=0; i < 120; i++) {\r
+ filledboxX(i, i, (319-i), (239-i), (i & 0x3F));\r
+ }\r
+\r
+ getch();\r
+\r
+ load_blitbufPCX("buddha.pcx", &sprite_image);\r
+ transparent_bitblitX(100, 100, &sprite_image);\r
+\r
+ getch();\r
+\r
+ clearX(0);\r
+ clear_blitbuf(&blit_image);\r
+ scale_blitbuf(152, 168, &sprite_image);\r
+ alloc_blitbuf(&blit_image, 152, 168);\r
+\r
+ // 152x168 image\r
+ aligned_bitblitX(84, 36, &sprite_image);\r
+ getch();\r
+\r
+ initFixed32();\r
+\r
+ theta1=0;\r
+ count=0;\r
+\r
+ begin = clock();\r
+\r
+ while (!kbhit()) {\r
+ ptr1 = sprite_image.image;\r
+ ptr2 = blit_image.image;\r
+ theta2 = theta1;\r
+\r
+ y=168;\r
+ while (y--) {\r
+ CosSin(theta2, &trigCos, &trigSin);\r
+ scale_scanline(ptr1, ptr2, 152, 152, (trigCos >> 10) + 88);\r
+#if 0\r
+ memcpy(ptr2+152, ptr2, 152);\r
+ ptr1 += 304;\r
+ ptr2 += 304;\r
+ theta2 += 4;\r
+ y--;\r
+#else\r
+ ptr1 += 152;\r
+ ptr2 += 152;\r
+ theta2 += 2;\r
+#endif\r
+ }\r
+\r
+ theta1 += 2;\r
+\r
+ aligned_bitblitX(84, 36, &blit_image);\r
+ count++;\r
+ }\r
+\r
+ end = clock();\r
+\r
+ getch();\r
+ getch();\r
+\r
+ clear_blitbuf(&blit_image);\r
+ clear_blitbuf(&sprite_image);\r
+\r
+#if FIRE_DEMO\r
+ clearX(0);\r
+ fire_demo();\r
+#endif\r
+\r
+#if MONSTER_DEMO_ONE\r
+ mtime = monster_demo1();\r
+#endif\r
+\r
+#if MONSTER_DEMO_TWO\r
+ monster_demo2();\r
+#endif\r
+\r
+ set80x25();\r
+\r
+#if MATH_DEMO\r
+ Fixed32 c1, c2, c3, a1, a2, a3;\r
+\r
+ c1 = INT_TO_FIXED(50);\r
+ c2 = INT_TO_FIXED(70);\r
+ c3 = INT_TO_FIXED(50 * 70);\r
+\r
+ a1 = FixedMul(c1, c2);\r
+ a2 = FixedMulASM(c1, c2);\r
+\r
+ printf("MUL C version = %d\n", FIXED_TO_INT(a1));\r
+ printf("MUL ASM version = %d\n", FIXED_TO_INT(a2));\r
+\r
+ getch();\r
+\r
+ a1 = FixedDiv(c3, c1);\r
+ a2 = FixedDivASM(c3, c1);\r
+\r
+ printf("DIV C version = %d\n", FIXED_TO_INT(a1));\r
+ printf("DIV ASM version = %d\n", FIXED_TO_INT(a2));\r
+\r
+ getch();\r
+#endif\r
+\r
+ temp = (time1 - time2);\r
+ printf("10000 lines took %4d ticks\n", time1);\r
+ printf("rand() overhead = %4d ticks\n", time2);\r
+ printf("Time in lineX = %4d ticks\n", temp);\r
+ printf("%d lines per second!\n\n", (10000 * 1000) / (55 * temp));\r
+\r
+ temp = (end-begin);\r
+ printf("Buddha = %4d blits\n", count);\r
+ printf(" = %4d per second\n", (count * 1000) / (55 * temp));\r
+ printf("Buddha = %4d scanline stretches\n", (count * 168));\r
+ printf(" = %4d per second!\n\n", (count * 168000) / (55 * temp));\r
+\r
+ printf("Monster took %d ticks for 99 frames\n", mtime);\r
+}\r
+\r