From e7af63ed3432ce7e667652ae918d1a7b12ebf359 Mon Sep 17 00:00:00 2001 From: Adam Greenwood-Byrne Date: Sat, 17 Apr 2021 21:18:30 +0100 Subject: [PATCH] Fixed palette index issue with wxor.c --- part12-wgt/include/wgt.h | 2 +- part12-wgt/samples/wgt36.c | 20 +- part12-wgt/wgt/wpal.c | 512 ++++++++++++++++++------------------- part12-wgt/wgt/wsetcol.c | 2 +- part12-wgt/wgt/wxor.c | 10 +- 5 files changed, 273 insertions(+), 273 deletions(-) diff --git a/part12-wgt/include/wgt.h b/part12-wgt/include/wgt.h index c4bd5cd..261ddcb 100644 --- a/part12-wgt/include/wgt.h +++ b/part12-wgt/include/wgt.h @@ -1,7 +1,7 @@ #include "mb.h" #define NULL 0 -#define rgb(r,g,b) (r<<16)|(g<<8)|b +#define rgb(i,r,g,b) (i<<24)|(r<<16)|(g<<8)|b typedef struct { short xres; diff --git a/part12-wgt/samples/wgt36.c b/part12-wgt/samples/wgt36.c index 99185af..8072e63 100644 --- a/part12-wgt/samples/wgt36.c +++ b/part12-wgt/samples/wgt36.c @@ -63,10 +63,10 @@ void wgt36() do { /* Draws a filled xorbox using mouse coordinates as one corner. */ ox = mx; oy = my; - wxorbox (50, 50, ox, oy, vgapal[128]); /* Draw the box */ + wxorbox (50, 50, ox, oy, 128); /* Draw the box */ while ((mx == ox) && (my == oy) && (!but)); /* Do nothing while mouse is stationary. */ - wxorbox (50, 50, ox, oy, vgapal[128]); + wxorbox (50, 50, ox, oy, 128); /* Erase the box by drawing the same thing */ } while (but == 0); @@ -75,16 +75,16 @@ void wgt36() do { /* Draws a hollow rubber box using mouse coordinates as one corner. */ ox = mx; oy = my; - wxorbox (50, 50, ox, 50, vgapal[128]); - wxorbox (ox, 50, ox, oy, vgapal[128]); /* Draw the box */ - wxorbox (50, oy, ox, oy, vgapal[128]); - wxorbox (50, 50, 50, oy, vgapal[128]); + wxorbox (50, 50, ox, 50, 128); + wxorbox (ox, 50, ox, oy, 128); /* Draw the box */ + wxorbox (50, oy, ox, oy, 128); + wxorbox (50, 50, 50, oy, 128); while ((mx == ox) && (my == oy) && (!but)); /* Do nothing while mouse is stationary. */ - wxorbox (50, 50, ox, 50, vgapal[128]); - wxorbox (ox, 50, ox, oy, vgapal[128]); /* Erase the box */ - wxorbox (50, oy, ox, oy, vgapal[128]); - wxorbox (50, 50, 50, oy, vgapal[128]); + wxorbox (50, 50, ox, 50, 128); + wxorbox (ox, 50, ox, oy, 128); /* Erase the box */ + wxorbox (50, oy, ox, oy, 128); + wxorbox (50, 50, 50, oy, 128); } while (but == 0); mdeinit (); /* Deinitialize the mouse handler */ } diff --git a/part12-wgt/wgt/wpal.c b/part12-wgt/wgt/wpal.c index 6ac3dd6..2246d49 100644 --- a/part12-wgt/wgt/wpal.c +++ b/part12-wgt/wgt/wpal.c @@ -21,260 +21,260 @@ void wloadpalette (unsigned char *data, color *pal) /* VGA 256 colour default palette */ unsigned int vgapal[256] = { -rgb( 0, 0, 0), -rgb( 0, 0,170), -rgb( 0,170, 0), -rgb( 0,170,170), -rgb(170, 0, 0), -rgb(170, 0,170), -rgb(170, 85, 0), -rgb(170,170,170), -rgb( 85, 85, 85), -rgb( 85, 85,255), -rgb( 85,255, 85), -rgb( 85,255,255), -rgb(255, 85, 85), -rgb(255, 85,255), -rgb(255,255, 85), -rgb(255,255,255), -rgb( 0, 0, 0), -rgb( 20, 20, 20), -rgb( 32, 32, 32), -rgb( 44, 44, 44), -rgb( 56, 56, 56), -rgb( 68, 68, 68), -rgb( 80, 80, 80), -rgb( 97, 97, 97), -rgb(113,113,113), -rgb(129,129,129), -rgb(145,145,145), -rgb(161,161,161), -rgb(182,182,182), -rgb(202,202,202), -rgb(226,226,226), -rgb(255,255,255), -rgb( 0, 0,255), -rgb( 64, 0,255), -rgb(125, 0,255), -rgb(190, 0,255), -rgb(255, 0,255), -rgb(255, 0,190), -rgb(255, 0,125), -rgb(255, 0, 64), -rgb(255, 0, 0), -rgb(255, 64, 0), -rgb(255,125, 0), -rgb(255,190, 0), -rgb(255,255, 0), -rgb(190,255, 0), -rgb(125,255, 0), -rgb( 64,255, 0), -rgb( 0,255, 0), -rgb( 0,255, 64), -rgb( 0,255,125), -rgb( 0,255,190), -rgb( 0,255,255), -rgb( 0,190,255), -rgb( 0,125,255), -rgb( 0, 64,255), -rgb(125,125,255), -rgb(157,125,255), -rgb(190,125,255), -rgb(222,125,255), -rgb(255,125,255), -rgb(255,125,222), -rgb(255,125,190), -rgb(255,125,157), -rgb(255,125,125), -rgb(255,157,125), -rgb(255,190,125), -rgb(255,222,125), -rgb(255,255,125), -rgb(222,255,125), -rgb(190,255,125), -rgb(157,255,125), -rgb(125,255,125), -rgb(125,255,157), -rgb(125,255,190), -rgb(125,255,222), -rgb(125,255,255), -rgb(125,222,255), -rgb(125,190,255), -rgb(125,157,255), -rgb(182,182,255), -rgb(198,182,255), -rgb(218,182,255), -rgb(234,182,255), -rgb(255,182,255), -rgb(255,182,234), -rgb(255,182,218), -rgb(255,182,198), -rgb(255,182,182), -rgb(255,198,182), -rgb(255,218,182), -rgb(255,234,182), -rgb(255,255,182), -rgb(234,255,182), -rgb(218,255,182), -rgb(198,255,182), -rgb(182,255,182), -rgb(182,255,198), -rgb(182,255,218), -rgb(182,255,234), -rgb(182,255,255), -rgb(182,234,255), -rgb(182,218,255), -rgb(182,198,255), -rgb( 0, 0,113), -rgb( 28, 0,113), -rgb( 56, 0,113), -rgb( 85, 0,113), -rgb(113, 0,113), -rgb(113, 0, 85), -rgb(113, 0, 56), -rgb(113, 0, 28), -rgb(113, 0, 0), -rgb(113, 28, 0), -rgb(113, 56, 0), -rgb(113, 85, 0), -rgb(113,113, 0), -rgb( 85,113, 0), -rgb( 56,113, 0), -rgb( 28,113, 0), -rgb( 0,113, 0), -rgb( 0,113, 28), -rgb( 0,113, 56), -rgb( 0,113, 85), -rgb( 0,113,113), -rgb( 0, 85,113), -rgb( 0, 56,113), -rgb( 0, 28,113), -rgb( 56, 56,113), -rgb( 68, 56,113), -rgb( 85, 56,113), -rgb( 97, 56,113), -rgb(113, 56,113), -rgb(113, 56, 97), -rgb(113, 56, 85), -rgb(113, 56, 68), -rgb(113, 56, 56), -rgb(113, 68, 56), -rgb(113, 85, 56), -rgb(113, 97, 56), -rgb(113,113, 56), -rgb( 97,113, 56), -rgb( 85,113, 56), -rgb( 68,113, 56), -rgb( 56,113, 56), -rgb( 56,113, 68), -rgb( 56,113, 85), -rgb( 56,113, 97), -rgb( 56,113,113), -rgb( 56, 97,113), -rgb( 56, 85,113), -rgb( 56, 68,113), -rgb( 80, 80,113), -rgb( 89, 80,113), -rgb( 97, 80,113), -rgb(105, 80,113), -rgb(113, 80,113), -rgb(113, 80,105), -rgb(113, 80, 97), -rgb(113, 80, 89), -rgb(113, 80, 80), -rgb(113, 89, 80), -rgb(113, 97, 80), -rgb(113,105, 80), -rgb(113,113, 80), -rgb(105,113, 80), -rgb( 97,113, 80), -rgb( 89,113, 80), -rgb( 80,113, 80), -rgb( 80,113, 89), -rgb( 80,113, 97), -rgb( 80,113,105), -rgb( 80,113,113), -rgb( 80,105,113), -rgb( 80, 97,113), -rgb( 80, 89,113), -rgb( 0, 0, 64), -rgb( 16, 0, 64), -rgb( 32, 0, 64), -rgb( 48, 0, 64), -rgb( 64, 0, 64), -rgb( 64, 0, 48), -rgb( 64, 0, 32), -rgb( 64, 0, 16), -rgb( 64, 0, 0), -rgb( 64, 16, 0), -rgb( 64, 32, 0), -rgb( 64, 48, 0), -rgb( 64, 64, 0), -rgb( 48, 64, 0), -rgb( 32, 64, 0), -rgb( 16, 64, 0), -rgb( 0, 64, 0), -rgb( 0, 64, 16), -rgb( 0, 64, 32), -rgb( 0, 64, 48), -rgb( 0, 64, 64), -rgb( 0, 48, 64), -rgb( 0, 32, 64), -rgb( 0, 16, 64), -rgb( 32, 32, 64), -rgb( 40, 32, 64), -rgb( 48, 32, 64), -rgb( 56, 32, 64), -rgb( 64, 32, 64), -rgb( 64, 32, 56), -rgb( 64, 32, 48), -rgb( 64, 32, 40), -rgb( 64, 32, 32), -rgb( 64, 40, 32), -rgb( 64, 48, 32), -rgb( 64, 56, 32), -rgb( 64, 64, 32), -rgb( 56, 64, 32), -rgb( 48, 64, 32), -rgb( 40, 64, 32), -rgb( 32, 64, 32), -rgb( 32, 64, 40), -rgb( 32, 64, 48), -rgb( 32, 64, 56), -rgb( 32, 64, 64), -rgb( 32, 56, 64), -rgb( 32, 48, 64), -rgb( 32, 40, 64), -rgb( 44, 44, 64), -rgb( 48, 44, 64), -rgb( 52, 44, 64), -rgb( 60, 44, 64), -rgb( 64, 44, 64), -rgb( 64, 44, 60), -rgb( 64, 44, 52), -rgb( 64, 44, 48), -rgb( 64, 44, 44), -rgb( 64, 48, 44), -rgb( 64, 52, 44), -rgb( 64, 60, 44), -rgb( 64, 64, 44), -rgb( 60, 64, 44), -rgb( 52, 64, 44), -rgb( 48, 64, 44), -rgb( 44, 64, 44), -rgb( 44, 64, 48), -rgb( 44, 64, 52), -rgb( 44, 64, 60), -rgb( 44, 64, 64), -rgb( 44, 60, 64), -rgb( 44, 52, 64), -rgb( 44, 48, 64), -rgb( 0, 0, 0), -rgb( 0, 0, 0), -rgb( 0, 0, 0), -rgb( 0, 0, 0), -rgb( 0, 0, 0), -rgb( 0, 0, 0), -rgb( 0, 0, 0), -rgb( 0, 0, 0) +rgb(0, 0, 0, 0), +rgb(1, 0, 0,170), +rgb(2, 0,170, 0), +rgb(3, 0,170,170), +rgb(4, 170, 0, 0), +rgb(5, 170, 0,170), +rgb(6, 170, 85, 0), +rgb(7, 170,170,170), +rgb(8, 85, 85, 85), +rgb(9, 85, 85,255), +rgb(10, 85,255, 85), +rgb(11, 85,255,255), +rgb(12, 255, 85, 85), +rgb(13, 255, 85,255), +rgb(14, 255,255, 85), +rgb(15, 255,255,255), +rgb(16, 0, 0, 0), +rgb(17, 20, 20, 20), +rgb(18, 32, 32, 32), +rgb(19, 44, 44, 44), +rgb(20, 56, 56, 56), +rgb(21, 68, 68, 68), +rgb(22, 80, 80, 80), +rgb(23, 97, 97, 97), +rgb(24, 113,113,113), +rgb(25, 129,129,129), +rgb(26, 145,145,145), +rgb(27, 161,161,161), +rgb(28, 182,182,182), +rgb(29, 202,202,202), +rgb(30, 226,226,226), +rgb(31, 255,255,255), +rgb(32, 0, 0,255), +rgb(33, 64, 0,255), +rgb(34, 125, 0,255), +rgb(35, 190, 0,255), +rgb(36, 255, 0,255), +rgb(37, 255, 0,190), +rgb(38, 255, 0,125), +rgb(39, 255, 0, 64), +rgb(40, 255, 0, 0), +rgb(41, 255, 64, 0), +rgb(42, 255,125, 0), +rgb(43, 255,190, 0), +rgb(44, 255,255, 0), +rgb(45, 190,255, 0), +rgb(46, 125,255, 0), +rgb(47, 64,255, 0), +rgb(48, 0,255, 0), +rgb(49, 0,255, 64), +rgb(50, 0,255,125), +rgb(51, 0,255,190), +rgb(52, 0,255,255), +rgb(53, 0,190,255), +rgb(54, 0,125,255), +rgb(55, 0, 64,255), +rgb(56, 125,125,255), +rgb(57, 157,125,255), +rgb(58, 190,125,255), +rgb(59, 222,125,255), +rgb(60, 255,125,255), +rgb(61, 255,125,222), +rgb(62, 255,125,190), +rgb(63, 255,125,157), +rgb(64, 255,125,125), +rgb(65, 255,157,125), +rgb(66, 255,190,125), +rgb(67, 255,222,125), +rgb(68, 255,255,125), +rgb(69, 222,255,125), +rgb(70, 190,255,125), +rgb(71, 157,255,125), +rgb(72, 125,255,125), +rgb(73, 125,255,157), +rgb(74, 125,255,190), +rgb(75, 125,255,222), +rgb(76, 125,255,255), +rgb(77, 125,222,255), +rgb(78, 125,190,255), +rgb(79, 125,157,255), +rgb(80, 182,182,255), +rgb(81, 198,182,255), +rgb(82, 218,182,255), +rgb(83, 234,182,255), +rgb(84, 255,182,255), +rgb(85, 255,182,234), +rgb(86, 255,182,218), +rgb(87, 255,182,198), +rgb(88, 255,182,182), +rgb(89, 255,198,182), +rgb(90, 255,218,182), +rgb(91, 255,234,182), +rgb(92, 255,255,182), +rgb(93, 234,255,182), +rgb(94, 218,255,182), +rgb(95, 198,255,182), +rgb(96, 182,255,182), +rgb(97, 182,255,198), +rgb(98, 182,255,218), +rgb(99, 182,255,234), +rgb(100, 182,255,255), +rgb(101, 182,234,255), +rgb(102, 182,218,255), +rgb(103, 182,198,255), +rgb(104, 0, 0,113), +rgb(105, 28, 0,113), +rgb(106, 56, 0,113), +rgb(107, 85, 0,113), +rgb(108, 113, 0,113), +rgb(109, 113, 0, 85), +rgb(110, 113, 0, 56), +rgb(111, 113, 0, 28), +rgb(112, 113, 0, 0), +rgb(113, 113, 28, 0), +rgb(114, 113, 56, 0), +rgb(115, 113, 85, 0), +rgb(116, 113,113, 0), +rgb(117, 85,113, 0), +rgb(118, 56,113, 0), +rgb(119, 28,113, 0), +rgb(120, 0,113, 0), +rgb(121, 0,113, 28), +rgb(122, 0,113, 56), +rgb(123, 0,113, 85), +rgb(124, 0,113,113), +rgb(125, 0, 85,113), +rgb(126, 0, 56,113), +rgb(127, 0, 28,113), +rgb(128, 56, 56,113), +rgb(129, 68, 56,113), +rgb(130, 85, 56,113), +rgb(131, 97, 56,113), +rgb(132, 113, 56,113), +rgb(133, 113, 56, 97), +rgb(134, 113, 56, 85), +rgb(135, 113, 56, 68), +rgb(136, 113, 56, 56), +rgb(137, 113, 68, 56), +rgb(138, 113, 85, 56), +rgb(139, 113, 97, 56), +rgb(140, 113,113, 56), +rgb(141, 97,113, 56), +rgb(142, 85,113, 56), +rgb(143, 68,113, 56), +rgb(144, 56,113, 56), +rgb(145, 56,113, 68), +rgb(146, 56,113, 85), +rgb(147, 56,113, 97), +rgb(148, 56,113,113), +rgb(149, 56, 97,113), +rgb(150, 56, 85,113), +rgb(151, 56, 68,113), +rgb(152, 80, 80,113), +rgb(153, 89, 80,113), +rgb(154, 97, 80,113), +rgb(155, 105, 80,113), +rgb(156, 113, 80,113), +rgb(157, 113, 80,105), +rgb(158, 113, 80, 97), +rgb(159, 113, 80, 89), +rgb(160, 113, 80, 80), +rgb(161, 113, 89, 80), +rgb(162, 113, 97, 80), +rgb(163, 113,105, 80), +rgb(164, 113,113, 80), +rgb(165, 105,113, 80), +rgb(166, 97,113, 80), +rgb(167, 89,113, 80), +rgb(168, 80,113, 80), +rgb(169, 80,113, 89), +rgb(170, 80,113, 97), +rgb(171, 80,113,105), +rgb(172, 80,113,113), +rgb(173, 80,105,113), +rgb(174, 80, 97,113), +rgb(175, 80, 89,113), +rgb(176, 0, 0, 64), +rgb(177, 16, 0, 64), +rgb(178, 32, 0, 64), +rgb(179, 48, 0, 64), +rgb(180, 64, 0, 64), +rgb(181, 64, 0, 48), +rgb(182, 64, 0, 32), +rgb(183, 64, 0, 16), +rgb(184, 64, 0, 0), +rgb(185, 64, 16, 0), +rgb(186, 64, 32, 0), +rgb(187, 64, 48, 0), +rgb(188, 64, 64, 0), +rgb(189, 48, 64, 0), +rgb(190, 32, 64, 0), +rgb(191, 16, 64, 0), +rgb(192, 0, 64, 0), +rgb(193, 0, 64, 16), +rgb(194, 0, 64, 32), +rgb(195, 0, 64, 48), +rgb(196, 0, 64, 64), +rgb(197, 0, 48, 64), +rgb(198, 0, 32, 64), +rgb(199, 0, 16, 64), +rgb(200, 32, 32, 64), +rgb(201, 40, 32, 64), +rgb(202, 48, 32, 64), +rgb(203, 56, 32, 64), +rgb(204, 64, 32, 64), +rgb(205, 64, 32, 56), +rgb(206, 64, 32, 48), +rgb(207, 64, 32, 40), +rgb(208, 64, 32, 32), +rgb(209, 64, 40, 32), +rgb(210, 64, 48, 32), +rgb(211, 64, 56, 32), +rgb(212, 64, 64, 32), +rgb(213, 56, 64, 32), +rgb(214, 48, 64, 32), +rgb(215, 40, 64, 32), +rgb(216, 32, 64, 32), +rgb(217, 32, 64, 40), +rgb(218, 32, 64, 48), +rgb(219, 32, 64, 56), +rgb(220, 32, 64, 64), +rgb(221, 32, 56, 64), +rgb(222, 32, 48, 64), +rgb(223, 32, 40, 64), +rgb(224, 44, 44, 64), +rgb(225, 48, 44, 64), +rgb(226, 52, 44, 64), +rgb(227, 60, 44, 64), +rgb(228, 64, 44, 64), +rgb(229, 64, 44, 60), +rgb(230, 64, 44, 52), +rgb(231, 64, 44, 48), +rgb(232, 64, 44, 44), +rgb(233, 64, 48, 44), +rgb(234, 64, 52, 44), +rgb(235, 64, 60, 44), +rgb(236, 64, 64, 44), +rgb(237, 60, 64, 44), +rgb(238, 52, 64, 44), +rgb(239, 48, 64, 44), +rgb(240, 44, 64, 44), +rgb(241, 44, 64, 48), +rgb(242, 44, 64, 52), +rgb(243, 44, 64, 60), +rgb(244, 44, 64, 64), +rgb(245, 44, 60, 64), +rgb(246, 44, 52, 64), +rgb(247, 44, 48, 64), +rgb(248, 0, 0, 0), +rgb(249, 0, 0, 0), +rgb(250, 0, 0, 0), +rgb(251, 0, 0, 0), +rgb(252, 0, 0, 0), +rgb(253, 0, 0, 0), +rgb(254, 0, 0, 0), +rgb(255, 0, 0, 0) }; diff --git a/part12-wgt/wgt/wsetcol.c b/part12-wgt/wgt/wsetcol.c index 642cbd5..6761592 100644 --- a/part12-wgt/wgt/wsetcol.c +++ b/part12-wgt/wgt/wsetcol.c @@ -21,7 +21,7 @@ void wsetpalette (unsigned char start, unsigned char finish, color *pal) { for (int i = start; i <= finish; i++) { - vgapal[i] = (i << 24) + rgb(pal[i].r, pal[i].g, pal[i].b); + vgapal[i] = rgb(i, pal[i].r, pal[i].g, pal[i].b); } } diff --git a/part12-wgt/wgt/wxor.c b/part12-wgt/wgt/wxor.c index ec4a364..3bc25d2 100644 --- a/part12-wgt/wgt/wxor.c +++ b/part12-wgt/wgt/wxor.c @@ -34,9 +34,9 @@ void wxorbox (short x, short y, short x2, short y2, unsigned char col) { /* This can be change to perform any logical operation on the pixels, such as & or | */ - *temp = *temp ^ col; /* XOR the pixel on screen with col and put it back on screen */ - temp++; /* Go to next pixel */ - } /* x loop */ - temp += (WGT_SYS.xres - 1) - (x2 - x); /* Advance to next row */ - } /* y loop */ + *temp = vgapal[(*temp >> 24) ^ col]; /* XOR the pixel on screen with col and put it back on screen */ + temp++; /* Go to next pixel */ + } /* x loop */ + temp += (WGT_SYS.xres - 1) - (x2 - x); /* Advance to next row */ + } /* y loop */ }