17 0xEAAAAAAA, 0xF5555555,
18 0xFEAAAAAA, 0xFF555555,
19 0xFFEAAAAA, 0xFFF55555,
20 0xFFFEAAAA, 0xFFFF5555,
21 0xFFFFEAAA, 0xFFFFF555,
22 0xFFFFFEAA, 0xFFFFFF55,
23 0xFFFFFFEA, 0xFFFFFFF5,
24 0xFFFFFFFE, 0xFFFFFFFF,
25 0xFFFFFFFF, 0xFFFFFFFF,
26 0xFFFFFFFF, 0xFFFFFFFF,
27 0xFFFFFFFF, 0xFFFFFFFF,
28 0xFFFFFFFF, 0xFFFFFFFF,
29 0xFFFFFFFF, 0xFFFFFFFF,
30 0xFFFFFFFF, 0xFFFFFFFF,
31 0xFFFFFFFF, 0xFFFFFFFF,
32 0xFFFFFFFF, 0xFFFFFFFF
36 0xAAAAAAAB, 0x5555555F,
37 0xAAAAAABF, 0x555555FF,
38 0xAAAAABFF, 0x55555FFF,
39 0xAAAABFFF, 0x5555FFFF,
40 0xAAABFFFF, 0x555FFFFF,
41 0xAABFFFFF, 0x55FFFFFF,
42 0xABFFFFFF, 0x5FFFFFFF,
43 0xBFFFFFFF, 0xFFFFFFFF,
44 0xFFFFFFFF, 0xFFFFFFFF,
45 0xFFFFFFFF, 0xFFFFFFFF,
46 0xFFFFFFFF, 0xFFFFFFFF,
47 0xFFFFFFFF, 0xFFFFFFFF,
48 0xFFFFFFFF, 0xFFFFFFFF,
49 0xFFFFFFFF, 0xFFFFFFFF,
50 0xFFFFFFFF, 0xFFFFFFFF,
51 0xFFFFFFFF, 0xFFFFFFFF
55 0xAAAAAAAA, 0x55555555,
56 0xAAAAAAAA, 0x55555555,
57 0xAAAAAAAA, 0x55555555,
58 0xAAAAAAAA, 0x55555555,
59 0xAAAAAAAA, 0x55555555,
60 0xAAAAAAAA, 0x55555555,
61 0xAAAAAAAA, 0x55555555,
62 0xAAAAAAAA, 0x55555555,
63 0xAAAAAAAA, 0x55555555,
64 0xAAAAAAAA, 0x55555555,
65 0xAAAAAAAA, 0x55555555,
66 0xAAAAAAAA, 0x55555555,
67 0xAAAAAAAA, 0x55555555,
68 0xAAAAAAAA, 0x55555555,
69 0xAAAAAAAA, 0x55555555,
70 0xAAAAAAAA, 0x55555555
74 0xFFFFFFFF, 0xFFFFFFFF,
75 0xFFFFFFFF, 0xFFFFFFFF,
76 0xFFFFFFFF, 0xFFFFFFFF,
77 0xFFFFFFFF, 0xFFFFFFFF,
78 0xFFFFFFFF, 0xFFFFFFFF,
79 0xFFFFFFFF, 0xFFFFFFFF,
80 0xFFFFFFFF, 0xFFFFFFFF,
81 0xFFFFFFFF, 0xFFFFFFFF,
82 0xFFFFFFFF, 0xFFFFFFFF,
83 0xFFFFFFFF, 0xFFFFFFFF,
84 0xFFFFFFFF, 0xFFFFFFFF,
85 0xFFFFFFFF, 0xFFFFFFFF,
86 0xFFFFFFFF, 0xFFFFFFFF,
87 0xFFFFFFFF, 0xFFFFFFFF,
88 0xFFFFFFFF, 0xFFFFFFFF,
89 0xFFFFFFFF, 0xFFFFFFFF
93 0xFFFFFFFF, 0x3FFFFFFF,
94 0x0FFFFFFF, 0x03FFFFFF,
95 0x00FFFFFF, 0x003FFFFF,
96 0x000FFFFF, 0x0003FFFF,
97 0x0000FFFF, 0x00003FFF,
98 0x00000FFF, 0x000003FF,
99 0x000000FF, 0x0000003F,
100 0x0000000F, 0x00000003,
101 0x00000000, 0x00000003,
102 0x0000000F, 0x0000003F,
103 0x000000FF, 0x000003FF,
104 0x00000FFF, 0x00003FFF,
105 0x0000FFFF, 0x0003FFFF,
106 0x000FFFFF, 0x003FFFFF,
107 0x00FFFFFF, 0x03FFFFFF,
108 0x0FFFFFFF, 0x3FFFFFFF,
112 0xFFFFFFFF, 0xFFFFFFFC,
113 0xFFFFFFF0, 0xFFFFFFC0,
114 0xFFFFFF00, 0xFFFFFC00,
115 0xFFFFF000, 0xFFFFC000,
116 0xFFFF0000, 0xFFFC0000,
117 0xFFF00000, 0xFFC00000,
118 0xFF000000, 0xFC000000,
119 0xF0000000, 0xC0000000,
120 0x00000000, 0xC0000000,
121 0xF0000000, 0xFC000000,
122 0xFF000000, 0xFFC00000,
123 0xFFF00000, 0xFFFC0000,
124 0xFFFF0000, 0xFFFFC000,
125 0xFFFFF000, 0xFFFFFC00,
126 0xFFFFFF00, 0xFFFFFFC0,
127 0xFFFFFFF0, 0xFFFFFFFC,
130 inline static void RenderLine(BYTE **dst, BYTE **src,
int n, BYTE *tbl, DWORD mask)
135 if (*dst < gpBufStart || *dst >
gpBufEnd) {
142 if (mask == 0xFFFFFFFF) {
148 memcpy(*dst, *src, n);
152 for (i = 0; i < n; i++, (*src)++, (*dst)++) {
153 (*dst)[0] = tbl[(*src)[0]];
159 for (i = 0; i < n; i++, (*dst)++, mask <<= 1) {
160 if (mask & 0x80000000) {
165 for (i = 0; i < n; i++, (*src)++, (*dst)++, mask <<= 1) {
166 if (mask & 0x80000000) {
167 (*dst)[0] = (*src)[0];
171 for (i = 0; i < n; i++, (*src)++, (*dst)++, mask <<= 1) {
172 if (mask & 0x80000000) {
173 (*dst)[0] = tbl[(*src)[0]];
180 #if defined(__clang__) || defined(__GNUC__)
181 __attribute__((no_sanitize(
"shift-base")))
191 BYTE *src, *dst, *tbl;
192 DWORD m, *mask, *pFrameTable;
209 if (c == 1 || c == 3) {
215 if (c == 2 || c == 3) {
232 if (GetAsyncKeyState(VK_MENU) & 0x8000) {
239 for (i = 32; i != 0; i--, dst -=
BUFFER_WIDTH + 32, mask--) {
244 for (i = 32; i != 0; i--, dst -=
BUFFER_WIDTH + 32, mask--) {
246 for (j = 32; j != 0; j -= v, v == 32 ? m = 0 : m <<= v) {
258 for (i = 30; i >= 0; i -= 2, dst -=
BUFFER_WIDTH + 32, mask--) {
263 for (i = 2; i != 32; i += 2, dst -=
BUFFER_WIDTH + 32, mask--) {
270 for (i = 30; i >= 0; i -= 2, dst -=
BUFFER_WIDTH + 32, mask--) {
275 for (i = 2; i != 32; i += 2, dst -=
BUFFER_WIDTH + 32, mask--) {
282 for (i = 30; i >= 0; i -= 2, dst -=
BUFFER_WIDTH + 32, mask--) {
287 for (i = 16; i != 0; i--, dst -=
BUFFER_WIDTH + 32, mask--) {
292 for (i = 30; i >= 0; i -= 2, dst -=
BUFFER_WIDTH + 32, mask--) {
297 for (i = 16; i != 0; i--, dst -=
BUFFER_WIDTH + 32, mask--) {
322 for (i = 30, j = 1; i >= 0; i -= 2, j++, dst -=
BUFFER_WIDTH + 2) {
324 memset(dst, 0, 4 * j);
327 for (i = 2, j = 15; i != 32; i += 2, j--, dst -=
BUFFER_WIDTH - 2) {
329 memset(dst, 0, 4 * j);
346 for (row = 0; row < height; row++) {
347 for (col = 0; col < width; col++) {
348 if ((row & 1 && col & 1) || (!(row & 1) && !(col & 1)))